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. source
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:
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.)