!!Con logo

!!Con 2020

May 9-10, 2020

The joy, excitement, and surprise of computing


Keynote Talks

Allison Parrish

Allison Parrish

Allison Parrish is a computer programmer, poet, educator and game designer whose teaching and practice address the unusual phenomena that blossom when language and computers meet. She is an Assistant Arts Professor at NYU’s Interactive Telecommunications Program, where she earned her master’s degree in 2008.

Taeyoon Choi

Taeyoon Choi

Taeyoon Choi is an artist, educator, and organizer. He is a co-founder of the School for Poetic Computation, an artist-run institution with the motto of “More Poetry, Less Demo!” Taeyoon seeks a sense of gentleness, intellectual kinship, magnanimity, justice and solidarity in his work and collaboration. He has presented installations, performances and workshops at Eyebeam Art and Technology Center, Los Angeles County Museum of Art, New Museum, M+ Museum, Istanbul Design Biennale, Seoul Mediacity Biennale and Venice Biennale for Architecture. He contributed to alternative education such as the Public School New York, Occupy University and Triple Canopy Publication Intensive. In 2019, Taeyoon worked with Mimi Onuoha to start the New York Tech Zine Fair, with support from Ritu Ghiya and Neta Bomani. He also collaborated with Nabil Hassein and Sonia Boller to organize the Code Ecologies conference about the environmental impact of technology. As a disability justice organizer, Taeyoon continues to work with the Deaf and Disability community towards accessibility and inclusion.

Lightning Talks

Amy Cash

Amy Cash

Punch Card Love! A (Very!) Personal History of Computer Dating!

I owe my existence to punch cards. When I tell people that my parents met on a computer date, they generally aren’t that surprised. This changes when I mention that the date was arranged in 1968. Where, when, and why did the computer dating industry begin? Who was invited to participate (and who was not)? What machines, languages, and algorithms were used? All these questions will be answered as we explore the social and technical aspects of the early days of using computation to find romance.

In 1998, a friend of Amy’s told her she should get into computer programming; 19 years later she finally took him up on the idea. She is a 2017 graduate of Ada Developer’s Academy (Cohort 8!) and she currently develops software for biologists at the University of Washington.

Andrew Yoon

Andrew Yoon

Writing {{‘poems that change’, ‘chance poems’, ‘dynamic poetry’}}!

Roses are red, violets are—purple? Blue? Why not both! {{‘The Blur Markup Language’, ‘BML’}} allows {{‘writers’, ‘authors’}} to {{‘make’, ‘write’}} text which is lazily evaluated, freeing them from the {{‘requirement’, ‘assumption’}} that their words have to exist in any one {{‘static’, ‘fixed’}} form. Unlike more open-ended text generation approaches, BML allows the creation of {{‘tightly’, ‘precisely’}} composed texts rich with surprises and possibilities. We’ll explore the motivations behind chance poetry{{‘ and BML,’, ‘’}} and see how it’s being used in {{‘the wild’, ‘action’}} from books to essays to installations.

Andrew Yoon is making poems that change, live coding noise, playing melodica, growing the art journal nothing-to-say.org, and advocating for copyright abolition. He can be found online at andrewyoon.art

Ben Kuhn

Ben Kuhn

89 characters of base-11?! Mobile networking in rural Ethiopia!

Suppose you’re trying to build a client-server app that works in rural Ethiopia. Mobile data there doesn’t work most of the time! Of course, you’re not going to let that stop you… but how will you manage?! How many strange protocols will you need to abuse to make it work??

We’ll start our journey with a standard Android app using standard HTTP calls, and slowly descend into the abyss through a soup of acronyms including SSL, UDP, SMS, and even USSD. By the end, we’ll have encoded our entire network request into a string of less than 89 characters which are either digits or the letter N, and also understood why the heck we need to do that?!

Ben works on helping unbanked people in Sub-Saharan Africa send and save money. When not bashing his head against obscure network protocols, he enjoys reading, climbing, hiking, making music, contra dancing, trying to improve the world, and various other strange activities. You can find him on the Internet at benkuhn.net.

Char Stiles

Char Stiles


