Polyglot Unconference 2015

May 22nd-23rd

Vancouver, Canada

Vision

The 4th annual Polyglot Unconference.

Polyglot is a "non-denominational" software development un-conference event that encourages software developers and operators from different stacks, backgrounds and with different opinions to come together for one day of spontaneous sharing, teaching and learning.

Polyglot

Polyglot software development is the practice of utilizing multiple languages, frameworks and stacks to build software.

At the core of the Polyglot Conference is creating an opportunity to celebrate software development diversity and break away from typically language-specific user groups and conferences to come together to talk about the challenges and interests that we all have in common.

Unconference

What's an "un"-conference?

Also called an "open space", an un-conference is a participant driven conference. Attendees will come together in the morning to propose conference topics and offer to lead and facilitate these talks, discussions, panels, coding dojos, and more. Open space events have an emphasis on spontaneous learning and sharing that differs from traditional conference formats. It's an experience like no other.

Workshops Friday May 22

Half Day Workshops: Morning 4 hours: 8AM to 12PM

Abstract

Who ever said payments were complicated/boring?

This will be an introduction into the world of online payments and how to make it fun and enjoyable for your customer. Whether it be on your smartphone or website, we'll show you how you can get setup and accept payments quickly. We'll also show you some cool tricks, tips and best practices and ways to get started. At the end of this expect to be able to make the most fun, enjoyable and seamless shopping cart checkout experience ever.

Prerequisites

Syllabus

About Justin (@jzwoo)

Justin Woo

Justin Woo is a Developer Evangelist at PayPal and has been programming ever since he got his first IBM XT running DOS. He loves writing mobile applications (especially hybrid-HTML5 applications) and wishes everything could be done in LISP. In his spare time he enjoys tinkering around with cool hardware. He’s built a game for Autistic Children, a Robot that can be controlled remotely and even a Kinect game involving tapeworms. He graduated from Purdue University with a degree in Computer Engineering and was previously a Program Manager at Microsoft. He lives with his wife and two wonderful dogs - one of which refuses to admit that he is blind and the other that likes to pretend she's a rabbit. In his spare time he loves playing squash and board games (his favorite being Settlers of Catan). He also grew up in Singapore and so please don't mind his Singlish.

Buy Tickets

Abstract

Every week the news around us are full of "scientific" life/business advice. "Coffee is good for you" - "Coffee is bad for you" - "Mozart's music makes you smarter" - "Multitasking makes you stupid" - "Your Late-Night Emails Are Hurting Your Team" - the list goes on and on. In this workshop we will cover the important scientific and statistical concepts you need to understand in order to separate the wheat from the chaff. You will learn how to dissect the information being presented, determine what it claims, and judge the strength of the evidence brought in support of the claims. The content is intended for a wide audience. Technical jargon will be kept to a minimum and explained. No "scary" math. We will use a lot of real-world examples (i.e. actual news stories and scientific studies) to illustrate the concepts and to practice on during the workshop.

Prerequisites

  • Knowledge: None. This class is for you if:
    • you've never taken a statistics class (and may be intimidated by topic)
    • you have, but it's been too long and you've never applied it anyway
    • you thought only scientists need to learn statistics
    • you heard "Data Scientist" is a high-prospects job and want to move into the field, but don't know where to start
    • or, you simply want to make better decisions
  • Materials: You may want to bring a laptop, though this is not required.

Syllabus

Here.

About Elena

Elena is a computer scientist (B.S., M.S., Ph.D.) with over 8 years experience in a predictive analytics consultancy, doing data analysis, visualization, modeling and simulation, and optimization. She has applied a breadth of computer science techniques to a variety of domains including engineering design, text mining and visualization, contextual advertising, route optimization, strategic portfolio planning, consumer decision making, etc. She has been conducting theoretical and applied research for over 15 years, with a focus on evolutionary computation and optimization. She has won multiple best-paper awards for her publications, awards in algorithm and programming competitions and merit scholarships during her academic studies. Elena has also given many talks and taught a couple of tutorials at international scientific conferences, spoken on data analysis at local meetup groups, designed and recorded software-tutorial screencasts and was a teaching assistant and instructor for graduate level computer science courses.

Buy Tickets

Half Day Workshops: Afternoon 4 hours: 1PM to 5PM

Abstract

Beginning with the Observer Pattern, jQuery and Twitter’s Flight.js and Facebook’s Flux Pattern, we will explore several approaches for creating simple and scalable applications in the browser. Along the way, we will learn how to build independent components that communicate with one another using events and explore various patterns for translating data into scalable, modular web applications. We will attempt to not drown in a sea of event soup, learn ways to organize and tame our code and ultimately build simple, clear and reusable modules.

Prerequisites

  • Materials: Students should bring a laptop, with Chrome, a text editor and a working node.js environment, including NPM
  • Knowledge: A basic knowledge of Javascript and experience with jQuery

About Keith (@kbingman)

Keith Bingman

Keith has worked as a web developer for almost fifteen years, since he took responsibility for the website at the photo studio where he was working. Recently arrived in Vancouver from Germany, he has been writing Javascript every waking moment at Wantering, a fashion search platform in Vancouver.

Buy Tickets

Abstract

Our markets are multilingual and international. Localizing our software for other languages and markets is no longer an afterthought, delegated to the high priests of the "international" department. Every software engineer is now expected to know the basics of preparing software for translation, Unicode, locales, and so on.

This workshop is for the general software engineer, by one of the high priests. It will walk you through the most important concepts and technologies of "international" which you, as a well-rounded software engineer, are now expected to know. There will be plenty of time to dive deep on the topics which are important to you know, be it UTF-8 vs UTF-16 or how to test for translatability.

Prerequisites

  • Materials: (Optional) Bring a laptop with your favourite rapid coding environment for byte strings and bits: Python, Ruby, Visual BASIC, it's all good. There will be a chance to prototype code to parse mystery data byte by byte and bit by bit.
  • (Alternative) You will be able to make useful progress on a prototype using your brain, a caculator, and a hex dump I'll supply.
  • Knowledge: Journeyman software development for commercial or widely used open source products. Experience or expertise with localizing or international is not required, but if you've been thrown into it unprepared, you'll appreciate the lessons of the workshop more.

About Jim (@jdlh)

Jim DeLaHunt

Jim DeLaHunt is a Vancouver, Canada-based software engineer and consultant in multilingual websites, and a seasoned software developer and manager. He helped found VanGLUG, the Vancouver Globalization and Localization Users Group. He is an active participant in several free software and open data projects, in addition to consulting work with Canadian and US tech companies. He is a regular Unicode conference participant. Earlier, he worked 16 years in Silicon Valley for Adobe Systems. Jim is a licensed paraglider and airplane pilot, and sings tenor with an opera company and a chorus in Vancouver. You can contact Jim at jdlh.com, or @jdlh on Twitter.

Buy Tickets

Full Day Workshops 8 hours: 8AM to 5PM (1 hour lunch between 12PM and 1PM)

Abstract

C++ has a reputation of being an experts-only low-level programming language. But this is not the case anymore. C++11 and 14 introduce smart pointers, multi-threading, lambdas, move semantics, scoped enums, const expressions, user-defined literals, and a lot of other new features. The C++ standards committee is shortening the release cycle and modernizing the language.

This workshop is an introduction to new features and best practices of modern C++. We will delve into the core of C++ and all new features introduced in C++11 and C++14. There are two specific aims: to introduce you to C++ with emphasis on modern features and to help you make well-informed decisions when writing C++ code.

On completion of this workshop you should be able to:

  • Write C++ code using the latest language features while following the best practices
  • Identify modern C++ features and techniques
  • Use third-party libraries and frameworks

