Friday, December 30

A Brickbat from Angus

Angus riffs on Order and Chaos. Go read it; it's instructive. The references to the Blood God come from the Warhammer universe, in which one faction (Chaos) worships the Blood God and has for a battlecry "Blood for the blood god!".

But that's really beside the point.

Tuesday, December 13

You Wrongheaded Fool: Torvalds on GNOME

Yesterday Linus Torvalds, the creator of Linux, flamed a major user-interface component of Linux desktops (a part for which he is not responsible) for being not configurable enough. He said "If you think your users are idiots, only idiots will use it." (Links to the primary sources are in this Slashdot article.)

I cannot begin to tell you how angry that statment makes me.

You already know how I feel about interface simplicity; the idea that anyone would listen to one of the fourteen people on the planet to have WRITTEN AN OPERATING SYSTEM IN HIS SPARE TIME on the matter of what constitutes a good user interface is laughable. Not only is Linus not an expert on user-interface quality, but his opinions on user interfaces, as exemplified by the quote above, are (1) wrongheaded (2) based on incorrect assumptions and (3) damaging to advancement of Linux. Configurability is, to some extent, important; that said, interfaces that work before their users spend 45 minutes grovelling through dialog boxes are more important. The first corollary to Arthur C. Clarke's law, "Sufficiently advanced technology is indistinguishable from magic", is "Technology distinguishable from magic is insufficiently advanced". I never want to have to think about the user interfaces I use; I want them to melt into the background, diligently working to make my day as effortless as possible. The more time I have to spend thinking about my interface, the less time I have to spend actually doing productive work -- and I'd argue that's true of everyone. The fact is that Torvalds' perception of computers has been tragically warped by thirty years of close proximity to their deepest internals. He thinks it's normal to spend hours customizing interfaces; when he learned computers, you had to do all that stuff yourself, so he developed truly idiosyncratic ways of doing things. He's trapped in his own experiences.

But that doesn't mean we should listen to him. In fact, it's an excellent reason for us not to.

Wednesday, November 30

Puns: Victory

My wife is one of those people who hates puns. You already know about me.

So, when I can get her to laugh at a pun or two, it always feels like a not-so-small victory.

The other day, as we were dressing our baby together, I was noodling one of his arms into his shirt while she was struggling with the other. I got his hand out first, so as soon as it popped out of his sleeve, I said,

"I win!"

That was enough to make her laugh, but I really caught her off guard when I continued with,

". . . the arms race!"

Monday, November 28

Solaris Overview

The comments I've gotten (in person; none on the blog yet) on my previous post have ranged from "WHOA!" to "...what's Solaris?", via bemused rolling of the eyes. Those were from colleagues, university friends, and my long-suffering wife, respectively.

So I figure I should explain a little bit what Solaris is. It's a Unix operating system, one of many. That means that rather than being based (at some level) off the original DOS code, it's based off a different proto-operating system that is technically better-designed but a lot less user-friendly. Sun Microsystems develops it, although they've recently open-sourced the code (which means that anyone can change it now, and they don't have to buy the DVD from Sun to get it). It's only really as of the most recent release of Solaris -- version 10 -- that it runs well on PC hardware; previously, Solaris only really ran on Sun's own SPARC machines.

As a Unix variant, Solaris is a pretty strong one. It's scalable (which means that when you put it on bigger and better hardware, it can take advantage of all the extra processing power it has available), robust (which means it's difficult to crash), and secure (which means it's difficult to gain access to other people's files, or to pretend you're someone you're not). It also shares the advantages of Unix in general -- several of its core design decisions make it much easier to program for than Windows, it's more secure, and (at least right now) it's less vulnerable to worms and viruses.

Right now, Solaris' major competitor for the hearts and minds of the Unix community is Linux. Linux is better than Solaris at being user-friendly, better at integrating new features quickly, and less encumbered by silly executives' ideas of what makes a good operating system. Solaris is better at making big corporations happy with it, and at moving in lockstep with itself so that the whole package works with itself, and you don't have dumb problems where your keyboard driver's latest version doesn't work with the latest version of your motherboard driver, and there's no older version of your motherboard driver that also works with your mouse.... and so on.

