Interested in working together? I'm currently available for hire! Click here to learn more.


ReactiveTO survey results

Reactive programming • May 14, 2019

We sent out a survey to the members of ReactiveTO on the type of content they wanted to see in 2019.

Demystifying machine learning

Machine learning • December 19, 2018

Classical software is primarily based around the notion of decision trees. Any programmer who has coded an if-else-then statement can understand the basics of data science.

Give credit and take blame

Career • June 4, 2017

When success is ultimately achieved, give the credit to others. There will be time for you to internalize your own impact on the success of a project.

Understanding the role of technology marketing

Career • May 31, 2017

Marketing done right should give back to the community more than it takes from it. Marketing is not advertising. Let's discuss the difference.

Develop your sales IQ

Career • May 2, 2017

Many of the open source technologies that developers love are funded through the efforts of sales teams at open source companies. Sales teams work hard and they absolutely deserve more credit for moving the open source community forward.

Modelling reactive systems with event storming

Medium • March 11, 2017

A successful Event Storming session — as well as a successful software project — demands equal parts art, knowledge, and technical skill. Also, it’s much cheaper to make changes to sticky notes than production code. Nothing in this article requires technical expertise or previous experience with reactive, event-driven systems.

What makes the Play framework fast?

Medium • December 25, 2016

Play embraces a fully reactive programming model through the use of futures for asynchronous programming, work stealing for maximizing available threads, and Akka for distribution of work. Not only does Play have some extreme advantages over servlet-based web frameworks, it also has full support for two of the most popular languages on the JVM, Java and Scala.

Goodbye, Lightbend

Career • October 9, 2016

It’s been an incredible two-and-a-half years.

The zen of process

Process • April 26, 2016

Process improvement is the most impactful way to rise above your individual work and impact the overall capacity of the company you work for. All organizations live and die by the quality of their processes.

Diving into Akka Streams

Medium • March 3, 2016

Akka Streams is a toolkit for per-event processing of streams. It’s an implementation of the Reactive Streams specification, which promises interoperability between a variety of compliant streaming libraries. If you want to get hands-on with streaming, you've come to the right place.

A Journey into Reactive Streams

Medium • August 28, 2015

Rather than acting on data at rest, modern software increasingly operates on data in near real-time. Big data is less important than fast data, and fast data is crucial to fast knowledge.

Reflecting on Reactive Systems

Architecture • April 16, 2015

Reactive systems are at the heart of a new breed of enterprise system that fully embraces modern infrastructure.

What is Reactive Programming?

Medium • August 19, 2014

To understand Reactive — both the programming paradigm and the motivation behind it — it helps to understand the challenges that are faced by developers and companies today compared to the challenges faced only a decade ago.

Retrospective: A Night of Reactive Programming

Architecture • August 6, 2014

I hosted the first event for ReactiveTO on July 24th. It was fantastic evening filled with great talks on reactive programming principles, microservices, Akka, and ReactiveCocoa.

Transitioning to Scala

Medium • April 3, 2014

Advice from a developer who helped rebuild Walmart.ca with Scala and Play.

Agile and Waterfall can live together in harmony

Process • November 15, 2013

Agile is challenging to use on certain projects, like those bound by fixed-price, fixed-date contracts. Agencies, governments, and other organizations who are bound by contracts struggle to implement Agile effectively. We'll explore ways that we can borrow the best processes from Agile when we're bound by the limitations of fixed-price contracts and statements of work.

Migrating to Git, Part 3: Moving your code to Git

Process • September 11, 2012

If you're ready to proceed with a migration to Git, congratulations! You're about to start using one of the best development tools available. In this third part of the series we'll explore the actual migration and how it will impact your workflow in the future.

Migrating to Git, Part 2: Prerequisites

Process • September 10, 2012

Changing version control systems is not a trivial undertaking. Certain technical debt should not exist in your code base to ensure a smooth transition. This is a checklist to help make sure your team is prepared to move to Git.

