July 20–24, 2015
Portland, OR

Foundations conference sessions

A strong foundation in computational thinking, problem solving, and programming best practices makes for a successful programmer.
Solve – Harness the power of math to manipulate, secure, and create data.

Add to your personal schedule
9:00am–12:30pm Monday, 07/20/2015
Portland 252
Matt Harrison (MetaSnake)
Got the basics of Python down but want to dig in a little more? Have you wondered about functional programming, closures, decorators, context managers, generators, or list comprehensions, and when you should use them and how to test them? This hands-on tutorial will cover these intermediate subjects in detail, by applying them to programming a drone. Read more.
Add to your personal schedule
9:00am–12:30pm Monday, 07/20/2015
F151
Tammy Butow (Dropbox), Georgi Knox (GitHub), Jessica Frazelle (Docker)
This will be a hands-on workshop aimed at those who are casually familiar with the Linux operating system. Perhaps you use it on a server or in a virtualbox, but want to gain deeper understanding about the kernel and how Linux actually works. Read more.
Add to your personal schedule
9:00am–12:30pm Monday, 07/20/2015
F150
Josh Lockhart (New Media Campaigns)
Are you a PHP beginner or a seasoned veteran upgrading from PHP 4 to PHP 5? Have you read about "PSR"s or the PHP-FIG but don't know what they are? Josh Lockhart will introduce you to modern PHP practices and techniques. Learn about namespaces, traits, and generators. Find out how to use, build, and share components. And find out how to continue learning and get involved with your PHP community. Read more.
Add to your personal schedule
1:30pm–5:00pm Monday, 07/20/2015
E145/146
Sam Helman (Flatiron Health)
AngularJS is relatively new, meteorically popular, and functionally powerful. However, a lot of AngularJS’s workings are very opaque and confusing. In this tutorial, an updated version of the same tutorial from last year, my goal is to walk you through building a basic app, and introduce you to concepts and patterns that will allow you to comfortably dive further into using AngularJS. Read more.
Add to your personal schedule
9:00am–12:30pm Tuesday, 07/21/2015
D137/138
Jim Blandy (Mozilla Corporation)
Learn to program in Rust, a new systems programming language emphasizing safety and performance. Rust offers the same degree of control over performance as C and C++, but also makes strong memory safety guarantees: Rust programs are free of dangling pointers, leaks, null pointer dereferences and buffer overruns, making the language well-suited for security-sensitive and multithreaded code. Read more.
Add to your personal schedule
9:00am–12:30pm Tuesday, 07/21/2015
D139/140
Robert "r0ml" Lefkowitz (Warby Parker)
Haskell has a reputation as a difficult language to learn. This tutorial sets out to teach the useful part of Haskell -- avoiding the theoretical and computer science bits which so many find confusing. Learn to write programs in Haskell with this tutorial. You can learn the difficult bits later if you want. Read more.
Add to your personal schedule
9:00am–12:30pm Tuesday, 07/21/2015
E143/144
Tags: Perl
Damian Conway (Thoughtstream)
Perl 6 is a new multiparadigm language, in which you can easily combine functional, procedural, declarative, OO, and concurrent constructs, even within a single subroutine, without losing readability or efficiency. This class explores some of the most interesting multi-paradigm features of Perl 6, using familiar real-world examples stolen from every Programming 101 class you've ever taken. Read more.
Add to your personal schedule
1:30pm–5:00pm Tuesday, 07/21/2015
Portland 252
You've dabbled a little in version control using Git. You can follow along with the various tutorials you've found online. But now you've been asked to implement a work flow strategy and you're not really sure how (or where) to start. You have a lot of choices, we'll help you pick the right one for your project. Read more.
Add to your personal schedule
1:30pm–5:00pm Tuesday, 07/21/2015
SOLD OUT
D133
Garrett Smith (CloudBees), Francesco Cesarini (Erlang Solutions Ltd)
Erlang is a programming language designed for the internet age, although it predates the web. It is a language designed for multi-core computers, although it predates them too. In this tutorial, Francesco and Garrett will present the features that make Erlang a trendsetter and give you a context for using it as strategic tool in your software arsenal. Read more.
Add to your personal schedule
10:40am–11:20am Wednesday, 07/22/2015
D137/138
Jan Paul Posma (Brigade)
We don’t see how code executes. We take peeks, using console.logs and breakpoints, but they don’t tell the whole story. This talk shows future toolmakers and (non-) visual thinkers how to take off our blindfolds. Read more.
Add to your personal schedule
11:30am–12:10pm Wednesday, 07/22/2015
D135/136
Graeme Mathieson (Wossname Industries)
We'll take a deep dive down the stack, into how the internet works to magically make Google's home page appear in our web browser. Topics will range from URL parsing and DNS resolution, through HTTP, TCP, IP, and routing, and all the way back up to browser rendering. Read more.
Add to your personal schedule
1:40pm–2:20pm Wednesday, 07/22/2015
Portland 255
Daisuke Maki (HDE Inc)
Go is quickly becoming one of the many must-have items in our toolboxes. In this talk I will describe the common pitfalls and misunderstandings for people who have an extensive background in interpreted languages like myself. I will tell you all about my failures so you don't have to repeat them! Read more.
Add to your personal schedule
2:30pm–3:10pm Wednesday, 07/22/2015
Portland 251
You've decided to level up your Git skills and have heard that rebasing is where it's at. In this session we'll talk about: WHY rebasing can make it easier to untangle your project's history; WHEN you should use rebase; WHAT rebasing actually does to your repository; and HOW it actually looks when things go right (and how to recover when things go wrong). Read more.
Add to your personal schedule
4:10pm–4:50pm Wednesday, 07/22/2015
E146
Nova Patch (Shutterstock)
Unicode is much more than just characters. The Unicode Consortium defines open standards for collating, parsing, and formatting data in much of the world’s languages. The Common Locale Data Repository (CLDR) is the largest standard repository of locale data along with specifications for its use, and is a powerful resource for software localization. Read more.
Add to your personal schedule
5:00pm–5:40pm Wednesday, 07/22/2015
D135/136
Kris Kowal (Uber)
Promises, streams, observables, and behaviors are some of the building blocks of event driven programming. What makes each of these tick and when would you choose one over another? Read more.
Add to your personal schedule
10:40am–11:20am Thursday, 07/23/2015
Portland 252
Tags: Perl
Damian Conway (Thoughtstream)
Your favorite development language may be great, but it inevitably has a few misfeatures that make every programming task unnecessarily harder. That doesn't mean you need to find a new language; you can fix your existing one. And, happily, you already have exactly the right tool to do that: your existing language. Read more.
Add to your personal schedule
11:30am–12:10pm Thursday, 07/23/2015
E146
Maria Naggaga (Microsoft )
ASP.Net vNext, the open source version of the .Net series, has opened up its framework to an entirely new web developer community. The cool thing about this lean framework is you can get ASP.NET from Mac to PC using either Visual Studio Community or Sublime. In this demo, I will be going through the tools and frameworks you need to get ASP.NET vNext running on OS X Yosemite. Read more.
Add to your personal schedule
1:40pm–2:20pm Thursday, 07/23/2015
Portland 252
Many classic design patterns and traditional Python idioms remain relevant today. However, the language has grown, the problem spaces we address keep shifting, and best practices for software development have matured. Thus, the set of best-of-breed patterns and idioms has changed, some classics fading, new stars emerging. This talk explores today's realities in Python patterns and idioms. Read more.
Add to your personal schedule
2:30pm–3:10pm Thursday, 07/23/2015
D135/136
In true open source fashion, a community's failures are often as visible as their successes. Failing can provide a learning experience, but many mistakes are still made which can easily be avoided, even by experienced open source communities. Learn about these points of fail that open source projects have experienced, and see how badly your favorite FOSS project fails. Read more.
Add to your personal schedule
4:10pm–4:50pm Thursday, 07/23/2015
Portland 256
John Hugg (VoltDB)
One challenge in building distributed systems is actually running and testing distributed systems. This session will show how developers at VoltDB simplify development and testing using Docker and other container technologies. Read more.
Add to your personal schedule
5:00pm–5:40pm Thursday, 07/23/2015
Portland 252
You've decided to level up your Git skills and have heard that rebasing is where it's at. In this session we'll talk about: WHY rebasing can make it easier to untangle your project's history; WHEN you should use rebase; WHAT rebasing actually does to your repository; and HOW it actually looks when things go right (and how to recover when things go wrong). Read more.
Add to your personal schedule
5:00pm–5:40pm Thursday, 07/23/2015
D135/136
In this talk, I'll show you how to write a straightforward specification that is easy to implement in any programming language. I'll do this by sharing the story of JMESPath, a query language for JSON that currently has implementations in seven languages, and the lessons learned in creating the JMESPath specification. You'll leave ready to write easy-to-implement specifications. Read more.
Add to your personal schedule
10:00am–10:40am Friday, 07/24/2015
Portland 256
Jonathan Whitmore (Silicon Valley Data Science)
The IPython Notebook is perfect for many data science tasks, including rapid iteration for data munging and cleaning; exploration and visualization; creating a transparent data processing pipeline workflow; and beautiful presentation of results. This talk will explore overall best practices, with special attention to these use cases and how to get the most out of IPython Notebook for each one. Read more.
Add to your personal schedule
11:10am–11:50am Friday, 07/24/2015
D135/136
Jason Maxham (The Art Of Troubleshooting)
It's something we all do, but how it's done can be haphazard. I'm talking about troubleshooting, an often underappreciated skill. This talk will get you thinking about this critical discipline in a more formal way. We'll cover: Strategies: recipes to quickly get you from "broken" to "fixed"; Virtues: the mindset and behavior of a good troubleshooter; Cleaning up: learning from failures. Read more.