Arnt Gulbrandsen
Send me mailAbout meAbout this blog
2011-11-30

ADSL from Deutsche Telekom

So just now, as I was writing up the advent calendar a door-to-door salesman came asking whether I might want to purchase lovely phone and internet connectivity from Telekom.

Now I need to vent.

I was a Telekom customer for years. Not very happy, but also not unhappy and changes seemed risky. So when I needed more bandwidth, early in July 2009, I ordered an upgrade. (more…)

2011-11-28

Baselines

The text we've all learned to read is arranged in lines: Horizontal baseline, regularly sized letters, regular line height, lines neither too narrow nor too wide.

Anyone who breaks those rules disturbs the mind's reading and distracts from the content. Minor violations cause minor disturbance.

Which is fine, I suppose. Ask any advertising agency. If you violate the right norm you can make the brain sit up and take notice of a message it would otherwise skip. Drink Coca-Cola. But it's not something a GUI program should do. GUI programs should form the thinnest possible barrier between user and data. (more…)

2011-11-22

Libertango, the 2011 version

I've wanted more RAM and a third monitor for a while. Upgrade time. I hate upgrading hardware, it's the worst of chores.

The new hardware is a Zotac Fusion ITX A motherboard including a Radeon 6310 graphics blah, a passive Radeon HD5450 graphics card (actually a 5430 chip), and the rest is from from the previous libertango: (more…)

A Mikrotik IPsec policy bug

The short version: Mikrotik RouterOS doesn't support multiple, redundantly configured IPsec links. Amazon's cloud services use just that. Pain ensues. I haven't found any workaround I really like.

The long version: (more…)

2011-10-27

Sharing keyboard across Mac and Linux

Computers are good. More computers are better. But more keyboards are not. Swapping keyboards all the time was how I first ruined my wrists, almost twenty years ago.

That's why now, with a Mac Mini under and a linux box near my working desk, I definitely don't want to use two keyboards. One is the right number, and Synergy is the way to share keyboard and mouse. (more…)

2011-09-15

Silverlight video streaming on the Mac

The Silverlight streaming has a tendency to pick a very low frame rate on some hosts, particularly on the Macintosh. Microsoft has promised a fix in Silverlight 5, but that doesn't help now.

The workaround is to disable WindowSizeHeuristicsEnabled in the player configuration file. Of course that may have negative consequences.

2011-08-31

A new gadget: Nuforce Icon μDAC-2 amplifier

My neighbour is putting up another concrete building and I don't like noise.

For the past few days I've used a Nuforce μDAC-2 together with Bose QC15 headphones. I tried the QC15s alone, but they don't suppress the construction noise very well on their own. They do better when fed music.

The μDAC-2 does well. It's not exactly highend (for context: I think Musical Fidelity makes highend gear, and I consider most Bose devices to be overpriced beep-beep gadgets). But it also doesn't offend me like most computer audio gadgets. It's pleasant, and allows me to work in complete disregard of the $#$@# concrete mixers. Well worth the price.

2011-08-19

for() is evil

Consider the function Message::acceptableBoundary(). That function's reading order is exactly the same as the its execution order. This is not unusual in C and C++ (and more or less in Java), but there is a significant exception, for(). (more…)

2011-08-17

Zero bits of information

I quote at length from chapter four of Jef Raskin's book The humane interface:

We have looked at two interfaces, one of which will take about 5 seconds to operate and the other of which will take more than 15 seconds. [...] It is clear which of the two better satisfies the requirement. The next question that we ask is how fast an interface [...] can be. (more…)

2011-08-15

tcpdump on Mikrotik

Mikrotik RouterOS doesn't have a tcpdump command. It has solutions for most/all of the problems I like to solve with tcpdump, though. (more…)

2011-08-05

Patere necesse est

This week, another thousand bloggers explain that patents are bad because they're used to harass, etc.

Noone seems to understand that for software patents to be meet their stated aims, it must be possible for programmers to learn something by searching for, finding and reading the relevant patent.

Wikipedia defines patents as a set of exclusive rights granted [...] to an inventor [...] in exchange for the public disclosure of an invention. That public disclosure isn't happening now: software patents aren't understandable to software developers, so the rights are granted in exchange for effectively nothing.

Wikipedia goes on to say the same thing again in different words: The word patent originates from the Latin patere, which means to lay open (i.e., to make available for public inspection).

Avoiding harassment is a start, but it's not enough. Patere necesse est.

Update: Two corollaries, obvious IMO, but... There must be something in each patent that's worth learning. Restating textbooks isn't enough. And each patent must be such that it's practically possible to work without infringing/licensing it.

2011-08-03

Lawnmowers, a taxonomy

Lawnmowers may be classified according to noise, speed, price, reliability, durability and so on. I don't have a lawn, so all I really care about is how loud the superintendents near me are, and for how long. (more…)

2011-07-30

Truth is beauty, beauty is truth

I'm throwing away old books. The room with all the old bookshelves is getting a new life, and in the process of moving the books to the new shelves in a different room, some books… don't come along.

One such is Beautiful code, an anthology to support Amnesty International. I bought it for one chapter, Code in motion, in which Christopher Seiwald and Laura Wingerd elaborate on Christopher's earlier Seven pillars of pretty code (go read it, it's good).

I want to throw the book away. The other chapters are just so much filler. But I can't bring myself to throw away the figures on pages 534 and 535, those are too valuable. Must have those.

Some of the code I've written since 1992 (when my first significant contribution was accepted into an open source project) is still there, bits of it heavily used. The parts of my code that goes on working without much change shares one characteristic: It reads clearly and easily. It's well-documented, well-commented and there's hardly any nesting.

