Year 2023 in Review
Compared to 2021, I was much more focused this year. Compared to 2022, I have built more conviction. And starting in September, I started to have full days to work, rather than just the nights and weekends.
Unlike 2021, I wasn't trying a lot of different things. I was mainly trying to focus and build conviction in the direction I needed to go forward.
At the beginning of this year, I wasn't sure if building a database in the browser was the right move. Do I want to do this because I am attracted to the problem, or am I attracted to the solution? I've fallen down the rabbit hole of the latter before, and it results in a whole lot of wasted time, even if there were challenges and fun to be had along the way.
Hence, I surveyed the existing databases as a local-first solution and found most wanting. Some came close, like ElectricSQL, Evolu, and CR-SQLite, but I don't think they have the same long-term focus that I'm envisioning. And yet, that wasn't enough to build conviction. So I sought to try and build a to-do list app, both as a demonstration of needs, as well as a way to explore questions about why applications didn't use avatars.
It did take a while to work through a bunch of issues on the application side, and I did learn quite a bit about application-level issues one would run into when it came to migrations.
However, at some point, I just ran into a roadblock with off-the-shelf CRDT libraries. Almost all of them were focused on a document-orientated way of modelling data. I thought there was much value to a relational model that could sync.
So at the end of August, I ended back where I was in January: it's the right thing to build a database in the browser. After making the call, I made relatively quick progress. I have a model of how relational data can be synced, how to leverage existing databases, and the tactical details of how the whole thing would fit together.
At the end of this year, I find myself deep in the rabbit hole, eager to pop my way all the way up the stack to get something usable.
When it comes to syncing, I think I have all the pieces I need. However, when it comes to incrementality, that's a whole topic I have yet to dive into. But I think just like the CRDTs, I think just committing fully to diving in will get me up to speed pretty quickly. I've shown myself this fall that I could catch up pretty quickly, not only because I've been looking at this from the sidelines for a long time, but also because I can now enlist the help of GPTs to help me get up to speed quickly.
Aside from this main line of work, Sri and I recorded The Technium Podcast together. Our original impetus for starting it was just that we talked about this sort of stuff anyway over the pandemic, why not just record it and put it out there?
And while fun, it took a while to edit each episode. We tried to structure everything so we could do as little editing as possible, and yet it took us away from our other main thrust of work. With 300 subscribers, it was hard to justify the timesink. So after the third season, we decided to take a hiatus.
However, it seems like some people do enjoy our work after feeling our absence. With some time away, we've come to think of 300 as an auditorium of people, which is quite a lot! In addition, building an audience is an activity with superlinear returns if one can get the flywheel going. So it's probably worth putting in the effort despite the low absolute numbers. To get us through this period, we've changed our perspective to this being a beacon to interesting people. So we'll be talking about how we'll proceed in the coming year on a new season.
With the additional time, I started writing more again, committing to weekly updates. These are less polished, more to jot down progress and accountability, starting with Lab Note #021.
A friend of mine told me that I'm very good at consistently living in the future, but I'm not very good at selling the future. So to help fix that, I'll also write more complete and long-form thoughts in longer posts. They should take no longer than three weeks to write, just to keep some consistency going. This year, I managed to put out three. That should be an easy bar to clear. Check them out if you haven't already.
- The state management library front-ends are looking for is a database
- Trade-offs between Different CRDTs
- CRDTs Turned Inside Out
I think a lot lately about building conviction, and why it was so tough for me to find it this year. It's the classic mid-wit move of talking yourself out of everything when you know slightly too much. This year, I learned that you just don't know how things will turn out ahead of time, no matter how much you think about it or ask other people. Instead, you must light your conviction based on your initial hunch, and run as fast as you can to the end before the candle of conviction burns out.
What I hope for 2024 is that I will continue to accelerate the pace of learning, and keep building conviction for what I'm doing. But importantly, this year, I'm committing to systematically find a way to learn how to work faster. Hope you had a great year too, and commit to finding direction in your own work.