Joe Woods https://blog.joewoods.dev Sat, 10 Oct 2026 19:40:59 +0000 en-US hourly 1 https://blog.joewoods.dev/wp-content/uploads/2021/10/cropped-Screen-Shot-2021-10-06-at-6.50.59-PM-32x32.png Joe Woods https://blog.joewoods.dev 32 32 I don’t think LLMs are making you lazy https://blog.joewoods.dev/programming/i-dont-think-llms-are-making-you-lazy/ Sat, 10 Oct 2026 19:40:59 +0000 https://blog.joewoods.dev/?p=1356 ... I don’t think LLMs are making you lazy]]> Here’s a topic that feels like it comes up every single day: someone will ask something like:

Am I forgetting how to code? Are LLMs making me lazy?

Nope!

…At least, with some qualification:

The people that I know that are successful with using LLMs to generate code are the ones that are dictating the patterns for how that code should be generated; the shape and structure of that code. They’re intervening when the LLM inevitably generates code that is functional but takes the wrong shape for their personal taste or organizational goals that were outside of the context of the LLM. They’re refining as they go, baking in these decisions in documentation and golden samples that LLMs can use to generate “better” code in the future (at least, for their idea of better.)

Just because you’re not the one physically writing the code, doesn’t mean you should forget what good code looks like, if you already have strong taste in this area. Taste is like riding a bike: if you took a five year break from programming, I bet you wouldn’t lose the ability to skim code and see things that offend your sensibilities, or at least make you curious and want to dig in more.

I admit that I don’t remember how to reverse a binary tree, but I don’t think that’s because I use LLMs: I’ve only had this memorized approximately twice, and always for a brief amount of time to prepare myself for the ritual of solving leetcode problems to convince other people that they should pay me to write a different type code. The type of work that I do does require command of data structures and algorithms, but I think the vast majority of us are in a position where the work we do is mostly software plumbing, and we’re not solving truly difficult computer science problems, but instead solving difficult user problems by representing process and a good experience with code.

I’m still going to keep doing Advent of Code, but this isn’t what the work I do looks like anymore.

I haven’t forgotten how to use my code editor of choice; these keyboard shortcuts are burned into my memory like the subconscious actions of driving a car. But I now only open my editor when something has gone wrong, which is something to be avoided. I understand that some folks might view the time they spent on the tools that now might, uncharitably, feel obsolete, but I don’t think that’s wasted effort; you learned the skills that you can use to mentor junior engineers and set up the guardrails that will make LLM-generated code closer to the target.

If you personally feel like you’re losing skills because of the way you use LLMs, interrogate that:

  1. Is it because you’re not guiding the LLMs as much as you could be, accepting code when it doesn’t meet your standards for the code you like?
  2. Is it because you’ve stopped talking to people about the things you like about code at all?
  3. Is it because, earlier in your career, you had to do a lot of learning to stay current, and you’re no longer investing that time?

For each of these, are they problems you should solve, or changes you should learn to accept?

Either answer is probably fine. For me, though, I’m going to go out of my way to make sure I’m solving any problems that come up for all three.

]]>
September 2026 https://blog.joewoods.dev/updates/september-2026/ Thu, 01 Oct 2026 00:51:21 +0000 https://blog.joewoods.dev/?p=1342 ... September 2026]]> Whew, what a month!

It’s been a very busy one for me. Work has honestly taken up a lot of my mental capacity, so not as many outside-of-work projects to report this month.

Mobius won the rvatech/ “Team Excellence” award this year, which is an honor; it’s great working with a dedicated team of folks who are all pulling in the same direction.

Outside of that, I’m delighted that the weather is turning colder; my walks into the office have been great, as well as evening walks with the family as well.

projects

Not as busy of a month as last month, but there were a fair number of updates to my tooling. This month, I completed 363 tasks with Conveyor; compare 317 for its first month. (Those stats are padded a bit due to me adding more recurring tasks.)

