Featured Presentations

Most of these talks are maintained on my GitHub Presentations repo, where you'll also find the original Keynote files.

Why Scala Is Taking Over the Big Data World Adobe PDF.

Scala eXchange 2014 talk that is a complete rework of my Scala Days 2014 talk. Scala has emerged as the de facto language for big data development, driven in part by tools like Scalding and Spark. This talk discusses the details. (Last updated: December 8, 2014)

Error Handling in Reactive Systems Adobe PDF.

Failure handling must be "first-class" in reactive systems, to satisfy the resilient trait. This talk for React SF 2014 discusses how reactive models and libraries support failure handling. (Last updated: November 19, 2014)

Spark: The Next Top (Compute) Model Adobe PDF.

This is a talk for Emerging Technology for the Enterprise 2014. Spark has emerged as the most likely replacement for MapReduce in Hadoop applications. This talk explains why. (Last updated: April 23, 2014)

Reactive Design, Languages and Paradigms Adobe PDF Video

This is a talk first given at React 2014 and refined for YOW! LambdaJam 2014. It explores the meaning of Reactive Programming, as described in the Reactive Manifesto, and how well it is supported by general design paradigms, like Functional Programming, Object-Oriented Programming, and Domain Driven Design, by various languages, and by particular design approaches, such as Functional Reactive Programming, Reactive Extensions, Actors, etc. (Last updated: April 8, 2014)

Copious Data: the Killer App for Functional Programming Adobe PDF Video

I argue that "Copious" Data (okay, Big Data) will drive adoption of functional programming (FP), more than multicore concurrency concerns, because more developers will grapple with data problems than concurrency. Because FP is based on Mathematics, it is a natural fit for working with Data, whereas languages like Java, in which Hadoop is written, are poor choices. I gave the original version of this talk at LambdaJam Chicago, July 8, 2013. The video of that talk is on InfoQ. (Last updated: November 21, 2013)

SQL Strikes Back! Recent Trends in Data Persistence and Analysis Adobe PDF

Relational databases fell out of fashion with the rise of NoSQL and Hadoop. But SQL proved too useful for too many people, so there are now many SQL-based query tools for Hadoop and subsets of SQL on several "NoSQL" databases. This talk discusses this trend and why it started. CodeMesh London , November 4, 2014.

The Seductions of Scala Adobe PDF

An introduction to Scala that I often give at conferences and user groups. The PDF includes a lot of extra material that won't fit in a 50-60 minute time slot. (last update: November 19th, 2013)

The GitHub page for this talk also has the sources used for the examples. In particular, for the Akka-based Actor example at the end of the talk, see README.md.

What's Ahead for Big Data? Adobe PDF

Big Data is at a crossroads, where Hadoop is showing its age and new compute models are emerging. NoSQL databases are adding query engines, sometimes based on SQL and NewSQL databases are bringing some measure of NoSQL performance to relational models. This talk examines these trends, focusing mostly on Hadoop today and tomorrow. I gave it at GOTO Chicago 2013 and later at CodeMesh 2013. (Last updated: December 4, 2013)

Scalding for Hadoop Adobe PDF

The benefits of using Scalding, presented February 12 at the Chicago Hadoop User's Group (CHUG) after Paco Nathan presented on Cascading. So, my talk assumes some prior exposure to Cascading concepts. Even if you understand Cascading concepts, I recommend reading Paco's presentation first. Note that the video of the talks will posted on the CHUG site soon. (updated for Big Data Techcon 2013: April 11, 2013)

MapReduce and Its Discontents Adobe PDF, a.k.a. Beyond MapReduce Adobe PDF

(Same talk; two different titles) I describe the MapReduce programming model and the technical limitations of the Hadoop implementation, in particular, in part because Java is the wrong tool for developing Big Data applications and middleware. Instead, we should be using Functional Programming, since we are really doing mathematics! I claim that Hadoop is the Enterprise JavaBeans of our time. (updated for Big Data Techcon 2013: April 11, 2013)

Why Big Data Needs to Be Functional Adobe PDF

I've been doing Hadoop-related consulting for the last few years. Data analysis and processing is a perfect application of Functional Programming, yet a Java-centric, object-oriented mindset pervades that community. So, I did a 30-minute talk at the NE Scala Symposium on Why Big Data Needs to Be Functional. You can also find the video here. (last update: April 15th, 2012)

Heresies And Dogmas In Software Development Adobe PDF Strange Loop 2011 Video

