My Favorite Apps of 2025

I seldom write about the apps I use every day, so I thought a short note on the what’s and whys might be interesting.

Mobile Apps

  • Reeder Classic is still my go-to RSS reader on iOS, and the first thing I open every day at breakfast. I now use it with a private FreshRSS backend that talks to my feed-summarizer, and that stack lets me extract, enrich, combine, and rank pretty much anything out there. and would use if Classic ever died.
  • remains my primary social network app (as such things go). I’d love it if it also supported Bluesky and Threads, but I honestly don’t engage with either network enough to care.
  • has taken up permanent residence on my iPad Pro, and after trying the dismal failure that is , Apple should be ashamed that a free video editing application is this stupendously powerful.

Desktop Apps

There are four apps that I keep open all the time, and I really mean all the time:

  • has turned into my primary note-taking and knowledge management app because editing Markdown in it is essentially frictionless (if you discount the stupid markup extensions). I use a very limited set of plugins and sync the vaults myself over (including to iOS), and its true superpower is that I can run it on every platform. Pretty much everything I write, plan, or think about ends up in Obsidian first.
  • is another staple in my toolkit. This year I’ve relentlessly cut down on the number of extensions I use, even if the vast array of extensions and customization options make it ideal for coding, writing, and even managing tasks. But the key thing is that it has turned into my AI and agent shell since I now do pretty much everything with LLMs from inside it. And, of course, it’s where I finish and publish nearly all of my writing.
  • has, rather unexpectedly, grown on me. I avoided committing to or any other classic alternatives for decades, but somehow it feels right, largely because it’s so seamless. Apple has “improved” the stock terminal at its usual glacial pace, but it just doesn’t feel like home anymore. Under Linux, I replace it with Ptyxis (which ships with ).
  • Windows App is my portal to work. I live inside it at least eight hours a day (yes, video calls and all), and it’s probably the most rock-solid piece of software I run. Besides work, I use it to access nearly all my servers that run GUIs, and despite the weird name (and some cognitive dissonance) it works fine with Linux servers.

Then there are the background apps that are also open 100% of the time but that I seldom “use” in the usual sense: , , and a little menagerie of supporting characters ranging from full-blown apps to scripts (for instance, I’ve automated away most of my image editing for posts using Shortcuts and system services).

And then there are a few that aren’t open 100% of the time, but that I find indispensable:

  • still lives despite and, besides being the basis of a lot of scripts, is still the first thing I reach for when I need to edit an image.
  • continues to be my favorite CAD and modeling tool. I’ve tried Fusion, OnShape, and the unbearable bundle of paper cuts that goes by the name of , and nothing comes close to it for ease of use. I especially like that I can also use the complete feature set on my iPad when inspiration strikes during the evening.
  • also spends a lot of time on my desktop, since it’s what I use to run all my 3D printers.
  • I have to give an honorable mention to since it’s still the thing I reach for when I need to do any sort of mesh conversions (and has recently become quite a usable video editor).

CLI Tools

Finally, a single honorable mention because I recently realized that I’d stopped typing out git commands by hand after decades of habit: lazygit has become amazingly useful.

I do a lot of quick edits to all sorts of things, and the speed with which I can go in, make changes, stage, commit, and push is incredible. It keeps me in the flow, and the fact that I can also do pulls and edits from inside it (since I can drop into vim by just typing e) is just icing on the cake.

The TRMNL (DIY Everything Edition)

I’ve long had a fascination for digital picture frames, and that harks back to the Vodafone 520 Photo Frame, which was, at the time, a pretty wild concept–you could send pictures to it over GPRS and have them show up on a tiny LCD screen, way before social networks and ubiquitous connectivity made that a non-issue.

We’ve had a couple of those around , now relegated to drawers–they were dim and poky even at the time they were launched, and only grandparents loved them. I’ve been wondering if I can revive ours somehow, but LCD displays aren’t really the kind of thing I want in our living room.

TRMNL devices are a completely different thing and don’t really try to be photo frames. They’re e-ink based, and their upcoming hardware upgrade focuses on improving size, resolution and online integration rather than moving to (a still prohibitively expensive) color display like the current crop of digital picture frames (which are priced north of an eye-watering three hundred euros).

But they do get a lot of things right–the devices are extremely low-powered (they run on an ), nondescript (they fit in nicely everywhere), and, more to the point, e-ink is much nicer on the eyes than anything else:

Of course I had to start with a XKCD comic
Of course I had to start with a XKCD comic

Our brain’s vision center considers e-ink to be “static” and as much a part of the surface as if it were paper, so they’re naturally less eye-catching. Even if you do catch them refreshing, it feels a lot more natural than any backlit display.

Well, unless you’re talking about color e-ink–most current, quality color e-ink displays I’ve seen so far take so long to refresh and flash so often it looks like it might be somewhat distracting, even if infrequently.

So I’ve actually been keeping an eye on TRMNL for a while. I liked the approach, the design and the hardware, and they also make the entire firmware source available and allow you to use your own server, which is the kind of guarantee for long-term support that I love.

Hardware

I went the cheapskate route: I bought a Seeed Studio DIY kit on sale, 3D printed this enclosure (which is nice but has a few structural design flaws I need to fix, since most of the internal fittings broke off already), and it all just worked out of the box.

Assembly and setup were a matter of minutes, not including the two or three hours my took to print the parts, since I took it nice and slow.

Software

However, one of the reasons I wanted a TRMNL was to display some data and info that simply does not live in the cloud. Stuff I should look at once a week (like CPU, RAM and disk usage in my homelab, power consumption, etc.) and that is kept in my metrics/home automation server but that I seldom go in and check.

So I went off, looked at awesome-TRMNL’s Bring Your Own Server section and tried out a couple of the options there.

Functionally, the best one was this PHP implementation, which deployed just fine under Docker and had a pretty great feature set, but a) there is no way I am going to be coding in this day and age and b) I wanted something much simpler that afforded me the kind of control I would be truly satisfied with.

Thus byos_fastapi was born–no forking of a browser engine to render pages (so no direct way to leverage TRMNL’s rather nice design system), no fancy integrations, just vanilla , rendering bitmaps and charts using Pillow, hammering things out bit by bit.

And yes, that project is under the @usetrmnl organization, because Ryan (the founder) saw my earlier draft repo and kindly invited me to move it there (one of the things that drew me to TRMNL is their openness, and it was just serendipitous to have that demonstrated even as I was compiling my notes into this post).

This is far from being my first rodeo managing displays (I started with the Codebits signage server, then rebooted it and then modernized it somewhat, as well as a bunch of (mis-)matching clients), so it was quite fun to reason things out and build a playlist/device management mechanism all over again, even if I didn’t do any fancy artwork this time.

I very nearly used and , but there are so many nice bitmap charting libraries for I’m familiar with and use in my machine learning notebooks that I decided to stick with those.

Dithering (Too Much)

Since I actually started with the older black-and-white only firmware, I spent far too long fiddling with gradients and “color” curves, and once I upgraded to the latest firmware to render greyscale images (2-bit palettes, whoo!) I really went overboard:

Various dithering algorithms, compared
Various dithering algorithms, compared

The reason I tried various dithering approaches was that the way the display renders things is actually quite interesting–the firmware only knows about 2-bit color and renders a set of greys that is far too dark, but when looking at the display up close I can see a grainy overlay of a much lighter grey that implies that the display itself could do better:

Contrast compensation on the camera really went overboard here
Contrast compensation on the camera really went overboard here

The specs for the kit say it can’t, but the grain makes sense given what I know of EPD waveforms–there’s always a bit of noise and ghosting involved.

And there’s always a trade-off in terms of RAM and power consumption while rendering. I suppose that the displays TRMNL themselves source have slightly different characteristics that tend to bias rendering toward black-on-white with some font and line smoothing, and that makes sense given it’s all usually line art rather than photographic images.

Tweaks for Real Life Use

In the end, I realized that at the typical distance I have the device from my eyes (it’s now across the living room) black-and-white makes almost no difference for simple charts.

But photographs and some text displays were much improved in greyscale mode, so my server always renders both 1-bit and 2-bit images and you can choose which to use in the playlist editor:

The playlist editor, which I hacked in Preact
The playlist editor, which I hacked in Preact

To do that and make my life simpler while creating plugins, I wrote a “color” pipeline that lets any of my plugins automatically render both 1-bit and 2-bit greyscale:

Can you even tell the difference if you squint?
Can you even tell the difference if you squint?

And after playing around with a few visuals I landed on using a font that would be readable and punchy enough to survive dithering–Space Grotesk was a prime candidate, and it actually looks somewhat like some of TRMNL’s own bitmap fonts.

Experience

I had the thing on my desktop (right between my screen and keyboard) for a week as I hacked on the server, and the default 15-minute interval for rotation and discreet updates felt so natural that I tuned them out and actually had to actively look at the device (that was literally in front of my keyboard) to check if it was working–at which time I was often pleasantly brought up to date on news stories or the various statistics I displayed.

