Month: April 2025

Headquarters (Part 2)

Headquarters (Part 2)

Continuing from earlier, this post covers early adulthood, pre-kids.

Year: 2000
Machine: Custom built beige box with NewEgg parts
What I was doing: Enjoying early married life; playing Deus Ex; renting movies from Blockbuster and watching them on my computer’s DVD-ROM drive; organizing documents in that green file box (which I still have).

Year: 2001
Machine: Same beige box but with new guts
What I was doing: starting to explore high-end audio and home theater, applying to Ph.D. programs, anticipating The Fellowship of the Ring.

Years: 2002
Machine: Still the same beige box but a new “flat” monitor
What I was doing: trying to understand Topology, skipping graduate school classes to play Diablo II; anticipating The Two Towers (I still remember waiting for this trailer to download… it was was mind-blowing, despite the low quality of the day).

Year: 2003
Machine: You guessed it, a beige box, though I believe I’d upgraded it yet again
What I was doing: starting a blog on Xanga, anticipating The Return of the King (it was on this setup that I created a postcard inviting 40 of my closest friends to a private midnight screening at the Arena Grand).

Year: 2004
Machine: A second beige box filled with scraped together cast-offs from my main computer, complete with double optical drives
What I was doing: embracing my minimalist tendencies by trying to hide boxy components inside closets and running cables through the walls; ripping my entire CD collection to FLAC; preparing for our first kid.

Headquarters (Part 1)

Headquarters (Part 1)

Here begins my catalog of all the computer setups I’ve had to date (hopefully more visually appealing than this overview I wrote in 2017). Today’s installment: childhood and teens.

Years: 1983-1987
Machines: TI-99/4A
What I was doing: playing cartridge games like Parsec and Munch Man; writing BASIC programs that could test your knowledge of addition and print ASCII art.

Years: 1988-1995
Machines: Three successive Tandy computers: 1000 TL/2 (the only picture I could find from this time), a 386, and a 486
What I was doing: Writing small QuickBasic, C, and Pascal programs; memorizing powers of 2 and digits of Pi; playing Battle Chess and Where in the World is Carmen Sandiego.

Years: 1996-1997
Machines: Custom-built Pentium 2 bought from a computer-fest convention type thing
What I was doing: Discovering online stuff like a local BBS and then the Internet; learning how to assemble computers from parts (shoutout to NewEgg); optimizing my AUTOEXEC.BAT and CONFIG.SYS files so I could play Doom.

(Unfortunately I don’t have any pictures I could find of my college dorm room setups but they were suitably epic, especially junior year which had 3 full workstations and a console game station)

Years: 1998-2000
Machines: Whatever Cedarville supplied (but it was cool that they supplied desktop PCs!); a home-cooked box I cobbled together with parts scrounged from my job at The Hackery.
What I was doing: Breezing through college programming classes in C++, Java, and VisualBasic; optimizing programs that generate interesting integer sequences; playing Diablo and Age of Empires II.

Along the Same Lines

Along the Same Lines

Photographic remembrance continues to be on my mind after watching Black Mirror’s Eulogy. In that spirit, here’s a picture of me I quite like. It captures the energy that I hope I bring to conversations involving the intersection of government policy and technology. I call it “CTO Mode”:

More photos to come in the next couple of days, as I’m finally going to go back and deliver on this promise.

Echoes In Eternity

Echoes In Eternity

As I’ve gotten older, it’s become increasingly important to me to capture (usually digital) relics of what I’ve been up to. Mostly for my own benefit, but it’s a good professional habit regardless.

Five years ago today I was part of a team launching a new website and associated automated phone system helping unemployment insurance claimants at the beginning of the COVID-19 pandemic. I wish I’d done more to document our midnight release event, because it was a pivotal moment in my career. But I do have this one blurry screenshot:

This launch had a trifecta of positivity: a meaningful use case, cool technology, and (most importantly) it all actually worked! I’ve been doing this almost 25 years, and it’s rare to have all that come together. It made such an indelible memory that several of us have found ways to continue working together since.

(Obviously I didn’t get the memo about hoodies; instead opting for formalwear. No regrets on that one!)

Figuratively Speaking

Figuratively Speaking

Speaking effectively to non-technical people can be a challenge for technical folks, but it’s an essential task for all but the most mundane (read: least-effective) of roles. One mechanism that I’ve found helpful is the use of metaphor. I’m a huge fan of trying to describe complex topics by mapping them to more broadly understood concepts. Being able to come up with such mappings fluently is a powerful skill. There may be many ways to develop it, but I suspect one is cultivating a wide set of interests.

While I was writing Tuesday’s post, it occurred to me that today’s Generative AI tools are to software what today’s 3D printers are to physical objects. On one hand, it’s incredible to be able to provide a specification and have it manifested in near real-time. Printers can make a variety of solids: toys, some kinds of replacement parts, that sort of thing. GenAI can create chunks of useful code, quick user interfaces, and basic apps, like my Pinochle scoresheet. But there are limits. Can either of these tools produce high tolerance, precision parts / highly secure, performant code? Can they build complex solutions like electronics / web browsers?

A 3D printer creating a figurine

I could be wrong, but just like we’re a long ways from 3D printing an iPhone, we seem a ways away from vibe coding Microsoft Word or an entire government system of record.

Old Dog, New Tricks

Old Dog, New Tricks

Over two years ago I bought a few domains with the intent of building a tool for keeping track of card game scores. Like many of the best laid plans, I didn’t get around to doing so. Until now.

With the advent of GenAI and “vibe coding” I figured there was no longer any excuse. I spun up Lovable and started prompting. The results? Not bad. Not bad at all. With maybe a dozen prompts and half an hour, you can see the results at onlinescoresheet.net. What was most impressive for me is that I was able to simply ask the model to do Pinochle scoring, and it was able to understand what that meant and implement it without me explaining the rules.

What’s up next? I’d like to generalize the scoring system to be configurable, or at the least add explicit support for a few more game types. I’d also like to dig into the source code to evaluate quality. Should be fun!