Jürg Lehni


Interviewed by

Rob van Leijsen

<Jürg Lehni>13 works collaboratively across disciplines, exploring the nuances of technology, tools and the human condition. His works often take the form of platforms and scenarios for production, such as computer-controlled drawing and mark-making machines, as well as software-based structures and open-source frameworks, notably Paper.js and Scriptographer. Lehni has shown his work internationally in both group and solo shows at the MoMA New York, Walker Art Center, Centre Pompidou, Institute of Contemporary Arts, London, the Victoria and Albert Museum, Design Museum London, Kunsthalle St. Gallen, etc. His works have been acquired by the public and private collections such as the SFMOMA, HEK Basel and the Christoph Merian Foundation. He has worked independently since 2002, ran a studio in London (2008–2011) and is currently based in Switzerland. Other positions include foreign residencies (a Swiss Design Awards residency in New York, a research residency at Sony SET Studio, Tokyo), as well as professorships abroad: Parsons New York, UCLA (Department of Design Media Arts).

<GG>13 Who is
<Jürg Lehni>

We took a ride in his electric car, and he explained his vision. It took less than a minute for him to drive by me. If you live in the German-speaking world, you might have seen him. Every Monday evening, during the winter months, around 7:30 p.m., when the air is starting to grow cool, Jürg Lehni goes for a ride. He cruises through the snowy Berlin streets on his electric car. Jürg wants to live a sustainable life. So, for the past ten years, he’s been using an electric car not an e-scooter or a bicycle. Instead of running on a petrol station, it runs on electricity. Because he drives so far, he’s a member of an electric club Club Elektra. The club has the motto “One small step for mankind”. On this late November evening, the road in front of the embassy is almost empty. Two people in a car are driving slowly. We stop in front of one of the embassies of the German, Austrian, Swiss and Canadian embassies. The German embassy is on the right side, and the main entrance to the building is on the left side. I don’t see any guards, and the gate is open. On the other side of the pavement, there’s a gate with a guard, presumably for the embassy of another country. We pull closer to the gate, and a traffic light starts showing green.Jürg gets out of the car, picks up his bag, and goes up the stairs, which the guards didn’t stop us from using. The car is not an ordinary car, it’s a normal car with a modified battery, and the car uses solar panels to charge the battery over the course of 24 hours. If you need to, you can also plug it in to either the car’s charging box or an electricity supply. You might notice that I keep using the term “electric car” and “electric battery”, but Jürg explained that it’s not a battery, but a “battery pack”. I ask him why he’s not using the car for a longer part of the week, but he explains that if you drive five minutes in rush hour traffic, an electric car would not provide a good solution. So, instead, he uses it on the evenings, but just for short distances. He says that he’s never had a car crash, and there have never been any maintenance problems. He’s not the only owner of an electric car at the club there are probably between 20 to 50 club members who use electric cars.

R.v.L.Jürg, thanks for accepting my invitation to become part of this project. Please introduce yourself and tell us how you got involved with creative coding and programming?

J.L.My name is Jürg Lehni. I’m a designer, artist, programmer and educator. I find it difficult to summarize what I do in one sentence, since my work involves multiple disciplines, but I think programming is the core activity that connects virtually everything I do. The intersection of design, art, communication and language is the recurring theme. For lack of a simple description, I often use the agricultural metaphor of crop rotation—a strategy that keeps fields fertile—to explain why I move between the various disciplines in which I engage, often in collaboration with others. My brother once called me a researching craftsman; I thought it a very apt description.

J.L.My education followed a rather unusual trajectory: I started out in the late 1990s at the ETH [Swiss Federal Institute of Technology] in Zurich, planning to learn electronic engineering as a tool for creative purposes in order to use it as an artist or designer. I quickly realized that the way they were teaching it wasn’t really for me. You were basically just stuffing your brain for two years with all this knowledge, and only eventually down the road beginning to use it. I always need to understand the things I learn visually, almost tangibly, in order to be able to grasp abstract concepts and put them to use. I would say that I have a certain affinity for mathematics, geometry and abstract thinking through my visual understanding of things. Consequently, I wasn’t very happy at the ETH; there weren’t enough niches in their rigid program for people like me to flourish, which, looking back, was a pity. As a result, after a year, I decided to end my studies there and continue at HyperWerk in Basel instead. It was a very new course that had just come into existence at the time [late 1990s, early 2000s]. I was in the second round of students of this new program, which was an experimental post-industrial course dealing with technology, design and the arts. As a student, you had to reflect on how to fill in the gaps in between. At the time, no one really seemed to have a clear idea what all of this was about; we were sort of figuring it all out as we went along. Today, interactive design and media arts are relatively defined fields in the realm of higher education, with their own curriculum and textbooks and required skills. Back then, this area of study was a bit of a catch-all for anything that wasn’t considered “pure” art or design, and anything that had to do with technology would end up there. All of this was a bit confusing: I had already acquired quite a few technological skills at ETH, and I felt I wasn’t learning enough in terms of artistic skills. So I decided to change direction once again and applied to ECAL in Lausanne. That was perhaps the most fruitful place for me, because there were clear structures in place around the various areas of design education. They enabled me to take my knowledge of technology and explore ways in which it could relate to these more traditional topics, and how I could interact with them.

J.L.Regarding your question about programming, I learned it quite early—I started playing around with computers when I was around seven or eight. My older brother Urs and I had received computers from our cousin, who was older and had trained as an electrician. He handed down his old computers to us, and we started tinkering with them. It all started with a Commodore VC-20 that only had a cassette tape, not even a floppy disk. All the programs came on audio cassettes, and loading them took as long as playing back side A, and sometimes side B as well, or you could manually type in the listings of programs that were printed in specialized magazines. Later on, my brother received his own Commodore 64 with a floppy drive. So very early on, I became acquainted with programming without really understanding it. If we wanted to play a game featured in the magazines, we had to enter all the required code flawlessly—this would take hours. So we began trying to figure out these instructions for the machine, although we were not really sure what it was actually doing, or how it really worked. The next step would be “let’s see what happens if we flip two lines of code.” Usually, nothing would work anymore.

J.L.I initially became frustrated when I realized that programming was hard, but it was quickly replaced by an overwhelming curiosity. My brother Urs’ C64 actually came with a manual of the BASIC programming language, and I started eagerly reading and learning from it. In hindsight I find it fascinating that, in the middle of rural Switzerland, this machine provided us with a gateway to this whole alternative culture, a cyber culture or counter culture of affordable personal computers that anyone could buy, then go on to learn programming, and craft their own tools. I mean, this machine had this type of mindset embedded, and the people who made it were trying to make that a reality through a commercial product. In Switzerland, these computers were mostly sold as gaming consoles, but they had all this potential, and were actually quite accessible compared to today’s computers. Today, computers have so many layers of complexity in terms of software and operating systems, but on these, to load a program, you just had to type in and run some simple BASIC code. The statement that would load the program from the floppy drive consisted of one line of code, and another line would execute it. The [Commodore] 64 had an extended character set of graphical glyphs in its font, like square and rounded corners, dashed squares, etc., and the easiest way to create simple graphics was simply by placing these extended glyphs on the screen in a text grid. It was quite gratifying, being able to figure this out as a kid, without any grownups telling you, you know… just by using this C64 manual.

R.v.L.Did this curiosity follow you throughout your studies and professional career?

J.L.Absolutely. I think that I always kept in mind this idea of the purity of what that technology represented. It was an eye opener for me. Back when I was a child, I had perceived that programming was a very flexible, friendly thing. Not so different from Legos® or something like that, but more exciting, and also something no one else really was playing with or even exploring, which made it all the more attractive to me. We also had a needle printer, and you could actually control the printer using BASIC code. You could write a little program that would print the same thing twenty times. You could control the type size, etc. At one point, we even had access to a small pen plotter that we had on loan from our cousin. We were able to control the pen and make it follow programmed movements, making drawings using code. This discovery totally links to what I did later in life. I felt that this interesting machine could be anything I wanted it to be. It gave you a sense of control, which is perhaps also quite appealing to a child. I lost interest at one point, when I began coming up against limitations. I didn’t know where to go from there, what to do with that. Everyone else played video games instead of writing them. However, later on, in secondary school, I had a math teacher who gave us some programming lessons in Turbo Pascal , and he quickly saw that I had an affinity for it. He worked with me apart from the standard school program, giving me assignments and books to read. I learned C++ that way, and started writing more serious programs while still in high school. I continued to explore different directions, perceiving the computer as this meta tool that could be anything you wanted it to be. However, doing this in isolation often didn’t feel so good. You have to have a certain kind of mindset to be able to learn programming. You need to be persistent, even stubborn. You need to have a goal you want to attain, and even if you keep hitting a wall, you need to persevere. These requirements sort of naturally filter out the people who acquire expertise in this area. It might be different nowadays, but I think the idea still exists among many people that programming is not something they really want to do.

J.L.Around the time I left ETH, I began working with my brother Urs, who was studying graphic design in Lucerne. In 1999, he was working on a collaborative thesis project: the creation of an ephemeral space for graphic design run by artists called Transport. They were granted the use of a shop for a few months before it was going to be torn down. They used the space to host exhibitions, events, lectures and parties there, and produced a lot of ephemera around these events. It was a very experimental, playful research project, and questioning and creating their own tools played a key role in their approach. I helped them create an interactive experience with a CD-ROM called Visomat which explored and documented their experimental project, and also started working on small software design tools with them. As I look back, I think a lot of things evolved out of that period. The idea of collaborating with graphic designers started there as well. It became much more exciting than just doing stuff on my own with a computer. Having a dialogue with somebody with a specific need, or a challenge, or some questions within a field, was a great starting point from which to develop my skills and my curiosity about this way of working.

