For most of today’s applications, using one language and one paradigm—for instance, object-oriented programming—is inadequate. Today’s applications are often polyglot, involving multiple languages, and multiparadigm, involving a mixture of deployment directives as well as functional, relational, object-oriented, aspect-oriented, and other paradigms. IEEE Software is soliciting articles for a special issue on multiparadigm programming, or MPP. It will explore MPP technologies, advantages, disadvantages, and applications ranging from embedded and IT systems to the Internet.

You can find out more information about the kinds of articles we are looking for, guidelines for submitters, etc. on the CfP home page. Note that we also welcome people who would be willing to review submissions. Contact me directly if you have questions.

About Aspect Programming

Aspect Programming is an advocacy site for Aspect-Oriented Software Development, sometimes just called Aspect-Oriented Programming. We explore the role that AOSD plays in many facets of software development, especially design and implementation. We also explore the practical challenges of using existing AOSD tools and techniques. Lately, we have been developing Aquarium, an AOP toolkit for the Ruby language.


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

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

This is 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 Days 2014 talk discusses the details. (Last updated: June 17, 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)

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

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)

Video 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. The older InfoQ talk video is here.)

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 Talks page.