I spy a causal relationship: Truth is beauty, beauty is truth.

2011-07-29

IPsec VPN between Mikrotik RouterOS and an Amazon VPC

This post describes how I configure IPsec tunnels between Mikrotik routers and VPCs (virtual private clouds) hosted at Amazon AWS. (more…)

2011-07-28

catch( Exception e ) { throw new Exception( e ); }

Some Java book I read long ago, I think it was Thinking in Java, explains that one of the benefits of Java exceptions is that you can shift error handling away from the normal path, leaving the implementation of the common case clearer and better.

Fine. There's just one catch: You have to catch the exceptions and handle the error somewhere. (more…)

2011-07-25

Amazon Prime: The game

The Amazon Prime game is an odd kind of game: The players are Amazon and myself, but the winner is usually either DHL or UPS.

The rules are as follows: (more…)

2011-07-18

Magura HS33: I can't sue Magura

I have a new bicycle. A marvellous new bicycle. It has front and back lights that work well enough to not annoy me, a gear shift that's just as good (as well it should be) and brakes that stop me when I want to stop, even when I'm pedalling 160kg.

Why is this marvellous?

But the true wonder is the manuals. (more…)

2011-07-07

TV-b-gone SHP

Leaving the offices of customer.com today, I pressed the button half a dozen times. (For some reason, customer.com's planners thought it best to litter the offices with giant TVs, most turned on, all muted. There's a corporate espresso bar with seventeen corporate television sets. Really makes one wonder.) Walking to the hotel, I pressed the button a few more times.

Just as I was entering, I saw one last TV, reached for my tv-b-gone and... nothing. An employee had turned the TV off as part of closing for the day.

I'm not sure how I feel. Puzzled to have seen someone turn a television set off. Happy to have seen it happen. And somehow cheated.

Update: What a pity the TV-b-gone is too slow for drive-by actionism.

2011-06-21

I learned something today: Why IDEs suck

Wrote colleague A to colleague B: With all due respect, suggesting anything other than an IDE today for coding is not reasonable. IntelliJ IDEA, Eclipse, NetBeans, whatever. Still running circles around your stone-tablet-tech editors ;) So, I don't understand why you would want anything less.

But B could suggest anything other, and wanted less, and he's one of the two best programmers on the team, too.

A, hm, a lively discussion ensued. What I learned: (more…)

2011-06-10

Clueless in the cloud

What Amazon wrote:

We have noticed that one or more of your instances are running on a host degraded due to hardware failure. [...]

The host needs to undergo maintenance and will be taken down [...]

What Amazon might have written:

Thought you were clever, eh? Running that fancy Cassandra cluster? I bet you didn't expect your redundant copies on several Cassandra nodes to really be stored on the same crummy drive. (more…)

2011-05-31

Tag clouds are the opposite of good writing

Far too many blogs include a tag cloud as a kind of site map, taking up lots of space on every page. That sucks.

Good writing relates to its audience and subject matter; tag clouds relate only to the blogger. They list what the blogger cares about, not (more…)

2011-05-11

Android WLAN roaming breakage

We have two access points at home, and wireless clients can roam freely, keeping their IP address.

Most clients can. Android phones and tables could not. For example, if a Motorola Xoom (Android 3.0) was in range of both APs, then it would switch to the other AP every 3-4 seconds.

The problem was that one AP was set to support only 802.11g, while the other was set to support b/g. Setting both to G-only solved the problem. The Xoom now connects quickly and keeps its connection (so long as it remains still at least).

2011-05-09

On Jira

Jira is what I'm supposed to look at in the morning. It tells me what's urgent. What I should fix. It's almost never anything I really want to do. I want to write code. Something that's challenging, with a useful result.

Telling me to open a web browser is not a good way to make me perform chores. Sorry.

2011-04-22

A sort of bug tracker

All bug trackers suck. That's why Abhijit and I really don't want to use one for aox.

Here's what we do instead. It's subtle.

There's a notes file in the version-controlled source tree. The only way to add to a note (ie. file a bug) is to make us do it. There are some scripts that look at the file. (more…)

2011-04-20

Snippets

Snippets is a jabber/xmpp bot that periodically asks each team member what are you doing? and collects the answers on a web page. (more…)

2011-04-10

The ReadyNAS broke down

After a few years of service, my ReadyNAS NV+ broke one day. The hardware was fine, but the software had painted itself into a corner and didn't want to boot at all.

Googling showed that lots of other people have been bitten by the same bug. I phoned support. The support person told me that my box was out of warranty, and would I please post to a web forum and I'm sure someone will help you. I could tell from his voice that he didn't really believe that.

I eventually moved the drives to a linux box. LVM (on ubuntu 10.04) recognised the drives automagically and ext3 let me mount the file system, so I bought a new Synology NAS and copied the data to it.

When I did a factory reinstallation (the hard way) the ReadyNAS booted without problems. From now on I'll use it to back up other devices, nothing more.

2011-04-07

Bose QC15

A neighbour is noisily tearing down one of its office blocks. I'm sure a new unpretty office block will then be noisily built in its stead, so I bought a Bose QC15 to work in peace meanwhile.

Summary review: It handles the construction-related noise well, but it does really badly with respect to human noises such as a telephone conversation or a crying baby.

Both of the employees I spoke to in the Bose shop here in Munich were sloppy, arrogant and ignorant. Not a good combination. I walked out, and bought the headphones elsewhere.