R.v.L.Would that dialogue happen with a collaborator, or could it also be with a client?

J.L.It might be a client. However, in my experience, those dialogues are less fruitful, in a sense. I think the most productive collaborations did not happen when there was a clear goal or need, but rather when you had an open dialogue about an idea or a piece of technology. Sometimes the tool, or whatever I had already created, already existed. Then we would raise questions about it: Why does this exist? What is it there for? What can we do with it? Each and every physical device I have built, from drawing machines to printmaking or marking machines, can be seen as a platform. Nothing is truly a finished piece. Basically they are all just starting points with an infinite amount of possibilities. Once they exist, you have to answer these questions, you have to somehow define their features and the reason they exist. If you don’t, then it feels like a missed opportunity.

R.v.L.Might there also exist a dialogue between your machines and a random user? You are the key person experimenting with your machines: you are interacting with them, and using them in a specific context. Would you be able to share them with your public and say “OK, go ahead, here’s my machine, use it any way you like”?

J.L.If I trust them [laughs]!

J.L.There’s a bit of a line in my work between the things that I share on purpose, like all the open-source software, such as Scriptographer , the plug-in for Adobe Illustrator with which you can extend Illustrator and create your own tools. There, of course, the whole point is sharing Scriptographer with as many people as possible, and creating a community that supports itself and exchanges on that subject, so the openness, the generosity is kind of embedded. Then there are other works, that are centered around my more personal reflections on how we work through computer technology, or how we express ourselves. Things like the drawing machines I have made. For example Hektor, my diploma project at ECAL in 2002, emerged from a dialogue with Uli Franke, an engineer and good friend of mine whom I met while studying at ETH Zurich. I invited Uli to collaborate with me on my thesis project. At that point, my idea was simply to create a large-scale plotter that would translate graphics from the computer in a slightly unpredictable or surprising way, one that was raw, imprecise, almost human. Something that was not as precise and clean and perfect as standardized printers. The path we took, bouncing ideas back and forth between ourselves, and taking many detours, eventually led us to the idea for Hektor. It was a very exciting, personal, not very linear process, full of ideas and experimentations. Eventually, we ended up with the really simple principle of using triangulation, two strings programmed to change length through stepper motors. It was so pure, in a way, so close to my fascination with geometry, which was my access point to math. The machine became a very direct translation of my fascination for geometry, and a physical manifestation of it, and we both felt very personally attached to this idea. We didn’t feel we wanted to share that; we didn’t feel like sharing our recipe so people could make their own versions. This was very personal for us. We wanted to explore Hektor’s potential on our own, give it an identity and create a body of work around it.

R.v.L.So you didn’t sell it either?

J.L.No, we didn’t. Now, other people sell it. There have been hundreds of versions of that principle—of course we can’t tell people not to create versions. You can’t own the simplicity of such an elemental idea. That is also a hard lesson of technology: once you create something and show it to the world, other people will have ideas about what they would like to do with it, and they will go on to make their own versions and expand from there. Technology exists in a strange position between creativity and culture, or language, something that we all share. With my work, I want to communicate that openness with technology as something that big corporations don’t completely own and control. I think it’s much nicer to think of it as something that we all shape, and change, and that we can reappropriate and reinterpret. I think that’s very positive, but it’s funny because, sometimes, as an artist, I actually suffer from that openness, such as when, as you know, people appropriate my work, and suddenly I find myself saying, “that’s my idea!”

R.v.L.You can’t protect the work from being copied?

J.L.Well, you could, I guess. You could do what people sometimes do, patent things and then take people to court, and become angry and bitter. I don’t think it’s really a good way of protecting your work. More than any other field, I feel that technology has this inherent openness. I also feel like open-source culture is very much like that. This notion that there is a greater good in doing open-source and that by simply open-sourcing an idea that already exists, you are doing something good.

R.v.L.But that is not by definition the case?

J.L.I don’t think so. I mean, I’ve seen this happening. People creating very similar open-source versions of work that already existed, without giving any credit or attribution to the previous work, or involving the original creators. Apparently the simple fact that something is released as open-source makes them feel justified in doing so. There is a sort of sense of entitlement in open-source culture. There’s also a lack of awareness of history. It’s a complex discussion, one which is strongly connected to the question of authorship.

R.v.L.That’s interesting, because our research project also questions the economic value of programming. So we have open-source on one side, and licensed or embedded software on the other. Do you see anything in between?

J.L.Open-source authors often release works under dual licensing, where you can obtain something through a creative open-source license, without technical support, but you also have no right to use it commercially. If you want to use it commercially, you have to get a commercial license. I was actually attempting to do something like this with Scriptographer . If you want to create such a license by yourself, it is really complicated. You could possibly build from something that already exists. I mean, who understands law unless they’re a lawyer? It’s like another programming language. However, you still have to obey it. It’s the same situation with patents. In and of themselves, they don’t earn you anything. You have to go after the people who don’t follow the licensing or don’t respect it.

R.v.L.The machines you make have obvious, visual outputs. The resulting images are very tactile, very tangible. Does this enhance the fact that they are easy to copy or appropriate?

J.L.Not always, but yeah, it’s true that in my work, I always look for the simplicity of gestures. I think that’s also what fascinates me with machines to begin with. That kind of very gentle, resourceful hand gesture that draws a line. Of course, there’s a certain transparency in the process. You watch it. It’s not magic, it unveils itself, it explains itself. It wants to be transparent. You can probably figure out its internal workings if you’re an engineer. However, sometimes the simple gestures are the hardest to get right. For example, Viktor, the chalk drawing machine that works on triangulation using four motors, may look as simple as Hektor, but it’s actually the opposite. It’s endlessly complex because it requires consistent tension in the cables in order to apply pressure against the wall. Otherwise the chalk wouldn’t leave much of a trace. The four motors all have to apply an exact amount of tension to create the right amount of pressure, and they all need to work in perfect synchronization, otherwise they block each other. The coils change diameter with each rotation, and the tangential exit point of the cables depends on the tool’s position. Everything in the system is dynamic, and figuring out the math required in order to get the machine to position the chalk precisely and move in perfect synchronization with those four motors was endlessly complex. Although the resulting visual expression is simple in the end, I think this would be a hard thing to replicate.

R.v.L.Do you reflect on the message you want to transmit with your machines beforehand? Especially the messages drawn by the machine?

J.L.Yeah. It really started with an intuitive understanding of working through computation and through computers in a creative manner. I was trying to transcend the confines of the screen, because I had begun to get frustrated about working onscreen all the time. Then there are the works—the contents became natural reflections on that theme, and it started expanding from there. At one point, I began to understand that a lot of it was about a machine having a certain character, or voice. It almost became an entity on its own, I began to think, “Hektor does this, Hektor goes to MoMA, Hektor meets Dexter Sinister.” The encounters might be with a person, a place or a subject. It was always about what the entity did. There was a narrative flowing through all these works. They were mostly about writing or drawing. For instance, the William Morris piece that I did with Will Holder was, to a great degree, about his reflections on the notion of addressing industrialization. So we started out with Morris, an Arts and Crafts artist working at the beginning of the era of industrialization, whose response to machine production was the urge to preserve the humanity in it. Hektor is at the other end of the spectrum: a post-industrial computer-controlled device that’s designed to be imperfect and almost human. Still, there is this strange connection between the two, and pre- and post-industrialization. The Hektor piece that is a realization of one of Morris’ repeating patterns, originally developed for textile prints, and is now replicated in spray paint on a wall twelve meters long, is a celebration of that connection.

R.v.L.These links or references and ideas for content, do they come up once you finish a machine, or do these reflections already pop up during the design process?

J.L.It’s hard to make a clear distinction in hindsight. I would say it has been a complex interplay between the themes I have researched and the technologies that I’ve created over the years. During my time at HyperWerk and ECAL, I worked on a bunch of web projects with Urs, my brother, and Raphael Koch, along with some other people—it all started with the Transport project I mentioned earlier. We were creating screen-based design applications, like, a graphical online multi-user playground, that was a kind of Adobe Illustrator for the masses, as well as some other ones before that where we took a single graphical element, for example a Lego® brick, or a Casio® LCD Watch, and crafted visual tools around them. In a way, you might describe them as parodies of design softwares. I mean, they were always a bit tongue-in-cheek, we were having fun. I think the underlying notion was always to question the status quo or Adobe , and the tools that we as professionals are working with. This notion ultimately lead to the creation of Scriptographer , which we launched as a kind of meta-tool for designers to create their own tools using a simple scripting language within Adobe Illustrator. Creating Scriptographer and making it freely available was an act of political activism for me, the plug-in was a symbiotic open-source piece of software, living within its closed source software host that represented one of the giants of the design industry.

J.L.After Scriptographer , I reached a phase where I grew tired of the confines of the screen, and wanted to move beyond them. I continued to seek a means to critique the standardized ways of working creatively with and through technology, and making a printer was the logical next step for me. However, I don’t think that I really understood what Hektor should be about at that point. When I compare programming machines to programming purely onscreen, I would say I never had as many surprises. This only happened when I stepped outside of my comfort zone of working onscreen, since working with pure software is not as unpredictable.