A lot of that work was to improve Conveyor — my bespoke “harness” tool for my projects. Some notable improvements include:

  • Incorporating demo recordings directly into the app
  • Sequential tasks; marking tasks as blocked by others, and automatically picking them up when the blocker is shipped
  • A “pause immediately” button for when I need to change networks

…and many more small tweaks and improvements.

Polish, which is a similar app for working through our work queues at work, got a large number of improvements too: pulling in Sentry and PostHog artifacts, a remote view for my phone, tracking token usage and carbon offset purchases, a demo mode, time tracking, more spec management, more visualizations and management tools, and even more smaller improvements.

Also this month, I created two new tech calendars:

…mostly for work-related reasons.

Some improvements to other existing projects:

  • Hyperspace Notecards got some more card management tooling, and I’ve also added a “time writing” goal in addition to the extant word count goal,
  • excitable.dev (“Joecial media”) got some syndication improvements and preview images

I hacked on a few new projects as well:

  • A version 2.0 for my newsletter tooling, to pull all of my newsletters onto one platform and to stop using other services,
  • A personal learning tool that I just didn’t take the time to use more and iterate on.

That’s all on that front; there were a few more false starts for projects that I won’t get into here.

music

This month, M and I went to Iron Blossom:

SKORTS, with a guitarist leaning over the basist
Phantogram, shrouded in fog, with Sarah doing a cool kick
LCD Soundsystem, below their disco ball, with James kind of gesturing toward Nancy
Angine de Poitrine, with inflatable dice flying above the crowd

It was a fun time; it was great to see LCD Soundsystem again, as well as some new favorites, like SKORTS. I also greatly enjoyed the opportunity to mildly embarrass myself by running into the folks from SKORTS and telling them they rock.

Of course, here’s the new music playlist for the month:

books

This month, I finished 6 books:

  • A Trade of Blood by Robert Jackson Bennett
  • Devil in a Blue Dress by Kevin Ryan, Walter Mosley
  • Fight Me! by Austin Grossman
  • The Dog Stars by Peter Heller
  • Leviathan Wakes by James S. A. Corey
  • The Fifth Season by N. K. Jemisin

You can probably tell that I’ve been reading more in my downtime instead of watching YouTube or whatever.

I’m currently reading:

  • 10x Is Easier Than 2x: How World-Class Entrepreneurs Achieve More by Doing Less by Benjamin P. Hardy, Dan Sullivan
  • Yumi and the Nightmare Painter by Brandon Sanderson

photography

Here’s some other photos for the month:

The inside of an architectural surplus container, with chaotic shelves of pipes and lighting fixtures, and a big "4" painted on a door in the background.
M wearing sunglasses in front of the displays full of pizza in Zorch in Carytown

failbetter

This month, failbetter published:

stats

This month:

  • I typed 756,587 keys and clicked 111,554 times. (I did pass 100 million keys on Whatpulse this month, after 21 years of logging these stats.)
  • I listened to 1,241 songs.
  • I posted 12 times on excitable.dev.
]]>
August 2026 https://blog.joewoods.dev/updates/august-2026/ Tue, 01 Sep 2026 00:27:54 +0000 https://blog.joewoods.dev/?p=1328 ... August 2026]]> Hi!

It’s been an absurdly busy month. So busy that, as I write this near the end of the month, many of my habits are bending to absorb a bit of the chaos. But that’s how it tends to go — this is a regular pattern for me, and, once the dust settles a bit, it should be a good opportunity to critically evaluate these habits and make them more delightful and/or efficient.

The Premier League season is finally back in action, and I’m (perhaps unwisely) playing Fantasy Premier League again this year. This means I am, of course, putting matches on in the background which I wouldn’t otherwise be watching. I’m having fun, but also thinking about how I’m going to make sure it stays fun.

There’s not much else to report, honestly; a few exciting things have happened this month that aren’t quite ready to print here, but the “projects” section below is absurdly long, so I don’t feel bad about not making this post even longer.

projects

There’s a lot here this month. I’ve taken my systems for getting work done and raised them up a layer by creating a set of tooling:

workflow management tools

conveyor

