All you gotta do is recognize the problem and then solve it
(31 Jan 2019 at 22:39)
OK, so I think I have five SIGBOVIK papers about chess, which is pretty over the top, but at least I can get it all out of my system. If you like, you can help me out: Today I'm on the lookout for a collection of easy to describe algorithms for playing chess. Some constraints: They should be basically symmetric when playing as white or black (so not like, "move pieces to the 1st rank" but "move pieces as far from their starting squares as possible"). They do not need to be good at chess, and in some ways it's better if they're not, although it's not good if they just get stuck in loops like moving the same piece back and forth. They have to be efficient enough to compute a move in a few seconds. Most importantly, it should have a one or two-sentence description which pretty much communicates the whole idea without important ambiguity. Alpha-beta and that kind of thing I already know about; novel approaches are most desirable here.
Aside from the bracing cold, which you can just read about in the news, I'm nearly done with a game called Hollow Knight. It's really good, definitely the kind of artful indie game I was yearning for when I deleted Battlefield V shortly after writing last month's post, and I super recommend it. And also in quick turnarounds from last month's dreary post news, a day later or so I figured out the thing that had me stuck on that machine learning problem (it was basically just NaN poisoning) and now the only problem I have left is that machine learning isn't magic. But I guess things are looking up on multiple counts!
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!)