Skip to main content
Joel Lithgow / Blog
  • 01 Work portfolio
  • 02 Blog the log
  • 03 Art artwork
  • 04 About bio
December 29, 2025
December 29, 2025

After Intelligence Microsite

After Intelligence microsite homepage showing dark minimal aesthetic

A quick prototype for CCA's upcoming AI lecture series.

California College of the Arts is hosting After Intelligence, a lecture series exploring AI through artistic, ethical, and speculative lenses.

I prototyped this microsite using Claude's frontend skills in a single afternoon session. Dark minimal aesthetic, responsive nav, custom button system, view transitions.

View the site

#ai-collaboration #rapid-prototyping #frontend
1 min read
December 26, 2025
December 26, 2025

Building a Better Pictionary for Family Game Night

Screenshot of the Pictionary game showing a hand-drawn snowman with a timer, scores, and team information

I got tired of getting out-shouted playing Netflix Pictionary, so I built my own version with typed answers, custom words, and an AI that draws.

My family loves playing Netflix's Pictionary game. We'll pull it up on the TV, pass a phone around for drawing, and spend an hour yelling guesses at the screen while someone frantically scribbles.

It's fun. But there's a problem.

The Shouting Problem

Some people are just louder than others. And when you're playing a game where the first person to shout the correct answer wins, the loud people dominate. Every. Single. Time.

I noticed I'd sometimes just... not guess. Not because I didn't know the answer, but because I couldn't compete with the speed-shouters. The people who machine-gun twenty guesses in three seconds while the rest of us are still processing the drawing.

I wasn't alone in this. I'd catch other family members going quiet too, watching instead of playing.

Looking back, I think what I wanted was to make the game more accessible. To give everyone—not just the fastest, loudest person in the room—a fair shot at guessing.

So I Built My Own

Over the winter break, I threw together a custom Pictionary game. The idea was simple: what if you could type your answers instead of shouting them?

With typed answers, you're not competing on volume. Everyone submits their guess, the system checks it, and the first correct answer wins. Quiet people can play. Introverts can play. People who need an extra second to think can play.

I added a few other features while I was at it:

  • Multiple guessing modes: Typing for fair competition, buzzing for buzzer-style gameplay, or classic shouting for when you want chaos
  • Custom word entry: Players can submit their own words, so you can add inside jokes and family-specific references
  • Team modes: 2, 3, or 4 teams, plus free-for-all
  • AI bot players: For when you need an extra person (more on this below)

The result is live at pictionary.joellithgow.com.

The AI That Draws

This is the part that got weird and fun.

I built two types of AI bots that can join the game as players. When it's their turn to draw, they actually draw—stroke by stroke, just like a human would.

One bot uses GPT-4o to generate drawings. I prompt it with a word, it returns a description of shapes (circles, rectangles, paths), and I convert those into animated strokes. It's like watching an AI think through how to represent "elephant" or "birthday party" in simple shapes.

The other bot pulls from pre-defined drawings when the AI is unavailable or slow.

Building these bots was mostly for my own entertainment during solo dev time, but they're actually useful when you have an odd number of players.

The Holiday Test

I was excited to play it with the family over the holidays. We loaded it up, everyone joined the room on their phones, and...

We hit bugs. Immediately.

Turns out I'd never actually tested it with more than one real person. Multiplayer games have this pesky requirement where you need multiple players to properly test them. Who knew.

We played for a bit, laughed at the jank, and I took notes on what was broken. Classic MVP experience: ship it, watch it break, fix it, repeat.

I've since worked out the major bugs, and I'm excited for next time we all gather. The game actually works now.

What I Learned

The best part of this project wasn't the code—it was the speed. I went from "what if I could type answers?" to a working prototype in a few days. Then from prototype to a real game over a couple weeks of evening sessions.

That's the magic of side projects. No stakeholder reviews. No sprint planning. No waiting for approvals. Just an idea, a laptop, and the freedom to build something dumb and fun for the people you love.

I'm excited to make more multiplayer games. There's something deeply satisfying about building something your friends and family actually use—even if the first session is mostly debugging in real-time while everyone watches.


If you want to try it: pictionary.joellithgow.com

Fair warning: the servers aren't heavily load-tested. But if you want to solve the shouting problem at your next game night, give it a shot.

