Arnt Gulbrandsen
Send me mailAbout meAbout this blog
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-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-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-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-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-03-16

Hard work vs. silver bullets

Blog posting number one, from a typical silver bullet merchant (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…)

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-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.

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-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-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-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-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-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-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-02-01

Today's not my birthday

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

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…)