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?

Planet Free Software

Article originally posted at the IT Kitchen, a now defunct project founded by Shelley Powers.

Free Software developers, who had strong mailing list and IRC based online communities before the advent of weblogging, have nevertheless found their way into it. This post is a summary of how the Free Software world is using blogs for collaboration; largely preferring aggregation of community members’ blogs over setting up single access group blogs, and using them as a community building tool rather than a software development collaboration tool.

One of the big developments was Advogato, which started in late 1999. The creator of Advogato, Raph Levien, appears to have been trying to start up a kind of a semi-formal guild system for Free Software developers, allowing them to rank each other as Master, Journeyer or Apprentice. As a small feature, he added the ability for users to make “diary entries”, the most recent of which were listed at the side of the front page.

While the other features of advogato proved only an intermittant success — the quality of the articles on the front page is widely lamented, and the certification system has been subject to a lot of debate and has not resulted in the development of formal mentoring — the diary feature was a smash hit. Waves of Free Software developers hit advogato in 2000 and 2001 as they started reading their co-developers’ diaries. The buzz even generated a Salon article in mid 2000.

The initial buzz surrounding Advogato occasionally caused users to publicly renounce their former bad opinions of “online journals”: rather than being ‘useless’ things full of stories about children and cats, they were a new space to talk about your code and find out more about your fellow developers. Advogato was known as a friendly place, in contrast sometimes with the development mailing lists themselves.

Eventually the worlds of Advogato and of blogs began to meet. In mid-2002 Levien was discovering the wider blogosphere and started exploring using his Advogato diary as a primary means of communication with other interesting people. By that time RSS feeds of individual entries and of the entire recent diary entries page were probably the single most requested feature: people no longer wanted to drop in on the site to skim through the new entries, they wanted to poll them like they were beginning to do with other websites. (RSS feeds of individuals’ diaries were added in April 2003.)

At around about this time also, some people started to express serious dissatisfaction with the Advogato community as political debates became more common and the community attracted a few diary trolls. Levien added a diary rating feature as requests to be able to keep some users off the recent entries page grew. Others used the Advogato article feature to deplore the decline in the community.

As various blogging tools became more popular around this time, it became increasingly common to see diary entries from an Advogato regular announcing that their diary was moving elsewhere.

As RSS feeds became fairly ubiquitous, the Free Software community started to revert to a more typical blogging community model: you read blogs of people whose names you knew, and you found other people you knew or knew of through sidebars and comments.

However, in mid-2003 Jeff Waugh of the GNOME desktop project decided to create his own version of the Advogato front page, a HTML page with recent blog entries from GNOME developers all over the web (including several on Advogato). He used the Spycroll aggregator software to pull in RSS feeds, and he made them all available on a single webpage, with the cute addition of disembodied "hackergotchi heads" personalising each name.

He was stunned with the popularity of the page he linked from his own sidebar as Planet GNOME and started to field all kinds of questions about it: the three most popular were “why isn’t this at planet.gnome.org?”, “why aren’t I on it?” and (to his surprise) “why isn’t there an RSS feed?”

The Planet idea took off rapidly over the next six months. Scott James Remnant was the next off the mark, creating Planet Debian. Remnant and Waugh forked spycroll soon after that to create the Planet aggregator script. In fairly short order, a lot of large Free Software projects needed to have their own planet: the Planet homepage now lists nearly 40 separate planets.

The planets have evolved a loose set of customs based on the ones in place at Planets GNOME and Debian. They do not require that syndicated blogs talk about Free Software or software development all the time: they encourage getting to know your fellow developers as people as well as techs. (John Fleck, a GNOME documentor who is not only a frequent poster, but is a frequent non-tech blogger, has been a kind of an acid test for this editorial policy: see the John Malkovich post and a later complaint.) The larger planets are starting to have to deal with line-ball calls about who should and should not be on the planet pages: Waugh apparently finds requiring that contributors use a real photo of themself somewhat helpful on Planet GNOME.

The planets have proved to be amazingly good at spreading blogging among Free Software communities. The two planets I host, LinuxChix Live and Planet Twisted are close to being my most popular hosted sites. They also fill an important gap in the usual Free Software communication tools: they don’t need to be as on-topic as mailing list posts, and they are more expressive than IRC. They’ve also had some influence on corporate group blogging: Richard Giles reported that the creation of Planet Sun was part of the explorations that led Sun employees to promote blogging internally, eventually leading to the creation of blogs.sun.com.

See also

Creative Commons License
Planet Free Software by Mary Gardiner is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Open Source Web Design

So it’s not like I’m in the most beautiful city in the world or anything, so some of the exciting things I’ve been doing include pulling a bunch of people’s weblogs into WordPress. (OK, OK, and I did take the night mode on Andrew’s digicam for a spin.)

Then this evening I was looking at my website and thinking “time for a change” and decided to head over to Open Source Web Design with the idea that if I ran out of inspiration I could pinch a design and remodel it.

