I'm Paul Bissex, and e-scribe.com is my consulting business. I build web applications using open source software, especially Django. In the '90s I did graphic design for newspapers and magazines. Then I wrote technology commentary and reviews for Wired, Salon.com, Chicago Tribune, and lots of little places you've never heard of. Feel free to email me.
I'm co-author of "Python Web Development with Django", an excellent guide to my favorite web framework. Published by Addison-Wesley, it is available from Amazon and your favorite technical bookstore as well.
Built using Django, served by Apache and mod_wsgi. The database is SQLite. The operating system is FreeBSD, on a VPS hosted at Johncompanies.com. Comment-spam protection by Akismet. Vintage topo imagery from the Maptech archive. The markup engine is Markdown.
Akismet, bitbucket, del.icio.us, Django, Emacs, FreeBSD, Git, jQuery, LaunchBar, Markdown, Mercurial, OS X, Postfix, Python, Review Board, S3, SQLite, TextMate, Ubuntu Linux
At least 96060 pieces of comment spam killed since January 2008, mostly via Akismet.
During a quest for things that might make using my spare laptop -- an old 800MHz, 256MB thing running Ubuntu -- a more zippy experience, I came across "wmii". It's a lightweight tiling window manager with a lot of auto-sizing and keyboard control features. I'm really liking it. This laptop has never felt so responsive.
Other similar tools include dwm, xmonad, Ion, and ratpoison. Of the lot I've only tried dwm, which was cool but a little too minimal (its customization method, by design, is edit-source-and-recompile). I'm looking forward to trying xmonad once a package makes it into the Ubuntu repositories.
I was using XFCE before this. It looks nice, and is slimmer than, say, Gnome or KDE, but not terribly different once you compare it to something like wmii. Those systems, like OS X and Windows and most of their predecessors right back to the Xerox Alto, still put a lot of burden on the user to manually position and size windows. Tiling window managers like wmii, on the other hand, know that you want to have windows be as big as possible without making it hard to get to important stuff.
wmii calls its screens or workspaces "tags". In addition to the default numbered ones (which are quickest to type) you can create named ones. Multiple tags can be applied to a given window causing it to appear in multiple workspaces. Unused tags simply disappear from the list at the bottom of the screen.
The keyboard control is really great. It's like an X version of GNU screen and a virtual desktop utility. Windows can be pushed from one tag to another via the keyboard, and if you have multiple windows open in a single workspace you can move windows left, right, up, and down -- with all the other windows reshuffling themselves as needed. You can get a terminal open anywhere with a single keystroke. A utility called dmenu lets you find and launch applications by typing unique prefixes -- like tab completion with instant feedback.
Certain applications that spawn lots of windows aren't such a good fit for wmii. The Gimp comes to mind (though it works passably if you have it automatically relegated to its own tag/workspace when it launches, which is a one-line change to your wmii config). OpenOffice is passable. Everything else I use a lot works great. I love never having to use the mouse (er, trackpad) to move or resize windows.
In addition to all this, wmii has some interesting architecture under the hood, e.g. its filesystem-like API. The developers seem to be Plan 9 expats, or enthusiasts.
I encourage experimentally-minded souls to check it out. In some weird way I think that it represents the future.
You should check out ruby-wmii, which replaces the default wmii config files with some Ruby magic to let you configure and extend wmii all in Ruby.
ruby-wmii (and [python-wmii][1] and [pywmii][2]) are definitely on my list of things to check out!
[1]: http://downgra.de/articles/python-wmii/
[2]: http://www.freenet.org.nz/pywmii/
And thanks for the note on Ion, Alex. I had some problem installing or configuring it, and where X11 is concerned I avoid messing with configs if at all possible, because it can turn into such endless and unrewarding yak-shaving. I do like Lua though...
XMonad is nice, but in my experience not fundamentally different than dwm ported to Haskell. That's cool (a Haskell wm!), but doesn't add much from an interface standpoint. It's still edit-(haskell)-source-and-recompile. Ugh.
I used ratpoison for about two years before checking out wmii. It certainly fulfills its promise of subverting the rodent, but the other WMs that also manage layouts (tiling, etc.) have a distinct advantage. The big win that kept me with ratpoison was that it supports keychains, i.e. putting all commands behind C-`, C-Return, etc. like GNU screen, rather than taking up half the keyboard shortcuts. (Why, yes, I *do* use Emacs.)
I just started with wmii today, but the tag thing seems like a good idea. The most significant thing, though, is that I just ran across someone thinking about using [markov chains http://eigenclass.org/hiki.rb?ruby-wmii+0.2.1] to manage their tag switching. Say what you will about markov chains (and I think it's a *fantastic* idea), the fact that the WM supports, no, *encourages* hacking it in your language of choice is a great sign. Instead of being extended in an embedded sublanguage (Lua, for Ion) or a config file, it can work with anything that can interact with a plaintext filesystem. It knows how to lever the real strengths of Unix. (FWIW: Mine will probably be in Python or OCaml.)
I've been using Ion3 for close to a year now and I can't imagine going back to a non-tiled WM. Every other environment seems crippled in comparison.
I just keep a floating window workspace around for programs like the GIMP and xsane that like to have a bunch-o-windows.
wmii sounds interesting. I'm hesitant to switch to something else at this point since I've become quite comfortable with Ion. Maybe I'll load it onto a secondary machine to check it out.
Thanks for the writeup.
Thanks for reading! Please note: Your comment will not appear until approved, which may take a few hours or more. Spammers will be torpedoed.
Booktools
2 comments
A different kind of URL shortener
4 comments
The syncbox
2 comments
Branching and merging in real life
8 comments
Summer Spam
1 comment
malpaso
Understanding tuples vs. lists in Python
13 days ago
vj100
Understanding tuples vs. lists in Python
13 days ago
scott
Bicycle Repair Man bundle for TextMate
19 days ago
Jasmine
Trying to send eBay a message?
56 days ago
Smok Cigs
Let's play a game: BASIC vs. Ruby vs. Python vs. PHP
93 days ago
Copyright 2012
by Paul Bissex
and E-Scribe New Media
Hey Paul,
Definitely give Ion a try as well. I used to run Ion on an old G3 iMac running Gentoo. You might find it's Lua scriptability interesting. (Newer versions may not have Ubuntu packages.)
Cheers,
Alex