#side-project #game-design #family #multiplayer
4 min read Continue reading →
December 1, 2025
December 2025
↗

What I've been listening to — December 2025

Picture Book (Expanded Version) — Simply Red · 3 songs Cartoon Darkness — Amyl and The Sniffers · 2 songs Polyester — Radio Free Alice · 1 song The Miraculous Hump Returns From The Moon — Sopwith Camel · 1 song Danger in Fives — Wombo · 1 song Homesongs — Adem · 1 song Blackwater Holylight — Blackwater Holylight · 1 song Moonflowers — Constant Smiles · 1 song Oracolo — Skinshape · 1 song Buffalo Springfield Again — Buffalo Springfield · 1 song Gord's Horse — Cool Ghouls · 1 song We The People — Ellen McIlwaine · 1 song How Will I Live Without a Body? — Loma · 1 song Sixteen Tons — Tennessee Ernie Ford · 1 song Sophisticated Funk — Jack McDuff · 1 song Os Afro-Sambas — Baden Powell, Quarteto Em Cy · 1 song Other Directions (Remastered and Unreleased Tracks) — Nicola Conte · 1 song Couldn't Stand The Weather (Legacy Edition) — Stevie Ray Vaughan · 1 song Peace Beyond Passion — Meshell Ndegeocello · 1 song Nautical Antiques — Pinback · 1 song Where Have I Known You Before — Return To Forever, Chick Corea · 1 song Chet Baker Reimagined — Ornithology, Ian Ewing · 1 song Finding Ways — Sebastian Rochford, Finding Ways · 1 song One — Jonathan Kreisberg · 1 song Free Ride — Dizzy Gillespie · 1 song Brunswick Top 40 Singles 1966-1975 — The Lost Generation · 1 song Black Moses — Isaac Hayes · 1 song As I Am (Expanded Edition) — Jack White, Alicia Keys · 1 song A Man For All Seasons — Insecure Men · 1 song Something Becomes You — voyeur · 1 song Blue Desert — Jack J · 1 song The Hand That I Put Down — Starcleaner Reunion · 1 song Ribbon Le Chou / Moss on my Brick Wall — Starcleaner Reunion · 1 song Pretty Darlin — Eric Relph · 1 song In The Age Of Data — Move 78 · 1 song A Plea — Flea · 1 song Spiralic — Hank · 1 song The Church With One Bell — John Martyn · 1 song Cafe Bleu — The Style Council, Tracey Thorn · 1 song The Girl In The Other Room — Diana Krall · 1 song Let's Straighten It Out — Gwen McCrae · 1 song Worrisome Heart — Melody Gardot · 1 song The Very Best of Bonnie Tyler — Bonnie Tyler · 1 song Men Amongst Mountains — The Revivalists · 1 song
#music
November 18, 2025
November 18, 2025

Catching the Wave: Arc Raiders and the Organic Spread of Gaming Moments

Reflecting on a rare gaming moment where I'm inside the wave instead of watching it pass by, and what it means to be part of something as it spreads through your community

I bought Arc Raiders on a Tuesday because I'd been itching for a dumb FPS to zone out on. Two weeks later, everyone I know is playing it. So much fun.

#gaming #arc-raiders #cultural-moments #reflection
6 min read Read the full story →
November 13, 2025
November 13, 2025

Following the Thread: From Political News to Open Source Intelligence

How reading about a leaked private chat led me down a rabbit hole into OSINT and the intersection of journalism, tech literacy, and investigative work.

I read the Politico article about the leaked Young Republicans chat and got curious: how do journalists actually do this kind of investigative work? That curiosity led me to Sofia Santos' blog on OSINT (Open Source Intelligence), and now I'm wondering if my tech literacy could be a way to contribute to this kind of accountability work someday.

Links from this collection

2 links

Private chat among young GOP club members

Politico investigation into leaked private communications, raising questions about how journalists access and verify this kind of information.

#journalism#politics#investigation

Sofia Santos - OSINT Blog

Open Source Intelligence techniques and investigative journalism. A fascinating look at how publicly available information can be used for accountability work.

#osint#journalism#investigation#tech
#osint #journalism #tech-literacy #investigation
1 min read
November 11, 2025
November 11, 2025

