I chose to read “KnitScript: A Domain-Specific Scripting Language for Advanced Machine Knitting” by Megan Hoffman, Lea Albagh, Tongan Wang, Scott E. Hudson, and Jennifer Mankoff.
This paper addresses a gap in programming fully automated knitting machines. Programmers (especially researchers) often use a language called Knitout. However this language is at the instruction level, comparable to g-code. As such it is tedious to write and involves what one designer describes in the paper as “boilerplate” work. Additionally, small or related design changes often require vast sections of Knitout to be completely rewritten.
To address these issues, the authors present the KnitScript language and interpreter. KnitScript provides a higher-level interface involving variables, knitting-specific types, data structures, and abstractions. It then translates this higher-level code into Knitout. Additionally, the authors present the underlying knitting machine model of KnitScript and an algorithm which supports the language’s abstractions. KnitScript is then evaluated for both expressive leverage (how possible it is to enact significant design changes with small changes to the code) and expressive match (how well the the code and its features matches the user’s mental model of how they solve a problem). The expressive match of KnitScript is evaluated via a user study where several designers were asked to revise KnitScript code to enact a specific design change.
Dr. Hudson’s talk today emphasized the importance of thinking and exploring outside the boxes of efficiency and practicality. For research in the fabrication space, this takes shape as enabling a wide set of users to use computational design and fabrication methods. KnitScript fits into this area of work, as it allows people to design knits without manually writing a difficult-to-alter Knitout program. In the user study, multiple designers noted that KnitScript would be useful for beginners. One designer in particular thought that the abstractions the language contains would make it easier to explain Jacquard colorwork to new knitting programmers. While KnitScape is still semi-inaccessible as it is less intuitive than CAD software, the authors describe how it could be used as a link between CAD and Knitout in a similar way as a slicing program is used for 3D printing.
Hi Liz,
Your observation about user-friendliness as a goal that sometimes opposes, as Scott called it, our “CS intuition” for efficiency is a good one! I agree that this is an example of thinking outside of the efficiency box.
I’m also just impressed overall that he coauthored a paper on a high-level language and interpreter! Not surprised, but impressed! Thanks for sharing the summary here.