!!Con is a conference held every spring in New York City. It’s two days of lightning talks that can be about anything related to computers!
This conference is a great showcase of the diverse backgrounds of the NYC tech scene. I’m really going to miss it when I move back to the Bay Area.
Contents
- Day 1 Keynote
- Session 1
- Session 2
- Session 3
- Session 4
- Day 2 Keynote
- Session 5
- Session 6
- Session 7
- Session 8
Day 1 Keynote
{ }
Mimi Onuoha
- Exploring the implications of machine-readable world through art & programming
- “Embedded in every technology there is a powerful idea” —Neil Postman
- Oral culture: prioritize memory.
- Written culture: prioritize logical organization of thought.
- Digital culture: prioritize data!
- Obsession with data as the object
- Does it mean what you think it means?
- Hard to tell when you don’t have context
- Pathways
- Tracked location data of several groups for 2 weeks
- Met in person to collect: make the collection relationship explicit, forcing people to think about it
- Unable to collect? Common reasons of missing data
- Those with resources to collect don’t have an incentive to know
- Resists “metrification”: things are hard to categorize or don’t inherently generate data
- Nonexistence benefits or protects someone
- Art piece: cabinet of missing datasets
- Filing cabinet with empty folders labeled with names of datasets that don’t exist
- Flip through all the things we don’t know
Session 1
Telling stories with traceroute!
Karla Burnett
- How traceroute works
- Packets have a time-to-live (TTL) to prevent getting stuck in routing loops
- traceroute is a hack that sends packets with different TTLs to make different routers along the path respond
- Telling stories through traceroute
- Send fake TTL expired messages from spoofed IPs
- Reverse DNS maps IP to hostname, but the hostname doesn’t have to be real
- Each line of the story needs a new IP: $3 per month
Tales of ⌧! Can You Tell Your Story When Your Character Is Undefined?!
Persa Zula
- Small boxes that show up in text when characters not defined
[ ]
: “tofu,” so[X]
: “not tofu”
- Displaying characters
- Characters are encoded as codepoints in Unicode
- Font’s
cmap
table maps codepoints to glyph identifier
Turning Google Earth into SimCity 2000! (From Light to Pixels to Impossible Perspectives!)
Logan Williams
- Perspective projection
- Farther objects are smaller
- Orthographic projection
- Satellite photo pointing sideways has no perspective: all lines are parallel
- Used in drafting, art, and SimCity 2000
- Only possible when image sensor is same size as object (flatbed scanner)
- In rendering software, set field of view very small so input rays of light are almost parallel
- Doing this in real life?
- Fly over the scene and take the same row of pixels from each frame
- Ensures all pixels formed by light coming from the same direction
- Produce images that represent time in addition to space
We built a map to aggregate real-time flood data in under two days!
Aruna Sankaranarayanan
- Chennai floods in 2015
- Bad maps made it hard to communicate which roads were navigable
- Google only lets you annotate locations, not streets
- Used MapBox to crowdsource mapping during the floods
- 600,000 people used the software, showing that simple tools can be really useful
Session 2
Moving towards dialogue: collaborating with your computer using typed holes!
Vaibhav Sagar
- Typed hole: something where you know the type but not the contents of the
value
- Can specify in Haskell using underscore
_1
,_2
- Type inference tells you what the type should be
- In Idris, a more powerful type system also includes list length, so type inference can even help you write snippets of code
- Can specify in Haskell using underscore
- Untyped holes: don’t know what the type is, but still want help writing
program
- Open research topic
Compressing the Library of Babel!
David Turner
- Compressing the infinite library described in Borges’ short story
- gzip?
- Works by finding identical sequences and inserting references back to them
- On Babel: compression ratio is 1:1 because of pigeonhole principle
- Write a program?
- Kolmogorov Complexity = size of compressed data + size of decompressor
- Generation program only a few lines of Python
- Suppose some pages are missing: pigeonhole principle means representing missing books requires storing entire book
It’s super effective! Solving Pokémon Blue with a single, huge regular expression
Alex Clemmer
- Pokémon Blue
- Little boy leaves home to wander the world and catch Pokémon
- Mostly wandering around in the grass (very tedious)
- Create a regex which accepts iff the moves are a winning game
- How to solve?
- Pokémon Blue is a finite state machine
- Equivalence between FSM and regex (according to “nice book” by “this guy” Michael Sipser)
- Simplify Pokémon to use ASCII world maps
- World map → FSM → regex
- Differences from actual Pokémon game
- Items can have state, player interaction
- Players can hold items
- Game has random encounters (use probabilistic regex)
Transform live video streams with code and a REPL!!
Mark Wunsch
- Live coding: code improv! Code as the user interface, applied to video streaming.
- Use Racket language and GStreamer multimedia framework
- Write in Racket REPL to manipulate video stream, draw stuff, PIP
Session 3
Creating an Arabic Programming Language!
Ahmed Abdalla
- Learning to program requires English proficiency
- Not just keywords, but also error messages & documentation
- English proficiency requires privileged backgrounds in some countries
- Noor: Imperative, Algol-style programming language for kids
- Keywords are simple & informal so kids understand
- Used his Sudanese dialect because languages reflect the aesthetics of their creators
- Arabic editor challenges
- Bidirectional language is overall right-to-left, but English words within Arabic text are left-to-right
- Ligatures required in the language, not just aesthetic
Evil Twins and the Secret Lives of Linkers!
Josh Bowman-Matthews
- Symbol defined twice in different
.o
files. What happens when you link?- If functions are not inline, linker complains about duplicate symbols
- Inlining makes a copy of the function inside each
.o
file - Therefore, linker is allowed to pick one arbitrarily & not complain
- Don’t accidentally write the same function twice
Satellites are talking to us! Let’s hear them out!
Ed Medvedev
- “There are only a handful of things cooler than satellites”
- Radio amateur satellites: tiny satellites for ham radio
- Listening to satellites
- You will need radio dongle for computer & antenna
- Look up online when the ISS will be overhead
- ARISS: Amateur Radio on ISS
- Runs BBS so you can chat with people relayed through space
- Broadcast images & talk to astronauts sometimes
The joys of PICO-8 token crunching!! Or: what I learned about programming from being restricted on every side!
Ayla Myers
- PICO-8: game engine with retro graphics & sound, but modern programming
- Artificial limits on bit depth, memory, code size (tokens), …
- Built-in editors for everything
- Economics of the PICO-8 device
- Trade-offs: smaller sprite sheet leads to more complex code
- “Spent” code tokens to “buy” more sprites
- Can draw PPF curve for tradeoff between e.g. code complexity & number of sprites
Session 4
UX for Cats and Dogs!
Joel Potischman
- Problem: daughter moved to college but misses cat
- Manually send cat photos
- Can the cat send us selfies?
- Solution
- Train cats to come eat when the sound is played
- Take a picture of cats while they wait for food
- Feed the cats
If you could solve this word tile puzzle, you could solve the halting problem! (Too bad you can’t!)
Kamal Marhubi
- Tile puzzle (Post Correspondence Problem)
- Tiles have symbols on top and bottom
- Goal: order the tiles so that top and bottom say the same thing (can repeat tiles)
- Not possible to tell whether a solution exists
- Reducing Turing machine to tile puzzle
- Make a tile from each state somehow
- ???
- Solving the tile puzzle is the same as running the Turing machine
- Wikipedia has a really unclear explanation
- “Some things are actually hard, and some things just have too many Greek letters”
So THAT’S how my phone knows where I am!
Mike Lazer-Walker
- Positioning throughout history
- Latitude is easy because you can look at the sun
- Longitude much harder, so people dead reckoned based on speed and time
- Solved with accurate clock that allowed using time zone as a proxy for distance
- Urban canyon problem: GPS error gets really bad in cities
- Skyscrapers bounce the signal, messing with the distance
Day 2 Keynote
Build skills through hobbies! Bring them to work!
Liz Fong-Jones
- Many years ago, a disowned trans woman who “almost didn’t make it”
- Growth comes from learning new skills
- Playing Puzzle Pirates game (2004–2008)
- Some people made new players work without teaching the game
- Learning mentorship: encouraging people to help newcomers by rewarding them
- Organizing people: conquering an island requires multiple levels of coordinators to solve puzzles & distribute booty as reward
- Active on community forums building diagnostic tools led to first tech job at Puzzle Pirates!
- World of Warcraft (2008–2012)
- Building up new players’ skills to have a stronger team in next raid
- Not all leaders are blameless after the team loses
- Eve Online (2012–present)
- After fleet commander died, there was no communication & everyone else died
- In incident response, “any call is better than no call”
- Value your trustworthiness: not scamming in the game pays off when other players trust with other opportunities
- Factorio (2017–present)
- Learning what’s the most important to automate right now
- Refactoring a complex, running system
- Playing these games taught her management skills in a safe environment
before she became a manager for real
- Don’t be afraid to list non-traditional background on your resume
- Intentional skill building
- What skills will your next project require?
- Does this activity help me get closer? (Or just mindless play?)
Session 5
Relativistic Software Calendars: It’s About Time!
John Feminella
- Software makes assumptions
- About the machine (“integers are 32 bits”)
- About the world (“everyone has a real name”)
- Time is one of these assumptions
- What is time?
- Originally measured by motion of earth & moon
- Calendar is an abstract representation of this motion
- Software calendars bake in assumptions about being on earth
- Enter relativity
- Time distorts depending on the velocity of observer
- GPS is one of the few programs that accounts for relativity
Undo all the things!
Tom Ballinger
bpython
is a Python interpreter that can undo the effects of expressions- Works by saving commands & rerunning only some of them
- Could be slow
- Doesn’t work if there are side effects
- Random numbers, time, reading files
- Non-idempotent actions: saving to files, buying shoes online
- Use
fork()
to save state- Fork every time you run a command
- Undo goes back to previous process
- Build this into
readline()
& run withLD_PRELOAD
- Works with unmodified interpreters!
readline()
now forks your program lol
- Building an undo-able Lisp interpreter from scratch
- Save periodic snapshots
- When code changes, roll back to the snapshot before that code was run
- JavaScript version because “the word has to be on the left side of the parentheses or the programming language will never be popular”
Estimating the Value of Pi with a Dartboard and (Not so Much) Luck!
Stephen Tu
- Estimating pi
- Sample a square uniformly at random
- Percentage inside circle is \( \pi / 2 \)
- Estimating with error
- Define an epsilon \( \epsilon \) which is the error on our estimate
- Define a probability (95%) that the estimate is within \( \epsilon \)
- Need 100x more samples for 10x reduction in \( \epsilon \)
Ray-tracing and special relativity: Rendering objects near the speed of light!
Lucy Zhang
- If an object is moving near the speed of light, what would a photo look like?
- Computer graphics
- Ray casting: for each pixel, figure out where the light ray from the camera hits in the scene
- Relativity
- Light can never exceed speed of light, even if the light is on a fast-moving train
- Lorentz transformation converts between two coordinate systems that are moving relative to each other
- Relativistic raytracing
- Define the rays toward the object with a 4th parameter, time
- Use Lorentz transformation
- Do intersection normally
- As cube moves faster, it compresses more (expected) & appears to rotate (why?)
- Terrell rotation
- Rotates because farther light takes longer to reach the camera
- Like rolling shutter effect but for relativity!
- Anyone with a computer can “rediscover” Terrell rotation with a bit of code!
- Rotates because farther light takes longer to reach the camera
Session 6
Talking to my past self (without introducing temporal paradoxes!)
Andrew Louis
- Stores all data about himself
- “MSN was this cool software package that taught high schoolers how to type really fast”
- Training a bot on chat logs
- Train RNN to reproduce chat logs from high school
- Sequence-to-sequence to respond to other messages
- Originally developed for machine translation
- Bot tends to converge on safe responses like “lol” and “ya” which work in any situation
- Tends to respond with nonsense
- Why is it hard?
- Training data won’t capture general knowledge about the world
- Needs working memory, not just the previous message
- “Before submitting a conference talk, make sure you’re not committing to solving an open research problem”
Four fake filesystems!
Omar Rizwan
- Files are anything that you can open, read, write, close using a path
- GrabFS
- Contains screenshots of each process’s windows
- Use shell script with
cp
to take screenshot every second
- btfs (BitTorrent filesystem)
- Downloads blocks as requested
- Opening part of a file doesn’t require downloading whole thing
- ytfs (YouTube filesystem)
- Making directory is a search query
- Directory populated with movie files of search results
- Git filesystem
- Exposes remote repository as a directory
- Get to reuse existing tools & UI
- Plan 9 operating system takes filesystem idea to the extreme
Using Postgres to \watch
Star Wars!
Will Leinweber
- Using
psql
, the command-line Postgres program, to watch ASCII Star Wars- Import frames as database rows
- Store a function in the database that prints each row
If at first you don’t succeed at beating HQ Trivia, try cheating!!
Hung Truong
- HQ Trivia is fun but we want to win
- Pipeline
- iOS Vision framework to detect text
- Tessaract library for OCR
- Google the question with all answers
- Pick the answer with the most occurrences
Session 7
The Man Comes Around: and so does his sound!
Vince Allen
- Johnny Cash did gospel music at the beginning & end of his career
- What are the differences between the two periods?
- Identifying gospel songs
- Topic modeling: assigns words to categories to classify the entire text
- Apply topic modeling to lyrics
- Pick the category with religious terms
- Comparing songs acoustically
- Take a spectrogram of the song
- Convert this to a vector
- I didn’t really understand the rest :-(
Step by Step: Algorithms that teach you math!
Evy Kassirer
- Building a step-by-step solver for teaching math
- Computer algebra systems
- SymPy can simplify expressions symbolically, which sounds like a solver
- Goal is to get the answer, so they represent division \( a / b \) as \( a \times b^{-1} \)
- This would be confusing for explaining stuff
- Building their own solver
- Search the parse tree for patterns like “number + number”
- Apply rules to transform to equivalent tree
- Identified which rules were applied to find relevant lecture videos
Whoa, pictures! A visual history of visual programming languages!
Emily Nakashima
- Visual Programming Languages (VPLs)
- Programming & documentation are all in words
- Our brains are really good at visual stuff
- Examples
- Scratch: Build programs with blocks
- GRAIL (1968): Draw flowcharts which are converted to programs with OCR
- Pygmalion (1975): Visually show state on screen
- Cube (1995): 3D flowcharts?
- Challenges
- Diffing & merging visual programs
- Humans can handle more unique words (symbol names) than unique shapes
- Hard to represent complexity without losing the simplicity of visual programming
- Unclear whether VPLs actually make you program differently
- People prefer whatever they learned first
- Good applications of VPLs
- Simple systems: Twilio phone tree designer
- Kids & learning
Fast, but not too fast! What 17th-century windmills can teach us about database migrations
Wander Hillen
- Windmill design
- Whole windmill rotates to match wind direction
- When windmill moves too quickly, slats automatically open to catch less wind
- Big changes in load: wind energy increases with \( \vert v \vert^2 \)
- WeTransfer depends on automation to handle load changes
- Throttle expensive background tasks when the system is busy
Session 8
The itty, bitty, tiny bytes that make up a Pokémon!
Jan Mitsuko Cash
- Pokémon data structure
- 232 bytes each
- Stores properties like species ID, experience, nickname
- Backward compatible between generations 1–2, and gen 3 on
- Gen 3 added encryption
Pseudofractals! Accidental aesthetics where math meets pixels
Jes Wolfe!
- Generate topographical map
- For each pixel, compute color as \( (x^2 + y^2) \bmod 2 \)
- Weird artifacts! Doesn’t look like a parabolic topo map at all
- Aliasing
- Caused by Nyquist limit
- If you zoom out too far, frequency of pixels (sampling) is no longer high enough to show frequency of topo map lines
- Making art
- Zoom out slowly to watch the aliasing pattern change
- Use \( (x^2 + y^2) \bmod N \) and assign to colormap of N colors