There are a lot of things I’d like to make — maybe you can help! Please let me know if:
- you know of an existing solution to one of the following ideas
- you have suggestions/pointers about a relevant technique/approach
- you want to have a product design chat or pair programming session — I love collaborating with people, so definitely let me know!
Vitamix cup attachment: I recently learned mason jars can be attached directly to Oster blender blade casettes, which means you can blend delicious smoothies directly. Unfortunately, I have a Vitamix blender — what would it take to manufacture a mason jar threaded Vitamix-compatible blade cassette?
Twitter interface: (Done but unpublished) I like Twitter because sometimes people say smart, interesting things there. But I don’t how little control I have over the main interaction — my “feed” is filled retweets, other people’s favorites, and snippets of contextless threaded conversation. How could I design an interface and sorting algorithms to enable the interactions I want out of Twitter (and even other platforms like Reddit):
- never missing the high-value, infrequent tweets of makers in the deluge of talkers/commentators (who I nonetheless want to roughly keep up with)
- batch Twitter into chunks (daily?) to make usage more deliberate
- acknowledge the fact that I have different moods; sometimes I want to “work”, othertimes I want to hear what my friends are up to.
Collaborative drawing/whiteboard: Using an iPad or drawing tablet, how can I:
- draw simple annotations on top of my computer desktop OR a blank canvas
- let my video-call collaborators draw too
I want a few colors, eraser/undo, and maybe layers that can be toggled on/off (perhaps each layer is just an image file, plan9-style?) Non-goals: async collaboration (operational transforms, crdts, etc.), fancy drawing brushes. Prior art: Clearboard (pointed out by Adam Solove)
Car infotainment UI: A security hole allows one to flash custom software to the Mazda infotainment system. I have one of these cars, so it’d be fun to design and build a custom UI that takes advantage of the car’s excellent physical controls. Or, if not high-concept UI innovation, I’d also be open to re-theming all of the car sounds and graphics to Mario Kart 64.
Mechanical engineering grab bag: I’m designing a 10’ wide wheeled robot with a variety of motion requirements. I’ve sketched out some mechanical designs using direct-drive wheels, lead screws, and pulleys, but am basically shooting in the dark w.r.t. mechanism trade offs, motor sizing, etc. I’d love to chat with an experienced practitioner who can review both high-level designs, point out any gotchas, know when to shop at Home Depot / Amazon and when to shop at McMaster, etc.
Skid-steer kinematics / motion planning: I’d like the robot to eventually drive itself, which means I’ll need an algorithm to plan motion and incorporate closed-loop positioning feedback. Open to a from-scratch solution (in Rust) or off-the-shelf open source — it’d be neat to have a simulation environment too.
Computer vision fiducial: I’d like a fiducial that a CNC mill can machine onto its own spoilboard suitable for high accuracy (sub-mm) pose estimation. I’m thinking a pattern of holes, since that’s easy to drill, detect, and isolate from other spoilboard marks. The reconstruction algorithm should be robust to missing holes (i.e., those covered by work pieces on the machine) and extra holes (should any be accidentally created on the spoilboard).
The fiducial would be custom designed for a single machine bed and used for pose estimation only — no need to embed an ID or other data.
SLAM: I found a 77-part YouTube series on SLAM (simultaneous localization and mapping) which looks like it’d make for a good first foray into statistical programming and control algorithms (something I vaguely know about in the abstract, but haven’t synthesized in project).
Real-time point cloud + pose synthesis: In real-time (30 FPS), estimate the pose of a depth camera and use that to position depth camera pointcloud measurements in a 3d scene. Basically, wave around a depth camera and get a point cloud. Would probably want to do this in Rust, though TBD on whether a naive frame-by-frame approach would yield good results or if some fancy statistics would need to coalesce pose estimation between frames to get better accuracy.
Prescription reconstruction: I bought a pair of $15 prescription sunglasses online, but used an older prescription that doesn’t exactly match that of my regular glasses (which I purchased in Poland, neglecting to get a copy of my prescription). It’d be neat to reconstruct the eyeglasses prescription using computer vision (using some reference images, presumably); a quick Google search shows that there are a number of mobile apps that do this already, but it’d be fun to try and do this entirely in the browser (no app needed). We’d learn a lot about optics, computer vision, and (probably) tort law.
Inferring performance bounds from assembly: ARM assembly is soo much simpler (peep this tutorial) than the x86 assembly I was looking at this time last year. How difficult would it be to calculate time upper-bounds for a given function or interrupt given its generated assembly? Yes, this is impossible in the general case because loops, the halting problem, etc., but how much typical microcontroller code could be analyzed? Surely this must exist already.
Constraint solver for microcontroller pin assignment: I’ve been programming a STM32G4 microcontroller, which includes dozens of op-amps, comparators, and timers. These peripherals are all connected via internal buses, but not completely (e.g., opamp 1’s output might be routable to comparators 3 or 5 only). It’d be neat to build a UI and constraint-solving backend (Alloy? Z3?) that lets one easily answer questions like “how can I maximize the number of op-amp -> comparator routings while minimizing the number of external jumper connections” or “to make my PCB routing easier, which of the 17 timers can I use that have pins on the east side of this chip”. (It would also be fun to make this a free web tool and monetize via EE-targeted advertising.)
Helm mode for Excel: Helm mode makes it possible to discover and navigate the fractal complexity of Emacs. Could a similar UI be grafted onto Microsoft Excel, allowing for fast search and keyboard control?
iPad as trackpad: Write an iPad app to forward multitouch gestures to the Mac so that I can use the iPad as a giant “magic trackpad”: Move the cursor around, two finger scroll, pinch to zoom, etc. I think most of the work here would be learning about MacOS trackpad drivers and pretending to be one. Potentially relevant: Sensible Side Buttons low level mouse button remapping.
iPad as drawing tablet: As above, but using the Apple Pencil and using the iPad as a drawing tablet (the drawing happens on the computer, not the iPad). Potentially relevant: Tuio protocol (thanks Christian S.)
SpaceMouse in OS X: I have a SpaceMouse 6-axis controller and would love to pan/zoom/scroll in regular apps with it (it only works in CAD programs that have special plugins to use it). I’ve written a Rust adapter to the native driver and can get real time position information, so I think I just need to trick MacOS into thinking that this is a magic trackpad or something? Another interesting aspect is exploring whether it would “feel” okay to use a continuous controller for potentially discreet actions. (e.g., rotate the controller 10 degree yaw and it’ll start to switch through windows one per two seconds; 20 degree yaw speeds up to one window per second, etc.)
Windows webcam server: (Done w/ Larry P and Glenn W) I have an Intel RealSense depth camera attached via USB to a Windows machine. I’d like to stream frames (RGB + depth) over ethernet to Mac with lowest possible latency. Video streaming protocols all look very complicated, which makes sense because the Internet is hard. But since I’m on a local ethernet cable, I’m thinking maybe just write a little Rust server to unicast numbered packets? Position-based tensegrity design: (In progress) I found a spectacular paper describing an algorithm to find stable tensegrity structures to fit a given design. I contacted the authors but they didn’t share their implementation, so I’d like to have a go. This would involve some constraint programming, numerical linear algebra, and 3d rendering on the software side, and once that’s working I’d like to design and fabricate a few pieces to test it out (scale models at first, then maybe furniture?)