I haven’t really changed my xmonad config in a long time. I started running it around the time version 0.2 came out, and that was in May, 2007. It didn’t take me too long to get comfortable with a simple xmonad + dzen setup, so except for upgrading my config to work with new xmonad versions and trying out new contrib modules now and then, not much changed.

My old desktop (the orange looks bad in a jpg, but good on the desktop, trust me)

My dzen setup was pretty brittle though, and hard-coded to the screen resolution. And there were too many pieces. Everything started from a bash script, and by everything I mean xmonad, 3 dzens, stalonetray, gnome do, mpd, various gnome daemons, xbindkeys, xmodmap, xsetroot, xset, and xrdb. It was messy, but it actually worked really well.

Since I upgraded to Ubuntu 10.04 (Lucid Lynx), I decided to make another change and get rid of most of that setup. Now I’m just running Gnome, with the window manager switched to xmonad. Of course, there are still customizations, but they’re pretty minor compared to the old setup.

My shiny new desktop. Yes, that's a lot of tabs.

I just used the simplest setup to replace metacity with xmonad, and added the xmonad-log-applet so I can continue using some of the same panel setup from dzen. The installation instructions for that all worked properly, and the only problem I have with the applet is that it doesn’t seem to handle utf8, so some characters don’t display properly (like in the title bar of the browser I’m typing this into).

The log-applet uses pango for text formatting, which is easy enough, and the example code for the applet is easy to adapt. I used this pango reference to get the formatting I wanted, and the log applet blends nicely into the new Ubuntu theme.

One thing I still wish xmonad supported is compositing. I think it gives a desktop a nice, smooth, solidness that I miss in xmonad. Of course, xmonad more than makes up for the lack by being ridiculously good. I gave xcompmgr and fadeInactive another try, but it’s still unreliable and unstable.

Every time I do something like this, I end up taking a look around the xmonad wiki and in the contrib modules and finding something useful. This time I found two small ones.

  1. Place hook. A simple module that controls where floating windows will appear on the screen. I have mine appear centered on the mouse cursor, but without going offscreen or covering the panel: placeHook (withGaps (24,0,0,0) (inBounds(underMouse (0.5, 0.5))))
  2. fullScreenEventHook. This comes from EwmhDesktops, but is only in the development version. It just makes hitting F in a video player, or F11 in a browser to go to fullscreen mode work. Previously I was using toggleLayout to switch to a fullscreen layout.

Of course, digging in to my config like this also shows that it’s time for a cleanup in there. There are many bits that I just don’t use, and there’s some messiness where my attempts to customize have collided with my lack of Haskell skills. Still, my config file is on github, so feel free to dig for usefulness. I’m sure it’s there somewhere.

My one remaining problem from this upgrade is that I can’t remap control keys. I was using xmodmap to add two control keys where I could reach them easily, and not having them is really slowing me down. This looks like it’s due to this bug, which I really hope gets fixed before release.

Overall, I’m very happy with this setup. It’s going to take something really amazing to get me to switch from xmonad.


(Update: ok, so I posted this quickly without having used it a lot. I don’t use the Gimp much anyway, so this mostly meets my needs, but it does have issues. If I get motivated to look into them, I’ll update with a fix if I can.)

I just came up with an xmonad layout for gimp that I like quite a bit, so I have to share it… it uses the IM layout (twice) combined with the Full layout to get tools on each side of the screen, with images taking up the whole space between them. Here’s the code (updated to include requirements, etc):

import XMonad.Layout.IM
import XMonad.Layout.PerWorkspace
import XMonad.Layout.Reflect

main = do
  xmonad defaultConfig
    { layoutHook = onWorkspace "gimp" gimp }
    where
      gimp = withIM (0.11) (Role "gimp-toolbox") $
             reflectHoriz $
             withIM (0.15) (Role "gimp-dock") Full

You’ll probably want to change the widths assigned to the two IM docks to fit your screen, but those settings work nicely for me on a 1920×1200 24″ screen. Here’s a shot of it (click for a full-size view):

My xmonad layout for gimp

My xmonad layout for gimp

Loading image

Click anywhere to cancel

