New SaaS Project

For the past 3 months, on my own time, I have been working on a new project. I’ve culled down many side-projects to focus on it (including updates to this site). It’s a browser-based SaaS (desktop only), using React, Ant Design, Firebase, Stripe, and others.

Master Boot Record

I like listening to instrumental music while I code, it helps keep me focused. On Bandcamp there’s an artist I like called Master Boot Record. The albums routinely contain “secrets” as the album description text. They are small easter egg like puzzles.

Below is a list of links to a post about each album and whether or not it I solved it.

Now a static site

I’ve moved everything over to a static site. I did a few “while I’m at it” things as well:

Migrating to a static site

I’m testing out various static site generators and will be migrating this site to one in the next month or two. I will retain existing post comments, as there are so few but they are useful. The new static site will not allow new comments to be posted. I’m not sure I want to go with something like Disqus.

Migrating to Firefox from Google Chrome

After Firefox Quantum was released, I tried it out and decided to switch. I had a few reasons why: Faster No tracking Can run Add-Ons (Extensions) on mobile I was very impressed, especially with Tracking Protection, how much faster Firefox has become. Number 2 refers to all your browsing data being sent to Google HQ, encrypted I imagine, but still. And for number 3, on Android certain sites would have 3rd party ads that redirected the browser from the new article or whatever page I was reading to some spammy ad page.

Education in Futility: WarpWallet Brute Forcing

So, WarpWallet is a so-called brain wallet for Bitcoin. That is, you only have to remember a relatively short password and it generates the corresponding private key for use. It uses a memory and CPU hard set of cryptographic algorithms to ensure that brute-forcing is slowed way down. That is, when generating the private key, it takes considerable time. Their Javascript implementation takes over 10 seconds on my machine.

So the makers of it had challenges setup. By the time I stumbled on it, only the last challenge was left, with 6 months remaining. For that challenge, the reward for cracking an 8-character alphanumeric password was 20 BTC (and BCH and BTG!), which was worth over $100,000 USD at the time of the challenge end date.

Reverse Engineering the firmware on a Kenwood DDX9903S

UPDATE 14 MAR 2020: For discussion, see the Google group. Comments from the old WordPress site have been migrated there.


I bought and really like my Kenwood Excelon DDX9903S headunit. I had it in my WRX, and moved it to my LS430. It supports Android Auto and CarPlay, which I find really useful when driving.

However, it has a nag screen every time it boots up. This got me curious as to how it worked, and see if it could be patched to skip this disclaimer. I figured it probably ran Linux on a SoC, as pretty much everything does nowadays. So I grabbed the latest firmware for it (mine was already updated to it), and started probing.

S_V2_7_0008_0600_AT1.zip

Extract that and you get 3 folders under S_V2_7_0008_0600/:

BOOT_V2_7_0008_0600_release/
MAIN_V1_0_2758_0400/
SOC_V2_7_0008_0600/

Adding a disk to an encrypted mdadm array

My RAID6 was originally planned with 6 drives, but only had 5 for a while due to space concerns with the case. However, I found as a file, media, and multiple cryptocurrency node it filled up the 2.7TB pretty quickly. So, I got a new case (and some more RAM), which has proper space for 6 3.5” drives (and 2 5.25”). When migrating to this I decided to add the extra 1TB WD Red NAS drive I bought but have not been able to use.

The case is a Fractal Design Define Mini, and I am thoroughly impressed. Six 3.5” slots, two 5.25” external slots, and lots of sound padding on the doors and sides.

My SuperMicro server in the Fractal Design case

Sync login/lock screen wallpaper to current desktop background

For Windows 7, this turned out to be pretty easy to do via PowerShell. I just had to look for a native image resizing library since the lock screen for some odd reason, only supports JPEGs up to 256KB in size. Probably one of those legacy items left over from NT, like the file system permissions dialogs, and the built-in environment variables editor… I ended up using WIA’s ImageProcess COM library which worked surprisingly well.

Windmill – Windows Window unclobberer

I noticed during the (many) meetings I attend that disconnecting and reconnecting my laptop from the dock reorganizes all my windows to the laptop’s display. This got annoying to have to drag and resize everything when returning to my desk, which has a 3 monitor setup. So, I wrote this small Win32 application to allow you to save the positioning and size of all windows and then restore them at a later time.