Return on Passion: Why ROI is the Wrong Metric for Creative Work

ROI thinking has poisoned creative career advice. Here's why Return on Passion (ROP) is the metric that actually matters for artists, designers, and makers.

I'm so tired of hearing about ROI in creative fields. Return on Investment. As if the point of going to art school, learning ceramics, or becoming a designer is to maximize how quickly you can turn your education into the biggest possible paycheck.

What if we measured creative careers by a different metric entirely? What if instead of ROI, we talked about ROP—Return on Passion, or Return on Practice?

#career #creativity #work-life-balance #opinion #design-industry
8 min read Read the full story →
November 10, 2025
November 10, 2025

Claude Code Interactive Prompts

From delightful discovery to curious about balance—all in one session

I was using Claude Code this morning and asked it to suggest a few repository names. Instead of just listing them in text, it gave me this:

Claude Code interactive prompt showing repository name options with descriptions

An interactive prompt! Right in the terminal, with numbered options, descriptions, and keyboard navigation instructions.

This is such thoughtful UX for a CLI tool. It makes the interaction feel polished and actually fun to use. Small touches like this make all the difference.

And Then It Happened Again

But here's where it gets interesting. Ten minutes later, while working on this very blog post, I told Claude to add the screenshot to the post. And instead of just doing it, Claude prompted me again:

Claude Code asking whether to include the screenshot in the blog post

Same feature, same delightful UI—but this time asking if I wanted to include the image in the post.

Wait. I just asked you to include the image. Why are you asking me if I want to include the image?

My reaction was completely different. Not "wow, this is cool!" but "this feels redundant and kind of weird."

Finding the Balance

It's fascinating how quickly a feature can go from delightful discovery to potential friction. The first time felt like a pleasant surprise. The second time felt... redundant.

And maybe that's the key difference: the first prompt was asking for new input I hadn't given. The second was asking me to confirm something I'd already explicitly requested. That's not helpful interactivity—that's friction.

This isn't a criticism—it's just an interesting UX challenge. When do you prompt for input versus making a smart default? And more importantly, when should you skip the prompt entirely because the user already told you what to do?

I don't know the answer. Maybe the first prompt (choosing repo names) deserved the interactive treatment because it's genuinely hard to auto-select from multiple good options. But the second one? If I say "add the image," maybe just... add the image.

Or maybe I just need more time with the feature to appreciate when it shows up.

(Oh, and one more thing: the "Type something" option doesn't support vim keybindings, so hitting Esc cancels the entire prompt instead of exiting insert mode. That's... particularly annoying for vim users.)

Actually, I just hit an even more frustrating issue. Or did I? I was mid-sentence in one buffer when my interactions with Claude completely stopped—not crashed, just unresponsive. Turns out there was an interactive prompt waiting in another buffer, and it was blocking all interactions everywhere until I answered it.

That's a real problem for multi-buffer workflows. But here's the thing: I can't replicate it now. Maybe it was a bug, maybe I'm misremembering. Live blogging/QAing, I guess!

Either way, it'll be interesting to see where Anthropic lands on this balance. Too few prompts and you miss chances for user input. Too many and you're breaking flow.

For now, I'm still impressed by the execution even if I'm curious about the strategy.

#claude-code #tools #discovery #cli
2 min read
November 3, 2025
November 3, 2025

Learning Faster, Not Less: How AI Helped Me Discover git add --patch

I asked Claude for help splitting a commit. What I got wasn't just a solution—it was a git feature that changed my workflow and a reminder that AI tools can accelerate learning rather than replace it.

I was staring at a file with multiple unrelated changes—some refactoring, some bug fixes. I wanted to commit them separately to keep my git history clean. But they were all in the same file.

My brain went to what felt like the only option: manually revert changes, commit, then painstakingly re-add them. Or worse, ask Claude to automate this tedious dance for me.

The Unexpected Teaching Moment

So I asked Claude: "Help me split this into two commits."

Here's what I half-expected: a series of commands to execute. Do the work for me.

Instead, Claude pointed me to something I didn't know existed:

git add --patch

It lets you interactively stage parts of a file, not just the whole thing. You review each change and decide what goes in which commit. Clean, surgical, no reverts necessary.

Using Tools to Accelerate Learning

What struck me wasn't just the git feature (though it's now muscle memory). It was the realization about how I was learning.

