header image
 

The Problem with Forcibly Sane Defaults

Long time, no posts. This blog is still alive, though, even if no one reads it.

Today, I have a question that I still can’t find a good answer to. With the repository systems on most Linux distributions, such as Gentoo’s portage or Ubuntu/Debian’s apt, why is it so bad to create a repository in which the software stays up to date? And why is it so hard to let the user uninstall?

I have mostly stopped using Ubuntu at this point. When I installed Hardy Heron beta, there were a few bugs - suspend was broken once again, and smb shares no longer worked in Gnome. These seemed minor, but eluded nearly all my attempts towards fixing, and nothing happened when the beta became release version.

What I started to realize was that my kernel version was slightly outdated. So was Firefox. And I had a ton of stuff, any of which could be causing the suspend/resume hangups, most of which I’d never meant to install. Lots of services and controls for Bluetooth and Palm OS, neither of which I have access to. I have also never used the Evolution email client, but Ubuntu’s gnome-desktop package depends on it, and so it would sit there forever.

I remember a friend having some major problems with Ubuntu. One of the earlier versions had a broken version of GParted, which would do major damage to one’s data. It was not updated until the next release.

I understand that Ubuntu relies on well-tested software and sane defaults. Usually, it just works, and running Gentoo has made me understand how difficult this can be. Gentoo, though, does a much better job of giving the user options when one of those well-tested defaults breaks. My Gentoo system suspends, and I know what everything on it does. I was a bit miffed that I had to go to the test (~) repo to get a non-dinosaur python install, but once I did, it worked fine. Honestly, I think I spend less time compiling and configuring my Gentoo setup than I did trying to find out what was breaking things under Ubuntu.

Paths Not Taken - The Non-Advertised Bits

One of the problems with life is how it lacks symmetry in time. Paths not followed become increasingly difficult to return to. It’s pretty much clear by this point, if it was not a year ago, that I will never go to MIT as an undergraduate - I gave up that experience. That, however, is just the basic, cliched part of the story.

Less apparent is the contradiction in the “Renaissance Man”, or in liberal arts education. While society encourages us to diversify our talents, it also makes glaringly apparent the extent to which we give up the ability to do so once we’ve chosen something. For example, I recently decided to try acting. Being in college, I had no trouble signing up for courses, but this cannot change the fact that I am about 2 years behind the vast majority of theater kids. Furthermore, because I’m a physics major with a tendency towards technology, I’d have to try to live two lives if I wanted to get into theater and keep my core.

What I am currently going through, and what I mean in my warning to others, is that things you don’t do are not always reversible. Even though I am young, with years to try any of these things, I must acknowledge that developing completely new skills to the point of professionalism will continue to get harder with time. Sure, many great writers and politicians got their starts late in life, but for many fields, it takes quite a bit of genius to overcome even a few years of lacking experience.

The Problem with Desktop Competition

Not to be confused with my earlier post on desktops, this one’s about what we are forgetting in the Gnome/KDE hype. Both work very hard at maintaining their own version of lots of little toys. One of the big new features of KDE 4 was Marble, an earth viewer. Each desktop keeps its own hex editor, and both seem to work in basically the same way. Same deal with the calculator program, the games menu, NetworkManager, etc. Gnome recently added window compositing, to compete with compiz.

The problem is that we lose focus on the core element - the graphical system itself. KDE seemed to be struggling to stay on schedule for version 4. Gnome hasn’t had such a revolutionary release in ages, and it comes across loud and clear when people start comparing it to Mac OS9. Granted, many of the smaller improvements have been Godsends, like the recent theming upgrades. The point, though, is that all this focus on accessories is doing damage to the Linux desktop. Now Mac has iLife, Windows its own equivalents, etc. But since we have multiple desktops, this costs us more, because we wind up writing these over and over again.

