So I was trying to figure out tonight which side project I felt like hacking on. Here are the main ones I have.
Ugh, where to start. Terminalcast is cool, it impresses people, no one uses it, myself included. Here is what I want to improve on it.
- increased participation, I would really like some help developing it, I’m the only one who plays with it.
- better marketing, aside from the initial blip on reddit/hackernews, there has been little response from the community. I would like to see a community form around terminalcast of users and consumers. I want to encourage the craft of programming.
- better recording, I want recording to be much easier. I would really like recording to be integrated into a terminal emulator, and integrated emacs. It would be great if I could get it so that recording is the default (keep a one hour buffer of your past activity) and publishing is what you have to decide to do, rather than decide to record an interesting terminalcast and publish it. I think programmers do interesting things all the time, if we lowered the bar to publishing those interesting things, we would all be better off.
- better playback, right now sound sync on playback isn’t great, it works sometimes, I would also like to get seeking to work reliably.
- Color playback. Currently color is recorded, but rxvt-js can’t interpret it on playback, that would help so much. Right now emacs is very hard to follow, because the viewer has no idea where the cursor is.
pydbgr – emacs integration
Pydbgr is an amazing python debugger written by Rocky Bernstein. It is leaps and bounds better than pdb, because it is debuggable (yes a debuggable debugger), componentized, and connection agnostic (it doesn’t care if you connect via STDIN or a socket). I want to work on an emacs mode that allows me to set breakpoints without editing my code. I can pretty much make this work for single threaded/single process python code. It falls on it’s face especially with multi process code (think django runserver). Making pydbgr read the breakpoints is fairly trivial (I may have even had it working at some point), I think I can deal with the concurrency issue with middleware fore django .
django unit testing
In the past couple of months I have really gotten into unit testing, well just testing, I don’t know if my tests are unit tests, integration tests, or regression tests, probably some combination. I have found some things to be lacking though, primarily emacs integration.
I already have code setup so that I can run any single unit test file in my code base with a simple keyboard shortcut, this is incredibly helpful. I also have a shortcut to test my whole project. What I really want are functions that allow me to run a single test in a unit test suite ( so that I don’t have to comment out or change the names of other test_* functions in a test class). I also want a “run last test command” shortcut, so that I can fix a broken unit test, and rerun the last test command that made that break, without navigating back to the original test file.
I would also like to look into parallel django unit testing, so that I can run unit tests more quickly. It would be especially cool if I could run all my tests on another box, in parallel, and have that box ship me back the results. if I could have all my tests run in 5 seconds, and see any failures, that would allow me to avoid a bunch of errors, that are otherwise ignored because I don’t run my whole test suite as frequently as I should
I can’t go into a lot of detail about this. I have been working on a django Form.Field that lets me build word-definition (example) match relationships in an inline formset, I know what I want to do, but it is often very obtuse to work through django’s metaclass hackery especially when you layer the admin system on top of the field metaclass system.
rope is a refactoring library for python. It allows me to make awesome transforms on my python code. It is mind numbingly slow though. It is also incredibly opaque. I use it through pymacs/ropemacs . Pymacs is a library that allows python to expose objects to lisp and vice versa, it runs over a socket. I have no idea how to debug or sanely develop on the rope codebase, I seem to have 5 minute loops as I make emacs reload the python module. Rope seems to have slowed down a lot recently, probably because I have installed a lot of system packages.
Hopefully this blog post will motivate me to work on some of these problems.