Spiraling Twist Hat

Spiral Twist Hat

This hat is based around a simple pattern of twists, creating a design that spirals around the crown. The goal was to make a hat simple enough to knit without a pattern (on a bus ride) while still being more interesting than simply knitting stockingette forever and ever.

Casting on

Cast on a multiple of 6 stitches. I used 120 stitches on 5.5mm needles to give a fairly loose fit. Join without twisting and mark the beginning of the round.


  • Knit 10 rounds of k1, p1 rib. (k1, p1, repeat to the end of the round.)
  • Knit 2 rounds of stockingette (knit stitch).
  • Knit 9 rounds of k1, p1 rib.


The crown is made up of twists, followed by ribbing. On each row of twists, move any markers one stitch to the right. This means that, rather than purling the last stitch of the round before a round of twists, you instead twist it with the first statch of the next round.

  1. Move marker one stitch right. RT (knit into the second stitch on the left needle and, without removing the stitch from the needle, knit into the first stitch, removing both stitches from the left needle.) Repeat, twisting every two stitches together until the end of the round.
  2. k1, p1, repeat to the end of the round.
  3. k1, p1, repeat to the end of the round.

Repeat these three rows four times.

  1. Move marker one stitch right. RT until the end of the round.
  2. k1, p1 to the end of the round.

Repeat these two rows four times.

  1. Move marker one stitch right. RT until the end of the round.
  2. Remove the marker, slip the last stitch on the right needle onto the left needle and place the marker on the right needle. RT until the end of the round.


If you are using circular needles, when it becomes uncomfortable to knit the smaller rounds here, switch to double-pointed needles.

  1. k1, p1, k1, p1, k2tog, repeat to the end of the round.
  2. k1, p1, k1, p1, k1, repeat to the end of the round.
  3. k1, p1, k1, p1, k1, repeat to the end of the round.
  4. k1, p1, p2tog, k1, repeat to the end of the round.
  5. k1, p2, k1, repeat to the end of the round.
  6. k1, p2, k1, repeat to the end of the round.
  7. Move marker one stitch right. k2tog, p2, repeat to the end of the round.
  8. k1, p2, repeat to the end of the round.
  9. k1, p2, repeat to the end of the round.
  10. k1, p2tog, repeat to the end of the round.
  11. k1, p1, repeat to the end of the round.
  12. k1, p1, repeat to the end of the round.
  13. k2tog, repeat to the end of the round.
  14. k1 to the end of the round.
  15. k1 to the end of the round.

At this point, the hat has 1/6 of the original number of stitches. On a 120-stitch hat, this left me with 20 stitches. Repeat the last three rounds until you have ten stitches or fewer, then cut your yarn, draw the tail through the remaining loops and pull tight.

Golden Spiral Blanket - One square metre

Golden Spiral Blanket

This is the blanket I'm working on, with the eventual goal of having it be a bed-sized spiral.

Like so:

Twirling twist socks - One foot

Twirling Twist Socks - Toe and foot Twirling Twist Socks - Toe and foot

This is how far I've got in knitting the socks that woke me up. I'm just about ready to start knitting the heel flap. After that, the cable that features prominently on the foot here will split into two branches, each of which will twirl in opposite directions.

The cables will continue twisting in the same way as the cable on the foot, but will gradually make their way to the back of the sock, cross each other, then come back to the front of the sock again.

And again, the nice thing about this design is that, when it comes time to write down the pattern (which I seem to do after one sock, then follow it for the second) it's actually relatively easy to explain. Or, rather, it'll be easy to write down the exact stitches to make to end up with the same result.

Woken by socks

Dear knitblog,

I know I've been bad at updating you. I didn't knit from March through October. But I've started again. Working on a blanket now. All placid and black hole. And what I would like to cite as a sign of obsessive attachment:

I was woken up tonight by a pair of socks.

Not just any socks, but a sock pattern pretty enough that I can use my Knitpicks pretty-pretty-pet-it-pretty yarn on. (An xmas gift)

Socks where cables spiral around each other in a manner that is wholly an illusion, and is easy to knit. A pattern that I think I'll be able to actually chart and put up, unlike some of the more, shall we say, esoteric1 patterns I did in February and March.

The idea is this: A line of c2x2 twist up the foot, splitting into two cables that twist around the ankle, in opposite directions, propelled by KFBs and p2togs.