An updated version of my Strange Loop 2011 talk that looks at 5 ideas in the history of software development that were once (or still are) popular, but now are (usually) seen as obsolete (plus a "bonus" topic). The video of the Strange Loop talk is on InfoQ (Yea, I know I used Comic Sans in that version...). (last update: November 9th, 2011)

Better Programming through Functional Programming Adobe PDF

A half-day tutorial that introduces Functional Programming, why it has become important for our time, and how you can apply its ideas in almost any language. Examples are given in Java and Ruby. (last update: July 31st, 2011)

How Functional Programming Changes Developer Practices Adobe PDF

My Agile 2011 talk on why Functional Programming improves our code and makes us more agile. This talk is adapted from my tutorial discussed above.

The Akka Framework

An overview of the Akka Framework for building robust, highly concurrent servers in Java or Scala. Note: This is a web-based presentation written using S5 (with hacks). See the instructions on the GitHub page. (last update: March 19, 2010)

Polyglot and Poly-Paradigm Programming Adobe PDF

An argument that modern development problems benefit from a multi-paradigm and/or multi-language solution strategy. Different strategies are discussed in the contexts of example problems (last update: April 2, 2011)

Hive - SQL for Hadoop Adobe PDF

This talk for January, 2012 meeting of the Chicago Hadoop User's Group introduces Hive and explains why it's a key technology in the Hadoop ecosystem, primarily because it makes it easier to transition SQL-based data warehouses to Hadoop.

(Son of) Better Ruby Through Functional Programming Adobe PDF

How to improve your Ruby code with functional programming techniques. I gave the original version of this talk at RubyConf 2008 (video) and the "Son of" talk at Windy City Rails 2009 (video). Note: the code samples are availabe here.

For all available presentations, see the list below.

All My Available Presentations

Scala

The Seductions of Scala Adobe PDF.

I've given this presentation now at several venues. It provides a short introduction to some of the seductive features of Scala, like Traits for Mixin Composition, succinct syntax, and support for Functional Programming.

The Akka Framework

An overview of the Akka Framework for building robust, highly concurrent servers in Java or Scala. Note: This is a web-based presentation written using S5 (with hacks). See the instructions on the GitHub page.

Big Data and Reactive Programming

There's a lot of overlap between these two topics, so I'll lump them together.

Spark: The Next Top (Compute) Model Adobe PDF Video TBD.

This is a talk for Emerging Technology for the Enterprise 2014. Spark has emerged as the most likely replacement for MapReduce in Hadoop applications. This talk explains why. (Last updated: April 23, 2014)

Why Scala Is Taking Over the Big Data World Adobe PDF.

Scala has emerged as the de facto language for big data development, driven in part by tools like Scalding and Spark. This Scala eXchange 2014 talk that is a complete rework of my Scala Days 2014 talk that discusses the details. (Last updated: December 8, 2014)

Error Handling in Reactive Systems Adobe PDF.

Failure handling must be "first-class" in reactive systems, to satisfy the resilient trait. This talk for React SF 2014 discusses how reactive models and libraries support failure handling. (Last updated: November 19, 2014)

Reactive Design, Languages and Paradigms Adobe PDF Video

This is a talk first given at React 2014 and refined for YOW! LambdaJam 2014. It explores the meaning of Reactive Programming, as described in the Reactive Manifesto, and how well it is supported by general design paradigms, like Functional Programming, Object-Oriented Programming, and Domain Driven Design, by various languages, and by particular design approaches, such as Functional Reactive Programming, Reactive Extensions, Actors, etc. (Last updated: May 8, 2014)

Copious Data: the Killer App for Functional Programming Adobe PDF Video.

I argue that "Copious" Data (okay, Big Data) will drive adoption of functional programming (FP), more than multicore concurrency concerns, because more developers will grapple with data problems than concurrency. Because FP is based on Mathematics, it is a natural fit for working with Data, whereas languages like Java, in which Hadoop is written, are poor choices. I gave the original version of this talk at LambdaJam Chicago, July 8, 2013. The video of that talk is on InfoQ. (Last updated: November 21, 2013)

SQL Strikes Back! Recent Trends in Data Persistence and Analysis Adobe PDF

Relational databases fell out of fashion with the rise of NoSQL and Hadoop. But SQL proved too useful for too many people, so there are now many SQL-based query tools for Hadoop and subsets of SQL on several "NoSQL" databases. This talk discusses this trend and why it started. CodeMesh London , November 4, 2014.

