Skip to footer navigation.

Oatmeal

A digital pillow fort

In reply to: The politics of accessibility – Brian DeConinck

A devastatingly perfect blog post.

The core concept of digital accessibility is that everyone, including people with disabilities, should be able to access information and accomplish tasks via computer independently.

Continuing later,

This is an intensely political statement, backed by decades of protests and lobbying and litigation. And that’s important context for understanding everything else that’s happening now.

Styrofoam cups and awk

I like writing these posts for my website, but I’ve sat down to write this one like 11 times and it either takes on a tone of totally encompassing dread and dystopian navel gazing or I feel like I’m burying my head in the sand and ignoring reality as it happens around me.

…I finished reading Victor LaValle’s The Changeling. It was engaging, and I was interested in where it was going, but I found that where it went wasn’t interesting. The dialogue and prose were lively and contemporary, which is what really kept me going with the book. I’ve started The Phoenix Keeper by S.A. MacLean as well as Jiro Taniguchi’s The Walking Man — that one as part of a bookclub!

The Walking Man had me from the jump because it opens up with some birding. The Phoenix Keeper is a bit more YA than I usually lean, but I’m enjoying it — I think it’d make a really great animated series.

I’ve been poking at two programming projects — one was thoroughly and totally ill-advised. The fun one: I’ve been fiddling with making a sort of generic starting point that I could use to make card games. I was inspired to do this when I came across Cuttle, which is sorta like MTG or Netrunner but with a normal deck of cards.

What I’ve got so far is pretty basic. Here’s a demo with 4 decks of cards. Each deck is shuffled, and I’m tracking which card belongs to what deck. I am modeling a few different layers of abstraction, but I think I need to add in a box” or something, so that you can move an entire deck around more easily. Click and drag to move the cards around. Right click to flip the cards over. It currently doesn’t play nicely with touchscreens, but I can add that in someday soon!

The ill-advised project: inspired by John Earnest’s implementation of lil in awk, Lila, I set out to make a non-trivially sized program using awk. Enter f.awk! It is a really basic implementation of forth in awk. It is missing conditional branching, It sort of supports conditional branching, but does have support for user-defined words!

I learned a lot of awk doing this…and I guess I feel more comfortable using awk, but I also find myself reeling from the lack of any useful developer tooling. JavaScript and the browser have me spoiled, I guess? If I was clever I wouldn’t implement forth directly in awk, instead I’d implement a simple virtual machine using awk, and then implement the forth using the virtual machine’s byte code…but there is only so much brain power I can exert on such a silly project.

This morning I read a blog post, Keeping the seat warm between peaks of cephalopod civilisation. I liked this quote:

Birds are just little Napoleons, exiled on their St. Helena of deep time, before they make their vengeful return. Octopus patiently biding their time until the fish clear off again. And here we are, just keeping the seat warm.

While I never really used the phrase deep time” in grad school doing the Art History thing, I was trying to write something about landscape paintings that included major geological features, and how they relate to Timothy Morton’s thinking around hyper objects…things so humongously distributed in time that we struggle to really even perceive them, like climate change and a styrofoam cup.

Also, check out my blogroll. It slaps. Well, it is just a list of links…but those links are rad.

Year in review, 2024

As a treat, I figured I could write a year in review kinda thing, too. In no particular order here are some reflections organized into some mostly sensical categories.

Health

Since recovering from my brain bleed and the subsequent repair procedures, this year I’ve enjoyed getting back into a routine of exercising. I’ve never been one to track numbers, or reps, or distances — I mostly exercise because I enjoy doing it. This year I got back into going for regular short runs, very long walks (sorry aging dog, I know those aren’t always your fav. (she can keep up, but I think she gets bored?)), and both lifting or rowing. I’ve also started to play a lot more squash. I’ve always really enjoyed games like squash and tennis, but hadn’t had opportunity to play either since leaving home for college…a billion million trillion years ago. Now, though, I live within walking distance of a community center with squash courts, and that has been a blast. I look forward to more squash in 2025.

Reading

I have 43 books on my reading list for this year.

Of course, my favorite read was Villette by Charlotte Brontë…but that shouldn’t count because I’ve read it like 20 times and it is my favorite book ever.

My favorite first-time read, I think, would have to be The Adventures of Amina al-Sirafi by Shannon Chakraborty. It was really fun, and a book that, when I finished I was immediately excited to re-read and to see if there was a sequel (there isn’t one…yet!). Other stand out titles include Arkady Martine’s Teixcalaan series, Le Guin’s The Other Wind, Radiance by Catherynne M. Valente and Robin Sloan’s Moonbound.

