Presentations and White Papers
Featured Presentations
Most of these talks are maintained on my GitHub Presentations repo, where you'll also find the original Keynote files.
|
What's Ahead for Big Data?
|
|---|---|
|
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. (Last updated: April 22, 2013) |
|
|
Scalding for Hadoop
|
|
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 , a.k.a. Beyond MapReduce
|
|
(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
|
|
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
|
|
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). This talk will also be available on the Strange Loop 2011 site and InfoQ will eventually publish the talk video. The video from CME Group Technology Conference talk will also be published soon. (last update: November 9th, 2011) | |
|
Better Programming through Functional Programming
|
|
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
|
|
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 Seductions of Scala
|
|
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: April 15th, 2012) 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. |
|
|
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
|
|
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
|
|
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
|
|
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
Modern Approaches to Software Development
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 
The most recent version of this talk, which is available on GitHub.
Radical Simplification Through Polyglot and Poly-Paradigm Programming
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 
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
.
I discuss 10 mistakes I see Java teams make, why they are bad, and what to do instead.
Scala
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.
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
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. (last update: December 2nd, 2012)
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. (Last updated: April 22, 2013)
Why Big Data Needs to Be Functional 
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.
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)
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
and Better Ruby Through Functional Programming
.
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 
A tutorial that Aslak Hellesøy and I did August 27, 2009 at Agile 2009.
Principles of Ruby Application Design 
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 
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
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.
General AOSD
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 
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 (
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
Getting Started with Contract4J
.
Ivan A Krizsan graciously donated this paper which discusses how to build Contract4J from scratch, using Eclipse, and it provides an example of using Contract4J. Thanks Ivan!!
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
.
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 
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
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.
Some preliminary work on Ivar Jacobson's idea of considering Use Case-oriented software development as a form of AOSD.
An examination of how AOSD addresses some technical challenges in OMG's Model Driven-Architecture (MDA).

