It turns out OSWD’s designs are… really unspeakable awful.

They have a ‘hot or not’ rating system. Here’s my rating criteria:

  1. I would close the browser window immediately if presented with this design.
  2. I would wince and enlarge the font several times, as well as upping the contrast on my monitor, when presented with this design.
  3. This design looks kind of like the rest of the web, except all the really bad bits, which it only resembles in part.
  4. This design is quite good.
  5. Upon seeing this design I would immediately plot to steal it for my own site, held back only by the fear of looking like a big thief, and also someone who can’t do their own web design. (Not that I can do my own web design, it’s just that at the moment I do it anyway.)

I gave nothing a score above three. Andrew was sitting next to me, and he gave nothing above a three either, despite several designs making extensive use of techniques designed to appeal to his demographic. (A demographic consisting of people who love the colour purple.)

If there really are people out there doing free high quality web designs for the fun of it, I’d appreciate some Google terms.

Thursday 21 October 2004

It’s high past time that I stopped using Movable Type 2.6.x on my servers. Various options present themselves.

The first is upgrading to Movable Type 3.x. This is undesirable for two reasons. I’m hitching my wagon to proprietary software that may have arbitrary changes in price and conditions whenever a new version is released. Further, the 3.x version would cost US$99, and while I can afford this, I’m hosting other people’s weblogs using this installation, with one exception, and none of them are paying me. So I don’t feel generous enough to do this.

The next is using a Free Software solution. This is appealing; it’s my default choice in all other kinds of software. However, in order to do this, the software should have available all the features of Movable Type that the users, or I their administrator (captor) need:

Multiple weblog support.
I have ten weblogs. I don’t want to make ten copies of the same piece of (PHP, because everything is in PHP) code in ten different directories; make either ten different databases or fifty different database tables; and give the same users varying permissions over ten different weblogs. This one is a surprisingly rare feature.
User-based security.
This is not so much because I think the users are EVIL as because they will make mistakes. If the software gives them edit access to all the blogs, they will regularly make posts in the wrong place.
Web interface.
Most of these people don’t have their own computer, they blog from labs or the library. Uploading text files doesn’t cut it.
User editable templates.
Julia wants this, at least, and probably Mos does too.

Now, The first requirement alone knocks out a huge number of the candidates. There are a few that remain. Pivot seems buggy and … odd (probably unusable by users weaned on MT). b2evolution really seems like the only other candidate.

The last alternative is writing my own, because there does rather seem to be a hole in the (quite considerable) market. However, I’ve already done this twice, once for puzzling.org and once ages ago for eyes, and it’s getting dull. And in neither of those cases have I gotten anywhere near things like comments, trackbacks, or other basically necessary features. And while I have no doubt that the basic features of multiple weblogs, multiple users, and web editing would be developed fairly rapidly, the list of stuff I’d need to do started looking a little nasty:

  • I have to decide on a backend. Ew. And every time I change the code I have to have upgrade scripts. More ew.
  • In order to have more than one other user and any co-developers at all, there is but one choice of language. (Unless it turned out to be such a killer app that web hosts around the world started installing twisted.web — unlikely.)
  • Input validation and web based authentication are which of: horrible, easy to get wrong and boring? Answer: all of the above.
  • Then there’s that old horror: prevention of evil. Even if I trust my users to avoid malicious markup the question of fending off comment spammers, referrer spammers, trackback spammers and other jerks will arise eventually.
  • Letting users edit the templates is a huge input validation problem all on its own: how do you dig them out when they write an invalid template? (Getting them to write Nevow style templates? Well, anything’s possible.)
  • In order to handle both my own and other people’s bizarro weblog setups, it would need to work with arbitrary file systems, arbitrary vhosts, and quite likely generate URLs specified by the user.
  • In order to work with both my own and other people’s bizarro weblog setups, it would need to parse about twenty different types of export format.

Irritants; Shiny things

Irritants

  1. Our host’s wireless router, whose default DHCP lease is 30 seconds. That’s sure to fill one’s logs, asking for a new IP address every 30 seconds. I discovered recently though that if you specify a lease time, any lease time, it gives you about 40% of that time. There’s some amusement to be had from that if you aren’t nicely sending DHCPRELEASE, but at the moment I am settling for a lease of 852 million seconds. And counting.
  2. Nautilus, which I’m trying to use regularly, not just for reasons of sympathetic magic, but because it is indeed useful to manipulate pictures by dragging and dropping thumbnails. (A future project is a fairly hard-core script for resizing pictures en masse because the g-scripts ones don’t talk gnome-vfs. Wait on this one, I need to learn pygtk.) However, the usefulness is being offset by the incredible number of bugs, mainly related to frozen redraws or uninformative and occasionally wrong error messages, that manifest themselves every time I try and use it for non-local file access.

Shiny things

  1. Ubuntu’s "Human" icon theme (you may have to explicitly choose this). So many happy talking faces in one X-Chat icon, I can hardly believe it.