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.
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.
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.
Date:
Play Framework: async I/O with Java and Scala
An introduction to writing asynchronous, non-blocking code with the Play Framework.
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.
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: