An odd thought: I have written software for a computer whose CPU was used as an I/O controller for a computer that I have programmed, whose CPU was used as an I/O controller for a computer that I have programmed. So far, I’m not aware of the i7 being used as an I/O controller.

Posted on by Graham | Leave a comment

Programming language advent

http://shape-of-code.coding-guidelines.com/2014/12/01/algol-60-awk-algol-68-ada-apl-and-assembler/

The first article, containing languages beginning with ‘A’, is linked above. I can tell this is going to be a month of reading.

Posted in tool-support | Leave a comment

That can’t possibly work.

A while back I was at a Facebook developer event, talking about techniques for analysing Objective-C. My summary of the problem was something like “it’s one of those things that works pretty well in the ivory towers of practice but completely falls apart when you try to use it in theory.”

That’s true of many things in building software, but as people who get paid for removing bugs from things we’re all too good at the situations where the theory doesn’t pan out. Problems arise when we report the overly general conclusion: “that doesn’t work” rather than “there exists a condition in which that doesn’t work”.

Often, the appropriate thing to do is to build the thing anyway and extract value from it in the cases where it does work. Most Ruby code is just Java with different punctuation: if you build a thing that can’t possibly work because of monkey patching then build it anyway and 100% (give or take) of Ruby you actually encounter will work with it.

If it were up to programmers we wouldn’t have paper money. You can’t promise to back 10× as much money as you’ve actually got gold to make good on, in case everyone asks for it back. Ah, but what if they don’t?

And even if you find that the edge situations arise too frequently to make the thing you built worthwhile, you’ll have learned something about the problem. You may find a different approach, or even that solving a slightly (or greatly) different problem is what you really want to do.

When someone tells you the thing you want to build can’t work, build it and work with it. If only for the look on their face.

Posted in learning | Leave a comment

Détournement and Recuperation

Letterists International probably invented the ideas behind free software and creative commons. They created the idea of détournement, in which existing mainstream logos and slogans were subverted for anarchist, satirical and other radical political purposes, like the picture of the Queen defaced in the cover of the Sex Pistols single.

The counterpart to détournement is recuperation, in which radical ideas are appropriated by the cultural mainstream to be re-used in safe contexts, like the use of Thunderclap Newman’s “Something in the air” to advertise an airline.

Free Software enables both of these: mainstream software made available under free software licences like the GPL can be put to radical new uses because of the terms of the GPL. But it also enables software built to political ends, and shared under those terms, to be put to mainstream uses.

If anything, open source software is a bigger enabler of recuperation. By relieving receivers of the pay-it-forward obligation, open source licences make it easier for incumbent organisations using traditional software model to make use of ideologically-motivated software publication.

Posted in philosophy after a fashion | Leave a comment

Today’s surprisingly short workflow-improving win

When I have a TODO comment (or a #error in code, which is how I frequently do TODOs), I switched to writing the commit message I want to be able to use when I’ve fixed the TODO. Then I write the thing that’s missing, kill the TODO and yank it into the commit command.

Posted in code-level, documentation | Leave a comment

Meritocracy is a myth. And our belief in it is holding back the tech industry from getting better.

The intent to be meritocratic is not a myth, but we know what road is paved with good intentions.

—from Tech’s Meritocracy Problem.

Posted on by Graham | Leave a comment

http://computinged.wordpress.com/2014/11/13/why-nerd-culture-must-die-not-everyone-can-teach-themselves/

Truth.

Posted on by Graham | Leave a comment

http://queue.acm.org/detail.cfm?id=2687011

There’s no such thing as a General-purpose processor, and belief in such a device is harmful.

Posted on by Graham | Leave a comment

Joe Armstrong thinks we don’t need modules in software. Instead, all functions should have unique names and be published in a global database.

Posted on by Graham | Leave a comment

http://shape-of-code.coding-guidelines.com/2014/11/06/cobol-2014-perhaps-the-definitive-final-version-of-the-language/

Cobol now has function pointers :O

Posted on by Graham | Leave a comment