The Conveyor is my local tool for creating tasks associated with projects, which LLMs work on, review, and generate artifacts like screenshots for me to review.

This allows me to break down work into good-sized chunks, and, more importantly, just write down a lot of things to do in a place where they’ll get automatically programmatically advanced.

Stacked bar chart for each day in the month.

This means that I’m continuously improving my tools as I use them. I’ve also kicked a few recurring tasks over to be processed by this tool as well, freeing up some more mental space.

This was the foundation that begot a lot of the updates below:

meteor

Meteor was the v0 of Conveyor for my work at Mobius. We have a semi-standardized set of queues, and how those queues get processed; just like Conveyor, I built a tool using Conveyor to reflect these queues specifically.

This was immediately a boon for me, but it wasn’t quite right in a few ways, which meant that I decided to supersede this with a new tool:

polish

Polish is the v1, built off of what I learned from Meteor. The point is to automate the stuff that is more rote so that I can spend my human attention on the things that matter. Still early days, but this is working quite well, and I’m looking forward to where I can take it from here.

scripts, and other miscellaneous tooling

last.fm history fix-up

Last month, I wrote:

Spotify made a change that made last.fm silently stop logging my scrobbles!

Which is incredibly frustrating. My last.fm history is pretty important to me! The way I fixed this was to request an export of all of my Spotify account data, parse that, and push the missing plays into last.fm. Annoying to deal with, but now it’s sorted out.

RVADev Slack Bot

The RVA Dev Slack has a channel for job postings, and some questions came up around how the rules for these job postings are applied. I wrote a Slack bot inspired by the bot in the Rands Leadership Slack; it parses new job listings, requests any missing detail, and, if it’s all provided, awards the job poster a gold star.

ssh-agent-nag

I need to manually run some configuration each time I start my computer, this just sends me a notification when it’s not yet done.

Other projects

instigation.club

I started hacking on an idea for a service where you essentially get instigated to follow your cool ideas twice a day. I spent a lot of time thinking about this one: how to market it, how to price it; but, ultimately, I don’t see a path to making it work. I’m going to drop this one for now, but I definitely learned a lot of useful things I can carry on to my next projects.

OpenLaunch

I’m mildly unhappy with the direction that Raycast is going; they’re understandably making moves to make their business more profitable, but these are a bit antithetical to the way I actually want to use the application. I started hacking on a personal replacement near the beginning of the month, but have a few more things to polish up about it before I can turn it into my daily driver.

The Gauntlet

I briefly mentioned that I’d put together wireframes for this last month; I’m very happy with how it turned out!

Screenshot of The Gauntlet

The Gauntlet is a custom UI over Spotify that acts as a kanban board for listening to albums five times, as part of my over-engineered music listening philosophy.

This project is completely open source — you can hack on it here: https://github.com/tjwds/the-gauntlet

hyperspace notecards

hyperspace notecards is a bespoke writing app, which I’m currently using to draft this post:

A screenshot of a grid of six card-like objects.

It’s centered around the way I approach jotting down thoughts. It has arbitrary, zettelkasten-like relations between cards. It tracks a daily writing goal of 833 words per day, inspired by the NaNoWriMo (RIP) writing goal, but cut in half.

Ultimately, I didn’t end up using this application to do the type of writing that I thought I would do; it’s been really useful for organizing my thoughts, but I just don’t think I can make time for writing articles at this point. I broke my 20-day streak near the end of the month on accident, and need to figure out what this habit actually looks like in the future.

Updates to existing projects

excitable.dev

A few more improvements to what Grayson referred to as my Joecial media:

  • I added a bit more tooling to manage email subscriptions
  • I can now post spoiler tags
  • I added Instagram as a syndication target, which combines the images I post with the associated text.

the-wall

One new feature for my custom tiling terminal multiplexer: a dock mode for long-running processes.

Other project planning

A little more hacking happened on:

  • A site that’s effectively like HackerNews with a hardware focus.
  • Improvements to my newsletter tooling, hopefully to bring a lot of disparate projects under one unified banner.

Whew!

music

A relatively-short playlist this month:

films

This month, I watched 7 films:

  • Spider-Man: No Way Home
  • Iron Man (rewatch)
  • The Amateur
  • The Dink
  • Spider-Man: Brand New Day
  • The Martian (rewatch)
  • Iron Man 2

Have I mentioned that I love Letterboxd?  You can follow me there.

books

This month, I finished 2 books:

  • Surface Detail by Iain M. Banks (reread)
  • Cool Machine by Colson Whitehead

I’m currently reading Leviathan Wakes by James S. A. Corey.

photography

This month, I added 125 photos that I took to my photo library.

Riverfront Plaza and Manchester Bridge obscure the James River
A small, skeptical cat watches from a back yard behind an iron fence

failbetter

This month, failbetter published:

stats

This month:

  • I typed 950,874 keys and clicked 121,118 times.
  • I listened to 1,271 songs.
  • I posted 35 times on excitable.dev.
]]>
July 2026 https://blog.joewoods.dev/updates/july-2026/ Sat, 01 Aug 2026 03:18:42 +0000 https://blog.joewoods.dev/?p=1323 ... July 2026]]> Hi!

I’m back from Rhode Island, having spent less than a week there, hanging out with family, and taking a bit of a working vacation. The weather was lovely; it was nice to be outside for a change, even if it was still with my laptop.

This month marked my two-year anniversary at Mobius. It’s wild how much has changed in that intervening time — I’m really proud of everything we’ve accomplished, and excited to imagine what the next two years will be like.

On that note, I gave a talk about the Mobius tech stack this month as well, which was fun; like every talk I give, prepping for it took up way more time than I would like to admit.

projects

excitable.dev

Quite a few new features for excitable.dev, my little social media echo chamber, this month:

booking tool

At the very tail end of last month, I started hacking on a page I could send folks to book time with me that would respect my availability across multiple calendars. This is now live; it’s not perfect, but it solves the problem!

daily game tool

I hacked a bit on a tool to allow me to track my results / streaks on a bunch of daily games, but I gave up on this idea after a few days of work.

indie internet radio

I’ve been hacking away at an internet radio station that uses YouTube to play tracks; the bulk of this work is an extremely manual process, so maybe you’ll hear about this more later if I manage to process another ~700 videos.

node editor

I started hacking on a kind of esoteric text editor where everything’s a node in a graph. Still early days, but the idea is to bootstrap this by making it really good for my own purposes before getting feedback from anyone else. Which is to say: stay tuned for more, maybe?

The Album Gauntlet

I also put together wireframes for an app to manage the album gauntlet; more to come on this later, maybe!

music

films

This month, I watched 7 films:

  • Fern Brady: Power & Chaos
  • Mission: Impossible
  • One Battle After Another
  • The Odyssey
  • Captain America: Civil War (rewatch)
  • Spider-Man: Homecoming (rewatch)
  • Spider-Man: Far From Home

Have I mentioned that I love Letterboxd?  You can follow me there.

books

This month, I finished 2 books:

  • ZACH-LIKE, A Game Design History by Zach Barth
  • The Faith of Beasts by James S. A. Corey

I’m currently reading:

  • Thinking, Fast and Slow by Daniel Kahneman
  • Trading and Exchanges: Market Microstructure for Practitioners by Larry Harris
  • Surface Detail by Iain M. Banks (a re-read)

failbetter

This month, failbetter published:

stats

Spotify made a change that made last.fm silently stop logging my scrobbles! I have a plan for how to repair this, but for now, my listening stats for this month aren’t right.

This month:

  • I typed 838,742 keys and clicked 120,550 times.
  • I posted 45 times on excitable.dev.
  • I added 228 photos that I took to my photo library.
]]>
June 2026 https://blog.joewoods.dev/updates/june-2026/ Wed, 01 Jul 2026 01:29:39 +0000 https://blog.joewoods.dev/?p=1312 ... June 2026]]> Whew! A shorter month, but it’s also felt like it’s absolutely flown by. I’m tired! But I’m having fun.

Let’s see — this month:

M and I went to Rae’s lovely wedding, and had a fun time celebrating her and Cord and hanging out with our friends.

I bought an Xteink X4 after seeing Max Glenister’s post about it; I spent a small amount of time playing around with CrossPoint and, of course, reading on it.

And, of course, I spent quite a bit of time on house stuff:

  • I installed acoustic panels in my office with M’s extensive help
  • I fixed a toilet
  • I mowed the lawn twice, yeesh.

projects

This month, I created wireframes and project plans for a few projects, but only one got to the state where it could be shared:

A screenshot of an interface showing a visual treemap of space files are taking on disk.  There are other UI elements to help manage your files:  duplicate file management, and a "loose image" processing tool.

disk⋅solve is a macOS application for managing the files on your disk. You can see what’s taking up space and move it to the trash, see duplicate files and some caches you might want to clear up, and see images in directories so you can sort them to the right place with keyboard shortcuts (like your Apple Photos library). This is another tauri app, and you might be able to tell that the design is entirely based around the frustrations I’m feeling in particular trying to reclaim space on my machine.

Other than that, the only things worth noting:

  • I added a few quality-of-life improvements to the-wall, my opinionated tiling terminal multiplexer, like a visual indicator for panes which have emitted terminal bells.
  • I added some new features to excitable.dev, my little social media oasis, including: better profiles, image uploads, better RSS feed rendering, and two new sync targets:  wip.et and my omg.lol statuslog.

music

Another long one for you this month, filled with some jams I’m really enjoying:

films

I watched just the one film this month: Get Shorty. (I watched it after reading the book, as mentioned below.)

Have I mentioned that I love Letterboxd? You can follow me there.

books

This month, I finished 3 books:

  • Billion Dollar Whale: The Man Who Fooled Wall Street, Hollywood, and the World by Tom Wright and Bradley Hope
  • Get Shorty by Elmore Leonard — I enjoyed this one more than I thought I would.
  • The Mercy of Gods by James S. A. Corey

After finishing The Mercy …, I immediately started The Faith of Beasts, also by Corey, which I’m still working on. I’m also still slowly chipping away at Trading and Exchanges: Market Microstructure for Practitioners by Larry Harris.

photography

This month, I added 263 photos that I took to my photo library.

The back of a box truck next to the Richmond flood wall.  The truck reads "volunteer with us!" and there's a cartoon man on the back.  It's slightly sinister!

failbetter

This month, failbetter published one work:  “A Nice Place to Retire” by Melanie Faranello

stats

This month:

  • I typed 778,302 keys and clicked 121,442 times.
  • I listened to 1,034 songs.
]]>
May 2026 https://blog.joewoods.dev/updates/may-2026/ Mon, 01 Jun 2026 01:47:12 +0000 https://blog.joewoods.dev/?p=1284 ... May 2026]]> This is almost certainly going to be the longest monthly update article I’ve ever written.

Last month, I wrote:

A lot of my attention this month was taken up by a really big project that I’m not allowed to talk about yet, but you’ll definitely hear a lot more about it in May’s post!

The papers were not yet signed when I wrote that, but since then, the deed transfer has been completed, and M and I now own a house! Same greater part of Richmond, different neighborhood, same general length of my walk to work. I’m writing this from my new home office, surrounded by boxes I’ve yet to unpack, a couple of days after our move. This has obviously been taking up a lot of bandwidth for me this month, and there’s still a lot of work to do, but the end result is and will continue to be worth it.

Funny enough, the day after we moved house, Mobius also moved to a new office — same building, just consolidating our two separate office rooms that were next door to each other into a single room. I haven’t spent a ton of time in the new space yet, but it’s something I’ve wanted to happen for quite a while, so it’s great to see it come to fruition.

projects

I started paying for an expensive LLM plan out of my own pocket. The justification for this is pretty tautological: I wanted pressure of needing to do enough stuff outside of my real job to justify the spend. I think I’ve come pretty close to hitting that goal. 

Here’s some of the projects I worked on this month. First, some projects I’m considering failures:

the ones that didn’t land the way I wanted

parc à chiens

A tool to analyze songs for tempo and key for playlist generation. I played with the idea of putting together custom cross-fading as well, but I ultimately ended up punting on the idea altogether; all facets of this require the music files to be stored locally, and I don’t want to sacrifice the disk space or the portability of streaming. It was pretty cool to hack together the playback tools, though; modern JavaScript is great, web browsers in the 2010s just could not do this.

receipts

A screenshot of a web interface showing an annotated code diff viewer.

A home base for agentic code review. The idea is that you’d get LLMs to review “blocks” of code, and then store their assertions somewhere, and the human in the loop would review those assertions. This could be nice if I spent more time on the feedback loop and developer ergonomics, but it’s fallen out of my workflow for now.

poker trainer

Basically, I spent two days memorizing some math and heuristics for evaluating Hold ‘Em hands. Not really much to say here; the interface was nice, but it would take a lot more work to make it more useful for someone else.

photos app

I played around with building my idea of what a photo sharing site in ’26 should feel like. Ultimately set this one aside for other ideas. Speaking of which:

the ones that actually landed

calendar.city classification helper

Though calendar.city doesn’t amplify events that are purely about “AI,” getting some LLM help to annotate the queue that I’m the human in the loop for was a long time coming. This has made that queue more manageable, so I’m less likely to end up with a backlog of events to process.

This Week in Raycast

A weekly, LLM-generated newsletter which sums up new and updated Raycast plugins. This is how I summed up the project on LinkedIn:

Raycast is foundational to how I get stuff done. 

The extension ecosystem, in particular, is a boon for my productivity; I want for everything I can do with my machine to be a small number of keypresses away. But my biggest issue here was always discovery: staying on top of new releases and updates to existing extensions.

So I built something: This Week in Raycast

the-wall

A screenshot of a tiling terminal multiplexer.

I’m in a groove with my two-monitor setup where the left monitor would displays a 3×2 grid of six Terminal.app instances, and the right monitor is where I do everything else. I wrote some Raycast scripts to help manage these terminals, but ultimately, I wanted better configuration and tooling than a handful of esoteric shell scripts could get me.

So I started hacking on my own custom tiling terminal multiplexer application using tauri under the hood. I’ve only added a handful of features so far, but it’s already coming in handy; I definitely plan to hack on it more in the future.

excitable.dev

A screenshot of a minimal feed of posts.

As time goes on, social media has gotten less and less fun, less and less useful for me. So I’ve decided to renegotiate my relationship with the internet with yet another microblog framework and website: another little home on the internet for me, with tools to syndicate some of its content to other places.

There’s still some features I want to add, but this was exactly what I was looking for; I’m already really happy with how this has changed my habits.

music

This is almost-certainly the longest “new music this month” playlist ever featured in the over six years of these articles. I really love this one — I imagine I’ll be coming back to it often!

books

This month, I finished 4 books:

  • Hyperion by Dan Simmons — ★★★★½
  • A Sense of Urgency by John P. Kotter
  • A Parade of Horribles by Matt Dinniman
  • High Output Management by Andrew S. Grove — ★★★★★

I’ve carried my “have a non-fiction and fiction book going at the same time” habit all the way through this month; I learned quite a bit from the Kotter and Grove books. 

I’m currently reading:

  • Trading and Exchanges: Market Microstructure for Practitioners by Larry Harris
  • Billion Dollar Whale: The Man Who Fooled Wall Street, Hollywood, and the World by Tom Wright and Bradley Hope

Billion Dollar Whale is non-fiction, but it falls into the “reading for entertainment” slot. I just started the Harris textbook; I’m predicting this one isn’t going to be marked as fully-read, but I might skim some chapters and do a deeper dive in others by putting it down.

photography

This month, I added 591 photos that I took to my photo library.

A kind-of blurry greyscale image of power lines, stoplights, and stormy skies above the building Honey Baked Bee is in.
Greyscale image of storm clouds over downtown Richmond, as seen from Libby Hill.
Marshall enjoying the view out of the kitchen windows in his new house.

