!!Con logo

!!CON 2015

The joy, excitement, and surprise of programming

May 16-17, 2015 in NYC

Keynote Speakers

Mary Rose Cook

Mary Rose Cook

Git from the inside out!

Mary is a programmer. She wrote Gitlet, an implementation of Git in JavaScript. She made Isla, a programming language and dev environment for children. She wrote two games, Pistol Slut and Empty Black. She works at the Recurse Center. She tweets @maryrosecook. She lives in New York City.


David Nolen

David Nolen

Invent the Future You Want To Live In!

Among other things, David enjoys programming computers and playing music.

Speakers

Lea Albaugh

Lea Albaugh

From text to textiles!

Industrial computer-controlled knitting machines can quickly and reliably fabricate arbitrary three-dimensional fabric objects (!), but how do I tell one what to make? It turns out that most of what we want to do comes down to four basic machine operations and a lot of repetition. But we're coders (/ music makers / dreamers of dreams), so we know that what "four operations and a lot of repetition" really means is: what are the useful abstractions?

When it comes down to it, what's an elegant way to tell a machine how to make a hat? Or lace? Or patterned socks? And how might I write that in JavaScript?

Lea makes things in a variety of physical and virtual media.


Kiran Bhattaram

Kiran Bhattaram

Bending the Laws of Physics! Or, How Wi-Fi Keeps Getting Faster.

Shannon's Law tells you how fast you can transmit information over a channel with a given bandwidth and noise level. You just can't beat the limit — until we start talking about ways you can.

Learn how adding more antennas lets you squeeze more information out of the air! (Note: this is actually the coolest!) Along the way, we'll discuss what the silly numbers and letters on your router mean, and the fantastic bag of signal processing and programming tricks that lets you carry the internet around in your pocket!

Kiran Bhattaram loves making things, whether tinkering with circuits, writing software systems, or sewing dresses. She works on Stripe's infrastructure team, and has previously built things for the New York Times, LinkedIn and MIT CSAIL.


Ashley Blewer

Ashley Blewer

Don't know about you, but I'm feeling like SHA-2!: Checksumming with Taylor Swift

I like checksums! I like Taylor Swift! Some people don't understand checksums! Some people don't understand Taylor Swift! But what's the big deal? That's okay! I want to give a talk that gives an overview of different checksum technologies when used for file fixity (and a little bit of information transformation and security) at a broad level using Taylor Swift lyrics as a reference and source of explanation and enlightenment because I think this tech is SO WEIRD AND INTERESTING and I also feel that way about Taylor Swift. Also I think it's fun. It will be fun. It will be at least 50% Taylor Swift.

Ashley Blewer is an audiovisual archivist, specialist, technologist, and enthusiast. She likes a lot of things. She cares about education (especially in tech), access (especially to moving images), the act of creation (especially on the web), and good archival practice (especially with digital formats).


Peter Boothe

Peter Boothe

QUINE + TAR = QUININE!!

Quines are self-printing programs. Every program can print out its own source code, and storage has become exceedingly cheap. So, we introduce Quinine, a library that uses fixed points, analytic philosophy, and tape storage tools to make open-source programs that carry their source code with themselves.

Quinine: Quine made from tar.

Peter Boothe is a software engineer and Internet researcher at the Google part of Measurement Lab. If you see a couple riding around New York on a bright orange folding tandem bike, one of the cyclists is almost certainly him.


Fiona Condon

Fiona Condon

Eternal Sunshine of the Spotless Search Index!!

Search engines are designed for remembering, but sometimes you need to forget. I built a custom search engine in Python to help me quit my time-suck nail art habit and my cuticles have never felt better. I'll show you how to use ranking techniques to hide dangerous reminders, text normalization as a safeguard against ill-advised nostalgia, and token blacklists to forget about the old you once and for all.

Fiona is a senior software engineer on Etsy's search experience team, drawing from decades of experience losing and finding her stuff. She lives in Brooklyn and loves reality TV and McDonald's breakfast.


Nick Doiron

Nick Doiron

Git Pushes from Paradise: Adding a remote island alphabet to Wikipedia!

On Majuro Atoll, in the Republic of the Marshall Islands, I was tasked with setting up a technology education program. The students and teachers were among the 50,000 people in the world who speak Marshallese, a language I knew next to nothing about. Even typing the characters of the Marshallese alphabet can be a challenge, and writing apps to support Marshallese proved difficult.

