obercode
Nate Ober

Make tools, not tasks.

Native Mac and iOS apps, and the agent systems that run the rest of my week. The output is never the durable thing — the written procedure is.

Minnesota · github.com/nateober · nate@obercode.com

Apps

Things I've shipped

Small, native, and fast enough that you stop noticing them.

Render on iPhone showing a Markdown document rendered in dark mode with headings, a bulleted feature list, and a syntax-highlighted Swift code block

Render

App Store · v1.1.0

Displays HTML and Markdown from inside a Shortcut. Three actions — View HTML, View Markdown, Convert Markdown to HTML — plus PDF export, a share extension, and dark mode that follows the system.

MarkdownEditor on macOS in dark mode: Markdown source on the left, rendered preview with math and a diagram on the right

MarkdownEditor

Free · open source

A Mac-native Markdown editor: vim motions, live preview, KaTeX math, Mermaid diagrams, and export to PDF, single-file HTML, or Word. A 5 MB Swift binary, not a browser booting up. macOS 14+, signed and notarized.

The SuperIcon app icon

SuperIcon

macOS · free download

Drop in one 1024×1024 PNG and get back every icon size React, Android, Windows, and iOS ask for — correctly named, in the folder layout each platform expects.

Also built, not shipped: StudentDriver — an iOS permit-hour tracker with sunrise/sunset-based day/night classification, WeatherKit logging, and DMV-style PDF export. Finished enough to use, never submitted to the App Store.

Tools

Written procedures, run by agents

Each of these is mostly a document. The model is the engine; the discipline is the asset, and it survives the model getting replaced.

aws-samples/sample-kiro-cli-prompts-for-product-teams

Product Team's Tool Chest

Steering files that take a product team from an idea to deep market research, an Amazon-style PRFAQ, a PRD, and a clickable prototype — in a single working session. Research before PRFAQ, PRFAQ before requirements, a check at every seam. Runs in Kiro, Claude Code, and Cursor. Open sourced through AWS Samples.

nateober/ceremony-clip

ceremony-clip

Hand it a two-hour graduation recording and a name. It finds the name being called, confirms the right kid is actually on screen, cuts a ~35-second clip, adds a title card, and scores it with a music model running on the same Mac — then re-transcribes its own mix to prove the name is still audible through the strings. Nothing uploaded.

nateober/image-kit

image-kit

A local image toolkit for agents on the Mac: inspect (dimensions, EXIF/GPS, sharpness, faces), upscale with Real-ESRGAN, repair faces with GFPGAN, cut backgrounds with rembg, and strip metadata before you share. No uploads, no subscriptions.

nateober/eval-harness

eval-harness

The scripts from an eval campaign that caught a "perfect" 100% score hiding a 70.8% reality. Repeat-trial runs at production config, per-item flip rates, exact Clopper-Pearson intervals, and episode-level recall — because a perfect score on 30 items is "at least 88.4%, with 95% confidence."

I write about all of this at nateober.com - essays on second-order work and choosing models honestly. Most recent: seventeen models wrote the identical briefing, and thinking mode made them worse.

Colophon

This page builds itself

The site above argues that the written procedure is the durable artifact. It would be a poor argument if this page were maintained by hand — so it isn't.

$ python3 build.py
Compiled from site.toml by build.py at 2026-08-24 04:30 UTC, nightly on cron.

Every word above lives in a 10-entry data file. The numbers that rot — GitHub stars, the App Store version, the high score — are never typed here; they are fetched at build time from the GitHub API, the iTunes lookup API, and the leaderboard's SQLite file.

The previous version of this page said © 2024 for two years and described an app as "coming soon" for one. That is what hand-maintenance buys you. Read the source →