death by a thousand cuts

It's amazing to me what features drive decisions when choosing a technology. In my case, it's a clock applet, but let me set a little bit of a context first.

I stopped configuring my UI environment several years ago, opting instead to use the experience that had been designed for me by the fine folks at Ubuntu. This wasn't entirely just blind trust or pleasure - but rather that the defaults were sensible enough, and I wanted to be in the business of doing things, not spending an hour deciding what font I wanted my desktop to display. I believe I've been doing this since dapper, if not earlier.

Until now.

I tried. I mean, I've bitched at Jorge some in person, but I ran Unity starting with Natty up until last week. I ran it as provided, as intended, and I tried to learn to think about things in the way it was asking me to.

Unity is generally a decent piece of software. I don't hate it by any means and it is certainly workable. I can see how, if one wanted to design a single user interface that would work on laptops, tablets and phones that Unity might be what you'd end up with. There are weirdnesses, such as alt-tab having become counter-intuitive and seemingly non-deterministic. That the launcher buttons launch a program the first time you click them and switch to the program subsequently makes sense for every application I run - except for terminal windows. Of course, since Unity isn't designed with me in mind (even though I'm a stalwart and loyal Ubuntu user who evangelizes it to eveyone I meet) it's to be expected that UI behavior around having 20 different terminal windows open might fall through the cracks 

None of the things I didn't like about Unity were monumental though, and I learned to deal with them in the spirit of being a good sport and knowing that sometimes initial distaste is really just distaste for change itself.

On a lark last week, while reading about Mint, I decided to give the Mint Gnome Desktop Extensions a try - which meant installing Gnome 3 - so I gave that a try too. Same thing, really - gnome-shell, MGDE - they're both fine. They're both weird in a their own way, and I'm sure I could get used to both of them if I cared to spend the effort - but they aren't any better than Unity, nor is Unity any better than either of them. They're all just new and weird and will take getting used to for a person who has used and loved an X11-based desktop as his primary interface since 1999. I've got habits. I expect them to work. On urging from a friend, and since I was already trying out alternatives, I gave XFCE a shot. It's also fine. It behaves more like how I'd expect things to behave than the others do, that's for darned sure.

So I had some alternatives, and they either fixed some things I mildly cared about, or they didn't and just chose their own unique ways to be weird... essentially a wash.

Except for the one thing.

The thing that, it turns out, has become the one must-have feature for me. The thing that I had before and now have lost. And the one thing that I tried in each of the environments to find a good solution for.

And failed. 

And that's the Gnome2 Clock Applet.

I have, on more than one occasion, lorded it over my friends who are silly enough to run something that isn't Linux about how bad-ass my clock applet is. They have nothing like it. It's a feat of UI brilliance. It works like a normal user expects a clock to work, and then it has additional features that are perfectly discoverable without having to read documentation. So it's got all of the power that a power user might want, and yet has sensible defaults and behavior if you just want it to be a clock.

Let me tell you some of what it does for me:

 

  • It is a clock.
  • In a very succinct way, it also shows me temperature and weather.
  • When I click it, it shows me a calendar, and an expandable list of locations.
  • It lets me add a set of locations
  • It shows me those locations as dots on a world map.
  • That world map has a daylight/nighttime line drawn across it.
  • It shows me the times of all of the locations, as well as the weather indicator.
  • It lets me change my location by clicking a button. 

 

NOW - the pure UI designers out there will scream - why does your clock show you weather information? That's unrelated to the time!!!

See - that's what's brilliant about the applet. It seems to understand that it's not actually a clock - even though that's the first element of it that you see. It's a location information and management applet. For a clock to truly and properly work these days, it kind of has to know where you are in the world (a feature of all clock systems on all computers at this point) Once it knows that - well then - why not be a gui interface to both managing that location and providing information that is dependent on that location. For someone who travels as much as I do (none of my family ever know what city I'm in) it's a godsend. With one click, I tell my laptop where I am, and it keeps a summary of essential information about that location in a useful location quickly within my eyesight. It recognizes a use case - a real use case. It recognizes that my location may not be a fixed quantity, and that I might want to deal with that in a seamless and sensible manner. It also recognizes that, in addition to just being able to change locations - I might work regularly with people all over the globe, and sometimes it's really handy to be able to simply and easily see whether it's appropriate to assume that they are awake or not. On top of all of that - if YOU happen to not need any of that, you don't have to know that any of that is there.

