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.
And you may find yourself behind a large knitting machine. And you may ask yourself: well, how did I get here?
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 largely similar to the ones we use now have existed 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 what captivates me.
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 540 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 1080 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.
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 and artifacts 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—whether for health, art, or fashion 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.
If you'd like to learn more, I recommend you check out my QUILT paper, literature review of knit sensors, and keep an eye out for future publications. If you would like to learn more about this field feel free to contact me!