216

I missed a friend messaging me last night under the influence of Meth. Have I ever mentioned what I think of that drug? It’s highly addictive, it’s dangerous, and there’s a non-zero chance it was made wrong, and is instead one of the lethal precursors, all of which are white and crystalline.

I honestly think that one’s stupid, no matter how much it feels like it opens you up emotionaly, mmmkay?

215

So imagine the Chinese Restaurant voice mixed with someone with a peach inspediment mixed with the Transylvanian girl from Young Frankenstein who came out of John Cleese’s handbag.

214

Day from hell, still trying to accomplish for me what I wanted to do this morning. Oh, well. I did make a good chunk of cash.

213

A profile.

I’m a hacker. My day job is running a small but forward ISP in rural Colorado. My passions, computer-wise are toying with interfaces, making fun technologies play nice and find the more useful permutations of their combinations, and thinking about new communication systems.

My pet projects, mostly unfinished, are a mailing list manager, a rhythmbox-alike music player, and a jabber-IRC hybrid server with MUD-like abilities, as well as various ruby modules. I also spend a lot of time reasearching distance cluster filesystems, one of the more interesting problems in large-scale high-availability cluster computing.

My programming language of choice is Ruby, with a style inspired by much reading about LISP, Arc, Scheme, SmallTalk and Objective C and a functional style started with trying to make PHP not crash when it had memory management issues.

My company specializes in making internet service simple, and encouraging our customers to become good citizens, both on the net and off. We provide dial-up service, and are expanding into DSL. We host a service to build-your-own-website, and are open to custom hosting projects of an interesting nature.

212

I’ve been playing with BLAM! a bit this morning, and I really like it. It has the same clean feel that Gossip, Evolution 1.5 and Epiphany have. It is, however, missing some important features. The most important for me is “mark all as read”. I read about a hundred and twenty feeds, with one or two gems for every ten articles. Eight extra clicks to mark things as read isn’t cool on the tendonitis. Equally annoying is that there’s no notification of new articles. I have to open BLAM! to check. The final is that it doesn’t obey /desktop/gnome/interface/can_change_accels = TRUE.

That last nit is the single feature that keeps me sane using a traditional desktop under the influence of tendonitis. For years, I used sawfish with some very custom keybindings, just so I’d never have to use the hated mouse, which aggravates my tendonitis far more than the keyboard. Why GNOME decided to turn it off by default is a mystery to me, unless it was a case of the Moveable Toolbar problem that MS Word has. A total mystery is why it was buried with no UI at all, when the moveable toolbars get a nice little checkbox in the control-center. Re-assigning hotkeys is useful. Moving toolbars around isn’t. (Face it: How many people reading this use toolbars anywhere but the top of the window. I rest my case.)

211

So at about 15:00, betelgeuse, my workstation crashed. I took it down to plug in a faster hard drive to help solve its unbearable slowness, and I discovered a few leaky capacitors on the motherboard. Since it hadn’t seemed to hurt it before I took it apart, I figured it’d still work when I started it up. Wrongo.

Thankfully, my dad had a very nice spare motherboard and case around, so I replaced the hideous case and various other parts, and by 19:00, I had a working machine again. I left it moving files to the new drive as I walked out of the office.

Such a lovely way to spend the day instead of working. It was enjoyable, but at 19:00, I was getting to where I started nine hours earlier.

210

I have never seen a CD move quite as fast as the latest from Abandon Ship just has.

209

GNOME has one user-interface faux pas that really bothers me. The panel sits at a screen-edge, and can hold various widgets, including application launchers, a clock, a menu, and my favorite, the volume control.

On the panel is also a little widget, a tray for icons to appear in when an application wants your attention. Mine at the moment (screenshot) has a status icon for Gossip, a status icon and control for Rhythmbox, a redundant and as far as I can tell useless icon for LogJam, and the status icon for Liferea.

Of these icons, if one clicks on any, the application’s main window opens, and if you click again, it disappears. It’s a nice quick way to hide and show applications. I tend to use it slightly more than the panel at the bottom of my screen that does the exact same thing, because there’s no annoyingly slow animation when you do it with the little icon. That’s the good.

The bad: I have on my panel, within a quarter inch of each other, two icons for Liferea, two icons for Rhythmbox, and two icons for LogJam. If I click the launcher for Liferea, I’ll get an error, because it’s already running. If I click the one for Rhythmbox, it’ll launch a second copy, realize it’s running, and open the main window of the other, after about one second. If I click the launcher for LogJam, its main window appears nearly instantly. If I were to have a launcher for Gossip, it would start a second instance, leaving me with three icons all in a row for it, two status icons and a launcher, each with subtle differences.