I also re-read This is How You Lose the Time War by Amal El-Mohtar and Max Gladstone, in it, I noticed a passage where a character recommends a book to another character…the first time through this book I hadn’t noticed that section, or thought much about it. This time round I looked that book up. It is real! It is a real book! I read it — it was a little tricky to find a copy, but I read it and it was really good! Travel Light by Naomi Mitchison is a cross between an Icelandic family saga, a travel story by Tove Jansson, wrapped in the sensibilities of Le Guin. I was really really struck by it, and I think that the review of it that is given by a character in This is How you Lose the Time War is absolutely spot on. It pairs really well with Moonbound, too.

Family

My partner and I blew right by our 12 year anniversary, which seems kinda crazy, especially as our peers and friends seem to all be getting married and having kids now.

We went on our first international trip as a family. It went like 1000% times better than I ever imagined. We had such a great time and…while I still don’t love traveling, I’m really excited to bring the kids more places in the future.

My younger kid used 2024 to totally and completely fall in love with dinosaurs. He easily knows more about dinosaurs than anyone else I know. I’ve also learned so much about dinosaurs, especially because he falls asleep every single night by listening to the same dinosaur documentary-style Yoto card. We set up a research station” that has a working microscope, a globe and a ton of his favorite books at it as the center to his discovery.

In 2024 my older kid went from being a veracious reader to an unstoppable, up til 1 AM under the covers, reading while walking to school, what do you mean we can’t go to the library a 3rd time this week!?” reader. My partner and I have been careful to temper this reading habit with ample application of mandatory family Mario Party and Mario Kart time.

Also starting to navigate what it is to have aging parents more and more.

Work

Left an old job. Took a new job. The biggest learning in doing this has been that I much prefer to work in smaller places, so I’m pretty pleased with where I am right now…but growth growth growth!” seems to be the name of the game wherever you look, so, who knows.

I’ve started to do the calculous about what it’d look like to go freelance — I’m far too cowardly to actually do it, right now, but I continue to think about it.

I have yet to determine what I want to do when I grow up…but I think I’m starting to get there?

Friends and fun

Originally I had two categories. One for fun. One for community. I like this alteration.

I made a concerted effort to have more fun this year. My natural proclivities lean towards…let’s go with anxiety?…so fun is something I’ve always sort of struggled with. To go a little against my natural grain, I sought to figure out a way that I could play more video games, make more space to be with friends, and to make sure I was showing up to exercise as a joyful activity and not like another chore to be checked off from a list.

I can’t really see a video game on a TV, and the rest of the family monopolizes our aged, but much loved Nintendo Switch, so I recently invested in a Steam Deck, and this has been a really positive experience! I still have to fiddle and futz with settings to make text big enough to read, and I probably hold the thing unhealthy close to my face, but, it has made playing video games (which is honestly something I absolutely adore to do) a treat and I’m really excited to maybe play some co-op games in 2025 now that I’m not always baffled and confused by what I’m trying to see through a blurry haze.

The next two items are interesting inverses of one another. I turned engaging with friends into a conscious chore, and I made exercise something to do for fun, not to get it done with. As a way to engage with friends more intentionally, I set up a few group chats with some friends this year, and I set myself reminders to engage with those chats regularly if they started to go quiet. This has helped me to feel more connected to friends, most of whom live away. In the coming year this is something I’d like to continue doing, and do more with friends I’ve met online. For exercise I tried to make more time for it. In the past, I’d always feel guilty for exercising instead of doing something with the kids, or doing chores, or more work. This year I practiced letting that all go…I didn’t always succeed, and still find myself simultaneously on slack as I run up some hill, but…progress.

Looking ahead

This next year is slated to be…something. I’m nervous because I don’t know what that something is, just confident in my assessment that it’ll be something.

Bouncing off of books

After playing a few hours in Fields of Mistria I decided to put it down for a bit. I’m really really enjoying it. The farming is low key, and feels more like grinding for resources so far (positive), the relationship sim stuff is fun and the quests and tasks are really approachable (and there is, my favorite thing in the world, an in-game quest log!). All in all it’s a supremely, deliciously, snackable game. If I had to level critique against it, it’d be that the day/night cycle feels a bit too fast. I regularly end up trying to finish tasks in the middle of the night, which doesn’t always work out. Even an additional five minutes per day would be good. I put it down, though, because it’s in early access and I wanna let it bake some more. I’ll be revisiting it regularly.

Pining for a pixel art fix, though, I started playing Cassette Beasts. Pokémon games are hands down my favorite games, especially the Gameboy Color and Gameboy Advanced era ones. Cassette Beasts’ formula is similar to Pokémon, but so much more jrpg…which I guess is to say weird?” or maybe goes really hard, really fast?” The story is a lot more front and center than the story of any Pokemon game which are all basically deliver this package (3 - 10 minutes) draw the rest of the owl (20 - ∞ hours).” Whereas Cassette Beasts is all angels, a demons, and there are lurking vampire folks around, clicky cassette decks, and even voice acting! Fun stuff. It also has co-op and online multiplayer, which I’m actually curious about — usually I’m not so into multiplayer, but this could be groovy.

