What I'm Building

Everything here started with "I wonder." Building is the fastest way I know to find out.

Gary runs every day. Mack is on the wall in my garage. The newsletter has been sending every morning since August 2025. Minimus Weather is on the App Store. It traces back to a calculator I built in a hotel room in Chicago because I had nothing else to do. Still live.

The interval timer is here too. It didn't work outside of local testing. iOS kills background apps the moment you lock the screen and nothing I tried fixed it. I still want to fix it.

01

Built and Running

Running

WAGE VS INFLATION

  • Cursor
  • BLS API
  • Vercel
wagevsinflation.com ↗

In 2023, inflation was at an all-time high. Everyone had gotten raises, and everyone still felt worse off. The news talks about inflation one month at a time and never about how it compounds. You hear 4%, you got a 3% raise, so why does everything feel worse? Because since 2020, prices were up more than 25% while wages grew around 10%. I used to teach Econ. I wasn't going to bore anyone with the explanation. But I could show them.

Enter what you made in 2020, or any month and year. Enter what you make now. The Bureau of Labor Statistics data does the rest, and you get one clear number: adjusted for inflation, you either make more than when you started, or you make less. Most people have never seen that number. An annual raise feels like enough, but more often than not, even with promotions, the longer you stay somewhere the less you make in real terms. The goal was a visual you could bring to a raise conversation. I've been here five years, I got promoted, and I make less than when I started. What can we do about that?

I designed it in 2023 and couldn't build it. The UI was no problem. The BLS API beat me every single time, and the documentation wasn't written for people like me. Friends were busy. I shelved it as another good idea I didn't know how to build.

In March 2025, inflation was back in the news, and my engineering friends had been talking about Cursor. I asked if they thought it could fix my project. "All you can do is try." I had a cold, rainy work trip to Chicago and a hotel night with nothing to do. I linked the BLS documentation in the Cursor chat and it got the API working on the first try. I spent more time learning how to prompt than building the site. It was live before the night was over.

Wage vs Inflation start state — fill in your start month, starting salary, and current salary.
Wage vs Inflation result — "The verdict: We need to talk." You make 15% less than when you started.

That was the night everything changed. My ideas stopped being "what if" and became "let's try." Everything else on this page compounds from that hotel room.

Running

GARY

  • Claude Code
  • Tailscale
  • Vercel
  • Mac Mini

Gary is my second brain. He runs on an old Mac Mini in my house and is accessible from anywhere via a PWA. I built him with Claude Code. He stores everything as markdown files.

I use him for things that require memory. Books a friend recommends. Recipes I want to try, tracked across "want to try," "loved," and "never again." Notes about people in my life. Articles I don't have time to read right now, with a reminder set for later. When my wife mentions something she wants, it goes in Gary. Next time a birthday comes around, Gary tells me everything she's mentioned, with prices and where to buy.

He also reads photos. Send him a page from a cookbook and he adds the recipe. Send him a photo of a building you pass and he figures out where it is and adds it to your travel list.

The most indispensable part turned out to be dinner. It's 6pm, you're tired, you don't know what to cook. Gary knows your favorites, knows what you've made recently, and can ask what's in the fridge and suggest something from your own recipe list.

The front-end started as just chat. Then my wife wanted to browse the movie list without typing a question. So I built a visual layer: poster cards, filters, everything. One afternoon.

Gary chat interface — empty state, "Hey. What do you want to remember?" prompt.
Gary chat — user asking to add Ministry of Ungentlemanly Warfare to the watch list.
Gary chat — response confirming the movie was added with details.
Gary visual UI — Movies view showing 17 entries with poster cards and filter tabs.

My wife preferred something visual to a chat interface for recall, so I built one. In an afternoon. Using Claude Code.

Running

MACK

  • Claude Code
  • Tailscale
  • Mac Mini
  • iPad Pro (wall-mounted)

Gary was the proof of concept. Mack is the same architecture applied to something more specific: a full personal trainer.

We started with my exact equipment. Every barbell, every plate, every cable stack weight. Then 100 questions about goals, problem areas, past injuries, mobility limitations, and movements I love and ones I hate. Then science-backed programming for men over 40.

It built a 6-week baseline program with a daily workout log for every movement. There's a quick workout mode for busy days: two sets, full body, bench, row, squat, deadlift. Get in, get out, go hard. The progressive overload is smart enough to know that a barbell lift and a cable exercise don't progress the same way. It also tracks running mileage and tells me when I've hit 250 miles on a pair of shoes so I can order new ones before I hit 300.

The moment it stopped feeling like a workout app was the first time it programmed an RDL. It knows about my back history and poor hip mobility, so it suggested setting the bar on plates off the floor instead of pulling from the ground. Injury prevention without me having to ask for it.

Mack workout view — Day C, Dumbbell + Landmine Day. Supersets with sets, reps, and progressive overload notes.
Mack workout log — Today's Log with reps and weight fields per set, cardio tracking at the bottom.

It's mounted on an old iPad Pro on my garage wall. I 3D printed the mount. It's always on.

Running

DAILY NEWS

  • Agentic workflow
  • Web scraper
  • Custom database
aidailyrundown.com ↗

An agentic workflow that scrapes AI and tech news, summarizes it, and sends me an email at 9am every day. That's the simple version.

