Become a Glitch Girl in Just 10 Seconds: A conversation with Andi McClure

Programmer, artist, and maker-of-wonderful-esoterica Andi McClure shares insights on games, woodland creatures, and collaborating with Corrypt developer Michael Brough.

Andi McClure is a game developer and experimental digital artist, perhaps best known for her 2015 IndieCade and IGF nominated collaboration with Michael Brough, BECOME A GREAT ARTIST IN JUST 10 SECONDS. I had the pleasure of catching up with her at October's IndieCade festival to ask about her current projects and a bit more about writing her own conceptual programming language, Emily.

ZAM: You were telling me at IndieCade about your decision to just make something, once a week. You've put out a lot of cool, small projects like noise generators; little experiments like that. What prompted this project?

Andi McClure: I’m more productive when I have a structure to my work! I used to make a lot of games stuff, and then stopped for a while to work on a programming language project, and once that was over I spent something like a year not really able to get going again. Once I finally did get set up to make things again I decided to give myself a schedule to keep myself motivated.

It’s actually two weeks per round, that way I sort of have one earmarked week I can rest or work on infrastructure experiments for future rounds, and one week to actually make that round’s project.

Pictured: great art. Pictured: great art.

You mention your programming language, Emily. Tell us more about her! To a layperson, writing one's own programming language seems like a pretty steep task.

Well, I was sort of doing the language stuff before I was doing games! I was involved in language research when I was in college and I originally intended to make a living doing it, although life/economics things prevented that at the time. So to me this didn't feel like a big break or anything, it just felt like coming back to something I'd always wanted to do.

Part of Emily came out of a desire to have better tools to make games with. I was using a mess of multiple languages to make games and all of them felt like they were missing things I needed. The other part of Emily was that I had this idea, this really weird, sort of perverse idea, and I wanted to see if I could successfully build a language out of it. I wanted to take all the different things you see in programming languages (functions, classes, variables, values, scopes, flow control constructs) and try to make them all just special cases of functions. I wanted to create all things out of only one thing.

"I wanted to create all things out of only one thing."

These two goals actually fought against each other and I think in the end that's why I had to give up on the language project. I couldn't follow this pure conceptual idea that was so quirky it was almost artistic, and make something practically useful at the same time. In the end the conceptual idea won the tug of war. I actually achieved my artistic goal, the language was pure in the sense I wanted it to be pure and it actually worked and I proved it really was possible. It just wasn't very useful at all. I did make one game out of it, an endless runner, and in order for it to run at faster than 1 frame per second I had make it really low resolution and move most of the sprite drawing code into C.

I think if I ever go back to Emily I'm going to not worry about conceptual purity and just focus on making something useful this time.
One cool thing that did come out of the language project was I got invited to give a short talk at a functional programming conference, and the talk went up online, and some people I respect a lot looked at it and it said it gave them a lot to think about. The video is all about Emily's One Big Idea and I think I managed to cover it pretty well in 25 minutes.

(Warning, the talk was at a functional programming conference, so I assume everyone watching already knows what I mean if I say "lambda function"! So if you watch it you might want to just briefly look up first what a "lambda function" is. It's just the same thing as an "anonymous function." It's not really a complicated idea, functional programmers just like to use scary names for simple things.)

Incidentally, making a programming language is not actually very hard. Normal programming is pretty much just telling the computer what to do and then it does it. Making a programming language is just somebody else tells you what to do, and then you tell the computer to do it and it does it. It seems intimidating but once you try it it's surprisingly easy. Nothing's particularly hard except parsers. (I hate parsers.)

You have a new website project, dryad.technology, which is half your own work and half old games by Michael Brough. What was the concept behind the site?

I used to make a lot of small game like projects and dump them on my website Run Hello. I’m always really fascinated by the small things in game dev. I’ve had more than one project where I started off trying to make a conventional video game with goals and mechanics and then I would get distracted by some sort of visual effect I’d designed, and two days later the game would be dead and instead I’d have made some glitchy graphics toy with a bunch of controls for exploring this visual effect that was originally just supposed to be the game’s background.

Problem is, it’s really hard to get someone to download, like, a 7 MB executable, and then wrestle with their antivirus [software] because antiviruses tend to think small indie games are going to eat your computer, just to play with some audiovisual effect for three minutes. It was kinda hard three years ago when I was making this sort of thing all the time and I think it’s probably even harder now.

