Saltycrane logo

SaltyCrane Blog

Notes on Python, Django, and web development on Ubuntu Linux

    

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.

Other lists

Contents

My software tools list

Category Currently using Comments
Operating System Ubuntu 10.10 Maverick Meerkat

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 from some A-list geeks:

History: 1987: Apple GS/OS, 1994: Windows 3.1, 2000: Windows 98, 2001: Windows XP, 2007: Windows Vista, 2007: Ubuntu

Window Manager wmii 3.9.2

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.

If you're a hard core Lisper, stumpwm is the window manager for you. It has a REPL. This one seems a little too hard core for me, especially since I don't know Lisp.

To try: qtile, the WM written in Python, recommended by Matt Harrison.

Other options: ion, dwm, awesomewm

Install method: from source

Editor/IDE GNU Emacs 23.1

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. ;)

Additional commentary:

Screencasts:

Install method: from source sudo apt-get install emacs-snapshot

Useful packages:

My emacs config on github: http://github.com/saltycrane/emacs

History: 2001: Emacs/NEdit/UltraEdit, 2006: Eclipse, 2007: Emacs

Terminal urxvt (20091102 CVS snapshot) +
screen

urxvt supports xft (anti-aliased) fonts, real transparency (not that I actually use transparency with wmii), and fading (which I do use with wmii) 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.

Install method: from source

Version Control System Mercurial Git

Switched from Subversion 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.

Additional commentary:

Install method: sudo apt-get install mercurial

History: 2001: SCCS, 2003: Other, 2007: Subversion, 2007: Mercurial, 2010: Mercurial/Git, 2011: Git

"High-level" Language C

Wouldn't mind learning C++. Although, Linus doesn't like it.

"High-high-level" Language Python 2.6

My love for Python is strong. I switched from Perl in 2005 and have no regrets. Object-oriented, easy to read (no more TIMTOWTDI), and smart people use it. I also want to learn Javascript 2 becuase it is the "Next Big Language" and Lisp because it is the "most powerful language".

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

Additional commentary:

Install method: preinstalled on Ubuntu

Useful modules/packages/frameworks:

History: 2001: Perl, 2005: Python

Web Framework Django 1.0

I haven't tried much else, but Django is pretty cool.

Here are some links:

Install method: pip install Django

Web Browser Conkeror / Firefox 4.0

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

I'm currently using a combination of Google Chrome and Firefox. Chrome is faster, especially for Javascript-intensive sites, but I really hate the Google Chrome Omnibar. If you have a solution or workaround, please post an answer. Firefox also has some Add-ons that Chrome doesn't.

Email/PIM Gmail

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

PDF Viewer Adobe Reader

Install method: enable third-party sources and sudo apt-get install acroread

Screen Capture KSnapshot

Courtesy of Mark Pilgrim's essentials list

Install method: sudo apt-get install ksnapshot

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.

Install method: sudo apt-get install kdiff3

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.

Additional commentary:

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.

My reasons for choosing an Android phone are: I need a physical keyboard. I want to hack on my phone. I think Android has more potential than Palm's webOS or Maemo.

CoolUseful apps:

  • Connectbot Secure shell (SSH) client for the Android platform. Use this all the time. Awesome.
  • Android Scripting Environment Android Scripting Environment brings scripting languages to Android. Loving Python, this sounded cool, but it didn't have enough power to do what I wanted.
  • Locale With Locale, you create situations specifying conditions under which your phone's settings should change. Again seems like a really cool concept, but it drained my battery and I found I actually didn't need to change my settings that much. YMMV. Switched to FoxyRing for controlling ringer volume.
  • Listen Listen from Google Labs brings podcast search, subscribe, download and stream to your Android-powered device.
  • My Tracks Record GPS tracks. Monitor your performance. Share your outdoor activities with friends. Really enjoy this one. Love tracking my romping.
  • Google Sky Map With Google Sky Map for your Android phone you can discover and browse the night sky just by pointing your phone to space.

2010-05-04 Updates:

  • Google Voice: Free text messages and better voicemail. Another useful app. Makes voicemail suck a lot less.
  • FoxyRing: automatically control the ringer volume based on ambient noise level. I was doubtful about this one, but it actually works well for me.
  • WeatherBug: preferred over The WeatherChannel. See my rationale here
  • Flixter (Movies): Useful for checking movie showtimes.
  • Bible (YouVersion): This version is pretty good. I miss my Plucker created Bible on my Palm though. I wish there was something like Plucker for Android.
  • DroidLight: use the LED camera flash as a flashlight. Simple and useful. Works much better than using the screen as a flashlight.
  • Google Navigation: I don't need my Garmin anymore. (Each has advantages and disadvantages, but I have found it to be a capable replacement.)
  • Urbanspoon: This is for my wife. She always told me my phone sucks because it didn't have the "shakey app" for finding restaurants that was featured in early iPhone commercials. It's finally been ported to Android.
  • Just want to mention that the Calendar sucks. It is great that I can sync with my Google calendar, but I really hate the Android Calendar UI.

Additional Commentary/Links:

History: 2002: Handspring Treo 180, 2003: Handspring Treo 600, 2005: Palm Treo 650, 2009: Motorola Droid 2011: Motorola Droid 4

6 Comments — feed icon 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.


#6 PATX commented on 2010-04-08:

Haha. Ok. And that plugin looks pretty cool. I might have to try it... Thanks!

Post a comment

Required
Required, but not displayed
Optional

Format using Markdown. (No HTML.)
  • Code blocks: prefix each line by at least 4 spaces or 1 tab (and a blank line before and after)
  • Code span: surround with backticks
  • Blockquotes: prefix lines to be quoted with >
  • Links: <URL>
  • Links w/ description: [description](URL)
Created with Django | Hosted by Linode