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.
Have not worn pants in like 50 days now
(31 May at 22:48)
So! What happened this month? Again I spent the whole thing inside, only leaving the house for a daily run (not going near any people). Weather's been great, and working at home is making it logistically easy to do like an hour of running every afternoon. So I am getting a ripped summer bod as a project and a way to keep from getting depressed or whatever. The minor Strava segments around town continue to be a good challenge because I can often be competitive for the top spots, which is also good because they just made all the segment stuff paid-only, except for the top 10. I've done some longer runs too, though not to complete the Pac Tom project; I'm worried about being in some situation where I run ten miles out to get one missing dead-end but I can't do it safely because of some block party or something (this is already really awkward when it happens, so the additional death/irresponsibility angle puts me over the edge). So instead I have been doing some trips to neighboring towns outside of Pittsburgh. It's a very weird experience (or weird that it is weird?) on these runs to feel lost, since it's been over a decade of feeling like I know at least the main streets of the entire city. I must admit I'm flirting a little bit with the idea of doing some sort of Pac Project beyond the city limits, but I need to figure out what the appropriate scope/rules would be?
My computer discovered another prime number; this one much more impressive than the last. It's
118568 × 53112069 + 1
which is 2,175,248 digits long and the 70th largest prime known to human-kind. Wow! It is also the largest "base-5" prime (here referring to the 5x term; of course it is prime in any base) known, period. This one is big enough to get a fairly rote official announcement by PrimeGrid. You can see that I was the "double-checker"; each number gets tested by two different computers and the other guy gets the main credit because his finished first. (In fact it's a fluke that I ran this at all—for now I've switched my computer over to Rosetta@Home to help in some small way to look for Coronavirus treatments. I only had PrimeGrid running as "backfill" while I was manually migrating Rosetta from http to https!?) Anyway, primes gonna get bigger and there are infinitely many of them, but one cool thing about this one is that it actually makes some progress towards proving the "Sierpiński base 5 conjecture." A Sierpiński (base b) number is a number k such that k × bn + 1 is composite (not prime) for all n. The conjecture is that 159986 is the smallest even Sierpiński base 5 number; to prove this, we need to find prime numbers of the form k × 5n + 1 for a set of values k < 159986, which proves that they are not Sierpiński (base 5). With this prime, we know that 118568 is not Sierpiński base 5, eliminating 1 of the 31 remaining candidates. Sierpiński is also the guy who invented the Triforce.
Somewhat hard to find the energy to grind through the last stages of some longer-term projects, but I've been starting up new ones and watering some old long-neglected ones. I finally fixed some long-standing issues in my sorta crazy custom web programming language "Aphasia", which I wrote in college, partially rewrote in grad school, and which still powers a lot of my websites (including this one). It is relaxing to address some of those bugs or delete stupid crap from when I didn't know what I was doing (even more than now). Speaking of things that will still haunt me a decade from now, I added more features and support for humidity sensing in my custom distributed temperature monitoring thing, including hooking it up to automatically control my broken attic fan (but the fan is still broken so it's just telling me that my attic is humid and hot, no duh). Started a new secret project which was initially just going to be a toy for my Thursday drinking group but is now becoming some kind of weird technology.
In games, I did finally win Nuclear Throne; thank you for the encouragement. I've been testing my friend Jim's puzzle game The Cubedex of Brass and Wood and have been enjoying trying to solve/break those puzzles and as an excuse to keep my automated theorem proving skills up to date.