So that's what Solaris is! Please feel free to tell me I'm wrong and why, if you also know what Solaris is. I'm sure I missed things.

Sunday, November 27

I'm writing this from Solaris.

It took almost a week, but I finally got Solaris 10 installed and all up to snuff on my laptop. At this point, it almost feels natural.

There are a few warts remaining: I'm using the stock graphics and touchpad drivers, which work well enough but are missing a few key features (hardware acceleration for the graphics, and the side-of-the-touchpad scroll functionality for the touchpad). I'm not entirely happy with the default fonts that Firefox and Thunderbird are using, but that's relatively easy to fix as well.

So on with the war story!

I found, downloaded, and burned to DVD a Solaris 10 image that's a beta candidate for Solaris 10 Update 1. Burning the image under Windows was a bit of a pain (the online community has much more information about burning illegal DVD copies than legal ones; if you have an iso image and you just want to put it on a DVD, you end up learning a fair amount about how to get around the (non-existent, in this case) copy proteciton. Somehow not, I think, what the MPAA and RIAA had in mind when they attempted to lock people out of the format). However, after a single abortive attempt, I was able to get a bootable DVD image, and get to the Solaris install mode.

Installation was actually relatively painless, once I got over kdmconfig's terrible, terrible user interface. The Solaris installer still needs a lot of work in the UI department to be approachable; installing Ubuntu was a lot easier. On the advice of a few friends around the office, I installed in non-networked mode, so I didn't have to know DNS names or NIS setup or any of those goofy things. It just asked me for a hostname and a timezone.

Once I had the bits laid down on the drive, with grub in place and set up to dual-boot Windows and Solaris, the first of the Moments of Truth arrived: time to see if it boots.

It did.

Into 640x480, even though the installer had correctly detected and used the laptop's native 1400x1050 resolution. Without a way to talk to the Windows install, where a bunch of useful files were. With neither wired nor wireless networking functioning. And without sound or any battery management. So I tackled those problems in the order I've given them above, which also happened to be the order of annoyance for me.

Video As it turns out, the installer uses Xsun as its X server, instead of Xorg (which is the default postinstall); while kdmconfig can do autodiscovery for Xsun, it can't for Xorg. In fact, xorg.conf was absent from /etc/X11 entirely, and it was using the internal defaults which are, of course, pretty conservative. I was able to launch a terminal window (I guess I could have dropped to console mode) and get to /usr/X11/bin/xorgcfg which let me specify some more sane values for my Hsync and Vsync without worrying about arcane details of xorg.conf syntax, and then log out and restart Xorg. No change! still 640x480. So I checked what xorgcfg had actually done in xorg.conf, and found that it had commented out the H and Vsync entries it put there, in the hopes that the monitor's DDI subsystem would be capable of sorting that stuff out on its own. It wasn't, though, so I uncommented the entries and restarted again -- success! Native resolution, persisting across reboots, without instability.

