gavinhoward

Joined 11 years ago

Karma
5,314
Submissions
2,345
Member since
Feb 16
Christian, programmer, blogger, in that order.

Blog: https://gavinhoward.com/

Contact: https://gavinhoward.com/contact/

View on Hacker News

Recent submissions

Comment · 15 days ago
Comment · 22 days ago
As someone who has applied less than 6 weeks ago, this is great news. I can't wait to hear back!
Comment · 1 month ago
I'm okay dropping the philosophy and just making something that truly does what Nix claims: atomic upgrades, fully-reproducible environments, etc. In fact, dropping the philosophy is exactly why I am making my own.

Your idea sounds interesting and (by your bio) right up your alley. I'd be interested to see the result.

Comment · 1 month ago
Huh.

I'm no Nix user, but I want to build an alternative.

Do you think these problems could be fixed?

Comment · 1 month ago
As a Neovim user, this stopped me dead with painful realization: I may have suffered the same thing but didn't realize it. There was a time when I could not undo something, and it was after a Neovim upgrade.

Unlike Dr. Chisnall, I started my editor journey on Neovim, so it wasn't a transition that bit me. However, if the format of the persistent undo file is unstable, and Neovim just deletes it when it doesn't recognize the previous format, then it seems conceivable (to me) that an upgrade after changing the format would delete the file too.

Ouch. This is making me think about getting off of Neovim. Yes, FOSS comes as-is, but if there's an alternative...

Comment · 1 month ago
Not something I'm working on, but want to: a competitor to Perforce that will be cheaper and easier.

Unfortunately, I'm not sure that being better is enough to compete, so I'm sitting on it for now.

Comment · 2 months ago
This is the first time I've heard a use for LLMs that I think might be good.
Comment · 4 months ago
> Looks like operational transforms to me.

Sort of. I add provenance, which helps properly identify collisions, and require a well-defined order by stacking [1] changelists.

> The doc claims it's the first with this technique.

More like the first with the particular angle on the technique. I specifically mention patch theory as another side of the same coin.

> A 30 second search reminded me of Darcs, and taught me about Pijul, and Weave.

Darcs is Pijul's ancestor, and I mentioned Pijul. I also mentioned the weave and how reference sets scale better.

> The example in the doc uses text, and unfortunately I think it's for a reason.

Readability. Nothing more. The real stuff will be a compact binary format.

> I think with large, binary game assets, the most common operation is going to be strings of "replace A with B", and depending on your chunk size relative to the distribution of changes you make on your assets, I see it as pretty close to a wash, for efficiency.

Yore will dedup change data instead because as the Lore document itself identifies, dedupping content is hard using chunks; you either get dedupping or canonical addresses. Change data doesn't have one canonical address; the address is in the commit data instead.

Dedupping changes has another benefit. If most instances are "replace A with B," and A replaces B in multiple places, Yore will be able to store just one instance of A, no matter its size. This matters because the larger the chunk, the less likely it will match any other chunk.

> Especially considering that content-addressable blocks also solves de-duplication, which for a multi-game studio is probably going to be significant. Especially if they're managing multiple releases, patches, development branches, etc.

True, but that should be table stakes. The fact that Git does not is a poor reflection on Git, not an innovation in Lore.

[1]: https://www.stacking.dev/

Comment · 4 months ago
The best answer I have is for you to read the "History Model" section of that design doc through the "Implementing CRDTs" subsection.
Comment · 4 months ago
When it comes to large assets, wasting large chunks of space is a problem. If your chunks are 64 kib average (from the Lore document), but changes only average 1 kib (which could be a high estimate), then you will still run out of space 64 times faster and need to read 64 times more data off of the disk for certain operations.

It also makes diffing hard, as well as diff viewing.

Comment · 4 months ago

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton