
Finished reading: The Stoneshore Register by G. Willow Wilson ๐
Starts like a quiet, perhaps paranormal mystery in a small town at the edge of the world– and ends up in a quite different place.

Finished reading: The Stoneshore Register by G. Willow Wilson ๐
Starts like a quiet, perhaps paranormal mystery in a small town at the edge of the world– and ends up in a quite different place.
A while back I set a rule for myself– no more short game jams, a weekend just isn’t enough for me to make something satisfying while still getting enough sleep and being a functioning member of the household.
… and then I spent much of today waffling over the Kenney Jam (Theme: “Scale”). I had an idea for a silly mountain climbing (or scaling) game, but doing it the way I wanted would have meant figuring out some Godot features I haven’t used before, and I think the tutorial I tried to follow was out of date with Godot 4.7. I briefly considered taking the Kenney Sokoban assets and making the obvious game, but struggled to find a way to integrate the theme. I still might do that as a learning project, though. There was also a thing with a UFO and a shrink ray.
I’m not doing this one. There are 15 hours left and I’d like to get some sleep tonight.
I’ve been thinking about the Cult of Done manifesto lately. I think maybe a better thing to do would be to try to get one of my many started, unfinished things to some version of “done” this month.
I’m gonna sleep on it.
I do kind of like this mouse-following UFO thing though…

Finished reading: Next Level Making Games That Make Themselves by Michael Cook ๐

Finished Listening: The Friendly Orange Glow: The Untold Story of the PLATO System and the Dawn of Cyberculture by Brian Dear ๐
A really interesting, not well-known slice of tech history.
At my employers suggestion, I studied for and passed the Claude Certified Architect - Foundations. It’s whetted my appetite to get more hands-on experience with agents, and I need a personal project to learn/practice on. I’ve experimented a bit with a QA agent for dctech.events, which fixes janky titles, duplication, and adds categories where they are missing. It’s been humming along for a few weeks. I’m going to look for further opportunities to use dctech.events as an agent testbed.

Finished reading: John Constantine, Hellblazer Vol. 4: The Family Man by Jamie Delano ๐
For vacation reading, I brought along Dungeon Crawler Carl and Steven Van Zandt’s memoir, Unrequited Infatuations. I started the latter, but mostly ended up re-reading the first four volumes of Hellblazer from my Kindle library. It’s better (and denser) than I remember.

The kiddo has given me an assignment to write a Marvel Multiverse adventure that fits these parameters, for him and a friend to play:

It’s kind of jarring to be listening to a song, and hear some sampled audio from something that just happened a few weeks ago.
Mission accomplished for now: next steps are recognizing when a certain threshold has been met and advancing to the next level.
I saw this on my walk tonight. I’ve decided that it’s the Godot guy, and he wants me to stop slacking on gamedev stuff.
Tonight, my goal is to get get my Jezzball-like-game to the point where it identifies and fills in areas that have been closed off.

huh, ross dot karchner dot com is no longer a top result for the search “Ross Karchner”.
(and I won’t comment on the indignity of the sponsored result)

Harsh


Currently listening: The Friendly Orange Glow The Untold Story of the PLATO System and the Dawn of Cyberculture by Brian Dear ๐
I’m not very far into this, but one detail that makes me smile: the early PLATO keyboards had an “aha” key. “Aha” was how you exited the help system, as in “aha, I found the information I needed”.
From a 1965 paper on PLATO:
If he had difficulty with a question, he could push the button labelled “help”. The “help” button took the student into a help sequence which pertained to the question. The logic in a help sequence was similar to the logic in the main sequence. The student was presented with additional explanatory material and “help material”. Each question in a help sequence had to be answered correctly before proceeding further through the help sequence.
After completing a help sequence the student automatically returned to the question he was trying to answer in the main sequence.
However, if the student wished to return to the main sequence from any point in the help sequence, he could push the button labelled “aha”. An additional request for help on the same question would return the student to his previous position in the help sequence.

Finished Listening: Steal Like an Artist: 10 Things Nobody Told You About Being Creative by Austin Kleon ๐
Actually: The Steal Like An Artist Audio Trilogy
From today’s trip to NASA Goddard Space Center’s open house





Finished reading: Wicked + The Divine Volume 4: Rising Action by Kieron Gillen ๐
(also volume 3. 5-9 are waiting for me at the library)
My current work-in-progress is leaving me a bit uninspired, so I’ve been tinkering with something a little different– a Jezzball-like:
The next challenge is detecting areas that are sealed off and displaying them differently.

Finished reading: The Wicked + the Divine, Volume 2 by Kieron Gillen ๐
Why are the Artemis II photos on Flickr?
I jettisoned my Flickr account in either the Yahoo or Verizon era– but nice to see that SmugMug and the foundation are doing good work to preserve the images and maintain the platform.

Finished reading: The Wicked + the Divine The Faust act by Kieron Gillen ๐
Decided to re-read the series.

Finished Listening: Crusaders by Dan Jones ๐
The “Passive Income” trap ate a generation of entrepreneurs:
an enormous machine converting human ambition into noise
March was not a productive month for me, gamedev-wise. I spent more time playing Civ VII, reading, watching Monarch: Legacy of Monsters and re-watching season 1 of Jessica Jones (each!), than in Godot or other creative tools.
I don’t mourn the time spent or not spent, but the loss of momentum burns. In April, I want to turn that around. I find that if I launch the game, I’ll quickly find the thing most annoying or unsatisfying at the moment, and naturally get to work on it.
I just need to rebuild the habit of doing that more days than not.

Finished reading: The Absinthe Forger by Evan Rail ๐
Not quite a “whodunit”– the forger in question is known right from the beginning. Rail spends the book exploring Absinthe’s history and present day makers and collectors, trying to understand the how and why the forger did what they did.

Currently reading: The Absinthe Forger by Evan Rail ๐
Someone reached out a few days ago, trying to sell me “dctechevents.com”– which once upon a time was the domain for my DC Tech Events site.
Have I grown to like dctech dot events?
Yes.
Am I nostalgic for the old domain?
Also yes. But not $500 nostalgic.

Thankfully, my friend S here didn’t actually own the domain. When they wrote that email, the domain was in PendingDelete status, which is final. Whoever had owned it, stopped paying the bill. Once a domain has reached PendingDelete, nothing can stop it from eventually hitting the open market. At that moment, S might as well have been trying to sell me the Brooklyn bridge.
If I had expressed interest, they probably would have tried to grab it once it hit the market, through a back-ordering service, sell it to me, and pocket the difference. That would be the most honest way this scheme could work. Would they have taken my money before having the domain in hand? What if the backorder failed? If they have my money, why even try?
I don’t have to find out, though. I didn’t respond to their emails, and I was able to back order the domain successfully. It’s all (once again) mine!

Finished Listening: Pictures at a Revolution: Five Movies and the Birth of the New Hollywood by Mark Harris ๐
I really enjoyed this combined history of The Graduate, Bonnie & Clyde, In The Heat of The Night, Guess Who’s Coming to Dinner, and Dr. Doolittle.
Rex Harrison, though. What an asshole!
My day is always improved by Lice.
The Mystery of Rennes-le-Chรขteau, Part 1: The Priestโs Treasure
I’m a sucker for “Holy Blood, Holy Grail”-style lore. This makes me think I should check out Gabriel Knight 3.
My first run at Becoming Saint did not go well…


Finished Listening: Apple in China: The Capture of the World’s Greatest Company by Patrick McGee ๐
Repairing our microwave by replacing the fuse? Failure. Replacing the CMOS battery on my laptop seems to have gone OK, so I feel a little bit redeemed.
I have a theory about creation with AI.
(wait! please come back)
My gut says this can’t be original, but I haven’t seen it exactly expressed anywhere.
I think one way to navigate #3 (at least for digital projects) is tool building, using AI not to necessarily make the thing, but make to make peripheral tools that improve your life or make creating more productive or pleasant. For SpinDoc, I don’t plan on using AI for graphics, game design, level design, etc– but the level editor is a place where “taste and discernment” doesn’t matter so much (at least not yet), and letting the LLM do most of the work on that has been helpful to me.
From the Smithsonian American History museum


Finished reading: Criminal: The Deluxe Edition, Vol. 3 by Ed Brubaker ๐
So, instead of putting the SpinDoc level editor aside, I dug in and now the thing generally works. I even got online level sharing to work: it spits out a URL that anyone can use to play your level. That’s something I’ve been day-dreaming about for over a year.
Next, is making the game more presentable and fun, and I’ve got some ideas for new puzzle mechanics and a whole new game mode I’d like to try.
I am experimenting with a 3D view (only dots and wands have been implemented so far). No decisions on that yet.

Finished reading: Criminal Deluxe Edition Volume 2 by Ed Brubaker ๐

Finished Listening: Box Office Poison by Tim Robey ๐
Moderately satisfying: fixing a home appliance
Supremely unsatisfying: attempting to fix a home appliance, and failing

Finished reading: Criminal Deluxe Edition Volume 1 by Ed Brubaker ๐
I’ve been working through Complete Blender Creator 3: Learn 3D Modelling for Beginners , and the first project was this lighthouse scene. I think I pretty much understood what was happening. I’m a little fuzzy on sculpting, but I can loop cut and extrude shit all day.

Bird Bonkers ranked 234 out of 699 (that received ratings) in the GitHub Game-off. That puts it just on the edge of the top and middle third. I’m OK with that. I did basically ignore the theme, and I could have used my time more wisely during that month. Congrats to the folks that did well!
According to itch.io analytics, on most days, at least one person visits Brakes Escape. I suspect it’s just one person, who has made it one of their favorite time wasters. I think that’s cool! None of my other games exhibit that sort of steady usage pattern. It’s a small impact, but… it’s impact.

Even without that data point, BE is one of my games that I think should be developed further. It definitely wants to be a mobile game– I just have to get rid of the “frame” (borrowed from it’s most direct inspiration, NS Tower) and make it a full (tall) screen experience. From there, the graphics are pretty raw, and there’s room for power-ups and enemies of some sort I think.
What else?
I think The Zummoning has potential, but the card system is currently pretty half-assed. I could see simplifying it (have cards directly indicate the creatures being created) or leaning in to a more complete and coherent magic system.
SpinDoc has sort of been my white whale– one of the earliest things I started working on after getting into Godot. I think there might even be some niche-commercial potential, since the original game isn’t on the market anymore. (there was an official iOS port, but that hasn’t been maintained and is no longer for sale)
DC Tech Events is now on Bluesky and Mastodon. Thanks to the internet archive, I’ve brought back the circa-2007 logo I used on Twitter.

Finished reading: Fishflies by Jeff Lemire ๐

Finished reading: ERASED by Loo Hui Phang ๐
Thinking about SpinDoc since I mentioned it yesterday. I’ve been poking at it this evening and after some tweaking, the movement actually feels pretty good. I think the last time I walked away, I was hung up on the idea of building a level editor. Maybe I’ll put that aside for now and just make the dang game.
Exactly a year ago, I declared that 2025 would be the year of 3D. Not so much– it became a year of worrying about my job and finding the next one, and games took a back seat for most of it.
My goal: 2026 is going to be a year where I finish something, outside of jams. Maybe I’ll take a jam entry and try to make it into a complete, polished thing, or one of my other experiments or projects (remember the roguelike? Spindoc?), or it’ll be something from my notebook, or maybe a brand new idea.
It probably won’t be my favorite notebook game idea: “Breakout Teaches Typing”.
Along the way I would like to become productive with tools like Crocotile 3D, PixelOver, and Blender.


Finished Listening: Co-Intelligence by Ethan Mollick ๐
recently on DC Tech Events:
url_override, which in this case is because the NovaLUG iCal feed was sending the URL for the location (and not a correct one), in which case the main “meetings” page is the most useful place to send people.Without saying the “v” word, with LLM coding assistance I recently experimented with a couple of more ambitious visions for this site and codebase: for example, expanding into a broader network of similar sites for different cities, and/or making DC Tech Events more of an active community hub and meetup.com alternative. Ultimately, I decided against both. I enjoy the simplicity of the current site, and I don’t want a web project that eats more of my time and attention. My hobby is making games, not websites.
I do intend to keep running it in it’s current state. It still helps me find events, either directly, or when I occasionally go looking for events and groups to add.
awww