2011-04-06

Into the flow, quickly

One really good thing I learnt from working with Abhijit on Archiveopteryx is how to get quickly into the flow. Click, flow.

The basic pattern involves a good kind of task, and a good way to get to it. Both parts are vital. (more…)

2011-03-16

Hard work vs. silver bullets

Blog posting number one, from a typical silver bullet merchant (more…)

2011-03-07

My old custom-made Cherry keyboard

Tidying my office, chapter 17, in which beloved hardware is less beloved than a usable shelf.

I'm throwing away the keyboard Cherry made for me sometime around the middle nineties.

It has an AT keyboard plug, so I haven't been able to use it in a while, and it's worn out (more…)

2011-02-13

ReadyNAS runs linux, of sorts

It's debian. apt-get install works. But they removed some files without telling dpkg, and edited some, too.

For example, they removed the man pages. Why? It's a NAS: Disk is the one resource it has in abundance, and the man pages aren't even big.

Foo.

2011-02-10

Linux and the Brother MFC-8880DN

When my previous printer ran low on toner, I bought a new printer. Billing is critical. A Brother MFC-8880DN, which I already know from setting it up for someone else.

It's a decent network printer. Notable positive aspects: It can scan in colour (even though it's nominally a monochrome printer). (more…)

2011-01-31

Webster F. Street layaway plan

A fine cocktail, supposedly F. Scott Fitzgerald's favourite, and key to a fine scene in Sweet Thursday. Such a shame that it's mostly forgotten nowadays. (more…)

2011-01-29

Linux on the Nokia Booklet 3G

My previous laptop (a Lifebook P7210) grew bad-tempered. Investigate or replace? Stupid question considering how much netbooks cost.

My new laptop is a Nokia Booklet 3G, a moderately expensive netbook with good battery lifetime, a 3G modem, a high-resolution screen and no fan. Ubuntu 10.10 runs well (more…)

2011-01-19

Making Maven compile faster

jam -g is the best make system I've ever used. Best for the simple reason that when the build fails, it usually fails quickly. I start the build, and a second later I'm already looking at my mistake. That feature outweighs any and all drawbacks.

Sadly, I don't use jam very often at the moment. I mostly use maven 2, which starts the build by determining from first principles which source files to use and which libraries to download. In practice the set needed hasn't changed in the past minutes, (more…)

2011-01-03

Software patents not all bad

So Paul Allen sues over patents and I'm sure he'll attract a lot of flak for that. But a side issue interests me particularly: The patents were originally awarded to Interval Research, a tech R&D firm founded by Allen and former Xerox executive David Liddle in 1992. The firm was folded in 2000, and the patents were later transferred to Interval Licensing. (more…)

2010-12-19

Kies bricked my Galaxy S, Heimdall saved the day

