I tell my children not to lie. My parents told me not to lie. I’m pretty sure that by far most parents tell their children not to lie. Aside from used car salesmen and politicians, I think not lying is pretty engrained in what we expect of each other. That is not to say that used car salesmen and politicians lie: that is to say we expect them to lie: there is an engrained distrust in society toward people who embellish or promise things for a living.
The real problem is when procedures force us to lie, and force us to use our tools in a way to make them lie. One way to make my favorite version control tool, Git, lie is by using
git-rebase. The rebase command allows you to re-write history — to pretend that when you created a given branch isn’t really when you created that branch: you created it at some other point in the code’s history in stead.
Imagine, just for a moment (it would be painful to do this longer than just a moment) that Linus, when he decided to leave BitKeeper behind, switched to Subversion in stead of developing Git and that for any commit into the master branch of that repository, you’d need his approval. While you’re imagining that, just a few microseconds more, imagine he stuck to his guns.
Either Linux would no longer exist or Linus would have been declared mad, and Linux would have moved on without him.
Centrally managed version control systems are fundamentally flawed and impede productivity. Any project with more than a handful of developers/programmers using a centrally managed version control system will either lose control over the quality of the product, or bring productivity to a grinding halt.
I am not usually one to make much of a fuss about coding style: as long as the code is easily readable, I don’t much care whether you use tabs or spaces to indent, how you align your curly quotes, etc. There’s really only two things I do care about when reading new code:
- is it easy to read the code without being misled by it?
- does the new code integrate well with the rest of the code?
I do have a few suggestions, though, but above all, I recognize it can be difficult to change habits — and therefore to change one’s coding style.
An just to remind myself and some of my colleagues, I drew this on the office whiteboard yesterday:
Among the most common errors in software involves problems using the right parameters for functions like memcpy, memcmp, memmove, strcpy, strcat, wcscpy, tcscpy, etc. Often, the bugs are simple off-by-one errors, character strings that don’t end with a NUL character, … Continue reading
Vlinder Software has deployed SPF DNS records on the vlinder.ca domain, tagging any E-mail not sent by one of the mail servers we normally use as a “soft failure”. In light of our project to roll out spam prevention measures … Continue reading
It has come to our attention that a spammer, apparently of Russian origin, has been sending spam E-mails with forged From: addresses in the vlinder.ca domain. An example spam E-mail runs as follows: From: firstname.lastname@example.org Subject: RE: GALE - Copies … Continue reading