It’s possible to make interactive stuff for web browsers now though, and that seems like a better medium for this sort of semi-interactive art stuff. The friction for the player is as low as it can possibly be -- you click once and whatever it is you’re looking at is running, you don’t download anything, you don’t even have to switch from your phone back to your computer. And I think the web medium actually rewards things for being smaller. If you’re just glancing at something you saw linked on Twitter, you’re probably more likely to commit to a seven second Vine than sit down to play a 20 minute puzzle game.

Scrollcity, one of the games available on dryad.technology. Scrollcity, one of the games available on dryad.technology.

So the original idea for dryad.technology was about as simple as you can get, I was just going to register a website and make the smallest possible generative art pieces for it, no title screens or even controls unless the concept called for it, just there’s a URL and you open it up and something strange is happening. The name came from just typing random names into the domain registrar until I found something I liked (although I had this idea I wanted a name that combined the mechanical and the organic, some of the other names I considered were things like “fleshy.rocks” and “glitch.flowers”) and once I had the name I sort of spun this internal fiction around it. There’s this very thin idea that all the pages on the website are actually technological artifacts created by tree spirits [and] they each have a purpose. If you look at the front page it has little summaries explaining that this particular confusing collection of colors and sounds is actually a drill for tunneling between worlds, or some such.

How do Michael Brough's games figure into the picture? Have you thought about expanding it to include other devs' small, early projects?

As far as the old games by Michael Brough go -- that’s actually sort of me just breaking the original concept! I tried porting one of Michael Brough’s old games to run in a browser and it was easier than I expected, and I already had dryad.technology set up, so that was just the easiest place to put it.

I do want to post more ports of indie games on dryad.technology. There was this entire medium of indie games from about the 2007-2012 era where people made these very small, very short, often sort of enigmatic personal games, the sort of thing you’d find on TIGsource or freeindiegam.es, and those communities are all sort of gone now and I’m not sure many of the games themselves are being very well preserved. A lot of those games require Flash or old versions of Windows and so now they’re getting sort of hard to even run. So if I can use dryad.technology to bring back some of these older games that meant a lot to me and are now kind of forgotten, that would make me really happy. Plus games from that era fit well on the site. A lot of them only take a few minutes to finish, and a lot of them are made in SDL 1.0 which is unusually easy to port to modern browser tech.

"There’s maybe something a little bit dubious about videogames, it’s not something useful like a crystal that dissolves when you think about it or a set of wind chimes you can hang underground."

I do have to kind of “break character” to post them though -- they’re very obviously not dryad technologies. I deal with this by kind of putting a big warning on each of the ports on the front page. They’re all clearly labeled “VIDEOGAME,” like there’s maybe something a little bit dubious about videogames, it’s not something useful like a crystal that dissolves when you think about it or a set of wind chimes you can hang underground.

Anyway I’m talking to Michael about other ports, and I’ve got plans with another indie dev who was active in that 2010ish era and whom I have a lot of respect for. I might port some of my own older stuff for web also. I don’t want to say anything too specific right now because I don’t want to make commitments concerning other peoples’ work.

Game Title (Michael Brough, 2012) Game Title (Michael Brough, 2012)

Your and Brough's aesthetics pair really well together. I'd love to hear more about your dynamic. How did you meet and decide to work together?

I think actually what originally got us talking was Game Title [left], the Brough game that's on dryad.technology now. I really, really liked that game and I asked Michael for permission to port it to Mac. That's why it was the first thing to go up on dryad.technology, by the way -- I already had the source code sitting around from when I did the Mac port.

After that we talked more and we met up at GDC a couple times, and a few years later I approached him about doing a collaboration for Ludum Dare, the 48-hour game jam. There was a period of a year or two where I tried to do collabs every Ludum Dare, so I was approaching different designers I admired about this. Eventually I got the chance to do one with Michael and that was how [BECOME A GREAT ARTIST IN JUST 10 SECONDS] happened. The dynamic on ARTIST was really interesting, it felt to me sort of like we each had this bag of tricks for procedural generation we'd learned over different projects and we were sort of unloading them all all at once.

Michael's work is just really amazing at a lot of levels, his work just feels really certain in what it's trying to do. I feel really lucky I've got to work with him.

I assume BECOME A GREAT ARTIST IN JUST 10 SECONDS took more than 10 seconds to make. Doesn't that create a paradox?

OK so first off the name doesn’t suggest it was made in 10 seconds, it says you will become a great artist in 10 seconds. Second off, the 10 seconds is not an exact time but rather an upper bound, so the idea is really you will become a great artist in 10 seconds or less, which is possible because SPOILERS, YOU WERE ALREADY A GREAT ARTIST WHEN YOU STARTED, YOU DID NOT NEED THE PROGRAM AT ALL.

