Projects

Rainy day projects

Not that serious

Hands-free beard-activated dictaphone

Instead of fumbling with small buttons, it would be better if there was a dictaphone that simply started recording whenever you began stroking your beard (imaginary or real) in a suitably thoughtful manner.

3D box art gallery

A modern art gallery for poorly rendered 3D boxes for software that isn't actually available in box form. For some reason these images hold a morbid fascination for me. Most coveted are those that feature fake barcodes. I've started book-marking a few sites, so let me know if you find any that I can include.

I've been too lazy to do this, but there's a cracker available at http://cm.zhipes.com/Download.php .

Foreign job stand-in

In today's competitive job market, it seems silly to restrict yourself to poorly compensated jobs with small-town companies where you have limited potential for promotion. However, moving overseas has its own logistical and personal issues. There should be a service where you can take jobs in other countries by hiring some guy to sit in the office and arrange a reverse remote access thing so that you can remotely do the work. The guy can even attend meetings for you, like on that episode of Arrested Development when the stand-in for George Sr. had a camera attached to his head.

Ethernet patch cable for messy server rooms

Invent a Ethernet cable that has unshielded optical cables embedded in the insulation. The RJ45 jacks will include a button that powers up LEDs (using power over Ethernet). To trace a cable, dim the lights, press the button, and the entire cable will light up!

Share house dinner set

Authentic share houses have an eclectic collection of mis-matched cutlery and crockery that can take years to perfect. Save time by buying a pre-made set. I buy many different dinner sets and give you an assortment of pieces from each. To simplify dinner parties, you'll receive a prime number of plates, a different prime number of cups, two tea spoons, and much more. For your convenience, some plates and mugs will be pre-chipped and stained.

Night time sausage sizzle van

City streets today are saturated by noisily roaming ice-cream vans, but there's no equivalent for late-night treats. A van that patrols suburbs selling hot sausages in white bread with sauce and onions and cans of beer would be a real winner. The only thing stopping me is deciding which song it should blare out.

Chicken parmi pie

Combines the deliciousness of a chicken parmi with the convenience of a pie. The pie will contain a crumbed chicken schnitzel covered with a bolognese sauce and cheese.. beneath the schnitzel is a bed of hot chips.

Hypercolour t-shirt display

It's possible to get t-shirts with built-in displays. What would be much more awesome: attach a matrix of Peltier effect panels to the back of a Hypercolour t-shirt!

A bit more serious

Radio telemetry

I'd like to build an automated radio tracking system that operates on a small scale with accuracies of less than three metres. This will allow automated collection of home range and dispersal data in ecological systems at very high resolutions and allow interesting questions about fragmentation, habitat use and behaviour to be investigated.

I envisage a series of self-contained base stations containing solar panels, radio scanner, GPS module, an array of directional antennas, solid-state antenna switch, and self-organising (eg Zigbee) mesh networking capability. This would allow any number of base stations to be deployed in a target area. Triangulation would be improved by use of multiple overlapping directional antennae, while the lack of moving parts (eg, rotating antenna mount) will improve reliabilty for long-term studies. A central base station (or one nominated station) will collect fixes from transmitters and estimate exact locations. It would be interesting to determine accuracy by walking around the field site with a transmitter attached to a GPS. It may even be possible to 'train' the system by walking around the site before deployment to improve accuracy by using neural network techniques if standard geometric triangulation is not optimal in complex landscapes. Processed location information could then be relayed over a mobile data network to allow real-time analysis, or stored on site for periodic collection depending on the requirements.

I've read a little about a similar project being run in Central America at very great expense and with an accuracy of 70m, which is not really suitable for the areas I'm thinking about - though theirs covers a wide area and targets large animals.

CSIRO ICT has developed a Precision Location Technology system that does something remarkably similar to this and claim an accuracy to 20cm in ideal environments, though their transciever weighs 90 grams. I was hoping to use standard 'dumb' 144MHz transmitters, which are available down to 0.5 grams. The normal idea is for them to pulse transmit a tone at some frequency, which you pick up on a scanner. You can then lock the scanner to one frequency of interest to home in on a particular transmitter. It might be worthwhile to host multiple transmitters on the same frequency and analyse the frequency of the transmitted tones (each target having a unique frequency-tone combination). I don't see many problems with this as long as the pulse frequencies are similar (you'd get periodic transmitter collisions, but be able to cram more transmitters into an area and waste less time switching channels).

Another possibility I'm very interested in is harmonic radar, which reduces the complexity of the transponder to a single diode and antenna. The only tradeoff in the two orders of magnitude reduction in cost is the corresponding increase in base station cost! Another problem is that such simple transponders don't have any unique identification, which complicates large scale ecological studies when the fate of individuals is of interest. Perhaps it would be possible to attach a very small microcontroller to the transponder? I haven't found any information on anyone doing this.

I found some information about companies developing very long range (100m) RFID for asset tracking but not yet anything commercially available.

Some of the musings here are a bit incorrect, and I've taken this idea a bit further for my PhD.

Transparent TCP compression system

