2018 is finally over! And good riddance. It was a fine year for me, but globally (as you know), pretty garbage. Let's do better in 2019.
I've been on a bit of a chess kick this year, I think because I started watching chess videos on youtube when on the treadmill or eating lunch (I like agadmator's channel best). Not so much playing—although I can now at least often beat Stockfish level 5—more like puzzles (lichess has a really cool feature where it automatically discovers puzzles in people's games and can give you an endless stream of them) and appreciating wizardly play. But I spent a bunch of free time this month doing some chess programming stuff for fun, and wrote two SIGBOVIK papers for next year on the topic, with a third on the way.
The third one is a (weird/useless as usual) machine learning idea, which I spent the last few days on, and it's reminding me how frustrating this kind of work can be. The problem is that you can have a reasonable idea, implement it correctly, spend a bunch of effort on performance tuning, wait hours or days for it to do its thing, and then it just doesn't work well, and all you've really got to look at are a bunch of numbers. I'm sure it's possible to be better at the iterations that follow, but I find it easy to get stuck in a not-very-fun rut at that point. I felt a lot like that working on followups for my NES "AI" stuff earlier this year (although I do at least have some nice progress there that I hope I can figure out how to make into a video). It can be very satisfying when it works, and of course machine learning can often be made to work, but I get a similar kind of satisfaction out of projects that are more likely to succeed without this last step that seems kind of magical or like luck; stuff like ABC or even just making video games. So, reminder to myself to choose projects that are more fun, especially if they are useless anyway! People will like, pay you big bucks to toil away tweaking machine learning models.
Speaking of video games, I also spent way too much time on Battlefield V this month. That series' multiplayer system really expertly manipulates the reward circuitry of my brain, and although I previously banned myself from multiplayer in this kind of game, I was rather in the mood for a good FPS game due to a persistent post-Thanksgiving cold, and after some long/stressful days at work, but I couldn't find any alternatives. Seems like nobody even really makes single-player shooters any more (perhaps noticing how commercially successful the contentless wastelands of games like PUBG are? Let the customers do the work!). So I unwisely lifted the ban. 100 hours later I've exhausted the fun achievements and all that seems to be left is "kill 999 nazis using the gun that you hate, while crouching at an objective point, only shooting them below the knee, in the same life" stuff to unlock a new color of trigger guard on the gun that you hate, so it's not that motivating. So hopefully I will rid myself of this game soon. (The game is good, especially the graphics, but it's extremely buggy and honestly feels like a step backwards from Battlefield 3 in lots of ways.) There are lots of good artful indie games in my queue that are much more enriching to play, anyway!
Heyyy there. November is a particularly busy month at work for me, and between that and some travel, creative projects have been light. A few things to mention:
Server seems to be working okay again, phew. All I did was make some basic changes to protect against automated DOS/hacking attempts, so either it was something wrong with the host I'm using that coincidentally cleared up, or it was just too much load from rejecting those brute-force attacks!
Grad school friend and occasional collaborator Jim put up golf.horse, which is a leaderboard dedicated to the important problem of self-decompressing wordlists. This is a descendant somehow of my Portmantout project from years ago, including using one of the same wordlists. I spent a weekend on this problem, which is pretty fun. Jim is not surprisingly back on top for the long wordlist, but I have some more tricks up my sleeve. If you like programming challenges, I'd recommend it. (There will eventually be some SIGBOVIK tie-in.)
I've been playing around with the Shaper Origin, which is a cool compact CNC router for wood that uses computer vision. It's interesting to learn to design for this tool, since it makes some normally extremely difficult things trivial, and yet still has significant limitations. I guess I haven't posted anything that I made with this before, but this month I made a fairly simple standing shelf for jars in my kitchen:
The highlight here is the approach to finger joints that's much simpler than what I usually have to do:
In fact these can be pretty much any shape as long as they don't have any inner radii that are too small, but there's something satisfying about these particular crenellations. You can tell that there are some errors here, but this has more to do with poor workholding (which mostly has to do with trying to avoid wasting any perfectly good scraps) than issues with the tool. Another thing that's crazy easy to do is engraving a drawing on a large area; here you can see some spirals. Enjoy 'em now because there's pretty much no way anybody is gonna see those spirals with lentils on them 24/7.
When I was back in CT for thanksgiving I went through some old boxes of notebooks and things from my K-12 days, and collected and scanned some pretty funny stuff. I was going to share a bit of that, but I'll just save it for next time since it's three minutes to the deadline here!
We ran the inaugural edition of the GAP Trail Relay, which is a 150-mile relay race on the Great Allegheny Passage, a trail that runs between Pittsburgh PA and Cumberland MD or Washington DC, depending on who you ask. Actually even reading the Wikipedia article right now I'm a little unclear as to whether the trail formally includes the section between Cumberland and DC or not. Anyway, this race was from Cumberland MD to Pittsburgh PA, and I previously did a relay race ("Ragnar") from Cumberland MD to Washington DC (another 100+ miles), so I've got it covered.
The way these things work, you have two vans of runners (and their smelly clothes and snacks), and you cycle through them in order three times, with one person running a segment and carrying some baton or object (this time a slap bracelet) that is the only true athlete that travels the full distance of the trail. For this one we were missing one of the contestants, so some of us had to run extra segments to fill in for that ghost, and I had to do two in a row in the middle of the night (aside from not being able to see, the night ones are extra annoying because they make you carry lots of safety things). Anyway, it was a lot of running to do in a 24-hour period, about 31 miles for me, but honestly the hardest part is the waiting around and not getting enough sleep! The chief selling point for me was that I got to run a single segment that crossed the Mason–Dixon line, which here is also the Pennsylvania–Maryland border, as well as the Eastern continental divide. As you probably know I have a weird fetish for running across borders and other notable cartographic features, so this was a good one for the collection. We managed to finish the whole race under 24 hours, which seemed like a nice round number.
One more unrelated fun thing. We have been watching through Veronica Mars, one of Rose's favorite nostalgic shows. In season 2, it seems that someone in the decorations department has installed my fonts in their quest to make very believable mid-2000s high school desktop publishing posters:
Veronica Mars S02E09
Here we see Action Jackson, my most popular child, advertising the bake sale with Kristen Bell and Alyson Hannigan not even caring about those sweet bake sale deals!
Veronica Mars S02E05
This one was exciting because it's a rare sighting of "I Suck At Golf". Since this one is less obvious and obscured by cast, I put some original specimens there for comparison. It does look like this one was hand-painted using the font as a reference (notice that the lowercase 'i's are a little different each time) but there are enough distinctive features in that font that I can be pretty confident of the provenance.
Finally: I have been experiencing some server trouble this month and I'm aware that it's sometimes giving an error instead of showing you the radar you came for. Unfortunately I'm beginning to suspect a problem with the host (producing extremely slow disk reads), but I haven't had a chance to really sit down and try to debug yet. Sorry about that.
I'm about to head out to watch a football game, so some quick updates to cover my monthly duties:
- I turned 39, as predicted. Nothing very special about this birthday except for its proximity to 40.
- I continued working on Pac Tom this summer, and recently finished off several more neighborhoods: Troy Hill, Spring Garden, Allegheny Center, California-Kirkbride, Manchester, Perry North, Northview Heights, Arlington, Arlington Heights. Only a few remain and of those, only a few streets remain in them. But, getting to all those scattered streets is still kind of an ordeal. The end is in sight!
- I built a new computer, kind of as a birthday present, which is the ridiculous 32-core Threadripper 2. This has sped up some aspects of my weird NES projects, although I'm finding that I need to do some difficult reworking of code to make it more parallel. (Naively it scales arbitrarily, but when you get 60 hyperthreads in there it turns out that there becomes too much lock contention.) This overall project has been coming along well recently, so I'm making specific plans for a series of videos about it (but don't hold your breath since experience shows that this will still require months!)
Progressive hints (ROT13; you could decode these with e.g. rot13.com, which is an entirely different kind of space language):
Gur jbeqf ng gur obggbz bs gur fperra ner ireof. Gur cnegyl pbafgehpgrq npgvba nccrnef va gur gbc-yrsg.
Ab, lbh pna’g qebc guvatf! Lbh arrq gb trg gb gur hccre qrpx.
Gur genafyngvba bs gur svefg ireo vf TENO (abg r.t. GNXR). Lbh qba’g unir gb or evtug arkg gb gur guvat lbh teno, ohg vg unf gb or ovbybtvpnyyl cynhfvoyr.
Lbh pna’g qebc guvatf, ohg bar bs gur ireof nyybjf lbh gb chg n cnegvphyne xvaq bs vgrz va n cnegvphyne xvaq bs irffry. TENO (svefg ireo) gur fcnprzna guebhtu gur tengr. TENO gur fperjqevire. BIVCBFVG (guveq ireo) na rtt vagb gur obql. HFR (ynfg ireo) gur fperjqevire ba gur tengr.
Gurer’f fbzrguvat gb TENO va gur perj’f orqf.
Hereafter, plenty of spoilers: I've always loved the graphical adventure genre, and I've wanted to make one for some time. (I even spent rather a long time trying to build an adventure game editor/engine in Flash about 13 years ago, last mentioned in post #784 I think. As an example of the reason that this post took nearly a week to go up after finishing the LD entry described above, I wanted to post a final link to this game, but it had some serious breaking issues since one of the reasons I abandoned it was that I ran into some super-weird Flash bugs/quirks. So this morning I dug out that old thing and tried to repair it as much as I could; you can try the final abandoned demo if you want.) I spent a lot of the weekend on some game engine basics, to the point that I repeated the failure mode of "I'll draw spaceship graphics so deliberately crappy that I'll HAVE to come back and improve them before shipping," and then, "Oops, I'm out of time!" but also "I want every pixel in this animation that will be on screen for 100ms to be just right!" There's still so much more efficiency to be found in contests like this.
My intention was that people who know the genre could figure it out purely from conventions (but there are some twists on that), although many people opted to translate the language, which I also deliberately left as a possibility, with some clues. Several people reported having fun with that, so maybe I shouldn't have assumed it would just be annoying—in retrospect, I think I was mostly just averse to it because the idea that an alien would speak English but just with a different alphabet is annoyingly absurd to me, and I didn't want to commit that narrative sin. But there's only so much you can fit in the weekend. Speaking of which, there were several ideas I had to cut from the game on the last day (of course). For example, one of the two airlock people was supposed to be an entirely separate character with an associated puzzle; there was supposed to be a functioning door to the bridge; the airlock puzzle was supposed to make a little more sense than it does (explaining the fact that both doors start locked) and you were supposed to need to talk to that character to scare him into locking himself in the airlock, etc. There was of course supposed to be atmospheric music for the main game, and I know about all of the path-planning bugs and areas where your player can show through objects, ugh. But I ran so low on time that I only got the game even remotely winnable in like the last 30 minutes of the contest. So I initially felt kinda bad about it at submission time, but enough people have enjoyed it that I feel mostly cured of that now. I may fix some of the worst issues (path planning; misspelling "oviposit") so as usual I've archived the 48-hour compo version at the /compo URL, but the main link in this post will point at the best version.
Once everything is set up, it's not a hard genre to expand with content, and I like writing and animating in this style. Some day when I have a solid week to spare, I'd like to make a complete game in this style.