Blake Smith

create. code. learn.



  • » Rust Introduction: Systems Programming, Fearless Concurrency and Fireflowers

    Given at 8th Light University and Sprout Social

    A "Rust 101 talk". Basics of the language, some of its benefits, challenges. Emphasis on its safety guarantees, concurrency features, etc.

  • » Chef 101: Training @ Sprout

    Given at Sprout Social

    Chef Configuration Management is taught from first princples, with hands-on demos to reinforce best practices

  • » JVM Garbage Collection Tuning

    Given at Sprout Social

    A tour of the various JVM garbage collectors, when to use which, and general best practices depending on workload and application behavior

  • » The Trouble with Time

    Given at Chicago Distributed Systems, April 2015

    Discusses the challenges of time in distributed systems. Linearizability, total ordering, and the challenges with wall-clock time were covered

  • » Scala: My Favorite JVM Language

    Given at Chicago Ruby Polyglot Night, December 3rd, 2013.


    Brief lightning talk where I discuss why I like Scala and how we use it at TempoDB

  • » Go: Simple Yet Scalable

    Given at Chicago Software Craftsmanship Meetup, June 5th, 2013.

    Go is a new imperative programming language started at Google. In just a few years, it's gained a large following in the open source community for its simplicity, ease of use, and powerful concurrency support. Dynamic languages like Ruby, Python and JavaScript have gotten lots of traction on the web, but I'm going to show you how a compiled programming language can be more productive, and help you build scalable network services. We're going to build and deploy a small web service to showcase the good and bad parts of Go. By the end of this talk, you should know enough about Go to start your own small projects, and how you can use Go to solve problems at even larger scales.

  • » Fun with Clojure Concurrency

    Given at Geekfest @ Groupon Chicago, May 15th 2012

    Blog Post

    One of my favorite things about Clojure is its baked in concurrency support. As a Rubyist learning Clojure, I've grown used to doing concurrency the "Ruby way" - lots of forked processes and minimal control. Headache usually ensues. After spending some time with Clojure, I've realized that it doesn't have to be this way. I want to share with you what I've learned.

    Clojure provides so many features that simplify concurrency. It leverages the JVM as a robust runtime, has a software transactional memory system with persistent data structures, and gives you grab bag of powerful concurrency primitives: Agents, Futures, Promises, Atoms and Refs. There's a lot to take in, but we're going to get to the bottom of all these. I'm going to show you how you can wield these tools to go above and beyond simple threading, and open up a world of possibilities that's more fun and more robust than process forking.

  • » Mechanical Sympothy: Building A Computer From Scratch

    Given at Chicago Ruby January 10th, 2012.

    Using tools like Ruby, we can deliver value quickly, but sometimes at a cost of understanding: we're never really aware of our entire development stack. Blake Smith from Groupon shares how he built an entire functioning computer simulation, from Nand logic gate all the way to CPU and RAM, and how it enabled him to write better software and reason better about the machine.
  • » Happy Little Programmers: Lessons I Learned from Bob Ross

    Lightning Talk, Given at Windy City Rails 2011

    Video: Fast-forward to 5:50
    Bob Ross was a famous TV personality who taught the world how to paint. I'm going to cover 3 quick ideas I've learned watching him teach painting on TV, and how they apply to software development. Ideas include: - Showing you how to do everything step by step - Dissolving fears by making you think, "I could do that too!" - Giving you confidence by showing how he recovers from mistakes
  • » Entry Point: Find your gateway drug, and how to take your first steps in contributing to open source software

    Given at Chicago Ruby July 6th, 2010.

    We’ve all been on the fence before: we find a really cool open source project that we use and want to get involved with, but don’t know how to get started. Fear gets in the way, or we just get overwhelmed with the large task of getting familiar with a code base or dealing with unwelcoming maintainers. To grow our community we need to encourage more people who are on the outside to come to the inside. Just like test driven development, we need to start small and take short steps. With a focus on fun, Blake Smith will be sharing his ideas on overcoming fear and finding your ‘gateway drug’ that will get you hooked on open source, and keep you wanting to contribute and grow the community.