I'm interested in the method that Riverbed uses to compress arbitrary network streams over a WAN. It sounds like they (very basically) use standard sliding dictionary compression techniques, but instead of throwing the dictionary out at the end of the file, you keep it around in a cache (and synchronise it at both ends of the WAN). This means that if you see similar data at a later time, even over an unrelated connection, you can just transmit the dictionary reference. While I'm sure it's not that simple (and they do lots of trickier application-specific stuff) I reckon it'd be fun to hack something together that implements this, possibly using LZMA or L77, and/or with Rabin fingerprints. dsync sounds like it does a very similar job, though it is designed for file synchronisation rather than transparent network compression.

System notification RSS feed

An easy project - I get various boring emails from cron and such that I'd rather not have cluttering my inbox. Have them sent to another address and generate an RSS feed from its maildir, which I can then monitor from the comfort of Google Reader.

Rental accommodation review site

A review site for rental accommodation, so when you move out you can rate access to shops, neighbours, structural flaws and so on. The business model is that agents and owners can pay you to remove unfavourable reviews.

VHDL

A very long time ago I did some work in VHDL. I'd like to buy a cheap FPGA starter kit and get back into it for no practical reason that I can think of right now. I had once considered designing a FPGA ethernet router that could achieve 'wire speed' routing and filtering, but this no longer seems very exciting. In other news, I finally bought one.. and now HDL is how I roll half of the time. Verilog looks much nicer than VHDL though! I've been writing interface code for a high speed ADC, which requires deserialisation, SPI communications, and then figuring out what to do with all of the data.

SVG

People are doing cool things with SVG these days. The first time I was truly impressed by it was by a real-time network traffic grapher that used JavaScript to call a CGI script, which reported current byte counts and updated the graph. It can also be used to do nifty graphical effects within Web pages like rotated fonts. Note to self - learn SVG.

Electronic field guide

A walk outside might involve taking a bird book, Wilson and Swan's A Complete Guide to Reptiles of Australia, It's Blue With Five Petals, and the entire Flora of South Australia. I'd love to digitise all of these and carry them on something convenient like an iPod Touch. I envision being able to point to where I am on a map (or even better, use an iPhone with GPS) and see a complete species list and narrow things down using a dichotomous key.. though not a traditional hierarchical one, but a key that shows 'common' identifiers first that may knock things down to lower levels more rapdily. So instead of deciding if trying to decide whether the thing you were looking at is, say, a monocot or a non-passerine, you could say "four petals" and further searches would be limited that way. This avoids one of the problems I have with keys - because I'm not great at using them, making the wrong choice in the first few questions immediately sends you in the wrong direction. By making 'obvious' choices first (which are rarely the first questions in a key, at least for me), this should be much better.

Also, it'd be good to have decent colour photos of every species, recordings of calls, movies showing behaviour, a button that records seeing it, the ability to take photos of the specimen. Should be a boon to forgetful naturalists everywhere.

iPhone Wikitravel interface

Rather than lugging around n kilograms of already outdated guidebooks when travelling, it'd be nice to build an offline Wikitravel reader unless someone else gets to it first. There's already a Wikipedia reader that can probably be extended to do both. Complication - Wikitravel doesn't currently release database dumps! Possibly already exists, since I first thought of this idea in 2007.

Assembly language

I've always been interested in assembly but haven't done much of it other than for the Z80 and 68HC11 in embedded projects. It would be a total waste of time but fun to pick it up properly. Because I have a nice Core 2 Duo, I'm quite interested in the idea of multi-core programming in assembly. Maybe it would be fun to port some of the Linux Assembly tools that have parallelisable algorithms to work on SMP (if this hasn't already been done). A more accessible target might be the Parallax Propeller, which is an 8-core microcontroller running at up to 80 MHz that comes in a sensible package. I can't yet think what I'd do with one. Modern microcontrollers invariably come with C compilers anyway, and I apparently have less time and patience than I did when I was 12. Nowadays I actually program for a variety of different microcontrollers (8 and 16-bit PICs and PicoBlaze at the moment) so I'm far happier just using C, though PicoBlaze only has an assembler and is lots of fun to work with.

ABC iView downloader RubyCocoa front-end

Make a nice RubyCocoa front-end interface for the ABC iView downloader.

Mac CoreLocation daemon

Snow Leopard includes a CoreLocation framework that lets you find your approximate location using WiFi triangulation. It works pretty well! I'd like to write a simple daemon that checks a computer's position periodically and updates a network daemon somewhere, possibly using encoded DNS packets that can often bypass proxies and hotspot walled gardens. There are some other programs that do a similar thing for theft recovery, but these are linked to services that don't tell you where the computer is. It'd be a fairly simple program to make when I get some time. On the other hand, because I'm lazy, I ended up just subscribing to Orbicule Undercover, which does all this and more, with Google maps, screenshots, and iSight photos.

Genetic filter designer