Image unavailable


About time I started using this site again. So I updated wordpress, picked out a pretty theme, hooked up twitter, and wrote this post. Hey, it’s a start.


I updated my gutsy (7.10) server to hardy (8.04) recently, and ran across a few little problems that I wanted to post somewhere useful.

  1. There are networking issues with the Ubuntu Xen kernel. You have to download a patched kernel, which is linked from this helpful howto. There are several bugs in launchpad about this.

  2. Updating xen-utils-3.1 to 3.2 (and removing the 3.1 package) removes a needed symlink. It’s this bug.

  3. Apparently a reboot is needed between installing xen-hypervisor-3.2 and xen-utils-3.2.

I like Ubuntu a lot, I really do, but it would be nice to have a release that actually worked with Xen for once.


Before I begin this, let me just say that I’m aware of the irony of saying this stuff in a blog post. Also, I never planned to post personal things like this here, but it’s important to me and it’s my site, so nyah.

Due to an eye injury, I spent the last ten days in Vancouver, BC having and recovering from surgery. I had to be careful of exertion, so the most activity I had was walking aimlessly around downtown. I spent a lot of time sitting in restaurants and coffee shops, and resting in my hotel room. I had no laptop with me, so I had no net access the whole time (I didn’t even miss it). That meant no Google Reader (where I’m subscribed to almost 300 feeds), no Twitter, no Friendfeed, no email, no TV torrents, nothing. Completely unexpectedly, I loved it.

Now that I’m back home with my own computer again, I find myself simply not doing the things I spent so much time on before. I question every action. Is this actually doing me any good? What’s the point of it? Is it getting me any closer to where I actually want my life to go?

It seems odd to me that a thing as small as ten days alone, without the net, has changed the way I think as much as it has. And I like the change, so now I have to keep it going somehow. Wish me luck.


So, Google has added “note sharing” to Reader. That’s fine and all, but I don’t really see the point. Why? Let’s look at what it offers:

  1. Sharing links with a bookmarklet. This is what I already do with delicious. You can even add notes. Crazy.

  2. Sharing thoughts not associated with a link. Let’s see, what could I use for that? Twitter. Or Friendfeed. Or Pownce (ok, so I don’t really use Pownce much).

Of course, this means my crap is spread around all over the place, but that’s what Friendfeed is for. Just go to my Friendfeed page and it’s all there. So thanks Google, I’m sure your Notes are very nice, but I doubt I’ll be using them (although I love Reader and use it every day).


The beta of the next Ubuntu release came out recently, so it’s time for me to upgrade. Usually I just dist-upgrade and keep going, but this time I’m starting fresh. I’ve got years of crap built up in my home directory and the system in general (I’ve been running Ubuntu since the first release in 2004, and I don’t think I’ve done a fresh install in all that time). Since I’m starting over anyway, I’m also giving the 64 bit version a shot. Here’s a semi-organized collection of impressions and issues:

First impression: it’s fast. Significantly faster than it was. There are several reasons for this:

  • Fresh install.
  • Gutsy install was old and had been dist-upgraded all the way from Warty.
  • Was 32 bit, now 64 bit.
  • Old PATA drive out, new SATA2 RAID1 in.

Second impression: memory usage sure goes up with a 64 bit install. Firefox 3 sits at around 1.1G now; before it was 500-700M. Of course, there’s a reason I put 4G of RAM in this machine.

Wacom

I have a Wacom Bamboo Fun tablet, which I had to get working myself in gutsy. I had expected the driver to be included in hardy, but it isn’t. Just silly. The stock kernel driver doesn’t handle the Bamboo Fun at all, and the wacomcpl utility is missing from the wacom-tools package. It doesn’t look like this will get fixed for hardy.

Freemind and Java

Freemind has been the most trouble so far, but it’s not hard to fix. First, it needs 32 bit java5 (talking about Freemind 0.8.1 here), so install the ia32-sun-java5-bin package. Then edit or create ~/.freemind/freemindrc and put these lines in it:

