43
Strange Loop 2016 Program Preconference - Thursday Sept 15th, 2016 elm-conf Schedule: 2016-09-15 09:00 - 2016-09-15 17:00 Room: Grand F Format: Preconf Track: misc elm-conf is a one-day conference focusing on the Elm programming language and its libraries, colocated with Strange Loop. It aims to be a welcoming place for people worldwide to meet one another and learn about what is happening with the language and community. 8:50-9:00: Hello and Welcome 9:00-9:45: Evan Czaplicki - Keynote 9:50-10:35: Ossi Hanhinen - Beyond Hello World and Todo Lists 10:40-11:00: Luke Westby - Compilers as Therapists, or Why Elm is Good for ADHD 11:00-12:30: Lunch Break (not provided) 12:30-1:10: Lightning Talks 1:15-1:35: Joël Quennevhlle - Rolling Random Romans 1:40-2:00: Jeff Schomay - Building an Interactive Storytelling Framework in Elm 2:05-2:25: Jessica Kerr - The Clockwork Gardener: Growing an Elm App With Templates 2:30-3:00: Snack Break (provided) 3:00-3:45: Murphy Randle - Nightingale.space - Elm and Crowd-Sourced Music Making 3:50-4:10: Richard Feldman - Making Impossible States Impossible 4:15-5:00: Q&A (Panel / Audience Submitted Beforehand) 5:00-7:00: Food trucks on 20th St outside the venue 7:00-9:30: Strange Loop Party at the City Museum - 750 N 16th St (shuttles available) PWLConf Schedule: 2016-09-15 09:00 - 2016-09-15 17:35 Room: Regency C Format: Preconf Track: misc PWLConf is the first Papers We Love conference focused on reading and enjoying academic computer science papers. 9:00-9:10 Opening Notes 9:10-10:10: Dahlia Malkhi - Randomized Gossip Methods 10:15-11:15: Nobuko Yoshida - Multiparty Session Types and their Applications to Concurrent and Distributed Systems 11:15-12:45: Lunch - food truck on 20th (Guerrilla Street Food) 12:45-1:45: Marius Watz - Abuse of An Algorithm Comes As No Surprise

Strange Loop 2016 Program

  • Upload
    ngohanh

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Strange Loop 2016 Program

Strange Loop 2016 ProgramPreconference - Thursday Sept 15th, 2016

elm-conf

Schedule: 2016-09-15 09:00 - 2016-09-15 17:00Room: Grand FFormat: PreconfTrack: misc

elm-conf is a one-day conference focusing on the Elm programming language and its libraries, colocated withStrange Loop. It aims to be a welcoming place for people worldwide to meet one another and learn about what ishappening with the language and community.

8:50-9:00: Hello and Welcome9:00-9:45: Evan Czaplicki - Keynote9:50-10:35: Ossi Hanhinen - Beyond Hello World and Todo Lists10:40-11:00: Luke Westby - Compilers as Therapists, or Why Elm is Good for ADHD11:00-12:30: Lunch Break (not provided)12:30-1:10: Lightning Talks1:15-1:35: Joël Quennevhlle - Rolling Random Romans1:40-2:00: Jeff Schomay - Building an Interactive Storytelling Framework in Elm2:05-2:25: Jessica Kerr - The Clockwork Gardener: Growing an Elm App With Templates2:30-3:00: Snack Break (provided)3:00-3:45: Murphy Randle - Nightingale.space - Elm and Crowd-Sourced Music Making3:50-4:10: Richard Feldman - Making Impossible States Impossible4:15-5:00: Q&A (Panel / Audience Submitted Beforehand)

5:00-7:00: Food trucks on 20th St outside the venue7:00-9:30: Strange Loop Party at the City Museum - 750 N 16th St (shuttles available)

PWLConf

Schedule: 2016-09-15 09:00 - 2016-09-15 17:35Room: Regency CFormat: PreconfTrack: misc

PWLConf is the first Papers We Love conference focused on reading and enjoying academic computer sciencepapers.

9:00-9:10 Opening Notes9:10-10:10: Dahlia Malkhi - Randomized Gossip Methods10:15-11:15: Nobuko Yoshida - Multiparty Session Types and their Applications to Concurrent andDistributed Systems11:15-12:45: Lunch - food truck on 20th (Guerrilla Street Food)12:45-1:45: Marius Watz - Abuse of An Algorithm Comes As No Surprise

Page 2: Strange Loop 2016 Program

1:50-2:50: Claire Le Goues - Automatic Patch Generation