Migrating to Git, Part 1: Advantages

Process • September 9, 2012

Git is simply one of the best things that’s happened to the development workflow in a decade; if you choose to master it. The first in this three part series will begin your journey from Git novice to Git master.

Joy at QCon New York

Career • July 2, 2012

Joy isn't the typical emotion that comes to mind when one pictures enterprise software and enterprise software developers, but technical culture is changing rapidly and more people are recognizing the business value of joy. It's an exciting time to be a software developer.

Multiplayer tic-tac-toe in Java using the WebSocket API, Netty (NIO), and jQuery

Code • November 2, 2011

It was big news in 2010 when Twitter migrated their search from Ruby on Rails to Java-based Netty. Not only was it big in the news department, but it was also big in the results department: Twitter reported their search performance increased by 3x. In this post we'll explore Netty by using it to build a game of multiplayer tic-tac-toe.

Fixing Fancybox with AJAX (and Wicket)

Code • December 28, 2010

A page I'm working on accepts multiple image uploads. Once the images are successfully processed asynchronously on the server, an image panel on the same page is automatically refreshed. The AJAX callback works fine and updates the panel view with the newly uploaded photos, but the net result is that Fancybox stops working completely.

Connection pooling with Hibernate 3.3.x and C3P0

Code • December 26, 2010

Hibernate uses it’s own built-in connection pool out of the box. There are some pretty heavy duty sites running with the default connection pool enabled in production despite the obvious warning against doing this.

Beyond Java

Architecture • December 13, 2010

We explore a Forrester report which asserts that Java is a dead end for enterprises and business software should be built with a 4GL such as webMethods. Let's explore why Java won't disappear from the enterprise any time soon.

The future of Java in the enterprise

Architecture • November 15, 2010

Java is a utilitarian, status-quo ecosystem for getting things done, albeit not very quickly. This is a good thing. Instead of worrying about sharp edges, developers get to work with a very stable, very slow moving target. What's the future hold for enterprise Java developers?

Desire paths

Architecture • September 5, 2010

A desire path represents the evolutionary nature of how people interact with their environment. An engineer designs a concrete path, but people find it more convenient to create their own. Software isn't any different. Users bump up against the limitation of an application but find their own workaround through sheer necessity.

The greatest line of code ever

Code • August 22, 2010

Look at this piece of code to be reminded of the magnificence of code reviews. Hallelujah.

Integrating Uploadify with Java using Apache Wicket

Code • April 30, 2010

One of the most requested features on any site that accepts file submissions is the ability to handle multiple uploads elegantly. The current HTML standard only permits one file upload at a time, which makes transferring a large number of files quite tedious. This tutorial will show how to painlessly integrate Uploadify and Java using Apache Wicket.

Be a Revolutionary

Career • February 23, 2010

Good developers always try to deliver amazing software in spite of obstacles. The perfect methodology for our team may not integrate well with the rest of the organization. The perfect programming language may be unknown to most developers on the team. The perfect architecture may require three months to develop but the deadline is three weeks away. Good developers embrace a harmonious balance between pragmatism and idealism.

Apache Aries: OSGi for the Enterprise

Architecture • November 18, 2009

It looks like enterprise developers are in for a real treat: the missing secret sauce that allows enterprise application developers to harness the goodness of OSGi.

Don't forget team structure

Process • October 23, 2009

In my experience I've noticed that flexible and adaptable organizations produce flexible and adaptable applications. Rigid and inflexible organizations tend to produce rigid and inflexible applications. Co-incidence?

Is SOA doomed?

Architecture • August 10, 2009

The spirit of SOA is fantastic; adaptable, flexible, maintainable, loosely-coupled applications supported by open governance, strong relationships between business and technology folks, and co-operation across all silos and levels of an organization. What's not to love? We'll explore the pitfalls of SOA and explore the future of SOA in the enterprise.