Ubuntu’s Hoary Hedgehog release; Mutual obligation

Ubuntu’s Hoary Hedgehog release

I upgraded from the stable Ubuntu to the development version (due to be released in April as, I believe, 5.04) on the weekend. So far I haven’t actually noticed very many dramatic changes. Booting is marginally faster. There are now suspend scripts that don’t work (well, for me, there’s positive feedback about them in general). The default fonts look different. Otherwise everything seems pretty much the same.

One thing I was reminded of, particularly when upgrading my workstation which has such a slow disk that the UML server that runs puzzling.org can install packages faster, is that desktop Ubuntu systems have all the Python development libraries installed. It’s nice that they’re all supported, but I’ve developed using Python as a primary language for four years or so and I’ve still used only five of those libraries (more once Twisted splits into packages…). I’d be happy to install them as needed, just like I would gcc.

Mutual obligation

Alignments of the stars this week have me going to a meeting at SLUG on Friday to try and organise a community program that tries to get local volunteers together to work on Free Software. Why add this layer between local volunteers and Free Software, given that most projects have open development communities?

Well, there are a couple of reasons. The first is that to receive unemployment benefits in Australia you need to fulfil a ‘mutual obligation’ requirement in which you seek work, train or give back to the community. Setting up a local community group/non-profit will allow people on the Newstart allowance to work on Free Software (and docs and bug triage and mailing lists and…) as part of their mutual obligation. The second is that there is a group of somewhat nebulous size who would ‘love to help out’ but aren’t for whatever reason suited to jumping into new communities and offering their work up. Having a group set up to specifically push them into projects may help here: it will be interesting to see.

This is something that’s been in the background of my thoughts for years now: working with people who aren’t used to the standard model where you just start doing stuff; or the other standard model where you hang out on IRC for a few months until people know you’re not an idiot, and then you start doing stuff. This third group is the set who ‘need an invitation’, if you like.

Google adds a ‘no-follow’ tag

I haven’t seen this mentioned in many places at all, perhaps everyone follows the Google blog?

Google has added an unofficial rel attribute value to the a tag that their indexer will know how to understand: rel="nofollow". Using this tag as part of a link will say to Google "I am linking to this page, but that does not mean that I think its rank in your search engine should be increased."

Why are they doing this? Well, if you haven’t heard about comment spam this might not make sense to you, but many popular weblogs and wikis are continually hit with people leaving comments like "get your discount viagra here" with a link. They sometimes get hit so much their bandwidth limit is reached or their server crashes under the load.

People occasionally ask "Does this really work? Sure it appears on the page, but it seems even less effective than email spam. People from my rightist libertarian feminist discussion board have Viagra suppliers already! They will ignore these dumb comments you leave." And that’s all very well, until one day you get hit with 15000 spam comments in a single day and have to turn comments off.

The answer to "does it work?" is suspected to be: it works, but not like you think. While they probably would think it’s a bonus if your weblog readers clicked, you know who they really want to ‘click’? Google. Why? Because Google counts the number of links to a website as a measure of how ‘good’ that website is as a search result. If they can add their link to enough pages (including yours, through your comment form), then zooooom up the search results they go.

Anyway, this tag is Google’s attempt at an answer. By marking URLs provided by commenters as no-follow, you can say "Dear Google, I don’t trust this link, so neither should you. For popularity purposes, this link never happened, OK?" Ideally, it will remove the spammer’s motivation for posting on weblogs. (The problem of wikis is much harder, since all the content is user created, it’s not really possible to mark out bits of it as ‘Google good’ and ‘Google bad’.)

Clarification re Ubuntu and compilers

Some questions imply that I wasn’t terribly clear about this, so now I will be clear: Ubuntu has supported binary gcc and g++ packages. You can install them via apt-get/aptitude/synaptic. (By the way, on Debian systems I use aptitude now because it especially marks "packages that were only installed because I installed another package that depends on it" and automatically removes them when nothing depends on them any more. Even better than deborphan.) It’s probably easier to grab the build-essential package though, which drags in those and make and a few other things as dependencies.

The ‘problem’ with the compiler is not that it is not packaged and supported, it’s just that if you whack a CD in your machine, choose the default install, and then log into your brand new Ubuntu machine, you will find that the compiler is not yet installed.

This is not something I personally consider a problem, possibly because I’m a Debian user and also because while I have tried the RPM distros I came to them rather late anyway (RH8) when apt-get like tools (yum, apt for rpm) were not far away. I’m very used to the idea that software that’s not installed yet is just sitting in an archive or on the CD somewhere for me waiting for me to use a nifty tool to download and install the package. (As for satisfying dependencies of packages, my automatic reaction on any distro whatsoever now is "what’s the apt-get equivalent on this one?" It pretty much always has an answer now too.)

It appears though that some people don’t think this way. They think "either it’s on the computer at the end of the install or it’s a major disaster involving downloading the packages myself and resolving the dependencies by hand or it’s a super-major disaster involving downloading the gcc source and trying to bootstrap a gcc compile." They don’t imagine this fourth option where it’s not on the computer yet, but hey, it’s just there on the CD waiting for me to type "aptitude install gcc". (Actually, there are people who do realise this and just hate the idea, but the entry wasn’t about them.)

And these users are not a good fit for this particular design decision of Ubuntu’s. Which is a pity actually, because I thought it was rather a good one myself.

Python in Sydney; Ubuntu among the Python programmers

Python in Sydney

Alan Green organised a Sydney Python Meetup last week. I’m pleased someone stepped into this slot: I was organising Python meetings a few years ago, ran out of energy during honours and was never really inspired to start it back up because meeting attendance never got above five or so. I hope Alan has better luck: he got fourteen for the first meeting.

Alan has given a full account of the talks, so I’ll just note one thing: the presence of Tim Churches, an epidemiologist from the New South Wales Department of Health, who was behind the open source release of NetEpi. If any of the state government’s employees would like to follow suit, it took Tim 18 months and 37 memos to get the release past the government. Beat that!

But the real reason I was particularly interested to meet Tim was that he’s the first example of a phenomenon Anthony Baxter tells me he sees all the time: the professional who just needs a dab of programming and chooses Python because it’s ideal for people who aren’t specialist programmers. Apparently it’s increasingly popular among scientists in particular.

Ubuntu among the Python programmers

I wanted a pressed copy of Ubuntu rather than having to download one, so I went to get one for free. They helpfully informed me that I might as well get a bunch since the cost of shipping massively outweighs the cost of CD production. So I got 10 i386 CDs and 5 PowerPC CDs. I was at a loss for what to do with them — I wore out my parents’ tolerance for installing stuff on their machine when I was 12, and most of my non-geek friends are now canny enough to do the "only if you install it and fix it for me whenever it stuffs up!" trick with proposed Linux installs — so Andrew took them along to the Python meetup and gave them away.

Alan was most impressed that the LiveCD worked on his laptop — alas that with the 4.10 release (Warty) of Ubuntu that’s apparently absolutely meaningless when answering the question "will the installer work?"

Tim was pretty dismissive of Ubuntu though on the "I tried it and it doesn’t even have a compiler!" principle. This isn’t actually true — gcc isn’t installed by default, but it’s supported and I believe it’s on the CD — but since it cost Ubuntu a user I’ll have a closer look at why I think he thought this.

I wasn’t really party to it (I joined the pre-release test team after they decided not to include a compiler in the base install) but as I understand it, the idea was most users won’t want a compiler in their install because most users aren’t programmers and the idea behind distros like Ubuntu is that you shouldn’t need to compile software for it. Further, and this seems to be key, people who want the compiler will know where to get it. Or I assume that was their premise, perhaps with the addition of "developers will read the documentation." (I’m not sure though, "where is gcc?" hasn’t made the FAQs.)

Anyway, it turns out that this isn’t the case. There are developers who, if the compiler is not installed by default, do not think to try and install it because they have no inkling that it might be there. My suspicions about the reasons:

  1. they aren’t former Debian users who are used to their distro having every conceivable piece of Free Software available in a centralised archive: what the installer offers is what there is; and
  2. they are not expert Linux users, by which I mean that they don’t have server sysadmin or security skills. It’s quite hard, in fact probably pointless at this time, to program on Linux without knowing a shell reasonably well, but it is possible to program on it without knowing much about how software gets installed on it. You put a CD in, perhaps select "development workstation" and it installs stuff. When you want newer software, you do a new install. When you want different software you might look at a different distro.

I might be reading too much into this, and in any case developers, whether power users, sysadmins or none of the above, aren’t the Ubuntu market, but assuming that anyone who programs using Linux has Linux expertise above that of a desktop user is probably wrong.

Fixing the Planet <h1> <h2> evil; Bad SLUG, no slug biscuit

Fixing the Planet <h1> <h2> evil

I notice that Andrew’s recent entry has triggered all kinds of evil on Planet SLUG and to a lesser extent on Planet Twisted. The nature of the evil is two-fold:

  1. RSS feeds contain an unrestricted subset of HTML tags, therefore there is a collision between tags the maintainer of the planet wants to use in their own content that goes around the blog entries, and tags the entry authors use.
  2. HTML doesn’t really do sectioning. At one point I heard XHTML2 was going to have section tags with h tagged heading embedded within them. This is a better idea than having the author of pieces of content needing to know what level of heading tag to use to fit into sites designed by someone else.

The solution I’m thinking of using on planets I maintain will apply special CSS properites to headings inside entries to make them less prominent:

 div.blogbody h1, div.blogbody h2 { font-size: large; text-decoration: none; } 

I should look up how to reduce their prominence to screen readers too. Alas, the fundamental semantic nastiness of having the following in the HTML will remain:

 <h2>Blog Entry title generated by Planet software</h2> <h2>Blog entry <em>sub-title</em> coded as h2 by content author</h2> 

Bad SLUG, no slug biscuit

I think Planet SLUG is still sending the character encoding as iso8859-1 while they’re actually sending utf8 content. (eg the character ‘รณ’ in Andrew’s entry)

Testing; Online appeals; Ambition

I haven’t even being doing much tech stuff over the last two or three weeks…

Testing

Well, that’s entirely false. I have a new job. A fulltime programming job. In Python. I only just escaped signing a "we own your brain" clause which would have meant that I would have nothing to say because it would be owned. But it was modified and I continue to own my brain during off-hours. And occasionally I will continue to use them for tech stuff.

Tech-wise, the brains’s been busy with thoughts about test driven development, which I’ve never really done before. But I’ve spent large chunks of the last fortnight updating tests to work with modified code. I’m beginning to wonder whether optimally some other programmer should always write the tests for your code. But this may be unsellable: it takes long enough to write tests for your own code.

Online appeals — a review

Andrew and I gave money to the tsunami appeals: Andrew to CARE Australia and me to the Australian Red Cross. (As a side-note, why I am so susceptible to guilt trips? I keep seeing "only ten thousand people have donated through Amazon!" guilt trips around and falling for them. Note to self: failure to donate through Amazon is not any meaningful kind of failure.)

Within one second of my provision of my CC details to those nice folks at the Red Cross an ‘official receipt’ email was on its way to me thanking me for my donation and telling me how the Red Cross is intending to use the funds. Nearly a week after donating to CARE, Andrew’s still waiting for them to actually process the donation and bill his card. (I rather suspect their online billing handlers too the Christmas-New Year week off…)

Ambition

It’s time I had some. I’m close to declaring 2005 to be the year of ambition, much as 2004 was an explicit break from it.

Brickbats; Job hunting

Brickbats

Oh what the hell, it’s been over a week. Brickbats to all those questions people ask on mailing lists that never get answered. About half my technical problem Google searches find endless questions that match my problem and have zero replies. (Of the rest, a quarter have no relevant matches and the rest have answers. God bless that 25%, it’s what keeps people’s snide "http://www.google.com/" answers in business.)

I’m trying to play a particular DVD at the moment, a DVD of Andrew’s and my first scuba dive which we bought for some appropriately ludicrous price. It’s, unfortunately, not a known good DVD because we haven’t had access to a known good player to test it on. A DVD that doesn’t work under Linux can hardly be called ‘known bad’. At present attempting to read it (or even insert it, thanks to the automounters) causes all associated processes to block on a minute long read timeout. This is not a problem I have with other DVDs, but I think all my other DVDs are region 4. Region locking is currently a bit beyond my ken but it’s the only reason I can think of aside from the DVD being bad.

We do actually have a DVD player authorised by The Man, but sometime during the three months we were away the drawer got jammed. (And my BIOS lost the primary IDE channel, and Andrew’s video card started failing to respond on most boots. Technology gets lonely.)

Job hunting

I haven’t started (I’ve only been back for two days) and I need to. Why I am always cursed with a December unemployment?

Bouquets; Brickbats

Bouquets

I still don’t like online editing too much, but here’s why I love MediaWiki anyway:

Maturity
As far as I can tell, the software is mature enough to have moved well past problems with doubly or triply escaped ampersands and so on. This sounds fairly trivial, but a lot of wiki software is still in the land where you need to go back through a page every time you edit it and change all occurrences of &amp; to &, lest they be escaped to &amp;amp; on the next page submit! Similarly, I’ve never encountered problems with entering non-ASCII characters into a MediaWiki page.
Talk pages
Every MediaWiki page has an associated talk page, which it’s customary to use for criticisms, meta-discussions, and todo lists. (Not for first drafts though, these are wikis.) It’s amazing how productive I find the ability to make notes of my decisions, rather than silently worry about them.
Edit conflict notification without page locks.
Rather than giving an editor a time-limited lock on a page, a MediaWiki site will let two people start editing a page. However, if the page changes between you beginning to edit it and you submitting your edit, MediaWiki notices and presents you with two input boxes: your edit and the new version of the page. I can see how in some circumstances edit locks are nicer than requiring hand merges, but I generally prefer the latter.

Brickbats

I wasn’t going to do this after the last couple of times, but boo hiss to St George and Optus for having pages incompatible with my browser when they used to work. In the first case at least, it’s due to a buggy commercial browser detector.

Also, a brickbat to Australian English vowels for making it hard to spell. We use the neutral so much that I find it very hard to choose when to use ‘a’ versus ‘e’ in unstressed syllables.

Bugs

I’m averaging about two bug reports every time I try and use Nautilus at the moment: in particular, I have not ever successfully gotten it to talk ssh to a remote server for more than about a minute. I get a lot of ‘seems perfectly stable to me’ replies from upstream, and a lot of ‘yeah, doesn’t everyone know that Nautilus/gmone-vfs don’t really do SSH?’ from everyone else.

But it doesn’t matter anyway, because apparently every time I fill in one of those helpful "your application has crashed, inform developers?" dialog boxes, the bug reporting tool just eats the report. And this is a good thing, because it saves them from ‘otherwise useless’ bug reports.

So I think I’ll save my breath to cool my porridge from now on. In particular, the next time I see someone talking about how Nautilus is amazing if only all these CLI bound nerds would consider using the mouse, I’ll have a quiet laugh to myself and continue using scp, rsync and unison, which I have never ever ever seen crash and file an otherwise useless bug report in my head.

Wednesday 10 November 2004

Using my previous entry as a jumping off point, I’m here to tell you a long and convoluted story about why, as a bug reporter (among other things), I will with but the flimsiest justification tend to regard myself as either put-upon or an idiot. In the spirit of Mark Pilgrim’s morons and assholes division, I bring you two user archetypes: the Thug and the Wimp.

I’d present Thea the Thug to you, but I think you’ve already met her. She emailed you one time while you were sleeping. The subject of the email was ‘PLEASE HELP — URGENT’. It’s possible the body described a genuine bug in your project. It’s just as possible that she was asking something unanswerable like "how can I get a list of email addresses?" It doesn’t matter anyway, because an hour later she sent another mail or two denouncing you for not answering her first. She’s got a range of tactics. She might have claimed to be representing the silent majority of users against the tyranny of the developers. She might have asked you how you expect to make your operating system work for ordinary people if you don’t even answer their emails. She might have just randomly continued asserting vague things about how your program should work, or about design principles, or security. She feels very put upon that you didn’t reply, especially since she’s smarter than you, and also she’s doing you a favour by using your program. You wouldn’t hurt a user now would you?

In fact, you’ve met Thea and other Thugs many times. On mailing lists. In bug reports. On IRC. If you’re particularly unlucky, in the street. You know her and her ilk backwards and forwards. One day, or many days, you snapped, and wrote anything from a blog entry to a howto lambasting users for their ill-placed sense of entitlement, their rudeness, and their over-use of capital letters. In some cases you edited it down into a neutral piece on how to get replies on mailing lists. In other cases, you posted the rant.

Now, meet Willy the Wimp. Willy’s just read your piece on how to get replies on mailing lists and he thinks you’re talking to him. And what’s more, you’re saying the same thing that everyone says to him. Well, you’re mainly saying what he says to himself. Bug reports, he reads in your piece, are hard to get right. If you get them wrong, which you probably will since they’re hard, you will annoy very smart people who have a lot of demands on their time. And if he doesn’t get it right he will look like an idiot. And you’ll never see him again, because he won’t do the report now.

You’ve probably met Willy too, but a bit less often. In their most common variety, Wimps are your granddad, the one who’s just bought a very expensive computer in the fear that he’s getting behind. And further, his next door neighbour has a lot of computer trouble. One time a letter to her niece just disappeared. And she was doing what she always did, she swears! And sure enough, when Granddad Willy uses the computer, he finds out that his very expensive new possession moves things around (possibly because his mousing skills aren’t good, but he doesn’t know that). They are tricksy. They are uncanny. They are not for the likes of him.

However, that’s only one variety of Wimp, the archetypal archetype if you will. And he’s probably not reading your piece. But there’s a Wimp who might be.

This new Wimp is a contradiction in terms. This Wimp actually uses computers a lot. He not only holds a computer science degree, he holds one with quite good results. He has a computer related job. He’s got geeky interests. And he has a dirty little secret: when the computer doesn’t work it’s his fault. It could walk like a bug, talk like a bug, quack like a bug, and carry a big "Hello I’m Buggy the Buggy Bug!" sign, and his first thought on meeting it would be "I suck at computers. I’m a dumb person."

It’s quite likely this Wimp can program even, although three things are likely to be true. The first is that it isn’t his hobby, because if you think other people’s programs prove you’re a dumdum, your own programs square the effect. The second is that he learnt to program only at university or on the job. The third is that he’s spent a lot of time with people who are better programmers than he is.

These Wimps are shy. They’re often in the closet, confessing their hopeless incompetence only to their bewildered partners (who generally perceive them as perfectly competent and often try and explain this), who are the only people you can say things like "but I’m stupid! It’s my fault!" to more than once (and not too many more times than once, mind you, either).

Usability testers are the general exception. They see Wimps all the time. They have tapes of them crying and saying things like "Please, don’t worry about me. Your program is great. I’m just dumb. I’m so sorry." (Really, they do.) Every so often, they write textbooks and try and jerk Wimps into the light by saying things like "users will tend to blame software failures on lack of skills on their part," but their gentle warnings scatter like ashes in the face of the Thugs who blame software failures on the world’s failure to listen to their prophetic tones.

Even so Wimpishness is more common than you think. Academia, for example, is absolutely infested with people who are just waiting for someone to knock and say "Oh hello, did I mention? We’ve noticed that you’re the dumbest person in the department. What on earth did you think you were doing? Pack up your stuff and be gone by noon." And there are an awful lot of computer users who think exactly like this, all the time.

Which is not to say that Wimps are great people, mind you. There are some places where the cultural norm is to lead with "I, a lowly worm, grovel at the feet of my betters and humbly present them with this small critique of their program and beg them to use the whip sparingly," but in most of the circles I move in this kind of thing annoys people and it’s seen as a roundabout way of asking for compliments in the reply and an especially tacky one at that. (And let’s face it, compliments are exactly what the Wimps want, again and again and again. Well that, and for their computers to work.)

No, the trouble with Wimps is that it’s almost impossible to speak softly to them and fend off the Thugs at the same time. I understand this. I really don’t expect people to reply "yes, this is definitely a bug, don’t worry, I think you’re very smart" to bugs I file. I really don’t. But at the same time, every time the program crashes, I think "I’m a dumb person, what am I?" automatically. And in situations like that, hearing about how you don’t want ‘useless’ bug reports is so easy for me to translate into ‘your bug reports are useless’.

OK, so I just have to buck up. I know this. (When I forget, I ask my Dad.) But in the general case, this is a real dilemma. When you write something, or say something, and have a Thug in mind as your audience, or even yourself the perfectly competent user who can flame with the best of them but only when there’s need, there are these people in the background, the ones who are thinking "I’m a dumb person, what am I?" and hearing you say that too.

I would love to know why it is that computers in particular inspire this reaction in people, especially people who’ve had all kinds of external validation about their abilities, and who are being presented with a crash dialog that reads "the program has quit unexpectedly," as opposed to "you broke it, moron!" Maybe I’m just an outsider, but it seems to me that this is something more pronounced in computing (and academia) than elsewhere. How do people’s feedback loops get so skewed? Is there a magical time to grab a Wimp and give them the good swift kick in the bum that you secretly want to give them? If not, what’s the best way to improve the feedback quality?