If I close Rhythmbox, it dissapears entirely and my music stops playing. If I close Liferea, it hides its main window. If I close Gossip, it will disconnect any conversations I am having, and then re-launch, since I have it set to respawn in my session manager — which I heartily appreciate over having yet another icon in my panel.

What’s hard is the sheer number of user-interface widgets I have for a really minimal setup. I constantly battle for space in the top panel on my screen, taking icons I’m not using currently off. I usually put them back within the day, since I use the same apps over and over. I also have a bad habit of forgetting which thing to click to close a window, but leave the application running. Gossip and Rhythmbox, it’s the icon in the status area. For Liferea, I can just use the close-window button or key shortcut. Since I use Liferea the most often, I have that as a habit, and keep shutting down programs I want running when I want them out of my way.

When it comes down to it, the status notification area is a terrible UI. It’s a good concept: a single place to look for the computer trying to tell you something. In practice, it has some major flaws:

  • No direct manipulation. You can’t drag the icons around. At all. Trying will bring up unintended windows.
  • Inconsistent interface. (These are some of GNOME’s top people making these apps, and they still get it wrong.)
  • Redundant user interface elements.
  • Poor keyboard navigability.
  • No visual distinction between itself and the panel.
  • When used as intended by human interface guidelines, it would be empty. That’s tempting to just remove from the panel — but then, I wouldn’t get notifications of important things at all.

In addition, the panel has other flaws:

  • No direct manipulation unless you know to middle-click.
  • Overcrowding problems and clutter.
  • No communication between an application and its launcher.
  • Poor spatial navigation for returning to an application.

What GNOME wants is a dock. Just like MacOS. No matter how you try to solve the problem, I suspect that no combination of tricks will get you the net ease of the MacOS Dock. It gets many things right.

  • Spatial memory. When you launch an app, it appears in the dock. If you tell the dock to hold onto it, the application icon stays right there. When the application quits, the icon is right where you left it. It follows the spatial metaphor of if you put it somewhere, it will be in the same place when you return. It’s called “don’t surprise the user”.
  • Integrated notification. When an application wants your attention, it wiggles what appears as a part of itself. If it has something to say, you can find it at the application’s icon. The icon (singular) becomes an effective handle for the application, to be dragged, dropped and otherwise interacted with. The application feels tangible, not like some box that pops up, but like a thing, a physical tool.
  • Simplicity. The dock is not a file manager. You can put files on it, but it is nothing more than a pinboard. One doesn’t have the feeling that it should supplant the filing cabinet, so it does not. It does what it does well. The dock doesn’t hold “applets”, little extra things without user interfaces large enough to be a separate application. MacOS does put a few extra widgets on it, but they were careful to keep it minimal, and not intrusive. They allow windows of running applications to be placed there as well, which works metaphorically if you think of the windows as things to be manipulated, too, and the dock as a temporary storage. Implementation may be complex, but the concept is so simple that all MacOS users get it: the Dock is a place to put stuff where it’s handy.

My solution would be, in this case, to emulate the Dock wholesale. It’s time for Panel 3.0, a complete rewrite and re-think. Break all backward compatibility and move forward with a new, usable interface. It just needs to satisfy the burning itch that all users have: Let me get my work done, fast. My work involves starting and stopping apps, and knowing what’s going on, without anything in my way. Thank you.

208

While reading Vruba’s post on Intellectual Property (with a special, creative-commons or otherwise liberally licensed treat at the bottom), I was realized some things that would make GNOME truly wonderful to use. This falls squarely in the realm of user-visible components of apps. GNOME has a full-featured and growing library of Things You Can Do, but it occasionally lacks the well-polished interface of some other operating systems.

My task of the moment is to download some freely licensed songs from the Internet, and open them in my music player of choice at the moment. I particularly want them to appear in a playlist in order, but since blindly sharing all of ones playlists complete with song contents is problematic to say the least, but I’d be quite satisfied with them just appearing in the order I downloaded them. I can drag together a playlist from within a single well laid out app easily.