Unity has a clock applet that lets me switch locations - but no weather. I have to add the weather indicator for that, and then I have to maintain two location lists and update it in two places.

Gnome3/MGSE is even worse - the weather indicator that it has doesn't seem to support location lists - only your current location - and you are required to enter that location using cryptic weather station id codes.

XFCE's clock doesn't even support showing me the current date.

So I've decided something. For now, I will run Gnome Classic (aka Gnome 2) and I will continue to enjoy my user interface experience, complete with consistent operation of all of the buttons on my computer and an amazing location application that is unmatched across any operating system. Gnome 2 was the last thing that both worked well and was designed with me as a target user. When such a time comes that I am, for whatever reason, prevented from running it, I suppose I can sit down and port the features I need to whatever new environment I have to run - but it would be really outstanding if instead the people running the project that I'm ostensibly a member of started caring about me again.

11 comments
Tags: ubuntu

Need const_map

I love STL containers in C++. They're so much better in general to work with than their C counterparts. The bit that's missing though is an instantiation-time optimized version of map.

Take, for instance, reading a set of commands at startup from a set of dynamically loaded plugins. It's not going to change, in this hypothetical case, because we neither load nor unload plugins after startup. But it's dynamic in the sense that we do not know it at compile time - so doing something like gperf to generate a perfect hash is out of the question.

But why should we pay the lookup cost on a dynamic container for every lookup if I can determine, based on program flow, that the contents of the container are not going to change once it's instantiated.

Something like:

const perfect_map(some_dynamic_map_I_built);

Where the constructor would do a perfect hash generation once, and the map itself would be const (not allowing contents to be added or removed) but was full of references to objects which might not be const. Right? I can't be the only one wanting this, am I? 

4 comments

Mailing List FAIL

I've been thinking a bunch about email and mailing lists recently... about how to deal with them, how to follow the ones that are important but not get drowned in a sea of email noise. I have a non-tech email account which is where friends mail me personally and where I handle theatre-related stuff. I do not receive a stupid amount of email on this account, and I am almost always interested in reading the messages that arrive there. So on my inaugust.com email address, I've been considering unsubscribing from all mailing lists and setting both Launchpad and github to stop emailing me most things.

For Launchpad and github, most things I care about have status pages of some sort: lists of bugs or branches I need to attend to or whatnot. I really don't need to get an email every time someone files a bug - it's noise.

Mailing lists are the trickier one, because so many open source projects are centered around them in one form or another. For a long time I kept filters to file things in to mail folders - but then I realized that I'd forget about large numbers of them and would never read them. So then I removed those filters so that they'd hit my inbox and I'd read the stream - but that's obviously too much.

I'm starting to think that they are all a complete and total waste of time in terms of existing in my inbox. Back in the good old days of the internet, a lot of that sort of conversation occured over NNTP, which thankfully also had the idea of expiring messages from the newsgroup after a period of time. The separation here was really nice, as it separated messages in general from message TO ME. RSS feeds into a feed reader might be an option - but it doesn't model the "Oh, I noticed a thing I should respond to which now needs to be a conversation I'll follow" workflow.

I don't know the answer - but the current stream of crap hitting my Inbox is fully problematic. (And no Stewart, notmuch will not help my problem here)

6 comments

Hating Americans and Cats

Most of the time I think of myself as living in a fairly progressive and enlightened world. I'm fotunate that I work with a set of wonderful people, I can travel all over the world and I'm a member of an excellent theatre company. As a result, hatred of things, or at least expressions of hatred are generally just not tolerated in any of the circles in which I run. (With the exception, of course, of things that FAIL, like a particularly bad piece of code - but even then it's less about hatred and more about not liking something that didn't work)

There are two social acceptable exceptions to that rule, though: Americans, and cats.

I was reading a blog post earlier this morning (which I won't link to because that's not the point here) which was a fun post about older people finding new music. As a person who is not getting any younger myself, the blog post was quite enjoyable. Smack in the middle of it though, there was a fairly senseless off-hand dig at stupid Americans. It was so off-hand though, that I think that's why it jumped out at me - hate, scorn or derision of folks from the US is so normal as to not even elicit emotion. 

In most of the circles I travel in, if you said the same sentence but replaced Americans with just about any other arbitrary grouping of people (and were not being ironic) you would meet with quite a good amount of resistance. Just imagine me making a comment about "stupid Asians" and see how long I get to remain at the dinner party. 

