We’ve partnered with Astuteo — read the announcement

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.

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…

All blog posts

Let’s chat

Whether you have a challenge in mind or just want to connect, let’s chat. You can drop us an email, connect on LinkedIn or schedule a call with Garrett.

A playful, hand-drawn illustration of a group of characters holding up scorecards with the number ‘11’. They sit behind a table scattered with various other numbers.