Too many projects (by alaric)
I have a curse: I'm too inventive.
Yes, this has many benefits; it's certainly useful in my career. But when my ability to come up with ideas far exceeds my available time to execute them, it's a bit sad.
I've met people who seem to think that ideas are rare things. They guard them jealously, seek patent protection, and hold onto them long after they're obsolete; if one of their ideas turns up somewhere out there in the wild, they are sure somebody has stolen it from them.
But I think that ideas aren't that precious. I'm glad when I see an idea I've had realised, since it saves me the effort of realising it. While thinking about Bayesian spam filtering I realised that it failed to take the ordering of words into account, and wondered if it would be possible to build a Markov chain model of spam and another of ham and then measure a message against those two models to see which they fitted best; so when I discovered CRM114 I was happy - and even happier when I found out that Markov-based spam filtering is in Alex Shinn's hato MTA. If you're having more ideas than you can implement, then it's great if somebody else implements them; it means you can focus your limited implementation efforts on one less idea, or use their implementation as a basis to build your idea (if it's slightly different) rather than starting from scratch.
So, without further ado, here's my current Idea List:
- Improve my welding skills by making a "hexoctagon", a garden ornament about a metre across made of inch-wide strips of steel organised into three octagons joined about a common axis of intersection and then joined with further strips, so that it's a hexagon from above and an octagon from the side. Cheap material requirements, easy cutting to shape, and then lots of welds that should be within my ability, so good practice.
- Rebuild my furnace, and get back into aluminium casting.
- Work on my wearable-computer projects. I've been experimenting with casting electronic circuits into blocks of transparent resin, which makes them durable and waterproof while not being as bulky as a box, an also allows one to see LEDs and LCDs embedded in the resin with them. The interesting part is getting connectors and tactile inputs like pushbuttons to the surface, but I have some ideas I've been experimenting with in those areas. I want to develop these to build a head-mounted display with an LED torch built in, a wrist-mounted display with a chord keyer inside, and a modular central unit to go in an inside pocket with central processing, storage, power supply, and interfaces in. Wearable computers are fun.
- Extend the structured cabling around my home into adjacent buildings. Challenges include thick stone walls and a driveway to get across. I'll buy a metre-long 2cm-thick drill bit when I have some money, as my 30cm one didn't make it, and I'm researching stringing a catenary over the driveway.
- Finish implementing my SFTP client library for Chicken Scheme, then write an SFTP storage backend for Ugarit using it. Also, various other improvements to Ugarit, such as caching the hashes of files by their mtime, so we can easily tell if a file has not been changed without re-hashing it, for faster snapshots.
- Tinker with hato, adding local delivery to virtual users defined in a database, and an IMAP server that can serve from both real and virtual users, so I don't need to create full UNIX users for every IMAP mailbox. Perhaps adding LMTP support, too.
- Tinker with Chicken Scheme internals; in particular, I want to improve the blob support, to eliminate unnecessary copying between the heap and normal
malloc()
ed memory, and within the heap between blob and SRFI-4 interfaces to the same region of memory. - Ongoing programming language research, extending the work of my final year project at University on metaprogramming, with some refinements I have in mind to support hygienic macros.
- Ongoing development of ARGON, which is a vast sea of subprojects in itself
- Work out the economics of distribution and storage of liquid nitrogen. Is it practical to use LN2 as a means of cooling buildings, rather than refrigeration-based air conditioning units that suffer from inefficiencies due to their small scale, and the fact that they pump the heat just outside the building, where it can easily leak back in again? Heat pumps are particularly bad in built up areas where everyone's doing it. LN2-based aircons could even be portable pocket-sized devices, very welcome to motorcyclists in slow traffic on hot days, and commuters.
- Make test strips for common dietary intolerances. As a vegetarian, I often wonder if a given dish at a buffet is "safe" or not, and it's worse for people with serious allergies. Is it possible to make cheap and reliable test strips that change colour in the presence of (eg) animal fats, or whatever it is in peanuts that kills people? The colouring in the food itself may prove an obstacle, but diluting it in water and having a control on the strip to compare the colour against should be able to mitigate that, I suspect.
- Make a better satnav system. I don't really like the traditional "At the roundabout, turn left" systems. I much prefer looking at a map of my route and seeing what I'm driving past, and knowing where I am in relation to major landmarks. So I'd really like to just see a big map of my entire journey, and a small map of my local environment, both with a marker on showing where I am. But let's generalise this a bit. How about making a generic map display system, able to take a base map and then apply any number of layers, each provided by a software module, possibly over a network, with streaming updates. Then the GPS can just produce a layer with a single point that moves about, while a map server just produces a static map, or streams map data from OpenStreetMap on demand. A database of places is a layer that exposes a set of points. A route planning system can provide a layer that shows a fat blue line over your route. The UI should let you lock the display to a given map feature, such as the moving point that comes from the GPS unit. This is a bit complex for a simple satnav unit, but when you're managing a fleet of vehicles, you can pull in a map layer plus the GPS layer from every vehicle (via GPRS etc) and then see the all on the same map, without needing any special extra software. It's a construction kit for map-based information display. But why stop there? Generalise a little further. This map information is all just a source of data sets defining points, lines, and polygons in lat/long space, with streaming and real-time updates, and a viewer that knows how to display these things in lat/long space. Why not generalise the coordinate system to an arbitrary set of time, space, and other unit axes? The system can know about special types of axis - such as time and spherical coordinates - and then have generic mappings of the other ones into spacial axes, and allow analysis of arbitrary data sets, overlapping them if they have axes in common. So if you have a data set that's the spread of pollution with time, you can overlay the lat/long axes onto your map (or an augmented reality view), and have a slider to choose a position on the time axis; or pull it into 3D by adding the time axis and look at the spread of the pollution as a cone. Your email history can be a set of points aligned on a time axis, and your appointments can be points and regions on the time axis, sometimes with lat/long added (if you took a GPS reading of your position in the past, or if you know where you're supposed to be in future), that you can compare to the spread of pollution (did it coincide with you starting to get sick?), and plot on the same map you use for navigation (so you can work out the best route to get to all the places you need to get to in future), or just fold away the space axes and look at a timeline of your life that you can zoom into. Many applications can be fulfilled in one integrated "data viewer", and many network effect benefits reaped by having them integrated seamlessly.
- Audio jukebox appliance. At its simplest, a small box with an Ethernet port, a power inlet, and an audio out port. It finds your music from one or more network servers, or has an internal hard disk you can put music on, or combines both. It will play songs from a queue, and if the queue is empty, will either be silent or will randomly pick songs that match a search query. But that's the boring part. The fun part is that it also has a message queue, and supports a simple network protocol to send it messages. A message causes the music to pause with a quick fade out, then a jingle (depending on the message type) played, then the message text to be read out via a text-to-speech engine such as Festival. When there's no messages in the queue, the music resumes. For extra coolness, add the ability to drive remote slave units over the network; the units are organised into a logical tree, and by default, every node inherits music and messages from its parent. So you set the global playlist at the root node, then on a child node, you can queue some songs and have that child (and its subtree, if there is one) then play different music, reverting to the global music (with a fade) when it ends. And you can send a message to any node in the tree, and that message will be text-to-speeched from that node and all its children. This is something I want about the house, and in my van (see next point), and would be great for secret underground bases, which definitely need computer voices making announcements.
- Jazz up my van with a vehicle computer. An MP3 jukebox and navigation system. And a separate battery, so running them all (and the inverter) can't make the engine-starting battery go flat, but when the engine's running the auxiliary battery charges from the alternator.
- Virtual networking. See blog post.
- Write a "Practical Programming in Scheme" book. Base it on Chicken Scheme, as it's aimed at real-world tasks rather than education. Cover all the stuff that rocks in Scheme, but that basic introductions don't cover as they're trying to teach programming to new programmers: parameters, coroutines, fold, really making the best use of closures, that sort of thing.
- Finish up some novels I have in various (early) stages of development.
- Design CPUs. I think there's some fun to be had with unusual architectures. In particular, I want to develop tiny MISC-based microcontrollers, and I also have some interesting ideas on how to build a highly asynchronous move-based architecture that should make good use of instruction-level parallelism, while having a very simple control unit that lets you fit lots of them on a chip, sharing execution units between them.
- Build a giant distributed (around the house and grounds) replicated storage array for storing my backups, as a single giant Ugarit archive, using a distributed-archive backend for Ugarit that I've designed, which will allow fine-grained control of a replication policy in a very fail-safe fault-tolerant way, yet being simple to implement.
- Implement my old protocol agnostic middleware idea. "Middleware" is a bit of a dirty word these days, so perhaps "framework" would be better. I was excited that somebody seemed to have gone ahead and done this, but it's in Python 3 which is a bit limiting; I could put together an implementation in Scheme without too much fuss by layering existing interfaces to protocols such as HTTP, organising them into a common request-routing infrastructure.
- Re-copyedit some role playing games (of the pencil-and-paper rather than computer variety) I wrote as a teenager, and set up http://www.point-defect.co.uk/ as my games publishing arm.
- Write a Web-based MMORPG set in a procedurally generated universe I have designed, with certain interesting properties. Ideally turn it into a profitable online business, through advertising and subscriptions.
I think it's important not to try and have any illusion that I'll finish any of my projects. It's all too easy to sit and think about how cool each one would be, and to be sure I'm going to finish it because it would be awesome, and talk enthusiastically about how I'm going to do X, Y, or Z. When I was younger, I fell into this trap, and then felt bad about myself when I didn't.
Now I remind myself: these are my hobbies. I say I would like to do X, Y, and Z. But I make no promises, and set no deadlines. When I get some free time, I will work on whichever one I feel like, so progress is hard to predict.
I do feel sad, though, that I have interests in so many fields. I am jealous of people who have just one passion, and devote all their energy to it, and therefore take it a long way. Some days I'm not in the mood to mess with computers. Some days I'm not in the mood to mess with metal. It varies.
20091002: Updated with some more detail on some of the ideas.
By Angie "Mum", Sun 27th Sep 2009 @ 11:48 pm
I too have often felt that it would be easier if I had just one interest or one ability that shone above all others, but this is not the case. Whilst it would be easier, would you not finish projects and then be thrashing about trying to think of what to work on next. Surely it is better to work towards several things, some of which you will finish and others that you can always work towards. Len
s question, how many projects have you started, my answer, I don't know and sometimes I can
t make up my mind which one to work on next, but at least there isn`t time to be bored, overwhelmed some times but never bored.Angie (Mum)
By Olly, Mon 28th Sep 2009 @ 7:32 am
You know, I suffer from the same curse. I often get told I see the world differently to everyone else (which of course is impossible for me to verify). Somehow this seems to mean that I am always finding myself getting frustrated with the way things are done and finding better ways. But alas, time really is our curse.
By Violet, Mon 28th Sep 2009 @ 9:54 am
I think Maurice might have an extension drill-bit that might reach, for exactly the same purposes. Ask him. Lots of love to all.
By Violet, Mon 28th Sep 2009 @ 11:04 am
And don't be jealous, it's bad for you. People who devote themselves to one thing are the ones to be pitied, as they miss out on so much else. There is a balance to be struck here, and I don't think you are doing badly at it. To most people's eyes, you do have a main interest (let's call it "technology") which you have already taken a long way. It's just that to your eyes, which are rather closer to the subject, it splinters into many separate paths. But take a broader view, stand back, and you will see it as One.
By Milo, Mon 28th Sep 2009 @ 2:55 pm
Same here, don't hog the ideas. If you harbour them, they become stale and expire. Then again, I often start too many and then racked with guilt about never 100% completing any of them.
By Tom Novelli, Mon 28th Sep 2009 @ 8:04 pm
Same here. Music, instruments, woodworking, engineering, math, operating systems, compilers, electronics... music is sort of a common thread there. Funny that you mention CPU design, I stayed up too late last night fooling around with 'Electric' VLSI CAD (a Debian package). Think I'll draw up my old 4/8-bit MISC CPU that I almost wired up from TTL chips 🙂 I just want a better feel for things on that level.
As for doing something useful, if you could invent a test strip that's sensitive to 10ppm gluten... maybe you'd need a handheld mass spectrometer though.
By Dan Holloway, Sun 4th Oct 2009 @ 8:41 pm
Hey, I came over after seeing you on #writechat tonight (I'm another writer living in the middle of nowhere in the Cotswolds - there are lots of us - have you met @RebeccaWoodhead ?) Love this piece - do dig out and read online a great article by Hank Pfeffer called Danger: High Voltage - it's about the Too Many Aptitudes problem (and how you never get anything done when you're interested in too many things!)
Maybe bump into you at the Cheltenham Lit festival, Dan
By David Cantrell, Wed 7th Oct 2009 @ 12:07 am
I have a similar problem. Not so much having lots of projects to do, but when I do get an idea into my head, I just can't let it go, even, gods damnit, at 0300 in the morning when I need to be up four hours later.
As for drilling through walls, if Brunel could have his tunnelers meet in the middle of a hill, why can't you drill from both sides? 🙂
By sarah, Thu 8th Oct 2009 @ 1:24 pm
because his dad sold the family surveying equipment!