MapReduce and Its Discontents Adobe PDF Video

I describe the MapReduce programming model and the technical limitations of the Hadoop implementation, in particular, in part because Java is the wrong tool for developing Big Data applications and middleware. Instead, we should be using Functional Programming, since we are really doing mathematics! I claim that Hadoop is the Enterprise JavaBeans of our time. The video of the talk is on InfoQ. (last update: December 2nd, 2012)

What's Ahead for Big Data? Adobe PDF

Big Data is at a crossroads, where Hadoop is showing its age and new compute models are emerging. NoSQL databases are adding query engines, sometimes based on SQL and NewSQL databases are bringing some measure of NoSQL performance to relational models. This talk examines these trends, focusing mostly on Hadoop today and tomorrow. I gave it at GOTO Chicago 2013 and later at CodeMesh 2013. (Last updated: December 4, 2013)

Why Big Data Needs to Be Functional Adobe PDF

I've been doing Hadoop-related consulting for the last year. Data analysis and processing is a perfect application of Functional Programming, yet a Java-centric, object-oriented mindset pervades that community. So, I did a 30-minute talk at the NE Scala Symposium on Why Big Data Needs to Be Functional. You can also find the video here.

Scalding for Hadoop Adobe PDF

The benefits of using Scalding, presented February 12 at the Chicago Hadoop User's Group (CHUG) after Paco Nathan presented on Cascading. So, my talk assumes some prior exposure to Cascading concepts. Even if you understand Cascading concepts, I recommend reading Paco's presentation first. Note that the video of the talks will posted on the CHUG site soon. (last update: February 13nd, 2013)

Hive - SQL for Hadoop Adobe PDF

This talk for January, 2012 meeting of the Chicago Hadoop User's Group introduces Hive and explains why it's a key technology in the Hadoop ecosystem, primarily because it makes it easier to transition SQL-based data warehouses to Hadoop.

Ruby

(Son of) Better Ruby Through Functional Programming Adobe PDF and Better Ruby Through Functional Programming Adobe PDF.

An updated and the original presentation I've given on applying functional programming ideas to Ruby development and how they improve your code. I gave the original talk at RubyConf 2008 (video) and the "Son of" talk at Windy City Rails 2009 (video). Note: the code samples are availabe here.

Acceptance Testing Java Applications with Cucumber, RSpec, and JRuby Adobe PDF

A tutorial that Aslak Hellesøy and I did August 27, 2009 at Agile 2009.

Principles of Ruby Application Design Adobe PDF

A talk I gave at Dr. Dobb's Architecture and Design World 2008. It discusses object-oriented and functional design principles that promote smaller, higher quality Ruby code. I don't discuss the "obvious" stuff, like how to use Rails, gems, JRuby, etc. Rather this talk is based on the premise that a successful architecture must be based on a foundation of good OO design, with a healthy dose of ideas from Functional Programming, Aspect-Oriented Design, etc. Feedback is welcome!

Aquarium

Aquarium: Aspect-Oriented Programming for Ruby Adobe PDF

This talk introduces Aquarium, an AOP framework for ruby. It discusses how Aquarium works and why AOP is interesting for Ruby. For example, I show a simple example of refactoring Rails code to improve it's clarity when Aquarium is used vs. using metaprogramming (e.g., class_eval and alias_method). There are a few exercises that go with the talk: Aquarium_RubyAOP_exercises.zip

Aquarium: AOP for Ruby Adobe PDF

This short talk (30 minutes) presented Aquarium to the aspect-oriented programming research community at the Aspect-Oriented Software Development 2008 Conference, in Brussels. The talk was based on my Industry Track paper. Note that some of the Aquarium APIs have changed since this talk and paper were prepared.

Modern Approaches to Software Development

A few years after I started my evolution from thinking in objects to thinking in functions, it occurred to me that our ideas of what's good and bad in software development have often changed. Today's dogma is tomorrow's heresy, if you will. So, I gave a talk on this idea at Strange Loop 2011 and subsequently in other venues.

Heresies And Dogmas In Software Development Adobe PDF Strange Loop 2011 Video (Yea, I know I used Comic Sans in that version...)

Five ideas in the history of software development that were once (or still are) popular, but now are (usually) seen as obsolete (plus a "bonus" topic). The video of the Strange Loop talk is on InfoQ.