I discovered that most people use a custom font to read and write Marshallese letters by replacing x's, k's, and other letters on their American keyboards. Through some hacking with Unicode, JavaScript, and GitHub, I got a special keyboard added to Wikipedia and its open source library jQuery.IME. And I ended up with some useful internationalization and localization knowledge!

Nick Doiron is a web developer and mapmaker at the Museum of Modern Art. He has developed several open source applications with One Laptop per Child and Code for America. He is currently developing a multilingual eBook reader with a grant from the USAID All Children Reading program.


Bonnie Eisenman

Bonnie Eisenman

Music! Programming! Arduino! (Or: Building Electronic Musical Interfaces to Create Awesome)

Ever wanted to build wacky interfaces for shaping sound? Turns out it's easier than you might expect! By combining Arduino, a beginner-friendly electronic prototyping platform, and ChucK, a musical programming language, we can build some weird electronic musical instruments. Prior knowledge required: basic programming skills and an active imagination. I'll show off one of my experiments and discuss how to go about imagining your own projects.

Bonnie Eisenman is a software engineer at Codecademy in New York. She has spoken at several conferences on topics ranging from ReactJS to musical programming and Arduinos. In her spare time, she enjoys building electronic musical instruments, tinkering with hardware projects, and laser-cutting chocolate. Find her on Twitter as @brindelle.


Lisa van Gelder

Lisa van Gelder

Great Caching Disasters (and how to avoid them)!

Whenever something has gone seriously wrong for me in production, caching has been at the root of it. Live Q&A with Julian Assange almost brought the site down? Caching fail. Servers can't cope with traffic about a new woolly rat? Caching fail. Half the site is showing sorry pages? Caching fail. This talk will use these disasters to explain why it's important to keep caching simple.

Lisa has over 15 years experience in software engineering, including leading and managing software development teams. Her career has taken her between London and New York, and from small startups to large media organizations, including the Guardian and the BBC. She is currently VP of Engineering at Stride.


Polina Giralt and Anita Mehrotra

Polina Giralt & Anita Mehrotra

The Science behind #TheDress: Measuring Virality at BuzzFeed!

How did #TheDress gain international attention in just a few hours?

We answer this question by sharing how BuzzFeed thinks about the spread of content via social platforms. We then talk about how we use graph data to measure virality and the scaling problems we've seen along the way. Finally, we share how such analysis has led to tools that are useful to BuzzFeed's ability to rapidly disseminate critical information to a global audience.

Polina is a Data Engineer at BuzzFeed, where she productionalizes prototypes and builds data things. When she's not crushing bytes, Polina can be found practicing bass guitar or snowboarding. She pronounces it 'GIF'.

Anita is a Data Scientist at BuzzFeed, where she uses frequentist and Bayesian machine learning to understand how content goes viral. Originally a California girl, Anita also writes listicles, spins Soul Cycle, and teaches at Girls Who Code — sometimes at the same time (jk obvs).


Libby Horacek

Libby Horacek

Contributing to open source should be like ROLLER DERBY!!

Imagine if every time beginners stumbled into your project, they risked breaking a leg. Eventually, you would start taking onboarding very seriously. Roller derby leagues also have to recruit new players and prevent burnout. The strategies roller derby players have developed to build and maintain strong volunteer-run organizations can be used to make open source better, too — no body checking needed!

Libby Horacek has been excited and passionate about open source and free software for over a decade. She finally made her first contribution to an open source project last year. She also was a member of the Ohio Valley Roller Girls roller derby league, first as a skater and then as a volunteer, for four years before moving to New York to attend the Recurse Center this January.


Rob Jefferson

Rob Jefferson

What Programmers and Economists Can Learn from Each Other!

Over the past twenty years, I've been a sysadmin, researcher, and graduate student in economics. Somewhere in the past couple of years, I became a software engineer. With these varied experiences, I found that there were skills and practices I learned as a programmer that would've helped me in economics (for example, writing good tests, or coding with an eye towards modularity).

Similarly, there were lessons I learned while studying economics that I've taken with me to programming (making technical decisions at the margin, solving problems while being mindful of endogeneity). And there are things that both programmers and economists can and should learn, especially regarding understanding limitations of their respective toolkits and the importance of working with compassion and empathy.

In this talk, I'd like to share some of these lessons, with motivating examples of the research process.

Rob Jefferson is a software engineer for Solutions for Progress, a Philadelphia public policy and technology firm. He's had a number of other jobs, from developing containerized urban farms to server administration for oncologists.


Allison Kaptur

