Weather.Co is now free for every pilot — always free for CFIs and flight schools.
Studio · Uses
Studio · stack

What I use.

The actual hardware, editor, fonts, and tooling behind every shipped product. No affiliate links, no sponsorships — just what's installed and running today.

Hardware

Daily drivers
Mac
14" MacBook Pro (M-series). One machine — design, build, deploy, demo.
iPhone
Daily test device, always running the latest beta of Weather.Co, tmpo, and Outpost. What ships gets used on this phone for a week first.
Apple Watch
Series w/ always-on. Critical for tmpo + Weather.Co wrist surfaces.
iPad
Used for testing larger weather + lab layouts.
Display
External 27" for code + design simultaneously.

Editor & IDE

Where the code lives
Xcode
Latest stable. Primary editor for everything Swift/SwiftUI. No Cursor, no Tabnine.
VS Code
Web work — the kuhlman-co.com site, Cloudflare Worker, scripts. Vim mode.
Android Studio
Kotlin/Compose work for the Weather.Co Android port and Acre.
Terminal
iTerm2 + zsh. gh for GitHub, wrangler for deploys, swift test for unit tests.

Fonts

Site & product UI
DM Sans
This site's body + headlines. Variable weight, optical-size axis. fonts.google.com
DM Mono
This site's eyebrow labels, code blocks, footer chrome.
SF Pro
Native iOS / macOS — system font everywhere a product needs to feel native.

Tooling

The build chain
XcodeGen
Vendored binary in every Xcode project. Project.yml is the source of truth, not the .xcodeproj. Guide →
Xcode Cloud
CI/CD for every iOS app. Builds + TestFlight on every push to main. Guide →
Wrangler
Cloudflare Workers CLI. npx wrangler deploy from worker/ ships every site change.
esbuild
JS bundler for the site's SPA (app.js). Sub-second rebuilds.
Resend
Transactional email — magic-link sign-in for /members.
Plaid
Account sync for the Test112 personal-finance app (via a CF Worker proxy).
SwiftData
On-device persistence in every iOS app. Versioned schemas. Guide →
CloudKit
Private iCloud sync where the app needs cross-device data — never to my servers.
Foundation Models
On-device AI (Apple Intelligence). Outpost Discover, tmpo insights, Upsee weekly briefing. Guide →

Infrastructure

Backend (when there is one)
Cloudflare Workers
Every backend the studio runs. Stateless functions at the edge. Guide →
Cloudflare KV
User accounts, magic-link tokens, settings. ~5ms reads at edge.
Cloudflare R2
Object storage for any binary asset that can't ship in the bundle.
Cloudflare Assets
Static site delivery for kuhlman-co.com.
GitHub
Source of truth. Branches per project, no monorepo.

Deploy

Ship cadence
iOS
git push → Xcode Cloud → TestFlight. ~12 min, hands-off.
Site
npx wrangler deploy from worker/. ~5s, global propagation in ~30s.
Backups
Local timestamped folder under Backups/. Revert script gated behind I_REALLY_WANT_TO_REVERT=yes. Never deploy without one.
Conspicuously absent: no analytics, no error reporter (Sentry, Bugsnag), no growth tooling, no notification provider, no A/B framework, no design-tooling SaaS. The stack is short on purpose — every dependency is a thing I'd have to maintain later.