J.L.When you program a lot, you reach a point when you kind of know what to expect from a piece of code before you write it. Of course, there are surprises that you can leverage and work with. However, I work very much like an engineer in that respect, so there are very few surprises for me in terms of the outcome of my programs. Other people program differently, some work more creatively through the medium of code, in a more blurry, fuzzy way, say by just changing some values and seeing what happens, and gaining an intuitive understanding of that process in that manner.

20200228-Jurg-Lehni-RVL-corr-DH, Image 2
Limited edition poster created in Afternow-Scriptographer, inspired by 3D type on record sleeve of The Faust Tapes (1973), Philippe Decrauzat, Jürg Lehni, 2005.

R.v.L.It depends on the level you’re at when you step in, as well as what you know already.

J.L.Yes, that too. When I started working with mechanics, motors and physical contraptions, giving these objects a body and even a behavior through software, then all these new elements, like sound, friction, and gravity, came into play. There’s no way you can anticipate all this. With Hektor, there was a sort of Frankenstein moment, after conceiving and crafting all the mechanical and electronic parts of the device, and writing the software, we eventually assembled all these components and then, suddenly, it moves for the first time. It was so different from what we thought it would be: some of our ideas didn’t work out the way they were supposed to, so we had to adjust our strategy and expectations. Suddenly you are face to face with this thing you have created, but you feel like you have to get to know it, to figure out what it actually is, and what it can become.

20200228-Jurg-Lehni-RVL-corr-DH, Image 2
Hektor writes out the name of the exhibition Design and the Elastic Mind at the NY MoMA, Jürg Lehni, 2008.

R.v.L.Did you have to debug, in terms of anticipating and making modifications based on the feedback you got from the machine?

J.L.The biggest surprise with Hektor was that we actually had intended to guide the movements with four motors, as we did later with Viktor. We thought we needed the lower two motors for stability, but we couldn’t attain an adequate degree of precision with the stepper motors and calibration techniques we used. The motors kept blocking each other and they lost steps. So we realized that we had to get rid of the two lower motors. At that point, it was only two weeks until the thesis project was due. We had very little time left, and this was the only option, but we thought that this was going to be really unstable, we doubted that it would work at all. The only option was to do something with the software to compensate for that instability. I began to think of ways in which I could make it move more carefully, more smoothly. This actually resulted in Hektor’s signature motion. I came up with an algorithm that was very geometric, because that’s how I think. The concept I started from was what if this were a car, and I was driving without brakes and reaching out of the window with a brush, with the car moving at a constant speed and I was trying to steer at the same time. How would you draw a square in these circumstances? You would drive away on circles in the corners and come back to the next line and then push the brush again. This is pretty much how I visualized it. What was so surprising, was that I had thought of it purely visually and then, when it translated into behavior and actual movement, it became such an intrinsic part of Hektor’s identity. This had not been something I could anticipate. It was just kind of a lucky accident. You also have to accept things, because there are so many limitations. The machine was very slow because of all this extra movement. Still, when we began to show Hektor in action, people would say things like, “oh, it’s like a painter, anticipating or planning their next stroke.” Hektor’s drawing trajectories, with all their potential imperfections, immediately became part of the machine’s identity, and we just embraced it.

R.v.L.Do you think that computer-generated outputs have inherent flaws or predictability?

J.L.I would say, only when they are overused. I mean, I think everything you can do with a computer can be quite pure, if your intention is good, you know? I do struggle quite a lot with the overuse of programming in design. There is always going to be a current trend. A few years back, it was data visualization, now it’s machine learning until the next new thing. The fact that you’re using code is not enough. You have to have a really good reason for using it.

20200228-Jurg-Lehni-RVL-corr-DH, Image 2
Viktor at Two Legacies, All Possible Futures, at SOMArts, San Francisco, Wilm Thoben and Jürg Lehni, 2014.

J.L.Any kind of material that you’re working with holds a certain potential, right? So you could call it artistic potential, or poetic potential, or whatever. Uncovering that potential is what makes the work good. That’s the hardest thing, no matter what the technology or the material. However, with programming, or technology in general, there is this underlying seduction of the notion of the complexity of the machine doing the work. As if the machine is being creative, a rather false idea. This whole narrative about how machine learning will replace the artists is kind of defeating. I do think that there can be good art using machine learning, but I have yet to see it. I remain very suspicious of this celebration of the complexity, romanticizing the complexity of the machine, of its ability to process massive amounts of data.

J.L.I don’t think it is our place as artists and designers to be in awe of technology. I think that’s the wrong approach and not the right message. If anything, it should make us feel more humble, or friendly, or encourage us to be more approachable, not less. This goes back to what’s important in education. Technology is all around us, and it’s part of our everyday life. It’s part of our culture. I don’t think everyone will become a programmer. I feel that schools that want to reach that goal will probably fail. If a design school has the goal of having every student knowing how to program when they leave, I think it will fail, and it isn’t even a necessary achievement. Rather, I would say it is more about attaining a certain literacy about programming, and a capacity to work with programmers and understand them, and this takes an effort on both sides. Literacy is always both, right? You write and you read. One form of literacy is being able to cut through the bad examples. With every new technology, there’s always this phase of feeling awe, then we get bored, and then eventually, we start using it in a more meaningful way.

R.v.L. When you are teaching, how do you prevent students from giving in to that awe, or other such tendencies with technology?

J.L.It’s hard. I mean, I understand that students have their motivations, they have their idols, their ideas, things they have seen and want to replicate. Right now, we live in a culture where that impressive technology is floating on top. It’s also about the most visual thing, the most juicy thing on Instagram, one might say. These incentives are not the right ones, and I feel that steering against that is quite important.

R.v.L.Do you have teaching methods that stress this search for the most intelligent use of programming?

J.L.Not the most intelligent, but more importantly the most personal. Do you have a connection to code? Do you feel it’s yours, that you made it and you can actually use it? When I was teaching programming using Scriptographer with Jonathan Puckey, or later with Paper.js , the Java Script version we created together that was born out of Scriptographer , we tried to teach a limited vocabulary within the capacity of those libraries. We selected a vocabulary that could be quite expressive. For example, one thing that has worked quite well was making drawing tools that have some sort of autonomy or behavior which you still use by hand. What I like about that approach is that you’re going back and forth between being the engineer or craftsperson of your tool, and also the user of that tool. This does not necessitate drawing something beautiful right away, but simply making a bunch of strokes and seeing what happens. Then we get into tweaking its behavior, using that to see how things change. The idea is establishing this direct connection between the code and its application. I think this is very important for teaching. It’s also where I struggled with teaching machine learning, this idea of the direct connection. There’s Bret Victor, a researcher in human computer interfaces, who used to work for Apple , but is now self-employed and working on a couple of really interesting projects in the Bay Area. He did a lot of lectures and writing on a topic he refers to as the “immediate connection.” He basically posits that the way we are currently programming computers is still stuck in the same paradigm as the 1950s with Fortran . For the most part, we’re still writing linear programs that the computer executes step by step, and, once it’s running, we can’t really interfere with it. He is an advocate of reducing the threshold between the modification of a program and its application, but also the visual perception of the impact of change. The shorter this feedback loop is, the better for the humans who write software. He doesn’t really have a solution, but he proposes a lot of things in his lectures that might be seen as directions. A few years back he criticized Processing rather strongly for remaining stuck in that paradigm, and perpetuating that in creative coding. He does have an interesting point there. You could say that Paper.js and Scriptographer are also stuck in this paradigm, especially Scriptographer , which offers a more immediate connection. The fact that you use it in a graphic design software—Adobe Illustrator—one with which graphic designers are already familiar, means you understand how a document is built in Illustrator. It’s almost physical, right? You have an emulated sheet of paper, with layers of visual objects, to which one can assign properties such as color, scale, rotation, etc.: it feels virtually physical, right? These are all elements that are familiar when you use Illustrator. If you then go into a programming environment that offers you access to those same things, you can draw an analogy with the manual processes through which you created them. So as you’re writing the program, you can kind of understand what tool you would use if you had done it by hand in Illustrator. You can use these familiar tools to inspect and dissect the output of your program. Scriptographer and Paper.js replicate this mental model in their API through object-oriented programming, which has a tangibility that other environments lack because they are more pixel-based. Tools like Processing , p5.js , and openFrameworks, use a different mental model where you work in a more procedural manner, telling the machine what to do at every frame of the animation, how to draw the image from scratch. You’re basically redrawing the thing onscreen. Consequently, it’s much closer to the machine, and that has its benefits. Also, learning that is good because you’re learning how the computer works, but the Scriptographer and Paper.js method is perhaps more suitable for designers. This is just a theory, but my assumption is that it’s actually closer to the way a designer thinks because it’s using the same abstractions that you already know from designing software, and the physical world. So, when I teach code, I try to find ways of making that connection as close as possible.

R.v.L.Are you saying that you think programming is somehow counter-intuitive for designers, since they have to accept the loss of control?

J.L.Yeah, but then you also do that when you are working with print, right? When you make a book, you have to accept the limitations of the process. As with any process, you have to figure out what your capabilities are, what it represents for you, and how you can leverage this creatively. I think that good books often go beyond that.

20200228-Jurg-Lehni-RVL-corr-DH, Image 2
Detail, Tadpoles, PaperScript online code editor, Jonathan Puckey.