Short version: Samsung Kies (Samsung's own program for backing up and upgrading Samsung phones) bricked my Galaxy S while upgrading it. Combining Heimdall with some recipes from other blogs allowed me to save the device.

Long version: (more…)

2010-12-15

The absentminded Osama

One of my not very frequently used possessions is a large laptop bag. Big enough for two laptops and some random other items, or for one laptop, a change of clothes, random chargers and whatnot, and a book. (more…)

2010-12-02

Warning: untrusted versions of the following packages…

Three million web forum postings contain wrong, misguided or overly complex solutions, so here:

When ubuntu complains WARNING: untrusted versions of the following packages will be installed, that's because of bad data in the keyring for ubuntu packages, which is part of the package ubuntu-keyring. (more…)

2010-11-26

More on the Samsung SCX-4828FN

I've had the 4828 for half a year, and have had several bad experiences.

I have crashed the printer twice. Once by printing the guice guide using chromium and once by printing a book-length ΤΕΧ (dvips) document, mostly text with some tables and figures.

The copier is really, really bad at copying grey-on-white or green-on-white text. (more…)

2010-11-24

Indian election machines

Earlier this year Hari K. Prasad and others got hold of an Indian election machine and proved beyond doubt that they can be manipulated. I wrote a long, angry blog post, which I forgot to post. Now I post it, edited to be a less angry and with an added link.

Indian election machines don't suck. They're a great design for Indian elections. The attacks on them (bad seals, etc) also worked against the previous paper-based system. (more…)

2010-11-04

Family life, the programmer's way

Now that we have two children, the daily routine has grown even worse. So we've adopted cross-paradigm best practice to manage and control complex projects, on-budget and on-time, improving parent/child satisfaction matrices.

We've adopted scrum. (more…)

2010-10-17

Das Keyboard, ultimate silent

Nice. Very nice.

It's solid, doesn't move around on the desk, the keys feel clear without any jarring click, (more…)

2010-10-16

On being snarky

A public service announcement: Upon learning that Dave Cridland describes identi.ca as a snark broadcast facility and claims to use it that way, too, I have decided that when I cannot repress my snarkiness, letting it out at identi.ca/arnt is acceptable.

Maybe even good. rant.g/rant has helped me regain calmness more than once.

Arak Al-Zumot, Brun and Brun Quinquennis

I recently purchased a few bottles of arak from the duty-free shop at Dubai airport. They had Al-Zumot, Golden Eagle, Al-Massaya and two varieties of Brun. (more…)

2010-10-05

IMAP, aox, 3G

A little bit of 3G first: A 3G connection is in one of several modes, ranging from PCH (which uses hardly any power and can't transfer payload data) to DCH (which uses much power and is used for bulk transfers).

The way Archiveopteryx handles IMAP, POP and SMTP is very battery-friendly. (more…)

Bless SMTP pipelining

I am sitting in Madikeri, Karnataka, India, a nice small town in the middle of picturesque forests and hills. Regrettably, the beauty of the scenery is not matched by the quality of the area's GPRS coverage. (more…)

2010-09-10

Echo as a form of argument

Sometimes people don't want to provide arguments (for something that may be right, wrong, or arguable). In that case, what can be better than to quote something famously true, such as Dijkstra's Goto Considered Harmful, and hope that the truth rubs off? (more…)

2010-09-08

Android to Linux PPTP VPN

The normal linux pptpd will talk to the normal Android PPTP client, but brokenly by default. The magic (more…)

2010-08-19

The exception proves the rule

No it doesn't. Used well, the exception shows the rule. Smoking is permitted in the ground-floor foyer. Used more typically, it's just another vacuous rhetorical device that may or may not fool the reader.

2010-08-11

Telly Terminate

The Telly Terminate is a small keyring gadget to turn TVs off. It appears to have sold well during the recent sports event.

Pro: It turns TVs off. (more…)

2010-08-10

GROẞSCHREIBUNG!

Some fonts have already been updated to include ẞ, including the ones I generally use (on ubuntu 10.04). Lovely.

2010-08-06

My desk is tidy

Stronger: I have two desks, and both are now reasonably tidy.

I've had a tidy desk before, such as when I moved to a new office in 1998, but this time no force majeure is involved. I tidied my desks, and kept at it until I was done. Three days.

I congratulate myself. My mother would, too, if I were to tell her.

2010-07-26

.priv.no

Once upon a time, Norwegian residents could apply for a personal .priv.no domain by sending email to the hostmaster. I did so.

Times have changed, registrars and proper procedures now complexicate such things. Still, those who have .priv.no domains can keep them, (more…)

2010-07-24

Brevity in programming

For the last couple of months I've been using a program written in one of the fashionably brief languages, Ruby. I've had to read the source on more than one occasion.

On one hand, the source is very brief. It does get a lot done with very few lines of code. (more…)

2010-07-13

Writing worthless documentation with zero effort

Those lucky enough to use Visual Studio need not work hard to document their code: Ghostdoc does it all automatically. No mental effort required. (more…)

2010-07-02

Oxca KVM over IP

Oxca makes a range of KVM products, including one to provide remote KVM access via TCP/IP. The latter uses a java applet and runs in the browser, and isn't very fine at all. (more…)

2010-06-28

Trading IPv4 addresses

People keep saying blah about how IPv4 can go on even if there are no free addresses, they'll just be traded on a free market.

So. I don't think so.

Either, the blocks to be traded will primarily be large (the kind commonly routed today), or primarily be small (the kind commonly handed to end-users). I'll argue each separately. (more…)

2010-06-18

Building a balanced binary tree from sorted input in O(n)

Writing about Knuth's literate programming book reminded me about when I met him (at a conference) and asked why the following algorithm wasn't in TAOCP. He grasped the algorithm from a ten-second description, and said it wasn't there because he didn't know about it. Good reason.

My TA at university (when I invented it for an exercise) wasn't aware of it either, but unlike Knuth, my TA didn't understand it. And I hadn't commented the code at all. Sigh.

Here are some words in sorted order: (more…)

2010-06-17

Virtualbox, AnyDVD and read errors

If AnyDVD pops up a big warning dialog about read errors (suggesting a region-free fimware from rpc1.com, cleaning the DVD, etc), and you're using it inside Virtualbox, then the correct solution is: (more…)

2010-06-16

I learn Puppet

I need to use Puppet, a system to configure linux boxes (add the right users, install and configure the right services, make sure the right things are running and the wrong things not). Puppet seems good, better than cfengine.

So I read the existing configuration, which seemed to make sense but left a lot of open questions, read the the documentation, felt little wiser, and bought a book (Pulling strings with Puppet by James Turnbull) and (more…)

2010-05-28

VERP sucks

Last year I bought a phone for Abhijit, who prefers something small and simple and couldn't find it. I could, at €17, so I ordered one and sent it to him, and have been spammed ever since. Not a problem, I can reject mail faster than (more…)

2010-05-26

Linux and the Samsung SCX-4828FN multifunction printer

I have a Samsung SCX-4828FN printer/fax/­copier/scanner, and use it with linux and BSD. (Update: I've a follow-up posting about the printer.)

The printer is fine for black and white text, such as I usually print: Fast, crisp text with fine edges, nicely readable. Duplex printing just works. The printer can print quite close to the paper's edge, too. (more…)

2010-05-19

A beautiful strawman

Back in 2008, the Bundestag passed a law which may make network owners responsible for certain acts performed using their network, and does limit their responsibility to €100 or the plaintiff's legal costs, whichever is lower. A year or two later, the music industry sued a network owner, (more…)

2010-05-05

Dropping terminal escape sequences

I need to reconfigure a device via its serial console; the device emits many ANSI/VT escape sequences and other control codes. These are perhaps helpful if one is typing, but not so helpful when a script is to reset and reconfigure the device.

The following perl s/// magic gets rid of most (but not all) escape codes. (more…)

2010-04-26

Parser generators

I have a feeling that most (all?) parser generators are written with one overwhelming goal: Parse fast/well when the grammar and input are both correct. (more…)

83% PHP

Github thinks aox is 83% PHP. That is even more of an insult than its previous supposition. 60% C might have been misleading, but that error was understandable (it thought cryptlib was part of aox). 83% PHP is just insulting.

Ohloh also smokes the good stuff: Archiveopteryx is GPL'd, thank you so much.

2010-04-22

ReadyNAS NV+, WD Caviar Green disks

WD Caviar Green disks (WD15EADS-00S2B0 in my case) like to unload the drive heads to save power. The ReadyNAS likes to load them again. This causes two problems: Frequent eight-second delays as the drive heads move away from the platters and then back towards them, and in my case, the drives would reach their stated lifetime (300,000 load cycles) in less than a year.

Several solutions exist. (more…)

2010-04-15

My Favicon

The icon was drawn by Brodd Nesset, based on exactly two sentences about what I wanted. I like it very much; it represents exactly what I want it to represent, and in a manner which represents me. Very grateful.

2010-04-07

Chris Lattner rocks

Finally there's a C++ compiler that makes a reasonable attempt at emitting helpful error messages.

Bjarne Stroustrup may have sins to answer for, (more…)

2010-04-03

Git, after all, not perforce

The earlier posts on git and perforce sound as if I'd rather use perforce than git. True in a way. Perforce rocks. It's practically bug-free, for a start — after more than a decade of use I can only remember one bug (using one variant of p4 obliterate made p4 diff report the wrong diff).

But rocking bug-freely isn't enough. (more…)

2010-03-31

Detecting character encodings

Archiveopteryx often needs to massage incoming mail to make it syntactically valid. 99% may be valid, but 1% is still a lot. One of the chores is to guess how a message is encoded — unicode, ISO-8859-x or what? For that Archiveopteryx uses a novel and good algorithm. (more…)

2010-03-30

Ubuntu 9.10 on the Lifebook S4572

Sad to say, but I recently installed ubuntu 9.10 (karmic koala) on a Fujitsu Siemens Lifebook S4572. I installed the minimal system followed by xubuntu-desktop and gcompris: xfce is supposed to be better for small boxes and gcompris is the whole point. (more…)

2010-03-29

The inverted pyramid

The inverted pyramid is how journalists are taught to write typical news stories. It puts the most newsworthy information at the top, and then the remaining information follows in order of importance, with the least important at the bottom. (The quote is from Chip Scanlan.)

This is the right way to write most API documentation. (more…)

2010-03-26

Companion techniques

Another finding-my-thoughts posting. Documenting helps fix bugs early, but what are its companion techniques?

Polishing the code all the time. Make it look good. Beauty is truth, truth is beauty. (more…)

Comments on the LWN thread

LWN ran an article on Archiveopteryx. Some points.

It's BSD-licensed, not OSL-licensed. It was OSL-licensed until last year.

One commenter opined that we might not have tested big mailboxes. Well, we have. Not sure exactly how big. We've routinely tested up to a million, bigger occasionally. At a million it's quite simple: Most mail readers fall over. (more…)

2010-03-24

Reading someone's documentation

Written with doxygen. It's funny to see how early qdoc syntax is still there. Features I added because they seemed to make sense, then discarded later, when I saw they didn't carry their load.

And there they are, still in use. Maybe funny isn't the right word.

2010-03-17

Popcorn Hour A-110

The Popcorn Hour A-110 is a small silent box that can play ISOs and other movies scaled up to 1920×1080 resolution. We have one, diskless, connected to our NAS via gigabit ethernet, (more…)

2010-03-10

From: Charlie Root <root@…> — but which Charlie?

I hate it when different, independent computers all send me mail from my close friend Charlie Root. Here's an aox hack to ease the pain. (more…)

3.1.3 done

Archiveopteryx 3.1.3 is done. Finally the unending series of bugs stopped disturbing the server, and the server started running reliably, and recover from problems the way it's meant to. (more…)

2010-03-05

Oryx RIP

I went to the public notary today (a few months later than intended) and signed the paperwork. (more…)

Features git… will never have?

What else I miss:

Change numbers: Perforce's mothership issues change numbers. Sequentially increasing, fairly small numbers. Six digits sometimes, but really fairly small, since only the last 3-4 digits tend to matter at any time.

I like the change numbers. (more…)

2010-03-03

Privacy, Received, etc.

Summary: Archiveopteryx is loyal to its users, right or wrong. (more…)

2010-03-01

My monitor crashes the Linux kernel

If my Benq M108 mouse is plugged into the USB hub of my Eizo S2100 monitor while linux 2.6.31 (and several others) boots on my Zotac ION-ITX-B motherboard, then the kernel freezes after this line:

[ 0.828204] io scheduler cfq registered (default)

Numlock does nothing, I need to press the any key.

If I unplug the mouse from the hub, or the hub from the PC, then the boot succeeds. (more…)

2010-02-17

Sigh.

I enable IPv4. Temporarily at least. (more…)

2010-02-16

Archiveopteryx bug diversity

I still do not understand why Archiveopteryx runs stably in some places and crashes every few hours or days in others.

It's just just a question of platform-specific bugs. We've seen it too many times: A bug hits some people, not others, for reasons I do not understand even after fixing the bug. As a result, some people see aox working really well, others really badly, and I have no way to explain why this is so, and see no pattern I could use to improve testing or avoid these bugs.

It's very frustrating.

2010-02-04

Udoc into clang

One of udoc's problems is that its error messages arrive towards the end of the build process. Often, when fifteen executables are being built, I wait for the interesting one to be finished and immediately switch to testing it. Later on udoc delivers some useful error messages, but I'm not looking any more. (more…)

2010-02-01

Probing for IPv6 support in the browser

If you can read this sentence, you have IPv6 support, either directly or via a web proxy. (Update: no, I added IPv4 access to the blog.) (more…)

Today's not my birthday

That's good, because posting this on my birthday would be a little boorish.

2010-01-29

Office!

I'm sitting in my office, pondering whether my location is best described as an office, an office, an office or perhaps (overwhelmingly correct) an office. I think I like room. Simple words are so… unruffling.

Javadoc

Javadoc is built in to Java, but I think they botched it. It's clear that they didn't care deeply: JLS3 grammar doesn't mention javadoc at all, and the JLS doesn't specify it, hardly even mentions it… the word stepchild sounds more appropriate than does builtin, in my oh-so-humble opinion.

There are many things I don't like about the result, and few things I do like.

There's too much typing for not enough benefit. (more…)

2010-01-19

Switching to OpenSSL

Archiveopteryx uses OpenSSL by default starting with version 3.1.3. Sadly, it runs noticeably better than with Cryptlib.

Compatibility with other TLS stacks is clearly better. (more…)

... the fact that ...

A sentence: Amazon, a big Net Neutrality advocate has come around to acknowledge the fact that it is reasonable for broadband service providers to sell premium service to broadband subscribers or content providers.

A question: Does the fact that ever mean anything other than in my opinion?

2009-12-28

ReadyNAS NV+

I bought a ReadyNAS NV+ years ago, and don't like it. It serves files, but does so many things badly that next time I want to add more disk space, I intend to purchase something else. (more…)

2009-12-17

IPv6 status seen from here

Bad news: Opera lost IPv6 ability in version 10.10. Opera cannot connect to this site, even if it's running on a host with IPv6 ability.

No news: The search engines still don't support IPv6. The (other) browsers still support IPv6.

Good news: Today I saw a torrent swarm with more than 20% IPv6 peers. Not a special swarm in any way: I download my old LPs whenever I play them, so I'll be able to play them in the kitchen or office too next time. It was the torrent swarm for one of them.

2009-12-16

.XCompose

Here's what I did to get a sensibly large character repertoire for my keyboard, using ubuntu 9.10.

First, read any of the fine explanations of the compose key and configure some suitable key.

Next, explain to ubuntu that you do wish to XIM:

im-switch -s default-xim

By this time, X applications will read your ~/.XCompose file when they start, so set it up. There's a large repertoire on github:

cd ~/src git clone git://github.com/leoboiko/pointless-xcompose.git

Here's my ~/.XCompose (more…)

2009-12-15

Various neat signs and glyphs

Another browser test (I'm looking at you, android). These signs are mostly ones I've used in 2008-9 (with some added for symmetry etc.), and I do not think they are too odd to be worth rendering.

Signs:

Feature not supported (U+2610)
Feature supported! (U+2611)
Feature supported! (U+2612)
Check mark (U+2713)
Heavy check mark (U+2714)
Multiplication x (U+2715)
Heavy multiplication x (U+2716)
Ballot x (U+2717)
Heavy ballot x (U+2718)
Telephone (U+260f)
Telephone (U+260e)
Peace (U+262e)

Arrows and that kind of thing: (more…)

No GPL for me

There are four things I dislike about the GPL. In no particular order:

Its bad writing causes flame wars. So there are flame wars about the concept, that's OK, but there are also flame wars about what the GPL says, and that's simply inacceptable. Writing clear prose isn't that difficult.

I do not want to spend a single hour in the rest of my life arguing about what the GPL says and doesn't say. I do not want any more mail from advokids with (more…)

2009-12-10

Features git will never have, part 2

When you sync in perforce, it updates the files you're not editing to the latest revision, and leaves the ones you're editing untouched. Git fetch, by contrast, updates everything that's changed.

Perforce's behaviour requires that client state cannot be expressed as a simple change number. Some files may be synced to change 5522, others to 5525. A git tree is always at a particular change, plus a local diff.

The cost of that simplicity is that git fetch ties p4 sync and p4 merge. If you want to pull unrelated changes into your tree and there are conflicts with your current work, then you have to deal with those conflicts immediately. p4 sync is low-risk, git fetch risks interrupting your train of thought with a merge.

2009-12-09

Features git will never have, part 1

When you open a file for writing in perforce, it checks whether anyone else is working on the same file, and tells you who, if someone is.

This is a fine feature. It warns you if there was a misunderstanding and someone else is already doing what you're about to start doing, and it warns you if someone else has forgotten to commit a change. The price for that is that the perforce server has to know who has the file open for writing, and that when you see that message x is also editing y, you have to talk to x about whether your work conflicts.

Git has nothing like a perforce server, so no place to check for such approaching conflicts.

2009-12-04

Libertango, the 2009 version

Zotac ION ITX B motherboard, Silverstone SG05 case, Scythe Slip Stream 120mm fan, Be Quiet SFX power supply, SSD. (more…)

2009-12-03

Email Marketing is not spam, oh no

2009-12-01

Cryptlib in a sea of OpenSSL

Archiveopteryx uses Cryptlib. Still. It's good code, and Abhijit and I trust Peter. Almost everyone else on the planet uses OpenSSL. A few outcasts use something that shares code with OpenSSL, such as GnuTLS or SSLeay (why do these people all have a MiXEDcaps fetish?), and there's an even smaller lot that uses cryptlib, matrixssl etc.

Naturally, there are interoperability issues. There always are, (more…)

2009-11-24

The überprogrammer

Every programmer has bad days. Days on which no code wants to be written, days spent tinkering with the CSS of a blog noone reads, or posting something to said blog.

Every programmer can do that. It takes a very special kind to
☑ finish a long posting on a subject which interests noone
☑ post it to a blog which noone can read, due to the sad state of IPv6
☑ tinker with the CSS of that blog
☑ — using CSS3 text-justify, which no browsers support
☑ and finally to reconfigure the blog to withstand heavy load, as if IPv6 deployment were to happen before 2011. All on one day.

Output formats for generated documentation

The four major output formats (long print, piecemeal print, ASCII on screen and hypertext) all have their fans, all have their uses, the ideal system would support all four, but it isn't possible to support all four really well.

Writing, designing or encoding for plain ASCII just isn't the same as writing for pages. One of the books I read ages ago had a very nice example, showing two pages of text vs. one screen of text. The pages allowed boxes that didn't intrude on reading the regular text, fine graphics, and easy overview of a lot of data. In all, around six times as much information in front of the reader's eyes. (more…)

2009-11-12

Exceptions, and exceptions, and exceptions

Exceptions are such a pain. They look as if someone thought they could solve many disparate problems with one tool, and in the end, the tool doesn't look terribly elegant, and people don't use it terribly well. (more…)

2009-11-11

Literate programming failed. Why?

Donald Knuth invented literate programming and published the TexBook as an example. The book is great, or so I've heard from many people who've read it. So why is literate programming is practically unused today, at least the kind Knuth invented? (more…)

2009-11-04

Kinds of literate programming

The TeXbook employs something called literate programming: Knuth wrote code and text together, effectively writing a narrative about that code, with that code as part of the narrative.

Knuth could do that, he's a genius. He was able to write a sizable program practically without bugs, in a note-book. Mortals like myself could not. I'd have to go back and rewrite earlier bits, and before long the narrative would stink. (more…)

Writing (mostly) to write

Most people who talk about literate programming seem to care mostly about the output. The written documentation. I care more about the actual writing, and the result of the writing process.

When you write something, when you explain it, you gain a deeper insight yourself. That's a cliché, to be sure, but it can be leveraged to write better code. There are two parts to it: Helping yourself and having your tool help you. (more…)

Bashing Microsoft

Scientists have proven that eighty-four per cent of Microsoft-bashing is ridiculously wrong, and that all that rubbish makes valid criticism of Microsoft look bad.

2009-11-02

API documentation using literate tools

API documentation is a particular subclass of literate programming. What makes it special?

First, its audience is diverse. Some readers know almost as much as the maintainers about the subject, others are rank beginners. Many know quite a bit about some parts of the subject and are almost ignorant of other parts. Some readers like to point and click, others prefer dead flat trees, others again prefer on-screen plain text such as man pages (I do, because I can type much faster than I can point and click). (more…)

I think I stopped using the KDE today

After eleven years and a bit, I think I stopped.

Alt-F2 was too slow, and the application serving it ate 400MB RAM including all the shared libraries it didn't actually share with anything. (more…)

2009-10-22

All the world's alphabets

Below are almost all the letters in Unicode. Let me see what my browser can render.

Arabic: ء آ أ ؤ إ ئ ا ب ة ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ى ي ٮ ٯ ٱ ٲ ٳ ٴ ٵ ٶ ٷ ٸ ٹ ٺ ٻ ټ ٽ پ ٿ ڀ ځ ڂ ڃ ڄ څ چ ڇ ڈ ډ ڊ ڋ ڌ ڍ ڎ ڏ ڐ ڑ ڒ ړ ڔ ڕ ږ ڗ ژ ڙ ښ ڛ ڜ ڝ ڞ ڟ ڠ ڡ ڢ ڣ ڤ ڥ ڦ ڧ ڨ ک ڪ ګ ڬ ڭ ڮ گ ڰ ڱ ڲ ڳ ڴ ڵ ڶ ڷ ڸ ڹ ں ڻ ڼ ڽ ھ ڿ ۀ ہ ۂ ۃ ۄ ۅ ۆ ۇ ۈ ۉ ۊ ۋ ی ۍ ێ ۏ ې ۑ ے ۓ ە ۮ ۯ ۺ ۻ ۼ ۿ ݐ ݑ ݒ ݓ ݔ ݕ ݖ ݗ ݘ ݙ ݚ ݛ ݜ ݝ ݞ ݟ ݠ ݡ ݢ ݣ ݤ ݥ ݦ ݧ ݨ ݩ ݪ ݫ ݬ ݭ ﭿ ﯿ ﺿ (more…)

2009-10-16

udoc

Udoc is the name of my latest program to do literate programming, and I'm reusing it here, for writing about the subject. It is perhaps not a very good name, but I used it since the subject is such a many-faceted one:

API documentation is what I did at Trolltech. At least that's what I thought I was doing at the start. As I was developing the format and writing text, I found I could use the documentation for two other purposes:

Maintainer documentation is one half of what Abhijit and I do for Archiveopteryx.

Writing better code through writing documentation and thereby developing a better understanding.

Checking boxes is what I see much too often. There Shall Be Documentation, or I Will Document My Code; but the actual documentation is meaningless — doesn't answer any questions I have about the code or interface.

Literate programming tools can be used for all three. Some are better suited to one purpose, some to another. Disciplined usage can help reach a goal even if the program fails to help — I still think it's a failure, though.

2009-10-15

Crawlers able to reach this site: 0

Googlebot, msnbot and Yahoo Slurp have all seen links to rant.gulbrandsen; none of them followed the links.

On one hand, a blog which can't be indexed by the major search engines is pointless. On the other, this particular blog is really a CMS/publishing tool for my writings and ramblings about udoc and literate programming, and until I'm done with that subject, it doesn't matter much whether anyone can read the site, oops, the blog. So I'll leave it 6-only until that writing is more or less done, then reconsider the matter.

2009-10-14

The history of udoc

The origin of udoc goes a long way back, to when I still was a student at the University of Trondheim, the world's first and only Quasar Toolkit user, and about to start working at Trolltech, which at the time was called Quasar Technologies (Hi Haavard) and occupied a room and a half overlooking a busy street in a rather unfashionable part of Oslo.

I wasn't very happy with the Qt documentation, which was then written using LaTeX macros and already obsolete. I was also an opinionated asshole and far too sure of myself, and I'd just learned about Donald Knuth's literate programming techniques, but I hadn't read his book. Naturally I looked at the existing litprog tools (there were quite a few) before discarding them all to write something good. (more…)

Arnt rants and rambles on literate programming etc.

This is a placeholder.

I'm the next many months, I'm going to write long series of semirelated postings on source code documentation, covering the techniques I developed at Trolltech and extended for Archiveopteryx, what other people are doing and what I think of it all.

This is the introduction, which I mean to revise so it points to this and that. It points to nothing yet, there being nothing it could sensibly point to.

Udoc: The Name

For a long time udoc was called qdoc. Because Trolltech might want to release its qdoc (abbreviated from qt doc tool for no particularly good reason), it seemed sensible to rename this one before release. A simple matter — just step along to the next letter, I thought. But then there turned out to be something called rdoc already. And two programs called sdoc. tdoc was taken too. A few quick searches showed that there are more than 26 programs like udoc.

You can understand why I considered naming it fdoc.

Mikrotik RouterOS, OpenVPN and IPv6

Mikrotik makes a series of small, neat routers. I have a 433UAH (with indoor case), which has a VPN tunnel to OpenVPN running on a rented server at vollmar.net. This describes how to build an IPv4 and IPv6 VPN tunnel between a Mikrotik router with a dynamic IP address and a Linux server running OpenVPN with fixed IP addresses. (more…)

2009-10-12

Canter & Siegel: What actually happened

Canter & Siegel posted a few thousand spams (the famous green card spams), probably helped by someone with imagination and technical skill. Long and tiresome threads discussing the legality, morality and all other aspects of this resulted. Canter & Siegel then tried again on a different subject, this time without able help.

On the same evening, my friend Chris Owen posted a 300-line diatribe, rebutting something or other point by point. I clicked. I just couldn't bear to read it, and decided: It's time to stop discussing this and do something. (more…)

2009-10-08

Why this is on IPv6 only

New IPv4 addresses are being allocated at a rate of 6-7 per second and there aren't very many left. In a while, we're going to run out. What then?

I think that when it happens, some people will try to buy other people's IPv4 addresses, but frankly I doubt that there'll be enough willing sellers to supply 6-7 addresses per second, so at least some people will have to make do with only IPv6 addresses. That's going to be painful.

That period will be less painful if a few people put web sites and other services on only IPv6 now, so that the transition starts sooner, with fewer victims, and ramps up later.

I'm not willing to do all that much. But this blog is unimportant, so I put that on IPv6. I could have used a name-based virtual host or used one of my free IPv4 addresses, but someone has to make a start.

Later, maybe I can put something other than a web site on IPv6.

2009-10-07

DVDs the Popcorn Hour A-110 can't play

I own and like a Popcorn Hour A-110, but I don't agree with all the web pages that say it plays everything.

Below is list of things I've tried to play that cause the player to freeze. In each case I ripped the DVDs using k9copy (a straight copy, no recompression or size/quality reduction). When I try to play the resulting ISO files the player freezes, does not react to the remote control, and has to be power-cycled. (more…)

Solved: fatal error in vts css key

Most Unix DVD players, and the Popcorn Hour boxes, use libdvdcss to play DVDs and ISO images. Libdvdcss is a fine piece of software and decodes almost all DVDs.

One of the DVDs it cannot play is this version of Moulin Rouge, which uses many different CSS keys, including one libdvdcss (version 1.2.10) cannot crack: (more…)

The blogger and the blog

Postings to this blog represent the opinion of Arnt Gulbrandsen, arnt@gulbrandsen.priv.no, Schweppermannstraße 8, 81671 München, Germany, fax +49 89 45029758. If something sounds more like fact than opinion, then it represents my understanding at the time of writing, no more.

Links to other sites worked as intended at the time of writing, but of course I cannot vouch for their accuracy or veracity at the time of reading.

There is no comment form here, because German law requires moderation, and in my opinion comments aren't worth that horrible chore.

Please send me email if necessary.

2009-02-12

Quickmill 3035 Pegaso

The Quickmill 3035 Pegaso, also called Quickmill 03035 or Quick Mill 3035 (or other combinations of the same units) is an espresso machine with built-in coffee grinder and an unusual heating mechanism. (more…)

2004-02-12

Too Much Documentation

This is a bit of a rant.

I claim that, for any single page in a documentation set, whether it's pages in a book, web pages on a documentation site or even unix man pages, one of these three cases holds: (more…)

2003-05-20

Jabber vs. IRC

IRC ignores characters sets while jabber always uses Unicode and clients map appropriately. On Jabber, München is München. On IRC it's München or M�nchen sometimes and each user has to (more…)

1996-04-05

My favourite RFC

Although it was published on April 1, I have been told (by someone who was there) that it was intended to be taken seriously. I quoted it for the first time on April 5 (working on metis), and like to quote it still; this post is a bit of faux history with link targets for each truth (more…)