Prerequisites

  • Materials: Bring a laptop with a C++ compiler that supports at least C++11, preferably C++14 (Clang 3.4 (Xcode 6), VS 2015 Preview, GCC 4.9). Install boost and SFML (e.g. brew install boost sfml). Bring your favourite text editor or IDE.
  • Knowledge: Basic programming experience in a C-like language

Syllabus

https://gist.github.com/aleph7/71c6ae6717a4087eeff1

About Alejandro (@aleph7)

Alejandro Isaza

Alejandro Isaza is a polyglot software developer. He has a M.Sc. in Computing Science from the University of Alberta and bachelor degrees in both computers and physics. He currently works for Venture Media Labs as lead mobile developer. He has been programming in C++ for more than 10 years, using it for a wide variety of applications including physics simulations, AI, low-level networking, mobile games and music.

Buy Tickets

Abstract

Modern application testing faces so many options for frontend, backend, and integration tests that developers can be overwhelmed in a sea of choices and technologies. As a take on "full-stack" development, we will explore full-stack testing -- using a single stack of core techniques and libraries that offer a cogent, minimal way to "test all the things" in your application.

Our workshop will explore what types of tests you should write and how to write them, with a focus on:

  • Backend Tests: Server code, network payloads.
  • Frontend Tests: UI/UX and browser code.
  • Integration Tests: Automating end-to-end user interactions with the full application.

We will walk through unified test framework with Mocha / Chai / Sinon.JS and complete targeted test exercises while learning practical guidelines and best practices. If time permits, we will cover advanced topics like code coverage, CI, etc.

If you have a web application and are wondering, "how do I start testing this?", then this workshop is for you. And even if you have a backend in a non-JavaScript language, we'll cover principles, techniques, and technologies that will apply to backends written in any language.

Prerequisites

Please follow the installation and verification instructions at: full-stack-testing.formidablelabs.com/#installation. You'll want to walk into the workshop with:

  • A laptop with a good text editor and a web browser (preferably Chrome).
  • Software: Git, Node.js/NPM, and Java. (Per installation guide).
  • Project: Clone the repository github.com/FormidableLabs/full-stack-testing and verify. (Per installation guide).

Attendees should be familiar with basic JavaScript programming and hopefully jQuery. Test development experience (unit, integration) in any language is useful, but not necessary.

Syllabus

gist.github.com/ryan-roemer/5500a1048717b517f6b5#file-syllabus-md

About Ryan (@ryan_roemer)

Ryan Roemer

Ryan is the CTO and co-founder of Formidable Labs, a boutique development shop in (the delightfully weird neighborhood of) Fremont in Seattle, WA. He helps lead the Seattle Node.js Meetup, curates the Server Day for Cascadia JSFest 2015, and is the author of "Backbone.js Testing", a comprehensive test development guide for modern Backbone.js web applications.

Ryan architects full-stack applications and backend Node.js services, and leads frontend development groups ranging from small startups to Fortune 500 engineering teams. Previously, Ryan was a distributed systems engineer, and in his deep, dark past was a patent attorney, although it has been a long time since he has put on his "lawyer" hat.

Buy Tickets

Abstract

Machine learning endeavors to find patterns in data algorithmically, arguably through a combination of: (mostly intuitive) basic statistical principles, intensive (and often hacky) application-specific optimization, and lots of (sometimes indecipherable) mathematical notation.

This workshop takes a simplifying approach to the most basic principles of supervised learning (by example of linear regression), unsupervised learning (by example of k-means clustering), and reinforcement learning (by example of Q-learning), while surveying the types of extensions that lead to more complex approaches like support vector machines, Gaussian mixture models, and Markov decision processes.

In doing so, we will use the abstractions provided by Apache Spark (via the Scala API) to allow for rapid development and prototyping in an interactive shell, while simultaneously maintaining a clear path forward to the scalability afforded by distributed computing.

Prerequisites

  • Materials: laptop, lightweight desktop, or portable supercomputer running Vagrant and VirtualBox.
  • Knowledge: Basic familiarity with Scala is useful but is definitely not required, especially if you are cool with the general spirit of functional programming and/or map-reduce (like, viewing functions as first-class objects).

Syllabus

Maintained as this gist.

About Eric (@ericihsu)

Eric Hsu

Eric Hsu is a software engineer with about 15 years of commerical research, academic, and industrial experience in studying and applying artificial intelligence and machine learning.

Buy Tickets

Abstract

Web apps and APIs are hugely important parts of modern life, but not every technique for building them is equally effective. With the right toolchain, correctness needn't require exhaustive test cases, scaling-out doesn't have to imply redesign, and failures can be handled gracefully with hardly any error-handling code.

Let's take a deep dive into a technology stack that is designed from the ground up for productivity, scalability, correctness and fault tolerance, and see how much can be achieved with surprisingly little code.

Prerequisites

Syllabus

Syllabus on Google Drive

About Alex (@alexcruise)

Alex Cruise

I've been building software for a disturbingly long time, and felt like I knew what I was doing until I met Scala and realized how much of the world of computer science I'd been missing.

Over the past five years, I've used Scala for all my serious development work, and have accumulated a tiny bit of wisdom and a lot of humility to go with my battle scars and war stories.

Buy Tickets

Abstract

Writing distributed applications requires coordination. ZooKeeper is an open source high-performance coordination service developed at Apache. With ZooKeeper one can use it off-the-shelf to implement consensus, group management, leader election, and presence protocols. This workshop will introduce you to ZooKeeper. You will learn how to setup a development environment and how to program with the ZooKeeper interface. Most of the exercises and demos will be in Java. We’ll also look at available interfaces in other programming languages. Last but not least, you’ll learn how to deploy ZooKeeper in a production environment and what to consider when setting up a high available cluster.

Prerequisites

Syllabus

About Gunnar (@guw)

Gunnar Wagenknecht

Gunnar Wagenknecht is Director of Engineering at Tasktop where he is responsible for Engineering Services, Operations and Engineering Effectiveness. Before Tasktop he was CTO at AGETO and lead the development and operation of a multi-tenant, worldwide e-commerce platform serving millions of transactions each day. He also is a prolific contributor with many years of experience in the Eclipse Open Source Community where he has recently been awarded with the Lifetime Contribution Award. Apart from software and computers he loves chatting about fishing, diving and other things that matters over a good beer or a glass of wine.

Gunnar is an experienced speaker at large, international conferences. Previous conferences include talks at JavaOne, talks and half & full-day workshops at EclipseCon (North America and Europe), JAX (Germany and UK) and FOSDEM (Belgium), as well as small regional events (main speaker at Java User Groups, sessions at other special topic days).

Buy Tickets

Abstract

Docker is an open-source engine that automates the deployment of any application as a lightweight, portable, self-sufficient container that will run virtually anywhere. Docker containers are both hardware-agnostic and platform-agnostic. This means that they can run anywhere, from your laptop to the largest servers and everything in between - and they don't require that you use a particular language, framework or packaging system. That makes them great building blocks for deploying and scaling web apps, databases and backend services without depending on a particular stack or provider.

Once you have a lot of containers running, you need to keep track of them, keep them healthy and make sure they can find each other. Kubernetes (http://kubernetes.io) is an open source cluster manager and scheduler that simplifies deploying and managing the containers that make up your application. You declare the desired state and Kubernetes does the work to keep it that way. It assigns resources, recovers from failures, and scales easily.

This full day lab will cover Docker and Kubernetes in depth: from the basics to advanced use cases. Students will progress from introductory exercises on individual containers to creating, monitoring and troubleshooting larger systems with clusters of interlinked containers.

In the morning, we’ll cover the essentials and essence of docker.

In the afternoon, we'll deploy a simple application built with several different containers, and walk through how Kubernetes services allow containers to find each other and communicate over the network. Then we'll scale it up, give new versions of containers a small percentage of traffic, and then do rolling upgrades of all containers to those new versions.

We will be learning via hands-on examples and exercises rather than via lecture.

Prerequisites

  • Material:

    Students should come with a laptop, a text editor, a terminal emulator and ssh. The exercises themselves will be performed on cloud vms so no additional software is required.

  • Knowledge:

    Intermediate Unix system administration knowledge and command line skills. If you're not already familiar with Bash and basic Python, please do some self study first. We want you to spend the tutorial day active at the keyboard not listening passively.

Syllabus

Syllabus on Google Drive

About Tavis (@tavisrudd)

Tavis Rudd

I’m one of the organizers of the Polyglot Meetup and Conference. With Brian’s help, I taught a docker workshop at last year’s conference.

About Brian (@briandorsey)

Brian Dorsey

I'm a Developer Advocate on the Google Cloud Developer Relations team. I focus on the open source Kubernetes cluster manager and our Cloud Platform, especially Compute Engine and Cloud Storage. I write sample code and create demos, present at conferences, and create screencasts. Feel free to drop me a note if you have any questions about our APIs.I've taught Python at the University of Washington & spoken at both PyCon US & PyCon Japan. I'm a bit of a Python fan. (understatement) I'm currently learning Go and enjoying it.

Buy Tickets

Abstract

We all know we should be doing functional design and using a functional programming language since this makes software more reliable and easier to run on multi-core CPUs. We will be going through the mind set required to do functional programming and how it differs from imperative programming. The higher abstraction level will be emphasized.

Prerequisites

  • Materials: Bring a laptop with the Haskell Platform installed and have some knowledge of imperative programming.
  • Knowledge: Basic programming experience in one or two imperative languages.

About Casey (@_kc56)

Casey Hawthorne

Casey Hawthorne is a theoretician with over twenty years experience tutoring computer science, computer programming, calculus, linear algebra, and physics.

Buy Tickets

Workshop Tickets

Buy Workshop Tickets now via Eventbrite.

Ticket prices are $350 for full day workshops and $200 for half day workshops.

Workshop tickets are sold separately from conference tickets.

Get your tickets early, as popular workshops do sell out.

Conference Saturday May 23

Conference Tickets

Polyglot Unconference 2015 on Eventbrite.

Open Space

Open-space conferences are spontaneously scheduled 100% attendee driven. Sessions will be proposed, selected and organized at the opening the conference but we encourage attendees to suggest and discuss ideas in advance.

For now, you can use the #polyglotconf hashtag or tweet your ideas @polyglotconf and we will share them with other attendees.

Schedule

08:00 AMRegistration Starts
08:45Opening and Introduction (Concourse)
09:00Session Pitching (Concourse)
09:45Lightning Talks: Learning to Learn
10:30Session 1
11:30Session 2
12:30Lunch
01:30 PMSession 3
02:30Session 4
03:30Session 5
04:30Session 6
05:30Closing (Concourse)
06:00Social at Steamworks

Social

There will be a social gathering at Steamworks immediately following the Conference.

Complimentary food and refreshments will be available throughout the night to keep the conversations going.

Venue

UBC Robson Square Workshops and Conference

800 Robson St (between Hornby St and Howe St) Downtown Vancouver Canada

Steamworks Brew Pub Saturday Afterparty

The Landing, 375 Water St (at Richards St) Downtown Vancouver Canada

Sponsors

The Polyglot Conference is made possible by our generous sponsors and volunteers.

If you are interested in sponsorship opportunities please contact us at sponsors@polyglotconf.com.

Volunteer at the Polyglot Conference

If you are interested in helping out and volunteering at the conference, please contact us at volunteers@polyglotconf.com.

Community

Organizers

Active

Alumni ♥

Conference Participants

Mark your attendance on Lanyrd

Code of Conduct

tl;dr: Be Excellent To Each Other! And please, don’t be a jerk. Read the full policy.