Reading Joel's "User Interface Design for Programmers", apparently the first step in designing a program UI is to imagine some users. Since we have a core backbone, let us imagine those users.
Steve is a 36-year old enterprise architect who spends most of his working day managing a small team of "J2EE wizards" for a consultancy company in downtown London. He drinks a lot of coffee and plays nethack. His favorite OS is (secretly) OS/2. He's passionate about computers and software, so he has a shiny apple powerbook on which he develops, using an array of tools, mostly commandline, with vim as the shiny centerpiece. He also has a shiney orange phone/pda which doesn't work, which frustrates him beyond relief. Steve is often annoyed by the bad design in the projects he works with, but has learned to accept those things are a fact of life. When he finds time, he tries to help the software world forward by working on one or two open source projects that are replacements for the really bad design he encounters in daily life.
Steve uses tcsh as a shell, knows the detailed syntax of over a hundred unix commands by head, and really appreciates the polished interface of Mail.app, which is where he spends half of his working day.
JD just turned 22 and is in his third year of computer science at berkeley. He just started wearing glasses, drinks beer every once in a while but his main bevarage is milk, of which he drinks 2 liters a day. He uses debian on his workstation and bsd on the server that he and some fellow students use to share their MP3s. He's a bit of a free software fanatic, hangs out on slashdot, and spends 48 hours coding in one long run every now and then when he gets tired of studying parser theory. He's heavily involved in half a dozen free software projects, joins or starts a new project every 6 months, and is always up to speed on the latest technology developments. He uses eclipse for everything, including his schoolwork, which he writes in latex.
Jason has created his own dream job: he's an independent open source consultant. At 28, he's making tons of money helping fortune 500 companies out with their EAI worries, introducing top-notch open soure-based products (some of which he has developed or help develop himself) in the appropriate places, though also a lot more SAP and Oracle than is generally considered healthy. A German living in Tokio, he can get pretty lonely in his big appartment so he flies over to just about every interesting software conference in the US. His social life consists mostly of interaction with other programmers, and he likes it that way.
Duncan has a big beard, thick glasses and weighs 240 pounds (which doens't really bother him). He raised two sons, one became a soccer player, the other is a physics teacher. At 49, he's just about the oldest geek in the head branch big automotive company he works for. His job consists of giving the rest of the ICT staff advice when there's a real big problem no-one understands. Since there's several people doing that, he has a lot of free time on his hands, especially when he just locks his door to play in one of the longest running MUDs that he helps admin. He's famous among other ubergeeks for his fortran-to-c translator, which featured on the pages of DDJ 20 years ago. Duncan is extremely pragmatic about the software tools he uses, as long as there's a way to interface them with perl. He was doing "free software" before the term was coined. Having had the joy of bootstrapping some of the big open source projects, he now limits his involvement mostly to smart two-sentence e-mails to some of the projects he keeps an eye on. Duncan never misses an episode of star trek (even though the newer series aren't nearly as good as the original series).