Allison Kaptur

Limitless and recursion-free recursion limits!

You might have hit the recursion limit in Python. But "recursion" isn't quite right — we can hit it without any recursion! "Limit" is right...but it doesn't have to be! In this talk, I'll show a tremendously silly Python bytecode hack to circumvent the limit.

Allison Kaptur gets inexplicable delight from Python internals. She worked at Recurse Center as a facilitator for two years before joining Dropbox. She now lives in San Francisco and tries to be outside as much as possible.


Sasha Laundy

Sasha Laundy

Spinning metal platters in the cloud!

These days, data scientists use very powerful frameworks and tools to crunch huge amounts of data. They use frameworks that operate at a very high level of abstraction, and often spin up virtual machines that can be across the country or across the world. But even though these computers are "in the cloud" and this is all super abstract, you actually have to understand how the physical spinning metal hard drive works in order to write fast queries! This talk will go through a few examples of how working with the hardware in your system can make your code run literally 100,000 times faster than before!

Sasha is interested in using data and data science to learn more about the world. She is currently reading a lot about weightlifting, exoplanets, and genomics, and recently brewed her first batch of beer. She nevergraduated from the Recurse Center two years ago.


Kevin Lynagh

Kevin Lynagh

I made a cell phone! (DON'T TELL THE FCC KTHX!)

Cell phones are awesome! But how do they work? We all know there's a part you talk into and a part that your friend talks out of, BUT WHAT HAPPENS INSIDE?

I decided to find out by designing and building my very own cell phone out of resistors and capacitors and other really small stuff. (I had to buy tweezers.)

This talk will overview this adventure, which also includes wood-cutting robots and a computer that is TOO SMALL FOR JAVASCRIPT.

Kevin Lynagh is a Portland, Oregon-based designer and computerist at Keming Labs. He has designed software for wind turbine technicians, meteorologists, and manufacturers of hipster housewares. When Kevin is not computering, he enjoys industrial design, Olympic lifting, and snacks.


Kamal Marhubi

Kamal Marhubi

What the clock?!!

Have you ever heard someone say that writing libraries that deal with time is hard? Time is WEIRD. Time and computers is REALLY WEIRD. And kind of awesome.

We'll learn how many seconds there are in a year, what UTC really means, that DST goes in different directions north and south of the equator, how you can't measure time in nanoseconds because of relativistic effects, and generally just as much weird stuff about time fits into ten minutes.

Kamal Marhubi is a polyglot programmer who lives in Montréal. He is not-so-secretly addicted to English change-ringing, and has rung the bells of over twenty churches in England, Canada, and the US.


Josh Matthews

Josh Matthews

Time travel, gdb, elephants, and you!!!!

Everybody knows that feeling — you're in the middle of tracking down a complicated piece of multithreaded non-determinism gone wrong. You're stepping through your code in the debugger, watching breakpoints fly by, and SUDDENLY it's too late! The problem you're watching for has already occurred, and you need to start all over again. Or do you?

The rr tool is the harbinger of an exciting new era of hassle-free debugging. Time travel has never been simpler, and an eidetic memory is within your grasp today! You will not believe how these wacky longstanding bugs in Firefox were solved!

Josh is a developer for Mozilla, and absolutely loves making open source projects more accessible to new contributors. He also sings in a barbershop quartet called the Bearded Baritones.


Allison Nelson

Allison Nelson

Dissecting a Bestseller: The Art and Science of Storytelling!

Storytelling has been a pastime since the beginning of humankind, but in the last few years more voices than ever before are being heard, thanks to the internet. Book publishing is no longer an industry guarded by gatekeepers and publishing houses, and anyone can publish works through services such as Kindle Direct Publishing.

Being an independent author myself, I wondered: what makes a bestseller? Are there trends? Is there some magical formula for book success? I analyzed dozens of books from the bestseller lists on Amazon using natural language processing algorithms. By combining the age-old craft of storytelling with new tools for data analysis, I investigate just what makes a bestseller tick.

Allison Nelson is an engineer from San Francisco where she spends her time building data tools, writing fantastical stories, and enjoying the sunshine. Her two biggest passions are programming and writing, and she's happiest when combining the two. The size of her hair is matched only by the size of her ideas.


Simon Sapin

Simon Sapin

Cross-platform file names in Rust: a wonderful and horrifying hack!

On Unix, file names (and other strings in system APIs) are arbitrary 8-bit bytes — usually UTF-8, but not necessarily. On Windows, they're "wide" strings of arbitrary 16-bit units — usually UTF-16, but not necessarily.

Either way, your program should not crash when it encounters a weird file name. The Rust standard library has a clever hack to deal with this in cross-platform code and mostly hide the complexity from users. Let's dive into the gory details!

Simon works at Mozilla Research on Servo, a new browser engine written in Rust and designed from the ground up for parallelism and safety. He also works on CSS specifications at W3C's CSS Working Group.


Max Veytsman

Max Veytsman

i'm in ur javaz haxxing ur codez!

Every time you start a new Java (or Clojure, Scala, and so on) project, your build tool will automagically download a bunch of code from the internet for you. Until last summer, that code was downloaded in the clear. Until last summer, someone sitting in the coffee shop where you code could surreptitiously inject lolcats directly into the Java bytecode you thought you were downloading.

In this talk, I will show you exactly how to hijack HTTP sessions of unsuspecting strangers who happen to be fetching Java bytecode and infest their code with unimpressed kittens.

I'll go over how to decompile Java class files, how to draw furry animals using Java bytecode, and how to inject this bytecode into Java archives without breaking what the library actually does. And I'll tell you how I convinced the company that hosts your Java packages to start using SSL.

Max Veytsman is a recovering penetration tester. He rediscovered his love for programming at the Recurse Center, and is now spending his days building Canary and other tools to further automate himself out of a job.


Scott Vokes

Scott Vokes

The Burrows-Wheeler Transform: Better Compression with a Reversible Sort!!

The Burrows-Wheeler Transform is my favorite algorithm! It partially sorts data, exposing structural patterns that make other compression algorithms more effective. Amazingly, the original input can be recovered from just the transformed data with just a starting offset.

In this talk, I'll give a bit of background info about the BWT and its uses, then reveal the insights that make it possible. I'll build up a straightforward version in Python, then show optimizations a production implementation might make.

Scott is a consultant at Atomic Object, where he builds embedded and distributed systems. Outside of work, his research interests include information retrieval — recent open source contributions include a data compression library for hard real-time systems, testing tools for C, and a content-addressable store.


Igor Wiedler

Igor Wiedler

MissingNo., my favourite Pokémon!

Missing Pokémon! Glitch City! Cloning! The Pokémon series featured some spectacular glitches that can teach us a lot about programming, computers, and distributed systems. When programs behave in unexpected ways, we gain the opportunity to change outcomes by using programming as a subversive act. Breaking the rules can open up new worlds!

I love glitches. <3

Igor is a programmer who is a little bit too fake, loves puns, and works at gif.industries.


Jon Williams

Jon Williams

Lightpainting with Robots! And JavaScript!

About a year ago I bought a uArm desktop robot via Kickstarter. It's tons of fun and I've learned a lot about C and Arduino real-time programming. However, C is a total pain and it'd be much more fun to use JavaScript instead. I'll demonstrate sending the robot commands over serial/Bluetooth from NodeJS.

I combined this with an RGB LED and a second Arduino controller. This LED can be controlled from the same JS program controlling the robot. Add a dark room and long-exposure photography, and it's possible to create amazing in-camera "paintings" with pure light (no Photoshop). Presentation will include a few inspirational examples, a dash of code (open-sourced at !!Con), and a live demo.

Jon ran a poetry slam and connected a robotic ouija board to the Internet pre-2000. After a long and complex relationship with ActionScript, denial gave way to anger, bargaining, depression, and now acceptance of JavaScript. He lives in Raleigh, NC and tweets @shovemedia.


Joshua Wise

Joshua Wise

Recovering data from an SD card — the hard way!

A while ago, I accidentally snapped an SD card in half. It had a bunch of photos on it that I didn't have backed up, but on the other hand, I don't believe in losing data! After discovering that the memory chip on it was still intact, but that the controller chip was dead, I decided to try to pull the data out of the raw memory chip. Along the way, I learned a whole bunch of stuff about flash memory. I also learned that people jump through a lot of hoops in order to make flash memory behave like a hard drive, when in reality, the two aren't much alike at all!

In this talk, I'll tell you more about the story of putting the pieces back together, and I'll give you an introduction to some of those strange things that people do with flash. Also, you can laugh at me for not making backups.

Joshua spends most of his time at work during the week alternating between writing specifications that turn into chips and reading climbing blogs. He doesn't really believe in learning his lesson, either, and probably will show up to his talk with an SD card hanging out of the side of his laptop, ready to be smashed in half once again.