This month I did some UI work for our Destroy FX plugins, mostly on the Rez Synth plugin, which now looks like this:
Since the plugins often need to grow as we add new features, I've been experimenting with automatically generating the background images, at least. Here that allows for some fancy details that nobody will ever notice, like how the thingies that span two cells don't ever cross certain zones. Was also recently turned on to "blue noise" as a much better way of creating random graphics but avoiding detectable lumps. That set me on a tangent of building a little tool that let me see the live Fourier Transform of image data while drawing it, or conversely to draw directly in the Fourier domain and have it reflected in the image, but it turns out that this is completely unintuitive and less fun than it sounds!
Continued running >10k every day this month, usually doing about 50 miles per week, and 90+ days on the 10,000 steps/day streak. I'm on track for 2000 miles in 2020 (I just realized I should probably make it 2020 miles?), with the main obstacle being the increasingly shitty weather and short days. In Pac Tom I finished the whole North Side (including Herr's Island). Yesterday I ran 17 miles to New Homestead to do 157 feet of ambiguous road that had been haunting me for years, since it was so far away and not obviously a real road. But better safe than sorry. So that definitively finishes New Homestead too. Only a few straggling streets in a few neighborhoods in the South Side are left now. It's probably doable in one trip but I think I'll leave something so that I can be very confident that the final run is indeed the final one (there's always some chance I'll miss something and only discover it when I curate the map data later).
I only played Spelunky 2 this month. It's a fantastic game. I finally got the speedrun achievement (7m58s) after a few extremely close calls (like one finish 4 seconds too slow, or having one of Tiamat's bees kill me as I was approaching the final door!). Now I've gotten close to the medium-hard ending. Dunno if I'll ever have the skills for the hardest ending, but like Celeste, one of the best things about this game is the design of its smooth but lengthy difficulty curve.
Over Thanksgiving break I did let myself start a small-ish programming project, this one involving fonts! We'll see if it goes anywhere.
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 2020 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!