Filter design is a pretty challenging task, especially when you're also doing impedance matching (which seems to be all I do). Rather than fiddling about with topologies and component values, define your requirements in terms of a transfer function and input and output impedance, then let a genetic algorithm do all the work! Other than my very limited knowledge of C++, the OpenBeagle library looks like a nice way to do this in conjunction with a SPICE engine.

Write a ChipScope Pro clone

Xilinx ChipScope Pro is an unbelievably great tool for debugging FPGA designs, but it's not free. It'd be good to write a dodgy clone, possibly based on the unfortunately named log_anal, but perhaps using some combination of libfpgalink, RS232, VGA/HDMI, and a PS/2 keyboard (for setting up triggers). I'll call it CheapScope!

Xilinx tutorials for soft core processors

Comprehensive 'getting started' information on using soft core processors such as the Mico8, Mico32, OpenRISC on Xilinx FPGAs is fairly limited. When I have abundant free time, I'd like to write a tutorial that discusses how to add one of these processors to a design, set up a compiler and in-system debugger, write simple programs, and add custom peripherals. It'd be interesting to look at SecretBlaze, another MicroBlaze clone that appears to be in a better state than aeMB, and mcx16, a 16-bit controller inspired by PicoBlaze.

Expansion boards for the Digilent Atlys

The Atlys has a somewhat annoying I/O connector - perhaps I could manufacture and sell some small VMOD-esque expansion boards that break out the pins? I'm not sure if there would actually be any demand for this, though, and the expansion board Digilent sells isn't actually very expensive. I might need to think of some interesting chips to put on the VMOD. But maybe the market is too small and I could be making FMC boards? Who knows.

PMod-compatible USB host adaptor

Design some simple hardware to provide a USB host (or device) port for FPGAs through the Digilent PMod interface. Perhaps use something like the Micrel MIC2550A, which is used by the Milkymist One, though that only supports full-speed (12 Mbps). Even better would be something like the SMSC USB3317, which supports high-speed (480 Mbps) but it's not clear if it supports the ULPI 8-pin DDR mode, which would be necessary for the 8-lane PMod port. Doesn't look like it, because it only mentions SDR.

This would lead in to a fun project: learning about USB by writing a stack in Verilog!

With a VMOD board and dual USB ports, it should even be possible to build a simple USB capture tool.

VMod-compatible InfiniBand adaptor

I have no reason whatsoever to use InfiniBand, but I'm sure there's someone else who can't live without it! The electrical specification for the lower bandwidth InfiniBand standards seems to be well within the capabilities of the Spartan-6, so maybe it would be fun to build an adaptor board with some sockets and then develop IP to talk to a computer. The higher bandwidth DDR versions look like they would benefit from GTP transceivers, but it might still be possible to use SERDES and do the 8B/10B encoding in fabric.

Bigger, cheaper VMod-compatible LCD driver

Digilent sell the VmodTFT - a 4.3" LCD with resistive touch screen for a whopping $129. I've found 7" LCDs for a mere $25, or about $12 in quantities of a dozen, so surely the time has come for me to build my own competing interface board! After some poking around, I settled on the AT070TN92. The connector is a Hirose part that element14 sell. I plan to draw heavy inspiration from the VmodTFT, at least for the touch screen controller. The only annoying thing about the panel is that it requires a baffling array of supply voltages - five in total! Fortunately, the rest of the world is way ahead of me and there are a number of dedicated LCD power ICs, such as the TI TPS65123RGTT (which looks great except that it doesn't supply a 10.4V AVDD), the Intersil EL7640ILTZ (which looks like it might be okay, but has a more baffling data sheet), or the Rohm BD8153EFV (looks like it might do the job, but the negative voltage range isn't specified clearly, and it's not available anywhere).

It looks like it might be easier to buy the corresponding VGA driver board for $40, just to see how they went about generating all of the voltages!

ANSI terminal for Spartan-6 FPGAs

For debug or general purpose display tasks on FPGA development boards like the Digilent Atlys, it would be fun to have a character terminal for the HDMI port. Planned features are:

  • PicoBlaze and MCS interfaces
  • Colour (16 would be easy to do using 12-bit colour+character words in a 36-bit BRAM)
  • Line art for designing simple interfaces using an ANSI font

Genuine work things

Upgrade apps

I maintain a few Rails applications written using relatively ancient versions of the framework. I really need to upgrade them all and clean them up to 'modern' standards.

ext-js

Play around with the ext-js library. It looks rather cool, though licensing fees for commercial use puts it out of my reach for now. There are possibly other more popular/modern/interesting frameworks out now.

Things I've actually started

RF power meter

I designed a simple RF power meter based on the AD8307 and had some PCBs made up. It's just waiting for me to write some firmware for the PIC.

Simple PIC USB board

I wanted to have a very simple platform for creating USB microcontroller interfaces, and to get more practice soldering QFN parts, so I ordered some PIC18F chips and the project has gone no further. It turns out that there's a comparable AVR product, the Minimus, so maybe there would be a market in developing a PIC version.. though naturally this already exists. I think it would be nice to ditch the USB connector completely and use a 2.0mm PCB, though these seem to be considerably more expensive (than a $1.20 USB connector) unless you make an entire panel.