Bird Bonkers is live on itch.io. It’s not going to win any awards, but I think it’s fun and challenging, and it let’s me cap off a weird year with at least one non-embarrassing jam submission.
Still needs… all of the polish, but Bird Bonker basically works. Flapping uses “fish power”, bonk birds to get them to drop fish, which you need to grab to replenish your fish power. I am not an ornithologist, so I may have made some incorrect assumptions about how birds work.
Not a bird

Cool that Zork is now open source, but it’s kind of wild that Zork is now a Microsoft property.
this gog.com survey is pretty weird

Still making birds


Currently listening: Apple in China by Patrick McGee ๐
I don’t know why I was thinking about this just now, but almost exactly 15 years ago there was a mini-scandal involving DC Tech Events.
New on DC Tech Events: Per-week pages, like this week.
Wife: Whatcha doing?
Me: Making a bird
Wife: For a game?
Me: Yeah
Wife: What’s the bird going do?
Me: …
… bonk other birds?
Wife: you should call the game Bird Bonkers


Finished Listening: Altamont by Joel Selvin ๐
I was playing Glypha the other day, and wondered if an “endless Joust” game would be fun– instead of discrete levels, you keep proceeding upward. It turns out, Joust Revival is exactly that. I can’t get it to work with Wine, though, and if a game isn’t playable on Linux, does it really exist?
Either way, Revival is otherwise a re-creation of the classic arcade Joust game. I have something different in mind, but definitely with the DNA of Joust. Or Glypha. I’m pretty sure I played Glypha first. I think I’m going to give it a try in the upcoming GitHub Game Off.
2025 hasn’t been a productive year for making games. The job hunt and related Government uncertainty basically ate up the first seven months, and I haven’t really recovered the lost momentum. I am going to try to end strong with three simple jam games before the end of the year, the one described above, and two jams I’ve enjoyed participating with in the past: the 1-Button Jam and the 20 Second Game Jam. Embrace constraints!
Pinball Putt was my entry in the 2024 1 Button Jam, and twenty thousand milliseconds my entry in the 2023 20 Second Game Jam.

Finished Listening: Vibe Coding: Building Production-Grade Software With GenAI, Chat, Agents, and Beyond by Gene Kim and Steve Yegge ๐
This is apparently a legit organization– but something seems off about this letter. I found the tone a little… menacing? Maybe it’s my imagination.


Currently listening: Altamont by Joel Selvin ๐
back on my bullshit: I know I change my mind about this every 9 months or so, but I once again have a mastodon account, and have forwarded my fediverse followers over there: @16DBatteries
Six years ago, I was in Vegas for Splunk .Conf, and took the opportunity to see a Willie Nelson show

Overrated

Picked this up at a library sale. Getting the enhanced CD stuff working on Linux, in 2025, feels like a challenge.

I’m happy with lighting system and movement, and exploring the map actually… feels fun?
It’s still far from a “real game”, but I’ve got some ideas on how to handle equipment, combat. effects, mob movement, and character building/stats, etc, and I think I’ve got a good platform for that now.
At work, I’ve been diving into AI/LLM stuff, and I’m still pretty much always using coding assistants when I work on DC Tech Events. I hadn’t really attempted to bring that into game development, though. Last week, I decided to try it on my current roguelike project.
This game began life as part of a 10-day game jam, and I was beginning to regret some of the architectural compromises I made under the time pressure. In particular, the lines of responsibility were pretty murky between the class that generated maps, and the one that displayed the map and tracked positions. I gave Github Copilot some direction on what functionality belonged where, and it did a credible job cleaning things up, which made it easier for me to move on. Neat.
This led to some excitement and further experimentation, which resulted in two MCP servers, which allow a coding assistant more visibility and control of a a running Godot project. This one runs outside of Godot, and connects to the debugging port and language server, while the other is a Godot Plugin, and provides an HTTP server that allows for an agent to manipulate the node tree, and even send input. It’s cool when it’s all working.
As a “big swing” experiment, I created an empty project with a single spritesheet, and asked copilot to make a match 3 game. The game itself turned out OK, but across many attempts it completely failed to identify which parts of the sheet should be used as game pieces. Score one for humanity!
I’ve started a lot of projects and finish basically none of them– I think the promising thing for me is that I can use coding agents to get past the annoying/tedious tasks that cause me to lose interest and move on, and finish more games. For example, at one point I started “CISO Clicker”, meant to be an idle/clicker game that hopefully imparts some wisdom about the asymmetric nature of cybersecurity. I never really got past generating some company names.
With a few prompts, I’ve got a start on exactly the sort of simulation I’ve been thinking about:

Watched: Gimme Shelter ๐ฟ
(this was over the weekend– I’m mostly just trying out the new Movies feature on micro right now)

Finished reading: Beyond Vibe Coding by Addy Osmani ๐
Dune: Part II should have included a five-minute “Previously on Dune!” recap.

Finished Listening: Empire of AI by Karen Hao ๐
Fascinating and eye-opening. Parts of it also work as a primer on data center politics.
New on dctech.events: new pages showing just the events for Maryland, Virginia, or the District, as well as per-city pages, like this one for Arlington.


Finished reading: THE UNBEATABLE SQUIRREL GIRL VOL. 8: MY BEST FRIEND’S SQUIRREL by Ryan North ๐
(Also 6 and 7)
I decided after the last post that I’m not going to sweat the deadline. I’m not going to submit the game to the jam, which ends in 15 hours. This weekend, I decided I’d rather relax. Instead of staying up late working on the game, I watched Lower Decks.
I haven’t given up on the game, though– in fact I’m quite enjoying the process. I just didn’t feel like scrambling to complete it by the deadline, or submitting a version I’m not proud of.

Finished reading: The Unbeatable Squirrel Girl Vol. 3 by Ryan North ๐
The deadline is fast approaching, and I haven’t made a ton of progress– but now there are mobs that actually chase you. There’s no combat or death yet. That’s next.
The graphics and colors here were meant to be placeholders, but it’s honestly growing on me. With the black shadows and bright light, I find it kind of pleasing in a brutalist way. Perhaps I’m rationalizing laziness, but I think I’ll lean into abstraction here. Colors and shapes, without any traditional genre references.
It’s not a game yet, but I can move a blue dude through a procedurally generated map. The brown square would be the exit, if such functionality existed yet.
I started working on some ideas yesterday for Roguetemple’s Fortnight game jam. I’m not sure if my current concept will survive, but I am pleased with the map generation script so far.
I’ve got my 11th bullet journal set up for September.
Even when I fall out of using it as a sort of daily productivity/mindfulness practice, I’ve benefited from simply having one notebook active at a time, with dated entries. Pre-BuJo I would jot things down wherever, including digital tools like OneNote, etc, and often those notes were never to be seen again.


Currently listening: Empire of AI by Karen Hao ๐

Finished reading: The Unbeatable Squirrel Girl Vol. 2 by Ryan North ๐
makes sense

I don’t love it yet, but I added a simple search widget to DC Tech Events. There’s no backend, it just filters the list on the page.


Finished reading: The Unbeatable Squirrel Girl Vol. 1 by Ryan North ๐
I know, a few weeks ago I wrote “the internet doesnโt need more words about AI”.
Since then, I started working at a company that considers AI as part of it’s toolkit for helping customers, contributed some code to an internal project that uses the Google Gemini API, and my first client project?
Helping write LLM policy.
ยฏ\_(ใ)_/ยฏ
I’ve tried and failed a couple of times to write some sort of position statement in this space, that would capture a mix of hope and fear, while giving myself permission to keep learning and experimenting. I could probably have ChatGPT write it, but I’m not so far gone as to subject readers to machine-written prose.
I am giving myself that permission to learn and experiment, though. Program or Be Programmed seems newly relevant, and I think the closing words of LLMs Are Weird Computers captures the moment pretty well:
But I will say that if you don’t want to be caught with your pants down when your workplace does expect you to do more and different things with this technology, there’s no better time than now to start learning how to use it.

Finished reading: Powers Book Two by Brian Michael Bendis ๐

Finished reading: Powers Volume 1 by Brian Michael Bendis ๐
It’s hard to read stuff like this and not think, maybe the internet was a bad idea after all.

I’ve finished listening to All of the Marvels by Douglas Wolk.
From the premise, “man reads 27,000 comic books”, I expected an A.J. Jacobs-style story about how attempting a ridiculous project impacts the author’s life and relationships, with some tidbits about the comics thrown in. That would have been OK with me!
This is not that sort of book, though. Wolk spends each chapter pulling on a thread of the Marvel story, either for a character or team (Spiderman, Thor, The X-Men), or a theme (film, music, Presidents), highlighting specific issues that are notable. It’s one man’s highlight reel of the Marvel universe, and I enjoyed the journey.
If I had been reading this book on paper or device, I would have dog-eared a lot of pages, or taken notes. I listened to the audiobook, mostly while driving or walking, so I couldn’t note as much. I was still able to remember or jot down a few things. Here are the comics ‘All the Marvels’ has added to my reading list:
Activate yr Windows, Dave & Busters

It’s nice top see that Sound Blocks shipped! I spent a few minutes playing with it this morning, and it seems to be what I hoped for: midinous for someone who doesn’t want to have to figure out all the MIDI stuff.
My first song was… nothing worth sharing. But maybe I’ll be able to make some game music with it.

Currently listening: All of the Marvels by Douglas Wolk ๐
Today is my first day as an Ad Hoc employee. I’ve watched from the sidelines over the years as they’ve hired a number of my favorite people, both former CFPB colleagues and “internet friends” whose work and careers I’ve taken an interest in. I’m looking forward to being part of the team!
The actual client I’ll be working for is… a different civilian federal agency with a financial focus. You might be thinking “out of the frying pan and into the fire”, and aren’t completely wrong about that. My discussions with folks from Ad Hoc, the “prime” contractor subcontracting to Ad Hoc, and the client agency have convinced me that the work is necessary and should be funded for some years to come. I think it will be stable at least through the length of the contract, so long as I do good work.

Finished Listening: War for Eternity by Benjamin R. Teitelbaum ๐
Hello from Camp T. Brady Saunders. It’s the last day of summer camp. The kiddo mostly had a good time, but we’re both ready to go home.
Today is technically also the last day that I am a CFPB employee(last day actually working was 7/3). I wasn’t laid off this time, I’ve got a new job that starts Monday. I’m pretty excited about it, but I’ll save writing about that for next week.

Finished reading: Hidden Systems by Dan Nott ๐

Finished reading: Failure to Launch: A Tour of Ill-Fated Futures by Kel Mcdonald ๐
An excellent graphic journey through all sorts of could’ve-beens: including Y2K hysteria, decentralized wind power, robot dogs, virtual pop stars, a mechanical duck that poops (maybe), and Louisiana hippos.

Currently listening: War for Eternity by Benjamin R. Teitelbaum ๐

Currently reading: Failure to Launch: A Tour of Ill-Fated Futures by Kel Mcdonald ๐
I’ve been mucking around with my operating system setup for reasons too tedious to describe here. One hilarious bit of hijinx involved trying to use the Nobara repository exactly in the way it says not to…
It is NOT recommended to try to upgrade your Fedora installation to Nobara and support for doing so will not be provided.
Turns out, there are reasons.
But, the point of this post is actually a nice thing I discovered:
/home/ directory is placed on a BTRFS subvolumeIn the past, if you wanted to re-install a distro and preserve all of your files, you either needed the foresight to put /home' on it’s own partition or device, or have backups. Now, it’s no big deal.
Like I said, I don’t love my latest game, but it feels good to add something to the /games page after six months.
I’m not that proud of The Invisible Alligator in its current form, but the Godot Wild Jam 82 deadline is here, and it’s nice to ship a game after almost 6 months of not doing much gamedev.
It could use more levels, sound and music, animation, more NPC variety, and more effort spent on graphics. The core gameplay isn’t that fun yet, but Benjamin calls it “satisfying”, so that’s something.
I started out thinking about it as a 2D version of Hitman Go, with animals. It ended up in a place that (if built out more) would feel a bit like Hoplite.
Maybe I’ll keep tinkering, towards a more polished post-jam version.

