Articles

I created a spending tracker product, because I loathe subscriptions

I built a Google Sheets spending tracker because I refuse to pay $109/year for a glorified dashboard - and I'm selling it for $10.

London workspaces I've tried

My infrequently-updated list of places to work remotely in London

Kubernetes Pod IP addresses: How to find and use them

A practical guide to working with Pod IP addresses in Kubernetes, from my own experience.

The curious case of 'maxSession' in EAP/Wildfly

What does maxSession do? Where does it come from? Who even are you, anyway?

I wrote an MVP in Java and it was actually pleasant

Sometimes the best tools are the tools you already know.

Building a contact form API with Apache Camel and Quarkus

What happens when you don't want to pay for, or use, a SaaS app? Well, you write your own, of course.

Transformation in Camel: How to do it

Want your data, your way? Learn all about the different ways that you can transform data in Apache Camel.

Why I've launched a new website

I've started a new blog for my tech articles. Here's why.

When should you use Apache Camel?

See the use cases for Apache Camel, and when you might think about using this Java integration framework.

Why won't my containers talk to each other?!

I spent way too long figuring out Docker networking. Here's what I learned about getting containers to communicate, with real examples from my dev environment.

What are Camel routes?

Understanding routes and how to use them in Apache Camel

Enterprise Integration Patterns: Book Review

It's a classic software architecture book. Is it worth a buy?

Red Hat Fuse on OpenShift Tutorial [video]

Getting started with Fuse? Follow this short video, where I create a Fuse app and deploy it onto OpenShift.

Pulling images into OpenShift from the Red Hat registry

How to use all those sweet images from the Red Hat registry, without nasty authorisation errors

A Brief Guide to DevOps

A brief introduction to the ideas of DevOps

Event-driven integration on Kubernetes with Camel & KEDA

Can we develop apps in Kubernetes that autoscale based on events? Perhaps, with this example using KEDA, ActiveMQ and Apache Camel

Kubernetes on AWS: a developer's perspective

Playing around and learning Kubernetes? I tried creating an EKS cluster

Taking action

Some thoughts currently percolating with me on how to take action on side projects

Introducing... Safety Curtain

From lockdown idea to MVP: I launched a new tiny product this week

How I use draw.io at the command line

How to create nice-looking diagrams in an open, shareable, Git-friendly format

From developer to author: how I wrote a book

I wrote and self-published a technical book. Here's my story, in case you're thinking of doing the same.

Asciidoctor syntax - a cheatsheet

I was writing a lot of Asciidoctor so I thought I'd make a cheatsheet.

Impact Mapping - a cheatsheet

Here's an impact mapping cheatsheet which you can use as a reminder, or help you run an impact mapping session.

Using ActiveMQ with Apache Camel - with example

How to send and receive messages from an ActiveMQ Artemis message broker using Camel's JMS component and Spring Boot

Connecting to a database or message broker running in OpenShift

In the development zone? Save time by connecting directly to your database in OpenShift, using port forwarding.

XA transactions in Camel: a checklist

What do you need to set up distributed transactions in Apache Camel correctly?

Calling a REST service from Apache Camel

How to call a REST API from Apache Camel, using Camel's HTTP component

Monitoring Camel routes with REST

How to fetch metrics from your Camel routes over HTTP

Where do our logs go?

Where do you put logs when developing microservices?

Can you have multiple Camel Contexts in one app?

An alternative to running multiple Camel Contexts in Spring Boot

How to play nicely together

Codifying team behaviour with a social contract

Learning by reading other people's code

How I solve problems and learn; by standing on the shoulders of giants.

Automation is worth the effort

Get automating your build, test and deployment processes. The effort is worth it.

There can be only one properties file

How to use Linux text manipulation in a Jenkinsfile to produce a Spring Boot properties file

Adventures in debugging: Camel mock endpoints are real

I discovered that mock endpoints are actually real

S2I builds in OpenShift - an example with Java and Maven

How to create S2I BuildConfigs for OpenShift

Using environment variables in Jenkins pipelines - with examples

How to use environment variables inside a Jenkinsfile

Deploying Spring Boot onto Kubernetes

Running a Spring Boot Java application on Kubernetes with Minikube

Using Arquillian Cube to test containers in Kubernetes

How to implement a basic integration test for a container using Arquillian Cube

JBoss/Wildfly: Setting a custom resource adapter for an MDB

Configuring a Message-Driven Bean to use a custom resource adapter, rather than the default one

Consuming a SOAP service with Apache Camel

How to use consume a SOAP service using the Apache CXF component in Camel

Infinispan Query DSL: quick example

A quick example of using the Query DSL in the Infinispan in-memory cache

Use the @MockEndpoints annotation in Camel [Video]

Create mock endpoints in your Camel routes automatically without having to change your route definition

Creating a REST service using the REST DSL [Video]

Using the REST DSL and Restlet to create a REST service in Apache Camel

Bean validation in Apache Camel

How to use Camel's Bean Validation component to easily perform simple data validation

Shutting down Camel after X messages

How to shut down Camel after a certain amount of time or messages, using the new auto-shutdown feature in Camel 2.19+ with Spring Boot

Using languages with Dozer in Camel

How to use Simple, Groovy and other expressions in a Dozer mapping

Spring Boot command line arguments example

How to run a Spring Boot app with JVM params and command line arguments

Using a dynamic Git branch name in a Jenkins job

How to be able to run Jenkins jobs with a dynamic branch name

Disable the env endpoint for Spring Boot apps

How to NOT expose your Spring Boot app's configuration