Anyway, I'm casting on a toe, and I'll see where it takes me!

  1. By which I mean 'needlessly complicated'.

Sierpinski/Koch Scarf - Halfway there

Now that I'm halfway done this project and no longer routinely swearing and ripping it out, I think it's time to show off my progress.

The project was partially conceived out of a desire to play with triangle-based fractals and partially out of a desire to make myself more comfortable with lace.

The bottom panel is a Sierpinski sieve after three iterations of the algorithm. Each panel goes back one iteration, until nothing remains but a triangle.

I'm currently knitting said triangle. After I'm done that, I'll go forward two iterations into the 2-dimensional Koch curve (or Koch snowflake). At the size I'm knitting, I only have the resolution to knit two Koch curves.

However, the Koch curve pattern (which I've sketched, but not yet plotted out with all its decreases) has the fortuitous property of being half again as large as the Sierpinski triangle. Hence, two Koch curves will be as long as three Sierpinski triangles.

I had a few false starts with the Sierpinski pattern, though. First, I misguessed how to angle the decreases, resulting in a random web of yarn. Second, I saw that once I'd knitted more than half the triangle, the corners of the fabric drooped dramatically. To fix that, I spread out and flattened the scarf, then placed a straight edge from the middle over the drooping corners and noted the row that it intersected. Having done that, I cast on with twice the number of stitches that that row had outside the pattern (twice 14 --$gt; 28). From there, I increased every row without a corresponding decrease, until the scarf was 45 stitches across, the width of the pattern.

I intend to, on the second Koch curve, decrease every pattern row for the last third of the pattern, giving it the opposite curve to the bottom of the scarf, rather than the simple curve that would result from casting off on a flat edge.

Sierpinski / Koch Scarf - Panel 3 Sierpinski / Koch Scarf - Panel 2 Sierpinski / Koch Scarf - Panel 1


A few days ago, I was approached by colorlessblue. She had a pretty sock pattern made up of triangles, but it required her to use exactly 64 stitches around.

Her difficulty was that she couldn't find a gauge in which that worked. Me first reaction was to say, "well, that's not a big deal, the pattern is trivial to make fit on a multiple of 12 or 14 stitches." Then I tried to explain what stitches to remove, and it really quickly became messy.

So I stopped for 15 minutes or so and drew a few patterns. As I started, she clarified that she didn't want to purl.

This is what resulted:

However, the absence of purl stitches meant that the resulting pattern would be triangles of vertical knit stitches with a zigzag border of slanted stitches. So, my next thought was, "Why not make the slanted stitches into the motif. That resulted in this pattern: It's not perfect by any means. The k2tog and SSK being next to each other results in a ladder. Were I continuing that tangent, I'd turn all paired decreases into double decreases. Also, as it turns out, I didn't like how the paired yarn overs at the apex of the triangle looked. At the same time as I was thinking that, I also wondered what would happen if the triangles were offset by half a repeat, giving the whole pattern a longer period before it repeats.

This pattern (which is almost the same as a Barbara Walker one) has the property that the knit stitches actually form themselves into vein-like curves: the diamonds end up looking like oval leaves.

I tried knitting it half in knit and half in purl, to see if that would give the leaves more shape, but that ended up being a step too far: The lace lost enough of its definition that the pattern looked awkward and no longer anything like leaves.

I think I'm likely to use this one at some point, possibly as a motif one some leaf-patterned socks that I keep not getting around to. Before I do, I'm likely to put it through one more mutation, reducing it to about half the size and extending the widest part of the leaf by two rows, so that it more accurately matches the shape of a beech leaf.

Most of my charts seem to follow a similar pattern of starting point and progressive mutation, followed by a test knit, correction of discovered problems, a further test knit and possibly correcting steps that went too far.

It's like saying "just one more row", but "just one more change" instead.

Braid-pattern pullover -- Prelude

I'd be the first to admit that I think of myself as a sock-and-hat knitter. I like my projects the way I... Never mind, I'm not going to finish that chestnut. Suffice it to say that I like my projects small enough that I can always keep the end in sight.

That said, I picked up two bales of wool this week; bulky natural wool in a pleasant brown. Along with that, I expanded what is apparently becoming an Addi collection. Essentially, I've committed to knitting a sweater.

As is my wont, I started by browsing the internet to determine what kind of sweater I wanted, then searching Ravelry for patterns. As usually happens, I got frustrated. Fortunately, Elizabeth Zimmerman has a pattern, described in proportions, for a warm baggy pullover. Less-fortunately, it's steeked. After more research and not a little bit of swearing, I decided to blissfully close my eyes and pay no mind to those instructions. After all, I have many many many stitches between me and slicing two holes into my knitting.

Plenty of time to chicken out and re-think the pattern as two trapezoids sewn together with the arms attached by picking up off the selvedge. Plenty of time to consider that sewing two trapezoids together will be far less solid than biting the bullet and knitting the whole thing as a tapered cylinder.

Plenty of time to knit swatches.

This is what I'm using as a swatch. This pattern, repeated over and over, is intended to make up two front panels of the sweater. The intent is to swatch it to see if it looks right and also to test texture and gauge of the wool and needles. As I'm more than mildly worried that 5mm needles (my preferred size for worsted) will simply be too tiny for bulky.

After only a little bit of discussion and plotting, I realised that the back of the sweater really deserves a different pattern from the front.

Rather than two panels of four-strand braids, the back has a single panel, centred, that makes a twelve-strand braid or knot. Fortunately, this pattern will look pleasing so long as the front panel does, so I only need to knit the one swatch as a test pattern.

In keeping with my three-project rule, I'm not to start a pair of socks or a hat or anything else until I've finished with this swatch. Further, once I've committed to the sweater, that's one of the three available slots for patterns taken up. So, likely, I'll knit the swatch, knit some socks (I have a pattern that I want to try), possibly knit some more socks (I actually have two patterns waiting for me), maybe finish a hat, and then get to the sweater, just in time for it to be too warm out for sweaters.

Ravelry Hack #1 - Counting downloads

So, I like Ravelry's designer pages. They're great for indulging my vanity. I tend to check my downloads every once in a while, just out of curiosity, to see if anyone's downloading my patterns.

But one thing it's lacking, and that I'm generally curious about, is how many times they've been downloaded in total. The page doesn't indulge that curiosity. I initially considered putting in a feature request, but then got sidetracked by geekery.

See, the Ravelry downloads page is remarkably readable HTML. Which led me to a quick and easy conclusion: I can fix this in Greasemonkey.

Even having forgotten most of what I learned about the Javascript HTML DOM last time I wrote a Greasemonkey script, it took just over two hours.


With added daily counts on the right-hand column and a "Total Downloads" field at the bottom of the graph.


If you are using Firefox without Greasemonkey, a compiled Firefox addon is available here. Download it, unzip it and drag it into your Firefox window. It should ask to install, like a normal add-on.

If you have Greasemonkey installed or are using Opera, download the Greasemonkey script file and install the user.js file by:

Firefox: by dragging the file into your Firefox window. Greasemonkey should open, displaying the affected URL and ask you if you wish to install.

Opera: The path where User Javascript files are loaded from is indicated in Preferences/Advanced/Content/Javascript Options. If no path is indicated, choose one. Place the user.js file into that directory.

Knitting is an acceptable Lisp

So, I'm a knitter. And I pretend to be a designer some days, when I'm not knitting endless swathes of k2, p2 rib. But first and foremost, I'm an unabashed geek.

As such, I took a look at KnitML. And it's neat. Well, in theory, it's neat. In practice, I haven't got the java dependencies set up on my computer yet to play with it. I do intend to do that, and am downloading them, but while I wait for them, I want to ponder through an idea that's been percolating in my brain.

Namely, I think of knitting patterns in two ways. One is the chart. This is how I write patterns, really. And given the choice between a chart and a list of stitches, I'll pick the chart every time.

It's a question of information density. The chart presents all the information that I need, in the least amount of space while still being human-readable.

So, let's look at a chart.

It's a fairly simple pattern, embedded moss stitch rib. And can be easily transformed into a written pattern:

  1. p2, k2, p1, k1, repeat to end of round
  2. p2, k2, p1, k1, repeat to end of round
  3. p2, k1, p1, k2, repeat to end of round
  4. p2, k1, p1, k2, repeat to end of round

This is where my brain starts making clicky noises. See, my immediate reaction to that is that it's a simple program. One that generates a handsome little ribbing.

However, my second line of thought runs straight for a programming principle: Don't Repeat Yourself. My process for generating a pattern is to draw charts in Inkscape, test those charts by knitting them, then translate the chart into written instructions. In future, I may also want to make my charts available in KnitML.

What this immediately says to me as a programmer is that I should have a single piece of data from which I can generate:

  • PNG graphics
    This is the format I use to show charts. It's a useful format in that it does a good job of reducing low-colour line drawings (like knitting charts) to a fairly small file size with no loss of detail or crispness.
    This is an even worse format to use as a data source, though. Rather than just interpreting the XML that SVG gives, I'd have to start into OCR territory.
  • SVG graphics
    This is the format that I actually use to make charts. Unfortunately, it would be a considerable effort to use it as a starting point: Anything more complicated than a knit or purl stitch are relatively complex "groups", rather than simple objects.
    However, they work admirably as a way to draw charts, and from my perusal of the spec, should be able to be drawn programmatically fairly easily.
  • HTML lists
    This actually isn't a bad starting point. Not good enough that I'd want to use it as a data source, but not bad enough, either, to discard it out of hand.
    Specifically, if I look at the HTML describing the pattern:
      <li> p2, k2, p1, k1, repeat to end of round
      <li> p2, k2, p1, k1, repeat to end of round
      <li> p2, k1, p1, k2, repeat to end of round
      <li> p2, k1, p1, k2, repeat to end of round
    Other than the <ol> and <li> tags, this actually isn't a bad representation of the data at all.
  • Plaintext
    What if I were to use the plaintext representation of the aforementioned list:
    p2, k2, p1, k1, repeat to end of round
    p2, k2, p1, k1, repeat to end of round
    p2, k1, p1, k2, repeat to end of round
    p2, k1, p1, k2, repeat to end of round
    That's actually, as I alluded before, a programmatic representation of knitting. And, were it not for that pesky "repeat to end of round", would be nearly perfect.
    In fact, this is relatively close to what KnitML uses as a human-readable format, according to my reading of the spec.
  • S-Expressions
    These little gems are the core of Lisp, and are easily transformable to and from XML if the need arises.
    The core elements to them are lists and atoms. A list is multiple atoms surrounded by parentheses and separated by spaces. An atom is some text representing something.
    Thus, the pattern described above becomes:
    (repeat 2
      (repeat-to-end (p2 k2 p1 k1)))
    (repeat 2
      (repeat-to-end (p2 k1 p1 k2)))
    And any Lisp programmer reading this just started twitching. As that's not properly-formed Lisp. On the other hand, it does represent a very interesting way to mix data and instructions.
    Patterns become lists of stitches and transformative operations performed on those stitches. It's knitting as a pseudo-mathematical notation.

So, taking s-expressions as a base, what does it all mean?

Well, in that list of representations, the further along I went, the more the representation changed from being a depiction of the data to a representation. By the time we reach the plaintext version of the pattern, it is recognisable as a rudimentary program.

The s-expression version isn't even a rudimentary one; if it were fed into an interpreter that recognised the words and symbols used, it is a program to generate a knitting pattern.

Now that offers some interesting prospects, because the output of the interpreter by no means has to be fixed. For instance, I could have one interpreter that reads the pattern as a way to generate a plain text file, another interpreter that generates an SVG graphic and a third that reads the pattern as a way to generate the equivalent KnitML file.

Why does all this matter? Well, I've become interested, in the past weeks, in the idea of an editor where I type in a row of stitches and it appears on the screen as a graphical pattern. Thinking about how to represent stitches is a first step on the road to knitting pattern zen.

Swatch, knit thyself

Someday, I'm going to learn to knit tiny swatches. The first one I did for this hat was enormous, the size of a tea towel, but highlighted more than a few mistakes that I was making.

Luckily, the cable pattern is composed of repeated motifs. So, seeing these motifs work once was enough to know how they work throughout.

Unfortunately, my first sketch for the lace pattern was done somewhat foolishly. I believed that I could guess, from the pattern, what it would look like, conveniently forgetting that lace isn't just a pattern of holes: it also relies on a structure of slanted and upright stitches.

What I'm trying to say is that my first sketch was uglier than ugly. I've revised it now, and on paper, it looks nice. In practice, I don't know. So I'm doing the sensible thing this time and knitting it again.

There needs to be a pattern to the decreases anyhow, and I've no idea what that'll be. Thus, he sensible thing is 30 rows of swatch, a lifeline and then some puzzling out what decreases go where.