2:55-3:25: Snack Break - food truck on 20th (Clementine's Creamery)

3:25-4:25: Justine Sherry - Design Philosophy in Networked Systems

4:30-5:30: Casey Muratori - Papers I Have Loved

5:30-5:35: Closing Notes

5:00-7:00: Food trucks on 20th St outside the venue

7:00-9:30: Strange Loop Party at the City Museum - 750 N 16th St (shuttles available)

Writing Microservices with Lagom

Schedule: 2016-09-15 09:00 - 2016-09-15 11:00

Room: Frisco Burlington

Format: Workshops

Track: distributed-systems

"Microservice" is the hype word of the day, but if you're convinced there's value in breaking down large systems

into small services, this workshop may be just what you're looking for.

Lagom is the latest framework brought to you by LightBend (formerly Typesafe), and it's designed to simplify

the development and deployment of microservices over the JVM. It helps us developers in three areas: writing,

distributing and deploying services.

In this workshop, you will create three services that collaborate to produce a meaningful result to our

hypothetical users.

Exercises will be done in Java, and we will have a peek into the underlying components of Lagom, such as Akka

and Cassandra.

Alejandro Lujan Toro (@andanthor) - Independent

Alejandro is a Senior Software Developer and Trainer, specializing in the LightBend technologies. He's taught

Scala, Akka and Play to hundreds of people - and has a blast doing it, too! When not teaching, he's usually

involved in mentoring teams adopt the LightBend stack, and helping them grow their skills.

Alejandro is also the co-organizer of Scala Up North, and is the co-founder of The HumanIT Project, a non-profit

aimed at creating strong collaboration between expert technical firms and mission-based non-profit

organizations.

Coding Dojo

Schedule: 2016-09-15 09:00 - 2016-09-15 11:00

Room: Grand C

Format: Workshops

Track: languages

Join us for a powerful learning experience where you will participate in helping to solve a sample programming

problem.

There are so many new languages to learn about at strangeloop and this is your chance to come and try them out.

A Coding Dojo is a get-together where programmers follow a pattern similar to the martial arts dojo to practice

their skills. In this Coding Dojo you will get an opportunity to practice new languages with leading experts on

Page 3: Strange Loop 2016 Program

hand to guide and assist. We will be using the Randori/Mobbing format, to let as many participants as possibledo actual coding.

Llewellyn Falco (@llewellynfalco) - Spun labs

Llewellyn Falco is an Agile Technical Coach specializing in Legacy Code and Test Driven Development. He isthe creator of the open source testing tool ApprovalTests( www.approvaltests.com ), co-founder ofTeachingKidsPrograming ( www.teachingkidsprogramming.org ) and a Pluralsight author.

Unikernel Microservices: Build, Test, Deploy, Rejoice

Schedule: 2016-09-15 09:00 - 2016-09-15 11:00Room: IllinoisFormat: WorkshopsTrack: architecture

Unikernels are a new mechanism to deploy lightweight, scalable, secure microservices that offer bigfunctionality for relatively low cost. To do so, they allow us to compile our services to run directly on virtual"bare metal", throwing away all the parts of the application and operating system stack we don't need. Don't wanta file system? Throw out all that code, and the disk driver, too. Why pay (in cost, size, performance, or exploits)for all the stuff you don't use?

In this workshop, we'll talk the soup to nuts of designing, building, testing, and deploying microservices usingunikernels. We'll start by showing a simple microservice design using the HaLVM, and then walk through howwe build, test, and deploy it. For attendees with EC2 credentials, we'll even show how to load it into Amazon'scloud.

Not a Haskell fan? We'll show how to perform the exact same steps using Mirage (OCAML), the rump kernel(C), IncludeOS (C++), and other unikernels. Want to further explore the design space? Let's extend our basemicroservice to perform any number of interesting tasks: authentication, routing, caching, computation ... youname it, and we'll walk you through the process of building and deploying your microservice.

Experience with unikernels is not required for this class, but experience with unikernel-capable languages andtools (Haskell's Cabal, OCAML's OPAM, Make / GCC / ld, etc.) is strongly recommended.

Adam Foltzer (@acfoltzer) - Galois

Adam Foltzer is a research engineer at Galois, and a member of the Haskell.org Committee. Adam was luckyenough to begin programming in Scheme when he was quite young, and has since then had a passion forfunctional and denotational programming. While getting a B.S. and M.S. in Computer Science from IndianaUniversity, he began using Haskell while studying the theory, design, and implementation of programminglanguages; parallel and concurrent programming; and quantum and reversible computing. Prior to studyingComputer Science, he studied Russian language and literature, archaeology, and how to fly small aircraft.

Adam Wick (@acwpdx) - Galois, Inc.

Dr. Adam Wick leads Galois's systems software and mobile security team, and was the creator of the HaLVM. Inhis current role, he has led projects that have used the HaLVM for communications and network security tasks,and has given talks at several Xen Summits, QCons SF, StrangeLoop, and various other symposiums about thiswork. He is also the co-inventer of CyberChaff, a unique network defense tool built using the HaLVM. Beyondthe HaLVM, Adam has led Galois's investigations into secure operating system design, trustworthy mobile rootsof trust, and predictive security for UAVs. Before Galois, Adam received his Ph.D. from the University of Utah,and his B.S from Indiana University.

Page 4: Strange Loop 2016 Program

Trevor Elliott (@moltarx) - Galois, Inc.

Trevor Elliott is an engineer at Galois, and the designer and implementer of the Haskell Network Stack (HaNS).Trevor has extensive experience with the HaLVM, having used it in several engineering efforts at Galois,including CyberChaff. In addition, Trevor has worked on a wide variety of projects at Galois, including efforts incompiler design, cryptography, network security, and web system design. Trevor earned his B.S. in ComputerScience from Portland State University in 2008.

Live Coding Music with TidalCycles

Schedule: 2016-09-15 09:00 - 2016-09-15 11:00Room: JeffersonianFormat: WorkshopsTrack: etc

Take a break from the daily grind and learn how to make music with TidalCycles. TidalCycles is a pattern-basedlive coding language written in Haskell. This workshop will cover the installation of TidalCycles if not installedprior to the workshop (see http://www.tidalcycles.org). Learn how to use TidalCycles to create patterns thatmanipulate samples in the Dirt sample engine, then learn about the various functions built into TidalCycles tomanipulate those patterns to create interesting sounds. We will also cover using the new hybrid engine SuperDirt,which combines Dirt with the power of the Supercollider synthesis engine.

Have fun generating your own dance floor hits or explore a more experimental side of music. Whichever youchoose, you will have fun creating it.

Scott Fradkin (@sfradkin) - Flexion, Inc

Scott is a team lead, Java, and JavaScript developer for a consulting company, Flexion. While not working onweb applications for clients he enjoys live coding music using Sonic Pi and TidalCycles. He believes in thepower of music and its ability to get kids interested in programming. Partnering with a local web developmentcompany, Scott leads Sonic Pi workshops for groups of kids in underserved areas of the county. He also regularlyteaches programming to kids through his local Community Education program.

Clojure Macros

Schedule: 2016-09-15 09:00 - 2016-09-15 11:00Room: Missouri PacificFormat: WorkshopsTrack: languages

In this workshop, which assumes only basic Clojure knowledge (see Clojure Koans or any of the excellentintroductory Clojure books), we'll dig into how Clojure macros work, some tricks of the macro-writing trade, andthe inherent tradeoffs we must accept when we reach for macros as a tool.

The workshop will include lecture and Q&A time, as well as plenty of hands-on exercises to apply and practicethe concepts we talk about. Come with a laptop or a friend to pair with, and you'll leave with a solid grasp ofwhen and how to use macros (and also your laptop or friend!).

Colin Jones (@trptcolin) - 8th Light

Colin Jones is CTO at 8th Light, where he works with teams to craft reliable, maintainable software. He's intoClojure, security, distributed systems, and performance.

Page 5: Strange Loop 2016 Program

Practically functional programming

Schedule: 2016-09-15 09:00 - 2016-09-15 11:00Room: New YorkFormat: WorkshopsTrack: web

Functional programming is all the rage these days, but our codebases, libraries, and built-in methods arepredominately Object-Oriented. Using OO syntax with functional constructs, we can write in a style compatiblewith either paradigm and enjoy the benefits of both.

We will explore disjunction, monoids, monads, and other algebraic abstractions to produce highly composable,safer, and simpler code. And we'll do it all in JavaScript.

Brian Lonsdorf (@drboolean) - Salesforce

Brian Lonsdorf is functional programmer who uses JavaScript all day at work. Sometimes he is known as that"underscore talk guy" or the author of the Mostly Adequate Guide to Functional Programming. He is a Frontendmasterâ„¢, a panelist on jsair, makes stop motion videos, and writes his own bios.

Visualize Deep Learning

Schedule: 2016-09-15 12:30 - 2016-09-15 14:30Room: Frisco BurlingtonFormat: WorkshopsTrack: tools

Deep learning is a powerful family of tools that has had great impact in solving problems ranging from objectrecognition to machine translation to playing Atari or Go games. However, it is traditionally treated as somethingof a black box: you put in as much data as you can, twiddle some knobs, wait for results, and repeat until resultsare good.

There's an emerging area of research developing meta-tools for understanding what's happening in a deeplearning system through visualization. Not only do such visualizations make this area more approachable andunderstandable for beginners, but the explorations they open up into the inner workings of deep learning can leadto valuable research insights.

We'll start with a brief visual introduction to essential concepts of deep learning, and then take a tour of severalother visualization tools, playing with systems that can illustrate what a deep learner has learned, and finallydemonstrating tools that can help debug deep learning applications. Many of these visualizations are hands-on,so bring a laptop with an up-to-date browser (and few open tabs) for the best experience.

Whether you're a professional data scientist or just someone interested in what this "deep learning" thingeveryone's buzzing about actually means, if you're curious in this area, you're very welcome to explore with us atthis workshop.

Eliana Lorch (@elianalorch)

Eliana is a Thiel Fellow working on deep learning and augmented intelligence/tools for thought, and she'sespecially excited about crossovers between the two. She dislikes being stuck in a human body and bad software,but loves figure skating and jazz (especially 6'37" of Point of View Redux).

Page 6: Strange Loop 2016 Program

Deploying and scaling applications with Docker

Schedule: 2016-09-15 12:30 - 2016-09-15 14:30Room: IllinoisFormat: WorkshopsTrack: tools

This workshop will show how to deploy and scale applications in containers using reusable, adaptable patterns.We will run a sample app on a single node with Compose. Then, we will add scaling and load balancing. We willsee how to provision a cluster of Docker nodes, and deploy the application on that cluster. We will see how toperform common operation tasks, and see what options are available to achieve high availability.

The whole workshop will use "real-world" demo applications with web frontends, web services, backgroundworkers, and stateful data stores, in order to cover a wide range of use cases.

You won't need to pre-install Docker before the course: each student will be given credentials to connect to anindividual cluster of virtual machines. So all you need is a computer with a SSH client!

An earlier version of this workshop was delivered at StrangeLoop in 2015. This version will be significantlydifferent. It will focus primarily on cluster features that didn't exist last year. It will leverage on overlaynetworking and other significant improvements in the Docker platform.

All the material for this workshop (scripts, slides, sample code) is available onhttps://github.com/jpetazzo/orchestration-workshop/. If you attended the Docker orchestration workshop lastyear and wonder what's new under the sun, you can check the commit history in this repo to make up your mind.

Bret Fisher (@bretfisher) - Docker Captain

Bret is a ops/sysadmin consultant in Virginia Beach where he uses Docker and DevOps-style tools and processesto support his clients. For 20 years he's designed, built, and operated systems small and large. An occasionalJavaScript developer. He helps lead the local Code for America Brigade and Docker meetups in coastal Virginia,and speaks/teaches others often at events. He lives at the beach. Dogs over Cats.

Ally Skills Workshop

Schedule: 2016-09-15 12:30 - 2016-09-15 17:00Room: JeffersonianFormat: WorkshopsTrack: etc

Want to learn simple everyday ways to support people in your workplace and community? The Ally SkillsWorkshop teaches simple everyday ways for people with societal advantages to support people who are targetsof systemic oppression, including women of all races, people who are ethnic minorities, people with disabilities,LGBTQ folks, and primary parents (especially mothers). This is a fun, thought-provoking, and highly interactiveworkshop that will give you food for thought and a desire to learn more.

This workshop is focused on techniques that work well in technology-related organizations and onlinecommunities, including software companies, free and open source software communities, Wikipedia-relatedprojects, coworking spaces, and hacker and maker spaces.

The workshop works best when people with a wide variety of experiences and backgrounds attend. Everyone iswelcome to attend if you have an interest in ally skills. You may want to learn ally skills to practice themyourself, or you may want to learn how to teach ally skills to others. If you are a member of a marginalized

Page 7: Strange Loop 2016 Program

group, you are especially welcome. This workshop gives you a space to share your knowledge and experience ina respectful and supportive environment.

Valerie Aurora - Frame Shift Consulting

Valerie Aurora is the founder and principal consultant of Frame Shift Consulting, specializing in cutting edgediversity and inclusion programs for technology organizations. She is the co-founder and former executivedirector of the Ada Initiative, a non-profit supporting women in open technology and culture. She is the leadauthor of the most popular conference code of conduct for tech conferences. She worked for over ten years as aLinux kernel and file systems developer for companies including Red Hat, IBM, and Intel.

Swiftly create a mobile app

Schedule: 2016-09-15 12:30 - 2016-09-15 14:30Room: Missouri PacificFormat: WorkshopsTrack: languages

Do you ever look at a popular app and think that it doesn't look so hard to make? Do you just never gettingaround to making an app yourself? Luckily for you, you can take the plunge and learn how to make a quick andsimple iOS app!

In this workshop, you will get a crash-course in Swift by creating a Boggle-like iOS app. You'll become familiarwith using Apple's Xcode as well as learn to structure a mobile app. Not only will you leave with a working appthat you can play in between sessions, but you'll also have dozens of ideas on how to expand the app and growyour skills.

New and old programmers alike will awaken their creative side and be inspired to create the next, new popularapp!

Neem Serra (@teamneem) - Asynchrony

Neem Serra is a Ruby and iOS developer in the St. Louis area. She teaches and mentors at a variety of non-profitorganizations such as Software Carpentry and the Roy Clay Senior Tech Impact web development workshop. Asthe lead of the Google Women Techmakers group in St. Louis, she started the St. Louis Techies Project tohighlight the diversity of technical people in St. Louis, and she started Technigals Anonymous to help womencreate a board of directors for their professional lives. Neem loves to bake, read comics, and host craft nights.

Pragmatically applying Functional React.js

Schedule: 2016-09-15 12:30 - 2016-09-15 14:30Room: New YorkFormat: WorkshopsTrack: web

React.js is one of the hot topics in our industry. It challenges the status quo introducing new ways of thinkingabout and building dynamic web applications. In this workshop we'll explore the pragmatic application ofReact.js and especially how to use it with a functional approach minimizing mutable state and side effects.

In this workshop we'll discuss:

React.js - primarily functional useModularization

Page 8: Strange Loop 2016 Program

CompositionImmutable.jsReduxRxJSPerformance considerationsTrade-offs

This interactive workshop is ideal for intermediate javascript developers who want to grow in their knowledgeand understanding of React.js and functional techniques for writing solid, performant, and maintainable code.

Jeff Barczewski (@jeffbski) - CodeWinds

Jeff Barczewski has been a software engineer, architect, and instructor for over 25 years. He is the founder ofCodeWinds and Inspired Horizons, a training and consulting firm based in St. Louis, MO. He is married and hasa daughter who is studying broadcast journalism at Mizzou. He enjoys giving technology talks at meetups andconferences. Some notable recent talks include teaching React.js at JSConf 2015 and presenting at Nodevember2014 and 2015. Prior to starting CodeWinds, he was part of a small team that built the MasterCard foundation forApplePay and secure tokenized payments via MasterCard Digital Enablement Service. For the last couple years,Jeff has focused on creating and publishing online developer training for React.js and Node.js throughCodeWinds (https://codewinds.com/).

ES6 and Beyond

Schedule: 2016-09-15 15:00 - 2016-09-15 17:00Room: Frisco BurlingtonFormat: WorkshopsTrack: languages

The EcmaScript standard is now on a yearly release cycle. With ES6 complete and ES2016 ratified, we have aton of awesome new features to use in our daily software development. In this training, we'll learn about thefeatures you're likely to use and benefit from on a day-to-day basis. You'll get hands on experience trying outthese new features with a test suite you'll be expected to make pass. After this training, you'll be able to go backto your projects and add support for ESNext code today.

This is a very hands-on training and you'll need to make sure that you're machine is ready. You will be codingand running code. Please ensure that you have git, Node, npm, and a text editor / IDE installed on your machine.With that, you'll be ready to rock and roll.

Kent C. Dodds (@kentcdodds) - PayPal

I am Kent C. Dodds. I work at PayPal as a full stack JavaScript engineer. I host JavaScript Air, the live videobroadcast podcast about JavaScript and the web platform. I spend a bit of time on GitHub and Twitter. I'm anEgghead.io instructor and Google Developer Expert. I'm happily married and the father of three kids. I like code.I care about craft, design, tools, and architecture. I like to talk about it. Come chat with me :-)

Introduction to Rust

Schedule: 2016-09-15 15:00 - 2016-09-15 17:00Room: IllinoisFormat: WorkshopsTrack: languages

Page 9: Strange Loop 2016 Program

Rust is a language with a new vision of systems programming. It gives you low-level control and predictabilitybut also provides the safety and ergonomics of much higher-level languages (like Ruby or Python). Thisworkshop gives an introduction to Rust from the ground up, with a focus on ownership and borrowing. We'llcover how Rust's type system works and how it prevents memory safety errors as well as common problems withparallel programming, like data races. By the end of the day, you should be well on your way to making yourown Rust project.

Nicholas Matsakis (@nikomatsakis) - Mozilla

Nicholas Matsakis is a senior researcher at Mozilla research and a member of the Rust core team. He has beenworking on Rust for approximately five years and did much of the initial work on its type system and other corefeatures.

React Native Intro Workshop for iOS and Android

Schedule: 2016-09-15 15:00 - 2016-09-15 17:00Room: Missouri PacificFormat: WorkshopsTrack: tools

Learn how to use JavaScript to build high-quality, performant applications for iOS and Android with ReactNative! This three-hour workshop introduces the React Native, a framework for writing cross-platformapplications using JavaScript. Mobile components, styling, and native APIs such as local storage are discussed,and participants will build a simple weather forecast application for iOS and Android. Additionally, we'll discussthe foundational concepts that make React Native work, and how it differs from other cross-platform solutions.The workshop assumes some prior familiarity with React and JavaScript, and requires a working developerenvironment. Attendees with previous mobile experience and ability to read JavaScript are also welcome. Pre-attendance instructions will be provided.

Bonnie Eisenman (@brindelle) - Twitter

Bonnie Eisenman is a software engineer at Twitter and a member of the hackerspace NYC Resistor, withprevious experience at Codecademy, Fog Creek Software, and Google. She is the author of Learning ReactNative, a book on building native iOS and Android applications with Javascript, published with O'Reilly Media.In her spare time, she enjoys learning languages, tinkering with hardware projects, and knitting. Find her onTwitter as @brindelle.

Building Scalable Data Pipelines with PostgreSQL, GraphQL and React

Schedule: 2016-09-15 15:00 - 2016-09-15 17:00Room: New YorkFormat: WorkshopsTrack: data

We have a lot of great front-end technologies today, and many interesting ways to store and process data in thebackend. But often the abstractions break down when we try to build a simple architecture that processes andvisualizes data as its primary goal. We might be able to create a nice frontend, but the ingestion and storage is amess. Or the other way around, depending on the individual's background.

Most recently, GraphQL has shown that this barrier exists - a lot of people would love to use it, but not that manydo, since they are missing the capable backend that can run the queries.

Page 10: Strange Loop 2016 Program

In this workshop I'll introduce a clean architecture for ingesting, storing, processing and visualizing data - built

on PostgreSQL, GraphQL, React and d3. I'll talk about the trade-offs, the weaknesses, and what I think is a good

set of best practices when starting a new data-intensive, frontend-heavy project using these technologies.

This workshop builds on my experience scaling PostgreSQL for many different kinds of companies, as well as

my personal interest and background in data analysis and visualization using React and d3.

Basic knowledge of the React-based front-end stack, as well as PostgreSQL is welcome, but not necessary - this

workshop is intermediate level and hopes to give you a good starting point to dive deeper into the individual

pieces, or see a good example case study for you to take inspiration from.

Lukas Fittl (@LukasFittl) - Citus Data

Lukas is hacking on PostgreSQL-related projects full time at Citus Data. He's previously been part of the

Founding Team at Product Hunt, as well as Co-Founder at Soup.io and Spark59.

Strange Loop Party

Schedule: 2016-09-15 19:00 - 2016-09-15 21:30

Room: City Museum

Format: Misc

Track: Preconf

We're taking over the City Museum for the Strange Loop party! The City Museum is a warehouse packed full of

explorable art made from repurposed materials. The museum is fractal in nature and difficult to describe. It

features all manner of slides, tunnels, and beautiful weirdness. They have a strict "No Maps!" policy - it's up to

you to find your own path.

The Strange Loop party will feature:

1st floor - live music from Bruiser Queen, drinks from local breweries

2nd floor - board game area, lounge, and photo booth courtesy of Riot Games

3rd floor - snacks, drinks

Roof - check it out for a great view!

Many thanks to our party sponsors:

Riot Engineering Tech Blog

Page 11: Strange Loop 2016 Program

Conference - Thursday Sept 16th, 2016

Government Hacking and Human Rights: The Why and the How

Schedule: 2016-09-16 09:10 - 2016-09-16 10:00Room: TheaterFormat: KeynotesTrack: keynote

Amie Stepanovich (@astepanovich) - Access Now

Amie Stepanovich works to ensure that laws and policies on surveillance and cybersecurity recognize andrespect human rights. At Access Now, Amie leads projects on digital due process and responds to threats at theintersection of human rights and communications surveillance. Previously, Amie was the Director of theDomestic Surveillance Project at the Electronic Privacy Information Center, where she testified in hearings inboth the Senate and the House of Representatives, as well as in State legislatures. Amie is a board member of theInternet Education Foundation and is the Committee on Individual Rights and Responsibilities' Liaison to theAmerican Bar Association's Cybersecurity Working Group. She was co-chair for the 2014 Computers, Freedom,and Privacy Conference. Amie was named as a Privacy Ambassador by the Information and PrivacyCommissioner of Ontario, Canada and was recognized in 2014 as one of Forbes magazine's 30 under 30 leadersin Law and Policy. She has a J.D. from New York Law School, and a B.S. from the Florida State University.

Is It A Bug Or Is It A Story?

Schedule: 2016-09-16 10:10 - 2016-09-16 10:50Room: CenteneFormat: TalksTrack: data

Sifting through big data can provide fantastic insights into customer behaviour. However, besides map reduceand rigorous scientific methodology, there can often be interesting insights gleaned from the outliers. Zoominginto small data can reveal either bugs in your big data scope or oddball user behaviour. Both of these can benuggets of gold.

From the Iraq War Logs to Fifa Files, Nicola Hughes, an investigative data journalist turned developer will gothrough the data principles learned from digging deeper into data. How to isolate human behaviour. Why to bedistrustful of your data. And how to interrogate your data like an investigative journalist. Ultimately, decipheringa bug from a story.

Nicola Hughes (@GirlMeetsCode) - ThoughtWorks

Left CNN International to learn to code with tech startup ScraperWiki, becoming a Knight-Mozilla OpenNewsfellow at the Guardian in 2012 and a data journalist at the Times & Sunday Times the following year. Now adeveloper at social justice and technology consultancy, ThoughtWorks.

Page 12: Strange Loop 2016 Program

Data sleuth and promoter of women in tech.

Reasoning about performance (in the context of search)

Schedule: 2016-09-16 10:10 - 2016-09-16 10:50

Room: Midland States Bank

Format: Talks

Track: architecture

We're going to use search as a case study on how to reason about performance before coding. Imagine you're

building a search engine from scratch. There are maybe a trillion documents on the Internet. If each each

document is 10kB, that's 10 petabytes of data! How do you query 10PB of data in a fraction of a second?

That might take years to implement, but it's surprisingly easy to reason about the performance of various

possible designs. We'll talk about how to estimate performance using back of the envelope calculations that can

be done in minutes or hours, even for applications that take months or years to implement.

In particular, we'll walk through a core search algorithm used in Bing, discuss how we initially estimated the

performance and decided the system was worth building, and how the actual performance compared to the

estimated performance.

We'll also talk about why the class of algorithm we're discussing has been considered obsolete as a core search

engine technology for almost two decades, despite having reasonable performance characteristics in theory and

practice.

Dan Luu (@danluu) - Microsoft

Dan Luu spends a lot of time thinking about performance. Before working on BitFunnel, he worked on deep

learning at Google, and microprocessors at Centaur.

SQL on, interactive visualization as queries over data

Schedule: 2016-09-16 10:10 - 2016-09-16 10:50

Room: Peabody Lounge

Format: Talks

Track: concurrency

Managing the consistency of interactive visualizations in the face of inherent asynchrony and reordering of

events in modern data visualizations is challenging. This talk will go over a new view (query) based model for

interactive visualization and show how database transaction techniques could apply to consistency for

visualization scenarios, and present a set of declarative policies to maintain visualization consistency. We will a

see a demo of this DSL in action.

Yifan Wu (@yifanwu) - UC Berkeley

Yifan is a first year PhD student at UC Berkeley working in data systems. She is currently working on a new

programming system for interactive big data visualization.

Idealized Commit Logs: Code Simplification via Program Slicing

Page 13: Strange Loop 2016 Program

Schedule: 2016-09-16 10:10 - 2016-09-16 10:50

Room: Pepsi Encore

Format: Talks

Track: tools

Conceptualization and understanding are prerequisites for changing software. But they are harder to achieve as

software becomes more complex and expands in scope. We have many tools for writing software, but few at all

for reading and understanding it. What if there were tools that helped us conceptualize systems so that we could

change them with greater confidence? What would they look like and how would we use them.

I will describe a new tool that helps developers rapidly build understanding of new software systems by

generating an Idealized Commit Log: a simplified step-by-step deconstruction of a working software system. I

will explain how the tool works by touching upon a diverse set of topics including type analysis, code coverage

tools, AST transformations and a much-ignored topic of academic computer science pioneered nearly forty years

ago called program slicing.

Finally, I will apply the idealized commit log technique to explain the inner workings of a number of ostensibly

complex real-world software packages to demonstrate its power and simplicity.

Alan Shreve (@inconshreveable) - ngrok

Hacker and entrepreneur, creator of ngrok.com.

Agility & Robustness: Clojure spec

Schedule: 2016-09-16 10:10 - 2016-09-16 10:50

Room: Theater

Format: Talks

Track: languages

You can program with high agility and end up with a robust, maintainable program. This talk will show you how

to use Clojure and the new spec library to write programs that behave as expected, meet operational

requirements, and have the flexibility to accommodate change.

With Clojure, you can rapidly develop robust and reusable programs using

interactive development at the REPL

immutable data and pure functions

code as data

Clojure's new spec library augments these approaches. Developing with spec is declarative, predicative, layered,

robust, and integrated with Clojure.

spec is declarative. As with type systems in static languages, spec lets you make declarative statements that

communicate and document data, function arguments, and returns.

spec is predicative. You can declare predicates about data, about function arguments and returns, and even

function semantics. This overlaps not only with type systems, but also with validations that are often done with

costly bespoke tests and runtime checks.

spec is layered. Spec does not require any specific workflow or program shape, and in particular is compatible

with iterative and incremental development.

Page 14: Strange Loop 2016 Program

spec supports robust programs via automatic generative testing. Given specifications, spec can write generativetests for you, generating a volume of tests limited only by your CPU time, not by what you are able to write andmaintain by hand.

spec is fully integrated with Clojure. As you develop your program, you have interactive access to spec-drivendocumentation, validation, destructuring, conformance checking, sample data, testing, and programinstrumentation.

Stuart Halloway (@stuarthalloway) - Cognitect

Stuart Halloway is a founder and President of Cognitect, Inc. He is a Clojure committer, and a developer of theDatomic database. Stuart has spoken at a variety of industry events, including StrangeLoop, Clojure/conj,EuroClojure, ClojureWest, SpeakerConf, QCon, GOTO, OSCON, RailsConf, RubyConf, JavaOne, and NFJS.Stuart has written a number of books and technical articles. Of these, he is most proud of Programming Clojure.

Project Jigsaw in JDK 9: Modularity Comes To Java

Schedule: 2016-09-16 11:00 - 2016-09-16 11:40Room: CenteneFormat: TalksTrack: languages

Project Jigsaw will bring modularity to the Java platform; something that will enable better security, performanceand flexibility for deployment of applications. This talk will look at the fundamentals of how modularity in Javawill work. Developers will need to understand that these changes go significantly further than just separating thestandard class libraries into a number of discrete units.

This talk will explain the impact project Jigsaw will have on developers in terms of building their applications,as well as helping them to understand how things like encapsulation of private APIs, which have up until nowbeen visible, will change in JDK 9.

Simon Ritter (@speakjava) - Azul Systems

Simon Ritter is the Deputy CTO of Azul Systems. Simon has been in the IT business since 1984 and holds aBachelor of Science degree in Physics from Brunel University in the U.K.

Originally working in the area of UNIX development for AT&T UNIX System Labs and then Novell, Simonmoved to Sun in 1996. At this time, he started working with Java technology and has spent time working both inJava development and consultancy. Having moved to Oracle as part of the Sun acquisition, he managed the JavaEvangelism team for the core Java platform, Java for client applications and embedded Java. Now at Azul, hecontinues to help people understand Java as well as Azul's JVM technologies and products.

Designing Cypher - a Graph Query Language

Schedule: 2016-09-16 11:00 - 2016-09-16 11:40Room: Midland States BankFormat: TalksTrack: languages

This is a talk about language design. It is also a talk about language implementation, and how the two go hand inhand. We've spent the past 5 years building Cypher for Neo4j, and have now opened it up for other vendors aswell. This is the story of what we learned along the way so far.

Page 15: Strange Loop 2016 Program

This is a talk for anyone who is interested in learning about the things that are important to consider when

designing a language for wide use.

We set out to build a language that was specialised while being expressive, a language where simple things are

easy, and complex things possible. We desired a language that is easy to learn, with a straight path to mastery.

We wanted a high level declarative language for which we could write a high performance implementation. We

knew that we would make mistakes and needed a way to correct those, our language needed to be able to evolve

while being reliable. We have not been very scientific about our process, but have still learned a lot along the

way. In this talk we will share those learnings with you, so that you too can learn from our successes and

mistakes.

This is not a story from an ivory tower, but a story about moving fast and breaking things. We never intended to

build a language, but reluctantly found ourselves there anyway. With a small team and no budget we still

produced something that a lot of people find very useful. We built something we are proud enough about to want

to share the story of with the world.

Tobias Lindaaker (@thobe) - Neo Technology

Tobias was one of the very first developers of Neo4j. He has been part of most aspects of the development and

technical decisions over the past decade. Most recently, Tobias development efforts have been focused on the

Cypher query language, and in particular on the openCypher project.

Modelica: Component Oriented Modeling of Physical Systems

Schedule: 2016-09-16 11:00 - 2016-09-16 11:40

Room: Peabody Lounge

Format: Talks

Track: languages

There are lots of programming languages out there, but very few like Modelica. Modelica is a standardized

language for describing the behavior of physical and cyber-physical systems. It incorporates mathematical

constructs and physical interactions directly into the language and it can be used to create graphical, component-

oriented models of complex physical systems. Unbeknownst to most software developers, Modelica is used by a

wide range of big name industrial companies (e.g., Ford, United Technologies, BMW, Airbus) to simulate a host

of real world devices and systems.

This talk will cover how the mathematical and physical information described in Modelica is transformed into a

running simulation of that physical system. There are a number of fascinating algorithms that are needed to

transform the hybrid differential-algebraic equations extracted from a Modelica model into imperative simulation

code. The compilation is completely different from a typical programming language. Attendees may recognize

some similarities to functional reactive programming (FRP) but extended to include continuous behavior.

Michael Tiller (@mtiller) - Xogeny

I got my Ph.D. in Mechanical Engineering from the University of Illinois at Urbana-Champaign. But I've been

fascinated by software all my life and I took up engineering because I saw it as ripe with interesting problems

that could be solved with software. For example, Ralph Johnson (GoF book author) was on my thesis committee

even though I was a mechanical engineering student.

After getting my Ph.D., I went to work for Ford Motor Company for ten years in powertrain research. I became

quite active in the development of Modelica but at the same time worked on applying Modelica and other

software technologies to real world products like the Ford Hybrid Escape (the first production hybrid in North

America).

Page 16: Strange Loop 2016 Program

Since Ford, I worked for Emmeskay, LMS and Dassault Systemes before starting my own company, Xogeny, tofocus on full-time on injecting the latest software, web and cloud technologies into the (rather conservative)engineering domain.

How to Get Started With Functional Programming

Schedule: 2016-09-16 11:00 - 2016-09-16 11:40Room: Pepsi EncoreFormat: TalksTrack: etc

Functional Programming paradigm produces more reliable and readable code, it also helps us think about theproblem at hand more before deciding how to solve it. However, a lot of us got introduced to object orientedprogramming first, so it can be a pain to switch our mindset into functional programming. I will be talking aboutsome of the concepts in functional programming and how to get started with existing programming knowledge.

Julia Gao (@ryoia) - O.C. Tanner

Julia is a software developer at O.C. Tanner, a student pursuing her Computer Science degree, and a conferencespeaker. She likes to learn more about functional programming, and is currently learning Haskell.

A Frontend Server, Front to Back

Schedule: 2016-09-16 11:00 - 2016-09-16 11:40Room: TheaterFormat: TalksTrack: distributed-systems

For any service, the frontend is the services which depend on it, and the backend is the services it depends upon.In a many-layered service-oriented system, the frontend server is the outermost layer, responsible for handlingrequests from the outside world. Typically, a frontend server is responsible for universal behavior, includingauthentication, rate limiting, and traffic prioritization.

The exact behavior will vary from company from company, and so most large software organizations will writeone from scratch; Google has "gws", and Twitter has "tfe". Recently, Fitbit built its own. Such a server has to befast, stable, scalable, extensible, and easy to monitor. However, the entire code base is only 3000 lines of code,making it an ideal platform for exploring the low-level engineering decisions that enable these properties, andthe tradeoffs between them.

This talk will explore the implementation of Fitbit's frontend server, covering topics ranging from queueingtheory and software design to GC tuning and the Netty library. It is meant to be a deeply practical discussion oftopics which are normally only discussed in the abstract.

Zach Tellman (@ztellman) - Fitbit

Zach Tellman writes a lot of code. Most of it's good. He has released a wide variety of open source libraries,mostly in Clojure. He has given a bunch of talks, some of which are about software and post-modern criticaltheory, and some of which are ridiculous. He is writing a book titled "Elements of Clojure", which spends a lotof times talking about names and no time talking about cache invalidation.

He currently works at Fitbit, where he leads the API Infrastructure team.

Page 17: Strange Loop 2016 Program

Debugging Diversity

Schedule: 2016-09-16 12:50 - 2016-09-16 13:30

Room: Centene

Format: Talks

Track: etc

Despite the media attention given to the diversity in tech problem, many technology practitioners don't see how a

lack of diversity affects their daily lives. So, it is not surprising that they neither understand the magnitude of the

problem nor how they can help fix it. However, the skills needed to debug software are directly applicable to

making technology companies more inclusive and diverse.

Anjuan Simmons (@anjuan) - Assemble

Anjuan Simmons is a technologist with a successful track record of delivering technology solutions from the

user interface to the database. He is currently a software project manager and Certified Scrum Master at a leading

construction software manufacturer, and he has previously worked as an executive for Accenture, Deloitte, and

Infosys. He has spoken as South by Southwest Interactive multiple times as well as local and regional

technology conferences around the United States on topics such as design, Agile software development,

diversity, and leadership. Anjuan has an undergraduate degree in electrical engineering from the University of

Texas at Austin and an MBA from Texas A&M University.

PureScript & Pux -- a safer, more expressive way to React

Schedule: 2016-09-16 12:50 - 2016-09-16 13:30

Room: Midland States Bank

Format: Talks

Track: languages

You've heard of Elm and it sounds super cool, but you can't rewrite from scratch and you don't want to give up

the innovation of the React community! What if you could get Elm's benefits one file at a time while still

utilizing your existing or 3rd party React components? What if that alternative also supported hot reloading,

component styling, and smart editor plugins? What if it was simultaneously a simpler and more powerful

language, letting you easily drop into familiar JavaScript while also supporting crazy powerful abstraction and

typing features?? Welcome to PureScript (& Pux)!

Michael Trotter (@t_spicydonuts) - Jane.com

Director of Front End Development at Jane.com. Programming language enthusiast, currently playing

with/using/learning PureScript, Idris, Haskell, Elm, ReactJS, Erlang, Elixir, and Clojure.

I'm always trying to find safer, more expressive ways to code and am really interested in improving the

developer experience. I organize the Utah Haskell meetup, along with Julia (@ryoia) and Murphy

(@splodingsocks) and present at other local meetups.

Druid: Powering Interactive Data Applications at Scale

Schedule: 2016-09-16 12:50 - 2016-09-16 13:30

Room: Peabody Lounge

Format: Talks

Track: distributed-systems

Page 18: Strange Loop 2016 Program

Cluster computing frameworks such as Hadoop or Spark are tremendously beneficial in processing and derivinginsights from data. However, long query latencies make these frameworks sub-optimal choices to powerinteractive applications. Organizations frequently rely on dedicated query layers, such as relational databases andkey/value stores, for faster query latencies, but these technologies suffer many drawbacks for analytic use cases.In this session, we discuss using Druid for analytics, and why the architecture is well suited to power analyticapplications.

User facing applications are replacing traditional reporting interfaces as the preferred means for organizations toderive value from their datasets. In order to provide an interactive user experience, user interactions with analyticapplications must complete in an order of milliseconds. To meet these needs, organizations often struggle withselecting a proper serving layer. Many serving layers are selected because of their general popularity, withoutunderstanding the possible architecture limitations.

Druid is an analytics data store designed for analytic (OLAP) queries on event data. It draws inspiration fromGoogle's Dremel, Google's PowerDrill, and search infrastructure. Many large technology companies areswitching to Druid for analytics, and we will cover why the technology is a good fit for its intended use cases.

Fangjin Yang (@fangjin) - Imply

Fangjin is a co-author of the open source Druid project and a co-founder of Imply, a San Francisco basedtechnology company. Fangjin previously held senior engineering positions at Metamarkets and Cisco. He holds aBASc in Electrical Engineering and a MASc in Computer Engineering from the University of Waterloo, Canada.

An Introduction to Combinator Compilers and Graph Reduction Machines

Schedule: 2016-09-16 12:50 - 2016-09-16 13:30Room: Pepsi EncoreFormat: TalksTrack: languages

Graph reducing interpreters combined with compilation to combinators creates a "virtual machine" compilationtarget for pure lazy functional programs that is extremely concise, simple in its semantics, and naturallyparallelizable. In their simple forms these techniques are a useful introduction to compiling and interpetingfunctional languages. In much more sophisticated forms, they illustrate how large-scale compilers areimplemented in used in languages like Idris.

We'll walk through the process of compiling programs in the lambda calculus to pure combinators and a simpleimplementation of the most straightforward graph reduction algorithm. With that context, we'll look at thehistory of graph reduction, from a surge of interest and excitement in the 80s and 90s to serious reservations inthe 2000s. We'll look at concrete examples of combinator compilation and graph reduction, and compare withalternative techniques in Haskell's Spineless Tagless G-Machine.

David Graunke (@graunked) - Thomas Street

David Graunke is a partner and developer at Thomas Street, a UI design and development company.

Systems programming as a swiss army knife

Schedule: 2016-09-16 12:50 - 2016-09-16 13:30Room: TheaterFormat: TalksTrack: tools

Page 19: Strange Loop 2016 Program

You might think of the Linux kernel as something that only kernel developers need to know about. Not so! It

turns out that understanding some basics about kernels and systems programming makes you a better developer,

and you can use this knowledge when debugging your normal everyday programs.

Everything in this talk applies to every program, in every programming language. What could be better?

Julia Evans (@b0rk) - Stripe

Julia Evans is a developer who works on infrastructure at Stripe. She likes making programs go fast and learning

how to debug weird problems. She thinks you can be a wizard programmer.

Diocletian, Constantine, Bedouin Sayings, and Network Defense

Schedule: 2016-09-16 13:40 - 2016-09-16 14:20

Room: Centene

Format: Talks

Track: security

In the early 4th century, the Roman emperors Diocletian and Constantine looked around their empire, and

realized that they had troubles. The crisis of the third century had left the empire broke, with the internal trade

network badly disrupted and the currency devalued. With little money to pay troops, and the neighboring people

having learned many of the Roman army's tricks, the empire faced a problem: How do you protect an empire

with borders as long as the Empire's with fewer and less effective troops?

The answer is interesting, and even more so when you consider how similar this problem is to that of network

defense. When it comes to protecting our networks, we are outnumbered, and any technical superiority we may

have had is dwindling. Further, while cybersecurity and cyberdefense are hot topics, their popularity is not being

matched by an increase in staffing. So, like the Roman Empire, we must figure out how to protect our networks

against a well-equipped enemy across a long attack surface using less staff.

In this talk, I'll explain the history and show how we can apply some of the lessons learned: how we can apply

the Roman's new, reactive style to better protect our networks, how we can design our systems to better survive

in our new environment, and how we can start learning to use the fact that trust is not an all-or-nothing property.

I'll even point out one lesson we've overlearned, and why you should definitely start forgetting the Battle of

Thermopylae.

Adam Wick (@acwpdx) - Galois, Inc.

Dr. Adam Wick leads Galois's systems software and mobile security team, and was the creator of the HaLVM. In

his current role, he has led projects that have used the HaLVM for communications and network security tasks,

and has given talks at several Xen Summits, QCons SF, and StrangeLoop about this work. Beyond the HaLVM,

Adam has led Galois's investigations into secure operating system design, trustworthy mobile roots of trust, and

predictive security for UAVs. He is co-inventor of the CyberChaff network defense project, and has developed

several solutions for improving his client's network and communications security. Before Galois, Adam received

his Ph.D. from the University of Utah, and his B.S from Indiana University.

Put A Type On It: Idris Type Providers for AWS Resources

Schedule: 2016-09-16 13:40 - 2016-09-16 14:20

Room: Midland States Bank

Format: Talks

Track: etc

Page 20: Strange Loop 2016 Program

Enforcing the myriad of policies surrounding security, availability, cost, and other business requirements of newservices in a distributed operating environment is not for the faint of heart.

In this talk, Susan will demonstrate how to write a type provider in Idris which will read in VPC and subnetresource metadata from AWS and build a small library of functions that can enforce security, and availabilitypolicies for distributed systems deployments.

Susan Potter (@SusanPotter) - Referential Labs

Susan is a distributed systems engineer straddling technical operations and engineering helping make data andservice infrastructure operationally manageable at scale.

Over the last seventeen years she has worked on algorithmic trading systems, market data software, multi-tenantservice oriented architecture, and continuous delivery.

Expressing complex data aggregations with Histogrammar

Schedule: 2016-09-16 13:40 - 2016-09-16 14:20Room: Peabody LoungeFormat: TalksTrack: data

Since the 1970's, data analysis in high energy physics has revolved around the histogram: an array of integersapproximating a distribution. Fortran codes drawing ASCII-art plots bear a strong resemblance to the analysisscripts that discovered the Higgs boson: imperative for-loops filling histogram objects.

If this sounds cumbersome, it is. Explicit for-loops must be manually edited to add concurrency. However, thehistogram concept itself is powerful: many data visualizations can be constructed by cleverly filling suites ofrelated histograms, adding them, subtracting them, and dividing them bin by bin.

Today, high-energy physics analysis is colliding with tools from the Big Data community. In my work withphysicists adopting Apache Spark, I've found that histograms can benefit from a functional style, accepting fillrules as lambda functions, and they can be subdivided into more fundamental units.

In fact, all the tricks for building complex data visualizations with histograms can be formalized as a grammar of"aggregator monoids." These aggregators are associative for easy concurrency and simple enough to implementin many languages.

In this talk, I'll show you how to use Histogrammar, a lightweight, cross-language suite of histogrammingprimitives. Examples will include cluster-wide histogramming in Spark and tapping intermediate values in aGPU computation. It is my belief that the Big Data community can learn as much from physicists as physicistsare from Big Data.

Jim Pivarski

Jim was trained as a physicist with a Ph.D. from Cornell and has done a lot of physics analyses himself. Hehelped to commission the CMS experiment at the Large Hadron Collider before joining Open Data Group, a BigData analytics consultancy. There, he developed the Portable Format for Analytics (PFA) and has since returnedto high energy physics as part of DIANA-HEP, a project to introduce machine learning and Big Data techniquesto high energy physicists.

Distributed Commit Log: Application Techniques for Transaction Processing

Page 21: Strange Loop 2016 Program

Schedule: 2016-09-16 13:40 - 2016-09-16 14:20Room: Pepsi EncoreFormat: TalksTrack: distributed-systems

Messaging systems built on the idea of a distributed commit log such as Apache Kafka and Amazon Kinesisoffer a powerful approach for building robust, real-time systems. However, because of their unique nature thereare particular techniques required to use them effectively.

This talk will catalog approaches used in practice to address topics such as: dealing with duplicate event delivery,merging & splitting of shards, poison events, exception handling, detecting failed workers, performing rapidfailover, and providing facilities for debugging. These approaches provide a foundation for using distributedcommit logs not just for applications such as click-stream analysis but for transaction processing.

David McNeil (@david_mcneil) - LonoCloud

David has been a developer for many years. He has worked on R&D project, enterprise application, and databaseimplementations in C, Smalltalk, Java, .Net, etc. with a focus on distributed system design. He is currently a partof the LonoCloud team at ViaSat building cloud infrastructure in Clojure.

Storytelling with your data

Schedule: 2016-09-16 13:40 - 2016-09-16 14:20Room: TheaterFormat: TalksTrack: web

Angular2 comes with great performance improvements and better tools than ever to build interactive datavisualizations for the web. Check out how you can leverage ngAnimate, RxJS and Angular2 change detection totell a story 60fps.

Aysegul Yonet (@AysegulYonet) - Autodesk

Aysegul is a Javascript developer focusing on AngularJS and data visualization. She is a Senior SoftwareEngineer at Autodesk A360 Cloud Platform, a Developer Expert at Google and an active conference speaker.She enjoys teaching at a variety of non-profit organizations aiming to increase diversity in the software industry.

Building Secure Systems in Haskell

Schedule: 2016-09-16 14:30 - 2016-09-16 15:10Room: CenteneFormat: TalksTrack: security

Large-scale private user data theft has become a common occurrence. A huge factor in these privacy breaches wehear so much about is that developers specify and enforce data security policies by strewing checks throughouttheir application code. Overlooking even a single check can lead to vulnerabilities.

In this talk, I will describe a new approach to protecting sensitive data even when application code is buggy ormalicious. The key ideas behind my approach are to separate the security and privacy concerns of an applicationfrom its functionality, and to use language-level information flow control (IFC) to enforce policies throughoutthe code.

Page 22: Strange Loop 2016 Program

This talk will cover LIO, an IFC-security language embedded in Haskell. LIO leverages Haskell's monads andstrong type system to provide developers with a way to specify and enforce security policies on data. Building onLIO, I will then describe Hails, a server-side web framework that makes it easy to specify policies in adeclarative way, alongside the application data model, and separate from the application functionality code. WithHails, developers can build server-side web applications that protect user date privacy and integrity, byconstruction.

Deian Stefan (@deiandelmars) - UCSD and Intrinsic

Deian Stefan is an Assistant Professor of Computer Science and Engineering at the University of California, SanDiego and the Chief (Mad) Scientist at Intrinsic (formerly GitStar). He is interested in building principled andpractical secure systems that leverage advances in programming language techniques. Deian works on severalsystems, including COWL, a browser confinement system designed for modern web applications, Hails, asecurity-centric framework for building web platforms, LIO, a dynamic information flow control system, andESpectro, a security architecture for Node.js. At Intrinsic, he is putting much of this research into practice bybuilding systems, tools, and languages that will ultimately make it easier for developers to build and deploy webapplications with minimal trust.

Fold, paper, scissors - an exploration of origami's fold and cut problem

Schedule: 2016-09-16 14:30 - 2016-09-16 15:10Room: Midland States BankFormat: TalksTrack: etc

This talk looks beyond origami as a childhood pastime and an art form and instead, explores origami as a sourceof many interesting mathematical problems, including one called the fold-and-cut problem. The fold and cuttheorem states that it is possible, given a piece of paper and any polygonal shape, to find a series of folds of thatpaper such that the given shape can be generated with a single cut. This talk explores two proofs of the theoremand a Ruby implementation of a solver that determines the correct series of folds given any input polygon. Therewill be a live demo of the program and paper cutting!

Amy Wibowo (@sailorhg) - BubbleSort Zines

Amy is a technologist/artist who cares about STEM and STEAM education and making the world better throughhuman-centric design and technology. She is the founder of Bubblesort Zines-zines that explain computerscience concepts via drawings and stories. Previously, she was a web dev at airbnb, machine learning research atHonda Research Institute in Japan and HCI research at the University of Tokyo.

An Interactive Web Visualization for Watershed Topology

Schedule: 2016-09-16 14:30 - 2016-09-16 15:10Room: Peabody LoungeFormat: TalksTrack: web

Where does the rain go once it hits the ground? Some of it soaks into the ground, and some of it evaporates. Therest flows into creeks, streams, lakes, and rivers, eventually making its way to an ocean. The route that this watertakes is determined by thousands of regions called watersheds.

Creating an interactive visualization showing how these regions connect to each other includes finding andreformatting some public data, some directed acyclic graph algorithm coding, reducing the size of the data set to

Page 23: Strange Loop 2016 Program

something that can quickly be served in a web page, and some challenging graphics performance issuesassociated with the display of nearly 100,000 polygons in your browser.

This talk will demonstrate and describe the architecture of a fun open source JavaScript web app that combinesall these things to let you get an instant view of the areas areas both upstream and downstream from any locationby simply pointing with the mouse.

Mark Phillips (@embeepea) - FernLeaf Interactive

Mark has been writing software and playing in creeks and streams for several decades. In a previous life he wasa mathematician, and more recently he has written several interactive web visualizations for NOAA and the website climate.gov. He loves the natural world, geometry, and programming, and is especially delighted wheneverhe's able to combine all three of these things. He currently lives in NYC.

Failing (and recovering) asynchronously: a saga

Schedule: 2016-09-16 14:30 - 2016-09-16 15:10Room: Pepsi EncoreFormat: TalksTrack: concurrency

Asynchronous, event-driven programming is quickly becoming ubiquitous, and it comes in many forms:promises, futures, channels, actors, and more. These techniques help us build robust high-performanceapplications. However, what do we do when something fails? "Let it crash" is perfectly acceptable for manysituations. However, what about the situation when one part of a multi-step process fails, and you need to undothe side effects of earlier steps? Are there patterns for reasoning about and resolving this problem?

In 1986, Hector Garcia-Molina and Kenneth Salem published "Sagas", a paper describing how to improve theperformance of long-lived transactions in DBMS systems by breaking them up into "sagas", a collection ofsmaller transactions which can be undone in the case of a failure. It is possible to adapt the saga pattern to solveour asynchronous recovery pattern. In particular, we will examine how to use it in both reactive stream-basedsystems and future-based systems with examples in Scala.

Daniel Solano Gómez

Daniel is a long-time software developer and member of the Clojure community. He enjoys creating high-qualitysoftware and contributing to open source projects.

Caching at Netflix: The Hidden Microservice

Schedule: 2016-09-16 14:30 - 2016-09-16 15:10Room: TheaterFormat: TalksTrack: architecture

Netflix is well known for championing the microservice model, but within the complex layers of dependencies isa hidden service: the caching layer. The Netflix customer experience relies heavily on caches to provide a high-volume, low latency, globally available data layer that backs our stateless services. Throughout a typicalcustomer experience, from sitting down on the couch through playing a movie, caches play a role in everyinteraction. The use cases here range from session storage to video history to subscriber status, all of whichbenefit from the stability and fault tolerance of EVCache, the primary caching system in use at Netflix.

Page 24: Strange Loop 2016 Program

The second part of the talk will peek under the hood of EVCache and its open source components: the EVCacheclient library, Rend, Memcached, and the not-yet-open-source Mnemonic. We will also look at sister projects thatmake up the rest of the EVCache ecosystem within Netflix. All of these components combined make up a high-volume, low-latency persistence system that fits many different use cases, even some where a cache might notnormally be an obvious choice.

Scott Mansfield (@sgmansfield) - Netflix, Inc.

Scott Mansfield is a Senior Software Engineer at Netflix. He works on EVCache, a high-performance, lowlatency persistence system. He is the primary author of Rend, an open-source memcached proxy as a part ofEVCache. Outside of work, he spends time with his wife and daughter, works on an open-source web crawlernamed Widow, and hopes winter comes sooner so he can be skiing again.

If Gaudà Had a Cluster

Schedule: 2016-09-16 15:40 - 2016-09-16 16:20Room: CenteneFormat: TalksTrack: languages

Architects are tool builders. A famous example is the 20th century Spanish architect Antoni GaudÃ, who builtmeticulous physical models of his world-famous buildings like Sagrada Familia and Casa Batlló. Armed withonly rudimentary tools and manual calculations, Gaudà created buildings that still amaze people today. Imaginethough, what if he had a computer cluster at his fingertips?

At Flux we are designing a visual, flow-based programming environment to give architects access to the latestdevelopments in distributed computing. The goal is to enable modern GaudÃs to explore the vast extents of theirimaginations. In this talk we'll explore ups and downs of building a web-based visual programming environmentaimed at building designers. We'll also talk about the distributed execution system that backs it all.

Max Grigorev (@forwidur) - Independent

Max is an independent software engineer. He is working on a new way to process large amounts of data in realtime, efficiently. Prior to beginning that project, he was one of the developers of Flux, a distributed executionenvironment and flow-based programming language targeted at building architects. He started his career buildingsearch distributed systems at Google and continued at Airbnb. When not in front of a computer... ah, who are wekidding, he is always in front of a computer.

Jen Carlile (@jencarlile) - Flux Factory Inc.

Jen, cofounder of Flux, is a passionate software engineer working to help meet the world's demand for healthy,sustainable buildings. Her path to becoming a software engineer was a winding one that took her through theworld of experimental music, professional audio, and eventually to Google[X]. At Flux, Jen wants to empowerpeople to solve the world's most pressing problems related to urban population growth and climate change, andcreate beautiful designs in the process. She received her BA from Wellesley College and her MA/MST fromStanford University.

Exploring Conversational Interfaces with Amazon Alexa and Go

Schedule: 2016-09-16 15:40 - 2016-09-16 16:20Room: Midland States Bank

Page 25: Strange Loop 2016 Program

Format: TalksTrack: tools

Conversational interfaces are exploding in both development and use in 2016. Amazon's Alexa service and theirEcho are at the forefront of this exciting new interaction model but Microsoft, Facebook and others havelaunched conversational bots recently. Who knows, maybe even Apple and Google will let us develop on theirdueling voice assistant platforms soon!

These new platforms are challenging for developers both because of the platform diversity but also becauseconversational user interaction is very different than interacting with a GUI. What are the differences betweenthese platforms? What's the best way to get started? What kind of apps work well with conversational interfaces?What are some ways to make your app as human as possible?

I've created several Slack integrations, worked with the Facebook Messenger bots API, developed applicationson the Amazon Alexa service over the past year, and in 2015 I released go-alexa, a collection of libraries thathelp to create Alexa apps quickly in Go. In this talk we will cover the landscape of conversational applications,the major players and their platform strengths, some of the best practices I've learned, and walk through thecreation of a basic Alexa Skill in Go.

Mike Flynn (@thatmikeflynn) - Studio71

Mike Flynn is the Chief Technology Officer at Studio71, an online video network, and was previously aSoftware Architect at Answers.com, the author of a popular St. Louis blog, and a startup consultant. Whilecurrently writing a lot of Go for personal projects, Mike created Egg.js, a popular easter egg Javascript library,and has been an advocate for the Clojure language launching Clojure platforms for both Studio71 andAnswers.com. Originally from St. Louis, Mike now lives in the San Francisco Bay Area with his wife and twokids and spends way too much time in his home office trying to inch a little closer to the Tony Stark / JARVISnirvana we're all striving for.

Point-Free or Die: Tacit Programming in Haskell and Beyond

Schedule: 2016-09-16 15:40 - 2016-09-16 16:20Room: Peabody LoungeFormat: TalksTrack: languages

Tacit programming, or programming in the "point-free" style, allows you to define a function without referenceto one or more of its arguments. Thanks to automatic currying, point-free definitions can be easy to write inHaskell, OCaml, and F#.

But is point-free syntax just point-less? Ostensibly, tacit definitions can calibrate your code to the appropriatelevel of abstraction. But which level is most appropriate? When is a point-free definition better than its "pointed"variation? And when is it spectacularly worse?

Let's be explicit about tacit programming. Let's learn eta-reduction to produce it. Let's develop our intuition forits expressive power. Let's hunt for it in trusted libraries. Let's probe its origins in John Backus' function-levelprogramming. Let's see it amplified in Joy and J, languages designed for maximum quiet. Let's speak at length,about the unspoken.

Amar Shah (@amar47shah) - ShareProgress

Amar Shah is a web developer and a Haskell enthusiast. Outside of work, he loves delving into category theory,plumbing Hoogle, and extolling the virtues of parameterized type polymorphism to anyone who will listen.Amar has degrees in math and anthropology, and he has conducted research in ethnomusicology, the academic

Page 26: Strange Loop 2016 Program

study of musical culture. He lives with his wife and four-year-old daughter in Louisville, Kentucky, where heorganizes the local Haskell user group.

Practical data synchronization with CRDTs

Schedule: 2016-09-16 15:40 - 2016-09-16 16:20Room: Pepsi EncoreFormat: TalksTrack: distributed-systems

In a connected world, synchronising mutable information between different devices with different clockprecision can be a difficult problem. A piece of data may have many out-of-sync replicas but all of those shouldeventually be in a consistent state. For example, TomTom users, having personal navigation devices,smartphones, MyDrive website accounts, expect their navigation information be synchronised properly even inthe occasional absence of network connection. Conflict-free Replicated Data Types (CRDTs) provide robust datastructures to achieve proper synchronisation in an unreliable network of devices. They enable the conflictresolution being done locally at the data type level while guaranteeing the eventual consistency between replicas.In addition to an introduction to common CRDT types, the main focus is on the special subtype of CRDT-Setcalled OUR-Set (Observed, Updated, Removed), which we created to extend known CRDT sets with updatefunctionality. I will demonstrate basic implementations of various CRDTs in Scala and enumerate subtleconsiderations which should be taken into account. I will also explain the advantages of these data structures tosolve many synchronisation problems as well as their limitations.

Dmitry Ivanov (@idajantis) - TomTom

Dmitry is a senior software engineer at TomTom, Amsterdam. He has been obsessed with Scala language since2010 and is fascinated with all things related to Cloud, DevOps and building scalable distributed systems. Priorto joining TomTom, Dmitry worked on backend services in a few international startups (Reltio, AmbiqTech). Inhis spare time he is involved in organising various programming meetups around Amsterdam, and occasionallygives talks at those.

End-to-end encryption: Behind the scenes

Schedule: 2016-09-16 15:40 - 2016-09-16 16:20Room: TheaterFormat: TalksTrack: security

There is no cloud - it's just someone else's computer. And you're storing all sorts of sensitive data on it, blindlytrusting that this computer will only allow access to authorised users. What if it is compromised?

End-to-end encryption avoids having to trust the servers. Although PGP/GPG encrypted email never wentmainstream, secure messaging apps like WhatsApp, Signal and iMessage have shown that it is feasible formillions of people to use end-to-end encryption without being security experts.

But how do these protocols actually work? In this talk, we will dig into the details of secure messaging protocols- to understand the threats against which they defend, and how cryptographic operations are combined toimplement those defences in the protocol. If you have ever wondered what "forward secrecy" means, how keyexchange works, or how protocols can ensure you're communicating with the right person (not an impostor like a"man in the middle"), this talk will clear things up.

Page 27: Strange Loop 2016 Program

We will also look at taking end-to-end encryption to other areas beyond instant messaging. What would it take tobuild an end-to-end secure version of Google Docs, for example?

Martin Kleppmann (@martinkl) - University of Cambridge

Martin is a researcher at the University of Cambridge, working on the TRVE DATA project, and author of theO'Reilly book "Designing Data-Intensive Applications" (http://dataintensive.net), which analyses the datainfrastructure of internet companies. He previously founded and sold two startups, and worked on datainfrastructure at LinkedIn.

Diana Vasile (@dvasile7) - University of Cambridge

Diana is currently a PhD candidate at the University of Cambridge Computer Laboratory. Her research focuseson finding ways to decentralise the process of establishing trust, and she is currently experimenting withgossiping as a means of providing key transparency. In her spare time, she's worked at Flexiant, a cloudcomputing startup based in Scotland, but now spends most of that time with her family and her 2 year old son.

Humanities x Technology

Schedule: 2016-09-16 16:30 - 2016-09-16 17:20Room: TheaterFormat: KeynotesTrack: keynote

Ashley Nelson-Hornstein (@ashleynh) - Sound Off

Ashley Nelson-Hornstein is an iOS engineer, speaker, and avid blogger. She's also the co-founder of Sound Off,a non-profit that works to increase access marginalized people in tech have to professional spaces. Ashley fell inlove with the iOS platform while at Apple, and was most recently at Dropbox, where she worked on problems atscale and advocated for accessibility. These days, Ashley's exploring what it means to build impactful products.

Conference - September 17th, 2016

The Future of the Mobile Web

Schedule: 2016-09-17 09:10 - 2016-09-17 10:00Room: TheaterFormat: KeynotesTrack: keynote

Paul Kinlan (@Paul_Kinlan) - Google

Paul is a Developer Advocate on the Google Chrome team helping his fellow developers succeed on the MobileWeb. He specializes in Mobile Web Development, Web Standards, Google Chrome, and Chrome OS. He'scurrently working on improving web performance on mobile. He once did this thing called Web Intents thatsomeday will change the web for good.

Deep dive into Unbounded Data Processing Systems

Page 28: Strange Loop 2016 Program

Schedule: 2016-09-17 10:10 - 2016-09-17 10:50Room: CenteneFormat: TalksTrack: distributed-systems

The need for gleaning answers from data in real-time is moving from nicety to a necessity. There are few optionsto analyze the never-ending stream of unbounded data at scale. Let's compare and contrast the core principlesand technologies the different open source solutions available to help with this endeavor, and where in the futureprocessing engines need to evolve to solve processing needs at scale.

These findings are based on of our experience of building and continuing to build a scalable solution in the cloudto process over 700 billion events at Netflix, and how we have embark on the next journey to evolve unboundeddata processing engines.

Monal Daxini (@monaldax) - Netflix Inc

Monal Daxini is a Senior Software Engineer at Netflix building a scalable and multi-tenant event processingpipeline. He has worked on Netflix's Cassandra & Dynamite infrastructure, and was instrumental in developingthe encoding compute infrastructure for all Netflix content. He has 15 years of experience building scalabledistributed systems at organizations like Netflix, NFL.com, and Cisco.

How Rocket Science Can Help You Build Your App

Schedule: 2016-09-17 10:10 - 2016-09-17 10:50Room: Midland States BankFormat: TalksTrack: etc

For over half a century, NASA has been building, launching, and operating space missions where failure is notan option. NASA's track record of success is due in part to the standards and practices of the missiondevelopment cycle that emphasize extensive planning and project risk mitigation through advance design.Though space missions can span over a decade and dozens of subsystems, the principles that have producedmission success can also be used to improve outcomes of small-scale software development projects.Specifically heritage review, trade studies, success metrics, requirement development and their traceability tosuccess, and critical review can be readily applied to mitigate project risks and ensure product delivery onschedule and budget.

This talk summarizes how NASA flight projects are executed in the project and mission design phases, howthese principles were applied in the development of Nanaya, a web app built in Django/Python/Postgres that usesmathematical modeling to predict the future of users' love and social lives, and the lessons that were learned inthe process.

Rashied Amini - Nanaya

Rashied Amini is the Founder/CEO of Nanaya, a web app that uses mathematical modeling and big data toscientifically predict users' love and social lives. Rashied is also a NASA JPL systems engineer currently onleave as he completes his PhD in Physics at Washington University in St. Louis. At NASA JPL he was systemsengineer of DINET, a flight project that was the first implementation of interplanetary internet, lead of missionanalysis of NASA's nuclear power office, and principle investigator of numerous space mission architecture,technology, and planetary science studies. His dissertation at Washington University presents a new model of thehigh energy environment at small atmospheric depths.

Page 29: Strange Loop 2016 Program

Build your child their very own Node.js Frozen bot

Schedule: 2016-09-17 10:10 - 2016-09-17 10:50Room: Peabody LoungeFormat: TalksTrack: etc

Gabrielle Crevecoeur dives into the world of NodeBots. Using Node.js, the Node Robotics frameworks, and anArduino, Gabrielle walks participants through creating a bot, step by step. Although the NodeBot you build willrespond to voice recognition, you'll leave able to create NodeBots with any functionality you like.

Gabrielle Crevecoeur (@nowayshecodes) - Microsoft.com

Gabrielle Crevecoeur is a technical evangelist at Microsoft specializing in open source development. Her currentfocus is Node.js. Gabrielle is a recent graduate of Florida State University, where she majored in computerscience. She plans to pursue a master's in electrical engineering in the near future. When Gabrielle is notprogramming, you can find her playing video games or watching Netflix.

Commander: Better Distributed Applications through CQRS and Event Sourcing

Schedule: 2016-09-17 10:10 - 2016-09-17 10:50Room: Pepsi EncoreFormat: TalksTrack: architecture

Have you ever hit a wall with REST? Does modeling your problem domain into CRUD-able entities feel likefitting a square peg into a round hole? Perhaps instead of modeling our services like little databases, we shouldinstead model them like reactors over immutable event streams.

REST APIs are great, but their typical implementation tightly couples various concerns that would be betterseparated:

Reads (perception) with writes (action)Current state with historical narrativeBusiness logic with HTTP request processing, and with operational concerns like metrics and monitoring

Commander is:

1. A pattern for writing distributed applications that de-couples these concerns using ideas from CQRS andEvent Sourcing, thereby alleviating common frustrations with CRUD-flavored REST

2. An implementation of the core component in this pattern using Clojure in the HTTP layer, using Java withthe new Kafka Streams library in the event stream processing layer, and using Datomic for persistence

The Commander pattern imposes a clear separation of action from perception, and uses immutable valuesconveyed by Kafka and the Kafka Streams library to separate business logic from HTTP request processing, allwhile preserving the historical narrative of the entire event stream.

In this talk, I'll discuss the benefits and tradeoffs of applying this pattern in an enterprise context, anddemonstrate my implementation under load.

Bobby Calderwood (@bobbycalderwood) - Capital One

Bobby is a member of the Technology Fellows team at Capital One, where he designs and develops solutions todifficult problems, influences the technical direction of Capital One while helping development teams implement

Page 30: Strange Loop 2016 Program

that technical direction, and engages the broader technical community via speaking and open-sourcecontribution.

Prior to joining Capital One, Bobby was Director of Product Engineering at B23 LLC, a startup working onenabling big data solutions in cloud environments. Before B23, Bobby worked on the Product Team at Cognitectbuilding, testing, and helping customers win with Datomic.

Bobby's been writing web applications and distributed systems with Clojure and ClojureScript since 2010, andbefore that in Java, Ruby and Rails, and client-side techs since 2006.

GraphQL: Designing a Data Language

Schedule: 2016-09-17 10:10 - 2016-09-17 10:50Room: TheaterFormat: TalksTrack: languages

GraphQL is a static-strong-typed application data query language and runtime designed and used at Facebook torequest and deliver data to mobile and web apps since 2012, and was redesigned prior to being open sourced in2015. GraphQL delivers nearly all data for Facebook's primary iOS and Android apps, replacing our use ofREST endpoints.

This talk will briefly introduce GraphQL, the motivations for starting the project, and its impact on server andclient code architecture at Facebook. Then, we will dive deeper into the design process of creating a new querylanguage, from GraphQL experimental beginnings to lessons learned from years of use in production and thenacting on those lessons for a full redesign before the recent open sourcing.

Lee Byron (@leeb) - Facebook

Lee has been making things at Facebook since 2008, first as a Product Designer and more recently as a SoftwareEngineer working in Obj-C, Hack (PHP), and JavaScript. He helped define React's component model API beforeit was open sourced in 2012, the layout API of ComponentKit for iOS, is the author and maintainer ofImmutable.js, a collection of Persistent Immutable data structures with JavaScript-friendly methods, and wasboth a co-creator of the original version of GraphQL in 2012, and the primary author of the redesigned GraphQLlanguage recently open sourced in 2015.

Let's Build a Hygienic Macro Expander

Schedule: 2016-09-17 11:00 - 2016-09-17 11:40Room: CenteneFormat: TalksTrack: languages

Although the idea of hygienic macro expansion appeals to many programmers, the details of hygienic expansionhave scared away many language implementors. In fact, in the same way that lexical scope used to seem exoticand difficult to implement compared to dynamic scope---at least, until its implementation via closures becamewidely understood---the extra dimension of "macro scope" can seem mysterious. Historically, dynamic scopeseemed obvious, because it involves a linear sequence of bindings, while lexical scope demands animplementation that matches the two-dimensional nature of nested expressions. Macro scope demands yetanother dimension to binding.

Page 31: Strange Loop 2016 Program

This talk aims to dispel the mystery of hygienic expansion: first, through a new explanation of macro scope

based on "scopes sets"; and second, by walking through the implementation of a macro expansion using scope-

sets.

Matthew Flatt - Racket and University of Utah

Matthew Flatt is a professor in the School of Computing at the University of Utah, where he works on extensible

programming languages, run-time systems, and applications of functional programming. He is one of the

developers of the Racket programming language.

African Polyphony & Polyrhythm

Schedule: 2016-09-17 11:00 - 2016-09-17 11:40

Room: Midland States Bank

Format: Talks

Track: etc

Ethnomusicologists face a dilemma: either shoehorn African music into European notation, or create custom

DSLs that can only be understood by a select band of European ethnomusicologists. Algomusicologists can

solve this problem, because we have principled ways of modelling specific idioms in terms of general

computation. What's more, our models can be executed to generate actual music.

Simha Arom is a French-Israeli ethnomusicologist. In the book from which the title of this talk is borrowed, he

describes the principles underlying the musical system of traditional central African polyphony and polyrhythm.

Arom invented ingenious recording techniques for deconstructing and systematising musical cultures that had no

previous tradition of musical theory. He tested his models by using them to recreate music and inviting central

African musicians to critique the results.

This talk will argue that music-as-code is an ideal way to represent Arom's insights. I will show the full truth in

the Lévi-Strauss quote with which Arom prefaces his book: "The proof of the analysis is in the synthesis."

Programming has played its part in the homogenisation of global culture, but the universality of the lambda

calculus also affords a golden opportunity for code to become a point of interchange between formerly

incompatible musical systems.

Chris Ford (@ctford) - ThoughtWorks

Chris is a certified BABE (Bachelor of Arts, Bachelor of Engineering), and consequentially an idiophile and

technophobe. He began to make music with code partly to compensate for his poor technique, and partly because

air piano is unsatisfying. When he works, he works for ThoughtWorks, though that isn't all the time.

"go test -race" Under the Hood: An inside scoop on a tool that dynamically detects racy

memory accesses

Schedule: 2016-09-17 11:00 - 2016-09-17 11:40

Room: Peabody Lounge

Format: Talks

Track: tools

Writing correct concurrent code is hard. Debugging incorrect concurrent code is even harder. The Go race

detector, introduced in Go version 1.1, is one cool tool that makes both easy to do in Go programs.

Page 32: Strange Loop 2016 Program

Race conditions are arguably the most elusive programming errors, so how does a tool that detects these across

programs operate under the hood? In the case of the Go race detector, with compiler instrumentation of the

program and a run-time library that watches for "racy" memory accesses. 

This talk will delve into the internals of the data race detector - both the instrumentation by the compiler and the

happens-before algorithm implemented by the run-time module to detect data races. We will touch upon how the

alternative to such a dynamic data race detector - a static data analyzer - differs in design, and the pros and cons

of each approach.

Kavya Joshi

Kavya Joshi is a software engineer at a start-up in San Francisco. She helps build their core software and scale

their systems. In her free time, she runs a paper reading group (http://nylas.github.io/paper-reading-group/)

and climbs rocks too.

Before moving to San Francisco to be an Adult, Kavya was at MIT where she got a Bachelor's and Master's in

Computer Science.

Lies, Damn Lies, and Metrics

Schedule: 2016-09-17 11:00 - 2016-09-17 11:40

Room: Pepsi Encore

Format: Talks

Track: data

Metrics are great, and measuring things can provide tremendously useful insights. But there's a problem: metrics

lie to you. Metrics just report the numbers that were measured. Analyzing those numbers is up to us, and that

analysis can go wrong in so, so many ways. Learn how to arm yourself against human intuition, interpreter

pauses, routing, instrumentation lag, and other issues. Don't get so caught up in instrumenting that you lose sight

of why metrics exist! Make sure your metrics are telling you actionable information, instead of just accurate

numbers.

André Arko (@indirect) - Cloud City

André thinks Ruby is pretty neat. He leads the Bundler team, co-authored the third edition of The Ruby Way, and

founded Ruby Together, the Ruby trade association. At his day job, he provides expert development,

architecture, and teaching through Cloud City Development in San Francisco.

Exotic Functional Data Structures: Hitchhiker Trees

Schedule: 2016-09-17 11:00 - 2016-09-17 11:40

Room: Theater

Format: Talks

Track: data

Functional data structures are awesome--they're the foundation of many functional programming languages,

allowing us to express complex logic immutably and efficiently. There is one unfortunate limitation: these data

structures must fit on the heap, limiting their lifetime to that of the process. Several years ago, Datomic appeared

as the first functional database that addresses these limitations. However, there hasn't been much activity in the

realm of scalable (gigabytes to terabytes) functional data structures.

Page 33: Strange Loop 2016 Program

In this talk, we'll first review some of the fundamental principles of functional data structures, particularly trees.Next, we'll review what a B tree is and why it's better than other trees for storage. Then, we'll learn about a coolvariant of a B tree called a fractal tree, how it can be made functional, and why it has phenomenal performance.Finally, we'll unify these concepts to understand the Hitchhiker tree, an open-source functionally persistentfractal tree. We'll also briefly look at an example API for using Hitchhiker trees that allows your application'sstate to be stored off-heap, in the spirit of the 2014 paper "Fast Database Restarts at Facebook".

David Greenberg (@dgrnbrg)

David Greenberg loves learning new things with Clojure. His desire to learn has lead him to study Russian, andhe enjoys practicing cooking techniques. Besides Clojure, he's interested in high performance software anddistributed systems with Mesos. He's the author of the O'Reilly book "Building Applications on Mesos" and thedesigner of Cook, a Mesos framework written in Clojure and Datomic which coordinates containers to optimizetask scheduling. David is currently an independent consultant.

Languages for 3D Industrial Knitting

Schedule: 2016-09-17 12:50 - 2016-09-17 13:30Room: CenteneFormat: TalksTrack: etc

Industrial computer-controlled knitting machines are churning out seamless three-dimensional fabric objects asyou read this -- think gloves, sweaters, sportswear, furnishings, architectural fabrics, and plushies. But right nowthe programming languages for these machines are terrible.

With a knitting machine, complex structures are formed with a very limited set of low-level machine operations.Thinking on the level of those machine operations becomes untenable pretty quickly when you start trying tomake real objects. How can we ensure knittability? Can we encode constraints in an understandable way? Canwe optimize production speed?

We'll look at several ways to describe knit structures and generate machine instructions for their fabrication,including both the delightfully arcane language that ships with the machine and the language from ourSIGGRAPH 2016 technical paper, "A Compiler for 3D Machine Knitting."

Lea Albaugh (@doridoidea) - Disney Research

Lea builds things in a wide variety of digital and physical media. She works in the Textiles Lab of DisneyResearch Pittsburgh.

Are DDoS attacks a threat to the decentralised internet?

Schedule: 2016-09-17 12:50 - 2016-09-17 13:30Room: Midland States BankFormat: TalksTrack: security

DDoS attacks often grab the headlines when they take down an important website. Sadly, DDoS experts usuallykeep the attack information to themselves. All the DDoS mitigation resources are centralized in a hands of a fewlarge DDoS mitigation vendors. Without the details internet operators are unable to distinguish a real dangerfrom an empty threat.

Page 34: Strange Loop 2016 Program

At CloudFlare we deal with DDoS attacks every day and over the years we've gained a lot of experience. While

some of our DDoS defenses require significant investment - e.g. buying more network capacity - many

mitigations can be implemented in software.

In this talk we'll discuss what we learned about the L3 (Layer 3 OSI stack) IP spoofing.

We'll explain why L3 attacks are even possible in today's internet, what a direct L3 attack may look like and how

it is different from a reflected attack. We'll describe our attempts to trace IP spoofing and why the attribution is so

hard.

Our architecture allows us to perform attack mitigations in software. We'll explain a couple of effective L3

mitigations techniques we've learned over the years.

While L3 attacks are a real danger to the internet operators, they don't need to be. With a bit of cooperation and

couple of technical tricks maybe we can finally save the internet and fix the IP spoofing problem for all.

Marek Majkowski - CloudFlare

After fruitful encounters with such diverse topics as high performance key value databases, distributed queueing

systems, making real time web communication enjoyable, and accelerating the time so that testing servers and

protocols takes seconds, Marek Majkowski finally settled for working on DDoS mitigation in the CloudFlare

London office, where he appreciates most the parking space for his motorbike.

Tezos, decentralized cryptographic governance through self-amendments

Schedule: 2016-09-17 12:50 - 2016-09-17 13:30

Room: Peabody Lounge

Format: Talks

Track: distributed-systems

We present Tezos, a generic and self-amending crypto-ledger which can instantiate any blockchain based ledger.

The operations of a regular blockchain are implemented as a purely functional module abstracted into a shell

responsible for network operations. Bitcoin, Ethereum, etc. can all be represented within Tezos by implementing

the proper interface to the network layer. Most importantly, Tezos supports meta upgrades: the protocols can

evolve by amending their own code. To achieve this, Tezos begins with a seed protocol defining a procedure for

stakeholders to approve amendments to the protocol, including amendments to the voting procedure itself. This

is not unlike philosopher Peter Suber's Nomic, a game built around a fully introspective set of rules. In addition,

Tezos's seed protocol is based on a pure proof-of-stake system and supports Turing complete smart contracts.

Tezos is implemented in OCaml, a powerful functional programming language offering speed, an unambiguous

syntax and semantic, and an ecosystem making Tezos a good candidate for formal proofs of correctness.

Arthur Breitman (@arthurb) - DLS

I recently started working in the self-driving car division at X (formerly Google X). Prior to that, I worked as a

statistician for ten years in the financial industry at small hedge funds and large banks alike. I originally hail from

France, but spent ten years in New York prior to moving to California.

Poetry (almost) From Scratch - Teaching versification to a neural network

Schedule: 2016-09-17 12:50 - 2016-09-17 13:30

Room: Pepsi Encore

Page 35: Strange Loop 2016 Program

Format: TalksTrack: etc

Poetry can take many forms but could be defined as a delicate balance between constraints and expression.Computers are pretty good at constraints, less so at expression.

The general problem of cracking the structure and meaning of a text has been one of the goals of linguistics, andNatural Language Processing. This had first been addressed in a reductionist way, by decomposing a sentence,counting, matching then, later, by learning from evidence and statistics. Or, as it has been shown, lately to bemore and more effective, by training neural networks with a minimal set of assumptions - as was shown by theseminal paper "Natural Language Processing (almost) from Scratch".

In this talk we'll see how to follow these techniques to spot poetry in unlikely textual places, or generate it(almost) from scratch, using a minimal set of assumptions, hoping for the meter and rhyme rules to emerge.Along the way we'll touch on topics such as the impossible definition of poetry and the tension between simple,classical rules, and deep learning models that can defy interpretation.

Yann Schwartz (@abolibibelot) - Criteo

My day job and interests revolve around distributed systems that stream buckets of bytes, most recently toperform anomaly and fraud detection at a French Ad Retargeting Company. My other interests often revolvearound streams of characters, from books to NLP. My greatest achievement - and failure - was taking a sabbaticalto write a novel on a remote island, and ending up making a zombie movie instead.

Building a Distributed Task Scheduler With Akka, Kafka, and Cassandra

Schedule: 2016-09-17 12:50 - 2016-09-17 13:30Room: TheaterFormat: TalksTrack: distributed-systems

Dynamically scheduled tasks are at the heart of PagerDuty's microservices. They deliver incident alerts, on-callnotifications, and manage myriad administrative chores. Historically, these tasks were scheduled and run usingan in-house library built on Cassandra, but that solution had begun to show its age.

Early in 2016, the Core team at PagerDuty built a new Task Scheduler using Akka, Kafka, and Cassandra. Aftersix weeks in development, the Scheduler is now running in production. This talk discusses how the strengths ofthe three technologies were leveraged to solve the challenges of resilient, distributed task scheduling.

This talk will present a number of distributed system concepts in the real-world context of the Scheduler project.How can you dynamically adjust for increased task load with zero downtime? Can you guarantee task orderingacross many servers? Do your tasks still run when an entire datacenter goes down? What happens if your tasksare scheduled twice? Attendees can expect to see how all of these challenges were addressed.

Some familiarity with distributed queueing and actor systems will be helpful for attendees of this talk.

David van Geest (@DWvanGeest) - PagerDuty

As a Software Engineer on the Core Team at PagerDuty, David works on mad-scientist projects designed toincrease the capacity and flexibility of other engineering teams. Mostly this means writing libraries, defining bestpractices, and maintaining shared infrastructure.

David lives in Toronto; he enjoys playing board games, cooking, and installing Linux on everything. You canusually find him cycling about the west end, or hiking with his incredibly fluffy dog.

Page 36: Strange Loop 2016 Program

Tulip: A Language for Humans

Schedule: 2016-09-17 13:40 - 2016-09-17 14:20

Room: Centene

Format: Talks

Track: languages

There are a lot of competing ideas about what makes a language "good". This is because we as language

designers still have no idea what we're doing. The design of Tulip is based on careful study of a wide variety of

popular and esoteric programming languages over about 4 years. Its runtime takes cues from Erlang, and its

syntax is slightly like ML, but with a few key innovations designed for repl ergonomics. Tulip is one of the new

languages to come out of the language community Snek, emphasizing languages by minority designers and

implementers.

Sig Cox (@sigfig)

Sig is a cute compiler witch. She loves types and optimization and process calculi is dedicated to mastering their

magic. She makes tulip compile and tweets constantly (@sigfig).

Jeanine Adkisson (@jneen_)

Jeanine loves languages. She spends most of her time thinking about language design, the pros and cons of

different approaches, from a human-centric perspective. She designed tulip as well as a few smaller languages

here and there, and she hosts an emerging languages discussion group called Snek.

Unlimited Register Machines, Gödelization and Universality

Schedule: 2016-09-17 13:40 - 2016-09-17 14:20

Room: Midland States Bank

Format: Talks

Track: etc

Lot's of people know about Turing Machines and the Lambda Calculus and that they both can express any

computable function, but often don't really understand what that means. An Unlimited Register Machine is a

simple model of a computer, still quite idealised, that is turing equivalent also.

The philosopher Dan Dennett, in his book Intuition Pumps and Other Tools For Thinking, devotes a rather large

section to URMs titled The Seven Secrets Of Computing Power Revealed. The hope is that by simulating the

simplest possible register machine and building up to complex algorithms you can understand what it means to

compute.

In the talk I treat math(s) and 'programming' as equal citizens in terms of explaining the idea and end with an

easy to understand concrete implementation of a Universal URM (via a neat way of Gödelizing programs, ie

turning them into numbers)

Tom Hall (@thattommyhall) - The Department Of Binary Affairs

Mathematician, theatre fan, occasional mountaineer, part time runner, thoroughly nice chap. Available in fine

bookstores everywhere.

The Zen of High Performance Messaging with NATS

Page 37: Strange Loop 2016 Program

Schedule: 2016-09-17 13:40 - 2016-09-17 14:20Room: Peabody LoungeFormat: TalksTrack: distributed-systems

NATS is an open source, high performant messaging system with a design oriented towards both being as simpleand reliable as possible without at the same time trading off scalability. Originally written in Ruby, and thenrewritten in Go, a NATS server can nowadays push over 11M messages per second.

In this talk, we will cover how following simplicity as the main design constraint as well as focusing on a limitedbuilt-in feature set, resulted in a system which is easy to operate and reason about, making up for an attractivechoice for when building many types of distributed systems where low latency and high availability are veryimportant.

Waldemar Quevedo Salinas (@wallyqs) - Apcera

Waldemar Quevedo is a Senior Software Engineer at Apcera, where he develops the Apcera Trusted Platformand is part of the NATS team. Previously, he formed part of the PaaS team at Rakuten in Tokyo which was oneof the early adopters of Cloudfoundry for production usage where he experienced operating NATS for the firsttime, and became a fan of its simplicity.

Rusty Runtimes: Building Languages In Rust

Schedule: 2016-09-17 13:40 - 2016-09-17 14:20Room: Pepsi EncoreFormat: TalksTrack: languages

Until recently making a compiler from scratch that produced fast native executables with a well-tuned garbagecollector meant getting really comfy with C. Rust has risen to the top of the heap as a developer-friendly systemsprogramming language that allows the same degree of control as C but is much more expressive and sports aninnovative type system that avoids the pitfalls of pointer arithmetic. Surprisingly though it hasn't seen muchuptake among language implementors. This talk will present a compiler for a small, garbage-collected Scheme-like language written entirely in Rust. It will explore the pros and cons of using Rust for language developmentand show benchmarks comparing the garbage collector and runtime up with similar well-known languageswritten in C.

Aditya Siram (@deech)

I work as a Scala developer by day, but write Haskell, Shen, C, Rust and ATS by candlelight. My latest passion islanguages like Rust and ATS that use sophisticated type systems that allow safe memory access and high levelabstractions over unboxed data structures.

Changing the engine in flight: rebuilding monitoring at scale

Schedule: 2016-09-17 13:40 - 2016-09-17 14:20Room: TheaterFormat: TalksTrack: distributed-systems

What do you do when you outscale your monitoring systems, and need to upgrade -- while keeping the lights on24/7 around the world? This talk will walk through the ins and outs of architecting a real-time data processing

Page 38: Strange Loop 2016 Program

architecture from the ground up in order to handle critical, high-traffic monitoring load across a distributedbackend, along with several war stories of where it went well, failed horribly, and saved our bacon.

Prepare for a magical mystery tour of distributed delights, diving into real-time pipeline architectures andbuilding Go-based microservices. We'll cover how interoperability contracts, dynamic configuration and servicediscovery allow you to develop and operate at speed, plus how this all fits on top of a rock-solid foundation ofKafka with ElasticSearch. You'll leave armed with a toolbox of ideas to build and monitor your ownmicroservice-based ecosystem.

Jennie Lees (@jennielees) - Riot Games

Jennie is a software engineer at Riot Games, where she focuses on making it easy for Riot engineers to ship andoperate player-facing features for League of Legends. Her career spans Google, Microsoft and several SiliconValley startups, where she's worn hats ranging from product manager to CTO. When she's not playingvideogames, you'll find her helping teach people to code.

Sketch-n-Sketch: Interactive SVG Programming with Direct Manipulation

Schedule: 2016-09-17 14:30 - 2016-09-17 15:10Room: CenteneFormat: TalksTrack: tools

Programmatic and direct manipulation systems have distinct and complementary strengths, but users musttypically choose one over the other or use some ad-hoc combination of systems. As an attempt to bridge thisdivide, we are developing an interactive programming system called Sketch-n-Sketch for creating ScalableVector Graphics.

Sketch-n-Sketch offers a high-level, functional programming language paired with GUI-based tools formanipulating program output: these tools help to encode user intent by semi-automatically rewriting the programwith new relationships, and help to preserve existing relationships in the program when output values are directlymanipulated. The resulting workflow allows for prototyping a design much like in typical GUI-based tools andthen iteratively adding more structure to the program with guidance from the system.

In this talk, we will demo Sketch-n-Sketch, describe our approaches to the technical challenges, and discussideas for combining programmatic and direct manipulation in other settings.

Ravi Chugh (@ravi_chugh) - University of Chicago

Ravi Chugh is an Assistant Professor of Computer Science at the University of Chicago. Ravi's research interestsinclude developing and deploying programming language technology for applications in software engineeringand human-computer interaction. Currently, his primary research obsession is to develop new kinds of userinterfaces that allow people (programmers and non-programmers alike) to be more productive and creative. In2015, Ravi received a Neubauer Faculty Fellowship for innovative and effective undergraduate teaching, as wellas a College Research Fellows award to support undergraduate research. Before moving to Chicago, Ravi earnedhis Ph.D. at UC San Diego, as well as master's and bachelor's degrees from the University of Pennsylvania. Moreinfo about Ravi's research, teaching, and programming interests can be found on his website.

Kittens - datatype-generic functional programming with Scala

Schedule: 2016-09-17 14:30 - 2016-09-17 15:10Room: Midland States Bank

Page 39: Strange Loop 2016 Program

Format: TalksTrack: languages

Kittens is a proof of concept library built on top of shapeless[1] and cats[2] as an experiment of combininggeneric and functional programming. It can help Scala programs achieve higher flexibility with datatypeswithout compromising safety. Through several example projects using kittens, this talk will provide a peek at thepower of datatype generic functional programming.

[1] shapeless github.com/milessabin/shapeless [2] cats github.com/typelevel/cats

Kailuo Wang (@kailuowang) - iHeartMedia Inc.

Kailuo Wang is a software engineer at iHeartRadio where he's building a microservice platform using opensource scala technologies such as akka, cats and shapeless. He is passionate about building open source software,film photography and free learning through open courses. Projects he contributes to as a maintainer includestypelevel/cats, milessabin/kittens, iheartradio/ficus, iheartradio/kanaloa and iheartradio/play-swagger.

Knit, Chisel, Hack: Building Programs in Guile Scheme

Schedule: 2016-09-17 14:30 - 2016-09-17 15:10Room: Peabody LoungeFormat: TalksTrack: languages

This talk makes the case that Guile is a delightful medium for making crafty programs, from the most ephemeralscripts to long-lived systems that you can rely on for years. Guile takes the elegant Scheme programminglanguage, integrates it with the POSIX environments that you know and loathe and love, and wraps it all up in aresponsive, hackable environment that nurtures programs from the small up to the large. Guile hacker will giveyou a gentle introduction to the language as they lead you through the process of building cool stuff in Scheme.With all this going for it, maybe you will choose to make your next program in Guile!

Andy Wingo (@andywingo) - Igalia

Andy loves programming languages and programming language implementations, and has co-maintained GuileScheme for some 7 or 8 years now. He has also contributed to the V8 and SpiderMonkey JavaScriptimplementations, and wrangles LuaJIT at work to build high-performance software switches. When he's nothacking, you'll find him out in the garden trying to keep the sparrows from eating his peas.

Frontiers in Cryptography

Schedule: 2016-09-17 14:30 - 2016-09-17 15:10Room: Pepsi EncoreFormat: TalksTrack: security

Cryptography is an ancient idea, but modern approaches which draw from deep mathematics and have onlystarted to pop up in the past decade. This talk will provide a broad survey of approaches for acting on encrypteddata without holding a private key to the data, including property-preserving encryption, searchable symmetricencryption, functional encryption, and homomorphic encryption. It will also provide a historical context for thedevelopment of cryptography, addressing such questions as whether cryptography is "discovered" or "invented",what algorithms extraterrestrial cryptographers might use, and whether we can create encrypted Turing-completeprograms which act only on ciphertexts.

Page 40: Strange Loop 2016 Program

Tony Arcieri (@bascule) - Square Inc

Tony Arcieri (@bascule) is a post-cypherpunk specializing in access control systems, encrypted databases, andtransparency protocols

Building a Distributed Build System at Google Scale

Schedule: 2016-09-17 14:30 - 2016-09-17 15:10Room: TheaterFormat: TalksTrack: distributed-systems

It's hard to imagine a modern developer workflow without a sufficiently advanced build system: Make, Gradle,Maven, Rake, and many others. In this talk, we'll discuss the evolution of build systems that leads to distributedbuild systems. Then, we'll dive into how we can build a scalable system that is fast and resilient, with examplesfrom Google. We'll conclude with the discussion of general challenges of migrating systems from onearchitecture to another.

Aysylu Greenberg (@aysylu22) - Google

Aysylu Greenberg works at Google on its distributed build system. In her spare time, she ponders the design ofsystems that deal with inaccuracies, paints and sculpts.

How would a Panda program computers?

Schedule: 2016-09-17 15:40 - 2016-09-17 16:20Room: CenteneFormat: TalksTrack: languages

It's 2016, but our approach to programming isn't much different from 1976. It's characterized by text in files,syntax errors, bugs, and documentation on the side. The feedback cycle may be smaller but fundamentally ithasn't changed much. We can do better. Panda gets away from loops, ifs, mutable objects by operating onstreamed data. Using a system which knows what you can do next programming is like a dialogue. Ultimately,we'd replace most simple programming tasks by just selections through an adoptive touch UI.

Panda is a reactive concurrent streamed-evaluated object-oriented functional based distributed language system.It avoids obsessing about types, math, and recursions, is instantly parsed into a typed cost-aware datalog thatcompiles to javascript. Expressions are cheap lightweight concurrent processes. Like Erlang, these together withglobal messaging forms the basis of distributed computing platform. If persisted, messages form an implicitevent sourced data storage, with built-in key-value indices. On this, a simple integrated wiki-style code editor,stores and shares functions online. 10 lines implements a simple distributed web-based real-time chat.

Jonas S Karlsson - Consulting

Jonas S Karlsson likes spoken languages as well as programming languages, he implemented his first forthinterpreter when he was 15, a smalltalkish-pascal interpreter, various lisps, but most he likes to use and furtherideas from database systems research and create programming languages from this. He's done research inSweden on main-memory object-oriented databases and at the CWI National Research Center in Amsterdam.His PhD is on scalable distributed highly parallel storage servers. At Google he built "the google database" thatpowers and let apps scale (underlying Google App Engine, Google's cloud, and many user-facing applications),and made Google Wave scale reliably.

Page 41: Strange Loop 2016 Program

How to bring open source to a closed community

Schedule: 2016-09-17 15:40 - 2016-09-17 16:20Room: Midland States BankFormat: TalksTrack: etc

This past year, I've been testing out ways to bring more open source to the academic research space. It hasn'tbeen easy -- the research world is full of competition, private data and a cutthroat need to publish. However, wefound some open source champions, invested in them through workshops, summits and ongoing one on onementorship as they learn to work openly on their research. In this talk, I'll share some of the lessons learnedbuilding an open source movement in academia.

Abigail Cabunoc Mayes (@abbycabs) - Mozilla

Abigail Cabunoc Mayes (@abbycabs), is the Lead Developer of the Mozilla Science Lab, an initiative of theMozilla Foundation transforming science on the web. She has led development on various open source scienceprojects such as Contributorship Badges for Science and WormBase. Before joining Mozilla, Abby worked as abioinformatics software developer at the Ontario Institute for Cancer Research and at Michigan State University.With a background in bioinformatics and computer science, she builds tools that use the web to move scienceforward.

Wikimedia Content API: A Cassandra Use-case

Schedule: 2016-09-17 15:40 - 2016-09-17 16:20Room: Peabody LoungeFormat: TalksTrack: distributed-systems

The Wikimedia Foundation is a non-profit and charitable organization driven by a vision of a world where everyhuman can freely share in the sum of all knowledge. Each month Wikimedia sites serve over 18 billion pageviews to 500 million unique visitors around the world.

Among the many resources offered by Wikimedia is a public-facing API that provides low-latency,programmatic access to full-history content and meta-data, in a variety of formats. Commonly, results from thissystem are the product of computationally intensive transformations, and must be pre-generated and persisted tomeet latency expectations. Unsurprisingly, there are numerous challenges to providing low-latency storage ofsuch a massive data-set, in a demanding, globally distributed environment.

In this talk, we will cover the Wikimedia content API, and it's use of Apache Cassandra, a massively-scalabledistributed database, as storage for a diverse and growing set of use-cases. Trials, tribulations, and triumphs, ofboth a development and operational nature will be discussed.

Eric Evans (@jericevans) - Wikimedia Foundation

Eric has more than a decade of experience with the engineering and operations of large-scale distributed systems.An early employee of Rackspace, he implemented a global DNS infrastructure utilizing IP anycast (possibly thefirst), and a novel data-center-wide IDS for which a patent was awarded. An avid open source hacker, Eric is adeveloper with the Debian Project and a member of the Apache Cassandra PMC. He resides in Texas and is aSenior Software Engineer for the Wikimedia Foundation.

Page 42: Strange Loop 2016 Program

Runtime scheduling: theory and reality

Schedule: 2016-09-17 15:40 - 2016-09-17 16:20Room: Pepsi EncoreFormat: TalksTrack: concurrency

Whether you're using plain old OS threads or a userspace threading model, understanding the subtleties ofscheduling and how it affects parallel programs can be tricky. As systems and performance engineers, there aremany questions we can ask:

Can we quantify the tradeoffs between native threads and green threads? How expensive are context switchesreally? How can a scheduler trade off throughput and latency? How should we evaluate scheduler performance?And what do we really mean by performance, anyways?

Let's talk about the essentials of scheduling in the Linux kernel, and then take a deep dive into the schedulersimplemented in the Erlang and Go runtimes. We'll compare the design decisions they make, and get an idea ofthe fundamentals of scheduler design. Along the way, we'll discuss those questions, and explore how we canactually analyze scheduler behavior in action.

Eben Freeman - Unaffiliated

Eben is a software engineer with a math background, based in San Francisco. He thinks exploring softwareperformance is cool, because it's a great proxy for understanding how systems actually work.

Reproducibility

Schedule: 2016-09-17 15:40 - 2016-09-17 16:20Room: TheaterFormat: TalksTrack: etc

Why do some tools continue to reward mastery after years of use, while others seem to become clunkier as welearn them? One answer is that rewarding tools often display reproducibility: given the same inputs, the toolalways does the same thing. Reproducibility lets us build clear mental models of the tool's behavior. We learn to"think in Git", for example, rather than simply guessing at a command or function call and puzzling over theresults.

Git, React, and Bundler all rely deeply on reproducibility. As three quick examples: Git will produce the samehash for a file committed on two different machines; React relies on component functions re-rendering the samevirtual DOM when called multiple times; and Bundler's entire purpose is to reliably reproduce package lists andinstalled package sets on different machines.

In this talk, we examine these tools' reproducibility in detail. We then reach two conclusions: first, that theirsuccess is a large-scale version of the same advantage offered by pure (that is, reproducible) functions; second,that we can use reproducibility as a guide for building new tools.

Gary Bernhardt

Gary Bernhardt is a creator and destroyer of software compelled to understand both sides of heated softwaredebates: Vim and Emacs; Python and Ruby; Git and Mercurial. He runs Destroy All Software, which publishesadvanced screencasts for serious developers covering Unix, OO design, TDD, and dynamic languages.

Page 43: Strange Loop 2016 Program

Building Secure Cultures

Schedule: 2016-09-17 16:30 - 2016-09-17 17:20

Room: Theater

Format: Keynotes

Track: keynote

Leigh Honeywell (@hypatiadotca) - Slack

Leigh is a Security Engineer at Slack. Prior to Slack, she worked at Salesforce.com, Microsoft, and Symantec.

Founder of several hackerspaces, she is currently Chief Security Officer of Double Union, a women's

hackerspace in San Francisco and advisor to several nonprofits and startups. Leigh has a Bachelors of Science

from the University of Toronto where she majored in Computer Science and Equity Studies.