Compare commits
1 Commits
main
..
3d8a18f7f7
| Author | SHA1 | Date | |
|---|---|---|---|
| 3d8a18f7f7 |
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(hugo:*)",
|
||||
"Bash(find:*)",
|
||||
"Bash(cat:*)",
|
||||
"Read(//Users/ericwagoner/Downloads/**)",
|
||||
"Bash(mysql:*)",
|
||||
"Read(//Users/ericwagoner/Sites/ericwagoner.com/**)",
|
||||
"Bash(curl:*)",
|
||||
"Bash(ssh:*)",
|
||||
"Bash(git add:*)",
|
||||
"Bash(git commit:*)",
|
||||
"Bash(./deploy)",
|
||||
"Bash(mkdir:*)",
|
||||
"Bash(chmod:*)",
|
||||
"Bash(ls:*)",
|
||||
"Bash(pkill:*)"
|
||||
],
|
||||
"deny": [],
|
||||
"ask": []
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,3 @@ hugo.linux
|
||||
/.hugo_build.lock
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/hugo
|
||||
|
||||
# Local Claude Code settings
|
||||
.claude/settings.local.json
|
||||
@@ -11,21 +11,19 @@ I'm a software developer, agricultural innovator, creative maker, and accidental
|
||||
|
||||
### The Tech Side
|
||||
|
||||
I'm a Staff Software Engineer at [Natera](https://www.natera.com), where I build internal tools that help scientists in the oncology labs deliver better genetic-based cancer tests and treatments. There's something deeply satisfying about writing software that sits quietly behind the scenes while clinicians and researchers do work that genuinely saves lives.
|
||||
I'm the Vice President of Technology at [Infinity Interactive](https://iinteractive.com), where I've been part of their "hired gun" developer team since 2016. Starting as a Senior Software Engineer, I've grown into leadership roles—Team Lead, Manager of Software Delivery, and now VP of Technology.
|
||||
|
||||
Before Natera, I spent nearly a decade at [Infinity Interactive](https://iinteractive.com) as part of their "hired gun" developer team, working my way from Senior Software Engineer through Team Lead and Manager of Software Delivery to Vice President of Technology. I love that team and the wildly varied work they do: lab management systems for cutting-edge bio-labs, touchscreen interfaces for lab robots, tax filing applications, data collection tools for blasting crews, legal news archives, financial document storage systems. There's no place quite like Infinity for the sheer range of problems you get to solve and I highly recommend them to anyone in need.
|
||||
|
||||
I've been doing web development since 1996, working primarily in Node.js and JavaScript, but comfortable across the full stack with Ruby, Python, PHP, Dart/Flutter, and whatever else the project needs.
|
||||
I've been doing web development since 1996, working primarily in Node.js and JavaScript, but comfortable across the full stack with Ruby, Python, PHP, Dart/Flutter, and whatever else the project needs. At Infinity, I've built everything from lab management systems for cutting-edge bio-labs to touchscreen interfaces for lab robots, from tax filing applications to data collection tools for blasting crews, from legal news archives to financial document storage systems.
|
||||
|
||||
My career in tech spans over 30 years, beginning at the National Radio Astronomy Observatory where I turned data from a homemade radio telescope in India into a searchable graphical sky map. I spent 18 years at Partner Software, joining just months after its founding and experiencing every role a software startup has to offer—from building web-based configuration tools to creating PDF reporting systems that replaced expensive enterprise solutions.
|
||||
|
||||
But my most personally significant tech work is [LocallyGrown.net](https://locallygrown.net)—a platform I accidentally created in 2002 that became the world's first online farmers market. What started as a PHP project evolved into a Ruby on Rails platform that has processed nearly $16 million in direct farmer sales. Running this as a one-person operation for over 20 years, I handle everything from coding to system administration to customer support. In 2025, I completed a herculean six-month migration from dying Rails 3 to modern SvelteKit, [saving the platform from extinction](/posts/locallygrown-origin-story/). The migration is behind me now, and I've settled into a satisfying rhythm of improving the platform and adding features that help the markets using it do their work better.
|
||||
But my most personally significant tech work is [LocallyGrown.net](https://locallygrown.net)—a platform I accidentally created in 2002 that became the world's first online farmers market. What started as a PHP project evolved into a Ruby on Rails platform that has processed nearly $16 million in direct farmer sales. Running this as a one-person operation for over 20 years, I handle everything from coding to system administration to customer support. In 2025, I completed a herculean six-month migration from dying Rails 3 to modern SvelteKit, [saving the platform from extinction](/posts/locallygrown-origin-story/).
|
||||
|
||||
### The Unconventional Path
|
||||
|
||||
My journey to tech wasn't typical. I started with a BS in Astrophysics (with Honors) from New Mexico Institute of Mining and Technology, where I was a member of Sigma Pi Sigma physics honor society. Socorro still pulls at me no matter where I am.
|
||||
|
||||
After college, I've been a middle school math and social studies teacher (the only male teacher on staff), an engineering tech at Socorro Electric Cooperative managing their GIS and materials warehouse and doing field work designing new power lines, worked on radio telescope data at the National Radio Astronomy Observatory, and directed live theater. I took trapeze classes for almost four years. I've even had an alter-ego as a nerdy burlesque dancer. Each experience taught me something valuable about systems, people, and problem-solving that I carry into my work today.
|
||||
After college, I've been a middle school math and social studies teacher (the only male teacher on staff), an engineering tech at Socorro Electric Cooperative managing their GIS and materials warehouse, worked on radio telescope data at the National Radio Astronomy Observatory, and directed live theater. I took trapeze classes for almost four years. Each experience taught me something valuable about systems, people, and problem-solving that I carry into my work today.
|
||||
|
||||
### The Agricultural Roots
|
||||
|
||||
@@ -53,7 +51,6 @@ When I'm not writing code or thinking about sustainable agriculture, you'll find
|
||||
### The Digital Presence
|
||||
|
||||
After Twitter's implosion, I've embraced the federated web:
|
||||
|
||||
- [Mastodon](https://toots.kestrelsnest.social/@eric) for thoughts and updates
|
||||
- [Pixelfed](https://pix.kestrelsnest.social/@eric) for photography
|
||||
- [BookWyrm](https://books.kestrelsnest.social/user/eric) for reading logs
|
||||
@@ -63,7 +60,9 @@ After Twitter's implosion, I've embraced the federated web:
|
||||
|
||||
I believe in building practical technology that helps us achieve more—software that takes the drudgery out of tasks and is a pleasure to use. Whether it's helping farmers sell directly to their neighbors or creating touchscreen interfaces for lab robots, I focus on human-scale technology that makes a tangible difference.
|
||||
|
||||
As I've learned through my varied career, the best solutions come from turning odd skills into paychecks and finding creative ways to solve real problems. Technology should serve real communities, not abstract metrics, and the best way I know to stay grounded in that is to keep building things that matter to real people.
|
||||
As I've learned through my varied career, the best solutions come from turning odd skills into paychecks and finding creative ways to solve real problems. Technology should serve real communities, not abstract metrics.
|
||||
|
||||
I'm still recovering from the intensity of the LocallyGrown migration—a marathon that consumed everything for months. But I'm slowly reconnecting with the creative projects that feed my soul, remembering that the best technology serves people, not the other way around.
|
||||
|
||||
### Want to Connect?
|
||||
|
||||
|
||||
@@ -12,8 +12,9 @@ title: Eric in the Present
|
||||
[pics]: https://pix.kestrelsnest.social/@eric
|
||||
[locallygrown]: /posts/locallygrown-origin-story/
|
||||
[randomrecipe]: https://www.youtube.com/@RandomRecipeProject
|
||||
[conpossible]: https://www.conpossible.com
|
||||
|
||||
This page is all about what I am doing *now*. It was last updated on May 2, 2026, and will be edited as things change.
|
||||
This page is all about what I am doing *now*. It was last updated on December 25, 2025, and will be edited as things change.
|
||||
|
||||
## Where I am now
|
||||
|
||||
@@ -21,31 +22,31 @@ Still living in Athens, GA in the home my partner and I bought several months in
|
||||
|
||||
## Who I am around now
|
||||
|
||||
Our house has three people and two cats. The people include me, my partner, and my youngest daughter who spends every other week with us—she's a sophomore in high school and doing great things. My eldest is about to graduate from Georgia State University.
|
||||
Our house has three people and two cats. The people include me, my partner, and my youngest daughter who spends every other week with us—she's a sophomore in high school and doing great things. My eldest is now a senior at Georgia State University.
|
||||
|
||||
We [lost Charlie](/posts/2023-07-24-goodbye,-charlie/) but our two remaining cats continue to keep me company while I'm working. You'll find plenty of photos of them in [my gallery][pics].
|
||||
|
||||
## What I am doing now
|
||||
|
||||
I'm a Staff Software Engineer at [Natera](https://www.natera.com), working on lab management software for their histology labs. We just launched our new platform in the San Carlos lab — a real, live, twenty-four-hour-coverage cutover that landed boring, which is the best possible outcome a software launch can have. Now I'm deep in Datadog, expanding observability based on what real production users actually do, and gearing up for the Austin lab rollout next. The longer game: pushing into the broader oncology workflow as we replace the legacy system one lab and one workflow at a time.
|
||||
I'm the Vice President of Technology at [Infinity Interactive][infinity]. Our whole industry is in turmoil, so work is hard. We're doing a wide range of consulting—from technical infrastructure and software development to workflows and solving both simple and complex problems. Basically, all things having to do with technology and helping organizations organize what they have.
|
||||
|
||||
[LocallyGrown.net][locallygrown] has settled into a rhythm of steady improvements after the massive six-month migration from Rails 3 to SvelteKit. The infrastructure work is behind us; now it's about new features, better tools for market managers, and growing the platform that serves 70+ farmers markets.
|
||||
|
||||
## What I am reading now
|
||||
|
||||
*Starter Villain* by John Scalzi — palate cleanser after *Service Model* wrecked me in the best way.
|
||||
Currently a few chapters into *Service Model* by Adrian Tchaikovsky.
|
||||
|
||||
## What I am playing now
|
||||
|
||||
- **The Outer Worlds 2** — A whimsically dark RPG from Obsidian in the tradition of Fallout. Delightfully cynical corporate dystopia.
|
||||
- **Assassin's Creed: Valhalla** — Viking exploration on the Xbox.
|
||||
- **Gloomhaven** — Back at it after a two-month break. Approaching the endgame now, maybe three quarters through the story, and every scenario comes down to the wire.
|
||||
- **Gloomhaven** — Finally playing with a regular group after the game sat on my shelf for years.
|
||||
|
||||
## What else?
|
||||
|
||||
### Writing Again
|
||||
|
||||
After months of silence, I'm writing regularly again. The words are flowing.
|
||||
After months of silence, I'm writing regularly again—both here and at the [Infinity Interactive blog](https://iinteractive.com/resources/blog). The words are flowing.
|
||||
|
||||
### Creative Projects
|
||||
|
||||
@@ -55,14 +56,12 @@ After months of silence, I'm writing regularly again. The words are flowing.
|
||||
|
||||
### Upcoming Events
|
||||
|
||||
- **Man or Astro-man? at the 40 Watt** — Headlining the first day of a local-label music festival next weekend. My all-time favorite live band, and a rare treat these days.
|
||||
- **Vivian's graduation** — Georgia State University, closing in fast.
|
||||
- **More Natera travel** — Austin lab rollout next, with more trips to San Carlos and Austin ahead.
|
||||
- **Georgia Renaissance Festival** — Spring season in full swing.
|
||||
- **[Inuhele](https://inuhele.com)** (January 23–25, 2026) — Atlanta's annual Tiki Weekend. I'm on staff.
|
||||
- **[CONpossible][conpossible]** (February 6–8, 2026) — I'm the Costuming Track Director. This year's theme is "Through the Faerie Ring"—magic mixed with technology.
|
||||
|
||||
## Where my head is
|
||||
|
||||
We launched. After two months of high stakes and adversarial gatekeepers, our team threw a switch and the new platform went live. It was beautifully boring — quality-of-life issues to patch, not fires to fight. I shared a 3 a.m. overnight shift with our Director and got to slip away on a quiet Monday to make my own pilgrimage to Apple Park. The launch validated everything still to come, and I can see clearly how to grow into the role I want from here. Life is good.
|
||||
The LocallyGrown marathon is behind me. Three months out from the migration, I've found my rhythm again. Writing is happening. Videos are being made. Games are being played. The creative projects that feed my soul are no longer waiting—they're in motion.
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 366 KiB |
@@ -1,170 +0,0 @@
|
||||
---
|
||||
title: "Plan, Assign, Build, Retro: A Replicable Workflow for AI-Augmented Development"
|
||||
date: 2026-03-04T12:00:00-05:00
|
||||
draft: false
|
||||
tags:
|
||||
- ai
|
||||
- development
|
||||
- workflow
|
||||
- claude
|
||||
- svelte
|
||||
description: "I built a community events board from scratch, while making biang biang noodles. Here's the four-phase methodology that made it repeatable: structured planning, detailed tickets, supervised builds, and automated review."
|
||||
lastmod: 2026-03-05T04:22:48.537Z
|
||||
---
|
||||
|
||||
<link rel="canonical" href="https://iinteractive.com/resources/blog/plan-assign-build-retro-a-replicable-workflow-for-ai-augmented-development" />
|
||||
|
||||
{{< callout type="note" title="Originally published on the Infinity Interactive blog" >}}
|
||||
This post originally appeared on the [Infinity Interactive blog](https://iinteractive.com/resources/blog/plan-assign-build-retro-a-replicable-workflow-for-ai-augmented-development). Reprinted here with minor edits.
|
||||
{{< /callout >}}
|
||||
|
||||
I spent 2 hours and 10 minutes actively supervising the construction of a complete web application. Twenty-one tickets, 53 story points, 21 pull requests merged, roughly 8,500 lines of code. During one epic I was in the kitchen making biang biang noodles from scratch. During another I was helping my daughter with history homework. My total hands-on-keyboard time for the build phase was about what most developers spend in a single standup cycle.
|
||||
|
||||

|
||||
_Biang biang noodles with chili oil and broccolini in a green ceramic bowl. The Epic 2 build session: 13 story points, 3 PRs, 10 minutes of my attention._
|
||||
|
||||
But the numbers aren't what made it repeatable. The process is.
|
||||
|
||||
Over the past year, I've been developing a methodology for AI-augmented web development across multiple client projects at Infinity Interactive. What started as "let me try having Claude write some code" evolved into a structured four-phase workflow that consistently compresses multi-month timelines into weeks of part-time work. The methodology got tighter with each project. By the most recent one, I'd stopped thinking of AI as a tool I used and started thinking of it as a team member I managed.
|
||||
|
||||
To validate that the methodology was teachable, not just something that worked in my hands, I designed a training exercise for my team: a small community event board built from scratch using the full workflow. I ran through it myself first, documenting everything obsessively so my teammates could see exactly how the decisions got made. This post is what I learned.
|
||||
|
||||
## How the Loop Works
|
||||
|
||||
The workflow has four phases that repeat in a sprint cycle: Plan, Assign, Build, Retro.
|
||||
|
||||

|
||||
_The core loop: Plan → Assign → Build → Retro, with role labels showing who does what at each phase._
|
||||
|
||||
In **Plan**, I'm having an architecture conversation with Claude Desktop. I describe what we're building, what tech stack, what the constraints are. Claude asks questions I haven't thought of yet, then structures my thinking into documentation, epics, and detailed tickets. This phase typically takes 60 to 120 minutes and produces everything the build phase needs.
|
||||
|
||||
In **Assign**, I sequence the tickets, set priorities, identify dependencies. This is 15 minutes of manual work. Infrastructure before features, data layer before UI.
|
||||
|
||||
In **Build**, Claude Code (the CLI tool) does the implementation, ticket by ticket. I supervise. That means: kick off a ticket, let it work, check the diff when it's ready, approve the commit, approve the push, review the PR. Automated review agents catch what I miss. I merge when satisfied.
|
||||
|
||||
In **Retro**, Claude Code writes the initial retrospective document from the sprint artifacts and conversation history. Then Claude Desktop reviews and expands it with additional context, cross-referencing the planning docs and build logs. I review the analysis, and Claude Desktop adjusts tickets and epics for upcoming sprints accordingly.
|
||||
|
||||
The role division is the important part. I'm the architect who makes decisions. During planning, Claude is the stenographer who structures my thinking. During building, Claude Code is the developer who writes code. During retro, Claude is the analyst. At every stage, I approve every commit, every push, every merge. No exceptions.
|
||||
|
||||
## What I Built
|
||||
|
||||
The training project was a community event board for a fictional neighborhood association. Public-facing static site where residents can browse, search, and filter local events. Familiar domain, exercises the full workflow, mirrors real client patterns.
|
||||
|
||||
I chose SvelteKit with Svelte 5, static adapter, MDsveX for markdown-based event content. Eighteen sample events with search-as-you-type, category filters, responsive design, accessibility compliance. The whole thing [deploys to GitHub Pages](https://iinteractive.github.io/community-board-eric/).
|
||||
|
||||

|
||||
_The Community Events page with the Social category filter active, showing 3 of 18 events. Search bar, category pills, and event cards with the Nightmare on Elm Street theme._
|
||||
|
||||
The creative direction was a Nightmare on Elm Street theme, because the fictional client was the "Elm Street Community Association" and I couldn't resist. Dark palette, blood red accents, Freddy's sweater green as the secondary color, event titles like "Nightmare 5K Fun Run" and "Elm Street Séance & Social Hour." One of the hero section components has a barely-visible striped Easter egg at 6% opacity.
|
||||
|
||||
Silly? Sure, but it's a quirk that worked. The strong creative direction forced the AI to make consistent aesthetic choices instead of defaulting to generic templates. Every event description, every color pairing, every piece of copy had a guiding sensibility to follow. Creative constraints helped here the same way they usually do — they gave the AI something specific to follow instead of reaching for safe defaults.
|
||||
|
||||
## What 105 Minutes of Planning Produced
|
||||
|
||||
Here's where most people's mental model of "AI coding" breaks down. They imagine typing a prompt and getting a project back. The reality is that the build phase was easy _because_ I spent 105 minutes planning before a single line of code existed.
|
||||
|
||||
The planning conversation was a real conversation, not a prompt. I described the architecture. Claude asked whether search should be client-side or server-side. I said client-side, it's a static site with 20 events, no need for a server round-trip. Claude asked about the content pipeline. I said MDsveX, one markdown file per event, frontmatter for metadata. Claude asked about the data model. I described the fields. It structured all of this into an epic plan with dependency chains and story point estimates.
|
||||
|
||||
A note on story points, since they're controversial even in conventional development: I'm not using them to estimate time. In this workflow, time-to-implement is almost meaningless as a planning metric. I use them as a shorthand for how complex the _ask_ is — how much architectural thinking the ticket requires, how carefully I'll need to review the output, how many moving parts are involved. A 2-point ticket means I'll glance at the diff and approve. A 5-point ticket means I'm reading every line and probably testing in the browser. They're a gauge for my review effort, not the AI's build effort.
|
||||
|
||||
That conversation produced three reference documents: a Technical Architecture spec (stack decisions, data flow, component hierarchy), a Design Brief (color theory, typography rationale, mood references, component-level direction), and an Event Content Guide (character names, tone, category definitions). Each document was detailed enough that a specialized AI agent could work from it independently, without needing me to re-explain context.
|
||||
|
||||
Then we wrote tickets. Twenty-one of them across five epics, each with detailed acceptance criteria. A good ticket for this workflow reads like a spec: exact field names, expected sort behavior, specific responsive breakpoints, accessibility requirements. This matters because the ticket becomes the prompt. When I hand a ticket to Claude Code, it should contain everything needed to complete the work without me re-explaining the architecture.
|
||||
|
||||

|
||||
_Jira ticket CBERIC-22 showing the SearchBar component spec: acceptance criteria with file paths, styling requirements, keyboard behavior, and a Technical Context section with code references and cross-ticket dependencies. Story Points: 2._
|
||||
|
||||
Here's a concrete example. The acceptance criteria for the EventCard component included: full-card link wrapped in `<a>`, `<article>` landmark with `aria-labelledby`, metadata rendered as `<dl>` with visually-hidden labels, category badge with token-based colors, three-line description clamping, hover lift with `prefers-reduced-motion` guard, and 44px minimum touch targets. Claude Code implemented all of it on the first pass. The review layer found one addition (a global reduced-motion reset) and zero bugs. That's what a good ticket produces.
|
||||
|
||||
The vaguer tickets produced worse results. The README/documentation ticket had loose acceptance criteria and became the most review-intensive PR of the project: five commits, five review rounds, ten issues. The documentation deserved the same rigor as the features. I didn't give it that, and it showed.
|
||||
|
||||
## What Supervision Actually Looks Like
|
||||
|
||||
During Epics 2 and 3, I was barely at my desk. I kicked off a ticket, went to the kitchen to knead dough for biang biang noodles, and came back ten minutes later. Claude Code had created the event loading utility, written 16 integration tests, set up ESLint and Prettier, configured a CI workflow, and was waiting for me to approve a commit. I read the diff on my phone, approved, went back to my dough. Came back again when it pinged for the push approval. Approved. The PR went up, automated reviews ran, I read the review comments while the noodles rested, told Claude Code to fix the two things the reviewers flagged, approved those commits, merged. Total active time for 13 story points: about ten minutes. The remaining epics were similar — homework help, vegetable prep, and occasionally walking over to the computer to approve a commit. Maybe fifteen minutes of active attention for the entire landing page.
|
||||
|
||||
I want to be careful about how this reads. The work itself was significant, but supervision stayed lightweight because I'd front-loaded the decisions. If I'd skipped the architecture conversation and the detailed tickets, the build phase would have been full of confusion, rework, and re-explanation. The noodle-making ratio only works when you've spent the time planning.
|
||||
|
||||
The approval gates are also non-negotiable. I approve every step. This isn't paranoia. Claude Code is good, but it makes mistakes that are easy to catch in a diff and hard to catch after they've shipped. The scaffold command overwrote my README with generic boilerplate. A favicon was generated at 1422x1422 pixels (259KB for a 16px icon). Event page titles were rendering URL slugs instead of human-readable names. Each of these was a quick catch at the approval stage and would have been a debugging session after the fact.
|
||||
|
||||
There was also an acceleration curve I didn't expect. Epic 1 (foundation) took about an hour of active work. By Epics 4 and 5 (event listing, detail pages, search, filters), the active time was 20 to 25 minutes combined. This wasn't just because later tickets were smaller. The foundation work compounded. Design tokens, global styles, tested utilities, established patterns. By mid-project, Claude Code was composing from existing conventions rather than inventing new ones, and I was reviewing familiar patterns rather than evaluating novel approaches.
|
||||
|
||||
## Three Layers of Review
|
||||
|
||||
The review system was the part of the workflow I was most skeptical about, and it turned out to be the most valuable.
|
||||
|
||||
Every PR gets three reviewers: Cursor's Bugbot, a Claude GitHub Action, and me. Each catches different things.
|
||||
|
||||

|
||||
_Claude's automated PR review on the SearchBar component, showing three issues found with specific line numbers: redundant live region announcements, hardcoded IDs risking duplicates, and missing autocomplete attributes. Each issue has a "Fix this" link._
|
||||
|
||||
Bugbot writes a risk assessment summary at the top of each PR and flags structural concerns. It caught that CSS custom properties can't be used in `@media` queries (a spec limitation I'd forgotten about), flagged a machine-specific config file being committed, and identified sort-order inconsistencies between related utility functions. Good signal-to-noise ratio, maybe one false positive across the whole project.
|
||||
|
||||
The Claude GitHub Action does granular inline review. It caught a timezone bug that would have shipped to production: `new Date('2026-04-18')` parses as UTC midnight, which means US timezone users would see today's events listed as yesterday. The fix was three characters (`T00:00:00`), but I would not have caught it on my own. It also caught a `100vh` fallback gap for older browsers, focus ring inconsistencies, a z-index stacking issue where a gradient overlay was rendering on top of readable text, and a hard-coded color value that violated the project's design token convention.
|
||||
|
||||
My review handles judgment calls. When Bugbot flagged Vite scripts in `package.json` as "bypassing the SvelteKit CLI," I knew that was a false positive because modern SvelteKit uses Vite directly. When Claude suggested adding a new `--color-white` token, I chose the existing off-white token instead. When a review noted an orphaned card in a 3-column grid with 5 items, I decided that was fine. The bots surface issues. Which ones actually matter is still my call.
|
||||
|
||||
Across 21 PRs, the automated reviewers caught roughly 40 to 50 issues I didn't catch myself. The timezone bug alone justified the entire review setup.
|
||||
|
||||
But I should be honest about the limitation. There's a recurring accessibility bug that appeared four times across PRs #13 through #16: duplicate `aria-live` regions, where Claude Code would add `role="status"` to a new element without removing it from an existing one, causing screen readers to announce changes twice. The reviewers caught it every single time. But Claude Code kept reintroducing it because each PR started with fresh context. It couldn't carry the lesson forward.
|
||||
|
||||
The fix was adding a one-line rule to CLAUDE.md (the persistent project instructions file). After that, the bug never recurred. Which tells you something about the architecture of the system: cross-session learning doesn't happen automatically. You have to write it down. And you should write it down faster than I did, because three unnecessary review round-trips is a waste even when the reviewers are free.
|
||||
|
||||
## A Different Job
|
||||
|
||||
This workflow changes what you do all day. I spent more time on architecture conversations, requirements writing, diff reading, and judgment calls. I spent almost no time typing code, debugging syntax errors, or writing boilerplate.
|
||||
|
||||
The skills that matter shift accordingly. Decisiveness matters a lot. In the planning conversation, Claude surfaces questions you haven't considered. "Should the event cards link to detail pages or expand inline?" "Do past events sort reverse-chronologically or get hidden?" "What happens when a search returns zero results?" You need to answer these quickly and clearly, because the answer becomes part of the ticket, which becomes the implementation. Waffling in planning produces vague tickets, which produce confused implementations, which produce heavy review cycles.
|
||||
|
||||
Clear requirements writing matters. The difference between "make it responsive" and "test at 375px, 768px, and 1200px; navigation collapses to hamburger below 768px; touch targets minimum 44px; event cards stack to single column on mobile" is the difference between a one-pass implementation and three rounds of revision.
|
||||
|
||||
Diff reading matters. You need to understand what every line of code does, even though you didn't write it. When I reviewed the EventCard component, I needed to know whether `aria-labelledby` on both the `<article>` and the inner `<a>` was intentional and valid (it was), whether the three-line clamp used `-webkit-line-clamp` with proper fallbacks (it did), and whether the hover transform had a reduced-motion guard (it didn't, which the review caught). You can't approve what you can't evaluate.
|
||||
|
||||
And knowing when to push back matters. Claude Code occasionally proposes solutions that are technically correct but architecturally wrong for the project. When it suggested a separate component file for 30 lines of about-section content, I said no, inline it. When it generated a comprehensive test suite for a simple date formatting function, I kept the boundary tests and cut the redundant ones. When it wanted to add a new design token for a single use case, I pointed it at the existing token. These are small decisions, but they compound across a project.
|
||||
|
||||
I'll be direct about the tension, though. Some developers love the part of the job this workflow automates. The satisfaction of solving an algorithmic puzzle, the flow state of typing code, the craft of a well-structured function. This workflow moves your value away from that and toward management, architecture, and review. If you got into this field because you love writing code, the shift might feel like a loss. If you got into this field because you love building things, it might feel like a superpower.
|
||||
|
||||
## Cost and Practicality
|
||||
|
||||
The entire toolchain costs between $40 and $240 per month. Claude Pro at $20 gives you Claude Desktop for planning, Claude Code for building, and the model access for both. A code review tool runs $0 to $40 depending on what you choose. Claude Pro Max at $200 gives higher rate limits and is what I'd recommend for real client work, but Pro is fine for smaller projects and training exercises.
|
||||
|
||||
No API costs. Everything runs through the Claude subscription. The training project ran on Pro Max and never hit a rate limit.
|
||||
|
||||
Compare that to the traditional alternative. This project was scoped at roughly 50 story points across 21 tickets. In a conventional workflow, that's probably 40 to 60 developer-hours depending on experience and the framework. At shop rates, that's several thousand dollars of labor. The AI workflow compressed it to about 4 hours of my active time (2 hours planning, 2 hours 10 minutes supervising) plus 12 hours of wall-clock time. The economics are hard to argue with.
|
||||
|
||||
The caveat is that this requires architectural skill. You can't skip the planning phase and get these results. A junior developer who can write great code but hasn't internalized system design patterns will struggle with the "architect" role this workflow demands, because the AI handles implementation but the human still owns every judgment call. If you don't have the judgment yet, the AI just builds the wrong thing faster.
|
||||
|
||||
## What I'd Do Differently
|
||||
|
||||
I have a short list, and it's more useful than the success stories.
|
||||
|
||||
**Update CLAUDE.md faster.** The `aria-live` duplication recurred three times before I added the convention rule. Each recurrence was caught by reviewers, but it was wasted effort. Any time a review catches a pattern issue, that pattern should go into CLAUDE.md the same day. One line of persistent instruction prevents multiple rounds of review feedback.
|
||||
|
||||
**Batch tightly-coupled tickets.** The landing page had four tickets: Hero, Upcoming Events, About/CTA, and Assembly. The assembly ticket resolved itself naturally as the other three merged in sequence, because they all built on the same page file. Four separate PRs for one feature page created unnecessary review overhead. Next time I'd combine those into two tickets at most.
|
||||
|
||||
**Treat documentation with the same rigor as features.** The README ticket had loose acceptance criteria and became the most review-intensive PR of the project. It also spawned a CLI script that had three bugs caught in review (accepted impossible dates like February 30, allowed unsanitized input in slug overrides, and produced invalid YAML from double-quoted user input). I treated it as a wind-down task. It deserved a proper spec.
|
||||
|
||||
**Establish CSS conventions earlier.** The `width: 100vw` scrollbar issue appeared in two different PRs with two different fixes. After the first occurrence I should have documented the preferred pattern (`calc(50% - 50vw)` negative margins) so Claude Code would use it consistently. Instead I got two solutions to the same problem, one of which was worse than the other.
|
||||
|
||||
**Create a living conventions document from day one.** Beyond CLAUDE.md, a project-level conventions reference covering accessibility patterns, CSS approaches, and component structure would have prevented inconsistencies that accumulated across PRs. Each individual implementation was defensible in isolation. The inconsistency across the project created unnecessary review churn.
|
||||
|
||||
## Getting Started
|
||||
|
||||
If you want to try this workflow, here's what you actually need to do.
|
||||
|
||||
Get a Claude Pro subscription. Install Claude Code (`npm install -g @anthropic-ai/claude-code`). Set up at least one automated code review tool on your GitHub repo. The free Claude GitHub integration works fine to start.
|
||||
|
||||
Create a Claude Project and load it with context: your project requirements, technical constraints, design references, anything you'd hand to a new developer joining the team. Have a planning conversation. Let Claude ask questions. Make decisions. Let it structure your thinking into documentation and tickets.
|
||||
|
||||
Write tickets with detailed acceptance criteria. Specific fields, expected behaviors, responsive breakpoints, accessibility requirements. If the ticket is vague, the code will be too.
|
||||
|
||||
Turn off auto-commit, auto-push, and auto-merge. Read every diff. You need to understand what you're shipping.
|
||||
|
||||
Build ticket by ticket. Let Claude Code work. Check in when it's ready for approval. Feed review comments back for fixes. Merge when you're satisfied.
|
||||
|
||||
Run a retro after each sprint. Let Claude analyze what happened. Read the analysis. Apply the learnings. Update your project instructions with any conventions the reviews surfaced.
|
||||
|
||||
The acceleration curve is real. Your first epic will feel slow and unfamiliar. By the third or fourth, you'll be reviewing diffs while making dinner.
|
||||
|
||||
---
|
||||
|
||||
I made noodles while the AI built my project. I also spent almost two hours before that making sure it would build the right one. If there's a takeaway, it's that the ratio between those two activities matters more than either number on its own. The workflow redirects your time toward architecture, quality judgment, and creative direction. The code follows from that.
|
||||
|
Before Width: | Height: | Size: 523 KiB |
|
Before Width: | Height: | Size: 1020 KiB |
|
Before Width: | Height: | Size: 442 KiB |
@@ -1,82 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 880 420">
|
||||
<defs>
|
||||
<style>
|
||||
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;700&display=swap');
|
||||
|
||||
.phase-box { fill: #242220; stroke: #3d3835; stroke-width: 1.5; rx: 8; }
|
||||
.phase-box-active { fill: #2a2422; stroke: #c45c3c; stroke-width: 1.5; rx: 8; }
|
||||
.phase-label { font-family: 'DM Sans', sans-serif; font-weight: 700; font-size: 18px; fill: #e8e0d4; letter-spacing: 0.08em; }
|
||||
.role-you { font-family: 'DM Sans', sans-serif; font-weight: 500; font-size: 12px; fill: #c45c3c; }
|
||||
.role-ai { font-family: 'DM Sans', sans-serif; font-weight: 400; font-size: 12px; fill: #8a8078; }
|
||||
.role-label { font-family: 'DM Sans', sans-serif; font-weight: 500; font-size: 10px; fill: #5a5550; letter-spacing: 0.06em; }
|
||||
.arrow { fill: none; stroke: #c45c3c; stroke-width: 2; }
|
||||
.arrow-head { fill: #c45c3c; }
|
||||
.loop-arrow { fill: none; stroke: #c45c3c; stroke-width: 1.5; stroke-dasharray: 6 4; }
|
||||
.loop-label { font-family: 'DM Sans', sans-serif; font-weight: 400; font-size: 11px; fill: #5a5550; font-style: italic; }
|
||||
</style>
|
||||
</defs>
|
||||
|
||||
<!-- Background -->
|
||||
<rect width="880" height="420" fill="#1a1916" rx="12"/>
|
||||
|
||||
<!-- Phase boxes - horizontal layout with generous spacing -->
|
||||
<!-- PLAN -->
|
||||
<rect class="phase-box" x="40" y="120" width="170" height="160"/>
|
||||
<text class="phase-label" x="125" y="168" text-anchor="middle">PLAN</text>
|
||||
<line x1="70" y1="182" x2="180" y2="182" stroke="#3d3835" stroke-width="1"/>
|
||||
<text class="role-label" x="125" y="206" text-anchor="middle">YOU</text>
|
||||
<text class="role-you" x="125" y="222" text-anchor="middle">Architect</text>
|
||||
<text class="role-label" x="125" y="246" text-anchor="middle">AI</text>
|
||||
<text class="role-ai" x="125" y="262" text-anchor="middle">Stenographer</text>
|
||||
|
||||
<!-- ASSIGN -->
|
||||
<rect class="phase-box" x="260" y="120" width="170" height="160"/>
|
||||
<text class="phase-label" x="345" y="168" text-anchor="middle">ASSIGN</text>
|
||||
<line x1="290" y1="182" x2="400" y2="182" stroke="#3d3835" stroke-width="1"/>
|
||||
<text class="role-label" x="345" y="206" text-anchor="middle">YOU</text>
|
||||
<text class="role-you" x="345" y="222" text-anchor="middle">Organizer</text>
|
||||
<text class="role-label" x="345" y="246" text-anchor="middle">AI</text>
|
||||
<text class="role-ai" x="345" y="262" text-anchor="middle">—</text>
|
||||
|
||||
<!-- BUILD -->
|
||||
<rect class="phase-box" x="480" y="120" width="170" height="160"/>
|
||||
<text class="phase-label" x="565" y="168" text-anchor="middle">BUILD</text>
|
||||
<line x1="510" y1="182" x2="620" y2="182" stroke="#3d3835" stroke-width="1"/>
|
||||
<text class="role-label" x="565" y="206" text-anchor="middle">YOU</text>
|
||||
<text class="role-you" x="565" y="222" text-anchor="middle">Supervisor</text>
|
||||
<text class="role-label" x="565" y="246" text-anchor="middle">AI</text>
|
||||
<text class="role-ai" x="565" y="262" text-anchor="middle">Developer</text>
|
||||
|
||||
<!-- RETRO -->
|
||||
<rect class="phase-box" x="700" y="120" width="170" height="160"/>
|
||||
<text class="phase-label" x="785" y="168" text-anchor="middle">RETRO</text>
|
||||
<line x1="730" y1="182" x2="840" y2="182" stroke="#3d3835" stroke-width="1"/>
|
||||
<text class="role-label" x="785" y="206" text-anchor="middle">YOU</text>
|
||||
<text class="role-you" x="785" y="222" text-anchor="middle">Reader</text>
|
||||
<text class="role-label" x="785" y="246" text-anchor="middle">AI</text>
|
||||
<text class="role-ai" x="785" y="262" text-anchor="middle">Analyst</text>
|
||||
|
||||
<!-- Forward arrows between boxes -->
|
||||
<!-- PLAN → ASSIGN -->
|
||||
<line class="arrow" x1="210" y1="200" x2="254" y2="200"/>
|
||||
<polygon class="arrow-head" points="254,195 264,200 254,205"/>
|
||||
|
||||
<!-- ASSIGN → BUILD -->
|
||||
<line class="arrow" x1="430" y1="200" x2="474" y2="200"/>
|
||||
<polygon class="arrow-head" points="474,195 484,200 474,205"/>
|
||||
|
||||
<!-- BUILD → RETRO -->
|
||||
<line class="arrow" x1="650" y1="200" x2="694" y2="200"/>
|
||||
<polygon class="arrow-head" points="694,195 704,200 694,205"/>
|
||||
|
||||
<!-- Loop arrow: RETRO back to PLAN (goes under) -->
|
||||
<path class="loop-arrow" d="M 785,280 L 785,340 Q 785,360 765,360 L 145,360 Q 125,360 125,340 L 125,280"/>
|
||||
<polygon class="arrow-head" points="120,284 125,272 130,284" opacity="0.6"/>
|
||||
|
||||
<!-- Loop label -->
|
||||
<text class="loop-label" x="455" y="375" text-anchor="middle">repeat</text>
|
||||
|
||||
<!-- Top label -->
|
||||
<text font-family="DM Sans, sans-serif" font-weight="400" font-size="13" fill="#5a5550" letter-spacing="0.12em" x="440" y="80" text-anchor="middle">THE CORE LOOP</text>
|
||||
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 4.5 KiB |
@@ -4,10 +4,11 @@ date: 2026-02-06T12:00:00-05:00
|
||||
draft: false
|
||||
description: A joyful stress — managing everything necessary, letting go of the things I wanted to do but couldn't, and looking forward to being around people I love who I only see once a year.
|
||||
tags:
|
||||
- weeknote
|
||||
- weeknotes
|
||||
- CONpossible
|
||||
- conventions
|
||||
lastmod: 2026-03-24T15:14:34.275Z
|
||||
lastmod: 2026-02-17T04:45:40.235Z
|
||||
---
|
||||
|
||||
*A joyful stress — managing everything necessary, letting go of the things I wanted to do but couldn't, and looking forward to being around people I love who I only see once a year.*
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
---
|
||||
title: "Weeknotes: Feb 14–20, 2026"
|
||||
date: 2026-02-21T10:00:00-05:00
|
||||
draft: false
|
||||
description: Backend work delivered, a training program built, biang biang noodles made from scratch, and goodbye conversations with a team I'll miss.
|
||||
tags:
|
||||
- weeknotes
|
||||
- cooking
|
||||
- work
|
||||
lastmod: 2026-03-02T03:01:46.662Z
|
||||
---
|
||||
|
||||
_Carnitas on the stove, noodles on the counter, goodbyes in the virtual conference room._
|
||||
|
||||
## Shipped
|
||||
|
||||
I completed the back end work on a university's community engagement portal this week, wrapping up the bulk of the development effort. The client is, and I quote, "over the moon" with the results. I want to get all the way to the finish line before the end of the month, and this puts me firmly on track.
|
||||
|
||||
After showing my team how I built that portal using a structured workflow around AI-powered development tools, they wanted to try it themselves. So I spent a day building a soup-to-nuts training program for them to follow — a mock statement of work from a fictional client, documentation on my process, and enough guidance to produce a complete application without producing slop. It was genuinely fun to create. I'm looking forward to running through it myself as a participant to see where the rough edges are.
|
||||
|
||||
## Read
|
||||
|
||||
I finished [*Automatic Noodle*](https://books.kestrelsnest.social/book/50965/s/automatic-noodle) by Annalee Newitz, and I loved it. Fast, fun, hopeful, and cozy despite being set in a ruined San Francisco. A [five-star mini-review](https://books.kestrelsnest.social/user/eric/comment/10674#anchor-10674) is up on my BookWyrm site. I haven't written a full review yet, but the short version is that this book is going to stick with me.
|
||||
|
||||
I've also been reading many, many onboarding materials from my new employer — the first trickle of what will soon become a flood.
|
||||
|
||||
## Played
|
||||
|
||||
Dry spell. Con season is over and the groundwork for switching jobs is nearly done, so I think time will start opening up again soon. I'm eager to get back to playing Gloomhaven with my group and sitting down with the Xbox to explore more of Outer Worlds 2.
|
||||
|
||||
My partner and I did finally finish watching the first season of *Pluribus*. What a wonderfully weird show. Vince Gilligan doing something completely different, Rhea Seehorn carrying the whole thing, and a premise that just keeps unfolding in directions I didn't expect. Looking forward to seeing where it goes.
|
||||
|
||||
## Cooked
|
||||
|
||||
Two kitchen adventures this week, both involving pork and obsession.
|
||||
|
||||
When the pandemic hit and restaurants closed down, food prices in general shot up — but here in Georgia, where pulled pork BBQ is everywhere, the pork market cratered. Stores were regularly offering whole butts for 49 cents a pound or less. I found a recipe for [instant pot carnitas](https://www.gimmesomeoven.com/instant-pot-crispy-carnitas/) that were spectacularly delicious and adaptable to whatever we could find at the store any given week besides the pork. We made it constantly. It was exceptionally cheap, could be made in big batches, stored well, and worked in any number of ways — our go-to was piled on top of baked potatoes. This week pork butts were on sale for $1.50/lb, a far cry from the COVID lows but still really cheap for nowadays, so I cooked up a big batch of carnitas on Saturday.
|
||||
|
||||
And then there are the noodles. Somewhere around the halfway point of *Automatic Noodle* I became obsessed with the idea of biang biang noodles — the wide, hand-pulled, belt-like noodles from Xi'an. I'd never seen them in person, and there's nowhere in Athens to get them. After consulting a local Facebook food group I was pointed to a few places near Atlanta in Duluth, but I couldn't get there soon enough to satisfy the craving. So I did the totally normal thing and watched a few YouTube videos and decided to make them from scratch on Sunday. The process is an all-day affair — short bits of hand kneading followed by many repeated rests — but apart from the time involved they were remarkably low effort. And they came out spectacularly. I'll still find a time to try them in Duluth, but biang biang noodles have already entered regular rotation in my kitchen.
|
||||
|
||||
## Noticed
|
||||
|
||||
I went to see a silly comedy at the community theater I've been involved with — sometimes extremely heavily, though in the last decade or so not as much — since I moved to Athens in 1997. Several friends of mine were in the show, and it was fun to watch them be goofy in a production about mad scientists in love, along with a few re-animated monsters who were also in love.
|
||||
|
||||
## Thinking About
|
||||
|
||||
The realities of leaving what was in many ways a dream job for the unknown challenges of a new position. The professional challenges I'm actually looking forward to. The insurance coordination I am not. Pretty much everyone in the household is undergoing various treatment plans, and having to switch providers mid-stream is a major undertaking. I'm excited about the work ahead, but the prospect of cleaning up insurance messes terrifies me in a way that no codebase ever has.
|
||||
|
||||
## What's Next
|
||||
|
||||
The leadership team has known about my departure for a couple weeks now, but this week I had the difficult conversations with my immediate team to let them know I was leaving. These are extremely talented developers, every one of them. They've made my job easier in so many ways, and I'll be sad to not work alongside them anymore. It's been an honor to lead them.
|
||||
|
||||
## Vibe Check
|
||||
|
||||
After both telling my team and filling out tax forms, my impending job change is very, very real.
|
||||
@@ -1,67 +0,0 @@
|
||||
---
|
||||
title: "Weeknotes: Feb 21–27, 2026"
|
||||
date: 2026-02-28T09:00:00-04:00
|
||||
draft: false
|
||||
tags:
|
||||
- weeknotes
|
||||
- work
|
||||
- cooking
|
||||
- family
|
||||
description: Last day at Infinity Interactive after ten years, a training program for the team, bones from an expo, biang biang noodles, and the announcement of what comes next.
|
||||
---
|
||||
|
||||
*One door closes. Another opens before I've had time to take off my coat.*
|
||||
|
||||
## Shipped
|
||||
|
||||
You could say I shipped this stage of my career. Friday was my last day at Infinity Interactive after more than ten years.
|
||||
|
||||
I squeezed in one final client task just under the wire and then spent the rest of the week building out a hands-on training program for my team on effective use of Claude Code for building web applications you could actually be proud of. The training walks developers through a structured workflow — plan, assign, build, retro — with a mock client project to follow from start to finish. I wrote about the methodology in [my last post on the company blog](https://iinteractive.com/resources/blog/plan-assign-build-retro-a-replicable-workflow-for-ai-augmented-development), and the [demo application](https://iinteractive.github.io/community-board-eric/) I built using the program is up on GitHub Pages.
|
||||
|
||||
A strange feeling, writing a goodbye blog post for a company you still believe in. But I wanted to leave behind something useful, not just a clean desk.
|
||||
|
||||
## Read
|
||||
|
||||
The first of what I'm sure will be a flood of onboarding documents. I'm told there are many more where these came from.
|
||||
|
||||
## Played
|
||||
|
||||
On Saturday, Juniper and I drove into Atlanta for the traveling Oddities & Curiosities Expo — three whole floors of convention center space filled with booths of artists selling all sorts of whimsical or macabre (and often both at once) items. Juniper has been getting into art made from bones, and she was thrilled to come home with a box full of them sourced from a farmer who had her own booth there. I have questions about the interior of my child's bedroom that I have decided I do not need answered.
|
||||
|
||||
## Cooked
|
||||
|
||||
Made more biang biang noodles. They're so fun, and easy, and delicious. I might have a problem. After the Oddities expo, Juniper and I walked a few blocks over to meet my eldest, Vivian, at their apartment, and then we all walked to [Trader Vic's](https://www.tradervicsatl.com/) for tiki drinks and Polynesian-ish food. Both delicious and fun.
|
||||
|
||||
## Thinking About
|
||||
|
||||
Change. Voluntarily leaving an employer — especially a good one — seems like a foolish choice in this climate. I'm not someone who jumps from job to job. I've held only two positions between July 1997 and February 2026. But as great as Infinity Interactive was for me, I couldn't pass up what Natera was offering.
|
||||
|
||||
Here's the announcement I posted publicly this week:
|
||||
|
||||
---
|
||||
|
||||
After an incredible chapter at Infinity Interactive, I'm excited to share that I'm joining Natera as a Staff Software Engineer.
|
||||
|
||||
Leaving Infinity was one of the hardest professional decisions I've ever made. In many ways it was a perfect job. I came in as a developer and grew into a leadership role I never anticipated: managing a talented team, shaping technical strategy across multiple client engagements, and learning more about myself as both an engineer and a leader than I thought I had left to learn. The company gave me room to stretch, and the people gave me reasons to stay every single day.
|
||||
|
||||
I'm proud of what we built together. If you're curious about some of the thinking I got to do there, my [blog posts live here](https://iinteractive.com/resources/blog/author/eric-wagoner).
|
||||
|
||||
So why leave? Because this one is personal.
|
||||
|
||||
Natera is at the forefront of cell-free DNA testing, and their work in oncology is helping detect and fight cancers earlier and more effectively. Cancer took my mom. The chance to put my skills toward that fight, to write code that plays even a small part in making sure fewer families go through what mine did, isn't something I could turn down. The expectations are high, the work will be demanding, and I wouldn't have it any other way. Call it purpose, call it mission. I'm calling it revenge.
|
||||
|
||||
To everyone at Infinity — Jeremy, Tommy, Rob, and the whole team I hate leaving behind — thank you for years that genuinely changed the trajectory of my career. I'm not disappearing, and I'm not done being grateful.
|
||||
|
||||
On to what's next.
|
||||
|
||||
---
|
||||
|
||||
## What's Next
|
||||
|
||||
Honestly? I don't know what the next few weeks or months will look like. The interview process was quick, and I knew enough about the company and the general kind of work to feel good about the fit without getting into the specifics of what exactly I'd be doing day-to-day. They seemed sold on me before I even started the process, and the same was true from my side. I doubt there will be a slow ramp-up, but the work doesn't scare me.
|
||||
|
||||
What does scare me is having to switch insurance providers. Everyone in the household is in the middle of various treatment plans that have us seeing an unusually high number of providers right now — nothing serious, just coincidentally timed — and I am not looking forward to cleaning up whatever messes get caused by changing insurance mid-stream.
|
||||
|
||||
## Vibe Check
|
||||
|
||||
I can't afford to take time off between gigs, so I'm immediately walking out of one door and into another. The coat stays on.
|
||||
@@ -1,52 +0,0 @@
|
||||
---
|
||||
title: "Weeknotes: Feb 28–March 6, 2026"
|
||||
date: 2026-03-07T09:00:00-04:00
|
||||
draft: false
|
||||
tags:
|
||||
- weeknotes
|
||||
- work
|
||||
- cooking
|
||||
description: Week one at Natera, surviving the firehose, Gloomhaven returns, Dover sole, Girl Scout cookies, and spring allergies.
|
||||
---
|
||||
|
||||
*This week has reminded me of my days as a sprinter, on a 4x100 relay. Everyone is running full speed and I need to use a very short runway to match them and seamlessly grab that baton and go.*
|
||||
|
||||
## Shipped
|
||||
|
||||
I survived week one at Natera. The firehose metaphor has never been more apt.
|
||||
|
||||
The company provided a locked-down laptop that requires VPN access to do anything at all. I've never worked this way before, and it will take some getting used to. The lack of control is annoying, but it comes with a corresponding lack of responsibility, which is a trade I can live with. The friction also means I'm far less likely to casually work after hours, and it's flat-out impossible to do anything from my phone or personal machine. There are worse guardrails to have imposed on you.
|
||||
|
||||
I did take the time to set up my shell exactly how I like it, with all the tooling I prefer, and created a dotfiles repo that automates everything. If I ever need to switch laptops for any reason, the whole environment comes with me.
|
||||
|
||||
## Read
|
||||
|
||||
About a gazillion onboarding documents, benefits applications, HR policies, and roughly a dozen code repositories with their associated documentation spread across wiki pages, Jira tickets, and Google documents. I think the last time I read this much in this short a time was finals week my last semester of college.
|
||||
|
||||
## Played
|
||||
|
||||
After a two-month break due to scheduling conflicts, my Gloomhaven group got back together. We're approaching the endgame now, maybe three quarters of our way through the story including side quests, and every scenario seems to come down to the wire. The balance is exquisite. I look forward to every session we have together.
|
||||
|
||||
## Cooked
|
||||
|
||||
The Publix a few houses up the road from me has an unusually good fish counter, and this week they had fresh Dover sole filets. I'd never cooked those before, so I grabbed a few and pan-seared them with a lemon caper sauce. Fantastic.
|
||||
|
||||
Some friends of mine have a young daughter in her first year of Girl Scouts, so naturally I had to buy a year's supply of cookies. We met up at the neighborhood brewery and I spent the afternoon catching up with them, munching on Thin Mints, and drinking a stout named after Henrietta Lacks. If you don't know the name, she's the woman whose cells became the first immortal human cell line, contributing to enormous advancements in health and cancer research, completely unknown to her or her family during her lifetime. Given my new employer's mission, the coincidence landed differently than it might have a month ago.
|
||||
|
||||
## Noticed
|
||||
|
||||
Spring has sprung, and my seasonal allergies have kicked in. Mine hit very early in the season, caused somewhat ironically by juniper pollen, and they're mercifully short.
|
||||
|
||||
I've worked alongside several of my new co-workers before at previous companies. Some are longtime friends. I helped build from the ground up software systems very similar to what they are building here. So much is familiar, and yet so much is new. The familiarity helps me settle in. The differences keep me on my toes and remind me I cannot be complacent about anything.
|
||||
|
||||
## Thinking About
|
||||
|
||||
How to balance two instincts that are both firing at once. My tendency in every new environment is to take things in, observe, listen. But my other tendency, the one that always follows close behind, is to naturally rise into leadership roles. I want to intentionally accelerate that here. Partly because a large organization is easy to get lost in, and partly because there seems to be a vacancy in the org that is somehow exactly Eric-shaped.
|
||||
|
||||
## What's Next
|
||||
|
||||
Grabbing the bull by the horns, as they say. I want the people around me to simultaneously feel like I've always been here and wonder how they ever managed without me.
|
||||
|
||||
## Vibe Check
|
||||
|
||||
Baton in hand. Running.
|
||||
@@ -1,54 +0,0 @@
|
||||
---
|
||||
title: "Weeknotes: March 7–13, 2026"
|
||||
date: 2026-03-14T09:00:00-04:00
|
||||
draft: false
|
||||
tags:
|
||||
- weeknotes
|
||||
- work
|
||||
- cooking
|
||||
description: Week two at Natera, jumping into a launch sprint, Service Model robots, chasing apple fritters, OysterFest, Costco initiation, and upcoming travel Tetris.
|
||||
---
|
||||
|
||||
*Settling in as well as I can in my second week, and being proactive in setting my route forward.*
|
||||
|
||||
## Shipped
|
||||
|
||||
The original plan was reasonable enough: explore the code, ask questions, meet the immediate team one-on-one, expand outward to stakeholders, and then start contributing. Instead, at the end of last week there was a pivot. I was put on the team about to launch a new internal application across several labs in two states, and they were scrambling to meet the deadline. They're the first team to launch an application on a new platform built entirely in-house, and there's a lot riding on its success.
|
||||
|
||||
So the previous plan went out the window. I rolled up my sleeves and jumped in to start smashing bugs, adding a few late-breaking features, and smoothing out the infrastructure. My git activity heat map is already glowing white-hot. I think I successfully grabbed that baton and took off at full speed.
|
||||
|
||||
## Read
|
||||
|
||||
Code, Jira tickets, wiki pages, HR policies, and more code. It will be a while before my pace *reading* that stuff slows down, and even then it will just be replaced with *writing* it all.
|
||||
|
||||
I have made it a point to dive back into *Service Model* by Adrian Tchaikovsky. I'd been slow getting into it, not because of anything wrong with the book itself but maybe just my own wariness about how the story was starting to play out. I finally got past that and now I'm having a hard time putting it down. This is the second book by Tchaikovsky I've read that features an all-too-relatable mentally ill robot, and I'm starting to wonder how he knows the inside of my head so well.
|
||||
|
||||
## Played
|
||||
|
||||
We had plans Saturday to go to the Firefly Lantern Festival, an event at a city park along the river downtown where people make and wear light-up costumes and puppets. Unfortunately, it got rained out.
|
||||
|
||||
That morning, though, it was beautiful. We drove to a neighboring town where an old-fashioned doughnut shop sits on the town square. They were out of my favorite item, apple fritters as good as my gold standard from an even older bakery in Union, Missouri that my buddy Scott and I would stop at before our college classes at the county community college our senior year of high school. I've been chasing fritters that good for thirty-five years and finally found them in Jefferson, Georgia. Have to get there earlier than we did, apparently.
|
||||
|
||||
We took our coffee and doughnuts to a nearby cemetery that goes back to at least the early 1800s, full of giant gothic memorials with names of families still present in the area. I love looking at the stonework, especially when it is covered with a couple centuries of moss and lichen.
|
||||
|
||||
## Cooked
|
||||
|
||||
We swung by a local brewery for OysterFest, mostly an excuse for my favorite local restaurant, Seabear, to bring out their mobile oyster truck. I had a dozen, raw on the half shell, while my bemused daughter watched. Also had a pint or two of a lovely oyster-themed stout they made for the occasion, which I do not think contained any actual oyster. Went quite well with them, though.
|
||||
|
||||
## Noticed
|
||||
|
||||
While looking through the company savings benefits at the new job, I noticed a discount for Costco. One opened up in Athens a year or so ago, but I never bothered to get a membership. With the discount, though, it was a no-brainer, so Sunday Juniper and I picked up my card and she got to experience her first Costco and, of course, the obligatory $1.50 hot dog. I am hoping I can wean myself off the bulk subscriptions I have set up through Amazon in favor of a more responsible retailer.
|
||||
|
||||
## Thinking About
|
||||
|
||||
Upcoming travel. As part of the software launch, I will be traveling on-site to San Carlos, California and Austin, Texas. Most of a week in San Carlos for testing, then two weeks later the same in Austin, then two weeks later back to San Carlos for the real launch, and then two weeks later the final deployment in Austin. I enjoy travel, even if the act of traveling is pretty terrible. And it has been ages since I had done anything at this frequency. It required changing around custody schedules, working around some important events, and a fair bit of calendar Tetris, but I think it will all work out.
|
||||
|
||||
I did notice that my passport expires in four days. Not essential for domestic travel, but I am glad I caught it when I did because online renewal was painless.
|
||||
|
||||
## What's Next
|
||||
|
||||
My eldest graduates from college in a month, with a shiny new degree in computer game design. Super proud of Vivian and all the work they have put in, the challenges they have overcome, and the accomplishments they have achieved. Almost to the finish line.
|
||||
|
||||
## Vibe Check
|
||||
|
||||
Baton grabbed. Sprinting.
|
||||
@@ -1,39 +0,0 @@
|
||||
---
|
||||
title: "Weeknotes: March 14–20, 2026"
|
||||
date: 2026-03-21T10:00:00-04:00
|
||||
draft: false
|
||||
tags:
|
||||
- weeknotes
|
||||
- work
|
||||
- music
|
||||
- games
|
||||
- cooking
|
||||
description: Week three at Natera, Camper Van Beethoven at the 40 Watt, Gloomhaven retirements, a brewery renn faire, avocado ice cream three times, and gearing up for on-site travel.
|
||||
lastmod: 2026-03-29T02:03:52.380Z
|
||||
---
|
||||
|
||||
*Three weeks at Natera under my belt, and it totally feels like I belong.*
|
||||
|
||||
## Shipped
|
||||
|
||||
Another full-speed week. I've moved past the bug fixes and last-minute features from the previous two weeks and started expanding into the larger ecosystem of services surrounding our application. Getting comfortable with the whole system, not just the piece I've been focused on. Three weeks in now, and I'm eager to meet everyone in person — the first on-site test run in San Carlos is in two weeks.
|
||||
|
||||
## Played
|
||||
|
||||
The weekend started at the 40 Watt for a Camper Van Beethoven show. One of the band's founders, David Lowery, went on to found Cracker and lives here in Athens, where he teaches at UGA as his day job. A friend and former co-worker, Bryan Howard, plays bass for them, and a chance encounter while grocery shopping led to him putting me on the guest list. Their album *Key Lime Pie* came out my freshman year of college and became one of those deeply affecting records that lodged itself into my identity. Seeing them live, with my friend playing bass for half the show, was sublime. I cried a little. I'll admit it.
|
||||
|
||||
Another Gloomhaven session, and we won two more scenarios in the most clutch way possible. Two of our four players retired their mercenaries, so next time we play half the party will be brand new. We started the session with our third player bringing in a new mercenary to replace one she retired last session, which means I'm now the senior party member. I've still got a while before retirement, though, and the next session might be delayed by my upcoming travel.
|
||||
|
||||
The local brewery hosted a one-day renn faire, and Carol and I went. I enjoy the brewery, but their events are hit and miss. This one turned out to be fantastic — more artisans set up than I've seen at any of their previous events. We dressed up in low-effort garb (my expectations were low) and ended up spending a good chunk of the afternoon drinking barleywine and browsing wares.
|
||||
|
||||
## Cooked
|
||||
|
||||
There is a boba place in the shopping center on our street, and our go-to item is their coffee, chocolate, and avocado smoothie. It could easily be a meal replacement, since each one contains an entire fresh avocado. For Christmas I got the house an ice cream machine with a built-in freezer — the kind where you can make ice cream any time without having to pre-freeze the container — and this week Carol had the idea of making avocado ice cream. I found a recipe that uses three whole avocados, Greek yogurt, dark chocolate, and heavy cream. We made it three times this week. It is that good.
|
||||
|
||||
## Thinking About
|
||||
|
||||
The realities of travel during the TSA shutdown the current administration has orchestrated. I'll be flying to San Carlos in two weeks, and the logistics of navigating a deliberately hobbled system add an unwelcome layer of stress to what should be straightforward.
|
||||
|
||||
## What's Next
|
||||
|
||||
Next week I transition from bug fixes and feature tweaks to preparing observability tooling for the production deployment. A big reason for us going on site is to provide quick in-person support if things go sideways, even in small ways. Being able to monitor application logs, server metrics, and performance data will be essential in helping us help them.
|
||||
|
Before Width: | Height: | Size: 4.6 MiB |
|
Before Width: | Height: | Size: 4.0 MiB |
|
Before Width: | Height: | Size: 2.6 MiB |
|
Before Width: | Height: | Size: 5.0 MiB |
|
Before Width: | Height: | Size: 3.6 MiB |
@@ -1,63 +0,0 @@
|
||||
---
|
||||
title: "Weeknotes: March 21–27, 2026"
|
||||
date: 2026-03-28T09:00:00-04:00
|
||||
draft: false
|
||||
description: "A flurry of last-minute code changes and travel preparations, mixed with meaningful local outings, before flying off into the unknown next week."
|
||||
tags:
|
||||
- weeknotes
|
||||
- work
|
||||
- music
|
||||
- games
|
||||
- cooking
|
||||
- art
|
||||
---
|
||||
|
||||
*A flurry of last-minute code changes and travel preparations, mixed with meaningful local outings, before flying off into the unknown next week.*
|
||||
|
||||
## Shipped
|
||||
|
||||
Code freeze hit at end of day Monday, which meant a morning of squeezing in quality-of-life features right up to the wire. Once the gate came down I shifted focus entirely to building out performance and logging dashboards — the kind of observability tooling that will let us actually see what's happening when we go live for testing next week. All of it was new tooling to me, which meant more of the steep learning curve I've been living on since I started, but by the end of the week I was genuinely happy with what I'd pulled together. I'm as ready as I can be for the trip to San Carlos. I'm going in with very little idea of what to expect on the ground, and I've made my peace with that.
|
||||
|
||||
## Read
|
||||
|
||||
*Service Model* keeps pulling me in. I've carved out a few chapters every night before bed even when that means staying up until 2am, because I can't not. At my current pace I'll finish it on the plane to San Francisco, which feels appropriate.
|
||||
|
||||
## Played
|
||||
|
||||
Saturday Juniper and I went to the grand opening of [The Painted Heretic](https://www.facebook.com/ThePaintedHeretic/), a new game store on our side of town. It's a good mix — tabletop miniatures, RPGs, card games — and the vibe was welcoming in that particular way that good local game stores manage. We bought a few things, entered the raffles, and left feeling like we'd found a new spot to paint minis and be among our people.
|
||||
|
||||
On the way to drop Vivian off at Georgia State after spring break, we stopped at [Level Up Games](https://www.levelupgamesco.com/) in Duluth. The place is massive, stocked like a warehouse, with seemingly every board game, RPG supplement, mini, and trading card in existence. I'd been hunting for the new Gloomhaven mercenary packs — sold out on the Cephalofair website — and Level Up had all four, at retail. More options as our party continues to retire characters and rebuild.
|
||||
|
||||
After dropping Viv off, Juniper and I made one more stop: a ska festival at [Outrun Brewing Company](https://www.outrunbrewing.com/) near Stone Mountain, which I'd never been to before. It's 80s-themed in a way that's earnest rather than gimmicky, and ska has been my first musical love since high school, so this required no convincing. I caught the second half of Left Hand Hotdog's set and then stayed for Space Mutiny — an 80s neon karate science fiction ska band, and they delivered exactly that. They were fantastic. The smash burger truck outside and a very odd but very good beer from the brewery were a bonus.
|
||||
|
||||

|
||||
|
||||
## Cooked
|
||||
|
||||
Hot pot in Decatur on the way into Atlanta with the kids. We always go to the same place even though there are at least a dozen to choose from, and it's never not worth it.
|
||||
|
||||
Outrun had a beer on tap I couldn't walk past: Echo of Harvest, a graf — half apple cider, half Belgian saison — brewed with smoked malt and fermented with fresh apples. Notes of smoke, tart apple, and a crisp mineral finish. I took a crowler home.
|
||||
|
||||
## Noticed
|
||||
|
||||
Outside Level Up, tucked into the concrete shopping center landscape, was a nesting Canada Goose pair. The male was sitting on a narrow strip of dirt between the parking lot and one of the buildings. Around the corner, up on a brick wall alongside a staircase, the female was on her nest. A deeply impractical place to lay eggs, but she'd committed. It was unusually hot for March and she was panting visibly. We walked into a nearby boba shop and asked if we could have a container of water for a goose outside, which apparently caused quite a stir — nobody had realized she was there, just a few dozen feet from their back door. They filled a to-go container, we carried it over, and the goose clearly knew what it was. She let us set it right next to her before offering a perfunctory hiss, then spent the next several minutes drinking.
|
||||
|
||||

|
||||
|
||||
## Thinking About
|
||||
|
||||
Thursday evening, while Juniper was teaching swimming lessons at the Y, I went to the [Lyndon House Arts Center](https://www.accgov.com/lyndonhouse) for a presentation by [Peter Loose](https://www.peterlooseart.com/) on the mountain dulcimers he's made and collected over the years. I've known Peter for a long time — he's a quiet fixture in the Athens arts community, the kind of person who doesn't announce himself, despite having paintings in museums around the world. I had no idea until that evening that he also makes dulcimers, in his own sculptural style, and that they're highly sought after by collectors. He showed a snake-shaped one, then a blue jay, then unveiled an enormous one shaped like a lobster.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
Unusual shapes, but they all sounded beautiful.
|
||||
|
||||
I made a dulcimer once, years ago, in the traditional teardrop shape. For the sound holes I carved the coat of arms of my SCA kingdom. I barely knew how to play it, but I learned enough to carry it around at events and earn as much mead as I could drink by singing songs and telling stories at campfires. It was cheaply made and didn't survive the years. My parents, though, bought and played two beautiful dulcimers later in their lives, and I have both of them now, cases closed, sitting on a shelf in my office. After seeing Peter and his work that evening I brought them down and showed them to Juniper. I keep meaning to re-learn enough to play them. Maybe someday they'll be instruments again instead of artifacts.
|
||||
|
||||
## What's Next
|
||||
|
||||
My first on-site visit to a Natera lab in San Carlos. I'm genuinely eager — to meet my teammates face to face, to see the scientists who will actually be using the software I've been helping build, and to get a felt sense of the environment these tools need to work in. Specs and tickets tell me the *what*. Meeting the people tells me the *why*, and that shapes the *how* in ways that are hard to get any other way.
|
||||
|
Before Width: | Height: | Size: 670 KiB |
|
Before Width: | Height: | Size: 679 KiB |
|
Before Width: | Height: | Size: 758 KiB |
|
Before Width: | Height: | Size: 512 KiB |
|
Before Width: | Height: | Size: 663 KiB |
|
Before Width: | Height: | Size: 628 KiB |
@@ -1,70 +0,0 @@
|
||||
---
|
||||
title: "Weeknotes: March 28–April 3, 2026"
|
||||
date: 2026-04-04T10:00:00-04:00
|
||||
draft: false
|
||||
description: Production deployment in San Carlos, extraordinary meals across the Peninsula, ICE at the Atlanta airport, turbulence grabs, and an unexpected museum encounter with Octavia Butler's typewriter.
|
||||
tags:
|
||||
- weeknotes
|
||||
- work
|
||||
- travel
|
||||
- cooking
|
||||
lastmod: 2026-04-13T03:39:28.373Z
|
||||
---
|
||||
|
||||
*Spent most of the week in a new city among people I'd only seen online, providing tools we created together to scientists in a histology lab who will help even more people through a time where they need as much help as science can give them. It was a good week.*
|
||||
|
||||
## Shipped
|
||||
|
||||
The production deployment of our new lab management software to the Natera histology lab in San Carlos went flawlessly. Real scientists, real equipment, real samples, full end-to-end testing. I can't claim much credit for how smoothly it went, as most of the work was done by the team in the six months before I joined. But I was there, and it worked.
|
||||
|
||||

|
||||
|
||||
Since there were no fires and no frontline support needed, I spent much of the week building out the tooling we'll need when fires do eventually come. I finished getting access to all the integrations I needed for several monitoring dashboards: real-time visibility into software performance, the scientists' workstations, the back-end servers, and the data flows into and out of systems we don't control. I also built a runbook for frontline development support, along with the carefully scoped tooling necessary for developers to look directly at live data and, in the hopefully rare cases where it's required, make repairs.
|
||||
|
||||
.")
|
||||
|
||||
I also made connections across the organization that will matter as my role expands beyond this one system into the larger oncological side of the business. This is by several orders of magnitude the largest organization I've ever worked for, and I feel lucky that even through the hiring process it was made clear that while there was a specific open role, there was a larger vision for where they wanted me to be, even if that place didn't officially exist yet. Both me and the organization are equal partners in getting there as quickly as possible.
|
||||
|
||||
## Read
|
||||
|
||||
I finished *Service Model* on the plane to California, as predicted. [Here is my full five-star review](https://books.kestrelsnest.social/user/eric/review/10740/s/tchaikovsky-keeps-finding-me). Short version: I was worried it would be a well-executed riff on a familiar premise, set it down, came back to check, and the trap was sprung. One of those reading experiences where I started carving out time I didn't have. Tchaikovsky keeps finding me.
|
||||
|
||||
Next up: [*Starter Villain*](https://books.kestrelsnest.social/book/27758/s/starter-villain) by John Scalzi. I need some fluff to cleanse my emotional palate after the last one.
|
||||
|
||||
## Cooked
|
||||
|
||||
I didn't cook a thing all week, but my team made sure I ate extraordinarily well. The best sushi I've had in years in downtown San Mateo, with wooden platters of sashimi and oysters covering the entire table. Georgian cuisine in downtown Palo Alto, which was a completely new experience for me. A seemingly endless parade of grilled Japanese items on sticks, again in San Mateo. After checking in to my hotel the first night I walked over to a little strip mall next door and had great dim sum and noodles. Even the office-provided lunches were good.
|
||||
|
||||

|
||||
|
||||
And then there were the cocktails, at a variety of places throughout the area after dinner each evening.
|
||||
|
||||

|
||||
|
||||
I don't think they could financially afford to treat me this well all the time, and I know I couldn't physically survive that treatment all the time, but I took full advantage while I had it.
|
||||
|
||||
## Noticed
|
||||
|
||||
The Atlanta airport security checkpoint was staffed almost entirely with ICE agents instead of TSA. Not just standing around observing but actively running the lines. It was disconcerting, though the process itself was still smooth enough. Many of the express lanes and optional services were unavailable. Atlanta is unusual in that nearly everyone funnels through a single massive checkpoint, but there's one out-of-the-way side passage that often gets overlooked, and that's the one I took. About fifteen minutes, all told.
|
||||
|
||||
The weather in San Carlos was wonderful. A little chilly, a misty rain now and again, but perfect for walking around the neighborhoods we chose for dinner each evening and for strolling through the coffee shops we stopped at on the way in each morning. I got to wear the gorgeous knit cowl Carol made for me everywhere, and I love showing off that beautiful artwork.
|
||||
|
||||
The flight was five hours each way. I took an aisle seat because it's pretty much the only space my frame fits in, with the trade-off being constant bumps from people and the occasional cart. On the flight home, though, we had about three straight hours of turbulence, and despite the stay-seated lights being on there was a constant stream of people heading to the bathrooms. Many of them grabbed onto me for support as they walked past. One woman grabbed my head. Next trip, I'm choosing a window seat. Curling up in a ball to fit for five hours will still beat that.
|
||||
|
||||
While waiting for my flight home at SFO, I stumbled into a small exhibit at the SFO Museum on "Women of Afrofuturism." Having just finished a novel about robots navigating the wreckage of human civilization and about to start a Scalzi, finding Octavia Butler's typewriter and books displayed alongside Nettrice Gaskins' portraits felt like a pointed reminder about which shoulders this genre stands on.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## Thinking About
|
||||
|
||||
Remote work. I've been working 100% remotely for over a decade, coming into Infinity Interactive when they'd already been fully remote for more than a decade themselves. It was deeply part of the company culture, with evolved systems that kept us working as effectively as if we'd been in one place. I'd argue even more so. Once a year we'd spend a long weekend together in person, but otherwise it was all remote, all the time.
|
||||
|
||||
I watched a few new hires bounce off remote work over the years. Some were solo developers who couldn't adapt to working in teams at all. Some were people new to remote work who had difficulty with the separation. I took to it naturally, and I don't think I'll ever be able to adapt back to office life.
|
||||
|
||||
That said, I loved the opportunity to work alongside my team in person, even for just four days. To a person they are personable and skilled developers, and I feel lucky to be among them. The planned travel over the next two months will be intense: two trips to San Carlos and at least two trips to Austin. But I'm looking forward to it. Austin will become a sort of home office for me, with much of the larger engineering organization in the area, and I'm planning on being in this company for the long haul. Austin as my home away from home sounds just fine.
|
||||
|
||||
## What's Next
|
||||
|
||||
My first Natera trip to Austin is in two weeks. Vivian's college graduation is closing in fast. And the Georgia Renaissance Festival begins its spring season next week, so I'll try to make it out there at least once.
|
||||
@@ -1,48 +0,0 @@
|
||||
---
|
||||
title: "Weeknotes: April 4–10, 2026"
|
||||
date: 2026-04-11T09:00:00-04:00
|
||||
draft: false
|
||||
description: A breather week recovering from San Carlos and gearing up for Austin, Juniper's spring break, and three days in Asheville to see what a year of post-Helene recovery looks like in the River Arts District.
|
||||
tags:
|
||||
- weeknotes
|
||||
- travel
|
||||
- family
|
||||
---
|
||||
|
||||
*A breather week between two work trips, slow-walked around Juniper's spring break, with three days in Asheville to see what a year of recovery looks like.*
|
||||
|
||||
## Shipped
|
||||
|
||||
Not much, and that was the point. Juniper's spring break lined up with an exhausted post-San Carlos me, so I took one workday off entirely and slow-walked the rest. Long lunches, catching up on appointments, the kind of week that exists mostly to make the next week possible. Next week I'm off to Austin doing essentially the same kind of work we did in San Carlos — UI improvements, bug fixes, small things to have something to show off when we get there. I did just enough this week to make sure I'd have something to show.
|
||||
|
||||
## Read
|
||||
|
||||
Started [*Starter Villain*](https://books.kestrelsnest.social/book/27758/s/starter-villain) by John Scalzi. Just enough pages in to know it's going to be a fun ride. Exactly the palate cleanser I was looking for after Tchaikovsky.
|
||||
|
||||
## Cooked
|
||||
|
||||
We didn't eat anything fancy in Asheville, but we ate well. A tasty Indian street food place downtown, great barbecue on the way out of town, and one morning we stopped at Vortex Doughnuts, an Asheville staple, for delicious doughnuts and coffee. That last one soured a few days later when news broke that the owners had shut the place down abruptly without paying their employees.
|
||||
|
||||
## Noticed
|
||||
|
||||
Spring has sprung. It's been years since I had a garden, much less a farm, but I still have to fight off the urge to drop everything I'm doing and play in the dirt this time of year. Maybe next year the time will be right to revamp the little bed we have, or better yet, finally put in the raised beds we've talked about since buying the place.
|
||||
|
||||
The Artemis 2 moon mission launched last week while I was sitting in a conference room in San Carlos. Everyone there was so focused on our own mission that my boss didn't even know there was a moon mission going on. I'm a big believer in a future where humanity expands cooperatively beyond our planet, and even though this is a small step in that direction, it's exciting all the same.
|
||||
|
||||
## Thinking About
|
||||
|
||||
Impermanence, adaptation, and determination.
|
||||
|
||||
Saturday we drove the two and a half hours up to Asheville for a three-day mini-vacation — a cheap hotel room downtown and three days of just exploring. It was our first time back since Hurricane Helene, and Juniper hadn't really seen the town from the perspective of a young adult before. Some of our most beloved places were destroyed in the storm and the aftermath. The River Arts District is one of my favorite places anywhere, and it was devastated. A year later there are still collapsed buildings, vehicles half-emerged from mud, all kinds of remnants and evidence of what happened. Sobering to walk through.
|
||||
|
||||
But it was also wonderful to see the recovery work. Artists who, if not fully recovered, have at least been able to dig out their studios, rebuild, recover artwork they'd made and clean it up. The process has begun. Among the ruins were artisans and craftspeople still creating, often using the destruction itself as material and inspiration.
|
||||
|
||||
I'm not a frequent visitor to Asheville by any means, but there's a deep cultural connection between Athens and Asheville, and many people I know well split their time between the two. There's something about the people and the place that amplifies the creative work produced there. Seeing so much of it destroyed, and coming back a year later to see still so much destruction, was a lot for my soul to take in. The things we love, the things we create, will inevitably get destroyed. Seeing the perseverance of the people who had to witness that destruction firsthand is inspiring.
|
||||
|
||||
## What's Next
|
||||
|
||||
My first trip to the Natera offices in Austin. Looking forward to meeting more of the team in person and seeing what a different corner of this organization feels like.
|
||||
|
||||
## Vibe Check
|
||||
|
||||
A breather of a week, recovering from California and gearing up for Texas, while enjoying spring break and the small luxury of nobody having to get up early for school.
|
||||
|
Before Width: | Height: | Size: 718 KiB |
|
Before Width: | Height: | Size: 526 KiB |
|
Before Width: | Height: | Size: 995 KiB |
@@ -1,74 +0,0 @@
|
||||
---
|
||||
title: "Weeknotes: April 11–17, 2026"
|
||||
date: 2026-04-18T09:00:00-04:00
|
||||
draft: false
|
||||
description: A week in Austin where lab testing turned into team building and tooling work, leading my first steering committee meeting, my first Michelin-starred meal at a barbecue counter, and discovering that grackles run that town.
|
||||
tags:
|
||||
- weeknotes
|
||||
- work
|
||||
- travel
|
||||
- cooking
|
||||
lastmod: 2026-04-27T05:37:06.017Z
|
||||
---
|
||||
|
||||
*A week in Austin that turned into something different than planned, my first time leading a steering committee, and discovering that grackles run that town.*
|
||||
|
||||
## Shipped
|
||||
|
||||
I spent most of the week in Austin for work. What had been originally scheduled as end-to-end testing of our new software turned into training and on-site team building when the lab wasn't quite ready for full testing yet. So I spent my time improving our tooling, meeting folks in the organization who are based in Austin, and getting a feel for how the place operates. The deployment will be rescheduled, but I took the opportunity to lay the groundwork to make the Austin office my "home base." There are plenty of personal reasons to spend time in Austin too, so I'm looking forward to a regular cadence of trips where I can mix work and pleasure.
|
||||
|
||||

|
||||
|
||||
The new software my team is launching sits on top of a platform written entirely in-house — a collection of services that can be connected together to manage data flow, validation, integrations with other systems, and so much more. Many hands have had a part in building it, including familiar faces and dear friends from previous projects I was on. I may be new to the organization, but much of it feels deeply familiar thanks to patterns brought over from those other projects. Our team happens to be the first to launch an application on top of the platform, but others are following close behind, so it has to mature quickly. One of my responsibilities is co-chairing a steering committee alongside the fellow who started the platform work over a year ago. It's daunting, with so much to come up to speed on, but he and everyone else on the committee has been very welcoming. I led my first meeting this week, and besides talking so long that the only other speaker on the agenda couldn't present, it went well. Wasn't entirely my fault — folks had asked me lots of questions ahead of time that I wanted to make sure I covered — but I'll have to get used to running meetings on a timetable again. It's been a while.
|
||||
|
||||
## Read
|
||||
|
||||
Got a little further into John Scalzi's [*Starter Villain*](https://books.kestrelsnest.social/book/27758/s/starter-villain), but didn't really have the time to read more than a few chapters..
|
||||
|
||||
Would you be surprised if I said I'm still reading so much documentation? It hasn't been enough, so I've found myself *writing* a ton of it too. That helps me learn and build up the mental model of what's going on across systems.
|
||||
|
||||
## Played
|
||||
|
||||
Had another fun Gloomhaven session, with two new mercenaries joining the party thanks to two retirements last time. It's such a clever way to keep us collectively figuring out new strategies against foes that might otherwise feel like more of the same. I feel like I've reached the max of what I can do with my mercenary, but it'll be a couple more sessions at least before I meet my retirement goal. My goal, randomly drawn when I started this character, is to "die" a certain number of times during scenarios. So I'm having fun wringing every last bit of power out of him while protecting the new characters and trying to exhaust right before reaching the goal.
|
||||
|
||||
My partner and I had a rare outing to the movie theater to see *Project Hail Mary*. I'd read the book and loved it ([super short five star review](https://books.kestrelsnest.social/user/eric/review/8633/s/better-than-the-martian-and-i-loved-the-martian#anchor-8633)), and my partner hadn't yet but was eager to watch it. Neither of us were disappointed.
|
||||
|
||||
## Cooked
|
||||
|
||||
Team building in Austin meant several group dinners. They were quite different from the California dinners, but still wonderful. I even ate at my very first Michelin-starred restaurant, Leroy and Lewis, a counter-service barbecue joint. I have no regrets that my first Michelin experience wasn't at a white-tablecloth fine dining place.
|
||||
|
||||

|
||||
|
||||
My teammates were spread across several hotels, but three of us stayed together downtown and met up each morning to walk to a different coffee place. We're each coffee aficionados in our own ways, and it was fun to try out these spots and compare notes. My favorite was Desnudo, run out of a tiny camper trailer at the edge of a city park.
|
||||
|
||||

|
||||
|
||||
My first night I was on my own and just went across the street to Velvet Taco. It's a chain but not one I'd been to before. Every week they have a different "weird" taco, and this week's happened to be a beef bulgogi taco. My favorite sandwich in Athens is a beef bulgogi cheesesteak ([Random Recipe Project video](https://youtube.com/shorts/BSJhhrzcAxY?si=JxBsgB2_nelj2z3w)), so I'm rather fond of beef bulgogi showing up in unusual places. The taco was excellent.
|
||||
|
||||
On the way to the Atlanta airport I stopped at Xi'an Gourmet House, a spot in an Asian food court that's purported to have the best biang biang noodles in Atlanta. I've written about biang biang here in recent months after [becoming somewhat obsessed reading *Automatic Noodle*](https://books.kestrelsnest.social/user/eric/review/10675/s/love#anchor-10675), and I've made them several times at home, but this was my first time having them at a real noodle shop. Their toppings were fantastic and I learned a few things, but honestly, I think my noodles were at least as good as theirs. I think that's a testament to the simplicity of the dish more than me being some sort of noodle prodigy, but it felt good all the same.
|
||||
|
||||

|
||||
|
||||
## Noticed
|
||||
|
||||
The weather was perfect for walking around Austin. Not too hot, a little drizzly, and just pleasant. The office sits in an un-walkable office park, so I was happy to have traded a slightly longer commute for a room downtown.
|
||||
|
||||
Walking around downtown also meant stumbling into Austin's public art at every turn. This rainbow-painted horse and rider, with reins and mane made from tangles of colored wire, was parked on a sidewalk just down the block from my hotel.
|
||||
|
||||

|
||||
|
||||
So many grackles. We get a few in our backyard, and I love when their angry-looking faces show up in my bird feeder's camera. There aren't enough of them at home to be a pest or to chase away the other birds, so they're a fun novelty. In Austin, at least this time of year, they were far and away the dominant bird.
|
||||
|
||||
## Thinking About
|
||||
|
||||
Even though the Austin roll-out is delayed, the San Carlos launch is proceeding, and barring any no-go calls from further up the chain, we'll be heading back there in two weeks. The software is in great shape, so I'll be spending more time on documentation and tooling around our support effort. For the first month or so, our team will be responsible for direct user support. For the first week, we'll be on-site, working in shifts 24 hours a day to provide that support. It'll be an altogether different experience than our last trip there, potentially *much* more stressful. The better I can make our tooling and procedures before then, the better off we'll all be.
|
||||
|
||||
## What's Next
|
||||
|
||||
Home for a week before flying out again. It's an untenable schedule, but luckily not one I have to sustain for much longer.
|
||||
|
||||
Vivian finishes college in two short weeks. There's no graduation ceremony to attend, so we'll have to make our own plan to commence the next step in their journey.
|
||||
|
||||
## Vibe Check
|
||||
|
||||
Time in Austin really hammered home how different two labs can be, even when they do the same thing and use the same software, and how much thought we have to put into usability, flexibility, and support.
|
||||
|
Before Width: | Height: | Size: 567 KiB |
|
Before Width: | Height: | Size: 388 KiB |
@@ -1,43 +0,0 @@
|
||||
---
|
||||
title: "Weeknotes: April 18–24, 2026"
|
||||
date: 2026-04-25T10:00:00-04:00
|
||||
draft: false
|
||||
description: The calm before the storm — a week of writing documentation for adversarial gatekeepers ahead of a high-stakes launch, sixty deviled eggs from Juniper, and Korean fried fusion experiments in the kitchen.
|
||||
tags:
|
||||
- weeknotes
|
||||
- work
|
||||
- cooking
|
||||
- family
|
||||
---
|
||||
|
||||
*Taking a breather and trying to relax — next week will be either triumphant or a world of hurt, and exhausting either way.*
|
||||
|
||||
This was the calm before the storm. Except before we could even get to the storm, we had to make it through a gauntlet of gatekeepers.
|
||||
|
||||
We've built a whole new software platform to replace a production system that is firmly entrenched, FDA-certified, and critically important to a billion-dollar company. No shortage of people needed to personally sign off on our launch, some of them quite adversarial and not without reason. Those approvals kept coming in right up to the hours before our target date. Our team's managers fought those battles, but they needed documentation tailored to each gatekeeper, and producing that documentation is what I spent most of my week doing. As of right now, we are still go for launch.
|
||||
|
||||
---
|
||||
|
||||
### Read
|
||||
|
||||
About a third of the way through *Starter Villain*. The setup is nearly complete and it just keeps getting more charmingly ridiculous as it goes. I'm looking forward to seeing what Scalzi does with it.
|
||||
|
||||
### Played
|
||||
|
||||
Not much. I opened Starfield for the first time in ages to poke at all the features and content Bethesda has shipped since I last played, but I didn't have time to really dig in.
|
||||
|
||||
### Cooked
|
||||
|
||||
Juniper's swim team had their year-end banquet, and she made sixty deviled eggs entirely by herself. After some quality assurance "sampling," she still had nearly four dozen to bring.
|
||||
|
||||
I made a batch of Korean fried chicken and had extra batter, which led to some experiments. Korean fried deviled eggs? Fantastic. Korean fried neeps and tatties? Fusion fritters made in heaven. I now have to resist the urge to dunk everything in my refrigerator into that tempura-and-potato-starch batter and drop it into hot oil.
|
||||
|
||||
### Thinking About
|
||||
|
||||
Next week. Overnight support shifts, takeout eaten alone instead of big team meals, high-visibility successes or failures with equally high stakes. I've been in this position before, but never quite at this scale.
|
||||
|
||||
### What's Next
|
||||
|
||||
For the flight to San Francisco and back I got a window seat. I'll be curled up against the bulkhead, which means I won't be constantly jostled and grabbed at by aisle walkers — and I'll get to see the sights.
|
||||
|
||||
If the launch goes well, I'll be writing next week's weeknotes from a place of relief. If it doesn't, I'll be writing them from a place of triage. Either way, I'll be writing them.
|
||||
@@ -1,62 +0,0 @@
|
||||
---
|
||||
title: "Weeknotes: April 25–May 1, 2026"
|
||||
date: 2026-05-02T10:00:00-04:00
|
||||
draft: false
|
||||
description: A boring launch is the best kind of launch — the San Carlos platform went live with quality-of-life issues instead of fires, a 3 a.m. shift with the Director, and a pilgrimage to Apple Park to honor the kid with the cassette tapes.
|
||||
tags:
|
||||
- weeknotes
|
||||
- work
|
||||
- travel
|
||||
---
|
||||
|
||||
*Relief. Quiet pride. A team that pulled off something genuinely hard, and a launch boring enough to celebrate.*
|
||||
|
||||
We launched. And it was, mercifully, kind of boring.
|
||||
|
||||
Trust me when I say boring is the best possible outcome a software launch can have. We got the final go-ahead about half an hour before our planned cutoff. When the time came we threw a switch, and that was that. The new platform is live in the San Carlos lab.
|
||||
|
||||
There were issues, of course, but they were all quality-of-life things. This thing could be logged better. This metric could give us more insight. This print feature could be worded more clearly. That action is going to happen more often here at the beginning, so we should streamline it. Every one of them was a chance to practice our hot-fix process and get a patch out quickly, not a fire we had to fight. Work never stopped. Nobody panicked.
|
||||
|
||||
We provided twenty-four-hour in-person coverage in the lab, working in eight-hour shifts and taking turns on the overnight slot. My shift was as uneventful as the rest, and I got to share it with our Director, my boss's boss, the person between us and the company executives. Being in the trenches at three in the morning with the person who most directly controls this next stage of my career (besides me, of course) was a gift. You can't buy that kind of context.
|
||||
|
||||
It was a long week and a tiring one, but also a cause for celebration. We were in just one lab, in just one workflow, but the team pioneered a whole new way of writing and deploying software inside a massive company. The vast majority of this work happened before I ever arrived. I've been here two months. The launch validated a whole pipeline of work still to come and put real pressure on a status quo that protects billions of dollars of business. I'm riding on my team's coattails, no question. I also know I applied every bit of my skills and experience to the work that needed doing in these last couple of months to help get us across the finish line. It's exciting and a little scary, and it cements that I made the right decision coming here.
|
||||
|
||||
---
|
||||
|
||||
### Read
|
||||
|
||||
So much Datadog documentation. I had basic metrics hooked up already, but seeing with my own eyes what real production users were doing gave me all sorts of ideas for improving observability. A month ago Datadog was brand new to me. I'm still not a Double-D expert, but I'm getting there as quickly as I can.
|
||||
|
||||
I read more of *Starter Villain* on the plane, but honestly it was hard to focus on fiction this week. I'm about halfway through and still loving it.
|
||||
|
||||
### Played
|
||||
|
||||
We got in a great Gloomhaven session before I flew out. There's a lot of upcoming travel for folks in my group, so it may be a month or more before we get back to it.
|
||||
|
||||
### Cooked
|
||||
|
||||
No time for cooking, but we did have one great group meal the night before launch. Dry ramen, which I'd never had before. The noodles and toppings are served separately from the broth, and you dunk each individual bite into the broth as you eat it. Making it through the meal was a laborious process and absolutely worth every minute.
|
||||
|
||||
### Noticed
|
||||
|
||||
Monday was a slow workday. Most of my team was still traveling during the day ahead of the evening's launch. They didn't have as far to come as I did, so I'd flown up on Sunday. On top of that, the building holding our lab had a planned power outage for most of the day, so we weren't allowed to work there even if we'd wanted to.
|
||||
|
||||
I decided to go see the place responsible for my love of computers: Apple, Inc. headquarters. I was in San Carlos and Apple is in Cupertino, about twenty miles south down the peninsula. Despite a sore and swollen knee from being curled up against the bulkhead for five hours the day before, I made my way from the hotel to the commuter rail to a bus to the Apple Park Visitor Center.
|
||||
|
||||
I was eager to see The Ring, the beautiful circular building that was Steve Jobs's final project, with my own eyes. And in that I was disappointed, but in a very interesting way. The visitor center is directly across the street and there's a rooftop observation deck, but even from up there you can barely catch a few little glimpses of glass and steel through the treetops. The campus is essentially surrounded by forest and clever landscape grading, so that even as I later walked a couple of miles around the building — at times less than a hundred feet from it — I could never actually see it. I'd never seen that aspect of the campus described before, and it turns out to be my favorite form of architecture: modern efficiency, sleek design, and wild nature all intertwined.
|
||||
|
||||
Back at the visitor center they had a scale model of the campus showing all the buildings, above ground and below, paired with an impressive AR app running on iPads you could borrow from the information desk. You could expand the engineering layer by layer and see all the thoughtful work that went into it. I got lunch at the cafe and pulled out my laptop at a table while an enthusiastic man gave a class at the next table over on how to make art on an iPad. I picked up a t-shirt featuring the old six-color logo, only available there at the visitor center.
|
||||
|
||||
Around 1982, the school where my dad worked had a single Apple ][+ computer, and he was allowed to bring it home when school was out for the summer. I was in sixth grade in a poor rural area, and that computer was my gateway to the world. There was no internet, of course, but my mom found disk swaps, I bought magazines, I recorded software onto cassettes in the middle of the night off AM radio. Over time the ][+ became a ][e and then the portable ][c. When my family went on road trips to visit relatives, I'd bring the little computer and a small CRT monitor along and spend the long hours typing in code from the pages of magazines. It's no exaggeration to say those years with those early computers put me on the path I've turned into a career. I've never had a computer class in my life, but I know how to figure out what I need to do to make a computer do what I want, and it all goes back to those days.
|
||||
|
||||
Standing on that observation deck looking out at trees, knowing the building was hiding right behind them, felt like exactly the right way to honor where I started. The kid with the cassette tapes and the magazine listings didn't grow up to work for Apple, but he did grow up to be the kind of person who appreciates a building that knows how to get out of the forest's way.
|
||||
|
||||
### Thinking About
|
||||
|
||||
The launch was an unqualified success, but it's no time to rest on our laurels. Our team has to keep pushing, first to the other lab in Austin, and then into the next parts of the overall workflow. For me personally, I need to press on and assert myself into the even bigger picture. I want to be the principal software engineer overseeing the growing oncology side of the business, and I can clearly see how to get there from here.
|
||||
|
||||
### What's Next
|
||||
|
||||
Man or Astro-man? is playing at the 40 Watt next weekend, headlining the first day of a music festival celebrating one of our long-time local record labels. They're my all-time favorite band to see live and I cannot wait. It's a rare treat to catch them these days.
|
||||
|
||||
After a week of three a.m. shifts and laboratory fluorescents, an Athens club show feels like the perfect way to come back down to earth.
|
||||
|
Before Width: | Height: | Size: 358 KiB |
|
Before Width: | Height: | Size: 332 KiB |
|
Before Width: | Height: | Size: 562 KiB |
|
Before Width: | Height: | Size: 495 KiB |
@@ -1,45 +0,0 @@
|
||||
---
|
||||
title: "Weeknotes: May 2–8, 2026"
|
||||
date: 2026-05-09T10:00:00-04:00
|
||||
draft: false
|
||||
description: Coming down from launch week, automating the release process, and a near-midnight Man or Astro-man? show that may have rewired my kid's brain.
|
||||
tags:
|
||||
- weeknotes
|
||||
- work
|
||||
- music
|
||||
- family
|
||||
---
|
||||
|
||||
*A quiet week of recovery and vigilance after launch, with two bright spots: medieval cosplay at a craft fair and a midnight show that I think genuinely rewired my kid's brain.*
|
||||
|
||||
Launch week is over, and this week was mostly about coming down from it. The round-the-clock in-person shifts ended once we got back off-site, but we're still rotating through 24-hour support, answering user questions, investigating anything that looks odd, and generally staying close to the system while it settles in. We've got PagerDuty wired up to notify us of problems and wake us up overnight if it comes to that. So far it hasn't come to that. The issues keep being minor and keep originating outside our own code, in things like single sign-on and the machinery of talking to printers.
|
||||
|
||||
The work I've actually been sinking my teeth into is the release process. I want to automate it end to end. Releasing software should be boring, whether it's a scheduled version bump or an emergency hotfix, and the way you get there is by building a rigid process with gates at every step so each one happens correctly and in the right order. In a regulated environment like ours, with scientific and governmental requirements layered on top of each other, a documented and auditable release process isn't a nice-to-have. Automation is how you make that documentation real instead of aspirational.
|
||||
|
||||
The rest of the week happened at home. My youngest had a rough year in high school, and we spent most of our waking hours trying to claw back a backlog of assignments and tests before the year runs out. We worked through the weekend and then every evening after that, and we made a real dent. It may turn out to be too little too late, but we're doing everything we can to get her to the finish line and salvage what's salvageable. That's where most of the energy went.
|
||||
|
||||
We did step away twice.
|
||||
|
||||
Saturday was the Indie South Spring Spectacular, the big annual outdoor art and craft market that pulls makers in from all over the region. Juniper and I dressed up in vaguely medieval garb for no reason other than the weather was beautiful and it sounded like fun, and we spent the afternoon wandering the stalls and looking at everything.
|
||||
|
||||
---
|
||||
|
||||
Thursday was the one that mattered. It was opening night of a three-day festival celebrating the 30th anniversary of Kindercore Records, one of Athens' own homegrown labels. The whole weekend was stacked with great bands, but the first night was headlined by Man or Astro-man?, who are far and away my favorite band to see live, and who I almost never get to see anymore. I took Juniper so she could see them for the first time, even though it was a school night and the band wasn't going on until nearly midnight.
|
||||
|
||||

|
||||
|
||||
It was, I'm fairly sure, a life-changing show for her. Their stage presence is incredible on its own, but what gets me is the creative whimsy they bring to everything, their personas, their props, the instruments, the music itself. There's an energy and a drive to it that I've always found genuinely inspiring, and I had a feeling she'd feel the same way. We were front and center, so she got the full experience.
|
||||
|
||||

|
||||
|
||||
At one point Coco, the band's frontman insofar as they have one, ran through the venue in his trademark 70s TV-set helmet, came back up on stage, and put it on Juniper's head. She wore it for the rest of the show.
|
||||
|
||||

|
||||
|
||||
Then a surprise guest came out for three songs, wearing his own TV helmet: R.E.M.'s Peter Buck. I could not possibly have predicted that.
|
||||
|
||||

|
||||
|
||||
It was an amazing night, and one I know Juniper and I will both carry with us for a long time.
|
||||
|
||||
Other than that, it was a quiet week, recovering from the hustle and bustle of the one before and building back up the energy for the next push.
|
||||
|
Before Width: | Height: | Size: 520 KiB |
|
Before Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 921 KiB |
|
Before Width: | Height: | Size: 1010 KiB |
|
Before Width: | Height: | Size: 336 KiB |
@@ -1,67 +0,0 @@
|
||||
---
|
||||
title: Tones in the Dark
|
||||
date: 2026-05-24T10:00:00-04:00
|
||||
draft: false
|
||||
description: A poor kid who learned to program off software broadcast over AM radio spends a workday on the grounds of Apple Park, the company that made the machine that made him.
|
||||
tags:
|
||||
- personal
|
||||
- computing history
|
||||
- apple
|
||||
lastmod: 2026-05-24T19:37:30.208Z
|
||||
---
|
||||
|
||||
In the late 1970s my parents had friends we'd visit for dinner now and then. I've lost their names and how the families knew each other, all of it, but I remember their house was full of books, and while the adults talked I'd sit and read, as happy as a kid could be. We moved from Indiana to Missouri in 1979 and saw them only once or twice after that.
|
||||
|
||||
The last time we were ever at their place, the man took us out to his barn to show us a computer he had built. It was enormous, a wall of lights and tape reels and panels that looked like the bridge computer from the original Star Trek. He had one program loaded that he'd been playing with, a maze generator. He'd set some parameters, and I'm fairly sure I remember actual flip switches for it, and the machine would print a maze to a built-in continuous-feed dot matrix printer, running across as many pages as he'd configured. I was fascinated. I went home with a thick stack of generated mazes to solve.
|
||||
|
||||
That was the first computer I ever saw. It set the scene for everything that followed.
|
||||
|
||||
---
|
||||
|
||||
A few years later, the first computer I ever *used* belonged to a school.
|
||||
|
||||
Around 1982, the school where my dad worked owned a single Apple ][+, and whenever it wasn't needed in the classroom he was allowed to bring it home. Summers, long weekends, holiday breaks, any stretch when school was out. I was in sixth grade, living in a poor rural area on the kind of 1970s homestead where you grew much of what you ate and fixed what broke. I was already amazed by how small it was. The only computer I'd ever seen before was that wall of lights and tape out in the barn, and here was one that sat on a desk and came home in the car.
|
||||
|
||||
A computer was a rare thing to have out in the country, but it didn't land in unprepared soil. My mom loved science fiction and fantasy, and she raised me on it. I grew up on Tolkien, on Star Trek, on Doctor Who. The future was already a place I spent a lot of time imagining, so a machine that felt like a piece of it arriving in our little house was thrilling rather than strange, and it was thrilling for both of us. She was as taken with it as I was.
|
||||
|
||||
There was no internet to connect it to, of course. What there was instead was a whole improvised economy of getting software onto the thing. My mom found people to swap floppy disks with. I bought computer magazines and typed their programs in line by line. Some nights I sat up recording software broadcast over AM radio onto cassette tapes, the data encoded as screeching tones, hoping the signal held long enough to capture the whole program. When my family drove to see relatives, I brought the computer and a small CRT monitor along so I could keep typing in code from magazine listings once we got there.
|
||||
|
||||
That ][+ eventually became a ][e, and then the portable ][c. I've never taken a computer class. Not one, in all the years since. What I learned instead was how to figure out what I needed to know to make the computer do what I wanted, which turns out to be the only durable skill in this line of work. Everything I've built in the forty-some years since traces back to those tones coming out of the radio in the dark.
|
||||
|
||||
---
|
||||
|
||||
We never owned a computer of our own through all those years. My dad just kept borrowing them, and I kept making the most of every stretch one was in the house. The first computer that was actually mine was a hot-rodded Apple ][e I bought as a college freshman in 1989, a thousand dollars handed to a fellow student for a machine someone had already lovingly upgraded.
|
||||
|
||||
A couple of years later I was working as a user consultant at the campus computer center, which is a dignified name for the help desk. I spent my days on Unix, on Sun workstations and dumb terminals, answering questions from people who were as new to all of it as the rest of us. That was the start of getting paid to use computers, and I've been doing some version of it ever since.
|
||||
|
||||
---
|
||||
|
||||
A few weeks ago I was in San Carlos for a production launch, and I had a slow day before it started. So I did the obvious thing. I took a commuter train and then a bus down to Cupertino to stand on the grounds of what that borrowed machine eventually became.
|
||||
|
||||
I went to see Apple Park, and specifically The Ring, the enormous circular building that was Steve Jobs's last project. I never actually saw it. As I mentioned in my weeknotes, the campus is buried so deeply in trees and clever landscaping that you can stand a hundred feet away and see nothing but oak and grass and a low fence half-swallowed by shrubs.
|
||||
|
||||

|
||||
|
||||
But the reason I made the trip in the first place wasn't architectural. It was that the company hidden behind those trees made the machine that made me. I wanted to put my feet on the ground there, the week I was helping ship software into the industry that machine helped bring into being.
|
||||
|
||||
The visitor center had a scale model of the whole campus, above ground and below, and an augmented-reality app running on borrowed iPads that let you peel the model apart layer by layer and look at the engineering underneath.
|
||||
|
||||

|
||||
|
||||
I got a coffee and sat at a table with my laptop while a man at the next table taught an enthusiastic class on how to make art on an iPad.
|
||||
|
||||

|
||||
|
||||
I bought a t-shirt with the old six-color logo, the one I remember from the side of that ][+, sold only at the visitor center and nowhere else.
|
||||
|
||||
---
|
||||
|
||||
Walking the grounds, I came across a barn. An actual barn, dark gray board-and-batten, tucked behind a fence and some tall grass near the edge of the campus. A plaque told the story. The Glendenning Barn was built around 1916 by the descendants of a Scottish family who'd been farming this land since 1851, back when the valley grew apricots and plums instead of software. The farm was sold off in the 1960s, the barn passed through Hewlett-Packard's campus and then Apple's, and when the Ring went up the barn was cataloged, taken apart, and rebuilt a little ways away. The most forward-looking company on earth kept a hundred-year-old hay barn and moved it out of the way rather than tear it down.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
A poor kid from a homestead, who learned to program off the radio and the pages of hobbyist magazines because that was the only way to get the software, grew up to spend a workday on the grounds of the company that started it all, on his way to launch something that mattered. The kid would have found that completely unbelievable. Though maybe not the barn. The first computer he ever saw lived in one of those, out in an Indiana field, a wall of lights printing mazes into the dark. He'd have understood a barn just fine.
|
||||
@@ -2,7 +2,7 @@
|
||||
title: Eric in the Past
|
||||
---
|
||||
|
||||
This page is all about what I have done. As things roll off the [now page](/now), they'll show up here. It was last updated on February 28, 2026.
|
||||
This page is all about what I have done. As things roll off the [now page](/now), they'll show up here. It was last updated on December 25, 2025.
|
||||
|
||||
## What I finished building
|
||||
|
||||
@@ -37,15 +37,10 @@ Recent reads (see my full [BookWyrm shelf](https://books.kestrelsnest.social/use
|
||||
|
||||
- All episodes of [Taskmaster][taskmaster] [on YouTube][taskmaster youtube]. Nothing has lifted my spirits quite like this show.
|
||||
|
||||
## What I finished working on
|
||||
|
||||
- **Infinity Interactive** (2013–2026) — More than ten years, starting as a developer and growing into VP of Technology. Shaped technical strategy across dozens of client engagements, built and led a talented team, and learned more about myself as both an engineer and a leader than I thought I had left to learn. Left to join Natera.
|
||||
|
||||
## Events attended
|
||||
|
||||
- **Wild Rumpus 2025** — Athens' big outdoor Halloween parade festival
|
||||
- **Inuhele 2026** (January 23–25) — Atlanta's annual Tiki Weekend. On staff.
|
||||
- **CONpossible 2026** (February 6–8) — Costuming Track Director. Theme: "Through the Faerie Ring."
|
||||
- **Inuhele** and **CONpossible** — annual Atlanta conventions where I'm on staff
|
||||
- **The B-52's Farewell Concert** (January 2023) — in Athens, where it all started
|
||||
|
||||
[taskmaster]: https://taskmaster.fandom.com/wiki/Taskmaster_Wiki
|
||||
|
||||
@@ -2,17 +2,17 @@
|
||||
title: Eric Yet To Come
|
||||
---
|
||||
|
||||
This page is all about what I am planning on doing in the not too distant future. As I get to them, they'll leave here and appear on my [now page](/now). It was last updated on May 2, 2026.
|
||||
This page is all about what I am planning on doing in the not too distant future. As I get to them, they'll leave here and appear on my [now page](/now). It was last updated on December 25, 2025.
|
||||
|
||||
## Where I will be
|
||||
|
||||
- **Athens, GA** — Man or Astro-man? at the 40 Watt next weekend, headlining the first day of a music festival celebrating a long-time local record label.
|
||||
- **Austin, TX** — More trips ahead as the Austin lab rollout begins.
|
||||
- **San Carlos, CA** — Return trips as the next workflows go live.
|
||||
- **[Inuhele](https://inuhele.com)** (January 23–25, 2026) — Atlanta's annual Tiki Weekend at the Omni Atlanta Hotel at Centennial Park. I'm on staff and it's always a blast.
|
||||
- **[CONpossible](https://www.conpossible.org)** (February 6–8, 2026) — I'm the Costuming Track Director for this annual convention at the Sonesta Gwinnett Place Atlanta. This year's theme is "Through the Faerie Ring"—magic mixed with technology should be a lot of fun.
|
||||
|
||||
## What I will be building
|
||||
|
||||
- **LocallyGrown.net features** — New features, better tools for market managers, and continued growth of the platform.
|
||||
- **Loops for YunoHost** — I'm planning on packaging [Loops](https://loops.video), an alternative TikTok-style video platform, for the YunoHost self-hosting ecosystem. Another piece in the Kestrel's Nest federation.
|
||||
- **LocallyGrown.net features** — Now that the massive Rails-to-SvelteKit migration is complete, the real work is ongoing: new features, better tools for market managers, and growing the platform that serves 70+ farmers markets.
|
||||
- **More tiny apps** — The pantry inventory app reminded me how satisfying it is to build small, focused tools that solve specific household problems. More of those are coming.
|
||||
|
||||
## What I will be making
|
||||
@@ -24,13 +24,15 @@ This page is all about what I am planning on doing in the not too distant future
|
||||
|
||||
## What I will be reading
|
||||
|
||||
- More Scalzi after *Starter Villain*, probably.
|
||||
- Currently a few chapters into *Service Model* by Adrian Tchaikovsky. After that, the stack awaits.
|
||||
|
||||
## What I will be exploring
|
||||
|
||||
- **n8n automations** — Keep noticing small friction points that could be automated away. More workflows coming.
|
||||
- **Claude Code workflows** — Finding new ways to collaborate with AI on rapid prototyping. More of that ahead.
|
||||
- **n8n automations** — The standup prep workflow opened my eyes to what's possible. I keep noticing small friction points that could be automated away.
|
||||
- **Claude Code workflows** — Finding new ways to collaborate with AI on rapid prototyping. The two-hour pantry app was an example of what's possible when you're sculpting code instead of typing it.
|
||||
|
||||
## Where my head is going
|
||||
|
||||
New job, same me. The coat stays on.
|
||||
The LocallyGrown marathon consumed everything for six months. Now I'm slowly emerging, rediscovering equilibrium, and reconnecting with the creative projects that feed my soul. The self-hosting work continues to expand Kestrel's Nest. The making and creating is resuming. The writing is happening again.
|
||||
|
||||
Forward motion, one project at a time.
|
||||
|
||||
@@ -1,8 +1 @@
|
||||
{{- with .Title -}}
|
||||
<figure>
|
||||
<img src="{{ $.Destination | safeURL }}" alt="{{ $.Text }}" />
|
||||
<figcaption>{{ . }}</figcaption>
|
||||
</figure>
|
||||
{{- else -}}
|
||||
<img src="{{ .Destination | safeURL }}" alt="{{ .Text }}" />
|
||||
{{- end -}}
|
||||
<img src="{{ .Destination | safeURL }}" alt="{{ .Text }}"{{ with .Title }} title="{{ . }}"{{ else }} title="{{ $.Text }}"{{ end }} />
|
||||
|
||||