The full version: it also extracts actionable tips from every article and saves them to a database. There are over 8,000 tips in there now. Every Sunday it sends a special digest of the top tips from the week, filtered to a 90% confidence score. Only what's actually useful makes the cut.

The part that makes it worth running: it continuously cleans the database. AI moves fast. A tip about a model from six months ago is noise, not signal. The workflow checks for outdated information, deprecated tools, and models that no longer exist, and removes them automatically. The database stays current without me touching it.

Today's AI Knowledge Digest email — 5 articles, 42 actionable tips, with key takeaways flagged by confidence score.
The Daily Rundown website — AI news aggregated and summarized, with article cards and a newsletter signup.
Shipped

MINIMUS WEATHER

  • SwiftUI
  • Cursor + Xcode
  • Figma
  • App Store
givemetheweather.com ↗

One day I tried to check the weather on my phone. The app thought I was several states away, buried everything under ads, and told me everything except what I wanted to know: how hot is it, how hot is it going to be, and is it windy or humid. That's it. So I started thinking about building my own.

Then a friend in Slack asked: if Dieter Rams was alive now, would he still design products, or would he design apps? I own a Rams-designed Braun watch and desk clock, so the question stuck. I studied his work and took my palette from it. Black, sand, and yellow. His white was too stark on a screen, so it became beige. I designed the whole app in Figma with Rams as my guide.

Cursor struggled with Swift. Prompts needed fix-up prompts, gestures were a fight, and it broke the entire app more than once. I spent the build bouncing between Cursor and Xcode with a desktop full of screenshots. And Apple's review submission process was the most frustrating part of the whole project. But it got approved.

275 downloads in the first couple of weeks, off nothing but a couple of posts on Instagram and Threads. Users flagged real issues: small screens, large text sizes, swipe gestures. I pasted their feedback into Cursor and it fixed every one. I'd like to revisit it with newer agents and add widgets.

Minimus Weather dark mode — Chicago at 81°, with hourly forecast strip and conditions grid below.
Minimus Weather locations drawer — manage saved cities with the Rams-palette sheet.
Minimus Weather light mode — units selector showing the sand and yellow palette.
Minimus Weather light mode — Search Cities screen with city suggestions.

The test was four questions. Could I design an app with Rams as my guide? Could Cursor write working SwiftUI? Could I make the simplest possible weather app? Could I do it free? Four yeses.

Shelved

INTERVAL TIMER

  • SwiftUI
  • Cursor
  • Apple Shortcuts (the workaround)

The app I still wish existed. My sister started running and offered some sibling competition: pace, distance, who ran the most each week. But I couldn't run like I used to. Getting back meant the old run/walk program: run 1 minute, walk 4, repeat. Then run 2, walk 3. Keep incrementing until you're running the whole thing. I needed something to tell me when to run and when to walk. That's a stepped process, and processes can be automated.

This was 2023. I had the designs done, but no way to build them. I recruited an engineering friend who never had the time, and the project went nowhere. In early 2025, I tried again with my new AI engineering partner. Building it in Cursor was surprisingly straightforward, and it worked like a charm in local testing. So I loaded it on my phone and went for a run.

I started walking, waiting for the beep-beep-beep, time to run. And I'm walking, and I'm walking, and it starts to feel too long. I pull out my phone. The app had restarted. The one thing local testing never showed: the moment you lock the screen and pocket your phone, iOS backgrounds the app and kills the timer. Holding an unlocked phone in your hand for four miles isn't a workout plan.

Cursor, ChatGPT, and I tried everything. Looping low-volume white noise so iOS would treat it like a music app. Forcing it to stay open. Every fix the internet had. Nothing worked. The app is still on my phone, and it's fine for planks in the garage. So is a stopwatch. The workaround that actually functioned was an Apple Shortcut: a chain of timers and wait steps, where every wait has to run five seconds longer than its timer or Siri gets cut off before "time to walk." Changing intervals means editing dozens of steps and doing seconds-math by hand. By the time I got it working, it was winter.

Interval Timer setup screen — warm-up, active time, rest time, sets, and cool-down, all configurable.
Mid-workout timer — Set 2 of 12, active phase with 2:37 remaining on the arc countdown.
Workout Complete screen with confetti. The app worked perfectly. iOS just wouldn't let it run in your pocket.
The Apple Shortcuts workaround — a chain of timers and waits, every wait 5 seconds longer than its timer or Siri gets cut off.

I still think about it every time I go for a walk.

Done

PRINT LAYOUTS

  • Cursor
  • Vue
  • Tailwind
experimental-layouts.com ↗

The question: can you recreate the dynamic, asymmetric layouts of print journalism on the responsive web? The answer: yes. I built several of them.

The catch: it took so much custom JavaScript to place the text that it wasn't really worth it. And unless you happen to be resizing your viewport, you'd never know the fancy part exists. On a phone, it just looks like a normal website. All that work, invisible.

The kicker: about a month after I finished, an engineer shared a much simpler solution in an open-source repo. He built it on his own, just for fun. I had been relying on Cursor to find the right approach. He just knew a better one.

Experimental Layouts — the print journalism layout experiment. "EXPERI-MENTAL" in large asymmetric type with a two-column article layout alongside it.
Sorry, the Algorithm is too sad today — a second layout experiment with an illustrated robot and editorial-style typography.

Just because I can doesn't mean it's worth it. And we still need engineers. They're not going away because an AI can write code.