Finished reading: Drawing Blood by Kevin Eastman ๐
Confession: I picked this up thinking it was non-fiction and that Shane Bookman was a real author.
One of the nice things about going to events again is seeing the fancy offices people work in.
(brought to you by the seltzer dispenser at The College Board)

Currently reading: Drawing Blood by Kevin Eastman ๐
I know, the internet doesn’t need more words about AI, but not addressing my own usage here feels like an omission.
A good deal of the DC Tech Events code was written with Amazon Q. A few things led to this:
So, I decided that DC Tech Events would be an experiment in working with an LLM coding assistant. I naturally tend to be a bit of an architecture astronaut. You could say Q exacerbated that, or at least didn’t temper that tendency at all. From another angle, it took me to the logical conclusion of my sketchiest ideas faster than I would have otherwise. To abuse the “astronaut” metaphor: Q got me to the moon (and the realization that life on the moon isn’t that pleasant) much sooner than I would have without it.
I had a CDK project deploying a defensible cloud architecture for the site, using S3, Cloudfront, Lambda, API Gateway, Cognito, and DynamoDB. The first “maybe this sucks” moment came when I started working on tweaking the HTML and CSS, and I didn’t have a good way to preview changes without doing the whole cdk deploy routine, which could take a couple of minutes.
That led to a container-centric refactor, that was able to run locally using docker compose. This is when I decided to share an early screenshot. It worked, but the complexity was starting to make me feel nauseous.
This prompt was my hail mary:
Reimagine this whole project as a static site generator. There is a directory called _groups, with a yaml file describing each group. There is a directory called _single_events for events that don’t come from groups(also yaml). All “suggestions” and the review process will all happen via Github pull requests, so there is no need to provide UI or API’s enabling that. There is no longer a need for API’s or login or databases. Restructure the project to accomplish this as simply as possible.
The aggregator should work in two phases: one fetches ical files, and updates a local copy of the file only if it has updated (and supports conditional HTTP get via etag or last modified date). The other converts downloaded iCals and single event YAML into new YAML files:
- upcoming.yaml : the remainder of the current month, and all events for the following month
- per-month files (like july.yaml)
The flask app should be reconfigured to pull from these YAML files instead of dynamoDB.
Remove the current GithHub actions. Instead, when a change is made to
main, the aggregator should run, freeze.py should run, and the built site should be deployed via github page
I don’t recall whether it worked on the first try, and it certainly wasn’t the end of the road (I eventually abandoned the per-month organization, for example), but it did the thing. I was impressed enough to save that prompt because it felt like a noteworthy moment.
I’d liken the whole experience to: banging software into shape by criticizing it. I like criticizing stuff! (I came into blogging during the new media douchebag era, after all). In the future, I think I prefer working this way, over not.
If I personally continue using this (and similar tech), am I contributing to making the world worse? The energy and environmental cost might be overstated, but it isn’t nothing. Is it akin to the other compromises I might make in a day, like driving my gasoline-powered car, grilling over charcoal, or zoning out in the shower? Much worse? Much less? I don’t know yet.
That isn’t the only lens where things look bleak, either: it’s the same tools and infrastructure that make the whiz-bang coding assistants work that lets search engines spit out fact-shaped, information-like blurbs that are only correct by coincidence. It’s shitty that with the right prompts, you can replicate an artists work, or apply their style to new subject matter, especially if that artist is still alive and working. I wonder if content generated by models trained on other model-generated work will be the grey goo fate of the web.
The title of this post was meant to be an X-Files reference, but I wonder if cigarettes are in fact an apt metaphor: bad for you and the people around you, enjoyable (for some), and hard to quit.
It turns out that echolocation has definitely been done before.
It wasn’t that difficult to adapt my little loop programming system to 3D. Maybe the year of 3D is back on?
For the moment though, I think I will switch my focus to Godot Wild Jam 82. The theme is “unseen”. This is probably a terrible idea, but right now I’m thinking: echolocation?
TIL I have an IMDB page, from supporting Adult Rappers on kickstarter 10 years ago.
The main DC Tech Events site is generated by a custom static generator, in three phases:
Once a day, and anytime a change is merged into the main branch, those three steps are run by Github Actions, and the resulting site is pushed to Github Pages.
The RSS + JSON-LD thing might seem arbitrary, but it exists for a mission critical reason: emojis! For meetup.com groups, the iCal feed garbles emojis. It took me some time to realize that my code wasn’t the problem. While digging into it, I discovered that meetup.com event pages include JSON-LD, which preserves emojis. I should probably update the iCal parser to also augment feeds with JSON-LD, but the current system works fine right now.

Anyone who wants to submit a new group or event could submit a Pull Request on the github repo, but most will probably use add.dctech.events. When an event or group is submitted that way, a pull request is created for them (example). The “add” site is an AWS Chalice app.
The newsletter system is also built with Chalice. When someone confirms their email address, it gets saved to a contact list in Amazon’s Simple Email Service(SES). A scheduled task runs every Monday morning that fetches the “secret” URL’s and sends every subscriber their copy of the newsletter. SES also handles generating a unique “unsubscribe” link for each subscriber.
(but, why would anyone unsubscribe?)
I’m at the AWS DC summit today and tomorrow.
Seems like people are really excited about this AI stuff?
Rest in peace Bill Atkinson.
Hypercard was the thing that really hooked me on computers as a creative tool.
I want to apply for a job, not join your “talent community”
Some progress on the “beat game” remake (for the moment, called “Loopnik”). It’s much easier now that I have a better idea of what I’m doing and how to structure things. Aside from level advancement, this does everything the original does, with half the lines of code.
The “graphics” are kind of charmless and generic right now, but they’re placeholders. The donut is from Kenney.
My first game jam entry was beat game, submitted to the So Bad It’s Good Game Jam in July 2023. Until then, I’d worked on tutorials, toy projects, and had done some tinkering on a recreation of Spin Doctor.
The game ranked 4th overall and won the “uniqueness” category. I’m proud of that, but clearly the “so bad” theme worked in my favor. I periodically wonder what a good version of that game would look like, and I’m looking for a way to get back into game dev after a couple of months out of it.
So, that’s my summer project, I think. I’m eyeing a few upcoming game jams, but if I get some momentum on this, I’ll probably just keep plugging away on it.


Finished reading: The Notebook by Roland Allen ๐
OK– I feel pretty good about the state of DC Tech Events. The newsletter system seems to work, users can submit new iCal feeds in addition to single events, and it looks… well… not fancy, but presentable (like me?).
In June, I want to operate the site, instead of build it.

My Dr’s office has a small claim to fame. I think there’s a display about the Lorton Meteorite at the Smithsonian Natural History Museum.

Because you, as a person who reads blogs, are dear to me– you get to be among the first to know that the new DC Tech Events site is live.
I’m still tweaking, but I’m pleased with how it works right now– it’s a static site deployed on Github Pages. There’s a form for submitting events, but behind the scenes that just opens a pull request.
Next up: getting the newsletter piece up and running.

Currently reading: The Notebook by Roland Allen ๐
10 years ago, I shut down the most popular thing I’d ever made (on my own). I’m now back in a place life/career-wise where I’m once again going to events, and, well, damnit, there’s nothing out there doing what DC Tech Events did back in the day.
So, it’s coming back. Pardon me while I relearn CSS.

There’s no escaping Microsoft Copilot

I passed the AWS test today, so I can continue to be “AWS Certified Security โ Specialty” until 2028.

Abandoned for now: Mister X: The Archives by Dean Motter ๐
The core concept is really cool, but after a few chapters I found myself not really caring about any of the characters or where the story was going.
I think I’m just not going to write about what’s happening at my job again until there’s some definitive resolution. It’s too fluid, and that isn’t what I want the blog to really be about. I definitely appreciate everyone’s kind thoughts, though.
This week is about:
Next month, I really want to get back to some game stuff. So far the year of 3D has been the year of nothing. Maybe I’ll do the Godot Wild Jam again.
I have made some progress on the mysterious non-game personal project. I hope to unveil that next month too.
I added an update to this morning’s post: the RIF is once again on hold. Or at least, access to systems isn’t being turned off and we won’t be placed on administrative leave, for now.
update: things are on hold again.
Along with 1,400 of my closest friends, I received a “Reduction in Force” notice yesterday. At 6pm today, I’ll no longer have access to work systems, and in 60 days I’ll no longer be a CFPB employee.
I’m sure I’ll find more to say later, but I’m heartbroken that I don’t get to keep working with my amazing team, supporting an important mission for all Americans.

Currently reading: Mister X: The Archives by Dean Motter ๐

Finished reading: Frank Miller’s Ronin (2019 Edition) by Frank Miller ๐
I passed the Security+ exam yesterday:
Tip: if one of the options is “risk register”, the answer is probably “risk register”.

Currently reading: Frank Miller’s Ronin (2019 Edition) by Frank Miller ๐

Finished Listening: Frostbite by Nicola Twilley ๐

Finished reading: Berlin by Jason Lutes ๐
Today, with my family, I watched the first episode of Human Footprint, which is about invasive species. It’s full of US government employees (I noticed USGS, BLM, and Army Corps of Engineers) doing important science and engineering: keeping asian carp out of the great lakes, studying pythons in the everglades, and managing the wild horse population in the west.
I had to wonder, after these last few weeks… do these people still have jobs? What will happen without them?
The kiddo and I worked through this Godot Reinforcement Learning tutorial, and (after some troubleshooting to get onnx to install) it worked! We trained a model to be able to play a circular pong game.
I don’t necessarily understand most of what I did there, for example why I would pick “Stable Baselines” vs " Clean RL", but it definitely seems like something worth experimenting with some more. It might be fun to use to use RL to improve the the opponent in The Zummoning.
It’s a shame that in order to use a model in-game, you need to use the .NET version of Godot, which (apparently) can’t yet export to the web.
Does that mean there are more marshmallow butt games?


Currently reading: Berlin by Jason Lutes ๐
I’ve finished “Robo Rampage”, and thus I’m done with the Complete Godot 3D course.
Towards the end, I kind of wanted to just get it over with, so I didn’t put much effort into decorating the level (in fact, most of the decoration you do see was added by Benjamin). Still, I like that it’s got enemies that chase you, some interesting lighting effects, and two different guns that recoil and spawn little sparky-effects where the bullets impact.
What’s next? I want to get out of the tutorial headspace and work on my own projects for a while. I did start this Blender tutorial a few weeks ago, and plan to pick it up again. In the meantime, revel in this sweet-ass trash can I made all by myself!

My day today…

This week, work is still in a holding pattern. I applied to a good number of jobs, talked to people, and un-mothballed one of my earliest Godot projects (a digital version the Balanced Attack Model game). My current thinking with that game: spend some time making the best version of that I can, then reaching out to the creator of the BAM deck to see if there’s some way we can collaborate and/or if he’d be OK if I make it available online.
Today, I’m working on the Amazon Bedrock Workshop, the first “homework” from the Become a Solution Architect program.
Starting Monday, and for the next four weeks I’m attending CISA’s “skilling academy” for System Security Analysis full-time.

Finished reading: Game Magic by Jeff Howard ๐
Interesting book! In explaining “game magic”, the author spends a lot of time delving into magic as described in fantasy literature, history, and even modern occult practice.

Finished Listening: The Case-Book of Sherlock Holmes by Arthur Conan Doyle ๐
Done with Sherlock Holmes: The Definitive Collection!
Benjamin and I have started a game jam: Crazzzy 4X Jam!
Become a Solution Architect looks promising: free training over 8 weeks, starts this weekend.
Yesterday, I spent a little time polishing my resume and applying to jobs, and took another AWS Security practice exam. The rumor mill says the hammer might fall today, but for the moment I’m still being paid to not work.
Today, I think, is for gamedev stuff.
So far it’s been four days since I and most of my colleagues were ordered not to work. I started the week getting over a cold, so didn’t do much of note Monday or Tuesday. Yesterday, I registered to take the AWS Security exam in April (my certification expires in May) and took a practice exam.
Will this last days? weeks? months? I have no idea.
Benjamin’s recent game jam entry is Rolling is Spinning. It gets pretty tricky at the end!
I did the coding, following his concept and directions. He also did the art/animation for the ball that represents the player.
The theme of the jam is “spinning”, hence the name, to remind the judges of that rolling should count as spinning.

