I will list all of the resources for talks I give here, in reverse chronological order.
Sunshine PHP 2019 - February 8th-9th, 2019
Promises and Queues: Using Unlikely Suspects to Handle Asynchronous Parallel Processing
My last job was with a distributed manufacturing platform for turning digital ideas into physical products. They enabled customers to upload 3D models, have the models manufactured into physical goods, and delivered into the customer's hands, all within 24 hours. Every time a digital model is uploaded, we processed the file with an array of tools that inspect the model and make determinations about its manufacturability, size, and perhaps most importantly price. One of the very first things I did there was to completely overhaul this process, converting it from a mystical black box to a clear set of discrete processes with copious amounts of highly visible logging. While there are many possible ways to do this, I chose Jenkins, and in supporting this system for over a year, while I may use different tools to do it now, Jenkins bought us a lot of time in the interim, and I left them with quite a bit of runway before any changes would be required.
In this talk I will cover where we started, why I chose Jenkins, why it works so well for this use case, and how to use these same patterns to solve your asynchronous parallel processing problems, regardless of your platform. Our use patterns showed us that managing jobs in Jenkins can be a very similar experience to managing code deployed to server-less solutions such as AWS Lambda. Let me show you how.
Lansing Codes Meetup - September 18th, 2018
Introduction to building a programming language
You will never truly understand building software until you understand how your software is executed. By implementing a subset of PHP in JavaScript, we will explore the various pieces required to create your own programming language, and uncover a few secrets along the way. You will walk away from this talk with a solid understanding of how to begin building your own programming language, and an in-depth appreciation for what is actually required to turn arbitrary chunks of text into magic.
Columbus Code Camp 2017 - October 14th, 2017
What is Software?
What if DNA unlocked more than just the secrets to life? What if, hidden within our genetic code, we could find the secrets to building truly robust software?
Join Jacob as he shares a fresh perspective on our industry, where it is, and ultimately, where it could go to better support the ever changing needs of today’s competitive business environment. Together, we will take a look at both monolith and SOA architectures, and by taking time-tested patterns from life itself, explore a new way to address the concerns of modern business applications.
Join Jacob in the exploration of the true nature of software, and perhaps, even life itself!
Open West 2015 - May 6th-8th, 2015
Give Your Engineers Wings, not Anchors: Building Tools for the Cloud
As organizations build out complex systems in the cloud, writing reliable software gets exponentially more difficult. With each new piece of architecture, complexity rises, and software engineers lose visibility into how their code is executed. Less visibility means more bugs making it further into the software development life cycle. More last minute fixes. More late nights. It doesn't have to be that way.
By making use of automated tooling, configurable convention, and lots of targeted communication, we can help to give the software engineers back their visibility. More visibility means fewer bugs, less frustration, higher morale, and that the overall quality of the codebase will improve! However, building tooling that developers will love takes proper planning and care. As far as end users go, these will be some of the most fickle customers you will ever build for. It is worth the time and effort though: Happy developers write happy code. Come learn how to delight your coworkers and build tools that will take your organization to the next level.
In this talk we will look at real tools built in the process of supporting developers building code for the cloud. Covering usability and utility, from local development environments to accessing cloud instances in an easy way, you will learn what developers want and need out of their toolchain, and how to give it to them.
Tools looked at:
- Vagrant
- Jenkins
- Ruby (specifically Thor, and OptionParser)
- Bash scripts
- Native desktop applications (for example, built in XCode for OSX)
Virtualize Your Stack with Vagrant and Puppet
Want to make it easy to transition your development stack from your laptop to the cloud? Interested in automating your development environment? We will cover everything you need know, and make sure you hit the ground running. We will walk through configuring a single server in a reliable way, and then scaling that out to your own personal cloud.
Testing Browser JavaScript Completely
The current collective body of well documented understanding on how to build a robust, flexible, and useful testing ecosystem for client side JavaScript with the current suite of tools available in the JavaScript space is infinitesimally small. Getting a framework set up that tested things in the correct way takes weeks of effort, multiple dead ends, and lots of frustration. We will look at one such complete setup ready to work with any modern JavaScript framework for your mobile application needs.
Introduction to building a programming language
You will never truly understand building software until you understand how your software is executed. By implementing a subset of PHP in JavaScript, we will explore the various pieces required to create your own programming language, and uncover a few secrets along the way. You will walk away from this talk with a solid understanding of how to begin building your own programming language, and an in-depth appreciation for what is actually required to turn arbitrary chunks of text into magic.
San Francisco PHP - June 25th, 2014
Introduction to building a programming language
You will never truly understand building software until you understand how your software is executed. By implementing a subset of PHP in JavaScript, we will explore the various pieces required to create your own programming language, and uncover a few secrets along the way. You will walk away from this talk with a solid understanding of how to begin building your own programming language, and an in-depth appreciation for what is actually required to be able to make arbitrary chunks of text turn into magic.
Midwest PHP - March 15th-16th, 2014
Stabilize your environment, stabilize your code (Virtualize your stack with Vagrant and Puppet, v2.2)
Without a development environment that closely matches your production environment, the process of promoting your code from dev to prod will be fraught with peril. We will go into the fine details that you need to know to get started working with Vagrant, VirtualBox and Puppet, teaching the tools needed to not only stabilize your development environment, but improve the confidence you have in your code as it is promoted from development to production.
Much more Eggs than Bacon: A Development Environment Cookbook
Have you ever wrote code that worked when you wrote it, but failed when it went to QA? Or staging? Or production? Learning how to build a high quality development environment is a serious undertaking and will involve a lot of trial and error — unless you come to this talk. Having spent the better part of the last year prepping, implementing, rolling out, maintaining, stabilizing, and growing a large scale development environment platform, I will show you the ropes. The real secret to building a system everyone can love: it’s all about making eggs, not bacon.
Code PaLOUsa - February 24th-26th, 2014
Much more Eggs than Bacon: A Development Environment Cookbook
Have you ever wrote code that worked when you wrote it, but failed when it went to QA? Or staging? Or production? Learning how to build a high quality development environment is a serious undertaking and will involve a lot of trial and error — unless you come to this talk. Having spent the better part of the last year prepping, implementing, rolling out, maintaining, stabilizing, and growing a large scale development environment platform, I will show you the ropes. The real secret to building a system everyone can love: it’s all about making eggs, not bacon.
Virtualize your stack with Vagrant and Puppet (v2.1)
Want to make it easy to transition your development stack from your laptop to the cloud? Interested in automating your development environment? We will cover everything you need know, and make sure you hit the ground running. We will walk through configuring a single server in a reliable way, and then scaling that out to your own personal cloud.
Columbus Code Camp - October 12th, 2013
Virtualize your stack with Vagrant and Puppet (v2.0)
We walked through what Vagrant is, and how it relates to various virtual machine systems and cloud providers, and then forked from there to talk about how to use Puppet to create meaningful configuration of your servers.
Finally, and I think most importantly, we talked about how to sell the time investment to your superiors, and discussed the fact that if your development environment is not as close of a carbon copy of your production environment as possible, there is no clear way to verify that the code you have in your development environment will work at all once released to production.
php[tek] 2013 - May 15th, 2013
How am I ever going to learn all of this?
This was a brief lightning talk I gave during the php[tek] 2013 Mentorship Summit. The source material has unfortunately become eaten through the vagaries of time.
Ann Arbor PHP/MySQL User Group
Virtualize your stack with Vagrant and Puppet - 5/25/2013
We walked through what Vagrant is, and how it relates to various virtual machine systems and cloud providers, and then forked from there to talk about how to use Puppet to create meaningful configuration of your servers.
Code Evolution: Contact Form (part 2) - 2/16/2013
In this edition we take our already abstracted contact form and reimplement it in the Silex framework.
Code Evolution: Contact Form (part 1) - 1/19/2013
This talk shows how to take a basic contact form and start to evolve it into something more reliable, and extensible, using today's best practices.
Introduction to Design Patterns - 12/15/2012
This talk gave a very small introduction to some of the common design patterns we see in the wild while doing PHP development.
Introduction to PHPUnit Integration Testing and Twilio - 12/01/2012
This talk goes over two separate and yet inter-related topics. The first is a basic overview of the different types of tests and tools out there, and then goes into specific detail of writing your first Selenium test in PHPUnit. The second provides a brief introduction of the possible things you can do with Twilio.
How to act like you (maybe actually) care about your work - 11/17/2012
Programming is a very involved career path, with many ongoing requirements to stay up on. Here we talk about those requirements and how to equip yourself with the tools to succeed.
Symfony Live San Francisco 2012
How to act like you (maybe actually) care about your work - 09/29/2012
A quick overview of things every developer should keep in mind.