I've done a series of talks on the theme of Polyglot and Poly-Paradigm Programming, where I discuss how using multiple languages and/or "paradigms" can simplify the solutions to common problems we encounter today in software developer.

Polyglot and Poly-Paradigm Programming Adobe PDF

The most recent version of this talk, which is available on GitHub.

Radical Simplification Through Polyglot and Poly-Paradigm Programming Adobe PDF

An earlier version of the "PPP" talk, given at QCon San Francisco 2008. The PDF includes some extra slides I omitted from the actual talk to save time. InfoQ has posted the video of this talk.

Clean Systems: Clean Code at the Architecture Level Adobe PDF

How do you keep systems and architectures "clean"? This talk is based on the "Clean Systems" chapter I wrote for Bob Martin's new Clean Code book.

Don't Do This! How Not to Write Java Software Adobe PDF.

I discuss 10 mistakes I see Java teams make, why they are bad, and what to do instead.

General AOSD

AOP in Academia and Industry Adobe PDF

I discuss some of the academic research and industry trends that led to the creation of AOP, the current state of things, and how both can contribute to the future development of AOP and emerging technologies that might use it.

Aspect-Oriented Programming and Design for Java and AspectJ Adobe PDF

This is an introduction to AOP, given as a presentation at the Chicago Java User's Group, Sept. 6, 2007. I discuss why AOP is interesting, what problems it solves, followed by a look at how aspects can be implemented in AspectJ and Spring AOP. I then look at several object-oriented design principles adapted to aspects and, along the way, demonstrate fine-grained separation of concerns using AspectJ.

I tried to follow the Takahashi Method of presentation design, which is especially challenging when you present code. Some of the slides look a bit busy, but only because the PDF doesn't show you the builds that I use in the live presentation. Any feedback on the presentation is welcome!

Aspect-Oriented Design Principles: Lessons from Object-Oriented Design (Adobe PDF on the AOSD 2007 Conference web site).

An examination of 11, well-established OOD principles and how they apply to AOD. The main objective of this paper is to address pragmatic issues of designing production-quality aspect-based software. In today's world, aspects won't prosper unless they promote agility, reusability, and maintainability. The 11 OOD principles discussed have proven to be effective design tools that promote these qualities (especially in languages like Java, C#, C/C++, etc.). I discuss how the principles apply to aspect software, how AOD refines them, and how they lead to new aspect-specific extensions that promote better aspect design. This paper is part of the Industry Track at AOSD 2007 in Vancouver, BC.

Contract4J

AOP@Work: Component Design with Contract4J
(IBM developerWorks).

An introduction to Contract4J and how to use it. The article also briefly discusses some emerging ideas about the nature of interfaces in Aspect-Oriented Design, and how Contract4J demonstrates some of those ideas.

The Challenges of Writing Reusable and Portable Aspects in AspectJ: Lessons from Contract4J Adobe PDF.

Writing Contract4J revealed many of the challenges faced when trying to write generic, reusable aspects in AspectJ. This paper discusses those challenges, how they were addressed, and offers suggestions for improvements to AspectJ and our concepts of AOD that will make it easier to write reusable aspects. Presented at the Industry Track, AOSD 2006, Bonn Germany, March 22, 2006 (Click here to get all the Industry Track papers).

Contract4J for Design by Contract in Java: Design Pattern-Like Protocols and Aspect Interfaces Adobe PDF

Contract4J comes in two forms; an implementation where contract tests are defined using Java 5 annotations and a more experimental implementation where the tests are defined as regular Java methods with a JavaBeans-like naming convention. This paper discusses how these two forms define a protocol with two different syntaxes that allow aspects to advice objects with minimal coupling, in the spirit of interface design. Presented at the ACP4IS Workshop at AOSD 2006, Bonn Germany, March 21, 2006.

Older Talks and Papers

The Future of AOP Adobe PDF

Predictions about the likely future of AOSD, based on the history of OOP. The basis for this comparison is the conceptual parallels between the two technologies. The presentation also has a brief description of AOP itself. It ends with an appraisal of the current state of AOP and offers some recommendations for how to begin working with it today.

Use Cases as Aspects V0.1 Adobe PDF

Some preliminary work on Ivar Jacobson's idea of considering Use Case-oriented software development as a form of AOSD.

AOP and MDA Adobe PDF

An examination of how AOSD addresses some technical challenges in OMG's Model Driven-Architecture (MDA).