failbetter

This month, failbetter published:

stats

This month:

  • I typed 981,793 keys and clicked 120,324 times.
  • I listened to 1,326 songs.
]]>
April 2026 https://blog.joewoods.dev/updates/april-2026/ Fri, 01 May 2026 01:56:40 +0000 https://blog.joewoods.dev/?p=1280 ... April 2026]]> Hello!

I’m writing this on a rainy April evening, knowing what May’s going to bring. A lot of my attention this month was taken up by a really big project that I’m not allowed to talk about yet, but you’ll definitely hear a lot more about it in May’s post!

Because of this, I don’t have that much more to report on.

M and I went to the first-ever Church Hill Lookout meetup, which was a really great time; if you’re in Richmond, you really ought to subscribe!

Later in the month, M and I drove down to Virginia Beach for the day to visit the aquarium, which was fun. I hadn’t been to an aquarium in a very long time.

went to the aquarium

[image or embed]

— Joe Woods (@joewoods.dev) April 25, 2026 at 5:45 PM

Oh, I nearly forgot that this month marks the start of the seventh year of monthly updates. Dang!

code

The most exciting, public-facing code I wrote this month was a Raycast extension to apply arbitrary regex find-and-replace to your clipboard. At time of writing, the PR isn’t merged yet, but I’m already getting a lot of use out of it.

A few more tweaks from me include a very minor contribution to the code behind Indie Discotheque, and a quick script to rectify my “read” dates on Hardcover after they fixed an issue that had been plaguing my library for a couple of months.

music

books

This month, I finished 5 books:

  • The Wise Man’s Fear by Patrick Rothfuss (re-read)
  • The Courage to Be Disliked by Ichiro Kishimi and Fumitake Koga
  • Children of Time by Adrian Tchaikovsky
  • The Blade Itself by Joe Abercrombie
  • Learn Odoo by Greg Moss

I’m currently reading Hyperion by Dan Simmons and A Sense of Urgency by John P. Knotter.

photography

This month, I added 483 photos that I took to my photo library.

failbetter

This month, failbetter published:

stats

This month:

  • I typed 938,776 keys and clicked 125,702 times. (Closest I’ve gotten to cracking 1 million in a long time, but still haven’t hit it.)
  • I listened to 1,374 songs.
]]>
March 2026 https://blog.joewoods.dev/updates/march-2026/ Wed, 01 Apr 2026 02:21:16 +0000 https://blog.joewoods.dev/?p=1263 ... March 2026]]> Hi!

The weather’s turning warmer, sports are happening, and we’re in the time where daylight has been saved. I hope you’re well, and that you’re having fun doing what you’re doing.

It’s been a pretty busy month!

Near the beginning of the month, I gave a presentation at the RVA.js meetup: build cool stuff fast with Next.js:

Me, in front of a crowd, gesturing up at a projector
Thanks to Gareth for taking this photo.

Meetup presentations are always rewarding, but always take up way more of my time in prep work than I think they’re going to.

Chasen was in town from Philly, so it was great to meet up with him and meet his dog Baxter.

The men turned thirteen this month, which is astonishing to me.

My team and I won the “moonshot award” at the Hack for RVA hackathon; we built RideShift RVA, a tool to encourage folks to take fewer single-passenger car trips by rewarding them with perks they can redeem with local businesses.

The hackathon team all in front of laptops.  Daniel, the man on the left, gives two thumbs up.  My laptop is open, facing the camera.

music

I only went to one show this month — my friend Dan Young and Jasyn Brazoban at Révéler.

Also, I’m buying a seven-string guitar off of John. 🙂

writing

Only one blog post this month, since search engines still seem to not really have picked up this concept:

films

This month, I watched a single film:

Have I mentioned that I love Letterboxd? You can follow me there.

books

This month, I read four books:

  • This Inevitable Ruin by Matt Dinniman
  • Intermezzo by Sally Rooney
  • Elantris by Brandon Sanderson
  • The Name of the Wind by Patrick Rothfuss (re-read)

