I'm writing a book about local-first software tentatively called Local-First From Scratch. This is a snippet from that book—an intro to why you should care about local-first software and what it gets you. I thought it ended up being a pretty good summary of what the whole project is about, so I wanted to share it as a blog post as well!
If you picked up this book, you might have some idea about what "local-first" means, but let's get on the same page: other than "works offline", what are we aiming for?
In short, local-first software moves ownership of data from "somewhere in the cloud" to your local devices.
Keep Reading (3 minutes) →I'm working on a book about writing local-first software. Instead of doing a survey of all the libraries available, I'm taking a first principles approach. That means doing a lot of explaining CRDTs, syncing, and the like, but I'm having a ton of fun with it so far.
As of mid-January 2025, I have the introduction and first chapter done, and I'm working on the implementation that will end up being built up throughout the book. This currently looks like a TUI that I am already using to see how the user experience is!
I hope to be at the place where beta readers can look at the book in early 2025!
This and 16 other projects →A while back I wrote (post 1, post 2) about how TagTime (and the then-called TinyPing) analyze time by assuming that each ping is worth 45 minutes, then getting a daily average and a 95% confidence interval. This can give you a pretty good idea of how you're spending your time, but I only did it for a simulated person with a perfect schedule.
If you haven't read about this before, here's the basic idea:
- The system randomly asks you what you're doing.
- It biases that random choice in a way that the long-term average time between pings is 45 minutes (or whatever you like)
- Eventually, you can get an idea of what a "normal" day looks like by doing a little math.
Anyway, let's do the analysis now that I've got a bit over a month of data.
Keep Reading (3 minutes) →