I notice a similar thing with cats. In any group of people, there will be someone in the group who, if cats come up, will freely talk about how they hate cats, or how they used to torture cats. I have heard people talk about throwing cats across rooms with the same level of concern as they would tell me what sandwich they had for lunch. I suppose, given that a cat is just an animal, that one could just assume people don't care as much about animals... but substitute dog for cat in any of those stories and you will find yourself with a riot on your hands. And the times I've tried to point out the dichotomy to dog-loving friends who avow hatred of cats, the response usually comes back "I guess... but I hate cats"

Why is it socially ok to tell stories about torturing cats when torturing dogs is societally completely unforgivable. Why is it ok to single out a group of people based on geographical origin for scorn, when  it is not ok to do so in general?

The really sad part is that when I ask those questions... I get justifications. "Cats suck" or "The US brings it on itself." But I've got to say - abusing animals is not ok, no matter what the animal is, and bigotry is wrong no matter who the target is. Regardless of how cool you may think such expressions make you, I believe they do nothing but show ignorance... and they make me sad.

20 comments

Why I run Ubuntu and not something else

I was just having a conversation with a good friend of mine last night who was considering a new job at a startup. The job seemed pretty good, but it was also quite clear that the company was full of devs who worked on and revered their Macs. Like me, this was very off-putting to my friend. At times I feel like we're a dying breed... but we've both been working hard on making Linux an amazing operating system for years, and on advancing the cause of Free Software, so the idea of running the most non-free platform available as our everyday working environment is a bit of an anathema.

However, I don't really want to start a negatively oriented flame fest (I truly to value people's ability to make their own decisions) ... so I thought I'd just highlight the reasons why I run, and will continue to run, Ubuntu.

 

  1. It works really well.
  2. It's Free.

 

It works really well

Everything I need, and even many things I don't need, Just Works™. I can easily type pretty much any international character or fun things like ™ or ©. It's called the compose key... and it's fantastic. My clock has a drop down widget that shows me the time of my friends across the world (which is essential for globally remote development). I don't have to install drivers to use hardware. My flatbed scanner works. My camera works. My phone works. My music player works. I am not disallowed from doing things with my music either on my desktop or my attached music players. I can easily sync music to the cloud and listen to it on my phone. Printers just install magically. Software installs (and uninstalls) quickly and easily. I don't have viruses or virus checkers. I can easily pop open xterms remotely over the internet (remember that technology we've had for 20+ years?) My application notifications give me as much information as I need, but aren't too loud or annoying. I have excellent chat and IRC programs. As a developer, I have easily access to every programming language and every library imaginable. I never have to choose to not use a tool because it's too heavy-weight to install. My laptop has a left, a right and a middle mouse button and a trackpoint and my trackpad is disabled in the bios. Tab completion works properly. vim and emacs are both there and both work well. So is Eclipse.

Everything on my laptop works, and it works without me spending any time or effort configuring it.

I should underscore that the only extra PPA I have installed on my system is the one for Drizzle, which I actively hack on. Getting new Drizzle developers who are on stock Ubuntu up and going in a dev environment involves only three commands.

It's Free

I have quit jobs over Software Patents before. I don't write code which isn't Free Software. I strongly believe in Free Software being successful. Even if I did think that another platform was easier or better (which, if you'll see above, you can clearly see I do not) how could I justify using the non-free version? How could I seriously look someone in the eye and tell them that they should use a Free or Open Source alternative to the software they are currently using if I don't even do that myself?

From a functional perspective, I do not have to live with a set of choices that someone in a marketing department somewhere decided would be the only choices I could have. I spend almost no time customizing my desktop, because the Ubuntu design team does an amazing job - but if they ever made a decision like having icons bounce around like leprechauns on acid, or making all of my windows translucent - I'm pretty certain I could disable it without much trouble and get back to being useful.

Choice

At the end of the day, it's all about choice. These are my choices, and my opinions. If you think that OSX or Windows7 works better than Ubuntu for a set of functionality that you find essential, then by all means, as a supporter or Freedom I think there is nothing more important than you being able to make the decision to run whatever you want to run. I may be quite incredulous and lack complete understanding that you could feel that way - but go for it.

As for me, I am a Free Software Hacker, I run Ubuntu, and I have no motivation or intention to run anything different.

8 comments
Tags: ubuntu