The start of a project: SafeEject

The time has come: My 2009 Mac Pro has been retired and replaced with a 2016 MacBook Pro. Not only has the temperature in my home office dropped about 4°F, but I can now run the latest macOS, Xcode, and Docker, which I need for work (for that money stuff). I held on to the Mac Pro as long as I could, though, and I can confidently say that the “cheese grater” desktop is the best machine I’ve ever purchased.

A new setup presents new challenges. One issue I’ve found is switching states between “docked” and “undocked”. I put this in quotes since Apple doesn’t have a true docking station solution. Because of this it’s way too easy to rip out the USB connectors when “undocking”, which could lead to a dirty removal of a volume (e.g. something hasn’t been flushed out of cache to the actual hardware yet and data is corrupted / lost). Since I have a Time Machine drive connected at my desk, this can happen if I don’t remember to eject it from Finder.

I think this process would be easier with an external button to do the work for me before disconnecting the laptop. Currently in the hack phase, I’ve wired up an Arduino with an RGB pushbutton that communicates to a macOS app. When it’s time to undock I simply press the button to unmount all volumes and get visual feedback that it’s safe to pull the plugs…

Wireless garage door opener v2

“Because my garage door doesn’t need an operating system”


I admit – I went a little overkill with the Raspberry Pi garage door opener. A machine so complex was being used to do something so simple: Perform a button press. Why did it need graphics capabilities? A multicore processor? Cron jobs? It didn’t.

Enter the Adafruit Feather HUZZAH ESP8266. All the right junk in all the right places. A simple HTTP request to the Feather, and we’re good to go.

With the recent release of iOS 10 I took it a step further. Could I get this thing to work with Siri? As it turns out, it’s really not that hard:

Check out the code on GitHub

Raspberry Pi, touch screen, and a bluetooth speaker

A really simple project that delivers!


The only ‘gotcha’ I came across was when sending audio to the Bluetooth speaker, the emulator I was using (snes9x, the default) got super choppy. This was resolved by adding pisnes as an emulator to EmulationStation and using it instead.


Raspberry Pi Touchscreen LEGO Stand

I recently acquired a couple of the awesome 7″ Raspberry Pi touch screens. They’re great except for one thing – how the heck do you hold it up out of the box?

Some third party manufacturers are selling stands, but can dirt-cheap LEGOs accomplish the same thing? Of course. I cooked this up in a few minutes. Three points support the screen perfectly, and a piece is added behind the USB ports to minimize sliding (though that hasn’t been an issue at all).

A downside to this design is that two USB ports are blocked on this model, but you may not need them at all as in my case.

The Mac Pro gets an SSD part 2!

Welp, that didn’t take long. After installing my new SSD I quickly realized I could do better. Upgrading to SATA III from SATA II for less than $60 was a no-brainer.

Installation couldn’t be simpler either: All I had to do was attach the SSD onto the onboard slot and install the PCIe card. After powering on it booted right up, nothing else required.

Responsive Design with Adaptive Images

Today I got curious if I could solve the issue of high-res images being loaded on small screens with responsive design. Here’s my solution via jQuery plugin.

Basically, I’m detecting the max size of the image by looking at its parent container and comparing that with the grid breakpoints. In my example I used Bootstrap, but I don’t see why any other responsive framework wouldn’t work.


Emoji URLs

I got curious if one could construct emoji URLs…



RewriteEngine On
RewriteRule (.+) index.php?request=$1 [L,QSA]


$requestArray = explode("/", $_GET['request']);

echo “Welcome to my page about “;

if(urlencode($requestArray[0]) == ‘%F0%9F%90%A8’) echo ‘koalas’;

echo ‘ eating ‘;

if(urlencode($requestArray[1]) == ‘%F0%9F%8D%94’) echo “burgers!\n”;

Sent messages email graph

Did this quick graph recently with my Gmail data to see when I was most likely to send an email. Surprisingly my night-owlness isn’t as apparent as I thought it’d be.

If you’re waiting on an email from me, it’s most likely coming at 11am or 11pm.

Email times