Imagination


So, as anyone who's vaguely aware of the Python community knows, PyCon recently occured. At the sprints and during the con, we got a significant chunk of work done on Imagination (aka Twisted Reality), as Jp points out.



Most of the time was spent basically implementing a dumb 'look' command and figuring out / fixing bugs in the kernel of Imagination, which is basically a *tiny* graph-traversal module. Before PyCon, I was pretty depressed about this because the system we had was so useless and I was tired of implementing incredibly basic things. Now that we've gotten past that hump, I'm hoping to do more interesting things.



Which brings me to PLT Spy. It's an implementation of Python that compiles to PLT Scheme and runs on the PLT VM. The reason this is interesting is that PLT has support for real restricted execution, *including* CPU and memory-allocation restriction! As pointed out in my Virtual Worlds page, this is a critical and hard part of the distributed virtual world that I want to create.



The other Imagination hackers are pretty much uninterested in using anything other than CPython, but I don't mind. TODO:




  • Get PLT Spy to build

  • Get Twisted and Imagination running on it

  • Implement simple user-scripting for objects in the simulation

  • Implement a distributed system that allows objects (state *and* code!) to transfer between servers :-)



Infogreater


Quick note before I talk about my new project: I'm going to be hacking on twisted.names' client APIs soon. Users will soon have much better timeout support. Hooray for paid open-source hacking ;-)



One of the "secret" projects I mentioned a few posts back just became *barely* usable. I'm calling it "Infogreater" right now, but I'll probably change that. Anyway, *currently* it's a clone of the excellent mind-mapping software Freemind, and it just passes at that. The eventual goal is to make it extensible and programmable -- Freemind itself is just a (pretty primitive) hierarchical database. I'm going to add new node types other than just "simple text box" that can hold richer data -- links to other nodes, source code to be executed, etc.



I'm a programmer, so most of my ideas for it now are only really useful for programmers. Here are some of my ideas:



* A node that lists all of your bugs from a Roundup bug tracker.

* A node that allows you to view and edit entries in a simple text-format TODO file (I have a number of projects that are too small to have real bug trackers, and I use TODO files in them).

* A node that shows you the subjects and senders of messages in your inbox.

* Filesystem browser



The idea here is to show you information that's relevant to you, but not to do everything itself. The various nodes will give links that will open applications/web browsers to actually view details and do whatever application-specific stuff.



I have many more ideas for *really* crazy applications of this, but none that I want to talk about yet. ;-)



The code is available, but only via a Subversion repository now. There's information on my Code page.



I owe this idea to Robert Church.