Well, here we are on the eve of SIGBOVIK 2019. I'm in the midst of a long day of video-making for one of my projects, but I can get 2 for the price of 5 by posting now about four of my papers. This year I've been on a chess kick, which I think I've successfully gotten out of my system by writing all these (previous posts alluded to there being five, but one of them didn't really go anywhere and/or just became part of the other(s)). They are sort of intertwined:
My last paper is on a different (maybe even weirder?) topic, and I'm putting together a video for it now, so I should be uploading that tomorrow some time. It's been a bit rough going, though, since I replaced my computer a few months ago and forgot that I hadn't actually set stuff up for this kind of work; I'm experiencing small problems like custom key commands aren't set, and bigger problems like audio drivers acting crazy. Looks like I will be able to finish with some vacation time, at least.
Speaking of vacation, this month we also went to Belize, which was pretty cool. The highlight for me was swimming/scrambling 1km into a cave ("Actun Tunichil Muknal") to access an approximately 1000 year-old Mayan site where they performed human sacrifices; it's remarkable because almost all of the artifacts are still in situ, including a number of calcified human skeletons. Was pretty wild. I got some good running done, found some New Haven-style pizza (!?), and wrote papers about chess (?!).
Wow, the end of February really snuck up on me! I wrote this on the morning of March 1 and backdated it. :(
Aside from some uninteresting work travel and a bit more progress on Pac Tom, the main notable thing from February was work on my SIGBOVIK papers. It is now possible to submit, so you can too! Thank you for your suggestions for my chess paper (see previous post); it's not too late for more ideas there. I also have one non-chess paper, which turned out to be pretty fun. For that I spent a solid chunk of the weekend manually routing this bad boy:
Design rules check pass!
It may end up to be too hard to solder, but isn't it aesthetically pleasing?
All you gotta do is recognize the problem and then solve it
(31 Jan 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!