Hardware Project: Build Your Own Keyboard

I recently picked up the Infinity Keyboard Kit on MassDrop after deciding I was overdue for a hardware project. I use an external monitor and clamshell my laptop, so I've been antsy to discover that elusive perfect keyboard. Now my destiny for peripheral nirvana would at the very least be in my own hands.

The Build

I settled on the brown Cherry MX switches since I've used blue switches in the past and wanted something a bit softer and hopefully quieter for my co-working neighbors. Massdrop also offered Matias switches, but I knew I'd have more keycap options with the Cherry MX's. With the order completed, I just had to sit and wait for it to be delivered... and boy, did I have to wait. :-/ When the kit finally arrived, it included the Cherry MX switches, the PCB and the metal case. Assembly was easier than anticipated – bravo to Massdrop and everyone involved. I simply popped all the switches into the case, aligned and clipped on the PCB, and then got to work soldering.

The Design

With the initial build complete, I turned my attention to the keycaps. After much brainstorming and a bit too much time in Photoshop, I settled on a clean, white design with rainbow colors on the modifier keys. For the primary keyset, I bought the DCS ABS Double Shot from Signature Plastics. For the modifier keys, I had to do a custom order from WASDKeyboards. Lastly, I added switch dampeners to soften the key press and reduce noise.

Keycaps and Dampeners

The Firmware

Thank god for open source. Jacob Alexander (aka haata) has provided everything you need for keyboard firmware as part of the Kiibohd project. As long as you're comfortable installing a few build tools and compiling from source, it's as simple as adding your own keyboard layout files (in KLL format), running cmake to build, and using dfu-util to upload to the device.

With the ability to customize freely, I set off and started hacking together my ideal layout. A few changes that I customized:

  • Caps Lock has been changed to a fn key. While pressing the fn key, h j k and l become arrow keys (same as vi). Also, since the keyboard format is 60%, you can press the fn key to turn the number keys into F1, F2, etc.

  • The right Ctrl, Alt, etc keys have been changed to media keys. Who uses these anyway? They are now Previous Track, Play/Pause, Mute and Next Track

  • Note how the backslash / pipe key is slightly larger in the infinity layout, and the backspace key is a standard key size. Well, I switched them so I have to reach less distance when hitting backspace (which happens very often), and it's a larger key on this layout anyway!

  • The small key next to the right shift key toggles between QWERTY and Coleman. I've used Dvorak in the past have heard nothing but great things about Coleman. shrug Maybe I'll give it a try...

You can find my KLL files with all layers on GitHub.


I spend a lot of time on my computer, and while probably not practical, it's been quite fun having crafted my own tool. Cheers to sharp tools and open source!

Homemade Maraschino Cherries

Let's be honest – what we know as "maraschino cherries" are nothing more than corn syrup and red food dye, and they're awful. Here's my attempt to return them to their former glory.

Jarred Maraschino Cherries

You need:

  • Luxardo Maraschino Liqueur (2 cups)
  • Sugar (1 cup)
  • Tart Cherries in Water (4 cans / 14.5oz each)
  • Mason Jars (6 / 8oz)


  • Cinnamon (1/2 tsp)
  • Nutmeg (1/2 tsp)
  • Vanilla Extract (1/2 tsp)


  • Before getting started, put the mason jars in the dishwasher to sanitize them and get them hot. Also, boil a fairly large pot of water – you will be submerging your jars in the boiling water after they are filled.
  • Pour the Maraschino liqueur into a pot and bring to a soft boil.
  • Add the cherries with about half the water from the can. Add the sugar and optionally add the vanilla, cinnamon and nutmeg. Bring to a soft boil and simmer for about 5-10 mins – the cherries should be floating at this point.
  • Fill the mason jars with cherries and top them off with the juice, leaving about 1/2 inch of space at the top of the jar. Tightly secure the tops and place in the boiling water for 5 minutes. They should be fully submerged. After they have been in the boiling water for 5 mins, turn the heat off and let them sit for another 10 mins.
  • Remove from the water and place on a towel or drying rack and let sit for a few hours. Refrigerate for at least 2 days, and then they are ready to enjoy!

Helpful Links

On Startups and Starcraft

I started playing Starcraft 2 about a month ago. I know I'm late to the party but I recently converted my HTPC into a gaming rig, and Starcraft became inevitable. If you've never played Starcraft before, this article may not make a lot of sense to you – sorry, here are a few links. Anyway, as I've been getting destroyed online (since I'm not very good), I've started to see some startling similarities to the strategies and tactics in Starcraft and those that we employ when building a startup. Fair warning, this is going to get pretty nerdy...

