On possible future projects

I normally only post to this site when I finish a project (or have something fun to show off). My ability to come up with ideas for projects has always far outstripped by ability to execute on them, though, so a lot of ideas never get realized (or get built halfway and wind up collecting dust in my basement). Here’s a rambly list of projects I’ve considered in the past, and might one day consider again in the future:

  1. ¬†Building a ‘kitchen sink’ laptop – I’ve always loved the idea of hackers crafting their own heirloom laptops (a la Bunnie Huang’s Novena), just like Jedi have to make their own light sabers. I really want a ‘kitchen sink’ laptop with the following (something I’m actually in the middle of building at the moment, although we’ll see if I ever finish it!):
    1. Runs Linux on a sane micro-architecture (I’m using the ARM subsystem of an Altera Cyclone V SoC part)
    2. Adequate performance for browsing and general computing.
    3. I want a built-in Cray mainframe (the other half of the Cyclone V) with a full development suite running UNICOS (workin’ on it!).
    4. I want a built-in microcontroller like one of the new Teensy 3.x chips for real-time tasks, with a bank of GPIO connected to spring-loaded wire receptacles for easy hacking.
    5. I’d like a long-range 900MHz or 2.4GHz radio modem for communicating with random other hobby projects (just connected via UART).
  2. A portable game console that only plays “Cripple Mr. Onion.” I actually got about 70% of the way through this back in 2009 or 2010, but abandoned it before it ever got to a ‘polished’ state. Technology has progressed so much since then, it would be fun to revisit at some point.
  3. A completely ‘free’ (as in Richard Stallman, not beer) computer. Computer architecture happens to be a big hobby of mine (as well as my day job), so the arrival of Project Icestorm presents a fun opportunity. It’s a completely open-source toolchain for the Lattice Ice40 line of FPGAs (which go all the way up to 7680 LUTs for the HX8k!). These chips are just adequate to fall into the realm of ‘interesting.’ With a lot of effort, you could probably build a computer that would be competitive with anything from the mid-1990s. Probably something along the following lines:
    1. Spread the system over multiple HX8K parts – they’re not very expensive, and they have differential I/O that can run up to ~200 MHz.
    2. Take a note from the 1990s – use dedicated chips for the CPU, North bridge/memory controller, video controller, I/O Hub (sd card, UARTs, maybe USB 1.1 controller).
    3. Maybe target a simple RISC-V system, because it’s a neat project and has a toolchain available.
    4. Build it all up into a nice little platform with keyboard/mouse support, VGA, SDRAM, SD card slot, etc. It might be an interesting option for the truly paranoid (or at least those concerned about Intel’s built in management controllers).
  4. Autonomous Boat – This is one of those projects I’ve been tinkering with on and off for nearly a decade (the current one is 3D printed and involves a jet engine, but this is probably the 3rd iteration since I started). I really want a small robot boat with the following features:
    1. Bi-directional communication from anywhere in the world. At one point this was almost impossible, but nowadays I can buy a satellite modem from sparkfun for a few hundred dollars that can exchange messages from just about anywhere. High bandwidth isn’t needed, just global reach.
    2. Solar powered. If it’s going to be globe-trotting, it’s got to be able to feed itself.
    3. Nearly indestructible. I initially conceived of this project as a combination ‘message-in-a-bottle/floating football’ and a simple pair of motors to control it. The ocean’s a rough place, so ‘directed drifting’ seems like a better strategy when all you have available is solar power, and sails seem too fragile. I’m thinking GPS waypoint following, where it gets somewhere ‘eventually’ (maybe weeks/months).
    4. A whole pile of sensors/cameras – I want it to be able to measure everything about its local environment.
    5. Maybe a robot arm/claw with a camera on it, just for fun =)
  5. Programmable Loom Controller – I’ve been tinkering around with ideas for a more advanced all-mechanical computer (possibly similar in capability to the Numbotron), and it occurred to me that a counter-based computer is actually quite well suited to controlling a power loom (counting picks of the weft, for instance). So I’d like to try my hand at building something that could have actually been useful to someone in the 1870s, had they understood the concepts. Ideally I’d like a small jacquard-style loom to attach it to, and be able to programmatically generate patterns (maybe weave a towel with Conway’s Game of Life on it). This feels like it probably falls into the ‘complicated, but do-able’ category (which probably translates to me tinkering with it for ~2 years before I get anything working out of it).

That’s all for now, although I may post some more ideas later.

Say hello to HANS

hans_frontI wanted some new desk art for my office, and this is the result. It’s a digital orrery that simulates our inner solar system with unnecessarily high precision on a hilariously underpowered microcontroller.

Testing my newest contraption…

digital difference engine


A long time ago (after I built my FIBIAC), my friends at Makerbot used their botfarm to make a boatload of 3-digit counters for me. I hadn’t really decided what to do with them at the time, but I thought it would be fun to see how far I could push the delightfully-inefficient instruction-set architecture I had come up with. After languishing for 2 years or so, I finally decided to do something with them. The punch-card chain of the FIBIAC has been replaced by a somewhat more robust stepper-driven instruction drum, and there are now 8 (!) 3-digit counters. Here is a short test video of it running a 4-instruction ‘Difference Engine Emulator’, and computing a table of x^2 (1, 4, 9, 16, 25 …). The final result shows up on the 4th counter from the left (the white one) after every iteration. Enjoy =)

The Pocket Gutenberg

I think I started this project around 2 years ago, but got bogged down in trying design my own printable, movable-type font (it turns out font design is a whole crazy world I want nothing to do with). I recently discovered the “Write” library for openscad (along with Makerbot’s cool ‘customizer’ tool for thingiverse). The result is a neato, pocket-friendly printing press. Customize a plate of type, print it out with a 3D-printer, and then 2D-print until your heart’s content. You can finally make the tiny zine you’ve always wanted to!

Cray-zy progress! We have a booting system!

I had gotten bogged down with the data recovery effort from my COS disk pack in the last year (and my day job building slightly more modern supercomputers got a bit busier), but an awesome programmer named Andras has picked up the torch and carried it ridiculously far!

He not only re-wrote all of my disk recovery software to overcome most of the disk corruption, he also reverse engineered the file system and wrote a simulator for an entire data center’s worth of equipment (4 CPU Cray X-MP, with 4 IO Processors, a peripheral expander, printer, wyse 50 terminals, a farm of disk drives and a real-time clock module that apparently uses the AT command set), and actually got the OS to boot! His write-up about his work is pretty awesome: http://modularcircuits.tantosonline.com/blog/articles/the-cray-files/, including code for his simulator.

If anyone has any software for a Cray-1 or Cray X-MP, now is the time to speak up! We’ve got a working system that can run it! Now, to just find the time to get my FPGA version up to speed so I can run this!

A 3D-printable, mechanical stepper

My efforts have slowly been converging on a workable design for a 3D-printable, all-mechanical computer (with an emphasis on the word *slowly*). Inspired by this recent post I saw floating around the ‘net, I thought I would post my most recent attempt at building a fully-mechanical stepping mechanism (to replace the stepper motors used in my FIBIAC project). Eventually I will get around to integrating this with my electromechanical counter so that I have a fully mechanical counting mechanism.

And video!



I’ve been reading an awesome textbook on power-loom engineering, and it’s inspired me to try to build my own all-mechanical, jacquard-style punch card reader. I have a small 3-bit version more-or-less working, and up on thingiverse in case anyone wants to build their own. I doubt it will ever happen, but it would be cool to build a super-simplified all-mechanical computer that actually used punch cards. Maybe I could call it “Plan 2.8” instead? Anyway, eat your heart out steampunk fans!