Notes from a conference about the joy, excitement, and surprise of programming
07 May 2016
!!Con is a conference held every spring in New York City. It’s filled with all kinds of hilarious lightning talks that celebrate the joy, excitement, and surprise of programming – you might’ve heard of it from the talk “I made a cell phone! (DON’T TELL THE FCC KTHX!)” given at last year’s conference.
I attended with some of the teaching staff from the Advanced Programming course at school. Even though our class is about systems programming, we still learned a ton and we’ll definitely be back next year!
Catt Small: The Creative Programmer (Keynote Speaker)
Code culture and her path into programming
Programmers focus on the technology to use, rather than what the result should be.
Consequence of programming education without projects
Everyone has their favorite language
That language isn’t necessarily the least frustrating for beginners to start with, or the best tool for the job at hand
The technology becomes a distraction rather than a tool for making things
“The real programmer thing” — impostor syndrome
You can be a ~*~real programmer~*~ even if you didn’t “make your own operating system from your own blood”
Hurts people through burnout (pressure to avoid taking a break)
Keeps people out of the industry because we portray programming as all-in?
Catt’s path to programming
As a child, obsessed with all things anime
Otaku World had tutorials for buiding KISS dols through text files (they’re still on the website!)
Much more interactive than paper
Needed a website to show off dolls => learned web design
Xanga and LiveJournal let you change the code
First job: building site with menu and scrolling inspirational quotes
=> Celebrate what you make even if it’s not perfect
Kiran Bhattaram: The tales of the cursed operating systems textbook!
Familiarity with OS (Dad handed out Ubuntu CDs at dinner parties), but never knew the whole thing
Every chapter she read in this textbook unearthed a new kernel bug
Chapter 1: Bunch of slab memory allocated
This was how they reloaded a process gracefully
When you fork and kill the parent, the kernel fails to free the anon_vma object
Chapter 2: Sending to localhost took 40 ms.
Nagle’s algorithm on the client: don’t send a small TCP packet until you have all the data, or until 40 ms pass
Server had delayed acks
They were just waiting for each other
Chapter 3: Failed to restore backup from database (“oints” error message)
Kernel buffers disk writes, so need to fsync and stop writes before imaging the database server
Mark Allen: values of β may give rise to dom!
One of the strangest error messages in an operating system
Backstory: K & R at Bell Labs
Multics: trying to build a massively concurrent (25 users) operating system for phone switches, but the project failed
After Multics canceled, wanted to develop on PDP-11: $483,000, 256 kB main memory and less powerful than TI-84 graphing calculator
runoff: typesetting program, now distributed as groff (GNU Runoff)
Convinced management to buy PDP-11 as a project for typesetting patent applications on the computer
“Values of β may give rise to dom!”
They came into the office and found this phrase on something that’d been typeset
ed inserted the exclamation mark for syntax errors
They put the phrase into a text-to-speech synthesizer and thought it was the funniest thing ever!
So they put it into the mv program for when move dotfiles
System 6 kernel: “If you don’t want to read an operating systems textbook, just read the source” (10,000 lines of code)
Ethos of Unix: do one thing at a time, tool composition, everything is text, document everything (including bugs)
Simplicity, elegance, openness
Lydia Gu: Ping! Are you there?
The ping tool: “Whenever I’m feeling lonely and wondering if I have a connection…to the Internet”
History of ping
Mike Muss wrote it and the required kernel support to debug a networking problem
ping tool itself
Layered networking model: link layer (Wi-Fi, Ethernet), network (IP), data (TCP)
Sockets are TCP, but raw sockets are to the network layer (required by ping)
ICMP is a messaging protocol for sending debugging messages between servers
Security of ping
Smurf attack: ping the broadcast address with the victim’s IP as the return address
Katie Bechtold: Code in Spaaaaaace!!!
What it’s like to program for spacecraft
Developed code for New Horizons, which has flown past Pluto
What the environment looks like
Spacecraft is a network of embedded computers
High latency for talking to spacecraft
Lot of energy and money to reach interplanetary space (Earth is a gravity well)
Expenses leads to risk averse behavior by management