Why a blog?
This is a nice space to self-expose while limiting the blast radius.
For some reason, social media sites have by default struck me as too visible to be meaningfully candid. I mean, yeah, it’s your account so you can say whatever you want, but it’s a bold bet to imagine that even half of the connections that see your content will give even half an ass about whatever happens to be on your mind. If I’m going to presume to shout something out to the grade school friend, coworker, grandma, and ex girlfriend, then it’s probably best to stick to a photo of a cute puppy.
On the other hand, if you’ve wandering onto my personal blog, then think of it as a deliberate step into my room. I usually have the whiteboard propped up and a stack of books within arms reach, so be prepared for a cute soliloquy and to have to elbow your way in to grab the marker and say a word or two.
I do actually have a few other reasons for attempting a blog, but I’m annoyed that I typed them out on GitJournal and then lost the drafts, so not only is this post number 2 a little bit late, but it’s shorter than originally intended because I already have something else that I want to talk about. To dispense with this post, I’ll give the bulleted reasons for “why a blog”:
- I really appreciated diving into Bryan Cantrill’s content a week or two ago. This endeavor is a measure of monkey see, monkey do, and I saw a lot insightful, entertaining, and imperfect material.
- I had a recent dive back in and back out of the startup scene, which is always an adventure and never not at least a bit traumatic.
- I’ve wanted to do this for a long time, and it may proved beneficial for my consulting business, social network, or mental health.
I’ll wrap this up with the technical tax:
GitJournal is open source, so when it dumped my drafted post I poked around a bit. I found that there is a sha-1 hash for the password that unlocks the pro features, so being the cheap bastard that I am, I wound up getting hashcat running and having a go at cracking the hash. To speed things up, I also tangled with Nvidia’s docker runtime so that I could run a CUDA enabled container (unfortunately my choice to run Ubuntu 25.04 rather than the 24.04 LTS meant that getting the cuda toolkit running directly was a huge pain in the ass, not that I didn’t try futzing with getting the right version of g++ installed, it just proved much more time-econonical to give it up and settle for containerization).
Hashcat performed decently well, even on my now oldish mobile 2080 Max Q, but the only reason this wasn’t an effort in futility is that SHA-1 is not meant to be a password hashing algorithm, so it’s vulnerable to cracking on very convenient timelines, so long as the password is 8 characters or less. Or in the case of my GPU, 7 characters or less.
A few hours later, and presto!
No password found. Well, I suppose if I’d written the code then I could have settled for an insecure algorithm and just an extra long password, so that’s no great surprise.
So I called it a win for trying out a new tool and switched gears to simply cloning the code and jumping through the various hoops (install dart, install flutter, ride the merry go round a few times trying to get the right version of android studio with the right version of the JDK to have compatibility with the project’s version of Gradle, so that no, I would not have to crawl through a new code base to migrate it to a new version of Java just so that it will build) to get it to compile a fresh APK with the password hash replaced.
And here we are, finishing up this post having typed it on the pro version of GitJournal so that I can set the draft status to false in the YAML front matter. Let’s just ignore that I could have simply logged onto my laptop to fix the draft status manually in like 30 seconds :)