News for hackers. Stuff that matters.

sgbeal

> As an expansion on that, as far as I know there's only one implementation of Fossil.

That's is, since only recently, no longer strictly true: the age-old libfossil recently got client sync support, so is now (aside from _serving_ repos) essentially a standalone impl (its own developer still uses fossil(1) stash, patch, and diff -tk features, but otherwise uses libfossil's counterparts).

Also, Dan Mestas has <https://github.com/danmestas/go-libfossil>, a Go library for working and fossil, and he is also working on <https://zeitforge.app/>, a clean-room impl. of fossil (whereas libfossil is largely ported directly from fossil(1)) which even goes so far as to _not_ use an sqlite database for its file storage.

Dan Mestas and Dan Shearer are working on finalizing RFCs for fossil's sync protocol and artifact format, and zeitforge is created by carefully managing LLMs which are reading that draft (but not the source code of libfossil or fossil).

Re:From Git to Fossil on Sunday September 13, 2026 @03:35AM (#49681068)
> What happens if you make a mistake while committing - maybe forget the file, or commit wrong one?

Then you have proven that you are human.

> Fossil has no way to fix it, by design,

As an 18-year-long contributor to fossil i can assure you that this is absolutely not true. Fossil can amend any checkin and it can move checkins to other branches. Go to sqlite.org/src/timeline?r=mistake to see many examples of where human failing has been both demonstrated and accounted for without breaking anything.

Re:From Git to Fossil on Sunday September 13, 2026 @03:30AM (#49681046)
> IMHO the best and most relevant part of fossil these days is the ticket system, which is in every single way almost completely ideal for coding agents.

Funnily enough, that's collectively fossil's developers' least-favorite part. We make no secret about not liking the ticket system, and we only use it when we need to record a certain ticket for posterity's sake. Aside from that, we use the forum for all ticket-like traffic.

> Since the whole tracker is just a thin front on sqlite ...

Except that it's not: <https://fossil-scm.org/home/doc/trunk/www/fossil-is-not-rela...>

Re:I'm going back to coding by hand on Wednesday September 09, 2026 @10:32AM (#49627290)
> Not using an IDE in 2026?

Emacs. Uninterrupted since the 1990s.

Re:I'm going back to coding by hand on Wednesday September 09, 2026 @10:31AM (#49627270)
> Always use the “refactor” tool in your IDE instead of trying to change every instance of a variable name by hand.

That _is_ the refactoring tool in my IDE (emacs). i demonstrated replacing _all_of them at once, not replacing them each by hand.

> ... because it’s the right thing to do and doing it without the tool confers no benefit and is prone to error.

There was nothing in my post done "without the tool." Shell/find/perl _is_ the tool for C refactoring, and has been for decades.

Re:I'm going back to coding by hand on Wednesday September 09, 2026 @10:27AM (#49627209)
> Any half decent IDE will change them automatically for you, no need to chase them down

It's long been my experience that that only works with high-level languages (specifically, those with bytecode), not C (especially once symbols are generated from macros). (OTOH, i've not touched an IDE in well more than 10 years.)

Also, it's long been my experience that any half-decent IDE is still a pale shadow of Emacs.

Re:Ask HN: Anyone still coding like 2021? Where do you work? on Wednesday September 09, 2026 @10:24AM (#49627161)
> It hasn't been 10+ years

:-?

My "10+ years" was not referring to any specific milestone. It was referring to the general flow of time. It's been 10 years since 2016, twenty since 2006, and more than 40 since writing my first program. Lots has changed every 10 years in that period, both in my skills and the environments i program in, but shell/emacs/makefile remains a staple of that process.

> In my experience CDs and DVDs I burned myself have a lifespan even shorter than floppies. Most of the CDs I burned in the late 90s/early 2000s are already unreadable.

Similar here: CDs and DVDs burned from 2000-2006 or so were, without exception, illegible by 2015. It's sickening.

Re:Ask HN: Anyone still coding like 2021? Where do you work? on Wednesday September 09, 2026 @09:55AM (#49626638)
> These days I feel I am the only one that hasn’t changed their way of writing software at all.

If you mean using a text editor, a shell, and a makefile, then you're not alone by any stretch of the imagination.

If you mean your skills stagnated 10+ years ago and have not advanced since then, then... yeah, you might be the only one ;).

Re:I'm going back to coding by hand on Wednesday September 09, 2026 @05:45AM (#49623797)
> I changed some variable names and I had to chase down all the places they were referenced,

   $ find . -name '*.c' -exec perl -i -pe 's/\btheOldName\b/theNewName/g' \{} \;
> My first attempt at restoring 1991 Learning Company Spellbound for DOS for my children is dubious. Despite being stored nowhere near magnetic sources, there are read errors on the 3.5 inch floppies and Linux could not mount them.

FWIW, it's long been my experience that floppies (like CDs and DVDs) have a half-life and they degrade quickly upon reaching it. You'd have been lucky to be able to recover those in 2001. Now? If at all, only high-end forensic tools could recover them.

Re:How to compromise your system with a job interview on Thursday August 20, 2026 @03:39PM (#49379158)
> only interact with people using an official email address.

And then google whether the domain is associated with phishing attempts. i've been targeted several times recently by folks with "official" email addresses but whose domains are (per google) strongly associated with phishing.

Show HN: Word-finder/anagram solver web app for mobile browsers

https://wanderinghorse.net/gaming/paperback/words.html

This word-finder/anagram solver web app is a side-effect of my recent work on a web app for playing the Paperback word-spelling tabletop game[^1]. After proving its worth embedded in that client, the dictionary was refactored into something almost standalone and now lives at this URL.Its UI is intended specifically for mobile devices, especially phones - it looks pretty wonky on a full-sized...

( Read More... | no comments | 2 points | on HN )

Show HN: JavaScript/JSON and CSS minifier lib in minimal C89

https://fossil.wanderinghorse.net/r/cssminc/doc/ckout/README.md

For those 1.7 of you who may have need of a JavaScript or JSON minifier which (A) is not based on node.js and (B) is not "poisoned" by the "do no evil" license attached to Douglas Crockford's minifier[^1] (commonly seen in various projects over the years)...My C89 CSS minifier was recently broken down into a separate JavaScript/JSON minifier. It's trivial to embed in C, "should" build fine in...

( Read More... | no comments | on HN )

Show HN: Rules-free solo-only client for the Paperback tabletop game

https://wanderinghorse.net/gaming/paperback/solo.html

My past couple of weeks were spent writing an app with which to play the word-spelling tabletop game Paperback in the browser.Tim Fowers, creator and publisher of the game, has given me permission to post my homemade electronic copy of the game (initially built so that i could print-and-play a copy with "US-Mini" size cards), and recently sent me (much to my surprise) the publisher's official...

( Read More... | no comments | on HN )
"Pedestrian" generally implies some random person out walking around, but:

> "Late last night, a trespasser breached airport security at Denver Int’l Airport, deliberately scaled a perimeter fence, and ran out onto a runway," Transportation Secretary Sean Duffy said in a statement

> How does it affect your mental health?

That it should in some way affect my mental health has never once occurred to me. If anything, i assume that living on one's body's own natural schedule would be optimal in terms of related effects on mental health.

> How do you deal with times day and night are flipped?

When there's not something pressing me into a schedule, e.g. a job, i kind of "circle around" to a conventional schedule every few weeks. All things considered, i prefer the "swapped" times because it's quieter at night. e.g. less traffic driving by, fewer neighbors making various noises, and no DHL/UPS/DPD deliveries for the neighbors being dropped off here because the neighbors aren't home (whereas i am almost always at home and both the neighbors and the local delivery folks know it).

i'm a retiree so, with the exception of shopping and rare appointments, the night/day or weekend/weekend[^1] are not generally distinctions which affect me, and it's never bothered me in the slightest to not have a fixed schedule. On the contrary, a fixed schedule somewhat bums me out long-term, presumably because it does not match my biological clock.

> How does it affect your social life?

My social life is (by preference and choice) comprised solely of (A) my FOSS work, and there's no clock associated with any of that, and (B) my wife. Both my and my wife's biological families are all on another continent, so we've no family obligations which require physical presence. When i'm not FOSS'ing, we play a lot of board games.

[^1]: stores are closed on Sundays and all public holidays in Germany. More than once i've gone to the store, only to discover it's closed due to a holiday i've overlooked (like, most recently, May 1st).

> Surely you can infer when you work and sleep from your experience living your life as you.

Not everybody has a schedule. Mine is essentially "eat when hungry, sleep when tired", and my sleep patterns more closely follow a 26-hour day than a 24-hour day.

The Fossil SCM (<https://fossil-scm.org>) meets most of your requirements, noting that:

- "mobile app" means "its web interface"

- "backed up" means to wherever you upload/sync your backups to

- No automagic table calculation support.

> Compare that to SQLite's 1.2mb of wasm and glue code

The current trunk is actually 1.7mb in its canonical unminified form (which includes very nearly as much docs as JS code), split almost evenly between the WASM and JS pieces :/. Edit: it is 1.2mb in minified form, though.

Disclosure: i'm its maintainer.

Edit: current trunk, for the sake of trivia:

    sqlite3.wasm 896745
    sqlite3.mjs  816270 # unminified w/ docs
    sqlite3.mjs  431388 # unminified w/o docs
    sqlite3.mjs  310975 # minified
Re:PHP's Biggest Problem on Thursday May 07, 2026 @06:41AM (#48047800)
FWIW, i'll disagree. i was a _huge_ PHP fan from around 1999 until 2010, but two things finally killed it for me:

1) It's apparently impossible to cleanly structure large projects with PHP. i've been a part of many such projects across a large handful of teams, and every one of them eventually became a complete mess, structurally speaking, no matter how conscientious the developers were. Java, for example, forces a directory structure onto developers. PHP is more C-like in that regard - "do whatever you want" - and i've yet to see that end well for older/larger projects.

2) Breaking age-old working features with new releases, like when they removed split or join or implode or explode (two of the four, but i don't recall which). When they did that, and my decade-old website suddenly stopped working, i lost all motivation to continue maintaining sites in PHP. Dropped it that very day (for my personal sites) and have not looked back. i still had to use it in commercial projects off and on through 2014, and each one only help cement point #1 for me.

i don't miss it.

Re: on Thursday May 07, 2026 @06:09AM (#48047557)
> Nothing told me why I was changing it

That arguably belongs in the commit messages or, in some cases, in code comments.

> or what I was planning next.

That arguably belongs in ./TODO or, in some cases, code comments.

Edit: TODOs in code comments obviously don't have a natural ordering, but i frequently look at diffs to help figure that part out, as they clearly mark the new/recent TODOs.

> Is there anything that actually works, or do you just accept the tax?

There will always be a tax for context switching - even brief interruptions during concentrated work often require longer than the interruption to get back into the work (that's a well-studied phenomenon, actually). There is no avoiding that unless, perhaps, one has eidetic memory (in which case the cost is _presumably_ low enough to be considered negligible (but perhaps someone with eidetic memory can enlighten us on that)).

> How long does it realistically take you to resume a project after 3+ days?

That depends entirely on the project and its complexity/scope. It might be 5 minutes, it might be half a day. i'll admit that i sometimes (okay, okay: often!) avoid going back to something i'd _like_ to work on because i know in advance that this tax is likely to be paid by an inordinately large portion of my current energy levels, leaving little for the actual work. Frequently, though, when _finally_ getting back, i discover that the tax is less than anticipated. Maybe that's an age/experience thing, though - refamiliarizing myself with older code seems to come more easily to me with age, for reasons beyond my ken.

> Might be a good addition for https://superuser.com/questions/1937372/

Done! Edit: nevermind - it's been deleted. It does not actually answer that OP's question (how to block all AI usage) and the community guidelines request/require that responses actually attempt to answer the question.

The following seems to keep Chrome from re-downloading this beast:

    # From one's $HOME dir:
    rm -fr ./.config/google-chrome/OptGuideOnDeviceModel
    mkdir -p ./.config/google-chrome/OptGuideOnDeviceModel
    touch ./.config/google-chrome/OptGuideOnDeviceModel/weights.bin
    chmod 0400 ./.config/google-chrome/OptGuideOnDeviceModel/weights.bin
    chmod 0500 ./.config/google-chrome/OptGuideOnDeviceModel
Adapt as appropriate for your OS. For "Chrome Unstable" installs, the dir name is google-chrome-unstable.

This has, so far, kept Chrome from (re)installing that file on my system.

Hypothetically the parts involving weights.bin aren't needed so long as the containing directory is not writable.

> The browser would then have a configuration option of which JS interpreter to use.

Browsers could not make sensible use of a JS _binary_. Browsers are _deeply intertwined_ with their JS engines, requiring integration with a _library_. There is no such thing as hot-swappable JS engine libraries from different vendors.

Re:.de TLD offline due to DNSSEC? on Wednesday May 06, 2026 @02:21AM (#48032913)
> will result in the police kicking in your door the next morning

But not before 8am.

> You only download it when some JS requests it for the first time, most people will never have it.

i certainly never activated it willfully. i use Chrome only as a fallback testing platform for web dev - a handful of times per month - yet both Chrome Stable and Chrome Unstable had installed this 4GB monstrosity in my home dir. 8GB of junk i'd never used. Both have since been uninstalled and replaced with Chromium.

Re:From CVS to Git, thirty years of source control on Monday May 04, 2026 @08:28AM (#48007850)
> ... there's a clear prompt in the bottom right corner.

Indeed, it does.

> (Didn't try mobile.)

And my eyes didn't make it that far down the screen. If i can't read the first paragraph, there's no point in scanning further down the page (and certainly not to look for something as esoteric as an option to disable what should not be there in the first place). Grumble, grumble.

Re:From CVS to Git, thirty years of source control on Monday May 04, 2026 @05:19AM (#48006336)
Web design tip: don't have animations within a short distance of text, as human eyes evolved to follow the flashiest/fastest-moving thing around, which makes such text literally illegible to many of us. This particular site takes the cake in that regard by animating the whole page background.

Older »