J.L.Speaking of how surrounding circumstances influence a given work, it would be interesting to discuss the various intellectual models behind the framework. Within open-source culture, there’s always a kind of standardization that occurs. A certain framework suddenly becomes “the one,” you know. Right now p5.js has become the de facto standard in art school education in terms of programming, or creative coding, as it’s referred to these days. Lauren Lee McCarthy launched p5.js as the next version of Processing , native to the Web. It was really important to Lauren that it be an inclusive culture, where anyone was welcome, and there was a clear code of conduct, upheld by good intentions and values. Now, because of the drive to standardize I had mentioned, it has almost become a threat of sorts to the inherent diversity of programming culture in this area. Perhaps I am overstating things a bit, but I do think it’s an interesting notion to consider. Of course I say that because I am an author of another framework that has been used in art schools and now is perhaps being used less, but I don’t have to feel bad about that, even if I do notice the declining interest in this framework.

J.L.When I look at p5.js , I see a massive library that offers a great deal of functionality and a pretty substantial memory footprint. They include so many different ways of doing things. There’s no clear convention about how elements that are part of the vocabulary are named. One might say it was poorly designed, but that is not necessarily a bad thing. It is diverse, a patchwork of sorts. Still, personally, I do find it hard to work with because of that. I went in the opposite direction with Paper.js . There, the aim was to have a high level of control of the tool; there’s also a clear sense of design and of how elements are named, how things are structured, that follows a consistent methodology throughout the library, so it becomes easier and more intuitive to use.

R.v.L.That’s a designer structuring their work.


R.v.L.So, even if you are designing a tool or a language for someone else, you are still applying your own methods?

J.L.Exactly, but you know, design by committee does not often result in the best design. I mean, when a network is truly open-source and everyone participates, it is designed by committee. So yeah, I think real diversity means we have lots of tools, and we use all of them. There should not just be one tool that everyone uses to teach programming. A few years back, there were so many other frameworks, and there were workshops offered for all of them: NodeBox, DrawBot , Cinder, vvvv, Max/MSP & Pure Data, to mention just a few. It felt like a very diverse culture with many things coexisting and even sometimes being used in combination with each other. Of course, they all still exist, but the atmosphere is very different now; p5.js and Processing have almost become synonymous with creative coding. It feels a bit ironic to me that a framework that puts diversity first could be seen as achieving the opposite effect within software culture itself.

R.v.L.Do you see a change in methodology in graphic design practice today? Do you think that designers are incorporating the possibilities that programming might offer them?

J.L.What I find interesting is that I’ve observed that many people have a much broader understanding of programming nowadays. We are confronted with software systems so often that, even if you are not a programmer, you might perhaps tend to think more systematically. You do see more designers appropriating ideas related to programming, but not necessarily becoming programmers.

R.v.L.Have you noticed the minor shift from craftsmanship towards curation in terms of the tasks of the graphic designer? Thanks to tools, we can now output a large variety of possibilities and choose the most beautiful and pertinent one.

J.L.Yes I have. There are a few things that are interesting about it. We have gone from very static outputs, such as books, magazines or posters with very defined sizes, to responsive layouts, right? When you design a website, it needs to work with many different formats and sizes, and that’s not it. There are multiple ways of interacting with these web-based formats, say through touch, or speech. This idea of the responsive layout that has come from the web is actually expandable in a way far beyond that. Why should it stop there? We can also print that. I think this is what curating is about in the end. When you have these software structures, then the design process becomes more similar to that of a newsroom in which you have constantly changing content and constantly changing outputs.

R.v.L.You become the editor.

J.L.Exactly, but what exactly is the product at this point? Then you talk about platforms. In the end, this is what you do as a graphic designer: you set up a platform, and you design the process that makes the product. So you are one step removed from the output. As a means of design, it’s not a bad way of working. However, I don’t think that everybody will work this way. We still have plenty of room for the designer as author, who crafts their work manually.

R.v.L.Have you perceived a trend of visuals created through creative coding finding their way into the public domain?

J.L.When I look at what people were doing in terms of visual experimentations a few years back, say fifteen years ago, it was all done with Flash and Macromedia Director . It was a very niche culture. Nowadays, the tools and capabilities have changed. The nature of the experiments might be similar, but suddenly designers can have a huge reach if they put their animations on Instagram. People do like those posts. Then, if the designer holds an exhibition featuring that work, a crowd will show up. I think that has changed. I don’t know if that is because these kind of visual experimentations have become more accessible through the mobile devices we use, or if it is because designers are more exposed to software and their esthetics, and actually start liking them.

R.v.L.One can’t ignore the profiling value that sticks to moving images on Instagram. Almost like a facade of one’s practice, but it doesn’t necessarily reflect the entire practice.

J.L.Well, I think that there is a very practical reason for that. You’re scrolling through an endless feed of static imagery and it all begins to look the same. Then suddenly something is moving and, so of course it catches your eye. I think that this is how this whole kinetic type and variable fonts phenomenon became so big. It’s like playing tricks with our perception, right? It pulls you in. I wonder how long that will last. Perhaps eventually we will develop the same kind of numbness towards that kind of imagery as we have with normal static images. In Zurich, I’ve seen animated posters on big screens for exhibitions of art institutions. I was quite surprised. I thought, okay, now it’s arriving here. That means that you can do that as a profession. You will probably be busy from now on. However, eventually there is probably going to be a backlash. It’s eye candy, I think.

J.L.I mean, variable fonts are to typography what responsive layouts are to print. Maybe we shouldn’t stop there, that shouldn’t be the end of the potential because it’s just interpolation. I think there should be way more than that. With computation, you can do way more interesting things than just interpolate between two extremes.

J.L.The variable font file is, in and of itself, just a tool. It’s a way of making a lot of different weights. I think Petr van Blokland told me that the reason why variable fonts exist was Google , he was in touch with Google , and had heard that it could save them a lot of file space and bandwidth. Google has this whole Google Fonts repository of “free” fonts, “free” in quotes because when you use their fonts through CSS , and upload them directly from their server, you give them all your traffic information at the same time. It’s the same with the Facebook “like” button, right? Every website that places the like button actually provides Facebook with all their traffic information.

J.L.Google ’s whole business model is of course based on data, and that’s how they get to that. Now, if they have a web font with lots of glyphs, supporting lots of different language scripts and different weights and styles, and you load the whole family, with all these files included, you are loading a consequent amount of data, in megabytes. If it’s a variable font, you only load outlines, and the rest is interpolated and extrapolated, so the file decreases in size. That’s why they invested so much money in it, apparently. That’s what I heard. I think this is interesting, because a lot of technology does come into existence in this very pragmatic way, and then subsequently shows some creative potential, and it is the designer’s job to find ways to have fun with it. The initial reason why variable fonts are here was not to make cool fonts move. It was just a possible solution for data storage problems, and to save money.

R.v.L.Between the lines, I have also noticed the almost human characteristics you envisioned for your machines. It’s like you have created devices that enable a person to set up a dialogue with an entity that talks back and makes its own choices.

J.L.Yeah. It’s funny, I think that dialogue is a term that I keep coming back to. That and collaboration. You can collaborate with humans, you can have dialogues with people you work with. For me, that’s always been really important. I work much better in dialogue with somebody. However, the other thing I have noticed is that the way I perceive the computers or the technology I work with is also a form of collaboration. I always try and look for that hidden potential that I can leverage in any kind of technology.

J.L.Whatever the technology of the moment is, we don’t really question it. We barely see it. We just notice the content, but it’s standard. Very quickly, you get used to new technology and displays, and then they just become the new normal. Yet, when they disappear, like say when the split-flap displays at the train station in Zurich disappeared, people felt nostalgic, because they realized they liked them. It made this certain sound and you had to wait a little bit until the desired information appeared, because it was turning mechanically.

R.v.L.A relationship was being established.

J.L.Exactly. Technology becomes a part of your culture. It even becomes a part of your identity in some weird way, becomes part of your travel experience. Whenever you go to a train station, those split-flap displays are part of the experience. So you feel wistful when they disappear. I think that this nostalgia just shows that there is an element of poetry to this. Any technology has that kind of potential. Whether it’s programming, physical devices, whatever. As a creative person working with and through technology, that’s kind of what I’m looking for in the end.

R.v.L.I think we covered a lot of ground, I want to thank you, Jürg.

J.L.You’re welcome. Thanks for coming along on that journey through my meandering mind.



ActionScript was an object-oriented programming language originally developed by Macromedia Inc. (later acquired by Adobe Systems). It is influenced by HyperTalk, the scripting language for HyperCard. ActionScript was initially designed for controlling simple 2D vector animations made in Adobe Flash (formerly Macromedia Flash). Initially focused on animation, early versions of Flash content offered few interactivity features and thus had very limited scripting capability. Later versions added functionality, allowing for the creation of web-based games and rich web applications with streaming media (such as video and audio). Today, ActionScript is suitable for desktop and mobile development through Adobe Air, and can be used in some database applications, as well as in basic robotics, such as the Make Controller Kit.


Adobe Inc., originally called Adobe Systems Incorporated, is an American multinational computer software company. Incorporated in Delaware and head-quartered in San Jose, California, it has historically specialized in software for the creation and publication of a wide range of content, including graphics, photography, illustration, animation, multimedia/video, motion pictures and print. Adobe was founded in December 1982 by John Warnock and Charles Geschke. Flagship products include: Photoshop image editing software, Adobe Illustrator, a vector-based illustration software, Adobe Acrobat Reader and the Portable Document Format (PDF), along with a range of tools primarily for audiovisual content creation, editing and publishing.

Adobe After Effects