export PATH=/usr/lib/jvm/ia32-java-1.5.0-sun-1.5.0.14/bin:$PATH
export JAVA_HOME=/usr/lib/jvm/ia32-java-1.5.0-sun-1.5.0.14
export LIBXCB_ALLOW_SLOPPY_LOCK=1

The first two make freemind (and only freemind) use that older 32 bit java (FAQ), and the last is a workaround for a java bug. Oh, and install the freemind 0.8.1 package from the freemind site; the version in the ubuntu repo is old.

Skype

Skype was surprisingly easy to get working. All I did was make sure I had the 32 bit libraries and qt4 installed, and then force installed the Ubuntu package from the Skype site and it worked (video and all). It doesn’t seem to support pulseaudio at all though, so I may have to use the pasuspender workaround. There’s more useful info in this forum post. I’m not sure about the getlibs script linked in the forum. I ran it and it said it didn’t do anything, but Skype still works.

Wine, Flash, and media

Wine works great (all I’ve been using it for is Portal and Half Life 2). The nspluginwrapper magic that makes flash work causes mildly annoying pauses when loading a web page with flash in it, but it works well enough. I’ve had no media problems so far, everything that played before still plays. Totem seems to finally work with the gstreamer backend. I’ve always had to switch to totem-xine to get all my video files to work, but not this time. I use mplayer most of the time anyway, but it’s nice to see gstreamer working so well. Of course, I installed the ubuntu-restricted-extras package, and a few others from Medibuntu.

Mouse buttons

How is this still a problem? My mouse has a thumb button (usually used as back in browsers). This is pretty common, I think. It also has a tilting mouse wheel. None of these things work by default. The buttons aren’t even recognized by X. They are not straightforward to get working. Why?

Wrapup

Overall, I’m really happy with how Ubuntu 8.04 is looking. Of course, I say that every release. Ubuntu has steadily improved, each release building on the last to make something better every time. A great sign of this progress is the timing of my upgrades. Early on, I’d just run the development version all the time, moving to it as soon as work on it started. There were always features and fixes that I wasn’t willing to wait months for. A few releases ago, I stopped doing that. I just didn’t see any need. Ubuntu was good enough already.


There’s been more talk of all-you-can-eat music plans lately. I think I’d pay for something like this only if I could get properly tagged (complete and accurate) files and my choice of unrestricted formats (I want high-quality FLAC). It also better be really convenient. As in, more convenient than torrent sites are now (there’s your benchmark, music companies). If I don’t get those things, what am I paying for?

There’s more to it, though. It would be really tricky to work a plan like this out properly. Who pays? Who gets paid, and how much? Is it fair to everyone? I don’t envy the people who are trying to figure it out.


Ok, and the week before.

Eben Moglen on Personal Data Control

This isn’t the first time I’ve listened to this speech, but this time it really clicked. Eben Moglen speaks so carefully and thoughtfully that listening to him is a real treat. I’m not even going to try to highlight his points and pick out quotes here. Everyone should go and listen to this talk.

Other random stuff:

  • A new find: Spark on CBC. Seems like a good mix of tech stories and interviews and the whole show is interesting and engaging. There’s a blog where you can join in, and you can also download the unedited versions of interviews. There’s a wiki where you can jump in and contribute to the show.
  • Billy Hoffman on Ajax Security. Scary security stuff. Reminds me of this panel about the darker parts of online marketing.
  • Phil Windley and Jon Udell on Online Reputation Frameworks. This is important stuff to be thinking about. Online reputation can really follow you around: it most likely never disappears.
  • The Linux Link Tech Show. What is there to say about this show? I hated its aimlessness at first, but they do get interesting guests, and there’s some bits of interesting conversation in between the long silences, technical problems, and background noises. The show is at least twice as long as it needs to be.
  • The SciFi Guys is interesting, lots of scifi news discussion and great guests.

I’ve seen this story about 50% of all torrent downloads being TV shows on several sites now, and they all irritate me (while not being the least bit surprising) for one reason. They all say that “a billion TV shows are downloaded every year.” Really? Every year? For how many years? Surely it can’t be more than one or two at the most. Yeah, I’m picky, but this just jumped out at me for some reason. Things move fast in the tech world, and saying “every year” rather than “in the last year” seems sloppy.