Starcraft and the Lean Startup
Original Photo from kHovsT on Flickr


When playing Starcraft, you always have a rough gameplan going into each game, but you'll rarely win by just keeping your head down and executing your initial plan. You need to constantly be scouting your opponent and adjusting your plans accordingly. The player who is constantly gathering information and adjusting their strategy will usually end up on top. Sure, you may get lucky and happen to blindly execute a strategy that ends up in a win, but it's a longshot and you're definitely not giving yourself the best chances possible for a win. Customer development, anyone? Which leads to the next subject...

Tech Switch

So you're playing Terran and you've decided that you're just going to amass a ton of marines and marauders. Honestly, not a bad strategy – but when you scout the Protoss player's base, what do you see: Colossus and High Templars. Shit. You know your scant army of marines and marauders is going to get wrecked by this combo, and you need to change plans because your original plan is not going to work. It doesn't matter how many marines and marauders you throw against those guys, they're going to get shredded. Rather than panic and throw your army into a slaughter, you need to "tech switch" – so you start pumping out Vikings to counter the Collosus, and you build a Ghost Academy for EMPs to counter the High Templars' storms. A few things to note here: this would not be possible if you haven't been SCOUTING! You would just be blindly running your army into a losing situation. Also, the time you spent building your Marine/Marauder army isn't a waste, as you can more often than not reincorporate those units into your new strategy. You can't get too attached to your initial plan, and you need to be flexible enough to switch it once you know it won't work. Sounds an awful lot like a pivot...

Macro and Micro

If you've played or watched any Starcraft, you've heard the terms "macro" and "micro". Macro essentially refers to the grander game mechanics including economy and unit production. It's the big picture of what you're doing. Micro is individual unit control – it's the small, precision interactions. In Starcraft, no matter how awesome your micro is, you really need to have great macro as the backbone of your game. However, a player with great micro also gets a lot of small victories over the course of a game – an extra friendly unit saved here, an extra enemy unit killed there. As a startup, you have to have a solid strategy and a solid business model. No matter how hard you work, you need to be working on the right things or it doesn't matter. However, if you have a great strategy and a solid business model, those small extras that you do every day can add up to a lot in the end. Macro is a necessity, but don't underestimate how those micro interactions can add up in the end.

Ok, that's all I got. Get out there and win some matches IRL.

Wireframing Mobile Apps or: How I Learned to Stop Worrying and Love Index Cards

There are literally hundreds of wireframing applications and web apps to choose from, and I've bounced from one to another hoping to find that nirvana of super-productivity. Like most developers and designers, I'm probably (absolutely) guilty of over-optimizing my toolset and I was starting to get that feeling again in this case. So on my most recent project, I sat down with our stellar designer with nothing more than a pencil and a lot of index cards. The results were clear: best. mobile wireframing. evar.

QRawr Wireframes

I need to clarify my opinion here before I get too far. The wireframing that I'm discussing here is the lo-fi, general workflow type that is used to keep everyone aligned; not the ultra-detailed, perfectly polished type that's included in your 45 page design document. I find the former to be a great tool for building a product, and the latter to be a horrendous waste of everyone's time. That being said, what makes index cards better?

Index cards are already the size of a typical mobile device

Holding the index card in your hand is amazingly similar to holding the device in your hand. It helps you visualize the app as it's going to be seen and used by the end user, rather than abstractly looking at a phone-shaped canvas within your browser window.

You can pick up the index cards and visually rearrange them to illustrate elaborate workflows and use cases

In addition to holding that single card in your hand, you can easily switch between screens just by picking up the next index card. You can also easily layout various workflows on a flat surface (see: desk or table) to discuss complex user flows and/or use cases. This makes collaboration just plain awesome!

It's easy to throw one away and start it over

Inevitably, you're going to go through a few different designs and layouts for each screen. It's remarkably easy to just pull out another index card to do a second iteration of a screen. When it's so easy to scribble together a new version on a new card, you find yourself iterating quickly and experimenting more easily. You also don't get attached to work you've already done because it's so easy to just crumble one up and start over.

It is fun and addictive to automate and fine-tune every aspect of your digital life, but sometimes you have to pull your head up from the computer screen to find the great productivity boosts.