Personalized Software, Part II
by Matt CholickFrom the echnical podcasts I listen to, as well as the articles I read, this summer is when personalized software really hit. The Kubelist has an interesting discussion with one of the founders of Tailscale. The part that jumped out at me in the personalized software discussion was how he talks about the future of dev tools being open source. Customization has changed, becoming so much easier that it's critical the core is open source. Plugins just aren't enough anymore.
Writing last month's personalized software post, one of the things in the back of my mind was the scope of most of my projects was small. Everything took a handful of evenings at most. I've been wanting to tackle something a bit bigger to see what's possible and where things break down. A tool I've used every day for years is Sublime Text. It's an editor, not my IDE (I've always used JetBrains or VS Code when writing or reviewing significant code), but I do have it open on every desktop. It's my tool for notes, scratch buffers, quick edits, digging through downloaded log files, and all the other tasks where a project based IDE isn't a great fit. For two years it's had a bug restoring windows to the same mac desktop on a reboot or application restart, a critical feature for me (amusingly, it just got fixed a month after I gave up, but I don't think I'll be going back).
The way I use my laptop, I have desktops with various scope or areas of focus. There's maybe an editor, a browser with a bunch of tabs, terminal, etc, all conceptually related. Right now I have a dozen desktops, with content ranging across coding projects, music lessons, a computer game, and an electronics project. My work laptop has less, but still uses a large number of desktops. I'll have a desktop for each issue I'm active on as well as other things, like a long term planning focused desktop. With desktop restore broken, a reboot or an app restart means tediously moving all of those back to the correct desktop.
With that key feature broken for so long, I decided to take on replacing my editor. There's a ton of features of Sublime I don't use (I don't even use the package manager, for example), but this was still more work than I expected. I based things off CodeEdit. This was a good starting point, but did require quite a few patches. It was a mix of changes based on my feature needs and performance. I needed to make core changes to how it handled Markdown, which is the most important language for my non-IDE editor. I structured things as private forks with a set of changes, documenting the change and when it can be removed. I ended up needing 65 patches to those libraries. It would take a lot to get them from vibe-coded to something in good enough shape to contribute. Honestly, this will likely all stay private. I would like to clean up the smaller ones, but I don't know Swift well enough that I could get them into good enough shape to contribute.
In terms of rough scope, it's 55k lines of Swift, 14k lines of patches to the CodeEdit libraries, and 5k lines of markdown specs / docs. AI can be wordy, but this was all Sol rather than Opus, so it at least isn't 1:1 comment for every line of code like Opus generates. I have projects where I read the code and others where I don't, and this definitely falls into that second category. It's just too much. It's fully driven via spec, tests, and manual testing. This is changing all the time, so might not even be true with the current harnesses, but I've found for desktop development they need a bit of help setting up the feedback loop. Everything is instrumented with accessibility identifiers, so the agent can interact with all parts of the UI easily via scripting. In previous desktop apps, they've just "guessed" and changed code, but missed the validation loop and thus took several tries to get things right. Now I build out that feedback loop as the first thing in a desktop app. I do all development in a Mac UTM VM, since running the validation and the tests would create focus issues and other problems for me using my machine while the agent works (the tests include multiple desktops and validate that restoration flow, as that's the core feature that started me down this rabbit hole).
Here's activity over time.

It took about a month to complete, with the last week of that running concurrently with Sublime and fixing things as I ran across them. But it's done! I've had no new commits in a couple weeks.
I've seen several articles from folks describing how they build out a really detailed spec, and execute against that. I did a little bit of that, but a lot of this was much more iterative. I'd test a bit, and my fingers expected a thing to happen that didn't. Then I'd work on comparing how it actually works in different tools before being able to write the actual spec. Multi-column editing is a good example of this. It took a bit of exploration to figure out just how it should behave. Basic column-edit is easy, but once you start doing more complex things like ⌥+→ to move forward by word or deleting different lengths of text with ⌥+⌫, the behavior gets tricky to articulate. It took several rounds of testing in VS Code / JetBrains / Sublime to figure out exactly how several details should work to be consistent with other dev tooling.
Once I had that core working, there were a few things I added on top of Sublime.
- A 30 day history for recovering un-saved buffers
- I use un-saved buffers all the time, sometimes I'll have content I don't save to disk but keep around for months. It would be fair to tell me to just not do it, but it's been part of my process for years. In Sublime they're immediately gone, which did occasionally bite me.
- Re-formatting for several file types
- Custom line wrap behavior, durable per-buffer and defaults per file type
- Agent mode (a thin UI wrapper over the VS Code cli), with the additional feature of "hiding" windows from the agent since this is the sort of tool where I'll often have a temp buffer with a secret.
My other custom feature is a re-designed search result window. I'm convinced that JetBrains years ago had the perfect experience, but they've moved away from it. This was a chance to bring it back. Here's that demo'd in my fixtures folder:

Since last month's post, I've also added a couple other tools to my list of personal software:
- A customized ear training iPad app based on Alain Benbassat's method
- A custom dashboard for when I'm on rotation that combines a specific of GitHub PRs/issues and items from our Dev Portal
This has been my biggest personal software project, but the results are also something I use more than any of the others. Most desktops have an open window with my bespoke editor. Sublime is good software, and it filled an important role for me. But the authors left a feature that was really, really important to me broken for two years. That's just not a thing commercial software gets to do and keep users in 2026.