Regarding the Dungeon Crawler Carl series: I’m honestly a little sad to be caught up. These are so silly and so fun.

I’m re-reading The Kingkiller Chronicle for the eighth (?) time. But even this time, I’ve noticed some things that are going to lead me to need to update my research on every hint about what might happen in book three.

photography

This month, I added 385 photos that I took to my photo library.

(This number is a little inflated; I’ve been importing both RAW files and jpegs with the delicious Ricoh greyscale baked in.)

Lana the dog stands on a short wall, looking at the camera with one paw raised.  M has one hand on the dog, with her back turned to the camera.  The James river lurks in the background.
A figure on the basketball courts looks down at a small child, partially obscured by fog.

failbetter

This month, failbetter published:

stats

This month:

  • I typed 883,162 keys and clicked 142,305 times.
  • I listened to 1,246 songs.
]]>
Nine Inch Nails secret shirts https://blog.joewoods.dev/music/nine-inch-nails-secret-shirts/ Sun, 15 Mar 2026 14:58:42 +0000 https://blog.joewoods.dev/?p=1256 ... Nine Inch Nails secret shirts]]> For the 2026 leg of the Peel It Back tour, it appears like some folks from the Nine Inch Nails team have been handing out unreleased t-shirts to members of the audience. These are very similar to the more generally-available lyric shirts that were available for purchase at each show or online, but for different songs. Here’s a list of the known shirts at time of writing — huge thanks to nincatalog for putting these together:

]]>
February 2026 https://blog.joewoods.dev/updates/february-2026/ Sun, 01 Mar 2026 02:28:13 +0000 https://blog.joewoods.dev/?p=1248 ... February 2026]]> Hi! This was a jam-packed month:

I mentioned at the end of last month that we were essentially stuck inside due to snow and ice. This continued into the beginning of this month, with another brief snowstorm happening as well.

While walking around with M and Lana, I took this photo, which was featured in The Church Hill Lookout:

M and I headed back down to North Carolina for a bit to spend time with family and, of course, see Nine Inch Nails again:



[image or embed]

— Joe Woods (@joewoods.dev) February 11, 2026 at 12:21 AM

Absolutely phenomenal show. We really got a treat with this one; there were a few deviations from the typical setlist that were songs I really wanted to hear live.

Also at the show, one of the Discord admins handed M a shirt; my posting about it online kicked off the Secret Shirts conversation. At time of writing, this NIN Catalog page has a photo I took on it.

I’ve been working on music a bit again; Kevin and I have been working on some tracks. I’ve really been trying to hone in on the exact patterns we’re looking for; we have one scratch track together so far, though it still has some placeholders in it. Hopefully more news to come on this in the future.

Later in the month, we rounded up some friends at a bar for an informal get-together, which was a lot of fun — I definitely want to do this more in the future.

Finally: I’ll be giving a talk on the Next.js ecosystem on March 3rd at RVA.js. Come out and join us!

music

writing

Just one blog post this month on a Tiny Cool Thing:

films

This month, I watched 2 films:

  • Wuthering Heights
  • KPop Demon Hunters

Have I mentioned that I love Letterboxd? You can follow me there.

books

This month, I finished 7 books:

  • Normal People by Sally Rooney
  • Dungeon Crawler Carl by Matt Dinniman, Will Staehle
  • The Butcher’s Masquerade by Matt Dinniman
  • The Dungeon Anarchist’s Cookbook by Matt Dinniman
  • Carl’s Doomsday Scenario by Matt Dinniman
  • The Gate of the Feral Gods by Matt Dinniman
  • The Eye of the Bedlam Bride by Matt Dinniman

Any guesses as to which book I’m currently reading? That’s right: This Inevitable Ruin.

I’ve definitely been looking forward to finding time to read these silly, silly books.

photography

This month, I added 259 photos that I took to my photo library. (See above for some examples!)

failbetter

This month, failbetter published:

stats

This month:

  • I typed 794,358 keys and clicked 112,628 times.
  • I listened to 1,181 songs.
]]>