!!Con 2017 Notes
My second time at the conference about the joy, excitement, and surprise of computing!
Listed in the same order as the program.
Day 1 Keynote
Cyborgs Unite! (Karen Sandler)
- Software Freedom Conservancy: support participation in free software, enforce the GPL
- Karen has a disorder where her heart is too big, so she uses a pacemaker
- The physiologist didn’t know that there was software running on it!
- What does it mean to be a cyborg if the software isn’t free?
- Normally, people look at you weird when you say that you like free software
- They start to understand when you mention that you have proprietary software running in your body
- People without implants are simply “future cyborgs”
- Karen’s getting a defibrillator upgrade soon
- New ones have radio telemetry. There’s no way to disable it!
- Compared with last time, people are starting to understand these issues. Doctor’s office no longer confused about software. Went out and asked about security.
- Programmers have the knowledge of the technology that runs our lives, and
therefore the ability to educate others about it
- “What does it run?” Our ability to ask technical questions about these products gives us power.
Session 1
Serious programming with jq?! A practical and purely functional programming language! (Charles Chamberlain)
- Imperative language: do some stuff and then return something
- Pure functional language: just return something
- jq is a language for inspecting and processing JSON data
- Like awk for JSON?
- To do things in jq, we pipe stuff to other stuff:
"foo" | length => 25 { "key": "value" } | myfunction()
- jq is purely functional except for the
debug
function- Passes the data straight through (identity function), and prints the data out too
Finding Friends in High Dimensions: Locality-Sensitive Hashing For Fun and Friendliness! (Aaron Levin)
- k-nearest neighbor at Soundcloud: make music into vectors, and recommend new music by finding nearby vectors
- N^2, so it “takes too damn long” :(
- Locality sensitive hashing algorithm assigns points to neighborhoods
- Randomly choose separating planes, and assign 0 or 1 for each point for each plane, resulting in a bitvector for each point
- Number of same bits approximates angle between vectors! Angle calculations reduced to bit math.
- Sort the bitvectors
- ???
- O(s * N * log(N))
- Profit!!
What alien invaders, birds, and computer simulations have in common: flocking!! (Jan Mitsuko Cash)
- In movies, when aliens flock, there’s central control telling everyone where to go. This is a problem for the robustness of alien invasions!
- However, in nature, flocking birds or turtles use distributed control (emergent behavior)
- To write simulation, use an the NetLogo agent-based language
- You write the code that “runs on” each turtle in the flock
- 3 rules in our flocking simulation
- Face same direction
- Stick together: Turn toward the center of your neighbors
- Personal space: Turn away from anybody in your bubble
I wrote to a dead address in a deleted PDF, and now I know where all the airplanes are (Jason McIntosh)
- How does the FlightRadar24 app know where flights will turn ahead of time?
- Are there public APIs?
- FAA: no public APIs
- FlightAware: expensive commercial APIs :(
- NOAA: API for getting turbulent areas
- Spent a lot of time trying to scrape NOAA images, without using the
contact links at the bottom!
- “Contact form is probably read by some public servant who cares deeply about their work”
- Ran through many PDFs, eventually emailing FAA to ask for ASDI data
- Response: We retired that years ago! Have you checked data.faa.gov?
- Step out of the ivory tower and ask other people for the resources you need!
Session 2
Requiem for a nemesis! (Nick Sullivan)
- Programmers are like composers. Reverse engineering is like hearing the song and trying to come up with the sheet music again.
- Obfuscators’ job is to make a mess, like turning if statements to for loops that don’t branch
- Enter Requiem, Nick’s nemesis. It’s an automated reverse engineering tool for music-playing software.
- More obfuscation!
- Add random functions like Newton’s method that don’t do anything
- Inline everything
- Encrypting memory with a custom allocator
- For 5 years…
- Requiem author retired
Glk! A universal user interface! for interactive fiction! (Andrew Plotkin)
- Interactive fiction: old-school text games
- Zork virtual machine specification was created to run the Zork game
- N^2 problem of connecting Zork VM backends with UIs
- Glk interface connects interpreters to interfaces
- C API, later ported to JavaScript for web and Java for Android
How do Keyboards Work? HIDing, in Plain Sight!! (Scott Vokes)
- Keyboard is a bunch of switches arranged in a grid of read wires
- Firmware scans the grid (key matrix), looks up the layout, and sends data over USB
- USB
- “It’s called the Universal Serial Bus, so you know it’s going to be a bit complicated”
- Enumeration: descriptor tree describes which devices are on the bus and how they communicate
- Human Interface Device (HID): refers to keyboards and mice and stuff. The drivers are built into everything.
- Debugging USB: there’s a Linux kernel extension that makes USB into a network interface, so you can sniff it with Wireshark!
Making Mushrooms Glow! (Bomani McClendon)
- Bomani worked on an art project of computer-controlled mushroom light
- Software responsible for controlling the lights and making the mushroom open when someone stands near it
- Raspberry Pi embedded in the mushroom is a dumb terminal, with all the
business logic on the server
- Allows coordination between mushrooms
- He’s a web developer, because the server could be written in Node.js
Session 3
Why So Loud! Geeking Out on Airline Data, Physics and Mapping (Ewan Dennis)
- While moving, Ewan wondered whether certain homes would be too loud
- “I don’t have the background” to do this project, but tried to break it
down as a development task anyway
- FlightAware to get the actual flight tracks of planes
- How loud is a plane? Looked up “sound pressure level” on Wikipedia!
- Learned how sound propagates through open air using Wikibooks
Writing NES games! with assembly!! (Christian Joudrey)
- Background: Web developer, mostly works in Ruby
- NES designed so that cartridges can take advantage of new technology
introduced in the future
- No persistent storage: games used passwords that let you skip to the level you were working on before. Zelda added RAM and a battery in the cartridge.
- No APIs to call for anything: to display things, read controllers, etc. just read/write to certain memory-mapped I/O.
The TOP 5 Queer Feminist Cyberpunk Manifestos! (Jean Cochrane)
- #5: A Cyborg Manifesto by Donna Haraway
- Critiquing 70s mainstream feminism
- Argued that technology will abolish gender
- Bad readability, “long and dense like only queer feminists can be”
- #4: some artists(?)
- “The future is unmanned”
- Women will take over male-dominated
- #3: 100 Anti-Theses: What Cyberfeminists Are Not
- A conference
- Thesis: “Cyberfeminism” doesn’t mean anything except being angry in a 90s way
- #2: The Cybertwee Manifesto
- More soft and artsy work, while still being aggressive and angry
- These days, cyberfeminism is more about art than politics
- #1: Xenofeminism: A Politics for Alienation
- (This was too dense for me to understand)
Corruption in the Data Center! TCP can fail to keep your data safe! (Evan Jones)
- A debugging story
- The server sent the correct response but the other end received it wrong (the network corrupted the data!)
- Unplugged racks until the problem went away, but corrupt data was reaching other parts of the system
- How can this happen?
- TCP and Ethernet frames both have checksums
- Ethernet: Switches may need to modify packets, so they remove the CRC,
queue the data, and compute a new CRC on sending
- If the data is corrupted in the queue, switch will compute a checksum over the corrupt data
- Therefore, Ethernet CRC only protects you from wire problems (not switch problems)
- TCP: checksum computed in hardware, which passes yes/no to kernel
- Linux wasn’t checking the bit in some cases!
- Three months of work to find and fix this mess
Session 4
What the heck time is it?!? (Joel Potischman)
Unfortunately, I missed a lot of this excellent talk because I was busy freaking out about my own talk. Here are the parts I remember:
- Don’t drive backward on the highway
- Eating garbage is not recommended
HDR photography in Microsoft Excel?! (Kevin Chen)
I got the computer to find words with good anagrams and throw away the boring ones!! (Mark Dominus)
- Finding anagrams is easy: just sort both words and compare
- Which anagrams are boring?
- Too short
- Compound words with the same subwords
- Metric for funness of anagrams: number of chunks in the mapping from one
word to the other
- Automatically penalizes short anagrams
- Also penalizes anagrams with long runs of letters in the same order
- Convert the similar subsequences in the words to a graph