Which kind of proves the entire point about TRMNL’s product line–it’s great to have an unobtrusive, extremely readable display, and having the occasional nice artwork on it is just icing on the cake:

Samurai Jack has some of the greatest cartoon visuals of all time
Samurai Jack has some of the greatest cartoon visuals of all time

Next Steps

Although using and Pillow is plenty for my current needs and I have zero interest in building this out to the point where it is a fully browser-based endeavor with all the bells and whistles that come with a consumer product, I am intrigued by the possibility of having more complex (and let’s face it, nicer) layouts in some form of HTML.

I’m quite happy with coding new plugins to do that, but I really don’t want to run a browser engine on a server (I have an entire draft ranting about how annoyingly hard and wasteful it is to get high-resolution bitmaps of very detailed charts because all the really nice libraries just use WebGL and SVG these days and assume you’re running Chromium, but that can wait).

So, naturally, I started hacking away at my own HTML renderer–I forked html2pic, removed the pictex rendering engine (mostly out of stubbornness, since I am actually using Skia with ) and thanks to GPT-5.2 (which I had early access to) I am already churning out automated layout tests that inspire some confidence:

I don't want to reinvent the entire wheel, just the fun bits
I don't want to reinvent the entire wheel, just the fun bits

So I guess I have a holiday project. Well, more like a dozen of them now, but this one is really fun.

And I haven’t even started looking at hacking the firmware to see what I can do about the display driver, although I don’t think I will go that far.

But I will redesign the enclosure I used and put it up on Printables eventually (I started putting in proper screw holes, matching inserts and the like, but there’s only so much time).

And someday, when these things become cheaper, I’ll probably get another, bigger display. Who knows, maybe in a couple of years there will be a full color version I can hang on a wall without having to consider selling a kidney.

I’m about that.

Notes for November 23–December 8

Thanks to local bank holidays we had a couple of consecutive extended weekends, which I spent doing a bunch of long overdue chores, including replacing kitchen lights, organizing my office a bit better, and generally ticking off various small tasks that had been piling up for a while.

Read More...

Controlling Steam Link Servers via HomeKit

Turning on servers via turned out to be a little more complicated than I expected, but eminently doable.

Read More...

The Maclock

If you’re anywhere near the intersection of Apple nostalgia, retro-computing and DIY electronics, This Does Not Compute’s latest video was probably on your radar. If not, the gist is simple: there is an 11 cm tall alarm clock shaped like a Classic Mac, and I grabbed one off AliExpress for roughly EUR 20.1

Read More...

Notes for November 17-22

It’s now cold enough for me to enjoy being inside, but sometimes I would prefer to have a bit more variety and not be stuck in front of a screen all the time. Still, there’s been some progress on various fronts this week…

Read More...

Notes for November 1-16

This turned out to be a much more exhausting couple of weeks than I expected, in various ways.

Read More...

The LattePanda IOTA

A couple of months ago, DFRobot reached out to see if I wanted to take a look at the new LattePanda IOTA single-board computer–successor to the original LattePanda V1. I never owned a V1 myself, but I have found quite a few in the wild; they were popular with integrators for kiosk and digital signage applications. I was curious to see how the new model stacked up.

Read More...

Reviving a MacBook Air with Fedora Silverblue

Like many people, I have a few older Mac laptops around, and with Apple discontinuing support for older versions of macOS (and, eventually, for Intel machines altogether), it’s long been in my backlog to re-purpose them.

Read More...

The Week I Built Half a TOTEM

During a few random lulls in work I finally went down the rabbit hole of building myself a custom keyboard. I had ordered most of the parts months ago, but only now got the time to clear out my electronics desk, dust off my hotplate, do a little soldering and begin 3D printing the case and keycaps.

Read More...

26.1

Our worldwide usability nightmare continues, and I have thoughts:

Read More...

Notes for October 13-31

Well, this was a “fun” two weeks. In short, I got blindsided by a large project and a bunch of other work things, including an unusual amount of office visits (almost one a week, which is certainly not the norm these days) and a lot of calls.

Read More...

A Minor Rant About Cloudflare UX

I have, , spent far too much time wandering the chaotic wilds of Cloudflare’s web UI to set up a new tunnelled web application (a trivial proxy to be able to use my as a whiteboard from the Azure Virtual Desktop I live inside of), and to avoid having to go through the whole thing again, I decided to take some notes.

Read More...

Archives3D Site Map