Though I have no problem with alternatives, we need to separate out the accessories and tools from the main desktop. I’m not saying these things shouldn’t exist, but that I think we need to narrow the definition for what we focus on as a desktop. Accessories, tools, and especially compisiting seem to work best as 3rd-party projects, possibly with close collaboration with the desktop teams. Not being a member of either project, I can’t say how much dev time this costs, but I can say that it steals focus. New releases should be primarily about new technology, as opposed to new trinkets. What we end up with is excessive re-implementation, and a missed change for collaboration. I, for one, would prefer that both desktops work on compatibility with Compiz rather than their own effects, and spin off Marble and the calculators to focus on the things like Plasma and GVFS.

What Linux Needs

Most of my friends are Mac users. Being one of the few loyal Linux users in the group, I often find myself debating the merits of the platforms. At least we can peacefully dump on Windows together, but that’s beside the point. It seems the primary issue for Mac users is UI: how things look, how simple they are at first sight, how everything fits together. Now this is a very visual focus, but I think they often have a point about what Linux lacks: interface.

As an example, I present a recent project of mine to make desktop maintenance easier. As I was discussing this with one of my Mac-dev friends, a program called Hazel came up. It, for a price, lets you set actions to be performed whenever some filesystem event or time occurs. For example, you can set it to automatically sort all the crap that gets dumped onto your desktop, or empty your trash monthly. Looking for Linux variants, I found that with some config file hacking, one could do the same thing using cron, incron and a bit of scripting. Of course, this is only useful to knowledgeable sysadmins, python programmers and people generally geeky enough to learn this stuff. So my project is to slap a UI onto this thing.

Another example is with suspend-to-ram. Right now, Ubuntu handles it decently, but only after I hack some config files and make sure sync to vblank is off in compiz-fusion. This is no solution; it’s yet another example of leaving the hard part to the user.

Right now, Linux needs more of a focus on clean, high-quality, usable UI for the stuff that it already does. In some regards, we have the advantage here - compiz-fusion is more advanced than anything else of its class, and things like the restricted drivers manage or add/remove programs in Ubuntu provide a far simpler UI than any other platform. So we need to press the advantage. Hopefully, Hardy Heron will create a system that basically and legitimately works - without use of the command line.

How to Learn Music?

I came across this among some other songs from this band a few days ago, and I’ve listened to it some ungodly number of times since, in its low-quality, home-video, Youtube form. Hopefully the fact that this has been up for ages means that the copyright police have peacefully passed it over, but I’ll take it off the blog if anyone objects. Anyway, it reminded me how awesome it would be to produce such sound.

The first musical thing I did was to try to learn the violin at 6 years old. This went poorly. It’s pretty easy to talk kids into doing things they don’t really want to do, like singing up to practice every night and take violin lessons for God knows how long. Parents don’t quite realize that kids are even worse at reading contracts than adults. Anyway, I came out pretty sure I wanted no more of that.

More recently, I’ve tried to approach the subject from a more reasonable perspective. Last summer I had some exposure to remix culture and a bit of time to tinker around with Linux audio tools and listen to some good, new stuff. So now I’m thinking a bit more seriously that as long as I’m still in college, I might as well try the band thing. I don’t quite know where to start.

Then I saw some new papers on math and music on Slashdot. For all of us technical people trying to get in on the music scene, I figure this could be quite helpful. As for the tools that I found on my summer experiments, well, those that looked most interesting are LMMS (for Linux), Sweep (also Linux) and Hydrogen Drum Machine (now cross-platform).

This isn’t like most of my other posts, because there’s no real conclusion or direction. I’ll probably see what I can do with Creative Commons licensed stuff on my computer, then learn bass, guitar or synthesizer over the summer.

What am I doing?

Normally this would be the first post on a blog like this, but I think I’ll make it my third. I hadn’t quite decided what this blog would be when I started it.

