Weeknotes vol. 6: Web and hybrid and native, oh my!
By Garrett,
(It’s Tuesday but I’m pretending it’s last Friday.)
I’ve gone back and forth on Native v.s. Web v.s. Hybrid v.s. Native v.s. ∞ quite a bit. There are pros and cons to all of the options, but, for the initial launch, I have officially landed on the following:
- Web app (Rails, baby!)
- iOS (Hotwire Native)
- macOS (A hybrid Swift app generating a web view)
- watchOS (Native, primarily for the voice to text)
(ducks from the lettuce, etc. that Chris is going to throw.)
This way, deploying updates is as easy as git push origin master (the cheeseburger of computers) and we’ll have minimal App Store risk. What this does mean is that we need an API for watchOS, which I took care of during the early part of last (this?) week. Though it’s the core of any modern day digital product, I had little experience creating an API and did run into a few gotchas around authenticating with tokens v.s. web logins and sessions. After wrapping my head around the issue I was able to read, write, delete, etc. from the API and had a very quiet celebration in my mind.
I quickly prototyped the native watchOS app to read, write, delete via the API and get an understanding of how this particular app will look and feel so we can understand our design boundaries. And what a good use of time it was. I quickly learned that the simple app I had in my head needed to be about 10x simpler to decrease the clicks it takes from open to posted due to the required native voice to text screens and interactions. I also learned how easy it is to get that sexy swipe to delete on the listing view.
Design for the Web/Mac app is underway and is really starting to look like something. This next week will be spent excitedly getting the working app in line with this week’s design progress and answering Matt’s questions on GitHub so we can finally toggle this codebase’s invincibility mode to the on position.
Like this? Get email updates or grab the RSS feed.
More from the blog:
-
The flatness of the machine
You can feel it before you can name it. A paragraph arrives, fluent and frictionless, and something in the back of your reading brain flinches. The sentences are grammatically flawless, the structure orderly, the tone warm but not too warm, authoritative but not too authoritativ…
-
Software was never meant to last forever
There is a particular kind of frustration that anyone who has worked inside a mid-sized organisation will recognise. You are eighteen months into a Salesforce implementation. The original scope was clean and reasonable. But somewhere around month four, somebody realised that you…
-
The vibe coding spectrum: from weekend hacks to the dark factory
A year ago, Andrej Karpathy posted a tweet that would come to define how an entire industry talks about itself. “There’s a new kind of coding I call ‘vibe coding,’” he wrote, “where you fully give in to the vibes, embrace exponentials, and forget that the code even exists.” He d…
-
Claude Opus 4.6 just shipped agent teams. But can you trust them?
Anthropic shipped Claude Opus 4.6 this week. The headline features are strong: a 1M token context window (a first for Opus models), 128K output tokens, adaptive thinking that adjusts reasoning depth to the task, and top-of-the-table benchmark scores across coding, finance, and l…
-
AI slop: psychology, history, and the problem of the ersatz
In 2025, the term “slop” emerged as the dominant descriptor for low-quality AI-generated output. It has quickly joined our shared lexicon, and Merriam-Webster’s human editors chose it as their Word of the Year. As a techno-optimist, I am at worst ambivalent about AI outputs, so…