Okay, I polled the twitters and enough people said that musing about worldbuilding was more interesting than it was masturbatory. So, in that case:

Assume that I desire a world different from ours in tech, but quite advanced in its own way. Does it make sense for this world to not have fossil fuels, and thus not have (or have a very different, less dirty) industrial revolution? Could it get to a point where it has, let’s say, widespread electric (or similar) power, intensive agriculture, and advanced medical technology (or at least around our level)? What differences would be implied for their culture? What sort of lifestyle would they have?

Example: lack of fossil fuels implies fewer/different plastics, and thus not having cheap synthetic fabrics. Clothing would be less disposable, people would own less of it, and it would be made/repaired with greater care.

For extra credit: does the scenario change if a) their environment is physically/geographically constrained so as to limit growth, and/or b) the society did not develop independently, but was seeded by another high tech one (e.g. us) so that they started out already having reasonably good non-fossil-fuel energy sources.

This morning in the shower (formerly my favourite place for musing about random shit, though rapidly being supplanted by my bike commute) I was pondering something a teacher said about XLR cables and gender changers, and I got to thinking about what sort of lifeform would be male at one end and female at the other, and if that existed, what role would something play that was female (or male) at both ends? Next thing I knew, I had a fairly complex society imagined, with line marriages and rites of passage and institutional oppression and all that good stuff* (* not actually good stuff). And of course I started thinking that I should write something. The problem is, I have this world but no story to go in it.

Last time this happened, it was a complex alternate history of convict-era Australia, where the French invade in 1802 and the resistance is formed of the former NSW Corps and some of my favourite bits of the Royal Navy. But, hilarious as it would be to make Macarthur and Bligh team up to fight crime the French, I don’t actually want to tell that kind of “yay! colonialism!” story, and so all my detailed worldbuilding sat and gathered dust for a good long while.

I can’t remember which of our summer house-guests it was (anatsuno?) who suggested that I simply tell another story — one that I wanted to tell — set in that world, with all the military invasion stuff as background rather than foreground. It was excellent advice, and the story that I subsequently started to write is definitely the better for it.

So, what about this world with the gender stuff I was thinking about? I’ve got the background, but what’s the actual story? I randomly wondered what a police procedural would be like, and started building something around that on the bike ride home. It’s turning out quite interesting in my head, but that was a genre chosen more or less at random, which seems like a rather hit-or-miss method.

Do any of you have this worldbuilding-first habit? If so, how do you find the damn story?

The night before last, I had a dream that O’Reilly Media were making a Hollywood film — a romantic comedy, to be exact — about public key cryptography. The lead characters were called Alice and Bob, and they met cute by bumping into each other on the street and dropping the USB thumbdrives that had their private keys on them.

I’m suspect you could actually make a good story out of this, albeit a bit of an over-didactic Doctorow/Stephenson-esque one, since you’d have to ram in quite a lot of techno-cultural exposition along the way if you wanted it to make any sense at all.

Plan a Trip Through History With ORBIS, a Google Maps for Ancient Rome – How come it took three weeks for me to hear about this mapping hack to help you understand travel routes and expenses in Ancient Rome? Maps, history, digital humanities — what's not to love? I only wish this existed for other time periods. Imagine how useful it would be for people writing historical fiction!