I am going to talk about EMAIL! Yes, email! Not to complain about email, but the good parts of email, like the cool stuff that we can do with it: maintain a git repo, display html, run your own email server, use a CLI inbox, and make art. For so many, it is the most used form of digital communication that only necessarily relies on a protocol, and not a company or institution. Email was born in the 70s and it’s not going anywhere!

I will share my journey making my own mischievous email server, which aims to bring a spark back into email communication. I will also go over the protocol (this talk is still 10 min, the protocol is just that simple!).

Hopefully at the end of this talk everyone can appreciate email a little more, and perhaps some will agree with me that email is totally metal.

Char Stiles thinks about email protocol a lot, but spends all day practicing social protocol by writing and sending emails. Char is very much online with the handle @charstiles on many social media platforms, with a home page at www.charstiles.com.

Chloe Revery

Chloe Revery

The Taming of the Clue: Teaching a Pen Plotter To Solve Crossword Puzzles!!

Have you ever tried to solve a crossword puzzle and walked away stumped? Imagine being a secondhand pen plotter from the 1980s! The humble pen plotter – a robotic arm with pen attachments once used to draw graphs for business presentations – is about to get an upgrade! Together we’ll equip it with a shiny new algorithm that parses and solves modern crossword puzzles. On the way, we’ll invent a new file format (or two!), teach the plotter to write the alphabet, and learn about a plagiarism scandal that rocked the crossword world. In the grand finale, the plotter will go head-to-microchip with some of the best solvers in the U.S. in a race against the machine.

Chloe Revery is a San Francisco based coder who makes programs, puzzles, and puns. You can find her on Twitter at https://twitter.com/chloerevery.

Dylan Nugent

Let’s implement DNS to learn history!

The history of most internet protocols is captured in static and sometimes obtuse standards documents called RFCs. Reading all the necessary RFCs to understand a protocol might seem like a tedious chore…but it doesn’t have to be! RFCs give us a unique glance into what was (and wasn’t) on the minds of engineers decades ago when they were designing these protocols! If we study RFCs like archeologists might study artifacts, we can learn a lot!

DNS, the system that translates domain names like ““google.com”” into routable addresses, is one of the oldest application protocols still in regular use! It’s defined across over 256 different RFCs, which sounds daunting, but we don’t need to look at them all! Let’s take a deep dive into a few of these RFCs and learn what we can by exploring some of DNS’s stranger quirks!

Dylan is a programmer who just moved to Brooklyn from San Francisco. He’s currently recovering from being a manager by spending time at the Recurse Center, a self-directed retreat for programmers who want to learn about things (such as the minuta of networking protocols)! When he’s not building DNS servers for fun, he’s probably backpacking, singing karaoke, or both.

Em Lazer-Walker

We used a MIDI CONTROLLER to tune our GAMEFEEL!

My game designer partner and I had a seemingly-impossible challenge: we needed to take the traditionally-arduous process of fine-tuning the way a game ““feels””, and short-circuit that feedback cycle so it could happen in hours or days rather than weeks.

Our solution: a physical MIDI controller! We wired up the sliders and knobs wired up to control the various ““gamefeel”” variables in our prototypes: things like how quickly you can turn, how powerful gravity is, how big explosions are when you hit something.

This talk will dive into the design philosophy of why being able to tune and tweak our games kinaesthetically with chunky physical knobs was so much more effective than changing numbers in a text file, explain how you too can use cheap MIDI controllers for unintended productive purposes, and above all emphasize the importance of designing tools that foster creativity and play rather than simply optimizing for effectiveness.

Em is a Toronto-based artist, engineer, and game designer! Most of her work focuses on using nontraditional interfaces to reframe everyday objects and spaces as playful experiences, and to inspire people to become self-motivated learners. She currently works as a cloud advocate at Microsoft focused on spatial computing.

Franklin Hu

Franklin Hu

Learning your 爱比西s: Translating Chinese into Morse code!

How do you translate Chinese into Morse code?

In the late 1800s, China was connected to the international telegraph network, and this was the big question! Morse code was originally conceived for transmitting English, and while it was extended to support other alphabetic languages, this didn’t work out of the box for character-based languages like Chinese.

In this talk, we’ll walk through the different encoding schemes used to convert characters to Morse code, their tradeoffs, and how some of the challenges are relevant to us still today!