Adobe After Effects is a digital visual effects, motion graphics, and compositing application developed by Adobe Inc. and used in the post-production process of filmmaking, animation, video games and television production. Among other things, After Effects can be used for keying, tracking, compositing, and animation. It also functions as a very basic non-linear editor, audio editor, and media transcoder.

Adobe Illustrator

Adobe Illustrator is a vector graphics editor and design program developed and marketed by Adobe Inc. Originally designed for the Apple Macintosh, development of Adobe Illustrator began in 1985.

Adobe InDesign

Adobe InDesign is a desktop publishing and page layout designing software application produced by Adobe Inc. Graphic designers and production artists are the principal users, creating and laying out periodical publications, posters, and print media. It also supports export to EPUB and SWF formats to create e-books and digital publications, including digital magazines, and content suitable for consumption on tablet computers. In addition, InDesign supports XML, style sheets, and other coding markup, making it suitable for exporting content for use in digital and online formats.

Adobe Photoshop

Adobe Photoshop is a raster graphics editor developed and published by Adobe Inc. It was originally created in 1988 by Thomas and John Knoll. Since then, the software has become the industry standard not only in raster graphics editing, but in digital art as a whole. Photoshop can edit and compose raster images in multiple layers and supports masks, alpha compositing and several color models. Photoshop uses its own PSD and PSB file formats to support these features.

Adobe Shockwave

Adobe Shockwave (formerly Macromedia Shockwave) is a discontinued multimedia platform for building interactive multimedia applications and video games. Developers originate content using Adobe Director and publish it on the Internet. Such content could be viewed in a web browser on any computer with the Shockwave Player plug-in installed. MacroMind originated the technology; Macromedia acquired MacroMind and developed it further, releasing Shockwave Player in 1995. Adobe then acquired Shockwave with Macromedia in 2005. Shockwave supports raster graphics, basic vector graphics, 3D graphics, audio, and an embedded scripting language called Lingo.


In mathematics and computer science, an algorithm is a finite sequence of well-defined, computer-implementable instructions, typically to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for performing calculations, data processing, automated reasoning, and other tasks. Starting from an initial state and initial input, the algorithm’s instructions describe a computation that, when executed, proceeds through a finite number of well-defined successive states, eventually producing “output” and terminating at a final ending state. Algorithms are essential to the way computers process data. Many computer programs contain algorithms that detail the specific instructions a computer should perform—in a specific order—to carry out a specified task.


Apple Inc. is an American multinational technology company that specializes in consumer electronics, computer software, and online services. Apple was founded by Steve Jobs, Steve Wozniak, and Ronald Wayne in 1976 to develop and sell Wozniak’s Apple I personal computer. It was incorporated by Jobs and Wozniak as Apple Computer, Inc. in 1977, and sales of its computers, including the Apple II, grew quickly. They went public in 1980 to instant financial success. Over the next few years, Apple shipped new computers featuring innovative graphical user interfaces, such as the original Macintosh.

Application Programming Interface (API)

An API is a set of defined rules that explain how computers or applications communicate with one another. APIs sit between an application and the web server, acting as an intermediary layer that processes data transfer between systems.


Arduino is an open-source electronics platform based on easy-to-use hardware and software. Arduino boards are able to read inputs—light on a sensor, a finger on a button, or a Twitter message—and turn it into an output: activating a motor, turning on an LED, publishing something online. You can tell your board what to do by sending a set of instructions to the microcontroller on the board. To do so you use the Arduino programming language (based on Wiring), and the Arduino Software (IDE), based on Processing. All Arduino boards are completely open-source, empowering users to build them independently and eventually adapt them to their particular needs. The software, too, is open-source, and it is growing through the contributions of users worldwide.

Artificial Intelligence (AI)

Artificial intelligence (AI) is intelligence demonstrated by machines, as opposed to the natural intelligence displayed by humans and animals. Leading AI textbooks define the field as the study of “intelligent agents”: any system that perceives its environment and takes actions that maximize its chance of achieving its goals. Some popular accounts use the term artificial intelligence to describe machines that mimic “cognitive” functions that humans associate with the human mind, such as learning and problem solving. AI applications include advanced Web search engines, recommendation systems (used by YouTube, Amazon and Netflix), understanding human speech (such as Siri or Alexa), self-driving cars (e.g. Tesla), and competing at the highest level in strategic game systems (such as chess and Go).

Augmented Reality (AR)

Augmented reality is computer-generated content overlaid on a real world environment. AR hardware comes in many forms, including devices that you can carry and devices you wear, such as headsets, and glasses. Common applications of AR technology include video games, television, and personal navigation.


(Beginners’ All-Purpose Symbolic Instruction Code) is a family of general-purpose, high-level programming languages whose design philosophy emphasizes ease of use. The original version was designed by John G. Kemeny and Thomas E. Kurtz and released at Dartmouth College in 1964. They wanted to enable students in fields other than science and mathematics to use computers. At the time, nearly all computer use required writing custom software, which was something only scientists and mathematicians tended to learn.


basil.js is a simplified library aimed at designers. It brings scripting and automation into layout and makes computational and generative design possible from within InDesign. Additionally it also includes workflow improvements for data imports from various sources, indexing and complex document management.


C++ is a general-purpose programming language created by Bjarne Stroustrup in 1982 as an extension of the C programming language, or “C with Classes.” The language has expanded significantly over time, and modern C++ now has object-oriented, generic, and functional features in addition to facilities for low-level memory manipulation. It is almost always implemented as a compiled language, and many vendors provide C++ compilers, including the Free Software Foundation, LLVM, Microsoft, Intel, Oracle, and IBM, so it is available on many platforms. C++ was designed with an orientation toward system programming and embedded, resource-constrained software and large systems, with performance, efficiency, and flexibility of use as its design highlights.


Cascading Style Sheets (CSS) is a style-sheet language used for describing the presentation of a document written in a markup language such as HTML. CSS is a cornerstone technology of the World Wide Web, alongside HTML and JavaScript. CSS is designed to enable the separation of presentation and content, including layout, colors, and fonts. The term cascading derives from the specified priority scheme to determine which style rule applies if more than one rule matches a particular element. This cascading priority scheme is predictable.

Commodore C64

The Commodore C64 was a flagship personal computer product of the Commodore company, released in 1982. It was largely recognized as the highest-selling personal computer model of all time, with between 10 and 17 million units sold (according to available estimates). The Commodore C64 was an 8-bit home computer with 64 kB of RAM. It ran on a Commodore BASIC operating system and had a VIC-II graphics card, an external 170 K floppy drive, ports for two joysticks, and a cartridge port. In its time, the Commodore C64 stood out from its competitors in terms of both sound and graphics, with multicolored sprites and three-channel sound that provided what was, for that era, cutting-edge technology. The ability to play Commodore games on the system was only part of the appeal, with a variety of business uses also built into the early computing system.

Commodore VC-20

The Commodore VIC-20 / or VC-20 (known as the VC-20 in Germany and the VIC-1001 in Japan) is an 8-bit home computer that was sold by Commodore Business Machines. The VIC-20 was announced in 1980, roughly three years after Commodore’s first personal computer, the PET. The VIC-20 was the first computer of any description to sell one million units.


A database is an organized collection of structured information, or data, typically stored electronically in a computer system. A database is usually controlled by a database management system (DBMS). Together, the data and the DBMS, along with the applications that are associated with them, are referred to as a database system, often shortened to just database. Data within the most common types of databases in operation today is typically modeled in rows and columns in a series of tables to make processing and data querying efficient. The data can then be easily accessed, managed, modified, updated, controlled, and organized. Most databases use structured query language (SQL) for writing and querying data.


DrawBot is a powerful, free application for MacOSX that invites you to write simple Python scripts to generate two-dimensional graphics. The built-in graphics primitives support rectangles, ovals, (Bézier) paths, polygons, text objects and transparency. DrawBot is an ideal tool for teaching the basics of programming. Students get colorful graphic treats while becoming familiar with variables, conditional statements, functions, etc. Results can be saved in a selection of different file formats, including high resolution, scaleable PDF, SVG, movie, PNG, JPEG and TIFF. DrawBot is written in Python. The DrawBot project started in 2003 as a program named DesignRobots, written for a Python workshop at the TypoTechnica conference. Since then the application evolved into a Cocoa application with a powerful API and image export functionality. It has proven itself as a key part of the curriculum at the Royal Academy in The Hague, and is developed by Just van Rossum, Erik van Blokland and Frederik Berlaen.

Dual Licensing

Using dual licensing, licensors can distribute software to licensees under a proprietary model as well as an open-source model, allowing the licensor to simultaneously leverage the advantages of both types of licenses.


EPUB is an e-book file format that uses the “.epub” file extension. The term is short for electronic publication and is supported by many e-readers, and compatible software is available for most smartphones, tablets, and computers. The EPUB format is implemented as an archive file consisting of XHTML files carrying the content, along with images and other supporting files. EPUB is the most widely supported vendor-independent XML-based e-book format. EPUB is a technical standard published by the International Digital Publishing Forum and supported by almost all hardware readers.


An e-reader, also called an e-book reader or e-book device, is a mobile electronic device that is designed primarily for the purpose of reading digital e-books and periodicals. Any device that can display text on a screen may act as an e-reader; however, specialized e-reader devices may optimize portability, readability, and battery life for this purpose. Their main advantages over printed books are portability. An e-reader is capable of holding thousands of books while weighing less than one book. Many e-readers use the Internet through Wi-Fi and the built-in software can provide a link to a digital library or an e-book retailer, allowing the user to buy, borrow, and receive digital e-books.


