Projects

Lacuna Language System

Custom flashcards every day

Lacuna is a flashcard algorithm based on the idea that languages are best learned by brute force rather than manually learning rules and vocabulary. Instead of layering lessons or minigames over a small set of example sentences, Lacuna uses ad-libs style templates to generate thousands of grammatically correct sentence variations, creating custom lessons each day based on the user’s learning progress.

Behind the scenes, Lacuna adapts the well-researched concept of Spaced Repetition into Variational Spaced Repetition”, an algorithm that gradually introduces grammar and vocabulary over time, and focuses on the concepts the user struggles with the most while constantly changing the context they appear in. Word associations, conjugation and other language details are handled through a special syntax by the creator of the deck, so that cards remain grammatically correct even as they change.

Lacuna is currently in a private alpha, with open source deck creation tools. I’m documenting the project’s details as a series of posts here on this site.


Snoozelock

A horrible alarm for lazy people

Snoozelock is a 3 part wireless alarm that soft-locks you out of your bedroom. The buttonless, hardcased alarm node will go off until you exit the room, close the door, and hit a button outside the door - re-entering the room before 10 minutes have elapsed will turn the alarm back on. It’s about as unpleasant as it sounds. It does work, though.

Besides being good for a laugh, Snoozelock was an interesting experiment in deliberately hostile user design, as it prevents the user from altering or disabling it while it is active. It’s also been useful for exploring both low power and peer to peer wireless microcontroller features.

It was designed a while ago with some regrettable technology choices, and I’m in the process of remaking it. The original source code is available, but due to the deprecation of the Arm MBED classic framework, I wouldn’t recommend doing anything with it.


Dynafeather

Easy access to robot servos

The Dynafeather is a Featherwing” style breakout for Dynamixel servo motors, allowing Adafruit feather boards running Arduino or Circuitpython to run the AX and MX series of smart actuators from Robotis. Dynamixels add features like motion targets, torque limits, and continuous rotation mode to a small package size, making them good for walker or arm robots where hobby servos might have control issues.

The open hardware design comes with the required half-duplex switch for Dynamixel UART, a small amount of power buffering, and an LDO that allows the feather to work off the Dynamixel power when disconnected from a computer. It pairs well with my Dynamixel support library for Circuitpython.


SPUDWrite

Distraction free creative writing

A Single Purpose User Device”, the SPUDwrite is an e-paper word processor designed for first draft writing without distractions. Unlike existing e-paper typewriters, it combines a small real-time segment display under the slower e-paper screen, allowing the user to make quick and responsive edits while still viewing the majority of their text on e-paper. It includes a removeable SD card to transfer drafts to a computer, and a receipt printer for printing out drafts on a roll of thermal paper for redlining.

Never seriously intended for sale, the SPUDwrite was an experiment in handling multiple cascading firmware buffers, user experience design, and increasing the responsiveness of e-paper via firmware hacks. It was featured by BoingBoing and IEEE Spectrum.


ExpressionEngine

Toon eyes on small hardware

A firmware-level rendering program for cartoon expressions, inspired by the Uncanny Eyes” program originally published by Adafruit. Instead of attempting a realistic uncanney valley effect, ExpressionEngine uses a glyph rendering system to overlay simple shapes into cartoon eye designs. Includes some demos inspired by the Iron Giant, Overwatch’s Orisa, and various anime shows. Some features brought over from the original Uncanny Eyes project include the smooth motion parabola and the SPI direct memory access strategy.

This project was an interesting case of optimizing for performance at the cost of all other metrics, to enable compound eye designs to run smoothly at 60fps on cheap microcontrollers. The project is available on Github.


Ultitimer

A many-moded smart hourglass

A commission project to build an ultimate timer” with multiple modes, for use when exercising, cooking, or any other time where a phone might be inconvenient. Included a chess timer, pomodoro mode, lapping stopwatch, conventional kitchen timer, and settings adjustment page. Electronics included an accelerometer and encoder to allow settings and activation to be changed by physically rotating the device or placing it on each side like an hourglass. Also included low power modes for extended runtime off an internal rechargeable lithium polymer battery.


Hardlight VR

Doomed VR haptic suit and software suite

A spinout of the Universty of Rochester robotics club, Hardlight VR was a haptic feedback suit and motion tracking software suite intended for VR action games, launched on Kickstarter in 2016. What followed was a hectic few years of negotiating with a Chinese manufacturing partner and escalating panic as the VR wave crashed. Our team ultimately managed to deliver the suits to backers, minus some failed stretch goals - you can read more about the cost breakdown of the manufacturing run on Kickstarter.

The entire project has now been open sourced under the permissive MIT license, allowing anyone to use the hardware and software, including the company’s forward kinematics body tracker and haptic feedback design tools. You can access the full project here on Github.

Hardlight was featured in Techcrunch, The Verge and Wired Magazine.