Finished Listening: His Last Bow by Arthur Conan Doyle ๐
I’ve been checking out some older games in my Steam library that I haven’t played much. I’m not sure exactly what Jazzpunk is about yet, but I got to degauss some pigeons, and that was fun.
Just a little bit of Barbarian Blaster, the 2nd of 3 projects taught in Complete Godot 3D.
I was surprised that the first two projects are basically two dimensional (movement happens in two axis, and the camera is static). I hadn’t really considered using “3D” like that. I am now.
It turns out, I don’t have to use the “rawhide” version of Fedora just to get an updated kernel– so now the new machine is on Fedora 41, and I’m getting the kernel from the vanilla mainline repo.
If you’ve made a resolution to create your own website or blog (or have just been thinking about it) micro.one is a great way to get started. $1/month, and supports a custom domain name.
Every three or four years I get the urge to build a PC. Most of the time, the urge passes and I move on to other ideas/projects/what have you.
This time, I built the dang thing!
Component-wise, the most interesting part is probably the GPU– I was able to get my hands on an Intel Arc B580 (Battlemage!) and it’s spent the last two weeks sitting in my office, unloved. Last night, I trekked down to Microcenter to buy the rest of the computer and, after some drama (it took me a while to figure out where all the screws were, how to attach the CPU cooler, and that the motherboard wanted the 8 pin OR 8+4 power connection, but not BOTH), I have a nicely specced little PC next to my desk.
By little, I mean about the size of a mini-fridge. A “mid tower” is still pretty huge.
Battlemage support in Linux still has a ways to go. I decided to start with Fedora Rawhide, so I can get any improvements soon after they land in the kernel.
So far, I’ve been able to play some games that were unusable or pretty rough on my laptop (a circa 2016 Lenovo Carbon X1), and Godot is humming along nicely. The Abandoned Spaceship Demo was really jerky on the laptop, but runs on the new box like it’s no big deal.
Dance like no one is watching, love like you’ve never been hurt, sing like no one is listening, and never give Brian Krebs a reason to call your mom.
Somewhere along the line, I told myself a story: Before making 3D games, I needed to learn 3D, as in get a handle on 3D graphics as a general topic, and perhaps develop some expertise in something like Blender.
From talking to people at gamedev meetups, it seems like maybe that story is nonsense?
To test that theory, I’ve been working on a Godot 3D tutorial and finding that things generally makes sense. Coming from 2D, I was surprised that:
Aside from that, the additional axis, and a new set of nodes to use, most of what I’ve learned about Godot still applies. So, in 2025, I’m hoping to make some 3D games.
And, maybe learn Blender.

Finished listening: The Valley of Fear by Arthur Conan Doyle ๐
I really enjoyed this one! It makes me want to learn some more about the Molly Maguires and the non-fiction events the Pennsylvania portion story is based on.
I’ve finished the Inkscape course I was working through. I think it was worthwhile– the biggest aha! moments were: shape builder, the mesh tool, clipping shapes, symbols, and clones. I don’t think I’ll ever quite grok bezier curves.
Here’s a quick recreation of the character from Brakes Escape!

It’s unfortunate that itch.io got taken down because of an escalating set of automated processes and overreactions– but it’s got me thinking about hosting games myself. Own your data should apply to everything, not just blog posts and photos.

Finished Listening: The Return of Sherlock Holmes by Arthur Conan Doyle ๐

Currently reading: Game Magic by Jeff Howard ๐

Finished reading: Light It, Shoot It! by Graham Chaffee ๐
Honestly this felt a little rushed, it was over before I had a chance to really care about these characters.

Finished reading: The Arab of the Future 3 by Riad Sattouf ๐
I decided I was tired of faking my way through Inkscape, so I grabbed this course on sale a few days ago. I’m about an hour into the course, but feeling pretty good about it. Grids, guides, the Align & Distribute tool were all minor epiphanies.

Finished reading: The Arab of the Future 2 by Riad Sattouf ๐
Nora Reed says you should have a website
If you don’t want to learn to use technology, other people will use it for you, and they will use it to place you under their thumbs in a way that makes it as impossible to switch to something else as they can. Making a website is a great way to experiment with getting agency over your relationship with the internet, your phone, and computers.
I’ve submitted Pinball Putt to the 1-Button Game Jam. A mini-golf/pinball mashup where you need to earn enough points to pass a level, without running out of strokes. Most of the level designs and some of the art were made by my son, Benjamin.

OK, I’m pretty happy that the dethrace project exists so that I can play Carmageddon natively on linux.
My “chill mini golf game” for the 1-Button Jam is coming together– though I don’t think I’ll be done for the 5pm deadline tomorrow. Luckily, the organizer said late submissions aren’t a problem, so I’m going to spend a few more days on it.