Adobe Flash is a multimedia software platform used for production of animations, rich web applications, desktop applications, mobile apps, mobile games, and embedded web browser video players. Flash displays text, vector graphics, and raster graphics to provide animations, video games, and applications. It allowed streaming of audio and video, and can capture mouse, keyboard, microphone, and camera input. Flash was initially used to create fully interactive websites, but this approach was phased out with the introduction of HTML5. Instead, Flash found a niche as the dominant platform for online multimedia content, particularly for browser games. Due to numerous security flaws, the use of Flash declined as Adobe transitioned to the Adobe Air platform. The Flash Player was deprecated in 2017 and officially discontinued at the end of 2020.


Fontographer, developed by James R. Von Ehr for the Mac and released in January 1986, was the first commercially available Bézier curve editing software for a personal computer. High quality fonts in PostScript format could be developed for a fraction of the cost of other existing methods, leading to the democratization of type design. For the first time, numerous self-taught type designers without substantial capital investment could produce fonts for professional use. Fontographer 2.0 was released eight months later, in the fall of 1986. In 1989, Fontographer 3.0 was released, featuring an auto-trace tool and automatic generation of hints for PostScript printer fonts.

For Loop

In computer science, a for-loop (or simply for loop) is a control flow statement for specifying iteration, which allows code to be executed repeatedly. A for-loop has two parts: a header specifying the iteration, and a body which is executed once per iteration. The header often declares an explicit loop counter or loop variable, which allows the body to know which iteration is being executed. For-loops are typically used when the number of iterations is known before entering the loop. For-loops can be thought of as a shorthand for while-loops, which increment and test a loop variable.


Fortran is a general-purpose, compiled imperative programming language that is especially suited to numeric computation and scientific computing. It was originally developed by John Backus and IBM in the 1950s for scientific and engineering applications, and subsequently came to dominate scientific computing. It has been in use for over six decades in computationally intensive areas such as numerical weather prediction, finite element analysis, computational fluid dynamics, geophysics, computational physics, crystallography and computational chemistry.

Generative Adversarial Network (GAN)

A generative adversarial network is a class of machine learning frameworks. Two neural networks contest with each other in a game (in the form of a zero-sum game, where one agent’s gain is another agent’s loss). Given a training set, this technique learns to generate new data with the same statistics as the training set. For example, a GAN trained on photographs can generate new photographs that look at least superficially authentic to human observers, having many realistic characteristics.


Git is a software that tracks changes in any set of files. It is generally used for coordinating work among programmers who are collaboratively developing source code during software development. Its goals include speed, data integrity, and support for distributed, non-linear workflows (thousands of parallel branches running on different systems). Git was created by Linus Torvalds in 2005 for development of the Linux kernel, with other kernel developers contributing to its initial development. Since 2005, Junio Hamano has been the core maintainer. As with most other distributed version control systems, and unlike most client-server systems, every Git directory on every computer is a full-fledged repository with complete history and full version-tracking abilities, independent of network access or a central server. Git is free and open-source software distributed under GNU General Public License Version 2.


GitHub, Inc. is a provider of Internet hosting for software development and version control using Git. It offers the distributed version control and source code management (SCM) functionality of Git, plus its own features. It provides access control and several collaboration features such as bug tracking, feature requests, task management, continuous integration and wikis for every project. Headquartered in California, it has been a subsidiary of Microsoft since 2018. GitHub offers its basic services free of charge. Its more advanced professional and enterprise services are commercial. Free GitHub accounts are commonly used to host open-source projects.


GitLab is a web-based DevOps lifecycle tool that provides a Git repository manager providing wiki, issue-tracking and continuous integration and deployment pipeline features, using an open-source license, developed by GitLab Inc. The open source software project was created by Ukrainian developers Dmitriy Zaporozhets and Valery Sizov. GitLab follows an open-core development model where the core functionality is released under an open-source (MIT) license while the additional functionality is under a proprietary license.


Glyphs is a Mac font editor that puts you in control, enabling you to quickly draw high-precision vectors, efficiently reuse shapes, and easily manage any number of letters, figures and symbols. Glyphs is a project of type designers and software developers Georg Seifert and Rainer Erich Scheichelbauer.


Google LLC is an American multinational technology company that specializes in Internet-related services and products, which include online advertising technologies, a search engine, cloud computing, software, and hardware. It is considered one of the big four technology companies along with Amazon, Facebook, and Apple. Google was founded in September 1998 by Larry Page and Sergey Brin while they were Ph.D. students at Stanford University in California.

Google Docs

Google Docs is an online word processor included as part of the free, web-based Google Docs Editors suite offered by Google. Google Docs is accessible via an Internet browser as a web-based application and is also available as a mobile app on Android and iOS and as a desktop application on Google’s Chrome OS. Google Docs allows users to create and edit documents online while collaborating with other users in real-time. Edits are tracked by user with a revision history presenting changes. An editor’s position is highlighted with an editor-specific color and cursor and a permissions system regulates what users can do.

Google Sheets

Google Sheets is a spreadsheet program included as part of the free, web-based Google Docs Editors suite offered by Google. The app allows users to create and edit files online while collaborating with other users in real-time. Edits are tracked by user with a revision history presenting changes.


HyperText Markup Language, better known as HTML, is the standard markup language for documents designed to be displayed in a web browser. It can be supported by technologies such as Cascading Style Sheets (CSS) and scripting languages such as JavaScript. Web browsers receive HTML documents from a web server or from local storage and render the documents into multimedia web pages. HTML describes the structure of a web page semantically and originally included cues for the appearance of the document. HTML can embed programs written in a scripting language such as JavaScript, which affects the behavior and content of web pages. Inclusion of CSS defines the look and layout of content. In 1980, physicist Tim Berners-Lee, a contractor at CERN, proposed and prototyped ENQUIRE, a system for CERN researchers to use and share documents. In 1989, Berners-Lee wrote a memo proposing an Internet-based hypertext system. Berners-Lee specified HTML and wrote the browser and server software in late 1990.


HyperCard is a software application and development kit for Apple Macintosh and Apple IIGS computers. It is among the first successful hypermedia systems predating the World Wide Web. HyperCard combines a flat-file database with a graphical, flexible, user-modifiable interface. HyperCard includes a built-in programming language called HyperTalk for manipulating data and the user interface. HyperCard is based on the concept of a “stack” of virtual “cards”. Each card contains a set of interactive objects, including text fields, check boxes, buttons, and similar common graphical user interface (GUI) elements. Users browse the stack by navigating from card to card, using built-in navigation features, a powerful search mechanism, or through user-created scripts. HyperCard was originally released in 1987 and was included free with all new Macintosh computers. It was withdrawn from sale in March 2004, having received its final update in 1998 upon the return of Steve Jobs to Apple. HyperCard runs in the Classic environment, but was not ported to Mac OS X.


HyperTalk is a discontinued highlevel, procedural programming language created in 1987 by Dan Winkler and used in conjunction with Apple Computer’s HyperCard hypermedia program by Bill Atkinson. Because the main target audience of HyperTalk was beginning programmers, HyperTalk programmers were usually called “authors” and the process of writing programs was known as “scripting”. HyperTalk scripts resembled written English and used a logical structure similar to that of the Pascal programming language.


Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let application developers write once, run anywhere (WORA), meaning that compiled Java code can run on all platforms that support Java without the need for recompilation. The syntax of Java is similar to C and C++, but has fewer low-level facilities than either of them. The Java runtime provides dynamic capabilities (such as reflection and runtime code modification) that are typically not available in traditional compiled languages. As of 2019, Java was one of the most popular programming languages in use according to GitHub, particularly for client-server web applications, with a reported nine million developers.

JavaScript (JS)

JavaScript is a lightweight, interpreted, object-oriented language with first-class functions, and is best known as a scripting language for Web pages, but it’s used in many non-browser environments as well. It is a prototype-based, multi-paradigm scripting language that is dynamic, and supports object-oriented, imperative, and functional programming styles. JavaScript runs on the client side of the web, which can be used to design/program how the web pages behave on the occurrence of an event. The basic syntax is intentionally similar to both Java and C++ to reduce the number of new concepts required to learn the language.


Kinect is a line of motion-sensing input devices produced by Microsoft and first released in 2010. The technology includes a set of hardware originally developed by PrimeSense, incorporating RGB cameras, infrared projectors and detectors that map depth through either structured light or time of flight calculations, and a microphone array, along with software and artificial intelligence from Microsoft to allow the device to perform real-time gesture recognition, speech recognition and body skeletal detection. This enables Kinect to be used as a hands-free natural user interface device to interact with a computer system.

Kinetic Type

Kinetic typography—the technical name for “moving text” or “motion typography”—is an animation technique mixing motion and text to express ideas using video animation.


LaTeX, pronounced “Lah-tech” or “Lay-tech,” is a high-quality typesetting system; it includes features designed for the production medium-to-large technical or scientific documents but it can be used for almost any form of publishing. LaTeX is available as free software.

Library (computing)

In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and subroutines, classes, values or type specifications. A library is also a collection of implementations of behavior, written in terms of a language, that has a well-defined interface by which the behavior is invoked. Library code is organized in such a way that it can be used by multiple programs that have no connection to each other, while code that is part of a program is organized to be used only within that one program. The value of a library lies in the reuse of standardized program elements. When a program invokes a library, it gains the behavior implemented inside that library without having to implement that behavior itself. Libraries encourage the sharing of code in a modular fashion and ease the distribution of the code.