Franklin writes software for a living and enjoys taking pictures of birds in museums, practicing Danish and Chinese, and shaving yaks (not literally).

Gábor Ugray

Gábor Ugray

Trapped in codepoints no more! I’m freeing Chinese characters.

Unless you’re one of the 1.5 billion people who learned to write Chinese in school, you probably only know the script as that remarkable thing where you must master thousands of characters to read the daily paper. But those thousands of characters have a structure: they mix, re-mix, combine and shuffle and creatively glue together only a few hundred components.

Together, this makes up an intricate system where elements combine with other elements, adding a piece of meaning here and hinting at the pronunciation there. The details are often more arcane than the spelling of English words, but if you get the knack of the system, the script as a whole suddenly starts making sense. The way computers encode Chinese characters erases all of this. There are no components, no shapes, and no system of interlocking parts. It’s all reduced to one code point per character.

I’m showing you how I’m building a dataset of Chinese characters and their parts. I promote SVG shapes to first-order citizens with meaning, sound, and historical background. The knowledge is out there in print books and unstructured digital content, but it’s never been collected in a thought-through machine-readable format. It’s a long journey: in 2 years I’ve covered 20% of the 9,000 characters in common use today.

I’ll conclude by showing the incredibly cool tools this dataset makes possible, from an interactive two-dimensional graph of every Chinese character to a unique cross-linked character dictionary app.

Gábor is co-founder of memoQ, the tool that brought real-time collaboration to translators before Google Docs was cool. He loves building whimsical language tools and has been known to train neural networks to translate. He blogs at jealousmarkup.xyz and tweets as @twilliability. He was last spotted zooming across Berlin on a sleek red racing bike.

Gargi Sharma

Gargi Sharma

Printing floating point numbers is surprisingly hard!!

Not many of us have wondered “how are floating-point numbers rendered as text strings?” and for good reason! This doesn’t seem like a hard problem to solve! But even in 2020, you don’t have guarantees in some languages that when you convert a string to float and vice versa you will get the same number! In this talk we will explore why printing floating point numbers is hard, arbitrary precision arithmetic, and the state-of-the-art dragon algorithms for printing floating point numbers!

Gargi is a software engineer who loves systems programming, planning elaborate city walks and Modern Art.


Helen Hou-Sandi

Sparking Musical Joy at Home With Magnetic Stripe Swipe Cards and Tiny Code!

Voice assistants can be great, but when you throw in noisy households and small people who don’t speak clearly and are asking for things in multiple languages, plus the whole surveillance state thing, they’re not always a great solution! These same small people often don’t read, either, but they have lots of opinions. So what to do when they love music and you’re a programmer who’s tired of being on call as a human jukebox? You build off a video you saw once and bring joy home in the form of a Raspberry Pi, tactilely satisfying magnetic stripe swipe cards, stickers, and a 5 line Bash script!

Helen is the Director of Open Source Initiatives at the fully-distributed agency 10up and a Lead Developer for the WordPress open source software project. When she’s not deep in a code editor or polishing UX, she likes to make complicated food, hang out with her family, and continue performing as a professional collaborative pianist.

James Ryan

James Ryan

CBS Televised Computer-Generated Stories in 1960—and Ten Million Watched!

On October 26th, 1960, CBS-TV aired three computer-generated playlets for a viewing audience of millions. The playlets were produced by SAGA II, a computer program developed by MIT researchers in collaboration with television producers at CBS, for a miniseries called Tomorrow. In this talk, I’ll leverage multiple years of archival research to tell the wild story of the most ambitious early undertaking in computational media, and the remarkable collaboration that made it possible.

James Ryan (@xfoml) is a researcher and practitioner at the intersection of art and computation. His current scholarly focus is in digging up obscure pioneering work in this area, with an emphasis on forgotten early examples of story generation and computer poetry. In 2018 he earned the first PhD in Computational Media from UC Santa Cruz, with his thesis Curating Simulated Storyworlds, and he is now a research scientist based in Minneapolis.

Jonathan Kingsley

Jonathan Kingsley

Reverse engineer your ski goggles for fun and profit!