I had hoped to complete a couple more obstacles/gadgets today, but only got this pinball-style bumper working.
I’m happy with the mouse graphic that appears during attract mode, which doubles as a teaching tool.
โ RossK (Nellee Hooper Edit) (@ross.karchner.com) November 28, 2024 at 12:23 AM
[image or embed]
(I’m having some issues uploading video on micro.blog this week– so I’m uploading to Bluesky and embedding those posts here. Technology!)
I’ve added an “attract mode” bot that plays plausibly but seldom successfully. It can’t really deal with obstacles yet.
I’ve migrated fediverse following/followers over to my profile on mastodon.gamedev.place. ross.karchner.com will now cross-post to that account.
I’ve decided I want the full-fat Mastodon experience again, for now at least.
Working on a chill mini-golf game for the 1-Button Jam.
โ RossK (Nellee Hooper Edit) ([@ross.karchner.com](https://ross.karchner.com)) November 26, 2024 at 12:01 AM
[image or embed]

Finished reading: The Arab of the Future by Riad Sattouf ๐
The Smithsonian has a model of the ship from Close Encounters of the 3rd kind. If you look closely you can find R2D2 and a couple of other Easter eggs.

I was on the fence a bit, but I allowed my yearly micro.blog subscription renew today.
There are a thousand ways to put a site or blog up online, but I like the apps, and how micro bridges to BlueSky and the fediverse. I also enjoy the bookshelf feature, which seems like a quirky one-off (I mean, why not movies, TV, and games?) – which somehow makes it more lovely.

Finished Listening: The Hound of the Baskervilles by Arthur Conan Doyle ๐

Finished reading: Delights: a Story of Hieronymus Bosch by Guy Colwell ๐
I had a couple of ideas for the Github Game Off, but I’m kind of feeling more motivated to work on SpinDoc– though I think my plan this month is to focus on building a level editor.
But, hmm, the 20 Second Game Jam starts this week as well, and that was really fun last year. We’ll see.

Currently reading: Empire of Normality by Robert Chapman ๐
Not much obvious has changed since my last post about SpinDoc– I did rework a lot of how the wands work behind the scenes. I had been rotating the wand with code, but now it’s a RigidBody2d, with rotation being handled by the physics engine.

Finished reading: The Memoirs of Sherlock Holmes by Arthur Conan Doyle ๐

Finished reading: Little Black Book by Jeff McComsey ๐

Finished reading: Medea by Blandine Le Callet ๐

Currently reading: Medea by Blandine Le Callet ๐
Maybe it’s time for for a little station ID?
Even though you might be seeing this on Mastodon, Bluesky, or elsewhere– you’re reading my (Ross’s) blog, which lives at ross.karchner.com. If that is distressing news, I apologize.
My posts get POSSE’d to other services via micro.blog.

Finished reading: Air Volume 3 by G. Willow Wilson ๐
Who wants to start a news show with me?


Finished reading: Air Volume 2 by G. Willow Wilson ๐
Some progress on “SpinDoc”:
By the end of this month, I’d like to have the project in a state that at least resembles a game: a couple of levels, a few missing Spin Doctor features (in particular, doors), some sound and animation. In November, I’ll focus on the GitHub Game Off. When I get back to SpinDoc after that, it’ll be more level design, some original mechanics I’ve been thinking off, and polish.

Finished reading: Air Volume 1 by G. Willow Wilson ๐

Finished Listening: Adventures of Sherlock Holmes by Arthur Conan Doyle ๐

Finished reading: Batman: The Killing Joke by Alan Moore ๐

Finished reading: Marvels ๐


Finished reading: How to Read Superhero Comics and why by Geoff Klock ๐
This was more academic than I was expecting (full of words like ‘misprision’ and ‘kenosis’), but Klock makes a convincing case that the books he writes about exist in conversation with each other, the comics of past eras, and criticism like Seduction of the Innocent.
I’m not sure if that interplay is supposed to answer the ‘why’ question by itself, but it does have me somewhat intrigued– at least enough to check out some books I’ve missed (like Marvels, Astro City, Kingdom Come, America’s Best Comics, and Grant Morrison’s JLA).
I’ve been working through Firebelly’s new course: Create a Complete Grid-Based Puzzle Game in Godot 4 with C#.
Why? I learned a ton by taking his earlier 2D platformer course, and this looks to be a tilemap-heavy project, which is something I’ve been feeling rusty on. I’ve also been thinking that some exposure to C# would be helpful.
So far, I’m enjoying the course content, but C# doesn’t feel… comfortable yet. We’ll see if that changes by the end.
It’s nothing to be too proud of yet, but I’ve made some progress on my Spin Doctor remake/tribute/spiritual successor/what have you. This is a recreation of an SD level. (the darker dot represents the level goal, but doesn’t do anything yet)
Don’t worry about the smoke


Currently reading: How to Read Superhero Comics and why by Geoff Klock ๐
Recommendation from Robin Sloan’s newsletter.
The kiddo and I have been playing some Warcraft 2. It’s early yet, but I’m a little surprised by how “scorched earth” some of these scenarios are. It’s not a victory until you’ve completely wiped the enemy off of the map: even farms, peons/peasants, blacksmiths and oil tankers.
The ratings are in, and Quack Circuits… ranked near the bottom in most categories (there were 156 submissions).

Getting 21st in “originality” suits me just fine though– that (or whatever similar category is available, like “innovation”) is usually where I do best, and doing well there is the kind of thing that makes me think I have something to contribute to the game dev world.
The comments were generally positive, which isn’t unusual– game jam participants are a friendly bunch.
For 8 of the 9 days of the jam, I was working on a fairly straightforward puzzle game. In the final 24 hours, I pivoted to making the puzzles a mini-game in a larger story of a duck trying to escape… something (in my mind, it was an animal testing lab, but that never made it to the final product). Would it have ranked higher if I spent that last day refining the puzzle game? Maybe? I can’t know.
One thing I did for the first time, was get deployment nailed down first. Before I wrote a line of game code, I had the base project all set up with Github Actions and successfully deploying the base project to itch.io. I’ll definitely keep doing that for future projects.
This morning I was thinking back on some videos I’ve watched (like this) about abandoned NFT games, and it occurred to me that such a virtual world might be a compelling setting for a new game.
A world of half-built and/or I’ll-conceived villas and islands, bugs (exploitable?) that will never be fixed, bad algorithmic art, a massively deflated in-game currency. Everything you see was put there by VC, whales, crypto true believers, speculators, scammers and dupes.
Any random Molly White blog post could be a plot line.

Finished Listening: The Sign of the Four by SIR ARTHUR CONAN DOYLE ๐
So, I had a serviceable puzzle game. The feedback in the Karchner household was pretty much:
That’s boring. You should make the game less boring.
So now, the puzzles are a minigame in a larger… duck….quest.. thing. I wouldn’t exactly say it works. But it kind of works?
I still like the puzzles.

I’ve updated the deployment pipelines for Pong Wars and the current WIP to use Godot 4.3.
While I was at it, I updated the Pong Wars pipeline to push directly to itch.io. Previously, it was an iframe pointing to the Github Pages version, which never looked quite right.
Despite previous predictions, I haven’t gotten a chance to work on improving the art and adding sound, music, polish, etc yet. I’ve got until 4pm Sunday to make improvements.
But, I can at least call it a game now! There are three puzzles. I think that’s enough for a jam entry.
If Sour Patch Kids made a beer, it’d taste like ‘Volcano Sauce’.
(please send more volcano sauce)

Currently reading: Policy as Code by Jimmy Ray ๐

Finished Listening: A Study in Scarlet by Arthur Conan Doyle ๐
(I’m actually listening to Sherlock Holmes: The Definitive Collection, read by Stephen Fry– which is as excellent as you would suspect. At 72 hours, I’ll probably be listening to this into 2025.)
It’s not a game yet– but it’s interactive! By tomorrow night, I should be able to have a couple of playable levels, and that will leave me most of a week (including the weekend) to focus on improving the graphics, adding sound, and other fit-and-finish work.
A feeble #screenshotsaturday for my Godot Wild Jam work in progress. The current idea is something like Pipe Mania meets Snap Crcuits. This screenshot does not convey any of that, but I did get to the point where the game can detect whether a complete circuit has been made and react accordingly.

The theme is out for Godot Wild Jam #72. It’s a good thing I spent time last night finally figuring out how to make 2D lighting and shadows work…

I decided to dip into Threads a bit over the last few days: it’s mostly people talking about Twitter, Elon Musk, and the new Deadpool movie.
One of those things is interesting to me, but I can wait until it’s on Disney Plus.
When I was writing this post, I almost committed to sitting out game jams for a while, in order to focus on a small number of longer-term projects. Honestly, I could use some momentum right now, and I feel the most momentum after finishing a game jam.
So, I’m signed up for Godot Wild Jam 72.
This time around, I’m going to try to make a really simple game, and focus on the visuals and providing a quality, polished experience. In other words, I won’t try to design a whole-ass magic system.
(though thanks to a recent humble bundle, I’m looking forward to diving in to Game Magic: A Designer’s Guide to Magic Systems in Theory and Practice.)
The previously seen water shader, applied to a sphere (by request):

Finished reading: In Perpetuity by Maria and Peter Hoey ๐

Finished Listening: How To Write Funny by Scott Dikkers ๐
Switched the blog theme to Sumo by Matt Langford.
Finishing up Godot 4 Shaders: Craft Stunning Visuals, here are some 3D shaders:
I’m enjoying Kaan Alpar’s Godot Shaders course, and finished the 2D section last night. In this video, the animated background, greyscale, distortion, dissolve, masking (the spiky block) and re-colored trophies are all achieved with shaders.

Currently listening: How To Write Funny by Scott Dikkers ๐

Finished Listening: Slow Productivity by Cal Newport ๐
Two years ago, while my son was attending an event at the library, I spent some time flipping through a book about the Unity game engine (maybe this one?). It wasn’t intimidating, and looked fun. I came away thinking: “huh, I could make games”.
Then I got home and couldn’t make Unity run on my laptop. There’s a happy ending, though: I found Godot, which ran just fine.
I followed a few tutorials to make a flappy bird clone, a breakout clone, a simple platformer, and made progress on a much larger platformer, but after a few months I kind of drifted to other pursuits.
One year ago, I decided to dive back in an embrace game development as a serious hobby. I finished the platformer tutorial, and started entering game jams. Between July 2023 and June 2024, I made six games. There were no unqualified successes, but I usually did OK in one or more categories, like “innovation”, “mechanics”, or “fun”. What I’ve proved to myself is that I’m pretty good at coming up with ideas for interesting game mechanics, and have enough Godot-fu to turn those ideas into actual software that someone can play, and even have fun playing.
Honestly, this makes me feel a little like a wizard.
BUT a good game is more than just a collection of playable mechanics, and a successful game takes way more than just interesting ideas. It takes quality, style, a well-designed progression/difficulty curve, marketing (and a market!), and good timing.
I think my next step is to take a couple of the ideas I’ve worked on (either as jam entries, or other projects) and try to make good, complete, games out of them. I’m not sure about trying to market anything, but I’d at least like to have one or more games that are, in theory at least, marketable.
I think three of the six game jam entries represent concepts that could be developed further (Beat Game, Zummoning, and Brakes Escape), but I should probably narrow it down to one or two.
I’d also like to keep working on a Spin Doctor-inspired puzzle game, and a cybersecurity-themed game I’m still fleshing out (working title: “CISO Clicker”). I’ll try to use #screenshotsaturday and local meetups as my drumbeat: in a successful week or month, I’ll have some progress to share.
And I guess, I’ll plan to post a new retrospective/update in July 2025!
I’m working on a tech-company name generator for a project, some examples from a recent run:
In the NYT top 100 books of the 21st century, I’ve only read the two graphic novels and a book about comic books authors…


Currently listening: Slow Productivity by Cal Newport ๐

Finished Listening: Moonbound by Robin Sloan ๐
It’s been a while since I’ve had the sensation of being sad when a book ends. I want to spend more time with these characters and places.

Currently reading: Moby-Dick by Herman Melville ๐
Not my first time starting, but maybe recording it here will motivate me to finish.

Finished reading: Further Explorations: 50 Years of Text Games by Aaron A Reed ๐

Currently reading: Further Explorations: 50 Years of Text Games by Aaron A Reed ๐
Finished reading: My Favorite Thing Is Monsters Book Two by Emil Ferris ๐

Got tickets for Fredericksburg Comic Con.

Currently reading: My Favorite Thing Is Monsters Book Two by Emil Ferris ๐

Finished reading: 50 Years of Text Games: From Oregon Trail to AI Dungeon by Aaron A Reed ๐

Currently listening: Moonbound by Robin Sloan ๐
Ever since I started tinkering with gamedev (and Godot specifically), one thing I’ve periodically attempted is a recreation of the mac game Spin Doctor (released on PC and SNES as “Clockwerx”)
I started over recently, but I’ve got the basic swing/flip/bounce movement working. #screenshotsaturday

Finished Listening: Whole Earth by John Markoff ๐
I’ve been waiting my whole life for this email.

My excellent son Benjamin(10) has created BenKardian, his two-player take on the classic solitaire game Accordian.

Currently reading: 50 Years of Text Games: From Oregon Trail to AI Dungeon by Aaron A Reed ๐

Finished reading: The Snare of the Tree, and Other Perilous Seductions: Essays on Dangers in Game Design by Alexis Kennedy ๐
Much shorter than the other two game design books I’ve recently read (including the other book from Alexis Kennedy), but more inspiring and actionable, I think.

Currently reading: The Snare of the Tree, and Other Perilous Seductions: Essays on Dangers in Game Design by Alexis Kennedy ๐

Finished reading: Against Worldbuilding, and Other Provocations by Alexis Kennedy ๐
Good stuff, I’ll probably go back to the more practical chapters (mostly in part 2) again.
Current view:


Finished reading: Level Up! The Guide to Great Video Game Design by Scott Rogers ๐
I skimmed some chapters, but will definitely keep it around for reference.
GameDev.tv jam results for The Last Stan: I’m happy to have gotten #59 (out of over 1000) in the mechanics category, and a decent showing otherwise(except for “theme”).
My favorite comments call the game “weirdly relaxing” and “quite therapeutic”.

I don’t like this new world where swiping your credit card at a business automatically signs you up to receive their marketing emails.
“The Last Stan” is live on itch.io and submitted to the gamedev.tv jam. It’s a platformer, with typing.
It’s not my favorite thing I’ve made, but I will say that it’s got some charm (a good deal of which comes from the Kenney art and background music by Seth Makes Sounds).
Hey, an actual #screenshotsaturday :
For the gamedev.tv jam, I’m working on a platformer where you escape alien ships and defeat ground-based enemies by typing. All art by Kenney.
I spent the first part of my life in the Hazleton, PA area. Here’s a really cool 10 minute video about the “city under the city”, a legacy of the coal industry.
I never thought I’d say this, but…
I get too many emails from Run the Jewels.

Currently listening: Whole Earth by John Markoff ๐
A year or two back, I listened to Tom Wolfe’s “The Electric Kool-Aid Acid Test”, and soon after, for unrelated reasons, started reading some stuff about the early years of personal computing (including Markoff’s “What the Dormouse Said”).
Stewart Brand was the common thread running through all of it.

Finished Listening: The Ultimate History of Video Games, Volume 2 by Steven L. Kent ๐
I think I’ll try to make something for this year’s gamedev.tv jam(which kicks off tonight), if the theme is interesting.
Ten days to work, and every entry gets a free course.
I’ve made a few minor fixes to Zummoning recently:

Currently reading: Against Worldbuilding, and Other Provocations by Alexis Kennedy ๐
Star Trek: Deep Space 9, or The Continuing Adventures of Miles O’Brien.
I spent some time last night and this morning learning about Orchestrator, a visual scripting plugin for Godot. I was mostly taking a look to see if my son might want to try it out, as an alternative to “regular” coding. He knows Scratch pretty well, but hasn’t taken to written coding yet. I thought Orchestrator might offer him a way to make stuff happen in Godot, using a style of programming he’s used to.
At first, I was amused and appalled that in an example, this short line of gdscript:
rotation += angular_speed * delta
… equated to a six-node graph. After completing the step by step tutorial, I appreciated it more.
I’m missing the words for describing this coherently, but, to me, it encourages a different way of thinking about the functions you write. Instead of the step-wise, imperative march from input (or not) to return value (or not), you kind of need to start at the end, with the impact you want to cause, and then work out the information and logic needed to inform that action.
I haven’t spent much time studying (let alone doing) functional programming, but… is that what functional programming is like?
I’m not sure I’ll reach for Orchestrator in my own projects, and I’m not sure the kiddo will either. I did show him the results I was able to get it, and if he wants to learn more I’ll certainly work with him. I was wrong to assume that it’s anything like Scratch, and I don’t think it really improves on gdscript in terms of reducing the cognitive work involved in programming. Orchestrator doesn’t simplify Godot.
I used the Pong Wars deployment as an excuse to try out GitHub actions. It’s nice! Almost too nice, like the fact that it’s free makes me suspicious.
I ended up struggling with what I thought would be the easy part– GitHub pages. Back when I was a young man, all you needed to do was push your site files to the gh-pages branch. That still works, after you do some extra configuration. It was only the next day that I figured out what the problem is.
Godot-CI worked pretty well, though I needed to build my own version of the container image, because I’m not using a supported Godot version. I’m using a pre-release build of Godot 4.3, because I wanted to take advantage of the improvements to web exports.
I’ve published my Godot re-creation of Pong Wars by Koen van Gilst on GitHub (and embedded it below!) It’s not exactly a game– more of a “visual toy”. I did add some fun extras:
People who think the web is dead or dying haven’t used the Domino’s Pizza Tracker.
I recently updated my /games page so that each game has video.

Finished reading: My Favorite Thing Is Monsters by Emil Ferris ๐
The kiddo and I had a good time at NOVA Game Developers Meetup this afternoon! It was fun to play games, show what we’ve worked on, and chat with other devs.
Today is Free Comic Day, for those who observe

It’s like they really see me.

Honestly, I had convinced myself that I was going to rank higher in Godot Wild Jam #68, at least in the originality category. Being in the top third for originality is OK, though.
Much of the written feedback (even on the much rougher Ludum Dare version) supports the idea that this is worth developing further. I’m thinking of digging in and trying to make the best version of “Zummoning” that I can, and see where I am at the end of summer.

Here’s footage of gamedev and streamer ObsidianBlk playing The Zummoning!. He’s got some (entirely fair) critical feedback, which I respond to (in writing) here.
I would have put more work into the game description if I knew it was going to get a dramatic reading…

Currently reading: My Favorite Thing Is Monsters by Emil Ferris ๐
Part 2 comes out next month, and I want to refresh my memory of the characters and unresolved mysteries.

Finished Listening: The Sandman Vol. 8: Worlds’ End by Neil Gaiman ๐
I’ve made many improvements in the new version of “The Zummoning” submitted to Godot Wild Jam. Unfortunately, the name isn’t one of them. Oh well.
It’s still far from a professional production. But, I think it’s fun?
One thought I had while relaxing after submission: the game seems to come down to the decision every turn to play a strong creature on a single location, or weak(er) creatures on two locations. Maybe the card system is sort of extraneous?

I’m cleaning up “The Zummoning” for submission to Godot Wild Jam this weekend (The GWJ folks usually disallow games submitted to other jams, but make exceptions sometimes when schedules completely overlap, which was the case with Ludum Dare this month).
Tonight, I hope to improve the card-combining systems and remove some of the annoying gaps.
If I get more time before the deadline (Sunday night), I hope to add some UI improvements (primarily, make it less mysterious what the cards do, alone and in combination). I’d also like to make it clearer what’s actually happening during the combat phase.

As the screenshot shows, I’ve at least added a background image and improved the layout, since the LD submissions. Not obvious from the screenshot, the color of the spooky forest background gradually shifts between a handful of hues. It’s stupid simple, but I find the effect really pleasing. The (gdscript) code is just:
func next_color():
var colors = [
Color.DARK_RED,
Color.DARK_GREEN,
Color.DARK_BLUE,
Color.DARK_ORANGE,
Color.DARK_OLIVE_GREEN,
Color.DARK_MAGENTA]
var tween = get_tree().create_tween()
tween.tween_property($SpookyForest,"modulate", colors.pick_random(),15)
The next_color function is connected to a timer that fires every 15 seconds.
If this works, then this blog post was published with Godot!


Finished Listening: The Sandman Vol. 7: Brief Lives by Neil Gaiman ๐
“The Zummoning” (which only occurred to me when I realized I had to name the thing) has been submitted to Ludum Dare 55. It needs a TON of work, but… you can play it. It’s a game. That’s something. If you’re going to try it, please read the caveats on the LD page or itch.io.

I think I’m onto something promising, but I’m not feeling confident that this will actually be a fun game and not look like ass by the jam deadline (tomorrow, 9pm). I’ll sleep on it, but this might just end up being a Godot Wild Jam submission (which is fair game, since they overlap) in six days, instead of a Ludum Dare entry tomorrow.
19 or so hours into this 72-hour game jam, and I’m only just starting to code. So far, I’ve spent time researching demons, sketching out a magic system, and entering cards into a spreadsheet. I think I read somewhere that game designers mostly live in spreadsheets. Maybe I’m progressing?
What privacy laws only apply to ages 13-15?

Working on a Godot recreation of Pong Wars. I might write this up as a tutorial?
I struggle to resist:

Currently reading: Make Your Own Pixel Art by Jennifer Dawe ๐
I’ve started a few video tutorials on pixel art, but didn’t manage to stick with it. Maybe a book will work better for me.

Currently listening: The Sandman Vol. 7: Brief Lives by Neil Gaiman ๐
I love that electoral-vote.com basically looks the same as it did in 2000.
It seems like my schedule is clear enough that I’ll be able to participate in Ludum Dare 55, April 12-15. It was fun last time. My goal on this one is just to improve my scores from LD54:

At the kiddo’s taekwondo class, where it’s “blocking week”. Somehow, it’s never “ducking week” or “running away week”.
Achievement unlocked: pirating the Webelos Handbook.
(I swear, we have a copy in the house, I just can’t find it)
We rejoined Netflix this week, and I’m a little surprised by how big the included library of Android games has gotten. Any recommendations? I’ve played Terra Nil before but didn’t get too far, so I might revisit that. ๐ฎ
This feels a bit like cheating: but immediately after my last post on the topic, I built a paper prototype of the Spoon Theory game using index cards. I’m going to count that as hitting my goal to have a prototype by the end of the month.
For April and May, I want to return to Brakes Escape– adding polish, more variability in scenery and obstacles, and perhaps some power ups. By the end of June, I want to have it in the Google Play Store.

Finished Listening: The Sandman Vol. 5: A Game of You by Neil Gaiman ๐
He’s not “taking a bath”, he’s in the bath tub.
I still like my spoon-theory game concept (as amended), though there’s a lingering skepticism over whether the thing I’ve described will be fun and actually a challenge to solve– but that’s what testing and iteration are for.
I’ve slept on it for a week. I now have 7 more days until my arbitrary, self-imposed deadline to build the prototype. Let’s go. Start. Now.
(Is blogging this itself procrastination? Maybe.)
I assumed that replacing our aged wireless router (whatever Verizon gave us, 12 or more years ago?) would improve performance, but kind of surprised that (according to speed tests) our internet is now twice as fast.
Is it possible to take what Iโve described and actually make it fun and challenging? Or, will the right path (or a right path) always be obvious at a glance?
Now that I’ve thought about it some more, I think part of the answer here is: the player shouldn’t be the only entity moving across the board. There should be NPC’s representing social interactions that the player may want to encounter (that add spoons) and others that the player will want to avoid (that take away spoons). They should move in predictable patterns, and the player’s challenge becomes:
That sounds more like a puzzle.
Found this list of ideas I had posted to Twitter over some number of years. It’s not all gold, but I still like a few of them:
I vaguely recall trying to build this:
This is basically haveibeenpwned.com:
Here’s my initial concept for the spoon theory game:
Each level/puzzle is a grid, with a starting location and one or more “must do” spaces, zero or more bonus spaces, and other spaces that either add or remove “spoons” (which can be thought of as stamina or energy). The player’s challenge is to design a route that connects the starting location to (at least) each “must do” location in order to complete the level, without running out of spoons or turns.
Levels can vary in size, number of must do or bonus spaces, and the number of turns available to complete the puzzle. I currently plan to offer unlimited undo.
Example tiles:
Perhaps you earn a star rating on each level (ala Angry Birds), 1 star for passing, two for passing and getting some (not all) bonuses, and three for passing and getting all bonuses. You could then revisit levels to increase your stars.
Spoon theory lends itself pretty naturally to games– stamina/energy/“spoons” are a limited resource you need to manage, and I’m not the first to attempt to translate it into a game mechanic. You might even see the reverse– video games as a metaphor for how some people need to think about and manage their energy.
Most of the games I’ve seen are choose-your-own-adventure-style interactive stories, where you play through the day of a character, and make decisions that cost or earn spoons. If you search itch.io for “spoon theory”, you’ll get a number of those, with a few variations. If you search on Steam, you’ll find Robin, which fits that description as well.
Some other things I found:
I guess my idea isn’t not a choose-your-own-adventure, it’s just that all of the the choices and their consequences are revealed at once, and the challenge is in planning your path through the day, managing your spoons and time.
Is it possible to take what I’ve described and actually make it fun and challenging? Or, will the right path (or a right path) always be obvious at a glance?
I’m not sure I can know without building it. And if that is the case, then having a working prototype will allow me to troubleshoot the gameplay. I hope to have that prototype by the end of the month.
One of my previous complaints about the game was that the water was kind ofโฆ blah. I added this shader and now I like it!...

Finished reading: Game Design Deep Dive: Platformers by Joshua Bycer ๐

Currently listening: The Sandman Vol. 4: Season of Mists by Neil Gaiman ๐
This is my favorite storyline in the whole Sandman series– probably because it’s Lucifer-heavy, and I love Mike Carey’s Lucifer spinoff (maybe more than Sandman itself).

Finished reading: The Bullet Journal Method by Ryder Carroll ๐
I skimmed or skipped some of the more philosophical material (like a chapter on “radiance”), but I have some good ideas about how to reinvigorate my bujo practice:

Currently reading: The Bullet Journal Method by Ryder Carroll ๐
I’ve been using a bullet journal for a couple of years now, but lately, it’s been… I dunno. It’s a to-do list. I think I need to reconnect with bujo as a mindfulness practice, and not just a task tracker. When it was working well, I felt more effective, not just productive. I want to get that back.
I’ve never read the book before. Maybe it’ll help?
I was thinking about watching Midsommer, but reading the Wikipedia article was just enough horror for me.

Finished Listening: The Creative Act by Rick Rubin ๐
Spending the evening at Fairfax County Government Center, shuttling election materials between the loading dock (where I found this sign) and offices upstairs.


Currently reading: Game Design Deep Dive: Platformers by Joshua Bycer ๐

Finished Listening: The Sandman Vol. 2: The Doll’s House by Neil Gaiman ๐
One thing I’ve learned about myself after participating in a couple of game jams: I like having deadlines.
So, I’m going to try setting a deadline for a personal project that I’ve been meaning to make progress on: a game about spoon theory. I want to have something playable (not necessarily done) by the end of March.
My aim here is:
… with a bonus goal of the game being somewhat relaxing and not too taxing. The game should be a good stim. It should restore spoons, rather than take them away.
I’ve done a round of post-jam tweaking on Brakes Escape. The game no longer simply stops generating new platforms (and walls!) once you hit a certain level, sound effects have been added, and some bugs have been fixed. To make things a little more difficult, I’ve introduced “solid” platforms that you can’t jump through, and made the rising water gradually increase in speed.
There are still some things I’m unsatisfied with:
So, what’s next? I think I want to adapt the game for mobile, while working on the above items.
I do plan to update the itch.io web version at least once more, to generate a single-threaded version once Godot 4.3 is released (soon?).

Currently listening: The Creative Act by Rick Rubin ๐
Surprised that, for a published-this-month technical book, Thrift Books had more inventory on hand and a better price than Amazon.
Results are in– I was hoping for higher scores generally , but I’m pleased with getting #14 in the “fun” category.
I am working on an update that fixes the most glaring bugs, and adds audio, a score, and other refinements, which I hope to upload next week.
“Flash of light-mode content” is the new flash of unstyled content.

Some lessons learned from my recent game jam experience:
Godot features I attempted to re-create (poorly)
Godot features and nodes that I had never used before (besides Path2D/PathFollow2D and one-way collisions)
The only add-on I used was Godot State Charts, which continues to be the bees knees.
Brakes Escape, my submission to Godot Wild Jam #66, is live on itch.io. There are a couple of bugs, half-baked feaures , and other compromises made in the name of having something shippable by the deadline, but I think it’s a promising start to a more complete game.
Previously, I posted two ideas for Godot Wild Jam 66. I ended up spending a few days on the first one and realized I didn’t like where it was going and I didn’t feel good about getting it into shape for the end of the jam. So, I switched gears to the second one (a variation on an idea I’d already been tinkering with).
It’s going better, but I’m not sure it’ll be shippable by the deadline (4pm tomorrow). Still, it’s nice to have some momentum. I’m really happy with how the player character moves, but the game definitely needs more.. game. We’ll see how for I get it tomorrow.
I’m the PTA volunteer keeping an eye on our elementary school’s “tech club” again this session, and this time they’re going to be programming drones with Python.
I’m… a little jealous?
I’ve been pretty lazy about static typing in GDScript - but it’s pretty cool to see that there are performance benefits.

Want to read: My Favorite Thing Is Monsters Book Two by Emil Ferris ๐
The first book was great, and I’m excited to read what happens next. Maybe I’ll re-read the first one before May.
Nah I’m good Samsung

Current thinking for the jam, either:
I’m signed up for Godot Wild Jam #66, with a theme of “Escape”– which is pretty straightforward, as far as game jam themes go. I do think it’s quite cool that GWJ has accessibility as a rating category, and I’m going to try to see how much of the accessibility guidelines I can meet.
The jam goes for nine days. My current thinking on timing is: have something basically working by early next week, then use the rest of the time to polish the graphics, UI, and audio.

Currently listening: The Sandman Vol. 2: The Doll’s House by Neil Gaiman ๐
(actually, re-listening to Act I of the Audible adaptation of The Sandman, but I’m in the section that corresponds to The Dolls House)

Finished reading: Against Technoableism: Rethinking Who Needs Improvement (A Norton Short) by Ashley Shew ๐
My son and I are still making tweaks to the roguelike that resulted from following @selinadev@indiepocalypse.social’s tutorial: a new spell, visual effects, weapons, and new enemies. I enjoy the collaboration, so we’ll probably keep it going for a while.
The most notable new feature is a minimap! It still needs work, but I’m happy that I was able to get it working. This is my first time writing Godot code that generates a graphic from scratch. Every pixel in the minimap represents one tile in the current dungeon. Right now, it draws the entire graphic (walks the entire array of tiles) on every turn, which seems excessive and dumb. On the other hand, it’s performing OK, so “fixing” that might be a premature optimization.
In theory, the next Godot Wild Jam starts next Friday, I was thinking I might give that a try.

The lyrics to “Parents Just Donโt Understand” aren’t as lighthearted as I remember.

Currently reading: Against Technoableism: Rethinking Who Needs Improvement (A Norton Short) by Ashley Shew ๐
One of the more annoying differences between gdscript and Python: that Python capitalizes True and False, and gdscript does not.

Finished reading: Bea Wolf by Zach Weinersmith ๐

Currently reading: Bea Wolf by Zach Weinersmith ๐
Checked this out for the kid, but I’m a grown-up and I can read it first if I want to.

Finished Listening: Story by Robert McKee ๐
Screen shake makes pretty much anything better.
I did the thing! I finished all 13 parts of Selinadev’s Godot 4 Roguelike tutorial.
There were a good number of things that were new to me: procedural map generation, AStar navigation, custom resources, and using those custom resources to compose entities. I’m happy with the knowledge gained by working through this.
The end product is… not my cup of tea, really.
On roguelikes generally: When I was a kid, one of the computers available to me had nethack installed. I poked around a bit, but it never really clicked for me (and the same computer had SimCity! ). One turn-based roguelike I do play these days is Hoplite. I think what I like about Hoplite is that it plays almost like a board or puzzle game, the challenge is in reasoning about how to get through the level safely.
On this particular game: after adding armor, weapons, and the power-ups available when you gain a level, combat is super easy, and the challenge curve stops when you get 8 levels deep. I appreciate the 1-bit art style, but it kills me a bit that a game that includes fireballs and lighting attack’s doesn’t make those things visually interesting events– baddies take damage, maybe die, and a message is logged. This isn’t really the author’s fault, since she adapted a tutorial that builds a classic terminal/console game. It’s just a shame this leaves behind a lot of the cool stuff Godot can do.
My son/project manager designed some new enemies and other graphics to be incorporate in the game, and I want to honor that effort by integrating those assets and ideas. I’ll probably spend another week doing that and maybe looking for other ways to increase the usability and fun factor.
I generally don’t care much for professional sports, but I definitely feel some nostalgia for the time before sports betting was everywhere.
I received a (legit) notice of eligibility for this Verizon settlement in my junk email folder.
I know there are best practices and a class of professionals focused on email deliverability. I wonder if the opposite exists? A service for companies who are legally obligated to send out notices of some sort, but would prefer they not actually be received.
(to be clear, I’m not claiming that’s what’s happening here)

Currently reading: The Treasure of the Black Swan by Paco Roca ๐

Finished reading: Game Programming Patterns by Robert Nystrom ๐
Honestly, I skimmed quite a bit– some parts seem more geared to engine developers. It’s probably good to understand some of the thinking that goes into engine development at least, even if I suspect I’ll never be doing that myself.
This is definitely a book I’ll go back to for reference. The whole book is available online.

I’ve finished part 11 of roguelike tutorial. Now, you can delve deeper into the dungeon, and the player gains experience points and levels. I’m excited about the next part:
Our character can now go deeper into the dungeon. However, right now all the floors are identical in their challenge. The RNG will mean that they will encounter different mixtures of monsters and items, but it still lacks progression. So next time we will look at a way to increase both the difficulty and the reward the deeper the player goes
This pepper has a pepper in it!

This history of gamification within games was more interesting than I expected. These are the game-y things like experience points, levels, and achievements that are often used to make non-games more fun or addictive.
The article is mostly judgement-free, but does include some criticism of the effect these ideas have had on games:
This is really the heart of why I think gamification harms player agency: gamification kills curiosity. If you donโt get any points, items, or achievements for the thing, the thing doesnโt matter. When the whole game is built around extrinsic rewards, you lose the playerโs intrinsic motivation along the way. Thereโs simply no room for explorative curiosity in such loops. It becomes a โcontent treadmillโ for both players and the developers.
Seeing chatter about a new BBEdit release has me a little nostalgic. I used BBEdit Lite while HTML-ifying recipes for Hershey in the 90’s.
I’m mostly on Linux these days (outside of work) and BBEdit is Mac-only.
I’m up to Part 10 of @selinadev@indiepocalypse.social’s Godot 4 Roguelike tutorial. What’s new?
My son suggested adding some instructions on the main menu screen. He’s basically my project manager at this point.
… and that is the most words I’ve written for public consumption, in quite a long time.
Via CRASH THE ARCADE, I learned of Matt Mullenweg’s birthday wish:
I want you to blog.
Publish a post. About anything! It can be long or short, a photo or a video, maybe a quote or a link to something you found interesting. Donโt sweat it. Just blog. Share something you created, or amplify something you enjoyed. It doesnโt take much. The act of publishing will be a gift for you and me.
I thought it might be interesting to use this as an excuse to collect a sort of history or timeline of my blogging, and memorialize the various iterations of karchner.com and related web things I’ve built and torn down over a quarter century.
I definitely had “home pages” on services like GeoCities and Angelfire, but I don’t remember much. I think there were Ayn Rand quotes involved.
This might be hard to believe, but in 11th grade I was an officer in our chapter of Future Farmers of America, and had built a homepage for the chapter.
I’m fuzzy on the order of events here, but somehow one of the MHS college/career counselors hooked me up with an internship interview with a guy at Hershey Foods, who was impressed that my FFA site used frames and hired me! The school loaned me a Powerbook, and I was paid a hourly rate to convert recipes from Word documents into HTML for Hershey and other brands it owned (at that time, this included a lot of pasta brands, like Ronzoni).
A person I worked with at Hershey connected me with a summer internship at a web design firm in Mt Gretna, PA, called Kindle Design Group. Kindle Design Group owned “kindle.com” before Amazon. I wonder if they made some money from that?
I think I continued doing Hershey stuff during the year after that. Between high-school and college I spent a summer working at a harness-racing magazine called “Times: In Harness”. I can’t find much on the web about T:IH right now, but here’s an excellent TV commercial.
I had a homepage on an RIT server. The things I remember are:
This was peak “dotcom” era, and when I wasn’t learning from RIT’s excellent teachers, I spent a good amount of my time working on terrible internet ideas, as was the fashion of the time. Some of the terrible ideas were:
In this era I was reading Scripting News a lot, and I spent time tinkering with some of the stuff that Dave Winer and Userland were putting out, like editthispage.com and weblogs.com. I definitely maintained something of a personal blog on one of these services, and a Nelly Furtado fan-site.
I think this is also when I got my hands on the ‘karchner.com’ domain. Someone reached out who had bought it accidentally (while building a site for Kartchner Caverns) and I was able to buy it from them.
What I wasn’t doing so much, was studying and going to class. I left RIT after two years without a degree.
I moved in with my mother, who had an apartment in Harrisburg at the time. Work-wise, I got involved with a web hosting startup that didn’t really go anywhere, worked at Blockbuster Video, spent a few years at Earthlink before going to Knowledge Planet(which later became part of Mzinga).
I think it was in the Earthlink era that I started a blog on karchner.com, using Movable Type, but I also recall experimenting with Radio Userland. The oldest version of karchner.com I can find on the wayback machine was using Radio Userland, so perhaps that was first?
This was the time period when journalists thought blogging was interesting/weird/scary, and I actually managed to get written about:
I was really excited about RSS in those days, and the possibilities around not just using an RSS reader to read a bunch of sites in one place (though that was cool!), but as a way to programmatically mix content together in interesting ways. The first of these was “harrisburgblogs.com”, which was a simple feed-of-feeds: all of the Central PA bloggers I knew about, in one place. People seemed to like it.

OK, what if there was a “Harrisburg Blogs” for everyone? I moved on to creating something new, called “Localfeeds”, which did the same trick for cities around the world. Instead of using a hand-selected list of feeds, I combined two ideas:
With those two details, I could process a big list of sites, and sites that had both of those things were added to the database. The result looked like this.

Localfeeds got some attention in the wider world, and was written about in an issue of Esther Dyson’s Release 1.0, blogs, and podcasts, and got me invited to be on a panel at the first Bloggercon.
After moving to the DC area, I got involved with the DC Blog Meetup for a while (and may have been organizer for a bit). At some time before or after the move, I also moved my blog from karchner.com to rossnotes.com, and switched from whatever I was using previously (either Movable Type or PyBlosxom) to Wordpress.
The most notable thing in this era is that I started tracking different technology events that sounded interesting. There’s a lot going on, and nobody was listing it all in one place. So, “DC Tech Events” became an ongoing series on my blog, and then it became a newsletter, and a dedicated website.
There was a mini-scandal when another site started re-publishing it without credit.
I credit dctechevents with opening a lot of doors for me, including my previous and even my current job. At some point during this journey, I decided the software I was writing to manage dctechevents (I called it “eventgrinder”) was unique and something more people should be able to use, and started down the path of turning it into a business. At least, I created an LLC, opened a business checking account, and worked on eventgrinder like a serious side-hustle for a while. After a while this led to opening more dctechevents like sites for other cities(like Localfeeds), but that’s where it kind of lost steam. I made myself a publisher, dependent on this software I was writing, but actually hated using.
By 2013 (or before)I had given up on eventgrinder, dctechevents, and the network of similar tech events sites.
After this, I cycled between not blogging for long periods, and starting over with some new platform or tool. I recall Wordpress (self-hosted), Wordpress.com, and GitHub pages being used at certain times. I think Twitter played a role here: it was easier to post and that’s where the people were.
I think around 2018 I became aware of micro.blog and the indieweb movement. I definitely kicked the tires on micro.blog, but also I was infatuated with “Serverless”, and the idea that there was an optimum expression of the indieweb’s standards and protocols that could be built out of AWS serverless tools. This also led to it’s own cycle of neglect and occasional rebuilding-from-scratch, and ultimately went nowhere.
I hit a moment where I decided to just commit to not doing it. I had discovered game development, and building new web things wasn’t interesting anymore, at least as a hobby. It’s hard to find a problem more solved than blogging (except maybe text editing), and I wasn’t even sure I wanted a blog.
Until, a couple of months ago, I decided I did want to blog again, and re-approached micro.blog without the not-invented-here attitude and decided to try again.

Finished Listening: The Twilight World by Werner Herzog ๐

Currently listening: The Twilight World by Werner Herzog ๐
I picked this up after finishing Herzog’s memoir, both because the story sounds interesting and I enjoyed listening to his narration, but there’s something about his writing here that almost begs to be read from actually pages. I may do that when I’m done listening.
In the next year, I’d like to:
Ending the year by starting a course of paxlovid…

Finished reading: Every Man for Himself and God Against All by Werner Herzog ๐
I couldn’t stay away– I once again have an account on the gamedev.place mastodon server.
The main thing I missed was #screenshotsaturday– when I wasn’t participating in a gamejam or something, it provided a motivation to have some bit of progress to show every week. I want to get back into doing that.
I changed my mind on that (surprise!). I’m perfectly capable of creating a habit without the external validation.
Or at least, I’d like to think so.
I just finished part 7 of the roguelike tutorial.
New stuff:
I like how the author sets up the UI, I’ve learned some neat tricks there. I was a little fuzzy on the vim-like modal input system before this latest part, it clicked when adding the ability to scroll back through the message log.
Most of the graphics are (per the tutorial) from the Kenney 1-bit pack, but my son had an idea for a new graphic for the wall tile. I like it!

Currently reading: Level Up! The Guide to Great Video Game Design by Scott Rogers ๐
Christmas present from the kiddo!

Currently listening: Every Man for Himself and God Against All by Werner Herzog ๐
Forgot to add this, I’m about halfway through. Contains more blood and guts than you would expect from a film director’s memoir.
CBS is missing an opportunity to point out that that they have Drew Carey followed by Mariah Carey

I usually don’t consider myself very “handy”, but I’m proud of the job I did today switching which side the refrigerator door opens on. One of the screws holding the bottom bracket on broke of, leaving most of itself in the hole. I tried a few methods of getting the partial screw out, but that was a doomed effort.
So, now our refrigerator opens on the right instead of the left. Annoying, but better than any of the alternatives.
I’ve been working through SelinaDev’s Godot 4 roguelike tutorial and I like it so far. I just finished part 4 (of 13). There are no enemies or things to do yet, but just wandering around the dungeon, and seeing the lighting and “fog of war” effects in action is pretty satisfying.

Finished reading: Petrograd by Philip Gelatt ๐
Not sure I buy the “dominos falling” theory, but interesting/sad that Firefox might be about to fall under the USWDS 2% threshold for browser support www.brycewray.com/posts/202…
As of yesterday, Doom is 30 years old
It’s interesting that Newsblur, Pinboard.in, and micro.blog all make bookmark archiving part of their premium offering. Maybe it’s an easy way to add value?
I was a happy Newsblur user for a number of years, but decided to give it a break for while, trying out non-cloud options like Rad Reader.
But, none of these ever really felt like a good fit, so back to Newsblur.
My favorite bit in the new Aesop Rock album might be where he spends a bar explaining the previous line (from ‘100 Feet Tall’, a story about running into Mr. T at Carnegie Deli in the 80’s):
From a television toughie to endearing it’s eerie
Started rubbing his belly, then a quip for the pups
“It takes a place like this to fill Mr. T up”
Get it? For those of you who don’t know the establishment
They’re famous in Manhattan for serving gigantic sandwiches
๐ต
I’ve submitted twenty thousand milliseconds to the 20 Second Game Jam.
I’m not even necessarily sure it qualifies as a game. Maybe it’s more like a mutant skill challenge?
I wanted to do more with sound and graphics and juice and didn’t quite budget my time well enough to get there. Still, it’s nice to ship a thing.

Bonus complaint: mastodon polls don’t translate over, they just disappear– compare this to how that conversation appears on micro.blog.
About a month ago, I migrated my mastodon account over to this blog (via micro.blog’s built-in support for ActivityPub). How’s that going?
Mostly good. I like that I’ve got a full-fledged personal website here, that is fully customizable and could theoretically run anywhere. Behind the scenes, it’s just hugo.
I appreciate how micro.blog is trying to differentiate itself from traditional social media, creating a space that doesn’t reward popularity or sensationalism. There are no trending topics, follower counts, likes, or retweets to chase– just people writing and the things they write.
Of course, much of this is “good like eating your vegetables” and not “good like eating a cheeseburger”. All those little dopamine hits that make things like Twitter, Facebook, and Mastodon addictive and un-calm are also what make them fun.
I think discovery is worse here. The emoji thing is cute but I don’t think it works well in practice. For example, m.b wants ๐๏ธ to signify “pens and ink”, but sometimes it doesn’t. It’d also be nice to not have a hard-coded set of topics. Really, I just want hashtags, and I want to be able to follow hashtags. Like Mastodon. I can see how “trending topics” is a feature to avoid, but it’s perfectly possible to have hashtags without elevating trends.
One thing I have found useful is the book covers page. If you see someone posting about a book you like or that sounds interesting to you, that’s probably a good person to follow.
What are your favorite websites that aren’t around anymore?
I’m not sure we’ll watch Merry Little Batman, but it brings me some joy to see Jingle Bells, Batman Smells in an official DC production.
I’ve likened Godot to Hypercard before– they aren’t directly comparable, but my experience using Godot brought back a sense of possibility and fun that I felt when using Hypercard back in the 90’s.
I should probably be pretty excited to learn about Decker, which has modern touches, but also seems to lean pretty hard on nostalgia and Hypercard/Macpaint aesthetics. I’ll carve out some more time to kick it around some more, but honestly it leaves me a bit cold.
One thing I looked for, and couldn’t find, was some equivalent of “background” or template cards, which seem pretty core to some Hypercard uses, like address books or proto-Filemaker databases. OTOH, maybe you can accomplish that sort of thing with contraptions, which seem like a nice way to build widgets-of-widgets.

Currently reading: Petrograd by Philip Gelatt ๐
My excellent co-worker Adam created this online tuner for community radio stations: www.ldial.org (which is also excellent)
I spent at least 30 minutes trying to figure out why the score in my game wasn’t updating past the first point. It would go from 0 to 1, but then stayed at 1. I had a setter on the score variable, to update the score label shown to the user whenever the score changed.
It turned out, my setter wasn’t actually setting, so to score was always zero, and the incoming new score was always 1.
The missing line in the “set” code below is SCORE=new_score

This is a good bundle of security books. I can vouch for Threats and Security Culture Playbook being worthwhile, and Software Transparency is on my to-read list.
Testing out Lillihub!

Currently reading: How to Measure Anything in Cybersecurity Risk by Douglas W. Hubbard ๐
Two chapters in, and I really appreciate learning about:

Currently reading: Game Programming Patterns by Robert Nystrom ๐
I need to study this some more, but there are some good ideas in this cATO playbook, and the manifesto it links to: rise8-us.github.io/cato-play…
(hey, look, it’s an infosec post!)
Considering learning C#. I don’t even know who I am anymore.

Finished reading: Deadly Class Vol 12: A Fond Farewell, Part Two by Rick Remender ๐
Some of the late-middle volumes were a bit of a drag for me, the characters and their exploits didn’t seem that interesting after leaving school. In this final arc (volume 11 and 12), I enjoyed seeing how these people turned out as adults, and the ending was pretty satisfying.
Long after I’m dead, there will still be articles using this picture I took in 2004 www.jhunewsletter.com/article/2…
I’ve been spending some time trying to clean up search results for my name (yeah, kind of douchy, sorry), and one thing that’s been vexing me is my old Twitter name. I deleted my ‘rossk’ account a while back, but I guess 15 years of google juice means my name will forever be linked with twitter.com/rossk, even though someone else owns it now.
All of that is to say, I’ve created a new twitter account, which I hope becomes more prominent in search results for “Ross Karchner”, and which links back to this site.
One week turned into three weeks, but I feel like I’ve worked that particular digital addiction out of my system (and diving in to Snap has actually helped crystalize an idea I’ve been thinking about, so it wasn’t entirely a waste). OK, back to making stuff.
My current idea for the 20 second game jam is really simple and pretty wonky: a trainer for being able to differentiate times shorter than a second (say, 500ms vs 700ms). Back in 2015 I went to some Site Reliability Engineering (SRE) training where this was mentioned as a useful skill for SRE’s. I didn’t entirely give up, but at that moment my dream of ever being an SRE seemed a little more remote.
There are some optional themes for the jam, but I think time itself is a sort of implied theme, and pondering that brought the SRE training back to mind. Thankfully, this isn’t a judged competition, so nobody else has to necessarily get it. Since the idea itself is so simple, I do want to lean in to trying to make it as fun and engaging as I can.
I’ve also started futzing with a micro.blog client written in Godot. We’ll see if that goes anywhere.
Bowling with bumpers is underrated. It’s a little more like billiards.
DragonRuby, which usually costs $48, is free right now, as part of the 20 Second Game Jam
13 years ago we were at the Rally to Restore Sanity. Have we restored the sanity yet?

I let myself get sucked into Marvel Snap this week, so spent more free time playing games instead making them. I have started experimenting with Godot features I’m not familiar with yet, starting with navigation meshes.
Next on the list is 2D lighting and shadows, maybe this weekend!

Currently reading: Deadly Class Vol. 5: Carousel by Rick Remender ๐
The first four volumes were a pleasant surprise. I was expecting a sort of “Hogwarts for Assassins”, and there’s a bit of that– but the stories being told are much more complex and personal.
On the same day I learn about this gallery of Internet Artifacts, I also come across this bit about the worlds oldest continuously-seeded bittorrent file.
As part of Space Day the kiddo and I got to check out the observatory at George Mason University. ๐ท ๐

The results are in, and… it’s nothing to brag about. I do like that innovation is my strongest category again.

I don’t know exactly how many entrees I’m ranked against. The stats say that there were 1597 entries in the “jam” competition, and 66% of all entries (“jam”, and a separate competition, “compo”) met the ratings threshold for getting ranked, so maybe I’m ranked against 1067 or so “jam” entries? That puts me in the top half for most categories, and not far from it on the Overall. In a competition that includes professionals, hobbyists, and teams, I feel OK about that.
I took the plunge– this is now my “home” on the fediverse. I think micro.blog has a healthier vision for social media, and I’m really drawn to the idea of my blog and my social media presence being all one thing. Worst case, I’m not locked in!
The post-jam, cleaned up version of Don’t Get Crushed is now on itch.io rosskarchner.itch.io/dont-get-…
Got a flier in the mail from Chris Decarlo for Sherrif, which reminds me of his history of rapping campaign videos: youtube.com/@CDRapper…
I’m not lazy, I’m just protecting the ecosystem www.nytimes.com/2023/10/1…

Currently listening: Story by Robert McKee ๐

Finished Listening: Think Like a Game Designer by Justin Gary ๐
I’ve never really worn sunglasses, and now I’ve got my first prescription pair. Meanwhile my regular glasses are at the optometrist to get new lenses put in, so the sunglasses are all I have.
One surprising thing is that some screens are hard to read– kind of like when a screen has a polarizing privacy filter, but it’s blocking me instead of the rest of the world.
Even a “bad” Futurama episode is usually pretty good– but the worst are the ones that try to be relevant for the time they were released, “ripped from the headlines”. The new season on Hulu had a lot of those. ๐บ

Currently listening: Think Like a Game Designer by Justin Gary ๐

Currently reading: Deadly Class - Regan Youth Media Tie-In by Rick Remender ๐
Here is some weekend progress on Don’t Get Crushed (post-jam version, to be released after the review window closes):
You can also see the previously reported progress: visible scores, the ability to restart using the up arrow, and the crusher following the player more closely (and no longer leaving a safe area on the bottom of the screen)
Not much visible progress since I lasted posted this game, but I have implemented both the spring platforms and the “slam” mechanic (which can be combined for bigger jumps. I’ve also re-built all of the player movement around Godot State Charts.
I temporarily experimented with importing my Mastodon followers to micro.blog. Sorry about the follow-spam!
From a recent trip to the new LEGO Discovery Center in Springfield, VA

๐ท
After a couple of days on wordpress.com, I decided it wasn’t for me. So, after a journey in the wilderness, I’m back on micro.blog!
So far, I've addressed a few items from the feedback list:
Don't Get Crushed was my submission to Ludum Dare 54, my second-ever attempt to enter a game jam. The game didn't end up much like what I was imagining when I started working (blame the 72-hour time limit, and my own limitations for that). The graphics aren't great, and it's got a few glitches-- but I think it's fun.
Before entering Ludum Dare, I probably would have explained the appeal of game jams as a way to test your skills against other game developers. That's still an attractive aspect of it, but my thinking has changed quite a bit in the past week.
I'm new to making games, but I've made stuff before: writing, software, images, even a bit of music. Most of the time? Nobody cares.
Because of the way LD is set up, if you put in the time to review other people's games, your game will be prioritized for other people to review. You'll get actual feedback!
I made this goofy, glitchy thing, and people are playing it. 33 People have left numeric ratings (I won't know the results of this until the rating period closes, in 8 days)! 21 People left written feedback! One person even drew a picture.

It's kind of exhilarating. If I continue to enter game jams, it'll be because it's fun as hell to make stuff and get actual feedback.
The feedback on the game has been quite nice, but here's some of the criticism it's gotten (all valid):
One thing I hate, that nobody has mentioned: the shaking effect that sometimes appears in the crushers or the obstacle blocks isn't something I programmed or intended, it's just some side-effect of Godot's physics, I guess. I'd like to at least have more control over that.
What I'd like to try to have a "post jam" version of the game, available the day ratings are released, that addresses most of those points.
After that, there are other game ideas I'd like to move on to, but might revisit this one sometime.
It's 2023 and I'm starting a blog. Again.
Why?
I'll write more later, but in the past I've enjoyed have a blog as a sort of public notebook, for posting things I'm learning about or just want to share. I miss that, and want to start doing that again.
One thing I want to make sure I do, is break the (self) expectation that blog posts need to be any particular length, so I'll end this right here.