Lingo is a verbose object-oriented scripting language developed by John H. Thompson for use in Adobe Director (formerly Macromedia Director). Lingo is used to develop desktop application software, interactive kiosks, CD-ROMs and Adobe Shockwave content. Lingo is the primary programming language on the Adobe Shockwave platform, which dominated the interactive multimedia product market during the 1990s.


The Linux kernel is a free and open-source, monolithic, modular, multitasking, Unix-like operating system kernel. It was conceived and created in 1991 by Linus Torvalds for his i386-based PC, and it was soon adopted as the kernel for the GNU operating system, which was created as a free replacement for UNIX. Since then, it has spawned a large number of operating system distributions, commonly also called Linux. Linux is deployed on a wide variety of computing systems, such as embedded devices, mobile devices (including its use in the Android operating system), personal computers, servers, mainframes, and supercomputers.

MIT Media Lab

The MIT Media Lab promotes an interdisciplinary research culture that brings together diverse areas of interest and inquiry. Unique among other laboratories at MIT, the Media Lab comprises both a broad research agenda and a graduate degree program in Media Arts and Sciences. Faculty, students, and researchers work together on hundreds of projects across disciplines as diverse as social robotics, physical and cognitive prostheses, new models and tools for learning, community bioengineering, and models for sustainable cities. Art, science, design, and technology build and play off one another in an environment designed for collaboration and inspiration.

Machine Learning

Machine learning is an application of artificial intelligence (AI) that provides systems the ability to automatically learn and improve from experience without being explicitly programmed. Machine learning focuses on the development of computer programs that can access data and use it to learn for themselves. The process of learning begins with observations or data, such as examples, direct experience, or instruction, in order to look for patterns in data and make better decisions in the future based on the examples that we provide. The primary aim is to allow the computers learn automatically without human intervention or assistance and adjust actions accordingly.


The Macintosh (generally referred to as a Mac since 1998) is a family of personal computers designed, manufactured, and sold by Apple Inc. (originally Apple Computer, Inc.) since January 1984. The original Macintosh is the first successful mass-market all-in-one desktop personal computer to have featured a graphical user interface, built-in screen, and mouse. Apple sold the Macintosh alongside its popular Apple II, Apple IIGS, Apple III, and Apple Lisa families of computers until the other models were discontinued in the 1990s.

Macromedia Director

Adobe Director (formerly Macromedia Director) was a multimedia application authoring platform created by Macromedia and managed by Adobe Systems until its discontinuation in 2017. Director was the primary time-based editor on the Adobe Shockwave platform, which dominated the interactive multimedia product space during the 1990s. Originally designed for creating animation sequences, the addition of a scripting language called Lingo made Director a popular choice for creating CD-ROMs, stand-alone kiosks and internet video game content during the 1990s.

Material Design

Material Design is a design language developed by Google in 2014. Expanding on the “cards” that debuted in Google Now, Material Design uses more grid-based layouts, responsive animations and transitions, padding, and depth effects such as lighting and shadows.


Max, also known as Max/MSP/Jitter, is a visual programming language for music and multimedia developed and maintained by San Francisco-based software company Cycling ’74. Over its more than thirty-year history, it has been used by composers, performers, software designers, researchers, and artists to create recordings, performances, and installations. The Max program is modular, with most routines existing as shared libraries. An application programming interface (API) allows third-party development of new routines (named external objects). Thus, Max has a large user base of programmers unaffiliated with Cycling ’74 who enhance the software with commercial and non-commercial extensions to the program.


Metafont is a description language used to define raster fonts. It is also the name of the interpreter that executes Metafont code, generating the bitmap fonts that can be embedded into PostScript. Metafont was devised by Donald Knuth as a companion to his TeX typesetting system.


Microsoft Corporation is an American multinational technology corporation which produces computer software, consumer electronics, personal computers, and related services. Its best known software products are the Microsoft Windows line of operating systems, the Microsoft Office suite, and the Internet Explorer and Edge web browsers. Its flagship hardware products are the Xbox video game consoles and the Microsoft Surface lineup of touch-screen personal computers.Microsoft was founded by Bill Gates and Paul Allen on April 4, 1975, to develop and sell BASIC interpreters for the Altair 8800. It rose to dominate the personal computer operating system market with MS-DOS in the mid-1980s, followed by Microsoft Windows.


Node.js is an open-source, cross-platform, back-end JavaScript runtime environment that runs on the V8 engine and executes JavaScript code outside a web browser. Node.js lets developers use JavaScript to write command line tools and for server-side scripting—running scripts server-side to produce dynamic web page content before the page is sent to the user’s web browser. Consequently, Node.js represents a “JavaScript everywhere” paradigm, unifying web-application development around a single programming language, rather than using different languages for server-side and client-side scripts.

Open Source

Open-source software is software with source code that anyone can inspect, modify, and enhance. The term originated in the context of software development to designate a specific approach to creating computer programs. Today, however, the term “open source” designates a broader set of values. Open source projects, products, or initiatives embrace and celebrate the principles of open exchange, collaborative participation, rapid prototyping, transparency, meritocracy, and community-oriented development. Open-source licenses affect the way people can use, study, modify, and distribute software. In general, open-source licenses grant computer users permission to use open-source software for any purpose they wish. Some open-source licenses—sometimes referred to as “copyleft” licenses—stipulate that anyone who releases a modified open-source program must also release the source code for that program alongside it. Moreover, some open-source licenses stipulate that anyone who alters and shares a program with others must also share that program’s source code without charging a licensing fee for it.


OpenFrameworks is an open source C++ toolkit for creative coding, designed to assist the creative process by providing a simple and intuitive framework for experimentation. The code is written to be massively cross-compatible. OpenFrameworks supports five operating systems (Windows, OSX, Linux, iOS, Android) and four IDEs (XCode, Code::Blocks, and Visual Studio and Eclipse). OpenFrameworks is distributed under the MIT License. This gives everyone the freedom to use openFrameworks in any context: commercial or non-commercial, public or private, open or closed source. While many openFrameworks users give their work back to the community in a similarly free way, there is no obligation to contribute. OpenFrameworks is actively developed by Zach Lieberman, Theodore Watson, and Arturo Castro, with help from the OpenFrameworks community.


P5.js is a JavaScript library for creative coding created by Lauren Lee McCarthy in 2013. Its purpose is to make coding accessible and inclusive for artists, designers, educators and beginners. P5.js is free and open-source. To use the metaphor of a sketch, p5.js has a full set of drawing functionalities. However, one is not limited to a drawing canvas—you can visualize your whole browser page as a sketch pad, including HTML5 objects for text, input, video, webcam, and sound. P5.js is currently led/run?/maintained? by Qianqian Ye and Evelyn Masso.


p5.js’ collaborative live-coding VJ environment.


PHP is a general-purpose scripting language geared towards web development. It was created by Danish-Canadian programmer Rasmus Lerdorf in 1994. PHP originally stood for Personal Home Page, but it now stands for the recursive initialism PHP: Hypertext Preprocessor. PHP code is usually processed on a web server by a PHP interpreter implemented as a module, a daemon or as a Common Gateway Interface (CGI) executable. On a web server, the result of the interpreted and executed PHP code – which may be any type of data, such as generated HTML or binary image data – would form the whole or part of an HTTP response.


PageBot® is a scriptable page layout, vector graphics and typography environment that enables designers to create high quality documents in various print-ready and web-based formats. It is available as a Python library with multiplatform support based on Flat as well as a Mac OS X extension that uses DrawBot. The core library, tutorials and basic examples for PageBot are available under the MIT Open-Source license. PageBot is initiated and developed by Buro, Petr van Blokland and Claudia Mens.


Paged.js is a free and open source JavaScript library that paginates content in the browser to create PDF output from any HTML content. This means you can design works for print (e.g. books) using HTML and CSS.


Paper.js is an open-source vector graphics scripting framework that runs on top of the HTML5 Canvas. It offers a clean Scene Graph / Document Object Model and a lot of powerful functionality to create and work with vector graphics and Bézier curves, all neatly wrapped up in a well designed, consistent and clean programming interface. Paper.js is developed by Jürg Lehni & Jonathan Puckey, and distributed under the permissive MIT License.

Portable Document Format (PDF)

Portable Document Format (PDF), is a file format developed by Adobe in 1993 to present documents, including text formatting and images, in a manner independent of application software, hardware, and operating systems. Based on the PostScript language, each PDF file encapsulates a complete description of a fixed-layout flat document, including the text, fonts, vector graphics, raster images and other information needed to display it. PDF files may contain a variety of content besides flat text and graphics, including logical structuring elements, interactive elements such as annotations and form-fields, layers, rich media (including video content), three-dimensional objects, and various other data formats.


PostScript is a page description language (PDL) that describes a page’s text and graphical content. It can be used to define the appearance of graphics and text for both screen and print. The language was developed by Adobe in 1984 and has since gone through many revisions and updates. Before PostScript was introduced, publishing systems relied on proprietary typesetting systems, which often caused incompatibilities between computers and printing systems. Adobe PostScript makes it possible to produce high-quality page content that can include text, images, and line art in a standard format compatible with multiple devices. PostScript (.PS) files will print out in the exact same way from any PostScript compatible printer. They can also be opened using Adobe Acrobat and will look consistently the same on Macintosh and Windows platforms. The evolution of PostScript led to the development of Adobe Acrobat, which creates PDF documents.