Windows Interoperability: The windows side of the laptop was set up as two partitions: an NTFS boot partition, and a FAT32 partition helpfully called SHARED. Solaris doesn't come with an ntfs driver, but it does have the pcfs driver that's capable of reading and writing FAT16 (which nobody uses anymore because it'll only do 2GB partions) and FAT32. Mounting it was just a question of experimenting with mount(1M), with the mount(1M) and pcfs(7FS) man pages open. Another point of interoperability that amazed me to begin with was the fact that when I stuck a FAT-formatted USB thumbdrive in the machine (actually to transfer some networking stuff over to Solaris), it Just Worked -- automountd noticed it, mounted it, and helpfully put a link on my GNOME desktop. It Just Worked! It was more than a little creepy, and I couldn't help but wonder whether it was going to corrupt files or otherwise cause problems. But it didn't (as far as I could tell).

Networking: I was expecting networking to be an ordeal of legendary proportions. It seems to be a place people get stuck in a big way, and it's compounded by the fact that, until you get internet connectivity, it's impossible to find solutions to your problems on the machine that's actually having them. It was surprisingly easy, though, not least because of Inetmenu. After installing the package and setting up RBAC (all described in the documentation), just running the GNOME applet automatically connected me to work's network, authenticated properly against the NIS and everything. And I thought the thumbdrive thing was cool! It Just Worked, almost as if I was in Linux!

Getting wireless set up was a bit more difficult, but that wasn't really Solaris' fault. I had only gotten the wifi router 24 hours before, so I was trying to figure out its web UI, the Windows wireless networking setup, and the Solaris wireless setup all at once. Also, unlike the wired card, the driver I needed wasn't stock -- I had to get it from the same OpenSolaris laptop community site I linked above. Also, the wificonfig utility that I used to set my WEP key and configure the wireless connection was a bit flaky, and reported failure when I ran it alone on the command line but seemed to work when inetmenu ran it. Oh well -- it works, and I'm actually typing this wirelessly from my living room right now.

Sound: After the wireless triumph, I was able to get some software installed and make the place feel a little bit more like home. I snagged Blastwave's pkg-get, and downloaded firefox and thunderbird and sudo, to make my life easier and not have to su to root all the time to do configuration. I also started looking around the web to see what the deal was with sound, and found a few places that had drivers I could use. I installed them, but I couldn't get them to work -- I knew that they were doing *something* though, because after I installed them and reboot(1M)ed, the machine would lock up when either Windows or Solaris tried to initialize. Eventually, I discovered that reboot(1M) and shutdown(1M) are NOT THE SAME THING, and that I needed to do the latter and not just the former to get the driver to load properly. Once I did that, I had sound!

Battery: Solaris' power-management functionality for laptops is pretty limited. It can't do the dynamic performance tuning that Windows can with the Pentium M, and scaling screen brightness and such on the fly according to battery usage is beyond it. That said, there are some beta programs on the community site for a battery utility and GNOME tray applet, and I'll take what I can get. I get about an hour and 40 minutes of battery life out of Solaris on a full battery, probably more if I can figure out a way to dim the screen and scale the CPU back manually. That's OK though -- the times when I want to run it without a battery pack are actually relatively few and far between.

I'm sure I've glossed over some of the difficulties I had, and that there are configuration steps that I've missed in this little war story. Drop me a line if you're interested in more details, or if you want to install Solaris on x86 -- I feel confident I can solve most installation problems, now.

Phew! Now I can get back to real work!

Thursday, November 24

Mutton Bombs

Yup.

I don't know that I can think of a single thing that'll top that. Mutton bombs.

Wednesday, November 23

Hipeponymous: a Canoe metareview

The Tragically Hip have released their first ever Greatest Hits collection, titled Hipeponymous. I haven't seen/heard the 2CD, 2DVD monster set yet; I have, however, read Canoe's review. I'm mostly happy with it, with a few minor exceptions: The review text feels lukewarm to me, which is a bit at odds with the 4/5 star rating, and I disagree with the author's desire for a more intrusive look into the musicians themselves rather than the band itself. One of the reasons I like the Tragically Hip is that the personalities behind the band are so self-effacing; the band is about the band, not about its members.

The review was certainly effective in making me want the album; looking at the track listings and the descriptions of the DVDs, I've already made plans with my partner-in-crime Pharaohmagnetic to (as he so poetically put it) "drink deep from the spirit of the Hip and the spirit of the Scots loch. You know. Rock and booze. MANLY!"

I'd give this review a 3/5: the presentation is solid and it hits all the major points, but that sparkle of wit that makes a good review great just isn't there.

Laptop Agony, Laptop Ecstasy: *nix on the Toshiba Tecra M2

This article is about how I have tried, with mixed success, to install Ubuntu Linux and Solaris 10 on my Toshiba Tecra M2.

That line is so that people can find this post if they're looking for another war story.

This is the first line of the actual experience! When I got my laptop, it came preloaded with Windows XP, modified by the IT department (it's a company toy) to their exacting standards of corporate ridiculosity. It also had more than half the hard drive set up as a Linux partition, running a relatively strange distro loosely based on Suse.

I considered it a writeoff from the beginning, and blew it away in favour of Ubuntu. I'd heard good things from /. about the Debian-based, end-user-focused, fanatically-supported distro, and I'd wanted to try a Debian flavour for a while. The Ubuntu install was totally painless. Creepily so, in fact; I was expecting to have to do a lot more fiddling to get things to work than I did. Ubuntu is a GNOME distro, which is fine with me; they offer KDE packages, but I'm not familiar with KDE so I haven't tried them. The Synaptic package manager is as creepily easy to use as the installer, and within 20 minutes of logging in for the first time I'd downloaded a few new packages and updated the kernel and libc and openssl and a few other things I don't remember. All I had to do was point and click.

Of course, once everything was stable it was time to break things. installing a better nvidia driver was another Synaptic step, along with some conf file edits for the settings manager program. Hardware acceleration was noticeable, too; it's not often a single software update has such a noticeable effect on performance, but this one did.

Then, I jumped off the deep end and tried to get TwinView, NVidia's dual-monitor system, running. That took a *lot* of hand-edits to xorg.conf, but I was successful in getting it mostly right after a couple hours. Google, the ubuntu forums, and the nvidia linux driver forums were all very helpful; it was really a question of getting the correct parameters on the driver. Having some familiarity with TwinView from the Windows side was helpful too, so I didn't have to tab back and forth to the documentation to figure out what the options meant.

Once that was up and going, I started fiddling with the touchpad driver -- Ubuntu Blog has some good info. Haven't quite got that working perfectly yet, but it's usable; I can use tap-to-click, but not tap-hold-to-drag. More on that in this space if I get it working.

But that might be a while, since I'm going to be blowing the Ubuntu partition away and replacing it with (shock! horror!) Solaris 10.

Yeah, that's gonna be a beating. I'll let you know how it goes.

Wednesday, November 16

It's a good thing I like being scared.

Dear sweet lord above.

Charlie Stross has mastered a kind of cerebral, analytical approach to horror to which I am very vulnerable, in an abstract kind of way; His Laundry horror stories have yet to fail to make me look over my shoulder for days afterward, and his political analysis seems not to fall into the standard British-scifi-author leftism that annoys me so much about Banks and his ilk. I think it's the plausibility that does it.

And today's article, linked above, is a fine example of his political analysis.

Monday, November 14

The Agony and the Ecstasy of New Hardware

Yay! I got a laptop.
Oh god. I got a laptop.

So now I can finally get around to getting wireless in the house -- and get yelled at for using it. Now I can finally work in the park -- and get dirty looks for being one of those jerks that brings his laptop to the park. Now I can work on a powerful, roomy machine -- and I have to reinstall all my apps on the new machine. Now I can play with new hardware toys like a touchpad -- and have to reinstall the drivers 4 times in a single day because of spyware interactions.

It goes on, but you see where I'm going.

It's an underwhelming, exhilarating experience, new hardware is.

Tuesday, November 8

...and while I'm here

Civilization IV was released this week.

Most of my Civ experience is in Sid Meier's Alpha Centauri and Civ III. I'd flip from one to the other, liking parts of both. What I really wanted was a game that had it all -- civ3's culture mechanics and sense of sweeping history, and SMAC's customizable governance and prettier graphics.

Civ IV delivers, and more.

The new gameplay mechanics are enough to make it more than just a graphics update to civ III, which is really nice. And the gameplay's as addictive as ever. If you're a fan of the genre, it's a good buy.

Holidays

Boy on a Stick and Slither hit one out of the park again this week.

I'm not sure I agree with the sentiment -- I don't dread the holidays, except for the advertising excess and department-store christmas trees in November -- but the execution is pure gold. If I were reviewing it for real, I'd say something like
"Steven L. Cloud's Boy on a Stick and Slither juxtaposes childlike art with a biting, wry style of humour. Neither, on their own, would warrant attention -- but the combination is guaranteed to draw a smile, if not a chuckle, from even the most jaded reader."
Shit. I guess I just did.

Monday, October 17

An Everyday Miracle

I'm brimming over with caffeine this morning, attempting to hold my eyelids open long enough to deliver something that does more than just look pretty for a demo I'm scheduled to give this afternoon. But I had to take a moment to decribe a moment of awe I just experienced.

I'm sitting at a desk in front of two monitors. They're connected to different computers, but I'm mousing back and forth between them using Synergy. One of them is Windows, another is a Unix variant. On the Unix box, I have 12 terminal windows open, variously monitoring log files, debugging output from windowed applications, and just hanging out somewhere on the filesystem. (at least two of them are redundant, but I can't be bothered to figure out which and close them.) On the Windows box, I have a couple of different IDEs, mail, two instant messenger clients, a requirements spreadsheet, and 2 terminal windows, connected to different machines. And a VNC session to a third computer across the room, on which I'm running another, different IDE.

Almost every application I'm running requires access to the network to be useful. Some of them require a lot of access to the network. All of them are currently working flawlessly -- until now, I hadn't thought about the bits on the wire for days.

I guess there is some hope for the impatient, lazy, and stupid among us.

Wednesday, October 12

Impatient, Lazy and Stupid

We all are.

Every single one of us. Perhaps not in every way, all the time, but certainly most of the time. It's not a bad thing, it's human nature. It's a result of the incredibly, stupendously complex world we live in, and we ignore those three defining characteristics of humanity at our peril.

One of the core tenets of macroeconomics is that specialization is one of the fundamental driving forces behind economic growth and progress. With the partial exception of children, humans can't really become more efficient in one sphere of effort without becoming less efficient in another. It's not zero-sum, though; you gain more than you lose (usually). Especially if you live in a community (or tribe, or chiefdom, or nation state) where other people are specializing in things you aren't. I'll learn to bake better bread with less waste, and you learn to grow better wheat with less effort, and then the two of us can feed a village rather than just ourselves.

An obvious consequence of this is that if you ask a baker to farm, he's going to be worse at it than someone who knows how to farm *and* how to bake. And so it is with most everything in Western society -- I can program computers well, but I have no idea how to weave cloth, or fix cars, or make shoes, or farm, or plan road routes, or cut hair, or take photographs, or make paper, or or or or or.....

So when I interact with an automobile, I'm stupid. I know that the right pedal is the gas, the middle one's the brake, and the left one's the clutch, and I went through a whole bunch of classes to learn how to operate cars. (I know the basics of internal combustion engines, but mostly cars are a mystery to me.) As a consequence of my stupidity, I'm also lazy. I want it to Just Work, I don't want to have to learn all sorts of weird rules about what pedals to press when. Witness the rise of the automatic transmission -- it simplified the operation of vehicles, because now Joe Sixpack doesn't have to care about RPM. He can just put the car in gear (tell it "I want to go soon") and then press the gas (tell it "I want to go NOW!"). I love it -- one fewer pedal to press, and to have to remember how and when to press. My laziness rejoices because I have less to do. As a consequence of my laziness, I'm also impatient. "god dammit, what's the problem! I want to GO NOW!" Any disruption to the functioning of my automobile is treated with frustration and petulance, since its internal workings are basically magic to me. And that's how I like it.

So why am I going off on this? Lately, I've been fighting with my tools at work. Programs that are supposed to be snappy aren't, and systems that are supposed to be stable are crashing. And it's a major, major disruption, even though if I think about it I can usually divine the cause. It takes me out of whatever zone I was in, and forces me to think about stuff that should be automatic. Because I'm stupid, it takes me a long time to switch gears and solve the problem; because I'm lazy, I don't want to do it; because I'm impatient, I resent the time it takes. Come to think about it, I'd much rather rant about this to you, gentle readers, than actually solve my problems.

There are general lessons here to be learned for us software- and game-developers, too. Think about your users as impatient, lazy and stupid and you'll build a better product. Whatever is Quickest, Impatient people will find. Whatever is Effortless, Lazy people will use. Whatever is Simplest, Stupid people will comprehend. So the point is to design your user interfaces, your user experiences, so that the Right thing is Quick, Effortless and Simple. Because the QES thing is what ILS people do -- even if it's not Right.

That's why people minimax in MMOGs -- The Quickest way to get experience (the abstract unit of progress that MMOGs use), on the aggregate, is to grind. The most Effortless way to get experience is to find the monsters that have the best risk/reward ratio. The Simplest way to get experience is to do the same thing over and over, for hours. It's also one of the roots of the success of some of the truly excellent software that's out there. Joel spends a bunch of time making sure that what I want to do is the easiest thing to do, when I'm in FogBugz. The path forward is clear, no matter what step I'm on. Blogger's BlogThis! popup, into which I'm typing now, is clearly laid-out. When I hit Publish, it's going to publish this to my blog. The iPod's interface is good -- it's like it learns from me, intuiting what I want rather than me having to learn what magic incantations I have to go through to force it to respond. All of these examples work with, rather than against, my natural tendency toward impatience, laziness and stupidity.

I wish everything was more like the cream of the crop.

Monday, October 10

Metapuns

Puns. Some people love 'em. Some people hate 'em.

Me? I love metapuns. That is, puns involving the word pun. Here are a few to try at parties. If the topic of puns comes up, I usually rattle these off one after another until even the most hardened pun-hater is won over.

  • Get thee to a PUNnery!
  • This is cruel and unusual PUNishment.
  • I should be locked in a PUNitentiary!
  • Hot cross PUNS!
  • I have a feeling I'm about to get PUNched!
  • Uh oh - PUN away! PUN away!
If people complain, simply inform them that these aren't puns - they're metapuns. Because that way, you can cap off with,
  • I never metapun I didn't like!
Yup.

That was a metametapun.

Saturday, October 1

Monday, September 26

Two Simultaneous Mistakes

Britt Blaser is a pilot, among other things. So he blogs about aviation stuff some days, and today is one of those days.

The post is about a JetBlue plane that, due to bureaucratic risk-minimization, was not able to take the most sensible course of action when a mechanical malfunction happened -- instead, it put its crew and passengers at more risk, because the people in positions of authority on the ground didn't want to make the decision that would result in them having responsibilty for whatever calamity could have (but didn't) happen during landing. Britt relates a few other related points on bureaucracy and its limitations as a mechanism for efficient collective action, but the most interesting part of the post for me was this quote:
it's rarely the initial problem that bites an aviator in the ass. It's the second problem, combined with the first, that then spins off harmonics of woe and wisps of chaos.
Even leaving aside the wonderfully poetic turn of phrase there -- harmonics of woe indeed! -- that's a beatifully true statement. Most systems are tolerant of disruption along one axis at a time; after all, when engineers build something they typically think about the common individual failure modes and account for them in the design. Natural systems exhibit the same characteristic. Because selective pressures occur individually most of the time, constellations of resilience usually take longer to evolve.