Seriously, this is I think what the political message of GREAT ARTIST probably is, if it has one. It’s a celebration of messy net art, and the mechanics of the program are all geared around trying to convince the player to feel comfortable just messing around to see what happens. It’s easy to think of art as something that only a special Artist’s Class makes but GREAT ARTIST demonstrates that all you need to do is download some program that applies glitch effects to random pixels and mash buttons for a bit and you will have made something beautiful.

You call yourself a "glitch girl" and a lot of your aesthetic involves glitching, visual tearing, digital artifacting, etc. What speaks to you about glitches?

I’ve been fascinated by the glitch concept since high school, back then there was a genre of music just called “glitch”. There was this one musician named Oval (Markus Popp) who made entire albums just by scratching up music CDs and then sampling the noises they made when he played them back. I was really into this and I used to make my own music by doing things like telling the computer to reinterpret computer programs as if they were audio files. (Pretty much ANY data file with structure sounds good as 8-bit 11khz PCM, as long as it isn’t a compressed format like JPG or ZIP.)

"Glitches are really about what happens when mechanisms that are supposed to be hidden make themselves visible."

I’ve carried forward that fascination into a lot of my other work. I’m really interested in mechanisms and systems and how computation works, and (I think I’m quoting Alex Leitch here) glitches are really about what happens when mechanisms that are supposed to be hidden make themselves visible. Things like data formats or VHS tapes are supposed to be passive carriers of information, but they each have their own rules and they each work a particular mechanical way, and you only get glimpses of those mechanics when they start to break down. If you’re the kind of person who thinks those mechanisms are beautiful, the only way to really let other people see that beauty is to push the mechanisms until they break.

Also I just seem to be unusually good at breaking things.

Last question, and perhaps the most crucial: how does one sing the body electric?

perl -e 'use Term::ReadKey;binmode STDOUT,":utf8";my@a=map{[]}(0..10);my@c=split//," \x{2591}\x{2592}\x{2593}\x{2591}\x{2588}\x{2588}";my$q=5;my@d=([-0.25,0.25,-0.25],[0.25,1,0.25],[-0.25,0.25,-0.25]);my@e=([1,1,1],[1,1,1],[1,1,1]);sub A{my($a,$b)=@_;return($a+$b)%$b}sub B{my($a,$b,$x,$y,$w)=@_;my$c=0;for my$t(0..2){for my$s(0..2){my$u=$$a[$y+$t-1][A($x+$s-1,$w)];my$d=$$b[$t][$s];$c+=$u*$d}}return$c}sub C{my($a,$b,$v)=@_;$$a=$v if($$a==undef||$$a>$v);$$b=$v if($$b==undef||$$b<$v)}sub D{my($a,$b,$c)=@_;return$a if($a>$b);return$c if($b>$c);return$b}sub E{my($a,$b)=@_;while(@$b<$a){push@$b,rand()}@$b=@$b[0..($a-1)]}my$f=150;my$g=150;my$h=0;my$i=0;while(1){my($j)=GetTerminalSize();push@a,[];for my$r(@a){E($j,$r)}my@b;push@b,$a[0];my($k,$m);for my$y(1..(@a-2)){my@out;for my$x(0..($j-1)){my$v=B(\@a,\@e,$x,$y,$j);C(\$k,\$m,$v);push@out,$v}push@b,\@out}my$n;if($i==2){$n=0}elsif($i==0){$n=1}elsif($i==3){$n=$h/$g}elsif($i==1){$n=1-$h/$g}$h++;if($i==0||$i==2){if($h>$f){$i++;$h=0}}elsif($i==1||$i==3){if($h>$g){$i++;$h=0}}if($i==4){$i=0;$f+=100}for my$y(1..(@a-2)){for my$x(0..($j-1)){$b[$y][$x]=($b[$y][$x]-$k)/($m-$k);my$v=B(\@a,\@d,$x,$y,$j);$v=D(0,$v,1);$b[$y][$x]=$b[$y][$x]*$n+$v*(1-$n)}}push@b,$a[@a-1];@a=@b;{my$p=$a[2];my$o=0;if($n>0&&$n<0.5){$o=(1-$n*2);$o*=2}for my$v(@$p){my$r=$v;$r=D(0.0,$r*(1+$o),1.0)if($o>0);print$c[int($r*$q)]}print"\n"}shift@a}'

This interview has been lightly edited for clarity and length.

Disclosure: I have served as a juror for the IndieCade Festival for several years. I did not evaluate GREAT ARTIST nor was I involved in its award nomination.