My software tools list
Inspired by Mark Pilgrim's 2006 Essentials list, below is a list of my current software tools. If you notice a lot of "I switched from ..." statements, keep in mind that I am a programmer who likes shiny things.
- Mark Pilgrim's Essentials, 2008 edition
- Adam Gomaa's Essentials (2008)
- Here is a 2010 update for Mark Pilgrim. After 2 and a half years, I still have several items in common: Ubuntu running rxvt-unicode and Emacs 23, the Unicomp keyboard, an Android phone, Gmail, Google Reader, Google Docs, and Pandora.
- Salvatore Sanfilippo on usesthis.com (2011)
- Aaron Boodman on usesthis.com (2011)
My software tools list¶
|Operating System ¶||Ubuntu 14.04 Trusty Tahr||
My first Ubuntu install was in 2007 (dual-boot) and I got my first Windows-free machine in 2008. I have used Cygwin and coLinux when on Windows. Cygwin integrates better with Windows applications, but coLinux is super fast and allows you to run a full Linux distro on top of Windows. Windows does have some advantages, but overall I prefer Linux.
Update 2008-09: Switching jobs means I can now use Linux at work. I'm now using Linux about 90% of the time. My wife still uses Windows Vista on our laptop.
I don't have enough experience with OSX to draw any authoritative conclusions, though I think Mark Pilgrim has biased me against Apple. Also, I think Linux's free as in beer (and somewhat related free as in speech) characteristics vs. Mac's expensive (and somewhat related proprietary) characteristics resonate with the cheap engineer in me.
Additional Linux vs. Mac commentary:
|Window Manager ¶||Qtile||
The WM written in Python, recommended by Matt Harrison.
Previously, wmii: dynamic, tiling, scriptable window manager that doesn't require a mouse. It sucks less.
I switched from ratpoison at the same time I started using coLinux because running native Linux allowed me to use any Linux window manager as well.
Recently, some have switched from wmii to xmonad, the new Haskell tiling window manager. It has some nice features over wmii, including dual head support, but after a brief excursion, I slightly prefer wmii's way of doing things.
History: 2007: ratpoison, 2007: wmii, 2012: Qtile
|Editor/IDE ¶||GNU Emacs 24.3||
Switched from Eclipse in 2007. It was a slow transition, but I think Emacs is worth the investment.
On Emacs vs. Vim: I really like that Vim can be used easily on remote machines. Currently, I use TRAMP for remote file editing. It is very cool, but it is slow, and I sometimes fall back on nano (*gasp*) for a quick config file edit when I am logged into a remote terminal. I also suspect that the dual modes of Vim are more efficient than Emacs-- I'm just not smart enough to get used to it. Maybe someday I will switch to Viper mode. Why Emacs over Vim? I choose Emacs because it is more powerful and closer to an IDE. Emacs Lisp allows you to do whatever you want.
On Emacs vs. Eclipse: I found Eclipse was too slow and heavy, used too much screen real estate, and was too difficult to customize. Scripting Eclipse required writing extensions in Java whereas Emacs can be extended in elegant Lisp. I think Eclipse (and other IDE's) are better for code exploration and they probably have features that I'm not aware of since I don't use them. I figure, though, that with enough Emacs Lisp, Emacs can do anything those IDEs can do. If you really want those features, it's a question of if you want to spend the time achieving perfection in Emacs or getting real work done in another IDE. I choose perfection. ;)
My emacs config on github: http://github.com/saltycrane/emacs
History: 2001: Emacs/NEdit/UltraEdit, 2006: Eclipse, 2007: Emacs
urxvt supports xft (anti-aliased) fonts, real transparency (not that I actually use transparency with Qtile), and fading (which I do use with Qtile) and it is much faster and lighter than gnome-terminal or konsole. screen allows me to switch terminal sessions without ugly tabs, attach to remote sessions, search through the scrollback buffer, and more. Update: urxvt also has embedded perl.
|Version Control System ¶||Git||
Switched from Subversion to Mercurial in June 2007. The merging in Mercurial is very nice and can be done without thinking. I do miss Subversion/Subclipse's revision history viewer, file compare, and ability to isolate files apart from changesets. Update 2010-04-05: See my comment below.
Update 2011-05: Switched my personal repos to Git. Use Git almost exclusively now.
History: 2001: SCCS, 2003: Other, 2007: Subversion, 2007: Mercurial, 2010: Mercurial/Git, 2011: Git
|"High-level" Language ¶||None||
Previously, I used C. Now I use don't use any statically-typed languague. Wouldn't mind learning
|"High-high-level" Language ¶||Python 2.7||
On Python vs. Ruby: from what I've read, I characterize Ruby as the more expressive language more similar to Perl (than Python is) and Python as the more regimented language. Since I like regimented, I like Python.
On Python vs. Lisp: I've concluded that I lack the intelligence to harness enough of Lisp's power to counteract its non-practicality (e.g. lack of libraries).
Install method: preinstalled on Ubuntu
|Web Framework ¶||Django / Flask||
2014-10:I now use Flask at work. Previously, I used Django. I think I like SQLAlchemy and Jinja2 better than Django. Django has a lot more built in and is put together better. Flask's thread locals are convenient and messy. Probably Pyramid is the best but no one uses it.
Here are some links:
|Web Browser ¶||Firefox||
Not to be confused with Konqueror, Conkeror is an emacs-like, keyboard driven, scriptable, Mozilla-based web browser. I've used it almost full time since January 2008. It is still considered alpha stage software so there are a number of bugs. However, it is still pretty sweet. I use Firefox as a backup (and IE Tab for Launchcast and Netflix on Windows).
Unfortunately, one of the annoying things in Firefox 2 is present in Conkeror as well-- memory leaks. Based on this Mozilla article and some brief personal experience, Firefox 3 has made fixes in this area. It would be nice if Conkeror could benefit from the Firefox 3 fixes.
Update 2010-05-04: Conkeror is really awesome, but I had some memory/cpu issues with it a while ago and haven't put in the work to merge my custom keybindings with the latest Conkeror code. Also waiting to see if there will be an Emacs version of Vimium (since, after all vimperator followed conkeror).
Update 2010-05-04: Gmail. It's slow but it has a lot of features and it's in my web browser and it's easy and it works and I don't really like using email that much anyways. Oh, and, big plus, syncing works almost perfect with my Android phone. (Actual full switch to Gmail was around December 2008.)
|Graphical diff/merge ¶||KDiff3||
I started using KDiff a while ago on Windows and have always liked it. I'm thinking, though, since I'm an Emacs person, I ought to use Ediff.
|Keyboard ¶||Unicomp Endurapro / Leopold Tenkeyless w/ Cherry MX Browns||
I realize a keyboard is hardware and not software, but it is hardware that can evoke strong opinions, so I made an exception.
One problem with hardware is I can't try out all the different types and choose the one I like the best as I can with software. So my selection is based on reviews not on actual experience. And, after buying the Endurapro, I found I actually did not like the integrated mouse stick, so I should have bought a Customizer 104/105 and saved $30.
Update 2011-05: Got the Leopold tenkeyless for work. Tenkeyless is a must for quicker mouse access. And I actually like the lighter touch of the Cherry MX Browns versus the Unicomp's buckling springs. I like it so much I want to replace my Unicomp at home with another Leopold.
Update: Got a second Leopold for home to replace my Unicomp.
History: 2009: Unicomp Endurapro, 2011: Leopold Tenkeyless (MX Browns)
|Office Chair ¶||Undecided||Herman Miller Aeron or Steelcase Leap|
|Mobile Phone ¶||Motorola Droid||
After almost 10 years (and 3 generations) of the Palm Treo, I got the Motorola Droid.
The Droid is pretty awesome, but I don't like switching to landscape mode to use the keyboard-- especially when toolbars and headers take up half the screen. I think Palm and Blackberry got this form factor Right. Just as I prefer the keyboard over the mouse on my PC, I want to use the keyboard and D-pad over the touchscreen on my phone. Update 2010-05-04: The keyboard is mediocre and use of the D-pad center button sucks. My Palm Treo 650 D-pad worked much better.
6 Comments — Comments feed for this post
#1 Nguyen commented on 2008-11-16:
To me, claws-mail is awesome except that it can't send emails (can receive) thru microsoft exchange. But i aint complain much since no email client in linux can do this for me.
With plugins (I use dillo, bogofilter, tray, rss, calendar plugins) calws-mail totally beats all other app. I personally stay away from fatty thunderbird and evolution. Evolution has a lot other features and services running that I never need. Thunderbird, to have all functions of claws-mail, needs ton of addons.
Epiphany is my day-to-day browser now. But FF3.1 is promising to blow us with its speed. But I still consider it a heavy app. Opera has a very annoying bug that never be fixed. To me, the lightest and fastest browser on linux is midori, let's way for it to mature.
#2 Eliot commented on 2008-11-17:
Nguyen, thanks for your input. I'm glad to hear another positive review of Claws Mail. I am not a heavy emailer, but it has worked for me so far. Thanks for the info about browsers as well. I will keep an eye out for midori.
#3 Jay commented on 2009-10-10:
Thanks for the Python script to convert .pnm files to .pdf! It worked very well once I got the names of the files I was going to convert spelled correctly.
#4 PATX commented on 2010-04-05:
Why does it say you useHg when you are more active on GitHub then Bitbucket?
#5 Eliot commented on 2010-04-05:
PATX: you caught me-- I recently started using git for work so I decided to put my recent stuff on github. Based on just the VCS itself, I'd still probably choose hg over git, but since I have to use git for work anyways, and github has a larger community than bitbucket, I put my stuff on github. Apparently, I could use hg and github using http://github.com/blog/439-hg-git-mercurial-plugin but I have not tried it. I will try to update this post soon.