Claude didn't do the work for me—it pointed me to a capability that made me more capable going forward. I didn't just get a solution; I got knowledge I'll use forever.

I could have spent hours reading git documentation and maybe never stumbled on this feature. Or I could ask a question when I hit a real problem and learn about it in context, immediately applicable.

There's a narrative that AI tools make you think less, learn less, become more dependent. I get the concern. But this showed me something different: the gap between having a question and finding relevant knowledge went from hours (or never) to seconds. The understanding still had to happen. The practice still had to happen. It just happened faster and in the exact moment I needed it.

Maybe the question isn't whether using AI makes you learn less, but whether you're using it in ways that build capability or just solve immediate problems.

This built capability.


What's something you learned through AI tools that you might never have discovered otherwise?

#git #workflow #learning #ai
2 min read
November 1, 2025
November 2025
↗

What I've been listening to — November 2025

Mic City Sons — Heatmiser · 2 songs Fish — ShitKid · 2 songs Knock Knock — Smog · 1 song Sometimes I Wish We Were An Eagle — Bill Callahan · 1 song Pink — Boris · 1 song Magnolia Electric Co. (Deluxe Edition) — Songs: Ohia, Jason Molina · 1 song Yellow No. 5 - EP — Heatmiser · 1 song Era Vulgaris — Queens of the Stone Age · 1 song DYLM — Hank · 1 song Skinty Fia — Fontaines D.C. · 1 song LOTTO — They Are Gutting a Body of Water · 1 song Build a Box Then Break It — Ulrika Spacek · 1 song Late Again — Sven Wunder · 1 song Elegant Soul (Reissue) — Gene Harris & The Three Sounds · 1 song Baby Breeze (Expanded Edition) — Chet Baker · 1 song Holy Smokes — Shtëpi · 1 song I Wanna Live With You — Opus Kink · 1 song Binge — DEADLETTER · 1 song Powell Place — Kurralta Park · 1 song Flux (Deluxe Edition) — Love Spirals Downwards, Anji Lum · 1 song She got the bomb — Billylildove · 1 song Common Sense — Viagra Boys · 1 song Come And See — Gurriers · 1 song Big Swimmer — King Hannah · 1 song Call Of The Wild — Viagra Boys · 1 song Egg — Twelve Point Buck · 1 song Crisps — Getdown Services · 1 song Faster — PERSONA 749 · 1 song Loud Music for Quiet People — Twelve Point Buck · 1 song Something Soft — Mhaol · 1 song Take A Look — Irma Thomas · 1 song If You Know Me (demo) — Hudson Freeman · 1 song Beware of the Dogs — Stella Donnelly · 1 song Sunbeam Sound Machine — Sunbeam Sound Machine · 1 song The Academy — Lutalo · 1 song
#music
October 25, 2025
October 25, 2025

What does it mean to make a trail?

Starting to think about 'trail-making'...more to come...

Circular spiral pattern made with branches on the forest floor

Hillside trails carved through vegetation

Panoramic view of the landscape

#art #land-art #installation #nature
1 min read Continue reading →
October 25, 2025
October 25, 2025

He's Going the Distance: Making a Minecraft Difficulty Scaling Mod

What happens when you make a Minecraft mod where the game gets harder the farther you travel from spawn? Zombies. So many zombies. A quick dev journal about building a distance-based difficulty scaler and discovering it's secretly a co-op game.

I was coding when "The Distance" by Cake came on. He's going the distance, he's going for speed... And I thought: what if that was a Minecraft mod? What if the farther you traveled from spawn, the harder the game got? Not just a little harder. Exponentially, absurdly, ridiculously harder.

So I built it. And thanks to my previous mutualism mod experience and Claude Code, what would've taken weeks happened in a few focused sessions. The implementation touches everything—mob health, spawn rates, damage scaling—but it's all variations on a single idea: distance equals difficulty.

Then came the playtesting. A friend and I loaded up the mod, built boats, and started exploring across oceans. At first, normal Minecraft. But as we traveled farther, the game revealed its teeth. Zombies started spawning on our boats. Not near us. Not in the water. Literally materializing on the boat we were riding. We died. A lot. And we laughed the entire time.

