Arnt Gulbrandsen
About meAbout this blog
2016-12-02

A list of free email providers

I've updated my list of free email providers and put it on github, removing many domains that no longer offer such services. freemail.txt contains a one-per-line list of domains that offer free email. There are also scripts to create the list.

2016-09-01

Code review times two

I like code review but complain about it all the time. Why? The other day I had an eureka moment: There are two quite different kinds, which I will give the misleading names agile review and waterfall review, and I'm annoyed when the reviewers perform one kind of review and I want the other.

Waterfall development is centered around planning, development and deployment in stages: First plan well and get rid of most bugs, then implement what's planned, then review and test to fix the remaining bugs, then deploy. In this model, code review focuses on catching minor bugs, ensuring code style harmony, proper use of internal/thirdparty APIs, etc. Big questions such as is this feature a good idea at all? are out of scope, because that's been settled in the planning phase. (I'm not saying waterfall works in practice, only describing the theory.)

Agile development is different. Instead of planning well, agile development is based around an iterative process: Implement something that seems to be a good idea, consider it, learn something from it, finish it and then deploy, then pick something else to do, something one now knows more about. Code review can be the first part of the consideration and learning process, so it's a good time to discover that although a feature seemed like a good idea, it's going to be a morass and should be dropped at once. (more…)

2016-08-31

Arak Al-Bustan

It is the last day of August. Tomorrow I start working, bright and early, but tonight I am still on vacation, if unpacking suitcases counts as vacation, and so I have tasted my latest bottle of arak, a variety called Al-Bustan, formerly perhaps made in Oman? There's a place called Al-Bustan there, I bought the bottle in the Muscat airport, and I haven't seen it on sale anywhere else. Formerly is formerly though, today it's made in Jordan, by the same distillery that also makes my favourite arak, Al-Zumot.

I'm glad I bought it.

Al-Bustan is nice, with a round, food-friendly taste. It's not great in the way Al-Massaya is, it just tastes of a happy occasion with good food. Oddly enough I liked it better pure than with water and ice.

2016-08-04

Life goes on

This autumn my work shifts from arthouse pixels to mass-market pixels. An occasion to post this remarkable photo:

It reminds me a little of a more modern descendant of the sparse modernist interiors, but sparser, sparser, and with a giant screen instead of art.

The picture comes from an advertisement. You're assumed to like the interior, and you're meant to buy the TV. Too late, that model is not on sale any more.

My work involves avoiding some things you don't see on the photo: A settop box and a hundred-button remote control. Less frustration, more reliability, better usability.

2016-07-29

Morbid bindings

The first thing I learned about programming in-person (not from a book or from code) was morbid bindings, a strangely unused term.

I learned it from a university employee called Eric Monteiro, who was oddly clueful in a generally sparsely beclued environment. Can't remember his title, or what he taught.

I had just listened to Eric answer someone else about multiple inheritance, and asked a followup question, which he answered, and then he digressed into relationships in general: When two things are connected in a program, the binding is always one of three: A kind, a belonging, or else it's morbid, and morbid bindings always turn out to be bad in one way or another. He gave me a quick example: This number in this file has to be at the same as that number in that file and I think I answered, such as maximum line length in two functions that read/write the same file? (more…)

2016-07-21

Open source is succeeding, and rms is unhappy

This summer Dropbox released an image compression thing called Lepton, effectively a better way to encode JPEG (same principles, same pixel results, considerably better execution of various implementation aspects). Dropbox didn't have to do that. But one does nowadays, it's become part of modern programming culture. Using and releasing open source is a best practice, as the buzzword goes.

Around the same time Richard M. Stallman posted a condemnation of companies that both support free software and teach classes in use of nonfree software. Condemnation is the word he chooses, not my choice. No fraternisation with the enemy!

That enemy is us, now. The enemy is those who follow today's conventional best practices. A stealth-mode startup I am talking to has ten projects on github, because the CTO there has decided that whatever good programmers consider good is what shall be done in his realm. Most of the projects are forks, some with PRs for upstream, others described as the code in this fork isn't really suitable for upstream, but take it if you want. Good, polite behaviour, best practice indeed, and very different from the GNU purity that rms requires.

What is left of rms' following if the good programmers are declared to be enemies? The outlook for the GNU project is poor.

2016-07-19

It's the attitude, not the wording

Once upon a time, a clever young programmer submitted a middling patch to the linux kernel. Not directly, it went to a subsystem maintainer who merged it with other code of his own and perhaps from other people, put his name on it and sent it to Linus. The young programmer's name was not visible. That was a bit of luck, because there was a bad bug in the code, the kind of bug that causes blaming, finger-pointing and angry email.

Only Linus, that maintainer and I knew that the young programmer was myself, and Linus never said an unkind word and didn't tell anyone who wrote the code either, so noone could email me and tell me their thoughts.

Fast forward twenty years, to when Sarah Sharp decided to stop contributing to the linux kernel. Sarah wrote good code for the kernel. I was sad to hear that she left, sadder about the reasons.

A lot of people blame Linus and his swearing for her leaving. I think that's unfair to Sarah, unfair to Linus, and worst of all, I think that we in the open source community hurt our community when we do that. Even if Linus' swearing hurt Sarah.

Linus has his faults. For example. when someone from Redhat wanted kdbus into the kernel, Linus' response showed good technical judgement, but it was also heated, loud and negative. Certainly not ideal. However, the fair comparison is not against an ideal. Linus' response ought to be compared to a standard professional response, plausibly something like oh, this code is poor, on the other hand that major stakeholder wants it merged. After a few rounds of squabbling and some cleanup the code is accepted.

That would be professional behaviour. That sort of professionalism is how a good, clueful CTO ends up with 22,000 messy lines of PHP despite a clear mandate from the board to prioritise quality. How teams end up selecting MongoDB over PostgreSQL. Possibly that's how Windows NT got graphics drivers in the kernel.

Linus won't tolerate that sort of professionalism, instead he'll swear and scream. Is that worse? I think not. It may or may not be better, but it's not worse. But because Linus behaves that way and attracts criticism for his loud swearing, some of the less notable opensource contributors escape criticism, and some of them are mean and spiteful as well as loud.

Saying fuck isn't that bad. In my opinion it's about as bad as being late for a meeting. A mean attitude is worse, much worse.

Since people focus on Linus' swearing, though, Linus' swearing opens the door to meanness and spite. A minor fault enables a major.

2016-07-18

Animated art

People have started making art using animations on the internet, mostly on tumblr. Great. Most of what I've seen is abstract, some not. All of it is art in a new domain and such a joy. Some examples I like (note that the last one of these probably shows a nude): 1 2 3 4 5 6 7. Several of these are by Florian de Looij, who also makes interesting inanimate art. (Neat word!)