Do you like tearing down weird hardware? Are you a fan of bringing old things back to life? Do you love to break both legs with the snowsports equivalent of distracted driving? Well, do we have the talk for you! In this talk we’ll somehow fit in: breaking down the demise of Recon Instruments, discuss how to reverse engineer hardware from a company that’s as dead as a doornail, demo some brand new firmware for a 7 year old piece of hardware, and explain how all of this will still not make you cool.

Jonathan is a software engineer by day and live production tech, pyrotechnician, and musical theatre peformer by night. His interests include hardware reverse engineering and information security. He has once set a swimming pool on fire.

Joshua Wise

Joshua Wise

Screwing up is easier than ever before!

When I was growing up, hardware was quite an expensive hobby. I got to play around some, but I never really got any good at building bigger circuits, because failure was so pricey – if I got something wrong, I had to get out all the etching chemicals again, so I didn’t try anything that I wasn’t absolutely certain of. I think of this all the time, because I feel so lucky that professional-grade manufacturing is much more affordable, and parts are much cheaper – so I can make mistakes to my heart’s content!

I feel like the best ways I’ve learned – both when I’ve built hardware, and when I’ve written software – have been from screwing up, and getting pretty fast feedback as to what went wrong. In this talk, I’ll give you explicit permission to screw up, and I’ll give you some of my most educational moments of when I screwed up – and I’ll give you some pointers so you can start screwing up at home, too!

Joshua blows up electronics less frequently, but not infrequently, when he does work for his clients (they would generally prefer him to blow up nothing at all). He is thankful that they, too, understand that blowing things up is an important part of the R&D process.

Julia Tufts

Julia Tufts

Bang Bang!! My Interpreter Shot Me Down!

How does a JavaScript object feel when it’s hit with a !! operator? In this musical ballad, we’ll look at what a !! operator does at a high level and how it can be useful. Then we’ll explore what it does at a lower level, from the perspective of an object seething with resentment. We’ll discover how a !! is parsed and interpreted in V8, by following a multifaceted object’s descent into boolean reduction.

Julia is software engineer based in Brooklyn, originally from Halifax, Canada. She used to study classical music and graph theory, but now makes bleeps, bloops, and bad wordplay. She enjoys imbuing abstract concepts with tenderness.

Martin Gaston

Martin Gaston

bringing back my 1998 by building an arduino that can recover a playstation memory card!

In 1998, armed with the original PlayStation and my childhood, I saved Midgard from Sephiroth, averted nuclear armageddon by sneaking through Shadow Moses and escaped a zombie infested Racoon City.

These iconic games have been re-released and remastered in various forms, but my digital memories of them now only exist on a single PlayStation Memory Card: 128kb of EEPROM storage I recently found hidden in a shoebox during a move. Awash with nostalgia by just holding the rectangular card in my hands, I realised I just had to find a way to break into this trove.

Join me as I learn how to setup an Arduino to access this data, tear down an original PlayStation console, read those precious bytes from my memory card and then convert them into a format to relive my 1998 memories on a modern PlayStation emulator in 2020.

The talk is specifically aimed at beginners with an interest in hardware and low-level file manipulation, and looks to introduce obtaining, reading and parsing a binary file in an introductory and accessible way. Python is used for some file manipulation, so a little knowledge of dynamic languages and an interest in 90s gaming would likely be beneficial.

Following careers in games media and marketing, Martin really got into programming in 2018 after previously assuming tech was inaccessible for people without a computer science degree. He was forged in the friendly fires of Founders and Coders - a tuition-free, peer-led UK bootcamp - and now talks about the 90s way too much with the rest of the team at 8th Light.

Matt Clawson

Matt Clawson

Repair a Commodore 64 in just 64 Months!!

It took me over 5 years, but I did eventually get my thrift store Commodore 64 up and running! Along the way, I encountered active online communities who are keeping old platforms alive by openly sharing technical documents, repair logs, and 21st century improvements to computers from the past.

I’ll share my experience of going from an absolute beginner with a broken computer to a beginner with a working computer! I’ll walk through some of my troubleshooting steps and simply explain the faulty subsystems which prevented the computer from working. You’ll learn about the challenges of working with old machines, see the tools folks use for repair, and be introduced to some of the cool hobbyist efforts that make impossible repairs possible.

