Kaio

Bespoke Apps

I’m currently writing this from my phone, and crossing my fingers that the formatting and everything turns out okay when it’s finally rendered on the web.

Following up from my recent sentiment that I don’t blog enough, I decided to spend this Sunday morning creating a mobile app that I can use to blog from my phone. My blog site is powered by Hugo and served via Cloudflare Pages. The source is hosted on Github, and I have a Cloudflare Worker that watches the Github repository and builds the latest static dist to host on the server. Typically, I’d update my blog by adding a new markdown page and pushing the commit to the Github repo. With the app, I can write in plaintext and use Claude to touch up the formatting so I don’t need to worry about writing markdown, LaTeX expressions or formatting. I can then preview Claude’s revisions, go back and forth until I’m satisfied, and press a button to publish it to the repo from my couch. It supports multiple drafts, autosaving, and scheduling. At this point, the only thing I’d change is how it generates the slugs – it currently adds the date to the slug and that creates unnecessary extra work when typing it in the address bar. The app is built in React Native and uses pretty standard libraries. From start to finish, it took about 4 hours to complete, with most of that time being spent to solve some annoying Gradle build issues. I created a couple of draft posts and it works extremely well. I’m also pleased with the design, which was mostly handled by Claude with no input from me.

Why?

My hope is that this app enables me to write posts more often. I find that a huge time sink for me, and massive barrier to taking up new tasks, is context switching. Because my blog is written in markdown, I need to be at my computer to write effectively. That means if I’m in the middle of doing something on my phone and get an idea for something I’d like to write, I have to completely upend whatever I’m doing and get settled into my PC environment to post. Playing the sequence of steps over in my head is enough to get me to not want to write anything. By eliminating that gap and making it seamless to pen my thoughts from my phone, I feel more empowered to write whenever I have something on my mind.

Obsidian has a fully-featured mobile app - why not use that? This segues to another topic that has been on my mind for some time – bespoke software. I’m sure I could use Obsidian to write and publish my stuff, but I don’t have to, so why should I? The need to develop custom software is no longer a constraint, it’s no longer a factor that weighs into my decision of what solutions to use for a given problem. If I need something, I can build it myself with Claude or Gemini in a day or two. In such an environment, I’m biased towards using applications that I’ve built myself, whose source is controlled by me.

A self-service web

I’ve once briefly thought about a phone or similar device where all apps are user-generated on-demand. I’m increasingly developing my own apps to optimize my time and create smoother experiences catered to the way in which I use the software – what might it look like if this was the norm? Most traffic is directed towards platforms and socializing services - these are loath to frontload their designs to users, as marketing optimizations are where the bulk of their revenue comes from, but everyone else seems like fair game to me. Currently, most people use a single browser to browse the web. In a way, this is kind of a holdover from back when the web was a small, easily indexable set of pages you could hotlink on an aggregation site or two. Mobile apps receive far more traffic these days than websites do, and not just because massive platforms have cannibalized the bulk of traffic away from more niche sites – I’d guess that even niche apps receive more traffic than equally niche sites do. I feel like this is due to apps having less up-front investment required for a user to reach the purpose of the service. Browsers, on the other hand, haven’t really adapted. Extensions should be filling the gap, giving control to users to customize their browsing experience as they see fit, but I’ve never really felt that sense of control due to the amount of time and effort it takes to write even a simple extension for a single webpage. Maybe this is all due mostly in part to SEO dollars incentivizing opaque platforms that bury the lede deep in the sitemap to optimize ad impressions, I’m not sure.

I feel like user-driven apps are the future, but I commonly see the sentiment, “why would I want a different UI for each app I use?” and I’m not sure how to answer that. Sure, we have different UI/UXs for the apps we use today, but this doesn’t mean in a world where we can do better that we’d want UX to vary between apps. How should user tastes be rolled up and sourced from to generate the next desired app? There are a lot of interesting things to think about and I don’t think the future of this area is obvious. This blog post by Geoffrey Litt goes a lot deeper on this topic, and shows how even back in 2023 it was pretty obvious we’d end up where we are today in terms of LLM-assisted coding, but user-generated apps still haven’t crystallized.