That's when I discovered something unexpected: this isn't really a single-player mod. Solo, the difficulty curve felt punishing. With a partner? Perfect. The escalating challenge became a shared adventure instead of personal frustration. So I tuned the scaling for co-op, and the mod became something way more interesting than I originally envisioned.

#minecraft #modding #dev-journal #game-design #multiplayer #claude-code
8 min read Read the full story →
October 6, 2025
October 6, 2025

Full Circle: From Java Tutorials to Vibe Coding a Minecraft Mutualism Mod

After years away, I'm back to where I started: making Minecraft mods. This time with Claude Code, a book about ecological partnerships, and a few hours of pure creative flow.

I got into programming because of Minecraft—not through CS classes, just YouTube tutorials and learning enough to make custom blocks. After years of professional web development, I'm back where I started. And it feels awesome.

Inspired by The Call of the Honeyguide, a book about ecological partnerships, I built Symbiotic Survival—a Minecraft mod that teaches mutualism through gameplay. Honeyguide birds lead you to honey. Pollinators keep trees producing fruit. Destroy the partnership, lose the resources. You learn by watching NPCs interact with the world, not through tutorial pop-ups.

The wildest part? I went from idea to working prototype in hours using Claude Code. It even generated all the pixel art assets. And I discovered something unexpected: Claude codes games completely differently than web apps—working incrementally, leaving TODOs as creative scaffolding rather than tech debt. For rapid prototyping, this approach is actually ideal.

#minecraft #modding #dev-journal #game-design #ecology #claude-code
10 min read Read the full story →
October 1, 2025
October 2025
↗

What I've been listening to — October 2025

Three American Songs — Good Actor · 2 songs Mucho Mistrust — Fake Fruit · 2 songs Honeyglaze — Honeyglaze · 1 song is a Folk Artist — Hudson Freeman · 1 song Shapeshifter — IAN SWEET · 1 song Magnolia Electric Co. (Deluxe Edition) — Songs: Ohia, Jason Molina · 1 song What Took You So Long — Plain Blue · 1 song Adrenaline — Deftones · 1 song Vulgar Display of Power (Expanded) — Pantera · 1 song The Three — Pulsr · 1 song pg.4 a picture of three hedges/through your window — julie · 1 song The Moon Song — beabadoobee, Oscar Lang · 1 song Formless — Ora Cogan · 1 song Minnows — Marc Benno · 1 song The Road — Quiet World · 1 song Voice Of Chunk — The Lounge Lizards · 1 song The Moon Song (Music From And Inspired By The Motion Picture Her) — Karen O · 1 song Thank You Happy Birthday — Cage The Elephant · 1 song Cozy — Operelly · 1 song Revival Of A Friend — Sour Widows · 1 song Space Heavy — King Krule · 1 song The Gloss — Cola · 1 song How To Be Cool At Parties/Circe — Sex Mask · 1 song Baggy$$ — Fcukers · 1 song U Should Not Be Doing That / Facts — Amyl and The Sniffers · 1 song Mellowdramatic — A Forest Mighty Black · 1 song There Is a Well — Shallowater · 1 song SHHHHHHH! — King Krule · 1 song Mother's Milk — Red Hot Chili Peppers · 1 song Live to 388, NYC — Ulrika Spacek · 1 song Afterglow — Dot Allison · 1 song Paradise With An Ocean View — Country Joe McDonald · 1 song Other Peoples Rooms — Mark-Almond · 1 song Kung Fu Super Sounds — Roger Webb · 1 song How Insensitive — Duke Pearson · 1 song I'm Not Made of Iron — Chrissy Zebby Tembo, Ngozi Family · 1 song I, Swinger — Combustible Edison · 1 song
#music
2022 Q2 Q3 Q4
2023 Q1 Q2 Q3 Q4
2024 Q1 Q2 Q3 Q4
2025 Q1 Q2 Q3 Q4
2026 Q1 Q2 Q3

Browse

All posts 107 → Links 18 → Music 51 → Birds 28 → Dictionary 5 →

Choose Your Theme

Keyboard shortcuts available: Ctrl+T to cycle themes, Escape to close modals, Enter/Space to activate buttons
FPS: --
Memory: --
This website uses themes. Press Ctrl+T to cycle through available themes.
Some elements on this page are interactive and can be dragged around.