Matt builds software for journalists and is located in Newark, NJ. He enjoys studying the history of computing and learning the inner workings of obsolete platforms adored by millions.


Matthew Dockrey

Programming from an alternate timeline!

We take ANDs and ORs for granted, but for millennia there was only the IMPLIES of classical Aristotelian syllogisms. It wasn’t until the 19th century that mathematical logic started to emerge, and it was a long time before it looked anything like what we use today. In 1879, Gottlob Frege published a gloriously weird notation system using branching lines, concavities and judgments. Sadly, no one else ever adopted it – in our timeline. Notation developed along less interesting lines here. But I wanted to see what programming would have been like had Frege won out, so I turned his notation into a working language. Doing so taught me just how different it is to approach problems with implication as your only logical operator, and it left me with a much deeper appreciation of our humble ANDs and ORs.

Matthew Dockrey is a Seattle-area industrial artist with a particular interest in kinetic sculpture of all scales. The history of technology provides the inspiration for much of his work, as well as exploring the beauty of mechanical design. His work has been featured on the Discovery Channel, displayed at Greenwich Observatory in London, and was selected to adorn the 2015 Hugo Award. His large-scale kinetic sculptures can be found at Burning Man, and his public art can increasingly be found in cities around the Pacific Northwest.

Nick Sweeting

Nick Sweeting

Quebec’s 735kv power lines can survive the apocalypse, but can they run TCP?!

Quebec built the world’s first 735 kV power line in 1965, and was the highest-voltage, longest-distance network for decades before the rest of the world caught up. Even today it’s still seen as ““bomb-proof”” by the rest of the world, and is often used as a model. But it wasn’t always that way…

When a massive ice storm took down 36,000 power pylons overnight in 1998, Quebec had to rebuild and restart their power grid from the ground up. Let’s do some failure analysis and learn how big power systems around the world are designed to fail gracefully, and what happens when they don’t. (P.S. TCP over power lines totally works)

Nick Sweeting is the co-founder of Monadical in Montreal, and his favorite bike paths all run under power lines. He’s a Django developer by day, and rogue internet archivist / power grid investigator by night. He likes learning about how big systems fail, and thinks thyristor halls look neat.

Omar Rizwan

Omar Rizwan

Playing Breakout… inside a PDF!!

If you’re like me, you think of PDFs as basically benign creatures: they’re static documents where the author laid out some text and graphics, and when you open a PDF, all your PDF reader does is display that stuff.

Maybe that was what PDFs were originally, but today, the PDF specification is… 1,310 pages, and a PDF can contain things like:

  • embedded Flash
  • audio and video annotations
  • 3D object annotations (!)
  • rich text forms using a subset of XHTML and CSS

but most interestingly…

  • JavaScript scripting (!!!!!!!)

So I wrote a game in JavaScript that lives inside a PDF: when you open the PDF in Chrome, you can play Breakout!

I’ll show some basics of the PDF standard, how you embed JavaScript, and then discuss the problems I ran into when making this game work.

It turns out, for example, that Adobe’s PDF JavaScript has a completely different standard library from browser JavaScript – and Chrome’s PDF reader only implements a weird subset of Adobe’s libraries! I’ll talk about the wild hacks I needed for basic things like tracking the player’s mouse cursor and making the Breakout game’s display update over time.

Omar Rizwan is fascinated by weird leftover details of file formats and by what those details say about a format’s history. He works as a researcher at Dynamicland in Oakland, California.

Payas Rajan

Payas Rajan

Supercharged Dijkstra’s: Computing ‘shortest’ paths on large road graphs in microseconds!

Road networks are often modeled as graphs with millions of edges, and finding a ‘shortest’ path on them is a fundamental operation for several applications. When Fibonacci heaps are used, Dijkstra’s algorithm provides an asymptotically optimal solution to the shortest path problem. However, in practice, Dijkstra’s is too slow for unaltered use in mapping services. In this talk, I shall present Contraction Hierarchies, a technique that can speed up the shortest path computation by almost an order of magnitude or more!