I actually gasped when I first started the game and saw the Godot splash screen. I should learn Godot, and stop pretending I can use JavaScript in the browser for absolutely everything imaginable…but…

…since making plains, I gave some love to my neglected pixel art editor, pixel pixel pixel pixel pixel pixel. It is a lot more functional now!

I updated it to work better on touch screens since my kids like to play with it on a tablet. I also added the ability to add more than 1 canvas, so you can more easily work on multiple sprites at the same size all at one go. I stopped short of adding real onion skinning, and figure folks (me) can stitch frames together either in code or some other tool. Probably, most importantly, though, I added the ability to export and import projects so that you don’t have to exclusively rely on the browser’s local storage any more. I’ve been using it to make some pixel art for another game, but have become a wee bit side tracked fiddling with isometric transforms.

Whenever you use the <canvas> tag in the browser you set a context for it like canvas.getContext('2d'); — I, a simpleton, naively took this to mean that to do 3d things I’d have to set that context to…you know…3d and that documentation is a lot. NAY! NO! This is not so! At least not for the 3d I would ever dream of using. It is always just pixels on a screen! So, I’ve had some fun making silly little bouncy guys and experimenting with how to make vaguely performant 3d-ish things for the browser…but also…I should really learn to use Godot. Maybe that’ll be a thing to do in the new year.

I’ve also continued to think about week notes, which I nearly always typo as weak notes” the first time, and I wonder if that is my subconscious telling me something…but what? I like the format, but also want something more conversational. I don’t wanna always list read this, didn’t watch anything, had some feelings about the weather.” That said, I’ve watched a lot of Gundam over the holiday break, have been enjoying the new Star Wars thing, Skeleton Crew, with my oldest kid, and will likely not finish reading The Overstory before the turn of the year…or maybe ever. I usually force myself to power through books regardless of how I feel about them, but, maybe it is a sign of personal growth that I wanna put this book down and totally walk away from it. It isn’t bad, or even not good. I’m just not feeling it.

Thinking about week notes

I’m thinking about week notes again. I like the idea, but it is a form I struggle to keep with. To stick to. It feels sorta like a one sided conversation. Broadcast. I’d like to make it more of a conversation.

I’ve made two new little games since the start of December. Both are installments in the adventures of the little black square who first showed up in hill. Mountain is sort of a sequel to hill. Rather than zoot down a hill, though, you’ve gotta jump up platforms, and avoid various obstacles to reach an exit. Then comes the first top-down game for little black square, plains! In plains little black square must wander into the wild unknown to battle monsters (circles) and rescue the lost villagers (various polygons).

The primary technical challenge in mountain was that I didn’t wanna hand craft a bunch of bespoke levels, instead I wanted to use procedural generation to make them automatically as you need them. The thing is, because this is a full-viewport browser game I had to accommodate for browser’s being able to be any size and dimensions. To help the player navigate the world, I couldn’t only rely only on jumping, so I also added a gravity flip mechanic. I’ve found that makes pretty much any sized level passable. I also had probably an unhealthy amount of fun with particle effects…which carries over into plains, too.

In plains I initially wanted to make a game about foraging, so I went hard on world generation, making patches of flowers, trees, and mushrooms. From there, my idea was to have a whole ecosystem of relationships between soil quality, plant type, and plant relationships…but building that all got really really complicated and confusing. I’d still like to do that, but I need to not do that as sort of an improvisational program. I made mountain and plains by layering in features, and that isn’t really the right way to approach all sorts of games. Some games need a plan. So, I threw in some villagers in need of rescue, and some orbiting enemies and called it a day.

I went wild trying to make plains look good. I’m loath to use too much text in any game (no clue why, to be honest), so I had fun trying to figure out how I could communicate all sorts of stateful information, like remaining player health, cool down timers, and enemy intent. All in all I’m pleased with these games.

Funnily enough I’ve realized that the types of games I like to build are sort of the games I’m least likely to play myself. The games I’m drawn to playing are narrative focused, and have a lot of hand crafted elements, like puzzles and levels. While the games I’m drawn to building tend to lean heavily into procedural generation…because stories are really hard and I’m scared of having to make a ton of art.

I finished Villette. It is a book I’ve read so many times, and I think I’m ready to really call it my favorite book. I thought about letting it be my last fiction book of the year, but got antsy and picked up The Overstory. So far it is fine. I’m not loving it, though. I’m interested to see if it gets more tree-like as it continues.

« Future Page 1 of 213 Past »