Posts
2026
Two Videos
Trying to be all cool and tough this weekend, I was being a bit sloppy with a chainsaw. I’ve had the chain come off plenty of times before, but never had it tangle so badly I couldn’t immediately get it back …
2026
What is Good? 2006-03-29
- Fresh-ground cinammon. Finally nailed my colors to the mast on this and threw out the ancient McCormick-or-whomever spice container we have had for years. Made sure to sniff the contents first to give myself a fuller …
2026
Finding My Voice
For … reasons, I fed Claude a bunch of my Internet posting history. In retrospect, much of the worst of it
- Metafilter comments (not so bad)
- Reddit archive (not great)
- Twitter archive (very not great)
I wanted to see how well it could mat…
2026
New Pelican Plugin: Obsidian-Style Callouts
I write all my notes and drafts in …
2026
Harold and George Destroy the World!
I have been thinking a lot lately about these two fellows.

If you are not lucky enough to know them already, those are Harold and George fr…
2026
What is Good? 2006-03-10
- Mutiny After Midnight - I know I mentioned it last time but it’s just so good. Between this and Sound & Fury, he’s cornered the market on Rolling Stones-style ‘70s scuzz rock and I love t…
2026
What is Good? 2006-03-05
- Milk Street’s tacos arabes
- Tom’s Crossing
- The fact Hardcover exists, a site to replace Goodreads, which has been dead sin…
2026
The Effect of Gas on a Marriage
I was well into my 30s before I realized my mother’s aphorism on relationships, “Fits find each other” had a positive meaning. Because my mother and her sister both taught in special education and because their side of the family is from …
2026
Automate MP4 to GIF
Do you, like me, often find yourself in internet arguments for no good reason and want to reply with a dead-perfect response GIF so everyone will clap and love you even more but the response you want is actually stored in your bookmarks in the superior …
2025
Printing from Python on a Mac
I recently automated the download of one of my favorite cryptic crosswords, both because I am nerdy and because it went behind an extravagantly high paywall. In the process I decided I wanted Sunday mornings to be even more leisurely and made the script …
2025
Music This Week 11-02-2025
Didn’t expect to be back so soon, but I got busy doing something* this weekend and what I was listening to finished and Spotify’s Recommended let me know The Beths have a new album out and it’s just as good as the last one …
2025
Music This Week 10-25
Trying something new, here are a couple of things I’ve been playing on repeat.
Safely inside my Dad Rock, Springsteen-inspired category, I think I found this via Xgau’s Substack. The whole album is amazing and the previous one is great too …
2017
Autocomplete in Python Shell on Windows
Because I drive myself insane replicating this when I find I want autocomplete on Windows, here are the steps (as of January 2017 anyway):
pip install pyreadlinepip install ipython[shell]
Except right now step 2 fails when installing scandir so I grabbed it …
2016
Dear Josie: On Weasel Words
Dear Josie,
On the very off-chance I don’t get a chance to barrage you about this a thousand times, here’s a lesson on weasel words. Take a look at

Always be suspicious when politicians or advertisers (if there’s still a difference) don …
2016
Upgrading Django
For the second time in a few years I’ve found myself doing a number of Django upgrades. It’s a good thing: I’m happy the framework I chose to base most of my work on when I went solo has stayed relevant. But this time I …
2016
Debugging a Vue.js Error
I know it’s been a while and I really should write more often, but this is just a quick one for Google to index in case it happens to someone else: I recently wrote my first vue.js component and was really pleased with …
2015
Worst Pickup Line: A Play in One Act
INT - BEER STORE - DAY
CREEPY GUY, a man in his late 50s in hiking shorts and an ankle brace is paying for a popsicle at a beer store at 10:30 in the morning with the change from what is either a …
2014
Exception Handling
I’ve been thinking about exception handling a lot recently. A., because I’m stultifying and B., because it’s been a source of contention in the codebase I’m responsible for. I wrote some formal documentation last week to try to normalize our approach, but I’m …
2014
Java Version Hell on OSX
In one of those “Why did I even look at the terminal” moments, I noticed Solr stopped working properly in a local Django setup. Initially I ignored a slew of 404 errors when Haystack tried to reindex because … well because who the hell cared? I …
2014
The Garrison City Should Lock From the Outside
At the beer store just before 3pm. I always get a little nervous when a car pulls in and someone from the backseat gets out.
- DUI?
- Underage driver?
- Just plain crazy?
Thankfully it was number three. After the young guy got out …
2014
Thoughts While Lowering a Crib
- I get why people with kids feel like they need a bigger house: I’m trying to adjust a crib in situ and it feels like parallel parking a parade float in Rome
- “No hon, I’ll do it during the week when the house …
2014
wxPython on OSX Mavericks with or without Homebrew
Just a short note for anyone else who runs into this nonsense: I could not get the current version of wxPython to install in a useful way using homebrew. brew install wxmac --python --devel to install into my Homebrew-controlled Python install worked …
2014
Django Profiling Bug
I’m doing some work profiling a large Django application and I was running into this weird error when I tried to aggregate the stats with gather_profile_stats.py which comes with Django. It kept throwing TypeError: zip argument #1 must support iteration if there were two profile …
2014
It’s My Party (now)
I’m trying really hard to take parenting magazines seriously, but they seem to be written for a demographic that straddles dense and insecure. The latest unsolicited offering from Parents—

