KnitPicker - a knitting stitch counter programming project

Tuesday, August 18, 2009

The art of knitting lace is an intricate process; it takes great skill with knitting and the ability to keep track of complex knitting instructions. One day, my wife Sophie was knitting a particularly complex pattern, and she complained about not being able to keep track of how many stitches she should have for a particular row or how many should be left in the next row. Enter the programmer!

I’ve been throwing together little utilities for myself for ages. Sometimes I want to calculate some value that would take too long by hand; sometimes I want to sort a list in some particular way. Other times I have trouble deciding what to have for dinner, so I’ll write up a list of options and then pop in a random number to pick from it. I have one such script from ages ago that I used regularly when living in Montreal.

It was clear to me that Sophie needed software to handle her problem. With instructions spanning up to a hundred stitches, it’s the sort of thing that’s hard to keep track of in your head, and would take quite a bit of paper to work out by hand. Computers are great at keeping track of numbers and even better at doing arithmetic.

Knitting instructions use a very simple notation: k1 means “knit one stitch,” psso means “pass slipped stitch over,” and so on. These simple steps are listed in sequence to form a row of knitting, and this is the sort of thing a computer is great at processing. The kind of software that does this sort of processing is called a parser. A parser takes a string of characters and breaks it up into individual components called tokens.

I’m not a great parser writer, but I knew of a handy bit of software called Lex. It can analyze different pieces of each token and easily extract numerical information. This made it the right tool for the job, and its ease of use was an added bonus.

I wrote up a quick bit of Lex code, threw together a quick UI with Apple’s Interface Builder, and made the text field update its book-keeping every time the user typed in a new character. This made for a live-updating stitch counter that a lace knitter could use as they worked their way through a pattern. And so KnitPicker was born.

There are some limitations to the software at the moment, such as the lack of support for patterns that contain instructions on repeating a particular section. I had planned to eventually add such support, but never got around to it. Sophie had stopped knitting lace due to problems with carpal tunnel syndrome, no one else was using the software and I had other things to concentrate on.

Had there been other users demanding such a feature, no doubt it would have been added. I did take some time to research the problem, and I’m confident it would not be a big deal.

You can find KnitPicker at my main website, along with other things I’ve thrown together. All in all it was a good learning experience, and for a short while provided Sophie with a useful tool. It’s fun when you can meld your partner’s interests with your own and work out something productive.


The Idea Oubliette - Templates para novo blogger