Happy Halloween everybody! I didn't even think about dressing up since we're still staying home, due to the plain fact that coronavirus is as bad as it's ever been here (for several definitions of "here", including say, Earth). I hope you're staying safe, keeping others safe, and if you're in the US, have already voted or have a good plan!
This is the busiest time of year at work, so I haven't had much spare time, plus as you know my project efficiency is low this year. But I did accomplish a few things:
Have kept up the running, averaging about 6.5 miles a day. I've been doing some silly Garmin badges too, like I just finished a 60-day 10,000 steps/day streak. One thing this caused me to notice is how few steps I get other than the running... it's typically around 600 when I head out for a run at 5pm!
One reason I have been putting off finishing Pac Tom had been that I wanted to capture some running video (plus footage of my process on the map software), for the commemorative short film I plan to make. With a burst of motivation last week (probably due to an overdue vacation day) I managed to do all this stuff. So now there is no real hazard to continuing that, except maybe that I should have something in mind for the very end. On that run I finished the neighborhoods Perry South, Fineview and Central Northside. 7 neighborhoods remain, but each has only a trivial amount of cleanup left.
destroyfx.org is now hosted on my own server, and the plugins continue to shape up. I have the never-released classic BrokenFFT working; I mostly just need to build a GUI for it now. We're going to try to reskin the ones with some questionable design choices or outdated assumptions about what constitutes a readable size.
I went on a spree improving Aphasia 2, mostly building a bunch of optimizations in the compiler backend. This is something I find fun. My benchmarks went from taking about 3 minutes to about 2.6 seconds! This was mostly because I was able to get the memory consumption down to the point that the benchmark stopped swapping, but that does make a difference in real practice too because this virtual server only has 512mb RAM. Maybe a fairer stat is that the compiled code size for all of the apps dropped from 2.4mb to 1.7mb, largely by just doing things with less code. Done with this for now, though please let me know if you spot anything weird on the site (bugs so far have all been mistakes I made when porting code, thankfully not compiler bugs, though those can be fun too!)
I beat Spelunky 2 the easiest way (shortcuts) and then also without shortcuts. Took a while to stop feeling rusty! Now I'm working on the various alternate harder things. I've come very close (like the last few levels) on the speedrun and moneyless runs, which are two I enjoy (they are generally faster than the "do everything" runs). The "do everything" endings are still somewhat outside my grasp, although I've at least done most of the parts in separate runs.
Hiya! It was my birthday again. This was predictable.
Projects this month are a continuation of what I talked about before. I finished porting every Aphasia 1 program to Aphasia 2, and retired that thing. Even though it's "open source" I'm pretty sure I'm the only Aphasia programmer (and if this is not true, my condolences!) so it is a bit of a compiler/language luxury to be able to evolve the language by just updating every program in the world. There are a bunch of apps that are incomplete or that I'm pretty sure I will never need to use again (e.g. 20 years ago I made a content management system for my then-girlfriend's The Sims 1 fan site) but once I was on a roll I just did these too so I wouldn't need to agonize over whether or not to do them or delete them. So now I've started fixing various problems with the interpreter (it's running this very blog you see before you), memory leaks and things forbidden since C++'s standardization, performance trainwrecks, and so on. It's basically fun and feels good to not have that maintenance hazard in the back of my mind, like fixing a slightly leaky pipe in the wall.
We moved Destroy FX to github and are continuing to modernize that code and fix bugs, which is along those same lines. I'm making an effort to give git a chance because I know a lot of smart people like it, but mostly finding it really obtuse. And I keep having situations like this: "Hmm, I want to do basic thing X, which surely every programmer must want to do."
1. Search "git do X" on Google-brand search engine
2. Find "Q. How do I do X in git?" on StackExchange-brand Q&A site
3. (I'm like, perfect)
4. Accepted answer has 600 upvotes: "Technically, what you really want to do is Y." (This sounds the same to me but ok). "Type these commands:"
✂ clip 'n save
git reset --hard --delete origin/main git unstash --interactive -u -a -m --rebase # will drop you into vi shell. follow the instructions git rebase -i HEAD~3 # do this for each change. do NOT use HEAD git push --force-with-lease
5. Next answer has 19,000 upvotes: "Since git 2.6 you can use the command:"
✂ clip 'n save
"... but git will issue a warning that you are using git wrong and shall be punished."
6. All comments on this answer are "This is WRONG. It will CORRUPT your precious HASHES" or people arguing about that.
I suppose this is probably what it feels like to many people to use a language like ML (or maybe do anything with computers), so maybe I should be more sympathetic. But when doing version control I guess I'm just not looking for a super opinionated technology that prides itself on solving problems I don't have (like semantic symmetry between my working version and the hosted "main" repository). In comparison, I use Mercurial at work and it seems to do all the same stuff, but somehow managed to be mostly intuitive in a short period of time (although to be fair this may be because of some nice extensions). Maybe git will just take longer to click, or I need to make my own wrapper tools, or something like that.
Anyway! It can't all be computers so I've also been doing a lot of running, including fairly serious efforts at coverage of municipalities neighboring Pittsburgh. Running the whole county is still seeming pretty nuts, but some part of me wants to get deep enough into it that I start taking it seriously because of the sunk costs. For a sense of what's involved, here's where I'm at:
Allegheny County, PA
... with the majority of the red blob being the existing effort towards Pittsburgh. One positive is that the streets are less dense outside the city, but sidewalks are much more rare, and of course everything is much farther to even get to in the first place.
This month I finished Control, which was great. As if for my birthday, Spelunky 2 just came out, so I played that late into the night yesterday and will do so again now! So far it's great, but it's funny how my skillset from Spelunky HD (one of my favorite games of all time, and I 100%ed it) is so far not transferring to this one very much at all, because of all the new surprising ways to die.
Still keeping up the no-pants streak
(31 Aug at 23:47)
Not too much interesting to report this month, which ended so abruptly that I again missed midnight and backdated by an hour.
I'm spending a lot of time each day running, 10k+ pretty much every day, which has been good for me physically at least, and uses up a lot of energy. I've kind of let myself start trying to run "all the streets in Allegheny County," but it's such a stupidly large area that all this really means is that I'm doing some long runs where I weirdly pace around the streets in some neighborhood, like the old days. I remember thinking once that Pittsburgh was too insane to ever finish, so maybe one day I'll feel the same about the county, but it's 745 square miles and I'd need to do dozens of 40 or 50-mile round-trip runs, so like ????. Still putting off the last few trips for Pittsburgh proper, partly because I'm trying to figure out my strategy for making a video (or something) to commemorate the project's completion.
In hacking projects, the Destroy FX plugins are all working in 64 bit on Windows now, with some additional modernization, and so that's likely to go live pretty shortly. I also upgraded my server spacebar.org, which broke some ancient stuff I've been using since the year 2000, and wasted much of my life force fighting with decades of database data that had been "converted" during the "automatic" upgrade from UTF-8 bytes (not correctly marked I guess) to Windows-1252 and then "converted" again to UTF-8. I feel like busted character encodings are a story I'm destined to replay for the rest of my life, really. Doing that kind of reminded me that my ancient functional web scripting language called "Aphasia" is perhaps a ticking maintenance time-bomb. I wrote the thing in college, now over 20 years ago, back when testing (this == NULL) was thing reasonable people did. And although I've rewritten the compiler itself to something basically acceptable, I'm still using the original version of the compiler to compile a bunch of old apps that I never ported. So this last week one project has been to try to port everything to "Aphasia 2" (new, far less insane compiler, only one decade old). For example, play the new version of Hangsnoot, which behaves exactly the same as the old one. (It was also funny to revisit my old to-do list app, which I hadn't looked at since grad school, but I did get to legitimately check some items off while testing it!) After I port all the apps I can delete "Aphasia 1" for real, and then maybe clean up some of the rickety stuff that runs inside the web server. Such are the burdens of the Tom lifestyle. But it is straightforward work and basically relaxing, and better to do it now than when the site's actively falling over!
In games, I played Terminator: Resistance since it was on sale and the reviews led me to believe it would be a good dumb shooter, but it was not very good. Then I played The Pedestrian, which was a nice clean puzzle game with a lovely visual presentation. Only took a couple hours and none of the puzzles were frustrating, so I can recommend this one. (Well, the inability to invert my y-axis in one part was frustrating! Come on, some of us are old guys!) Now I am onto Control, which is finally out on Steam, and it is good so far.
On the theme of confusing June and July still, this post resembles the previous one an awful lot! Backdated because I stayed up late playing video games, and still not much happening because of the shelter-in-place and its psychological consequences.
Made a lot of progress on DFX plugins and updating the site for Y2K20, but nothing yet to show for it. I mean, check out the source repository if you want, but you don't want. There are a handful of bugs that I hope are shallow (I tended to the worst stuff first, like weird crashing and cross-platform font rendering!). I sort of gave up on making new effects a decade ago because I didn't really understand the GUI stuff, so now that I kinda do, it might be fun to build GUIs for some of the experimental ones, or to try out some ideas that have been sitting in the ideas file for at least that long. We'll see. The relaxing care-and-feeding stuff I can find the energy for, but the less straightforward slogs in birthing something new are proving to be formidable recently.
One fun thing is a font sighting from a show I was watching with my friends, Search Party:
Here's Action Jackson (of course) with an inspirational quote, as Arrested Development's Maeby investigates the scene. It's no neck tattoo, I know, but I still get a kick out of these every time.
In the Videos, I played Bloodstained: Ritual of the Night finally, after having it recommended to me so many times including in this very comments section. It was indeed good, although I will say, I muuuuuch prefer lovingly pixelated 2D art over this style (I think that's why I avoided it for so long) which just reminds me of the relentless disappointment I experienced during the early 90s as games awkwardly transitioned to 3D. The other thing is, it leans so hard into its Castlevania homage that I honestly feel like they owe Konami royalties. OTOH there were several pleasant surprises, like the voices were far less annoying than usual for the genre, and it's one of the few games where I actually felt like there was some point to learning recipes and cooking/crafting. But I made my character way too powerful doing that and the second half of the game was super easy as a result. Oh well. I also finally played through Sonic Mania. This one is also a throwback, but is a great example of what I mean by "lovingly pixelated 2D art"... it's amazing. Totally recommend that one if you kind of feel like playing an Sonic game but want it to look and feel as good as in your memory. Having finished both of those, I'm onto the newly released Paper Mario: The Origami King, which I like so far!
Oops, July really snuck up on me! Even at the age of 40 I confuse the two adjacent four-letter Ju months and so, I guess especially, the border between them. This post was backdated an hour, which is cheating, but less cheating if I admit it!!
In my hacking time this month I mostly worked on my household distributed temperature/humidity thing, and most of the hacking was fairly boring linux things to keep the things running even if internet connectivity is lost (this is surprisingly hard to do??). This is essential for my garage one, which is right on the edge of wifi and so loses connectivity if anyone so much as walks through the ether wrong. I fixed the attic fan and did a good job that's basically up to code, especially if you compare it to the existing wiring up there. All of a sudden I remembered about the existence of heat shrink tubing, and got a heat gun and all sorts of heat shrink tubing and now everything is heat shrink tubed. Like I fixed the fraying ends of my running shorts string (what is that called anyway, string?) with heat shrink tubing. The raspberry pi in the garage is shrunk into a large heat shrink tube to seal it against the elements and to make sure the wifi has one final struggle.
On the care and feeding theme, just last weekend I picked back up on the Destroy FX plugins, which I hadn't touched for at least a decade. These are weird audio effects that I made with my friend and bandmate Sophia when we were in college or so. They still have solid usage, but I haven't been able to compile them for ages and although I've had some audio processing ideas in the interim, they just have gone in the ideas file. Sophia has been modernizing them for Mac (64-bit, etc.) and last week my coffee and I ground through DLL hell and deprecated headers hell and so on to get the basics working again. Next up is making the GUIs work, which sounds painful, but if I get past that then we can delete all that Visual Studio crap and also maybe build some of the ideas from the ideas file. :)
On the painful theme, I've been running around 50 miles a week pretty consistently (still, not going anywhere near anyone). There's probably no hope of doing an organized race safely, which is a shame because I think I could put up some good times. Did my regular hilly 10k route at a 6m57s pace earlier this week when it was 85°F out, which is not bad given my all-time PR was a 6m22s pace, net downhill, when I was 29!
In video game news, I got the Valve Index, which is their first-party VR system. It is indeed an upgrade to the HTC Vive (highlights are the frame rate and field of view). I'm still struggling a bit to get my eyes to clearly focus in there (some prescription lenses are on the way) but the biggest annoyance is that the tracking base stations make this infuriating high-pitched whining sound. Some other people have been complaining about it but I'm not sure if it's just sensitive hearing or mine are defective (since both seem to do it). I don't think I can recommend the system with this problem, to be honest. So far I've been playing Half-Life: Alyx, which is very good for a VR game and "not bad" for a Half-Life game.