Tuesday, May 6, 2014

Ergodox Keyboard

I spend most of my day staring at a computer screen, so over the past couple of years I've been transitioning my workspace to be more ergonomic. My most recent acquisition towards this goal has been building an ErgoDox keyboard.

The ErgoDox is an ergonomic, split keyboard that is designed to protect the user from repetitive strain injures (e.g. carpal tunnel). Furthermore, the code and hardware design for the keyboard is completely open-source and the keyboard uses a Teensy microcontroller for interfacing with the computer. The Teensy can be reprogrammed to reflect any key-layout that you would want and shows up on the computer as a generic USB keyboard. This is especially useful because there are no special drivers you have to install to use the keyboard and no extra software required to remap keys.

Most people buy an ErgoDox keyboard as a kit from the group-buy service, Massdrop. I originally planned to do this, but I didn't want to wait several weeks or months for the kit to arrive, so I opted to source the parts on my own. The parts list is available on the Ergodox website, and Matt Adereth has a great blog post about his experience with sourcing the parts. I bought my parts from the same places that Matt mentioned, with the only deviations of not building a case, combining a set of rainbow keycaps from WASD Keyboards with a blank modifier keycap set from Signature Plastics, and choosing brown Cherry switches.

At the time I was considering to buy a kit from Massdrop, getting the PCB, electronic components, blank keycaps, and a case would be ~$240. Sourcing the parts on my own, I was able to get the PCB, electronic components, rainbow keycaps, blank modifier keys, and brown Cherry switches for ~$212.

I held off on buying sheets of acrylic for a case because I wasn't able to secure access to a laser cuter at the time. I don't feel bad about this, though, because I only plan to keep the keyboard at my desk. To protect the diodes on the bottom from shorting and to protect my desktop from getting scratched, I put rubber feet (salvaged from an old project) on the bottom of the PCB.


I'm now a couple weeks into using the keyboard and I am very satisfied with the project. I find that I don't notice the keyboard's layout as I use it, which is good, because it means that I've memorized the layout. Currently, I'm using a modified QWERTY layout, but I'm also interested in trying more optimized layouts such as Dvorak or Colemak. The only annoyance I've found as a result of the Ergodox is that I have trouble adjusting back to traditional QWERTY keyboards. Specifically, I have a habit of thinking that traditional keyboards have a split spacebar and each half of the spacebar has a different function. However, this is a small price to pay for pain-free typing when I use the ErgoDox!

(I'm sorry I don't have more photos of the keyboard--I took several during the build process but forgot to import them into my computer before wiping my camera's SD card)

Saturday, April 12, 2014

Dark Souls Watchface


I participated in the Hack.UVA Hackathon this weekend, and while there, I created a Dark Souls-themed watchface for my Pebble smart watch. The watchface displays the time, date, year, bluetooth connection status, and charging status of the watch.

During normal use, the center of the watchface shows Solaire of Astora (a character from Dark Souls) praising the Sun:


...and when the watch is charging, Solaire is shown resting at a bonfire (a key gameplay element of Dark Souls):


Below is a quick video of the transition taking place (I was quite happy to get this working). The underlaying Pebble OS is able to tell when the charging cable is plugged in and can trigger an event for the watch to switch images.

The code for this watchface is all open-source and available for download on my Github page. Enjoy!

Thursday, April 3, 2014


I'm taking CS 3102 this semester and I teamed up with friend to create a Traveling-Salesperson Art solver for our term project. You can check out the code here: https://github.com/mrranderson/TSP-Art

For those who don't know, the Traveling-Salesperson Problem (TSP) is an interesting problem in computer science: given a set of points, what is the shortest possible path that visits every point? Finding an exact solution to this problem is incredibly difficult because it typically requires testing every combination of points to find the shortest path.

We approached the problem by using a heuristic: start at a random point and then construct the path by going to the next closest point. Despite not being optimal, this works surprisingly well. After the initial path was created, we then parsed it again to remove intersections between edges. The image at the top of this post is the result of running our code on the following image of Gandhi:

We're quite happy with the result of our work and we have posted it all to Github. The program is written in Java and structured to be easily importable into Eclipse. Try downloading the code and giving it a whirl!