Most recently edited:
December Adventure
I’ve always been impressed with the folks who manage to do National Novel Writing Month (and Writing Month after the “official” NaNoWriMo org self-destructed), completing a whole novel in a month, or even just taking a serious crack at it, but I don’t know that a novel is really my jam. A few times I’d considered doing a December of Documentation, as I’ve got two largish (and several smaller) documentation-like projects I’d like to undertake anyway.
Separately, I really like the idea behind Advent of Code, but the two times I’ve taken a crack at it I got a wek or two in before running out of steam for the “daily” aspect (and as the challenges get more complex, catching up gets less practical). I like the direction of the changes AoC made this year and was considering taking another run at it, but the timing with some other things around the beginning of December made it not feel like the year for that.
Then Eli posted a reminder about something he’d started a few years earlier, December Adventure. I’d seen this last year and watched some neat stuff come of it, but it had slipped my mind as a thing to consider doing. When he mentioned it, it seemed like a good fit. Especially this year, I really like the emphasis on “low key”, a little bit of a genler encouragement. And I had a built-in project for the first few days. It seemed like a good fit.
So. Here’s My December ADVENTure log.
2025
Day 17
Power went out just after 1am at home, with power lines and a pair of trees preventing us from leaving.
Made some changes to mkImg so each entry contains a link to the id for that entry in the index.html. I still think each needs its own directory, but haven’t gotten there yet. Also fixed some references to the older name.
Now I’m off to get our generator started.
Day 16
I got a used 32" cutting plotter abou 2-3 months ago. The official way to drive the plotter is with some propriatary Windows software, which isn’t an option for me. Beyond that, most people use Inkcut, a program which works both standalone and as a plugin for Inkscape (well, in theory; I’ve never gotten the Inkscape version to work). It’s a bit janky, but it works.
A month or so ago I started working on some software (really, a modern port of some very old software) to drive a cutting plotter I got about 2½ months ago. Plan 9 has a plot(1) command, one of the few bits it inherited from Research Unix. The Unix version could emit HPGL, the language this plotter (and lots of others) speaks, but that part was lost in the transition to Plan 9; the newer one only handles screen display.
Today I finished the mechanical parts, like giving functions ANSI-style definitions and return types (except for one bit where I got overly ambitious ripping things out and need to go back a bit). Next up: update the parts that talk to the serial port. Then modify plot(1) to call this library instead of its normal one, and see if the output makes sense.
Day 15
Recreated something I’d done a few weeks ago but totally failed to take notes on. Frustratingly, it took longer to recreate the second time, but it’s working again. I’ve got another couple steps to work out before it’s ready for a proper lab report, so in case I misplace my notes again, here’s how I’m currently getting my old Plan 9 file server running with it’s physical hard disks under qemu:
qemu-system-i386 \
-net user -net nic,model=virtio -m 1024 -vga virtio \
-device ahci,id=ahci \
-drive id=disk0,file=/dev/sdb,if=none,format=raw \
-device ide-hd,drive=disk0,bus=ahci.0 \
-drive id=disk1,file=/dev/sdc,if=none,format=raw \
-device ide-hd,drive=disk1,bus=ahci.1 \
-drive id=disk2,file=/dev/sdd,if=none,format=raw \
-device ide-hd,drive=disk2,bus=ahci.2
Day 13 & 14
Nothing, at least for this. Lovely family time most of the weekend, including taking family photos (which included this absurdity). I’m surprised that the weekends are proving harder to keep up with this.
Day 12
Okay, let’s get https going.
Uh, crap. This ended up being a much bigger rabbit hole than I’d anticipated, largely because there’s a bug in my dns server I hadn’t previously seen which makes it refuse to return more than one TXT record. And that means I can’t get Let’s Encrypt’s lego tool to do its verification dance properly (unless I’m willing to break SPF for a bit, which… well, not right now). Worse, I somehow have a DNS binary running which doesn’t correspond to the source on my system… and that source doesn’t correspond to the source in the distribution I thought it came from. What the hell did I do here?
Sigh. Anyway… working on it? Not where I wanted it to get to, but I made progress, at least. Let’s hope there’s no more dead ends in this rabbit warren.
Day 11
I’ve used Neven Mrgan’s glyphboard for years (except that I keep forgetting about it). I’ve also had a text file with some useful characters in it for easy access use in my terminal/editors. Anh posted about having worked on her version for her own December Adventure and I realized somehow it’d never occurred to me that I could likely make my own web version from the text.
I got a little sidetracked by an oddity in right-to-left text rendering, but got a first draft of generating the web page from the plain text version. Except it’s frustrating to use right now because (in addition to being sort of ugly with very default styling) I’ve never bothered to set up https for my personal site, and (most? all?) browsers only allow javascript to copy text over https (“in a secure context”, per the definition). I stayed up way late getting this far (after a lovely evening with the family); that’s tomorrow’s project.
Day 10
Well, today wasn’t great. If the drive of the December Adventure is “you should do a weird little extra thing every day”, then yesterday’s “extra thing” was… tax calculations for a non-profit. Ugh. Outside of that, I spent more time in Hyrule than I’d intended to.
Day 9
I belatedly got this log posted. Released my current draft of slideshow, my weird tool for creating nice-looking presentations on Plan 9 using the native draw functions. I’ve got a decent “howto”-style writeup, but a proper man page is still pending; hopefully this evening.
Day 8
I spent an hour or so in the evening fixing up my lab report on fixing my Synolgoy. This one’s been sitting for a few weeks, waiting on a push to finish it, so I think I can call this December Adventure a net win already. :-)
Day 6 & 7
Unintentional break day. I didn’t plan well enough around the weekend and family to preserve space for this. Notes for next weekend to do better on that.
Day 5
Intentional break day.
Day 4
More work on the talk, mostly the tour (although, as expected, it’s impossible to resist tweaking the rest), right up until ~30 minutes before the talk.
I think the talk went really well (aside from a distressing number of “um"s and "uh"s); I feel like I got across what I wanted, people seemed to really enjoy it, and I got a good amout of engaged questions (including about things I’d wanted to include but cut for time). It was a fun group who asked some really good, engaged questions.
As suggested by the organizer, I’d planned for about 45 minutes; as he’d suggested, after questions we ended almost exactly an hour and a half after we started. That’s an impressive read on his group on his part.
The talk is now available on YouTube.
Day 3
More work on the talk. I’m mostly happy with the ‘slideshow’ part, although I expect I’ll keep tweaking it. As of the afternoon, I’m mostly working on the slides for the tour. This feels harder in some ways: there’s so much neat stuff to show. Doing it right in acme feels increasingly like the right choice, since it lets me show parts of the system implicitly, as I’m explicitly showing other parts. In retrospect, that fact makes me wonder if it would’ve been better to do the whole talk in acme, especially since I’m intentionally keeping the ‘slideshow’ part relatively simple, but it is nice to be able to “builds” on slides (and the font situation is much better if I run it under plan9port).
Day 2
More work on the Plan 9 talk. I realized today what I really want is a two-part structure, with ‘slideshow’ providing most of the structure and explanation, with a tour of the system part-way through (so I can actually show people things instead of just talking about them). I’m going to do the tour part in Acme directly, using Ori’s (I think?) ‘Slide’ scripts. That will let me stick example commands to run directly in the “slides” and execute them right from there, demonstrating a nice bit of Acme.
Day 1
Last month, I was invited to give a talk at the monthly Portland Linux/Unix Users' Group meeting about Plan 9. Which is wonderful… but that’s real soon now and I should actually write it. Great! Built-in starter project! The talk’s on the 4th and I expect to be working on it these first 4 days of December.
I’m writing the talk in slideshow, my goofy “write your presentation in C” project I put together for my IWP9 talk this past May. I like it, but it is not the most efficient way to do this sort of thing. Getting started, I realized it’d be pretty easy to define a small language and awk processor that would allow me to write in a much more natural format for the slides and auto-generate at least the most common slide formats, but I’m resisting the urge to spend time on that right now so I can finish the actual content in time for it to be ready for Thursday.
I’m starting from a bunch of hand-written notes and the original intro paper, plus references from Charles and Ori about earlier talks, as well as some other suggestions.
I was advised by the organizer to plan for about 45 minutes and that questions from the group usually fill it out to about an hour and a half, so that’s my target.