A week ago I attended BSides Winnipeg 2015, a local security conference. There were a ton of great talks and lots of interesting people there. The food was pretty good too.

The recordings of the talks recently went up. Among them was a talk that I gave on the relatively new programming language Rust. It was a lot of fun and I hope I can do it again soon.

If you would like a copy of the slides, you can get them here. My talk was heavily inspired by Memory Safety in Rust by Nicholas Matsakis. If you want to learn more about Rust’s memory safety features, I highly recommend checking out his talk.


It has been a while since my last post. Lots of stuff going on. Here’s a quick summary.

Earlier in the year I was elected to the board of directors at SkullSpace. It is really great to see all the things people are doing there and to be a part of making that happen.

For a while now I’ve been working on a bit of a side business. The idea is that we will develop, manufacture, and sell open source electronics. Ultimately, we intend to sell them with a pay-what-you-want model (with minimums) as well as pay-who-you-want (ie. allow the customer to direct where they want some of the profits to go; designer, influential projects, charities, etc). If you are interested, you can sign up for our mailing list on our website.

One of the first products I’ll be posting is an RGB LED ring display for a rotary encoder. Additionally, it adds capacitive sensing to the encoder so it can tell when the user is touching the knob. The firmware is still a work in progress, but I made a simple demo video to showcase the basic features.

RGB Rotary Encoder Display Demo from Benjamin Bergman on Vimeo.


Introducing the μJoypad, the worlds smallest NES controller! Measuring in at 25.4×12.8×3.2mm (1.0×0.5×0.1in) this is, by my best research, the worlds smallest, fully functional NES compatible controller. A couple months ago I saw an article or video of the world’s largest game controller and thought to myself “I bet I could make the smallest” and so I did. The project is open hardware and available on GitHub. More pictures and a description of the design process after the jump.




A couple weeks ago I was fortunate enough to be able to attend the Software Development and Evolution Conference 2012. Since my formal training is in engineering, I never got the chance to learn a lot of software development techniques. This conference talked about a lot of stuff that falls under the umbrella of “Agile” development. The core idea is to produce quick iterations with tight feedback loops in order to get a working product out the door faster (and of higher quality) than you could if you tried to build the entire product all at once. There are a number of strategies that were introduced and I’m going to log the interesting ones here, largely for my own future reference.



I got some PCBs in the mail yesterday! I designed these all with gEDA pcb and had them manufactured in the States by OSHPark. In the main picture, from top to bottom, I have an FFC breakout board for my Bluetooth Kinesis project, an ATtiny45 VUSB breakout board intended to be used as a NES controller to USB adapter, an EasyPoint breakout board also for my Kinesis mod, and my μJoypad. I’ve already found one problem with EasyPoint breakout (my own fault, even though I was warned about it). gEDA pcb outputs 2 drill files, one for each of plated and un-plated holes, but OSHPark expects those to be combined, so my unplated holes were not drilled. Hopefully this is an easy fix with a drill press, otherwise I will just be cutting off the stabilizer pegs from the EasyPoints.