ProcessWire is a free and open-source content management system (CMS) and framework (CMF) written in the PHP programming language. ProcessWire is built around an API with usage and naming conventions similar to the JavaScript framework jQuery. The stated goal behind the API is to provide the level of accessibility and control to pages in a website that jQuery provides to the DOM. Content is managed either via the API or the web-based admin control panel. ProcessWire is largely used for development of websites, web applications, services, content feeds and related applications.


Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology. There are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning and prototyping. Processing was initiated in Spring 2001 by Ben Fry and Casey Reas. At the time, Fry was a PhD candidate at the MIT Media Laboratory and Reas was an Associate Professor at the Interaction Design Institute Ivrea (IDII). Processing began as a personal initiative and it was developed over nights and weekends through 2003. MIT indirectly funded Processing through Fry’s graduate stipend and IDII indirectly funded Processing through Reas’s salary. Due to his research agreement with MIT, all code written by Fry during this time is the intellectual property of MIT.


Python is an interpreted, object-oriented, high-level programming language with dynamic semantics. Its high-level built-in data structures, combined with dynamic typing and dynamic binding, make it very attractive for Rapid Application Development, as well as for use as a scripting or glue language to connect existing components together. Python’s simple, easy-to-learn syntax emphasizes readability and therefore reduces the cost of program maintenance. Python supports modules and packages, which encourages program modularity and code reuse. The Python interpreter and the extensive standard library are available in source or binary form without charge for all major platforms, and can be freely distributed. Python was conceived in the late 1980s by Guido van Rossum at Centrum Wiskunde & Informatica (CWI) in the Netherlands as a successor to the ABC programming language, and it was first released in 1991 as Python 0.9.0. Python 2.0 was released in 2000. It introduced new features, such as list comprehensions and a garbage collection system using reference counting. Python 3.0 was released in 2008 and was a major revision of the language that is not completely backward-compatible.


RAWGraphs is an open source data visualization framework built with the goal of making the visual representation of complex data easy for everyone. Primarily conceived as a tool for designers and vis geeks, RAWGraphs aims at providing a missing link between spreadsheet applications (e.g. Microsoft Excel, Apple Numbers, OpenRefine) and vector graphics editors (e.g. Adobe Illustrator, Inkscape, Sketch). The project, led and maintained by the DensityDesign Research Lab (Politecnico di Milano) was released publicly in 2013.


React (also known as React.js or ReactJS) is a free and open-source front-end JavaScript library for building user interfaces or UI components. It is maintained by Facebook and a community of individual developers and companies. React can be used as a base in the development of single-page or mobile applications.


Just van Rossum, Erik van Blokland and Tal Leming developed RoboFab, a Pythonic API to FontLab’s native objects. RoboFab was heavily inspired by RoboFog and their APIs are very similar. A simple toolkit for creating UIs in Python, DialogKit, was also created. All together, this allowed designers to port their old RoboFog scripts to RoboFab. The RoboFab package was distributed freely under an open-source license and worked in both Windows and Mac versions of FontLab. It had a pretty website with very complete documentation and a colorful font object map. RoboFab became popular among font makers and helped them create useful tools to get work done.


RoboFog is a Python-powered version of Fontographer produced by Petr van Blokland in the early 1990s. With Just van Rossum’s help, Van Blokland managed to compile Fontographer with a Python interpreter, and built an API so that the program became scriptable. RoboFog was very successful within its niche market. It included a small toolkit for creating custom UIs in pure Python. Users have a lot of fun with its features, and used it to build tools which were very useful for their workflows.


Written from scratch in Python with scalability in mind, RoboFont is a fully featured font editor with all the tools required for drawing typefaces. It provides full scripting access to objects and interface and a platform for building your own tools and extensions.

Scalable Vector Graphics (SVG)

Scalable Vector Graphics (SVG) is an XML-based markup language for describing two-dimensional based vector graphics. It is a text-based, open Web standard for describing images that can be rendered cleanly at any size without loss of quality and is designed specifically to work well with other web standards including CSS, DOM, JavaScript, and SMIL. In essence, SVG is to graphics what HTML is to text. SVG images and their related behaviors are defined in XML text files, which means they can be searched, indexed, scripted, and compressed. Additionally, this means they can be created and edited with any text editor or with drawing software. SVG has been developed by the World Wide Web Consortium (W3C) since 1999.


Scriptographer is a scripting plug-in for Adobe Illustrator. It enables the user to extend Illustrator’s functionality through the use of the JavaScript language. Scriptographer allows the creation of mouse-controlled drawing tools, effects that modify existing graphics and scripts that create new ones.


Sketchbook (formerly StudioPaint, Autodesk SketchBook), is a raster graphics software app intended for expressive drawing and concept sketching. The software was first developed by Alias Systems Corporation as StudioPaint, before being acquired by Autodesk and then being spun out into an independent company, Sketchbook, Inc. Originally developed as commercial software, it evolved into a subscription model before eventually being made freeware for personal use.

Turbo Pascal

Turbo Pascal is a dialect of the Pascal programming language which was sold by Borland International during the 1980s and 1990s for use with the MS-DOS and later Microsoft Windows operating systems. A few versions (1.0 and 1.1) were also released for Apple’s System 6 and System 7. It provided an Integrated Development Environment or IDE, which combined editor, program compiler and execution environments for developing, debugging, and compiling Pascal source code.

Turtle Drawing Robot

The concept can be traced back to William Grey Walter’s work in robotics in the 1940s which investigated complex behaviors in simple systems. Turtle robots are generally slow-moving with tight turning radiuses and can trace a design that shows their behavior over time. They make excellent teaching aides because their programmed output can be seen visually.

Type Foundry

A type foundry is a company that designs and distributes typefaces. Before digital type design, type foundries manufactured and sold metal and wood typefaces for hand typesetting, and matrices for line-casting machines like the Linotype and Monotype, for letterpress printers. Today’s digital type foundries distribute typefaces created by type designers, who may either be freelancers, or employed by the foundry. Type foundries may also provide custom type design services for clients.


Unity is a cross-platform game engine developed by Unity Technologies, first announced and released in June 2005 by Apple as a Mac OS X exclusive game engine. The engine has since been gradually extended to support a variety of desktop, mobile, console and virtual reality platforms. It is particularly popular for iOS and Android mobile game development. The engine can be used to create three-dimensional (3D) and two-dimensional (2D) games, as well as interactive simulations.

User Experience (UX)

User experience (UX) refers to the way a user interacts with and experiences a product, system or service. It includes a person’s perceptions of utility, ease of use, and efficiency.

User Interface (UI)

User interface (UI) design is the design of interfaces for machines and software, such as computers, mobile devices and other electronic devices, with a focus on maximizing usability for the user.

Variable Font

A variable font is a font file that is able to store a continuous range of design variants. An entire typeface (font family) can be stored in such a file, with an infinite number of fonts, styles and widths available to be sampled. The variable font technology originated in Apple’s TrueType GX font variations. The technology was adapted to OpenType as OpenType variable fonts (OTVF) in version 1.8 of the OpenType specification. The technology was announced by Adobe, Apple, Google, and Microsoft in September 2016.

Virtual Reality (VR)

Virtual reality is a simulated experience that can be similar to or completely different from the real world. Applications of virtual reality include entertainment (e.g. video games), education (e.g. medical or military training) and business (e.g. virtual meetings).

Web Open Font Format (WOFF)

The Web Open Font Format is a font format for use in web pages. WOFF files are OpenType or TrueType fonts with format-specific compression applied and additional XML metadata added. The primary goals are to distinguish font files intended for use as web fonts from font files intended for use in desktop applications via local installation, and to reduce web-font latency when fonts are transferred from a server to a client over a network connection. The first draft of WOFF 1 was published in 2009 by Jonathan Kew, Tal Leming, and Erik van Blokland. Following the submission of WOFF to the World Wide Web Consortium (W3C) by the Mozilla Foundation, Opera Software and Microsoft in April 2010, the W3C commented that it expected WOFF to soon become the “single, interoperable [font] format” supported by all browsers. The W3C published WOFF as a working draft in July 2010. The final draft was published as a W3C Recommendation on 13 December 2012.


Web-to-Print, also referred to as Web2Print, W2P or Remote Publishing, does not just have one general definition. Many different processes, systems and software fall under this umbrella term. Web-to-Print combines the traditional way of producing print materials, as well as all other processes that take place online, like the creation and publishing process for example. All the following processes are part of Web-to-Print, from the editing of simple templates, uploading and generating print materials to database publishing.


20200228-Jurg-Lehni-RVL-corr-DH, Image 3
20200228-Jurg-Lehni-RVL-corr-DH, Image 4
Limited edition poster created in Afternow-Scriptographer, inspired by 3D type on record sleeve of The Faust Tapes (1973), Philippe Decrauzat, Jürg Lehni, 2005.
20200228-Jurg-Lehni-RVL-corr-DH, Image 3
20200228-Jurg-Lehni-RVL-corr-DH, Image 4
Hektor writes out the name of the exhibition Design and the Elastic Mind at the NY MoMA, Jürg Lehni, 2008.
20200228-Jurg-Lehni-RVL-corr-DH, Image 3
Viktor at Two Legacies, All Possible Futures, at SOMArts, San Francisco, Wilm Thoben and Jürg Lehni, 2014.
20200228-Jurg-Lehni-RVL-corr-DH, Image 3
Detail, Tadpoles, PaperScript online code editor, Jonathan Puckey.

pageHandler Debug
page took 0.04207706451416ms to render