First off, every GNOME app that can download files uses a separate file downloading component. My web browser of the moment is Epiphany, and its interface is pretty sweet: that is to say that it’s nearly invisible. You tell it to do something, and it does. Only Safari passes it up, and that’s a pretty close game. It has its own file downloading component, which just stows (for me) everything in ~/incoming. I’m fairly happy with this, but for music it’s a pain. I go to the Epitonic page on Lali Puna and try to download a copy of 603, and it does. Slowly, since the site’s not that fast. So I get distracted. I forget about the file. I wanted to rebuild the afore-mentioned playlist, and I’m missing a file. So I did the logical thing. I dragged the link into Rhythmbox, where I wanted it to be eventually anyway. Rhythmbox even seemed to accept the drop. And you know what happened? Nothing. Zero. Actually, shortly after, Rhythmbox crashed. I don’t know if it was related or not, since nothing happened in the UI. What did I expect? A little box that looked like Epiphany’s download box, and then when that finished, the song to appear in Rhythmbox where I put it. I was dissapointed. I still have the fifteen or so Epiphany windows open from trying to download that music.

What I want

I want a common download control shared across apps. I’d even like a little daemon with a notification area applet that handled the actual work, since occasionally, certain plugins crash Epiphany, certain songs crash Rhythmbox, and the unexpected does occur. I want it to notify the eventual destination that its operations have completed, and even offer periodic updates if the recipient is interested. (A side note: having a progress-bar like Shareaza’s in the Rhythmbox library listing for a song still downloading would be wonderful.)

It’s simple. It’s not a complex thing to code — if Ruby or Objective C were a core GNOME language, I’d do it myself and offer up the code for integration with all the other apps. Compared to other projects, it’s truly trivial. In fact, I wonder why it’s not been done.

I think part of the problem is a false dichotomy in the thinking about interfaces: It’s not just navigational-versus-spatial orientation. You can mix them. One can navigate to a web link, and following a path of links feels rather like large-scale navigation to me. It’s not like my desktop; it’s like traveling to places. The web feels like it models the real world to me. I don’t want to navigate my files, I want them spatial. I want my web browser to stay somewhat navigational, with all the spatial metaphor possible added. And I want direct manipulation, so I can drag a link from Epiphany to Rhythmbox, and have it Just Work. Then I want all other apps to be able to deal with it the same way. Web enabled apps are not optional. This is the Internet Age, after all.

A post scriptum.

You might ask why I don’t just click the link to the MPEG Audio files and let the existing layers do the work. I would, but MPlayer Plugin intercepts that and plays the song in a browser window, which in addition to being a poor interface for audio, doesn’t save the thing for later. It’s exactly what I want from a Windows Media stream, most MPEG videos, and other things that MPlayer Plugin handles, but not songs. You can’t tell what I want to do by MIME type, so don’t bother. (Besides, I may want Lali Puna’s 603 to appear in Rhythmbox, but if I’m just snagging a few songs I despise for a friend who asks, I don’t want them to end up in ~/Music/Brittney Spears and happily indexed by Rhythmbox. I want them in ~/tmp, and to vanish shortly thereafter. There is no default action. I want control.

207

I had a delightful day; first, seeing Erek’s mom and sister while they were in town, and then seeing Robin in person for the first time, and doing the geek-girl thing all afternoon. ‘twas delightful.

197

A few days of silence, there. I’ve been busy: Billing is a pain in the ass.

This time, however, it went about as planned. I can deal with that. I send the credit card batch this afternoon, and should have the money on Monday. Hooray!

We had a frisbee game this evening, and it actually happened. A couple kids from Missisipi showed up, and rounded out the game to a nice four-on-four. It was tough — the wind was high, and we had rain part of the time. I’m sure the gusts reached over a hundred knots, and it took out the tree in front of town hall, just uprooting it entirely. Nothing big came out of the cottonwoods in the town park, though. I was impressed. The pruning job shows.

196

Grumble. People who post to community journals and don’t allow commenting.

195

Miscellaneous good news:

  • Inkscape 0.39 has much improved font handling. I think it’s good enough now for my purposes. I miss Corel Draw 7 less with every release.
  • GIMP 2.1.2 is out, with a GUI-less mode. Good news for those who want to have a little gimp-fu on their sites.
  • Why The Lucky Stiff’s site has a new design, as wonderfully quirky as the old one. Kudos to _why.
  • And last but not least, the root nameservers are going IPv6. Maybe we’ll see IPv6 rollout hit the masses this year. Or the next.

194

It’s finally happened. I knew it was just a matter of time.

Spammers are now guessing account passwords and using authenticated SMTP to send mail.

It’s time to make your password just a little better, folks.

193

So I can’t make omelettes. I have made one maybe once. What I now call an omellete is browned scrambled eggs, with stuff on top. It’s what goes inside an egg burrito, minus the tortilla part.

So I’m eating mashed eggs with mango salsa. I’ll live.