In which I try to explain what my "machine knitting" job even is
knitting machines, knit programming, and how the heck I got here
At a basic level I’m a graduate research assistant, which is a fancy academic way of saying I get paid to do research as part of my PhD program. But that says nothing of my actual research. The most common word people use to describe what I do upon my explaining it is niche. And that’s valid, because it is.
I work on computational machine knitting. That basically means I work on ways we can use computers and programming to better control digital knitting machines in order to knit new and interesting things. I’ll describe what that means over the course of this post.
And you may find yourself behind a large knitting machine. And you may ask yourself: well, how did I get here?
Why
I’ll start with why I find this interesting (and how I got here) before diving into the more technical description.
When I started my PhD, I was actually in a different lab. In my second year, my adviser gave a guest lecture (she’d just joined the university) and I was fascinated by both her work and her knowledge of how to navigate academia with a disability. I set up a meeting with her a few days later and, long story short, what started as me asking to collaborate quickly turned into becoming her student.
While knitting machines have been around for a long time (digital machines similar to the ones we use now since the early 2000s), the field is far less saturated than most other areas of industrial software/computer science/human-computer interaction/data viz. At the same time, there is a rich history behind knitting and other textile arts. In fact some algorithms foundational to computer science can be traced back to women who created systems for textile design.
We also wear and interact with knit objects all the time, for example shirts, sweaters, furniture covers, and shoe meshes. Many of these are produced with large, automatic machines (like the one I’ll show later). New materials are allowing us to conduct electricity through yarn and sense interactions for assistive applications or tactile computing inputs. Creating better knitting machine design software means we can more efficiently knit parts of or entire garments, reducing yarn waste. And, perhaps above all, I love that writing software for knitting machines means I am writing code that makes something tangible and isn’t stuck on a screen.
So put all together and it’s a fascinating combination of computer science, artistic expression, an opportunity to study history, and the ability to contribute to a practically brand new field of computing. And that’s why I do this.
What is machine knitting?
Machine knitting broadly means, as the name implies, using a machine to knit. There are a lot of knitting machines out there, some are mostly manual and some are fully automatic. They come in different shapes and sizes, and their structures put some constraints on what can be knit with them (e.g., socks, flat sheets, full garment, warp or weft, etc.). Some are flat bed (one needle bed), while others have multiple (some even have four!) needle beds. The main machine I use has two beds in a “v” shape and does weft knitting. It’s fully automatic, meaning once program and settings files are loaded on it it will complete the knitting entirely on its own. And it has the ability to knit tubular objects and even full garments. It’s most often used in garment factories.
There are a few main components of this type of v-bed machine. At the core are the two needle beds, each with 450 needles that can grab loops and sliders that can hold loops/be used for transferring loops between needles. You can more or less think of it like being able to hand knit with 900 needles instead of 2 needles (the way the hooks work is a little different, but both are pulling loops through loops to make courses and wales of yarn). There are also yarn carriers that pull yarn across so the needles can grab it, and a carriage that actually moves the needles as needed to grab/pull/transfer loops.
What is knit programming?
Knit programming basically means writing instruction sets that can be understood and used by the machine. Different machine manufacturers have differences in the formats and the design software they provide, but there are only a couple of companies that make industrial full garment machines (like the ones I work on). And the software they provide (pictured below) is very difficult to understand, making it hard to design something from scratch or easily modify/add to an existing design.

Because the standard design software is hard to use, it’s extremely challenging to design the objects or garments that we want—whether that be a garment, piece of art, knit sensor, or something else. Two knitting specific programming languages (one written by my adviser) have been developed in recent years, but to use them requires a deep knowledge of both knitting and programming. While they afford things like resizing or modifying sections in ways that are more efficient than the current standard, they are missing debugging tools, helpful visual interfaces, and the ability to easily combine existing knit designs. That’s where my work comes in. Because I ultimately want to make cool things—both for art and health applications—I found myself being the one to create some of these missing tools.
So essentially what I do most of the time is write design software (ranging from virtual machine representations to merging algorithms to interfaces) to enable someone to go from idea to knit artifact more quickly. Below is the abstract for my dissertation proposal.
Dissertation abstract
Here is a “technical” abstract for my thesis proposal (P2 replaces a project name since it’s under review).
From shirts to car seats to space suits, machine knitting is used to create a variety of textiles that people interact with on a daily basis. Industrial knitting machines are reliable and capable of producing complex garments. Existing knitting machine CAD software, however, is typically proprietary, cumbersome, and requires extensive training to understand, making it difficult to fully use the machine’s capabilities. Small adjustments to garment designs can be herculean tasks even for experienced knitwear designers. As a result, despite these machines being used daily in factories across the world, their use is typically limited to commonly-worn garments, such as socks and sweaters.
In this dissertation, I will present three core projects aimed at improving the machine knitting design process. The first two build upon the idea of modular programming to allow a knit programmer to combine and reuse existing designs. Prior to these projects, there was little support for modular design in machine knitting; if a user wanted to combine designs, they had to manually create a new file from scratch containing all the elements. The first project, QUILT: Supporting Modular Design of Machine-Knitting Programs, allows a user to lay out swatches in a rectangular grid and automatically combine them without the need for any post-processing. QUILT supports a bottom-up approach to design where the overall structure is built piece by piece, and each swatch must be a complete program (i.e., produce a standalone knit artifact). The second project, P2, allows a user to insert a design element into a larger program and automatically interleaves the program instructions to ensure continuity. Users start with a complete base program, then apply replacement programs onto the original (e.g., starting with a garment, then inserting a pattern or colorwork). P2 supports a top-down design approach and does not require that inserted programs knit complete artifacts on their own. While QUILT front-loads the work of ensuring each swatch knits the intended artifact correctly and is sized appropriately for merging, P2 relaxes some constraints but expects a higher level of user expertise in order to correctly design and place insertion programs. P2 also provides basic warnings and error messages to help the user identify undesirable behaviors resulting from an insertion. These two design tools will be used to support the development of soft protective equipment for children with autism. Debugging a knit program largely relies on the proprietary design software, and even those warnings are difficult to understand and are not identified in real time. Combining multiple designs, as supported by QUILT and P2, introduces an additional layer of design complexity, underscoring the need for debugging tools. For the third project, I will develop a comprehensive debugging tool that programmers can use to visualize and understand their program’s structure and identify specific causes of undesirable behaviors. Improving the process of designing complex knit programs with these three tools can both expedite and facilitate more complex design work, such as embedding sensors.




If you found this interesting, want to hear more, found something confusing, have questions. about a PhD, or have art ideas that could make for cool knits please feel free to leave a comment/reach out!
Examples of things I’ve knit with my software
“What’s next” I hear everyone ask as soon as they hear I’m finishing my PhD soon… I’m not completely sure. There are a couple of startups in the same general space that seem interested in hiring me, but I also have such a wide range of interests that I may not stay in exactly this field. But what I do know is that I want to make things that are cool, enable creative expression, and can hopefully improve someone’s wellbeing too. But mostly I don't ever want to grow up.
Til next time <3




Very cool, Jack. I loved learning about what you do, and this lesser known form of modern knitting knowledge. Also, absolutely love your little snoopy knits and that cute bag. Have you ever done any textile wall art? I absolutely looooove that shit