When two things go wrong at once, that's when the shit really hits the fan.

Thursday, September 22

Good Advice

It's a terrible URL, and it's a worse title, but "hugh macleod" at www.gapingvoid.com said some pretty cool stuff about a year ago on how to have smarter conversations. It's good advice, and an interesting piece; his point #6, "Ruthlessly avoid working for companies that think they know better than you", struck me as particularly non-obvious. That said, I understand exactly what he's talking about. It's hard to have smart conversations, to advance the state of the art, in an environment that's not centred on doing so.

What I'm not certain about is whether that situation -- your employing organization thinking it knows better than you -- is discernible from personality conflict between you and your management. Sometimes organizations do know better than you, because they have experience you don't. Sometimes that experience isn't obvious at first glance; sometimes it's baked into processes that are there to make it difficult to do the easy, but wrong, thing. Is that conflict resolvable? Should Hugh have made a distinction between companies that think they know better and don't and companies that think they know better and do? How does a peon go about determining which case they're dealing with?

John Unger's comment on the post had a Quotable Quote in it too, on the subject of bathroom graffiti: "there's a disconnect between the idea of seeking wisdom and finding it on the shithouse wall."

Tuesday, September 20

Digg proves its worth: Water is Weird

Rands introduced me to Digg last week, and it was cool enough at the time that I put their all, science, gaming, and tech feeds on my list.

Today, it proved its worth; the top link of the Science feed was 41 Anomalies of Water. I had no idea it was so weird!



read more | digg story