The Art of Obsession
Michael Bernstein is obsessed. Not with anything in particular, just in general. He’s a Brooklyn, NYC-based software developer and amateur computer scientist who writes at michaelrbernste.in and tweets (too much) at @mrb_bk. He works at Code Climate, and he’s given talks on garbage collection and distributed systems in the past. He is very excited to hang and chat with everyone at !!Con!
How to Stay in Love with Programming
Camille Fournier has been nerding up all the things since Amigas were cool and having access to Gopher was the hotness. She proudly writes most of her code in Java, burned out on functional programming in the 90s, and still really doesn't get CSS. Her hobbies include weightlifting, vintage fashion, tweeting, and helping keep 100% volunteer open source projects from falling into disrepair. She also runs the engineering team at Rent the Runway.
Continuations; or, how to travel through time!
Continuation-passing style is a powerful and mind-warping technique that lets code play with its own control-flow (its "future", so to speak). For example, it lets you elegantly express backtracking search algorithms such as regular expression matching. This curious technique also has deep connections to topics as diverse as compiler optimization, programming language design, and classical versus constructive logic.
Michael Arntzenius is a type theorist, logician, and occasional systems programmer. He is fascinated by programming languages, with a focus on expressivity and extensibility. He is currently taking a summer break from graduate study at CMU to explore the wider world of programming.
Computer vision and archeology!: Can computers assemble ceramic artifacts?
Employing computer vision algorithms to help automate ceramic classifications in vessel reconstructions provides significant time and cost savings, expediting the analysis of unique and vital colonial history databases for the needs of new and deeper history interpretation. In this talk, I introduce practical computer vision methods that help archaeologists classify vessels and assemble the recovered artifacts!
Kamelia Aryafar is a Data Scientist at Etsy Inc. and a Ph.D. candidate in the computer science department at Drexel University. Her main area of interest is pattern recognition and machine learning techniques in computer vision!
Darius Bacon and Danielle Sucher
Nantucket! Hacking at verse
We wrote programs to find text that matches verse forms like sonnets and limericks. We'll explain how, and subject you to some of the output.
When Danielle Sucher was a kid, she wanted to grow up to live in a library in a lighthouse and spend all her time learning and solving puzzles and making stuff. Except for the lighthouse (so far), that's pretty much what her grown-up life has become.
Wikipedia called Darius Bacon a poet, which he thinks is hilarious. He writes toy programs pretty often, and not so many serious ones. He will be in New York for the rest of May.
Mark Jason Dominus
This catalog of Perl introspection techniques will amaze,
confound, or disgust you! A Perl method call like
$object->fgsfds() emits an unhelpful message
about an unknown method, without any advice about what
would have worked.
We will see the internals of
Help.pm, a Perl
module which catches an attempt to call an undefined method,
and emits a helpful list of valid method names.
First, we will see how the
forcibly inserts itself into the inheritance hierarchy for
the target module, so that failed method lookups will be
Help when normal inheritance
fails. Then we will see Perl's
feature, the method of last
Help will then search the inheritance
hierarchy synthetically, using Perl's symbol table
interface, to locate methods of interest. Finally, the
AUTOLOAD method will emit a report about what
Mark first became interested in programming in the mid-1970s from watching his mom do it. He likes sending network packets because they make amazing things happen in faraway places.
Making music with floppy drives! An exercise in yak shaving
When I started developing Flopkestra, a floppy drive orchestra, I quickly stumbled upon the difficulty of manually encoding music into the custom bytecode that my orchestra could understand. That's when I had the idea of writing a program that could automatically extract melodies from recordings!
In this talk, I will describe my (ongoing) quest to get from whistling a tune into my laptop microphone to hearing the melody bursting out of floppy drives.
What began as an idea to produce some noise out of objects found in the dumpster lead me down the twisty path of hardware hacking, MIDI file parsing, digital signal processing and HTML5 canvas programming, none of which I knew anything about before starting this project.
While yak shaving is generally considered to be the enemy of "getting stuff done", I realized that it is a really good way of learning new things and keeping alive the excitement of programming!
is a tinkerer and (currently sedentary) wanderer living in
Toronto. When he is not trying to make music out of
dumpstered objects, he is most probably found
man pages, making culinary experiments
or taking long walks into unknown parts of the city.
Spying on your programs with strace!!!
strace lets you look into the soul of a program and see how it works. Without even seeing the source code! ANY program. I've become kind of obsessed with it and I'd like to share my obsession with you. We'll learn about system calls and go through a couple of practical examples of how to use strace to solve your everyday programming problems.
Julia Evans loves taking apart systems to find how they work, making Serious Computer Programs do silly things, and organizing outreach events to make our developer communities a better place. She works on Stripe's data team.
Understanding Garbage Collection, through Visualizing a One Pass Real-Time Generational Mark-Sweep Garbage Collector!
This talk will cover the fundamentals of garbage collection algorithms, by visualizing how the heap evolves over time when utilizing the algorithm described by Armstrong and Virding in "One Pass Real-Time Generational Mark-Sweep Garbage Collection." The algorithm is deceptively simple, but meets many of the requirements for a practical garbage collection algorithm — in fact, this algorithm was used in the Erlang runtime in the 90s.
Andrew Gwozdziewycz is the founder of Hack and Tell, a Show and Tell for Hackers, and co-organizer of the NYC Hack and Tell. His interests lie in distributed systems, programming languages and security, and he starts many more projects than any one father of two under 3 could dream of finishing.
Weaving and Programming: More Related Than You (Probably) Realize!
Weaving (one of the most popular methods of turning string into fabric) and programming may seem like they have little to do with each other, but the history of weaving technology and the history of computing are actually closely related. I love weaving and programming, and discovering that weaving technology is part of what made computers possible made me ridiculously happy.
This talk will walk through a brief explanation of how weaving works and how weaving tools developed over time, so that the connection between weaving and early computing makes sense (and because weaving is cool in itself, and has some interesting parallels to programming). Then I'll discuss how looms helped create early computers, and how modern computers now help control looms.
Allie Jones is a front-end web developer and former textile designer who loves making things for the internet.
A 1,500 line (!!) switch statement powers your Python!
Python internals are intense! There's a 1,500 line switch statement in the interpreter, and most of what the interpreter does is just switch over its cases! Your Python code is "dynamic", but there's also some "compiling" going on — see how little the Python compiler really knows!
Allison Kaptur is a facilitator at Hacker School, where she excels at rubber-duck debugging, untangling git repositories, and installing pygame. She is most famous for making a few appearances in Julia Evans' blog.
LZ77 refactors program traces!
I find it's surprisingly difficult to reliably recover loops and function calls from a program trace. Recently, Artur Jez introduced an elegant algorithm to transform a string's LZ77 factorisation into a straight-line program. I will describe that algorithm and hopefully share my excitement at its potential for runtime compilation and program specialisation.
Paul Khuong holds a PhD in Operations Research, but his real passion is program (micro)optimisation and compilers; some people may have used his work on SBCL. He recently moved to NYC to work at AppNexus, and he'd love to meet fellow developers in the city.
Brainwaves! On your computer!
There's more self to quantify than number of steps taken, especially in our heads! In this talk I will demonstrate building an application with Node.js that uses a consumer-grade EEG (electroencephalography) device to display detected brain activity. It's pretty awesome that we can (start to) analyze our brains from little programs on our laptops!
Daniel Luxemburg is a programmer and CTO at Bandwagon. Three of his favorite things are computers, cities, and brains. Daniel lives in Brooklyn with one houseplant.
The terrible Yook monster! Slayed by the grandson of Master Prolog!
I held my sword in front, and approached the village cautiously. I would have to slaughter the terrible Yook monster disguised in one of the hapless villagers' homes. I pushed the doors open, ready to hack and slash. To my shock, all of the villagers looked exactly the same!
And each had something to say about the other Anouki:
- FoFo said that Gumo was honest.
- Kumu said Mazo or Aroo was lying.
- Dobo said Mazo was honest.
- Gumo said Fofo or Aroo was lying.
- Aroo said Kumu was lying.
- Mazo said that he and Dobo were honest.
How dastardly! Only the Yook would lie to me. And I couldn't just kill them all and let God sort them out. I had to think about this. So I did what anyone in this circumstance would do: I pulled out Alloy.
Alloy is MIT's Daniel Jackson's ground-breaking new logic programming language which turns the whole notion of logic programming upside down — nay, turns programming as a whole upside down.
Guillaume Marceau is a software architect at Sefaira, building true-to-physics simulations of the energy consumption of green buildings. Before that, he was a Ph.D. student in computer science at WPI with Kathi Fisler doing research on programming language design for teaching, and at Brown doing research on functional reactive programming. He lives in New York now, but grew up in Montreal, speaks French-Québécois in his spare time, and recently started singing in Ukrainian.
The Sound of Segfaults!!
Generating real-time audio with programming requires an understanding of audio file formats, buffering to system devices, some gnarly C, and maybe some judicious ears and debugging skills. Let's hear what it sounds like when we screw any of that up!!
Travis McDemus is a programmer and music composer who likes writing programs that emit sound, slurp up the internet, and make people smile.
Serial! It's what's for breakfast.
Me: I want to write a program that talks to a serial port. Reality: What is serial port? How does work?
This talk aims to fill in that reality gap. I'll cover the basics of what serial is, how it works (RTS/CTS, stop signals, buffers), and possibly go over how to write/interact with Unix serial ports (in C or walk through part of the python pyserial library. TBD).
All serial info to be based on the RS-232 protocol.
Lisa is an artisanal cereal chef. Her current favorite is coconut orange macadamia granola. She spends most of her working hours playing with Java and Gradle on Android at Etsy.
Scrabble sucks! Toward higher-order word games
Pick up almost any word game and you'll find that its model of the English language is based almost entirely on an analysis of the frequency of single letters. It's why Z's are worth more, but are less common, in Scrabble, and why the same words always seem to show up when you're playing Boggle. In this talk, I argue that while this is an intuitive model, it's ultimately unfun — making word games more about rote memorization than, well, building words. As computer programmers, we can do more sophisticated analyses of language — like n-gram models and Markov chains — that have the potential to make word games (both digital and physical) more fun and satisfying. I'll talk about the quirks and shortcomings of existing word games, then show some prototypes and products that break the mold — and the code that went into developing those prototypes.
Parrish is a computer programmer whose jokes blur the distinction between use and mention. She is a third person singular personal pronoun.
L'Artiste et Le Programmeur!
Artists are known for being loyal to certain paintbrushes, to certain notebooks, to certain printers, and more. Gradually, software is solidifying its place in this creative process as an essential medium to facilitate creativity. Financial support of an artist can now be accomplished by button-click! Art can be presented on beautiful visual platforms that result in wider audiences than do physical spaces! Narrow definitions of patronage can be replaced by the supportive creative platforms of the web! Let's jam on the stunning power of programming to be a canvas for others' creative processes (and our own).
Emily is a Ruby engineer at Kickstarter. With an academic background in the arts and an insatiable love for code, she believes we can redefine creativity using new web-based, democratic tools.
We found chat in a hostile place!!
You want to chat securely with me, but I'm too lazy to switch from Facebook chat. How can we embed a secure channel inside Facebook?
Let's make a Chrome extension that sits on top of Facebook's chat interface! But what if Facebook is the enemy, or is co-opted by the enemy? How do we cope with securing output and input in an environment that is out to get us?
I'll explain my naive take on the problem, talk about some cool attacks, and then explain how I countered each attack.
Omar Rizwan is interested in how to use computers to help people think better. He built Cruncher, a scrubbing calculator, and enjoys experimenting with programming languages and other creative tools. He's an alumnus of Hacker School and worked at Khan Academy before moving to New York.
How I used my knowledge of code (and music!) to help fight fires!
Rural areas often require emergency responders to carry "pagers" with them to be informed about fires and other emergencies. These pagers are actually specialized radios, each specially configured to respond to one type of message intended for the individual carrying it.
Aside from requiring users to carry an extra device, this system has many drawbacks, including range and battery life limitations. Recently I worked with a company that has been building a system to bridge the gap between this old broadcast system and mobile devices. I helped to improve the reliability and ease of configuration of their systems by rewriting the code which is responsible for recording the radio broadcasts and decoding the signals which are used to identify the intended recipients of the messages.
I will discuss how the system works and also do a quick demo. The demo is a lot of fun in no small part because it involves various hardware, including a small Linux box, a radio, and funny tones and recorded sounds.
Bjorn Roche has been a consultant for the music and tech industries for the past ten years. He has worked on many projects for startups and major music studios as well as large and small companies. He is currently president of Shimmeo, Inc.
High Schoolers vs. Robots!!!!
On March 24th through 26th, Gilt invited the inaugural students from the BASE High School (Bronx Academy for Software Engineering) to program some robots. The result was amazing. We laughed; the robots danced and taught us how to do the douggy; we saw weird stuff on the Internet. Technology brought two completely disparate worlds together in a fantastic, hysterical way. And we developers, using robots, were able to contribute to a better, brighter future in a small but meaningful way.
Jennifer is a self-taught software engineer and spare-time educator. She focused mainly on server-side Java-based technologies before joining Gilt Tech. Now, she's super excited to be working with Scala as her first functional programming language, and in her free time, enjoys traveling, reading ALL THE THINGS!!! and having wrestling matches with her dog.
Now you're thinking with PCMPISTRI!
I needed a custom string comparison routine, and the C version wasn't fast enough. It turns out that modern Intel processors have SIMD instructions that understand C-style strings. So I considered writing a faster version in assembly language. I actually ended up solving the problem a different way, but I decided to write the SIMD assembly version anyway. This sort of programming is tremendously fun, because you have these weird instructions and you have to try to solve your problem under bizarre and arbitrary constraints.
David Turner hacks on git at Twitter. He previously co-founded OpenTripPlanner, and worked on version 3 of the GPL. He enjoys contributing patches to random projects, like Inkscape and Linux. He lives on Mars with his glorious wife and three pet tigers.
I have lexical gustatory synesthesia, which means that I experience words as having flavors and textures. I will share how this has affected how I experience the gamut of web technologies, from the HTML5 spec to RubyGems to the Instagram API.
Chloe Weil is a person-who-makes-things both on and offline. Chloe currently works on the web team at Spotify. Her favorite word is "sneaker," and she has one cat.
Map, Reduce, Awk!
"Is my data Big enough for Hadoop?" If you're asking, then probably not! Instead, try AWK. It's on your computer, it's easy to use, and you can do a whole lot with it. This talk will (re-)introduce you to AWK, the best little stream processor you could ever ask for. Learn how to map or reduce or both with Unix tools that have existed in one form or another since the 1970s. Don't be ashamed of your small-to-medium data — embrace it with AWK!
Mark Wunsch is a Director of Engineering at Rent the Runway. He lives in Manhattan with his wife, dog, and cat.
Just LOOK at the humongous type that Hindley-Milner infers for this tiny program!
Hindley-Milner (H-M) type inference is an algorithm which deduces static types in programming languages like OCaml and Haskell, where the programmer does not have to explicitly declare types. Its performance is usually described as either "fast enough" or "worst case exponential" depending on who you ask, and whether they're being formal about it or trying to sell you on one of these languages.
It turns out that H-M actually is exponential in time and space in the worst case. There's a really tiny program that demonstrates this. It's only around 100 characters long, but the type that H-M infers is thousands of characters long! The existence of this edge case is fascinating, even though in practice H-M is fast enough for most programs.
Aki went to Hacker School in the summer of 2013 where he worked on an ML compiler, including an implementation of Hindley-Milner. Now he works on warehouse and fulfillment software at Rent the Runway.
Proofs about programs, proofs as programs, and programs as proofs!
Say you had two pieces of code that looked different, but
you strongly suspected they were "equal." Maybe you have two
if statements and you're a compiler who wants
to optimize code by exchanging one for the other. How would
you prove that they were equal? And since you're already a
compiler, why don't we verify your proof with a
We'll take a tour through the world of interactive theorem proving with Coq, a proof assistant. We'll use Coq to interactively prove that two pieces of code, though they look different, are "equal" in that they return the same values for all inputs. Our proof will lead us to examine the strange correspondence between proofs and programs. It's an exciting development at the frontier of CS and math research: a data type is a proposition, and a value of that type is a proof of that proposition!