There are so many things I'd like to make, but never enough time! Here are some ideas that are in their more vestigal stages:
- focus! -- by recording which windows get focus on my screen, I can analyze where my time is going. By analyzing the window titles, I can drill down: of the x% of time I'm using Firefox, y% is on LiveJournal; of the y% on LiveJournal, z% is reading my friends page (as opposed to comments, etc.).
I wrote a first pass at this but I haven't quite figured out the design I want, in part 'cause I'm not very idiomatic in Python (which I was using because I wanted matplotlib).
In any case, the window-focus-monitoring code (which uses libwnck, a gnome library used by the window-switching tray, so it'll efficiently track focus changes) might be useful for someone else.
- Laptops and mice are just fundamentally bad combinations because you don't want to carry a mouse around. Even with a trackpad, when you're not on a stable surface it's very hard to move it accurately. On the other hand, these Thinkpads have a nipple, not a mouse.
What sort of interface could you create that doesn't involve a cursor on the screen? For example, perhaps the currently-focused window is always "active", and holding down a button while moving the nipple could move the window in that direction? Or maybe for selecting widgets on the window, you could do some sort of pie-menu-like breakdown: if you move the nipple to the right, a region is highlighted covering selectable stuff on the right half of the window, and then subsequent motions apply to that region? (Sorta like dasher.)
- People stopped making significant improvements (beyond tab-complete tweaks) to unix shells years ago. For example, 90% of the time a command-line argument that won't tab-complete is something visible two lines up from the prompt -- why doesn't my shell integrate with screen? Why doesn't screen integrate a layer up into the GUI, so that I don't have tabs in my gnome-terminal and then separate screens within a tab? (I believe Eterm may have done some of this.)
Pipes + unix utilities are awesome for manipulating data sets, but typically fall down once you're manipulating anything more complicated than lines -- the similarity between pipes and lazy lists is often commented on... (I've been following the Microsoft shell stuff with a lot of interest. What I've seen so far seems interesting but perhaps not especially useful -- I wonder if they don't have enough of the command-line culture to know which sorts of tasks people actually want to accomplish from the command line, instead of just trying to expose a bunch of .NET?)
- GMail was revolutionary in a few orthogonal ways:
What I really want is #1 without #2.
- Painless, omnipresent search + bottomless archiving as a fundamental interface metaphor. (Quite nice! Changed the way I use email!)
- AJAX!@#!@ (Wasn't really the first to do it, and while an impressive programming feat it'll never compare to a pleasant client app.)
- Lots of disk space in a web app. (Also neat, but see #2.)
Etc., etc. Never enough time to code it all...