Payas once wanted to study History, but is now working towards a PhD in Computer Science at the University of California - Riverside. His research involves developing strange versions of route planning algorithms for transportation networks, and sometimes, more broadly, algorithm engineering. He used to work for Samsung Research.

Phil Warren

Recreating Photography of the 1850s in a Digital World: Cowboys, Principal Component Analysis, and One Vengeful Volcano Spirit!!!

Ever wonder why photos taken from the civil war era make the subject look ridden hard and put away wet? Exploring the chemical properties from those photos, we can learn why conventional modern cameras can’t naturally photograph the same way, and how we can hack them to get closer. Along the way we’ll employ the help of some principal component analysis on a 3 dimensional volume of color-sorted pixels to make our weird novel data look correct. Then we’ll make portraiture with glowing eyes and unseen freckles, because we’ll learn how to make and use UV-sensitive digital photography- and learn a thing or two* about vengeful volcano spirits!

*only one thing will be learned about a singular vengeful volcano spirit.

Phil Warren works in R&D in image technology, and enjoys adventures, eating things, and meeting people. He wants to explore and see everything, and discover new ways to do so. His skillset does not include competently hang gliding or playing a singing saw, but he’s tried it anyway, and hopes to try many more esoteric pastimes!

Sacha Sayan

Obelisk and the Known Unknowns (Or: The Art of Fumbling Through your Side Project to Create Something Incredible!)

I had a dream of building something cool in the realm of digital signage, no fabrication knowledge, questionable memory of high school physics equations, and a terrible track record for finishing side projects. So I did what anyone else would do: Pulled my credit card out to buy a bunch of undocumented electronics from an internet wholesaler and forced myself to sit down and figure it out. The result: Something amazing, and a deep reflection for how we should think about our pet projects.

When Sacha (@sachasayan) isn’t getting himself into trouble committing to side projects, he’s working as a software engineer in Toronto, Canada. In his spare time he also likes to get lost on motorcycles in far flung corners of the planet, demonstrating that he really is a masochist beyond redemption.

Tamás Kádár

Tamás Kádár

Little Printing for everyone!!1

Do you remember the Little Printer? It was an internet-connected, super cute thermal printer, which printed you your calendar and news headlines in the morning; you could even message your friends if they also had one. It was a commercial flop and the servers were shut down in 2015, but that’s only the start of our story. Today, with a little work, you too have your own Little Printer — and now you can use any thermal printer for it (some assembly required).

Tamás is a generalist working in DevOps and Infrastructure lately, automating all the things. He’s really into writing lately and loves the world’s most pointless drink, a decaf iced latte.

Tim Holman

Tim Holman

The Making of a Mosquito.JS

The audio api’s are one of the most complex and wonderful parts of the browser, built to open up the entire web to audio creation. At some point though, we were so preoccupied with whether or not we could, we didn’t stop to think if we should… And as such, mosquito.js was born.

This talk is about my descent into madness, as piece by piece I poured my energy into best possible recreation of the most dangerous, and annoying creatures on the entire planet. Learn some web audio basics, and some neat tips and tricks, and see how one person completely fell apart trying to perfect something that should never have existed in the first place. If you’re lucky, you can go a little insane too!

Tim is an Australian developer with a love for all things weird on the web, if you don’t catch him hacking away at the worlds most useless code, he’ll be working hard on tools to get more people into generative art, and feeling empowered to create!

Tristan Hume

Tristan Hume

Using font shaping to put commas in big numbers EVERYWHERE!!

My job involves a lot of staring at big numbers, like latencies in nanoseconds, and picking out larger magnitudes like microseconds. I got tired of counting digits in many different programs, so I decided to solve the problem in the most general way possible: with a font! OpenType font shaping allows fonts to provide all sorts of fancy rules for how they’re displayed. I’ll explain how I repurposed a feature designed for Arabic calligraphy in order to make a font that inserts fake commas between groups of three digits in large numbers everywhere!

Tristan Hume works on fast software at Jane Street. He gets captivated by funny and cool technical ideas and develops a burning desire to implement them, mostly in Rust but sometimes in OpenType font shaping rules. He writes long technical articles about things he does and finds interesting at https://thume.ca/.

Perhaps you would also be interested in our 2019, 2018, 2017, 2016, 2015, or 2014 speakers?