Aw jeez, that month went by fast. Partly because the weather has gotten good here, and with the vaccines kicking in we have been doing some stuff again, like some outdoor dining and hikes and hosting some vaccinated visitors. All of that is good, though.
I think I actually want a compiler that uses the type information to do optimizations/transformations (like say variable and property renaming). I think when I write code I'm often thinking about easy transformations that the compiler can do (discarding unused code, for example) and making use of that; without it, I find I need extra discipline to keep myself from optimizing by hand.
The very first thing I wanted to do with it, which was to parameterize some class by some set of types with operations, was quite awkward to do. This seems partly because of the way TypeScript is committed to erasure-based features (see prev), but also more annoying than it would need to be due to several ergonomic omissions (like, why can't I say "type T = F<T1, T2>" inside a generic class?). jcreed did help me figure out a livable approach though.
The type system is not complete (normal) and I kind of knew it was not actually sound either, but I was surprised to immediately find out how unsound it is. For example, consider this trivial program:
let a = ;
if (a.length != 0) throw 'no';
if (a.length != 1) throw 'no';
Kinda makes you want to just make your own language, right? But aside from that, I needed to do some pixel animations, which Photoshop is only minimally suited for. I was proud of myself for buying the well-liked Aseprite sprite editor (still need that tilemap mode though!!) instead of "just writing my own," although it was a somewhat agonizing decision.
I made some progress on my Pac Tom endgame strategy (video, CAD, basement workshop, and software work) and some other miscellaneous hacking, but a relatively project-light month.
I started reading Project Hail Mary (same author as The Martian), which is fun in its way. I really like the setup of "problem-solving sci-fi where the problems and solutions are compelling," although the writing is mostly just tolerable and the disbelief is inherently (to the genre) fragile if you notice something conceptually wrong with the fiction part (like, why not one waking crewmember and two in comas?). I think it's part of what drives me instead to non-fiction problem solving like "Eight Amazing Engineering Stories." Happy to hear recommendations along these lines though. In video games, I finished Blasphemous (decent exploration platformer with stiff combat/movement but excellent atmosphere), Rite (small hard precision platformer with great controls), Willy Jetman (silly exploration platformer that nonetheless had its charms), and Sayonara Wild Hearts (beautifully stylish animation and music with good-enough gameplay; recommended!). Wow, that's actually a lot. I'm letting myself play another roguelike now, Caveblazers. Might be a mistake though. It's quite fun but the difficulty curve on the later levels is starting to worry me.
SIGBOVIK 2021 and other things of April
(30 Apr at 18:25)
Yeah! Several newsy things from April. First up is my SIGBOVIK project, published on the first of the month (that's right, at Tom 7 Radar you can find out about the newest Tom 7 Projects a mere 29 days after they are announced in other venues!). This year's conference was virtual again, although they mercifully allowed for both audio and video in the submissions. From me the main artifacts are the 24 minute video Uppestcase and Lowestcase Letters and the 18-page paper of the same name. The project site also has some additional downloads. I'll let them speak for themselves! For SIGBOVIK, the presentations were limited to 5 minutes, so there's a highly truncated/ruined version of the video (not recommended unless for some weird reason you gotta catch 'em all) and a "double-blind" Q&A afterwards in the SIGBOVIK 2021 recording. There are some other good parts in there from friends and strangers; I especially liked Jim's "Dada" presentation (29m05s mark).
As usual I was feeling fairly sick of the project as I completed it, so it's nice encouragement that upon completion, it seems that others were not yet sick of the project and were willing to spend 24 minutes on it. It's not like the video is a viral hit at 73k views, but it was nice that it found an enthusiastic audience, and I definitely feel like it was successful. I've come to realize that I get a much bigger kick out of a viewership who is smart and "gets" the technical stuff and strange form of humor more than I do from simply making the numbers go up. Hopefully I can keep up the mood/momentum and finish a few more nearly-complete projects soon.
Speaking of momentum, I got my second vaccine shot, again driving to a Rite-Aid in a tiny town in Ohio for it. Possibly inspired by these two driving day trips but probably more a directly a consequence of cabin fever from staying at home for a year, I ended up buying a car! I've owned a car before (for example Van 7 and Van 7 2) but always a crappy car that was nearly dead, like for example before I donated Van 7 2 to NPR it could only be entered or exited through the back sliding door, and when the car was on it would always and forever play the one CD that was stuck in the CD player at slightly-too-loud volume because the CD player's faceplate was malfunctioning, which at least would cover up (for the unwise passengers and driver) the various scraping, shimmying, and structural unsoundness sounds that the van would make whenever it moved. Among other things. This time I got something that I thought would be fun to drive (we will pretty much only use this thing irregularly for trips or for picking up things at the hardware store that are a bit too large to carry home running, but nonetheless not too big to fit in the actually quite tiny back seat/trunk) and got a Mini Cooper convertible that looks like this:
Vanity license plate idea: POOPERS
Actually that lens angle makes it look bigger than it is. It is a tiny, silly car. And it is more fun to drive than the minivan indeed. We'll see whether it ultimately ends up being a foolish idea, but it should at least let us see family and do some safe outdoor activities as we try to mentally survive through the extended coda of the pandemic.
You know what else was annoying? A few weekends ago I tried rebooting the server that hosts various of my websites including this very blog, and it just failed to come back (dashboard just says like "ERROR" with no diagnostics) and none of the standard things gave me any information about what was wrong. Emergency console gives some internal error. Backup images wouldn't load either. I spent an hour+ on the phone with Rackspace support, who finally concluded the server was "just too old" to turn on. I had been upgrading the OS in place for many years, so this was a pretty annoying outcome (like they could have warned me at some point that the container image or whatever was going to fail to come back?). I never particularly liked Rackspace anyway (they bought the hosting company that I had started with), so I used the "opportunity" to switch to DigitalOcean, which is probably faster and a better deal and their website is certainly way better. So, it was a weekend down the drain, but spacebar.org has a new exoskeleton now. I think that I've gotten everything restored, but partly because some people have nicely sent me bug reports (e.g. muddle was behaving as though no boards had any words, because it couldn't find the dictionary file). So if you see anything amiss, please do lemme know.
I also took the "opportunity" of struggling to get my decades of legacy software running on a new system again to rewrite some of the guts of Escape to separate the UI from the server components a bit more. Now there is a subset of the game that can easily be compiled as standalone standard C++ (e.g. for the server-side components) without needing SDL, which is nice. The main thing I need to do with that before doing another release is to make it compile again for Mac OS and for the new ARM chips, which is somewhat daunting, but I left it in a reasonable state for the next time I have such energy, at least.
Current programming project is something between a game and an overly-complicated technology demo; we'll see how it goes!
Helloo! Things are looking up. Last week I was able to drive to Ohio (from Western PA where I live, only a little over an hour, the main difficulty being that I don't have a car) and get vaccinated for sars-cov-2! This was a good blend for me because it's legitimately available for anyone over 40 (no residency requirement) so it didn't require any funny business, but on the other hand I got to express my eagerness to get one by going significantly out of the way. I got the Pfizer version, which along with the Moderna one is just really cool technology and I'm grateful that we live in a time where such things are possible. I was thinking today that it's probably the coolest thing I ever put in my body? It seems like a lot of people around me are finding one way or another to get their shots, which is a good sign!
While I was out there, I had some extra time on the zipcar so I did this run that's been on my bucket list for a while. There's a narrow sliver of West Virginia surprisingly sandwiched between Ohio and Pennsylvania here, so I ran from Ohio through WV to PA and back. (One of my running side projects is to collect border crossings, with a three-way like this being especially good (although not as coveted as a tour around a triple-point such as in post 1158).)
The portion along the river was pretty awful, basically just running in a breakdown lane of a highway, and it seems that WV and OH are having some kind of "Oh yeah, you're building a factory right here to billow smoke across the river to us? Well then we're going to build an even bigger factory where the exhaust is literally on fire!" back-and-forth, but at least I had my mask with me. Otherwise it wasn't a particularly epic run or anything, except that I was cutting it a little close with the Zipcar deadline, so it worse than it normally is when I made a wrong turn on the way back!
After that I spent pretty much an entire long weekend putting together a video for my latest project (actually finished this one) for SIGBOVIK. (It's good that I got a burst of energy because I unwisely started playing shapez.io the week before this deadline, as recommended by jonas on this very blog's comment section, and the game is both good and tended to keep me up way past my bedtime. I think I won it, though!) This project is also nothing epic but it is kind of funny/interesting I hope, and I'm very glad to have actually finished something given the energy challenges that 2020 posed. There's a paper in SIGBOVIK and a 5 minute version during the conference. It's all taking place online this year and there's both audio and video, so I think it will be a good event that anyone can participate in. I'll post the full 24-minute Director's Cut tomorrow after SIGBOVIK, which is project's true Final Form.
IMO Iron City, a crappy local brewery, should have a beer called Fe Brew Ary (feel free to improve this pun in comments)
(28 Feb at 23:23)
Hello! It is February, the shortest month. Nothing interesting is happening, except biding my time until I can get some Norton Antivirus in me and get out into the world again. Probably I should not write these things right before bed on the last night of the month, since I'm generally pretty much out of energy when I do??
I did check several things off my to-do list wrt in-progress projects, especially this newest silly project, which is fully over the top now, but wrapping up. (I've been having that experience where I broke down a large problem into sub-problems, then chipped away at those, and then the experience, which is where I'm like oh... just "return Rec();" and it's done? The moment of completion sneaking up on you is a curious thing I don't encounter much in other kinds of projects, excepting perhaps math.) I plan to do a sigbovik paper and video about that one (I just wish the "results" were a little better, but that's machine learnin' for ya). Even just to cleanse the system, you know? And though the early part of the month was unacceptably cold, the last week has been unseasonably nice, and I've been doing some long adventure runs; also good to cleanse the system.
In V.G. news, I didn't play that much this month, but I did start and finish Ghostrunner. It wasn't quite what I expected (or even was looking for?) but it's a good game. It's kind of like a super-hard version of Mirror's Edge, or perhaps a cross between that and N+, or when you have that one unlucky checkpoint in Call Of Duty where you have 1 HP and six bullets left and you have to keep practicing some route in a mostly-deterministic fire fight to somehow squeak out survival. The maps were good looking and I appreciated how you could just wall-run your way around pretty much anywhere, way off the intended path, and then basically always die because there's nothing over there. No invisible clipping walls to ruin your day, only the abyss. The story is quite silly and all the male voice actors sound like college kids doing a neck-tendon straining audition for the role of Optimus Prime in a live-action Transformers movie. Now it's on to Super Mario 3D World (this one is what I expected and was looking for) and Noita. Noita is a weird one. I've been looking forward to it since seeing a demo/teaser some years (?) ago... it's like a Roguelike built inside one of those "falling sand pixel" automata engines that went around in the early 2000s. The engine is technically very impressive, with these particle systems and rigid body physics inside a huge destructible world. And it does create some cool moments. I'm still trying to figure out whether I really like it, though, as the main route through the game seems pretty slow-paced (aside from the sudden deaths) and not well balanced (there are so many items that seem completely useless, for example). On the other hand, it is very compelling when you deliberately go off the garden path and there seems to be a lot of (extremely difficult) mystery around...? It seems that they are releasing new beta versions every day, so maybe I just need to wait for a bit more iteration.
Aesthetic images, Skidder 2021, and c.
(31 Jan at 22:21)
So goes January. That went by simultaneously quickly and slowly, as is the way of our times. Definitely looking forward to winter being over and getting vaccinated, although I'm hanging in there and finding ways to be healthy and modestly productive.
I spent most of my weekends on the latest secret project. It's a machine learning one, which has the usual contours: It does kinda work, but it's not magic, so you spend so much time fiddling with things. It takes forever to run because of the worldwide shortage of GeForce 3080s (thx scalpers) so you're still using the venerable but aged (pronounced age-ed) 1080. And since you're me, for some reason you have to write everything from scratch, so that takes also extra-long, and you don't benefit from decades of expert ideas and tuning, but on the other hand it's a different (and perhaps more pleasurable) kind of work, and perhaps you have a genuinely new idea from the naive exploration. But probably it just comes out mediocre. Anyway, my software has some nice visualizations; here's an aesthetic image:
Now I have at least three videos well underway, but as you've no doubt sussed this year has ushered a new kind of constipation in actually finishing them!
I took it a little easy (like 5k a day instead of 10k) on the running since 2020 ended, since I was having some knee trouble, and that seems to be completely better now. Nothing interesting there; winter isn't the greatest time for adventure runs, though I have made a few long trips out in my basically-infeasible new project to run all the streets in the county. I'll tell you one thing, the absurd hilliness is not confined to the city limits!
Like I've mentioned before over at Destroy FX HQ we've been updating our audio plugins to modern times, and de-squinting some of the tiny cruddy old UIs. I finally got done this redesign of Skidder:
Skidder redesign 2021
Up next is the venerable but aged Buffer Override and then the never-actually-released classic BrokenFFT.
Gamey-wise, I played through ZeroRanger, which is a stylish and fun bullet-hell shooter, although towards the end I did get tired of its mean streak. I'm still in the midst of A Monster's Expedition, a great puzzle game. It reminds me a lot of Stephen's Sausage Roll, although the puzzles are much easier (they are still very pretty, but most of them are small enough that you can completely wrap your head around that feeling of "this must be impossible! unless....!") so it's less of an endeavor to play. Still need to get back to SSR one day! I'm also playing INFRA, which is an indie walking simulator about a city infrastructure inspector who goes around photographing code violations in its venerable but aged physical plants. I love the concept and I'm having some fun, but I wouldn't really recommend it. Finally, I finished the new Paper Mario on the Switch (was like you'd expect) and just took up Cadence of Hyrule. This is a sequel to Crypt of the Necrodancer, which I liked a lot and got fairly expert at, set in the Kingdom of Zeldaland. It's way more forgiving than Necrodancer—it's barely even a Roguelike since you keep a lot of stuff when you die (and other generosities). So it's already feeling quite easy, but it has many charms and lots of great Zelda pixel art.