My first impression is that I have an excess of ideas, and a shortage of organization and communication. So starting this was an attempt to trade some thoughts for some usage. I originally wondered whether or not this would be purely a tech blog, but I don’t want to put that restriction on it. There’s a decent change I’ll be blogging about music every once in a while, or maybe politics. I already have a Livejournal, but that’s a personal blog, maybe a little too personal to mix in with what I’ve been thirsting for. This one is going to be less introspective and more about the world.

So I’ll be posting a lot of ideas here (not the ones in my secret notebook though), and hopefully some of you will comment. I’m open to just about anything except for spam and stuff that might get me in trouble (gratuitous hate speech, copyrighted material, etc.). Enjoy.

The Desktop

Ever notice how unused the first, biggest thing on our screens - the desktop - tends to be one of the things we get the least use out of. For some people, it’s a repository for all the junk that has nowhere else to go, building up a mass of documents and icons to become as big and ugly as the mess under the bed. For others, it’s a pristine, personalized picture that must be kept clean to maintain its effect. Either way, we almost always keep our documents somewhere else and launch our programs from a bar or menu.

So I propose we change this thing. KDE 4 had a great idea when they realized that it was no longer adequate for the desktop to just be another folder. They created something called plasma, to allow the desktop to become programmable and widgetizable. Unfortunately, I can’t say their implementation is very clean right now.

I think we should take this further. There is no reason why the desktop should necessarily have to take all the crap that gets put on it - couldn’t we just turn off the “folder” functionality and keep it clean completely? I’d also like some of my programs to dock, like widgets. The IM client, for example, would be a perfect thing to give some desktop real-estate to. Maybe a download manager. Granted, most of this will be covered up a good chunk of the time, but that leaves plenty of opportunity for things that are normally background (BitTorrent, SETI) to put their status pages on the desktop. I bet KDE could do some of that, at least.

I think this could be something bigger, though. I wish Gnome would innovate more in this regard, because sometimes I feel like KDE has all the ideas, and Gnome all the coders. Of course, I will warn that anything you stick on the desktop must absolutely take as few system resources as possible. Developers tend to ignore this, but I notice it when I suddenly have 50 background processes competing for memory and io access. With the multicore systems becoming the norm, however, I think we should be looking at what a computer can do in the background.

Just Say No to the Yes-Box

The greatest cop-out in computer security is leaving it to the user. In the old days, this meant telling people what features of their computers not to use. They gave us email attachments, so that we could never use them for fear of viruses. They put all sorts of insecure features into web browsers so that we’d have something to spend time turning off. Every time the security implications of a feature were not thought of by the developers, responsibility was left to the user to decide how much of their software was safe.

We’ve improved from those days, but not much. Now, the software itself does most of the nagging. Windows Vista is now infamous for “UAC”, the technology which causes the little dialog boxes to pop up and ask if you’re really sure you wanted to do that. Really, really sure? Maybe you want to call your parents and ask if it’s okay?

Most people will click “yes”. Most geeks will tell most people to click “yes”, because we’ve basically given up on teaching the world how to truly make this decision. And so, the box becomes a yes-box, a mere, additional annoyance to an already insecure system. Plus,whenever someone is brave enough to click “no”, it usually results in some essential piece of software failing to start. So we train people to click “yes” every time.

But UAC isn’t the only villain here. For a long time, people have assumed that something being digitally signed meant it was secure. True, from a purely theoretical, technical standpoint, good encryption and signing schemes are nearly unbreakable. But this ignores the human component. The average user won’t notice difference between “mozilla”, “moziIIa” and “mozi||a”. This is why the vast majority of phishing scams use typos and names that look like each other to forge their identity, rather than trying to duplicate a certificate.

It’s time to stop pretending this is a solution. Once again, we are simply passing the task onto the user. Teaching computers to recognize software publishers by signature and question the safety of actions means nothing unless their users know how to interpret these messages. We have to move away from this delusion and back to the real essence of security. The anti-virus/anti-spyware/firewall should be able to determine if something is dangerous; isn’t this why we have those? Granted, there is plenty of room for improvement here, but imagine if we could focus our energies on the real tasks and stop chasing hype?