This is the debugging output of the wireless network vizualizer I'm working on. The real version of the vizualizer will give a higher resolution map and will be a static image (the last image from this animation).
All the small circles represent wireless nodes. All the colored lines represent wireless links in a mesh network. All the green nodes are "fixed" meaning we know where they are. All the yellow nodes are "floating" because we know what they link to but we don't know where they are (the network grows organicly and if a new user joins the network without registering their location then we don't know where they are, only who they can talk to).
This map has a huge cloud in the north of randomly generated nodes with random connectivity. The Green nodes are mostly places where we really do have actual nodes in real life right now. The remaining yellow nodes are ones that I just made up to show off various features of the software.
The trick is to "untangle" this mess of connected nodes so that they are laid out sensibly on the map. We don't want nodes too jumbled together and we don't want nodes that can't connect to each other to end up physically close to each other because that doesn't make sense.
The way it's modeled is by pretending that all the nodes are connected by springs, the natural length of the springs is based on the strength of the connection (better connection yields a shorter spring). Then to make sure stuff doesn't get jumbled up there's a repulsive force between all nodes as if they were all electrons. There's also drag to make sure the oscillations damp down.
I'm sure everyone else finds this boringly geeky. Some of the hardcore geeks among you may find this boringly obvious ("well yah, that IS how you untangle a connected undirected graph, we knew that, we've seen it"). But since this is the first major C program I've written in about 6 years, I'm proud. Plus I just find it really pleasing to watch all that complexity sort itself out with some simple laws of physics. It's cool to see in the equillibrium stage at the end all the little jiggly bits in their final orbits.
The reason the background looks so lame is that it's a very high resolution map of Urbana shrunk down to 1/8 it's original size. Since the roads are only one pixel wide in the high res version they get lost in the shrinking process.
Anyway, back to the grind stone of integrating this into our actual wireless platform.
July 1st is when our big interim report to OSI is due. This report will be the basis for our continued funding (my continued job) for the next 8 months. I look forward to having some free time again when this is all done. I've been working the weirdest hours. I've been spending no time with friends or doing political stuff. I've been to movies the last two nights in a row but that's about it. Other than that it's been resting and coding.