is apparently for people who don’t already know ice cream cake and enou…
2014
Résumé Rewrite Services
Helping people with a job application is not something I do. Unless you accidentally send it to me when asking your friends to review your cover letter before applying to be president of a bank. Especially if the email ends, “Constructive not your usual Tom. Thanks.” This …
2014
Fundraising: A Play in One Act
INT - NIGHT - a fundraiser from University of Rochester calls TOM who has the phone on speaker while holding JOSIE. We join the call in progress …
- Caller: “Sir, no amount is too small.”
- Tom: “Well, I make like ten cents…
2014
Checking on memcache’s health
From time to time a client on WebFaction will experience a hiccup in their memcache process. It’s not obvious at first unless the site is under heavy load (New Relic is a huge help in diagnosing the problem); this post is just a central …
2013
Lacey
“I’ve put relatives in the ground with fewer tears.” — my mom
Last Sunday night we had to say goodbye to the gentlest soul I will probably ever meet. I’ve tried to figure out how to write this since then but it all comes out as a jumble …
2013
Installing New Relic Plugin Agent on Shared Hosting
New Relic’s basic agent (and the free 30 days of Pro we got up front) have been a huge help on one of my largest ongoing projects. Wanting more insight into our server after a mystery incident yesterday morning, I’ve …
2013
Setting Up Server SSH Access
Because I always forget and because I am getting into the good habit of connecting via SSH for everything, here’s a note to myself on how to get SSH deployment keys running in my typical process:
- Use or generate a key
- Add the key …
2013
The Next 25 Years
As befits what was an all-male school, the highlight of my 20th high school reunion occurred in the men’s room near the end of the night (with a conversation at the urinals).
Him: “What brings you here?”
Me [assuming he meant something other than the …
2013
“Rich Get Richer”: A Play in One Act
EXT - DAY: An outdoor concert/ festival between acts. Our hero, TOM, just growing into his impossibly handsome looks in his late 30s strides purposefully toward Port-a-Potty Row. His path is interrupted by THE STRANGER, a younger man. Before T…
2013
Popular with Jerks 25-40
Washing my high-horsepower, low-milage car as a break from my computer-based job while wearing Local Sports Team’s baseball hat and streaming music made by white males (see below) from my Apple phone to a Bluetooth speaker, I thought to myself, “Boy, you need to step …
2013
Django Command to Back Up to Amazon S3 with Python
If it’s of use to anyone, I wrote this fairly thick-headed script to look for the most recent versions of files matching one or more patterns in a directory, zip them up and back them up to Amazon’s …
2013
MySQL and Python on OSX
Because I rarely use MySQL nowadays and because how often do you set up a new machine, this is a reminder to myself on how to get mysql-python installed in a virtualenv
- Add /usr/local/mysql/bin to your path (permanently in your .profile)
- If …
2013
Top Tips for Patients
Having recently had shoulder surgery, some advice:
- Memorizing your patient number will amuse the nurses
- Conversely, making your first statement after coming out of general anesthesia, “It was supposed to be the other arm” will not amuse them
- Like the man said, you can’t buy …
2013
Greener Development
A local experience designer, James Christie has been writing about what he calls “Clean UX”: designers and developers starting to make conscious choices about code and design that reduce the carbon footprint of web sites. As developer tools and frameworks get bette…
2013
Parochialism
Don’t do this:
The gap between Chicago's anthem singer and Rene Rancourt is damn hilarious. Best vs worst.
— Berkshire.bsky.social (@AndrewBerkshire) June 13, 2013