Criminal Creativity: Untangling Cover Song Licensing on YouTube – A few interesting things here, including the little-known fact that you need a (nearly impossible to get, if you're an ordinary person) synch license to post a cover song on YouTube, and that ContentID can now identify cover songs, up to and including drunk guys belting out "Bohemian Rhapsody" in the back of police cars.

Brodustrial: WWJD? – Via jwz: an industrial music performer discovers he's booked to play alongside some really nasty bigots. Asking, "What Would Jello Biafra Do?" he ends up calling out the racism and sexism of the other bands' lyrics, videos, and album art in a PowerPoint presentation — while opening for them. It's good viewing, but NSFW.

bootlegMIC | Open Music Labs – A better mic for your iPhone, inspired by the crappy sound of all the concert videos on YouTube. Sold as a kit, the bootlegMIC is a small electret mic that plugs into your phone's headphone jack. Gain adjustment is done by swapping out resistors til you find one that works for your phone and use case.

DJ Rupture’s Sufi Plug Ins – Great post about Western assumptions built into music software such as Ableton, and some plugins that challenge those assumptions.

A while ago I started collecting examples of copyright hypocrisy, with the intent of creating a definitive list of cases where copyright bullies are caught infringing the same rules they say everyone else should obey.

Ravelry API – Wait, what? How did I miss this. Ravelry has an API now, and they've been using it internally since Feb 2012, so it isn't just an unloved add-on. (You probably can't follow the link, which is to the Rav API forum, unless you're a member. But anyone who might be interested in this probably is already, so…)

Our real first gay president – Newsweek says Obama's the US's "first gay president", ignoring James Buchanan, who was openly gay in the 19th century. This article has some great context and thoughts on the ideology of progress. "Remembering that James Buchanan was homosexual complexifies our national narrative, to be sure, but it is a complexity that we need."

The Bombay Royale – Karle Pyar Karle – Check out The Bombay Royale. They're a Melbourne band (including some recent graduates from my school) who play surf/disco/funk/Bollywood fusion, and apparently they've got a gig at the HiFi Bar on Swanston Street this Saturday. I'm planning on going.

I’ve seen a few people, over the years, compare knitting to programming. It usually goes something like this:

Wow, have you ever looked at a knitting pattern? It looks kind of like source code! Those knitters must be real geeks!

And it’s often accompanied by a snippet of a set of actual knitting instructions that look like incomprehensible gibberish to the uninitiated, but which your grandma could probably read and turn into a jumper or a scarf or an attractive toilet-paper-roll cover (my Nanna actually knitted these!)

In case you haven’t seen this kind of knitting pattern before, here’s an example:

A typical knitting pattern from the 1940s. This one is Sun-glo pattern #2616, "Country Club", a sporty cabled sweater in two colours, in case you were wondering.

There was even a post a little while ago entitled Knitters and coders: separated at birth? that talked about knitting patterns as code, and worked through some examples using regular expressions. It was a good post, but I don’t think it went far enough, so I want to riff on it a bit.

Here’s the thing. Let’s say you have a pattern that says:

row 10: k2 p3 *(c6f p6) rpt from * 8 times c6f p3 k2

(Or as the aforementioned article would put it would put it, (c6f p6){9}.)

You read those instructions and do what they say, producing a row of knitting that incorporates a number of cable twists against a purl background.

Is what you’re doing programming? Of course not! It’s the reverse of programming: you’re reading a series of low-level instructions and doing what they say. It would be more accurate to say you’re an interpreter, or possibly a compiler, since it’ll usually save you time and trouble to read a pattern right through before you begin. (Ask me how I know. Ugh.) You might even be called a human computer.

But let’s be clear: even though what you’re doing when you read a pattern is a complex technical skill, and involves code, it’s not programming.

Despite that, I very firmly believe that knitting is like programming. I just think that the common analogy drawn — of printed knitting patterns as source code — is not a very good one for describing the intellectual process of knitting as it is practiced by the current generation of geeky crafters.
To explain this I’m going to have to take a detour, so please bear with me. What follows is based on conversations I had years ago with my friend Rose White, aka @yarnivore, who studies hacker culture and presented at CCC (a hacker conference in Germany) on the subject of guerilla knitting. Watch Rose’s guerilla knitting talk on Youtube. I’m going to proceed to paraphrase Rose for the next few paragraphs here, so credit goes to her, and all blame for any errors to me.

In her presentation, Rose talks about knitting patterns as intellectual property through history. When knitting was first developed in the middle ages, it was a secret skill known only to the members of exclusive knitting guilds, who didn’t share it with anyone else. However, as Rose points out, knitting is easy to reverse engineer, so it didn’t take long for non-guild people to figure it out and start doing it. As one of the great knitters once wrote:

“Really, all you need to become a good knitter are wool, needles, hands, and slightly below-average intelligence. Of course, superior intelligence, such as yours and mine, is an advantage.” — Elizabeth Zimmerman

And so, from about the 16th or 17th century onward, you start to see more people knitting for themselves and their families, or as a cottage industry. Throughout this period, a number of traditional knitting styles and patterns were developed, but the fundamental thing about them was that, for the most part, they were the sort of patterns you could pass from person to person without writing them down.

Take a sock as an example. The simplest sock is a tube of fabric knitted until it’s long enough, then closed up at one end. Of course, it’ll fit better if you find a way to make it bend at an angle around the heel, and there are a number of techniques you can use for that. Ribbing at the cuff will help it stay up better. If you want a long, shapely sock you can add more stitches around the calf and reduce them at the ankle. You’ll save yourself some discomfort and possible blisters if you find a way to graft the toe end instead of sewing a lumpy seam. And of course you’ll probably want to embellish your sock according to the local fashion: perhaps a fancy coloured band around the top, or twisted cables down the side, a repeating texture all over.

This is just the icing on the cake, though: socks are all just tubes, when you get down to it. Fundamentally, there’s nothing about knitting a sock that needs a pattern; for hundreds of years, all anyone needed was a “slightly below-average intelligence”, an already-knitted one to look at every so often for reference, and perhaps a few pointers from someone who’d done it before. Gloves, jumpers, and other knitted garments are much the same. For the most part they’re just a series of tubes. Ba-dum-tish!

Fast forward to that point in the industrial revolution when most textile production has become mass production, most working class people are pulling long hours in factories and mills, and it’s cheaper to just buy a pair of socks than to knit your own. At this point, knitting becomes a bit of a luxury activity, and you start to see this in the proliferation of Victorian-era knitting books for ladies, specialising in delicate items like lace doilies and silk purses. No longer were people knitting practical items based on traditional patterns you could figure out with “below-average intelligence”; it became hip to show off your accomplishments by knitting increasingly complex and fiddly items, the patterns for which you could find in the finest publications for the discerning gentlewoman.

And then, in the 20th century, something truly awful happened. You see, the yarn companies realised that if they started publishing patterns themselves, they could use them to sell more yarn. But they didn’t want people using just any yarn. The idea was that you’d buy, say, a Patons pattern and then buy the Patons yarn to knit it with. To make sure that consumers were locked into the Patons brand, they’d make sure that the patterns were obfuscated so you wouldn’t be able to figure out how to substitute another company’s yarn.

This is fundamentally bullshit, and it’s amazing that they ever got away with it, but by this stage people had lost touch with a lot of the traditional methods, and so they didn’t have much choice. Just so the non-knitters understand how diabolical this is, let’s pause for a moment to talk a bit more about how knitting works. If you already knit and know about gauge and yarn substitution, you can skip down to below the next image.

Knitting is basically formed by repeating a single stitch (the knit stitch), which loops a length of yarn through itself in such a way as to form a stretchy fabric. To create a piece of knitting, you “cast on” a certain number of stitches, then knit, either back and forth, or round and round in circles. Each stitch looks like a “V” on one side and a sort of nubbly or wavy effect on the other side. If you want to see this, take a close look at your socks, which probably have Vs on the outside, nubbles on the inside, and alternating Vs/nubbles in the rib around the top. (A “purl” stitch is just a backwards knit stitch, with the V and nubbly sides reversed.)

Depending on the thickness of your yarn and needles, your stitches might be tight or loose. Big needles give looser stitches, and small needles give tighter ones with the same yarn. The measurement of this tightness or looseness — how many little V shapes you have per unit of distance — is called gauge or sometimes tension. For instance, worsted weight yarn on 4.5mm needles normally knits up at a gauge of 5 stitches per 2.5cm/1″, while finer yarn knit on smaller needles will have more stitches in the same distance.

As long as you know the gauge of your project and the yardage it requires, it’s fairly simple to substitute one yarn for another. However, 20th century yarn companies didn’t want you to know this, and they went out of their way to make sure you were locked in to their proprietary system.

So, this is the system that created knitting patterns like the one I linked at the top of this article, where yarn companies write the patterns and knitters interpret the code and execute it, without much input into the process, not even a choice of what yarn to use.

If being an instruction-executing machine doesn’t sound too appealling to you, you’ll be pleased to hear that there is an alternative. Modern knitters, especially those online, are increasingly returning to traditional techniques, making their own patterns, and adapting existing patterns to their own needs. One of the great leaders in this trend was the late, great Elizabeth Zimmermann, quoted above. EZ, as she is known, helped popularise, or perhaps re-popularise, traditional forms of knitwear in the United States, and along the way taught knitters to throw off the shackles of mid 20th century commercial knitting patterns and think for themselves again.

One of EZ’s best known patterns is for a sweater knitted to what she calls the Elizabeth Percentage System, or EPS. It’s so simple that almost anyone can understand it, and I often use it as an example when explaining the technical side of knitting to non-knitting geeks. It goes something like this:

Knit a gauge swatch and measure how many stitches per inch you have. Now measure your torso around your widest point, or your favourite existing sweater. Multiply the number of stitches by the number of inches. This is your key number (K).

Using a circular needle, cast on K stitches. This will be the hem around the bottom of your sweater. Knit until you get to the armpits (measure yourself or a favourite sweater to figure out how far that is).

For each sleeve, cast on 20% of K, then increase gently (2 stitches every 6 rows should about do it) til you get to 33% of K, then knit straight until your sleeves are long enough.

Join the sleeves to the body, and knit the yoke area (i.e. upper chest and back), decreasing — in one of several possible ways, all of which can be derived arithmetically — until you get to 40% of K, which is the neck opening, and cast off.

Of course, you can elaborate in various ways: ribbing at hem, cuffs and collar; textured stitches across part or all of the garment; coloured designs in the yoke area; leave a gap at the front and knit back and forth to make a cardigan. The options are endless, but the fundamental design is the same.

Now, people will possibly point out that EZ’s EPS pattern is copyright, but there’s a lot of bullshit about copyright in the knitting community, so let’s be clear right now: ideas cannot be copyrighted, though the expression of them (the specific words EZ wrote in her books and newsletters) can be. The idea of EZ’s EPS sweater is simple, based on traditional techniques, easy to reverse-engineer, and in fact could be done by anyone with “below-average intelligence” as she herself points out. There’s nothing tricky about it, it’s just simple craft.

But taking this simple kind of design and elaborating on it is where knitting really becomes like programming. When I knit a sweater this way, I’m not executing instructions written by someone else. I’m creating my own code, designing and implementing my own project from the ground up.

I start out by considering my requirements: What sort of garment do I want: pullover, cardigan, long coat? What design elements do I want to incorporate: pockets, a hood, shaping to make it more fitted at the waist, a warm shawl collar, those awesome thumb-holes in the sleeves that let you pull them down and wear them as fingerless mittens? What materials and tools do I have at my disposal? Can I take the opportunity to try out a new technique or refine my skills?

I prototype my design by knitting a swatch or something small like a hat, using the same stitches and yarn as I’m thinking of using for my finished project. From this, I figure out my gauge, and using one of the many tools available I can calculate the yardage I’ll need, without ever relying on a yarn company to tell me how much of their product I ought to buy. Modern yarn sellers list the yardage of their yarn on the label, or failing that, websites like Ravelry have all the information I could need.

To implement my design, I draw on a variety of design patterns — yeah, knitting’s had them far longer than OO programming has — that I’ve learned through classic books like EZ’s or Barbara Walker’s, and through blogs like TechKnitting: short row shaping for better fit, twisted rib for extra stretch in the cuffs and collar, underarm grafting to make a seamless join, endless options for buttonholes, cast-off techniques for all occasions. Some knitting techniques even follow agile principles, like EZ’s “thumb trick” for mittens or her “afterthought pockets”, which are inserted when and where needed without requiring Big Design Up Front.

When it comes to this kind of knitting, an experienced knitter is one who takes a modular approach, mixing and matching existing patterns and individual techniques, to build a finished product. It’s someone who can look at a pattern and figure out how to knit it in a different yarn, a different gauge, and a different size, without breaking a sweat over the calculations. It’s someone who geeks out on the knot topology, the 3D spatial reasoning, and the materials science of it all… and knows how to put them to practical use. It’s the difference between being a code monkey and being an engineer.

So when we talking about how “knitting is like programming”, let’s take a minute to go beyond reading and executing code and think about how much further knitters’ technical skills really extend.

Epilogue: Since I suspect a bunch of geeky knitters will read this, I’m going to lay out my current technical challenge and see if anyone has any thoughts.

I’m knitting a triangular shawl beginning at one of the tips, started by casting on 3st and increasing at the start of every second row. It has integral i-cord borders, which I’m doing by yf, sl 3 at the end of each row, then on the next row I k3 then continue as usual.

On the straight side of the shawl this makes a nice border, firm but stretchy. But on the diagonal side (i.e. the side with the increases) the i-cord, which after all only has half as many rows as there are in the main part of the knitting, is stretched really tight. I’m worried that it’s going to limit my ability to block the shawl as vigorously as I’d like to.

My current best idea is that every second time I do the i-cord on the tightly-stretched diagonal side, I insert an extra row. That is, I would go yf sl3 at the end of the previous row, turn, k3, slip them back on the original needle, then knit the three stitches again and continue. I figure this gives me 3 i-cord rows for every 2 I had previously, which is not far from the sqrt(2):1 ratio of the side lengths. Anyone done this before?

When I posted the comment policy the other day, it mentioned that comments on any given post close after a certain time, and if you want to leave a comment elsewhere you should do so on the most recent open thread. So, here is one for that purpose.

I’ll also make it an “ask me anything” thread, in the tradition of the AMA forum on Reddit. If you’ve got questions about sound engineering, Melbourne, leaving tech, or whatever else, bring ‘em on.

Mitt Romney, Bully In Chief? – s.e. smith brings a solid analysis of Mitt Romney's school "pranks" (read: homophobic bullying) and what it could mean for his possible presidency.

Chumbawamba – The Diggers’ Song – YouTube – Who knew that Chumbawumba had recorded an album of songs of political rebellion from 1381-1914? Not me for sure. This is their rendition of "The Digger's Song", a 17th century song by the same group that Billy Bragg sings about in "The World Turned Upside Down".

MOTU 4pre – Really nice looking 4-channel mixer/analog-digital converter from MOTU. I've got the Ultralite Mk2, but if this had been around when I was shopping, I would have bought it for sure. The two "Hi-Z" inputs so you can plug in an instrument without a DI look particularly handy.

Mapping hacks for the 17th-18th centuries – Say you're an early modern historian with a bunch of data about 18th century Paris. How do you display it using modern mapping tools, given that old streets may have changed or disappeared?

Somehow I missed this back in March (see also: not being very functional online lately), but it seems like Apple is ditching Google Maps in favour of OpenStreetMap. They’ve already started using it in iPhoto and word is it’ll replace GMaps throughout iOS in the not-too-distant future. Official announcement, more commentary and analysis from searchenginewatch.

This is great, because it saves me from trying to figure out how to do it myself. I’ve tried a couple of OSM apps for iOS but haven’t found a particularly good one. They tend to be slow, ugly, and of course not integrated with other apps. So, I’m looking forward to seeing what Apple delivers.

I’ve been trying to get away from using too many Google apps since they showed their true colours last year. Opting out of the Google monoculture only to buy into an Apple one wouldn’t seem like a win, except that the underlying data is open licensed, which makes a big difference as far as I’m concerned. In some ways this reminds me of a project I worked on at Monash University, lo these many years ago, where the policy was, “use whatever proprietary crapware you want, as long as it supports open standards.” At the time we used it to choose Netscape SuiteSpot (pause to laugh — but it supported POP, LDAP, iCalendar and the like) over Microsoft Exchange.

Like the open standards that underpin the Internet, OSM’s open license means a variety of apps and platforms can be built on it, and users can choose between them. And, with any luck, corporations like Apple will contribute back (with money or staff or just a vague aura of legitimacy) bring OSM the same sort of respectability that Linux and other open technologies have gained over the last decade or so.

So anyway, once I can cut over to OSM on my phone, the most important Google apps I have remaining are mail and docs. With regard to mail, does anyone have an alternative which is:

as searchable as GMail is, or nearly so, and

has decent keyboard shortcuts?

I rely heavily on those features, and would find them pretty hard to live without. I’ve tried IMAP with Thunderbird and Mail.app in the past, and am not particularly happy with them, so let’s assume those are off the table for now. I’m actually almost tempted to go back to a command-line based solution, perhaps offlineimap and mutt with some heavy indexing.