Created 2010-04-27 / Edited 2015-11-22

From time to time I give talks on various topics. Audiences range from the local Perl Monger group to larger conferences. Unfortunately for you, I prefer to do crazy things like live code demos and use minimalist slides, so you don't quite get the same effect from these records. Hopefully I can dig up some videos :)

2015-11-11 PolyglotProgrammingDC Random Kinda

You've probably heard the old adage "use the best tool for the job" many times, yet we often end up with a random blob of text on the screen that makes no sense whatsoever. Or do we?

2015-10-07 PolyglotProgrammingDC HTTP Adapters

Survey and Philosophy of HTTP Adapter Layers. Overview of a technique for connecting your program to serving web pages. Rack, Ring, PSGI, WSGI, Clack, ...

2015-09-15 ClojureDC nREPL Looper

A guitar-looper-pedal-like-thing for your REPL! I present my ongoing project, experimenting with recording console commands along with their timing, and then playing them back in a loop. We can use Overtone (sound) events as a good example, simulating a looper-pedal but feeding it commands instead of audio. We'll touch upon a variety of topics as part of the walk through, from beginner to advanced!

2015-06-14 RubyNation Polyglot Bridges

Python has a fantastic plotting library, matplotlib.pyplot. I show how I used it from Perl6/Rakudo and Ruby. You should join me in Polyglot Bridge Building!

2015-04-11 DCBPW Rakudo

Rakudo is an implementation of Perl6 that is increasingly usable in the Real World. I give an overview of the language and then show how I'm using it in my $HOME/bin scripts.

2015-02-19 Optoro How Webpages Work

Walking through the life of a webpage, we see that browsers assume everything is a document and servers lie when generating dynamic content!

2015-02-11 PPDC Language Implementation

Implementing a language is fun! Here I walk through the "full stack" briefly, and then we implement a really horrible interpreter. Then a compiler.

2014-11-17 RubyConf Time Travel Debugging

Leveraging the power of fork()ing the universe, I demonstrate a Pry plugin that allows traveling between the timeline multiverse!


2014-07-01 PPDC Rakudo

There is a new and awesome language implementation -- Rakudo! I go over a few standard, interesting, and insane bits of this dynamic, multi-dispatch, gradually-typed, .... (moar buzzwords)... language.

2014-06-11 ArlingtonRuby Time Travel Debugging

Leveraging the power of fork()ing the universe, I demonstrate a Pry plugin that allows traveling between the timeline multiverse!

2014-06-07 RubyNation Time Travel Debugging

Leveraging the power of fork()ing the universe, I demonstrate a Pry plugin that allows traveling between the timeline multiverse!

2014-05-03 DCBPW State in Clojure

Concurrent state is pretty carefully controlled in Clojure. Here I talk about what that means and what we can learn from it.

Basic AngularJS

  • Presented at YAPC::NA 2013
  • Introduction to AngularJS, almost entirely to force me to learn it.



I present a simple generator-based sound synthesizer. This is basically the same as the talk I'm going to give at YAPC::NA 2012.


Introduction to Debugging Perl

  • DCBPW 2012
  • More talk about Science!

Art and Science of Debugging

  • PPW 2011
  • Lots of talk about Science!

Testing The Interactive Web

In this talk, I will teach the audience the basics of using WWW::HtmlUnit (and WWW::HtmlUnit::Sweet) for scraping and testing javascript-required web applications. We'll go over installation, basic usage, and some real-world examples. The WWW::HtmlUnit module uses the java-based HtmlUnit library, which itself builds off of a suite of libraries including Rhino to simulate a web browser. Among many other useful features, it can execute complex javascript -- it passes the jQuery test suite perfectly, for example. Bringing that power to Perl has allowed developers to go well beyond what WWW::Mechanize can simulate, while avoiding the overhead of a full Selenium setup.

Read Eval PLAY Loop

Harking back to the days of yore, in this talk we seek to reclaim that elusive touchpoint between man and machine. That spot oh so sweet wherein you type out magic incantations and watch as the figures on the screen flash and bounce, obeying your every whim... line and color meet, curving and spinning into a rainbow star of power and mystery!

WWW::HtmlUnit - Perl Interface to the Java library

The mighty WWW::Mechanize is fantastic... right up until you have to deal with some javascript. The HtmlUnit project has build on the Mozilla Rhino engine to create a browser agent that works even against complex javascript. It passes the JQuery test suite, as an example of it's powers.
We will present the Perl interface to the HtmlUnit library, setting you on the path to scraping and testing those javascript-dependent sites that you've being eying for so long.

A Web-Based Inspector for (CGI?) Perl Applications

One of the tried and true ways of debugging is to sprinkle 'print "Here! $val\n"' around and see what happens or if the program even reaches that point. Simple and effective! Carp::REPL lets you take this a step further by starting an interactive Read-Eval-Print Loop (REPL) at an arbitrary point in your program.
I've taken this technique and mixed in a splash of Continuity to build an interactive web-based REPL and inspector for your application. The REPL lets you execute arbitrary code, the inspector gives you a GUI for traversing your callstack and manipulating your variables. It works on regular applications and CGI scripts too. You just add a single "inspect()" where you like and you'll be whackin' those bugs DOWN!
In this talk I'll show you how to use the tool and how it's built... and how you can add to it with plugins.

Abstracting the Web Request Cycle With Continuity

Introduction to Continuity

  • Presented at: Pittsburgh Perl Workshop 2007 - October 2007
  • Slides (pdf)

Contize (PHP)

Introduction to Modular Programming in Perl

Contize (Perl)

  • Presented at: Phoenix Perl Mongers - August 2004
  • Slides (pdf)

Web Application Techniques