Interested in having me speak at your event? Email me.

Cloud Adoption Fails: 5 Ways Deployments Go Wrong and 5 Solutions

"All happy cloud deployments are alike; each unhappy cloud deployment is unhappy in its own way." — Leo Tolstoy, Site Reliability Engineer

At Gruntwork, I've had the chance to see the cloud adoption journeys of hundreds of companies, from tiny startups to Fortune 50 giants. I've seen those journeys go well. I've seen those journeys go poorly. In this talk, I discuss a few of the ways cloud adoption can go horribly wrong (massive cost overruns, endless death marches, security disasters), and more importantly, how you can get it right. To help you get it right, we looked at the cloud journeys that were successful and extracted from them the patterns they had in common. We distilled all this experience down into something called the Gruntwork Production Framework, which defines five concrete steps you can follow to adopt the cloud at your own company—and hopefully, to end up with your very own happy cloud deployment.

Formats: Video, Slides

Date:

SE Radio Interview: Infrastructure as Code Best Practices

I did a podcast interview with Software Engineering Radio on Infrastructure as Code best practices. The discussion covers similarities and differences between conventional software engineering and code-driven infrastructure; factoring code into modules; layering; terraform code organization for micro-services; releases and tagging; code reviews; unit testing infrastructure; deployment of infrastructure; ownership and code structure models; and open source and re-usable libraries.

Formats: Podcast

Date:

Automated testing for Terraform, Kubernetes, Docker, Packer and more

This talk from QCon SF is a step-by-step, live-coding class on how to write automated tests for infrastructure code, including the code you write for use with tools such as Terraform, Kubernetes, Docker, and Packer. Topics covered include unit tests, integration tests, end-to-end tests, test parallelism, retries, error handling, static analysis, and more.

Formats: Video & Slides, Video, Slides

Date:

Lessons from 300k+ Lines of Infrastructure Code

My talk from QCon London where I shared key lessons from the "Infrastructure Cookbook" we developed at Gruntwork while creating and maintaining a library of over 300,000 lines of infrastructure code used in production by hundreds of companies. Topics include how to design infrastructure APIs, automated tests for infrastructure code, patterns for reuse and composition, refactoring, namespacing, and more.

Formats: Video, Video, Slides, Transcript

Date:

Lessons learned from writing over 300,000 lines of infrastructure code

This talk from HashiConf 2018 is a concise masterclass on how to write infrastructure code. I share key lessons from the "Infrastructure Cookbook" we developed at Gruntwork while creating and maintaining a library of over 300,000 lines of infrastructure code that's used in production by hundreds of companies. Come and hear our war stories, laugh about all the mistakes we’ve made along the way, and learn what Terraform, Packer, Docker, and Go look like in the wild.

Formats: Video, Slides, Blog Post

Date:

Reusable, composable, battle-tested Terraform modules

This is my talk from HashiConf 2017 where I introduce the work we've been doing at Gruntwork with Terraform Modules. I explain how modules work, how to design modules so they are highly configurable and reusable, and how to write automated tests for your Terraform code. Most importanly, I show you how you can use modules to build your entire tech stack on top of proven, battle-tested infrastructure code—in minutes.

Formats: Video, Slides, Blog Post

Date:

Startup DNA: the formula behind successful startups in Silicon Valley.

"Successful startups are all alike; every unsuccessful startup is unsuccessful in its own way." These are my personal observations on a few traits that make startups successful.

Formats: Video, Slides, Interview

Date:

The Truth About Startups

This is the talk I gave at the MIT Martin Center for Entrepreneurship and the Trinity College Blackstone Launchpad. It's a talk I wish someone gave me when I was in college to help me think about the role of entrepreneurship and startups in my career.

Formats: Video, Slides, Blog post

Date:

devRant podcast

I did a podcast interview for the devRant podcast where I talk about how I got into programming, the biggest lessons I've learned, the biggest lessons I've had to unlearn, DevOps, startups, and more.

Formats: devRant, YouTube, SoundCloud, iTunes, Google Play

Date:

Yours Productly Podcast

I did an interview for the Yours Productly podcast where I talk about startups, product design, coming up with startup ideas, minimal viable products, learning, writing, and more.

Formats: SoundCloud, Blog post

Date:

An intro to Docker, Terraform, and Amazon ECS

This talk is a very quick intro to Docker, Terraform, and Amazon's EC2 Container Service (ECS). In just 15 minutes, you'll see how to take two apps (a Rails frontend and a Sinatra backend), package them as Docker containers, run them using Amazon ECS, and to define all of the infrastructure-as-code using Terraform.

Formats: Slides, Code

Date:

Comprehensive Terraform Training

A comprehensive walkthrough of how to manage infrastructure-as-code using Terraform. This presentation includes an introduction to Terraform, a discussion of how to manage Terraform state, how to use Terraform modules, an overview of best practices (e.g. isolation, versioning, loops, if-statements), and a list of gotchas to look out for.

Formats: Slides

Date:

Infrastructure as code: running microservices on AWS using Docker, Terraform, and ECS

This is a talk about managing your software and infrastructure-as-code that walks through a real-world example of deploying microservices on AWS using Docker, Terraform, and ECS.

Formats: Video, Slides, Code, Blog post

Date:

Startup Ideas and Validation

Every startup begins with an idea. This is a talk on how to come up with startup ideas and how to use validation to pick the good ones.

Formats: Video, Slides, Blog post

Date:

Agility Requires Safety

To go faster in a car, you need not only a powerful engine, but also safety mechanisms like brakes, air bags, and seat belts. This is a talk about the safety mechanisms that allow you to build software faster.

Formats: Video, Slides, Blog post

Date:

A Crash Course on Design for Developers

This talk will introduce you to the basic tools of user-centered and visual design. It's targeted at developers and anyone else who wants to improve the design of their websites, mobile apps, resumes, slide decks, and so on.

Formats: Video, Slides, Blog post

Date:

A Guide to Hiring for your Startup

Choosing the right people is far more important than choosing the right product, marketing strategy, tech stack, or coding methodology. That means hiring is the most important thing you do. It's also one of the hardest. In this talk, I describe how to hire for your startup, including finding co-founders, early hires, and later hires. I also discuss what to look for in a candidate, where to find candidates, how to interview them, and how to make an offer they can't refuse.

Formats: Video, Slides, Webcast

Date:

Node.js vs Play Framework

Here's the showdown you've been waiting for: Node.js vs Play Framework. Both are popular open source web frameworks that are built for developer productivity, asynchronous I/O, and the real time web. But which one is easier to learn, test, deploy, debug, and scale? Should you pick Javascript or Scala? The Google v8 engine or the JVM? NPM or Ivy? Grunt or SBT?

Formats: Video, Video (Japanese Subtitles), Slides, Blog post

Date:

Composable and Streamable Play Apps

Web pages can get complex and slow. This talk shows how to deal with both of these issues by using composition and functional programming in the Play Framework to build complex pages out of simpler parts and how to stream those parts extremely quickly to the browser using a Facebook BigPipe-style approach.

Formats: Video, Slides, Code

Date:

Play Framework: async I/O with Java and Scala

An introduction to writing asynchronous, non-blocking code with the Play Framework.

Formats: Slides, Blog Post

Date:

The Play Framework at LinkedIn

LinkedIn is moving its service infrastructure to the Play Framework. In this talk, I introduce Play, and show why it's the best web framework on the JVM.

Formats: Video, Slides, Blog Post

Date:

Hackdays and Incubator

This is the story of the Hackday and[in]cubator programs at LinkedIn; this is the story of scalable, best-of-breed methods for driving innovation; this is the story of transformation: of your career, company, and the world.

Formats: Slides, Video

Date:

dust.js at LinkedIn

In 2011, LinkedIn adopted dust.js. This is the story of client side templating at massive scale.

Formats: Slides

Date:

Rapid Prototyping

A presentation I did at LinkedIn hackdays on how, and why, to build things quickly.

Formats: Slides

Date: