May 6, 2026
AWS
Managing Secrets Securely with AWS Secrets Manager and Spring Boot
How to load secrets from AWS Secrets Manager into Spring Boot at startup, wire IAM least-privilege access, enable automatic rotation, and avoid the common configuration anti-patterns.
Java
Spring Boot
AWS
May 5, 2026
Java
Optional Done Right — Patterns That Actually Improve Readability
The Optional patterns that improve readability and the anti-patterns that make code worse — covering map, flatMap, or, ifPresentOrElse, and stream() with Java 9+ additions.
Java
Functional Programming
May 4, 2026
Betfair
Parsing Best Available to Back and Lay Prices from the Streaming API
How the Betfair Streaming API represents best available back and lay prices, how delta updates work, and how to reconstruct a clean order book view in Java without the full ladder overhead.
Java
Betfair
Trading
May 3, 2026
Spring Boot
Custom Health Indicators with Spring Boot Actuator
How to write custom HealthIndicator and CompositeHealthContributor implementations in Spring Boot Actuator — with real examples for external service checks and IAM-aware AWS dependencies.
Java
Spring Boot
Observability
May 2, 2026
Spring Boot
Exception Handling with @ControllerAdvice and RFC 7807 Problem Details
How to build consistent, standards-compliant error responses in Spring Boot 3 using @ControllerAdvice and the RFC 7807 ProblemDetail class.
Java
Spring Boot
REST API
May 1, 2026
Spring Boot
@ConfigurationProperties — Type-Safe Configuration Done Right
How to replace @Value sprawl with @ConfigurationProperties for type-safe, validated, and testable configuration in Spring Boot microservices.
Java
Spring Boot
Configuration
Apr 30, 2026
AWS
Provisioning Cloud Infrastructure with CDK for Java
How to define, deploy, and manage AWS infrastructure using the CDK for Java — stacks, constructs, environment separation, and the patterns that make CDK codebases maintainable at scale.
Java
AWS
CDK
Apr 29, 2026
Spring Boot
Real-Time Stream Processing with Kafka Streams
How to build real-time stream processing pipelines with Kafka Streams and Spring Boot — the Streams DSL, stateful operations, KTable joins, windowing, exactly-once processing, and production topology design.
Java
Spring Boot
Apache Kafka
Apr 28, 2026
Betfair
In-Play Trading Architecture — How Everything Changes at the Off
How the architecture of an automated Betfair trading system must change when transitioning from pre-race to in-play — latency requirements, signal sources, order management constraints, and the state machine that keeps it safe.
Java
Betfair
Trading
Apr 27, 2026
Betfair
Handling Market Suspension and Streaming Reconnection in Java
How to handle Betfair Streaming API disconnections, market suspensions, and state recovery correctly in Java — connection lifecycle management, exponential backoff reconnection, market status tracking, and safe order management during suspension.
Java
Betfair
Trading
Apr 26, 2026
Kubernetes
Health Probes and Spring Boot Actuator — Getting Them Right
How to wire Kubernetes liveness, readiness, and startup probes to Spring Boot Actuator health endpoints — and avoid the configuration mistakes that cause unnecessary pod restarts.
Java
Spring Boot
Kubernetes
Apr 25, 2026
Spring Boot
Distributed Locking with Redis — Preventing Concurrent Execution
How to use Redis-backed distributed locks to prevent duplicate execution across multiple application instances — with Redisson and Spring Integration.
Java
Spring Boot
Redis
Apr 24, 2026
Spring Boot
Graceful Shutdown — Draining Requests Before the JVM Exits
How to configure Spring Boot graceful shutdown correctly, what it protects against, and how to wire it safely with Kubernetes terminationGracePeriodSeconds.
Java
Spring Boot
Production
Apr 23, 2026
Betfair
Commission Modelling — Calculating True Net P&L
How Betfair commission really works — market base rate, Premium Charge, discount tiers — and how to model it correctly in a Java P&L calculator.
Betfair
Trading
Java
Apr 22, 2026
JPA
Performance Tuning — Solving the N+1 Query Problem for Good
How to identify and eliminate the N+1 query problem in JPA/Hibernate applications before it reaches production.
Java
JPA
Hibernate
Apr 21, 2026
Spring Batch
Processing Large Datasets Without Killing Your Database
A practical guide to Spring Batch for bulk data processing — chunk-based processing, JdbcCursorItemReader, skip and retry policies, restartability, and parallel partitioning at scale.
Java
Spring Batch
Performance
Apr 20, 2026
Spring Boot
Transaction Management Deep Dive
A thorough guide to Spring transaction management — how @Transactional actually works, propagation behaviours, common failure modes, transaction boundaries with MongoDB and JPA, and the patterns that keep complex services correct under failure.
Java
Spring Boot
MongoDB
Apr 19, 2026
Reflections
A Year of Java Posts — What I've Learned and What's Next
Reflecting on a year of writing about Java, Betfair trading systems, and software architecture — what resonated, what I got wrong, and what's ahead.
Java
Career
Software Development
Apr 18, 2026
Java
Pattern Matching — instanceof and Switch Expressions Done Right
A practical guide to pattern matching in modern Java — instanceof pattern variables, guarded patterns, switch expressions, sealed classes, and record patterns done properly.
Java
Pattern Matching
Modern Java
Apr 17, 2026
Betfair
In-Play Betting Automation — Latency, Execution, and Survival
The reality of automated in-play betting on Betfair — API vs Streaming API latency, market suspension cascades, hedging open positions, and building a Java system that survives the chaos.
Java
Betfair
In-Play
Apr 16, 2026
Betfair
BSP Starting Price — How It Works and How to Trade Around It
A practical guide to Betfair Starting Price — how the BSP algorithm works, when to use it, how to place BSP bets via the API, and how to use BSP as a model performance benchmark.
Betfair
BSP
Trading
Apr 15, 2026
Spring Boot
@Async — Offloading Work Without Blocking the Request Thread
How to use @Async in Spring Boot correctly — including the executor configuration, exception handling, and the proxy gotcha that trips everyone up.
Java
Spring Boot
Async
Apr 14, 2026
Architecture
The Twelve-Factor App Applied to Spring Boot
Applying the Twelve-Factor App methodology to Spring Boot microservices — what each factor means in practice, how Spring Boot supports it, and where developers commonly go wrong.
Java
Spring Boot
Architecture
Apr 13, 2026
Java
ExecutorService and Thread Pools — Getting Concurrency Right
Stop creating raw threads. Learn how to size and manage Java thread pools correctly, avoid Future.get() traps, and use CompletableFuture for everything new.
Java
Concurrency
Threading
Apr 12, 2026
AWS
SQS Messaging Patterns for Spring Boot Microservices
Practical SQS patterns for Spring Boot microservices — standard vs FIFO queues, @SqsListener, dead letter queues, idempotency, and visibility timeout tuning.
AWS
SQS
Spring Boot
Apr 11, 2026
Java
Enums as State Machines — Beyond Simple Constants
Use Java enums to build self-contained, type-safe state machines with validated transitions and behaviour attached directly to each state.
Java
Design Patterns
Architecture
Apr 10, 2026
AWS
Deploying Spring Boot to AWS ECS with Fargate
A practical guide to deploying containerised Spring Boot applications on AWS ECS with Fargate — Dockerfile, ECR, task definitions, ALB, Parameter Store, and GitHub Actions CI/CD.
Java
Spring Boot
AWS
Apr 9, 2026
Spring Boot
WebClient — Reactive HTTP Without the Complexity
How to use Spring WebClient as a modern, non-blocking replacement for RestTemplate — including when it's fine to just call .block().
Java
Spring Boot
WebClient
Apr 8, 2026
Betfair
Greening Up — Locking In Profits Before the Off
How to implement greening up on Betfair in Java — the maths, a GreenUpCalculator class, when to trigger it, handling partial greens, rounding, and the edge cases that catch out new traders.
Betfair
Trading
Java
Apr 7, 2026
Betfair
Integrating Live Sports Data Feeds with Betfair Java Systems
How to integrate live sports data feeds alongside Betfair market data in Java — correlating events to markets, consuming score signals, and meeting in-play latency requirements.
Java
Betfair
Sports Data
Apr 6, 2026
Java
The Java Time API — A Practical Field Guide
A no-nonsense guide to java.time — when to use LocalDate vs ZonedDateTime vs Instant, how to handle timezones correctly, formatting, Jackson serialisation, and the pitfalls to avoid.
Java
Date and Time
Best Practices
Apr 5, 2026
Java
MapStruct — Eliminating DTO Mapping Boilerplate
How MapStruct's annotation processor generates type-safe, compile-time DTO mapping code — removing the fragile handwritten boilerplate that breaks silently when your model changes.
Java
MapStruct
Spring Boot
Apr 4, 2026
Java
Foreign Function and Memory API — Project Panama Explained
How to use Java 21's Foreign Function and Memory API — MemorySegment, Arena, native function calls via MethodHandles, jextract, and when to use FFM over JNI or JNA.
Java
Java 21
Project Panama
Apr 3, 2026
Architecture
The Saga Pattern for Distributed Transactions with Kafka
How to implement the Saga pattern for distributed transactions in Java with Kafka — choreography vs orchestration, compensating transactions, state tracking, and the failure modes that trip up every first implementation.
Java
Spring Boot
Apache Kafka
Apr 2, 2026
AWS
Lambda SnapStart — Java Cold Start Solved?
What Lambda SnapStart actually does, how to configure it for Java, what changes in your application code to make it work correctly, and whether it actually solves the Java cold start problem in practice.
Java
AWS
Lambda
Apr 1, 2026
Betfair
Reading Ladder Depth — Beyond the Top 3 Levels
How to read and analyse full ladder depth from the Betfair Streaming API in Java — representing the full order book, detecting iceberg orders, measuring liquidity distribution, and using depth signals that the top 3 levels miss.
Java
Betfair
Trading
Mar 31, 2026
Betfair
Market Liquidity Analysis — Measuring Tradable Depth in Java
How to measure real-time market liquidity on Betfair in Java — available depth, spread analysis, matched volume, liquidity build patterns, and minimum thresholds for safe automated trading.
Java
Betfair
Liquidity
Mar 30, 2026
Kafka
Consumer Offset Management and Commit Strategies in Spring Boot
How Kafka consumer offsets work, the trade-offs between auto and manual commit, and how to implement at-least-once and exactly-once semantics correctly in a Spring Boot consumer.
Java
Kafka
Spring Boot
Mar 29, 2026
Betfair
Large Order Detection from Ladder Depth in Java
How to detect large orders and sudden liquidity changes in the Betfair Exchange ladder, what the signals mean for price movement, and how to implement the detection logic in Java.
Java
Betfair
Trading
Mar 28, 2026
Spring Boot
Structuring a Multi-Module Maven Project
How to structure a Spring Boot application as a multi-module Maven project — parent POM, dependency management, module layout, and keeping the domain module dependency-free.
Java
Spring Boot
Maven
Mar 27, 2026
Betfair
Building a Backtesting Framework for Trading Strategies in Java
How to build a Betfair backtesting framework in Java — streaming data replay, realistic order fill simulation, P&L tracking, Sharpe ratio, and the limitations you must understand.
Java
Betfair
Backtesting
Mar 26, 2026
Architecture
Idempotency Patterns in Event-Driven Java Systems
How to implement idempotency in event-driven Java systems — idempotency keys, at-least-once delivery, the outbox pattern, Redis deduplication, and Kafka consumer patterns.
Java
Architecture
Idempotency
Mar 25, 2026
Java
CompletableFuture vs Virtual Threads — Choosing the Right Async Model
When to use CompletableFuture vs Java 21 virtual threads — comparing programming models, error handling, debugging, and performance for real concurrent IO workloads.
Java
Java 21
CompletableFuture
Mar 24, 2026
Betfair
Multi-Exchange Abstraction — Betfair, Betdaq, and Smarkets in One Framework
How to design a Java trading framework that targets Betfair, Betdaq, and Smarkets through a common abstraction — covering adapters, data normalisation, and unified order management.
Java
Betfair
Betdaq
Mar 23, 2026
Betfair
Handling Non-Runners and Reduction Factors in the Streaming API
How the Betfair Streaming API signals non-runner removals, how reduction factors work, and how to update open positions and historical signals correctly when a runner is withdrawn.
Java
Betfair
Trading
Mar 22, 2026
Spring Boot
Consumer-Driven Contract Testing with Spring Cloud Contract
Consumer-driven contract testing with Spring Cloud Contract — covering the contract DSL, stub generation, stub runner, and integrating contract verification into CI/CD pipelines.
Java
Spring Boot
Spring Cloud Contract
Mar 21, 2026
Testing
BDD with Cucumber and Spring Boot
How to use Cucumber for Behaviour-Driven Development in Spring Boot — covering feature files, step definitions, Spring context wiring, shared state, and Testcontainers.
Java
Spring Boot
Cucumber
Mar 20, 2026
Spring Boot
Distributed Caching with Redis and Spring Cache
How to implement distributed caching in Spring Boot with Redis — @Cacheable, cache configuration, TTL strategies, cache-aside pattern, eviction, and the failure modes that catch teams out in production.
Java
Spring Boot
Redis
Mar 19, 2026
Betfair
Building a Market Data Recorder in Java
How to build a Betfair market data recorder in Java — capturing live Streaming API data to disk for backtesting, replay, and strategy analysis.
Java
Betfair
Data Recording
Mar 18, 2026
Java
SequencedCollections and Modern Collection APIs in Java 21
Java 21's SequencedCollection, SequencedSet, and SequencedMap — getFirst, getLast, reversed, and the modern collection utilities that tidy up everyday Spring Boot application code.
Java
Java 21
Collections
Mar 17, 2026
Spring Boot
Spring Cloud Gateway — API Gateway Patterns
Building an API gateway with Spring Cloud Gateway — route configuration, predicates, filters, Redis rate limiting, circuit breaking, auth forwarding, and when a gateway adds value vs complexity.
Java
Spring Boot
Spring Cloud Gateway
Mar 16, 2026
DevOps
CI/CD for Spring Boot Microservices with GitHub Actions
How to build a production-grade CI/CD pipeline for Spring Boot microservices using GitHub Actions — build, test, Docker image publishing, environment promotion, and the patterns that keep pipelines fast and reliable.
Java
Spring Boot
GitHub Actions
Mar 15, 2026
Testing
Testcontainers for Kafka — Real Broker Integration Tests
How to write real Kafka integration tests in Spring Boot using Testcontainers — spinning up a real broker, testing producers and consumers end-to-end, verifying exactly-once behaviour, and structuring tests that are fast and reliable.
Java
Spring Boot
Apache Kafka
Mar 14, 2026
Betfair
Efficient Market Filtering and Catalogue Queries in Java
How to query the Betfair catalogue API efficiently in Java — filtering markets by event type, competition, time window, and status, caching catalogue data, and structuring queries to stay within API rate limits.
Java
Betfair
Trading
Mar 13, 2026
Betfair
Price Velocity and Market Momentum in Java
How to calculate price velocity and market momentum from Betfair Streaming data in Java — tracking LTP movement rate, detecting steam and drift signals, and combining velocity with Weight of Money for a composite entry signal.
Java
Betfair
Trading
Mar 12, 2026
Betfair
API Rate Limiting — Managing Quotas in High-Frequency Systems
How to manage Betfair API rate limits in a Java trading system — data request quotas, charge model, request batching, the Streaming API, and monitoring quota usage in production.
Java
Betfair
Rate Limiting
Mar 11, 2026
Architecture
Saga Pattern for Distributed Transactions in Spring Boot
Implementing the Saga pattern for distributed transactions in Spring Boot with Kafka — choreography vs orchestration, compensating transactions, failure handling, and saga state persistence.
Java
Spring Boot
Saga
Mar 10, 2026
Java
Performance Profiling with JDK Flight Recorder and Mission Control
Use JDK Flight Recorder and Mission Control to profile Java services in production — flame graphs, allocation hotspots, lock contention, and GC analysis with near-zero overhead.
Java
Performance
JFR
Mar 9, 2026
Spring Boot
Testing REST Controllers with @WebMvcTest and MockMvc
How to test Spring Boot REST controllers in isolation using @WebMvcTest and MockMvc — without starting a full server — covering request building, response assertions, and security wiring.
Java
Spring Boot
Testing
Mar 8, 2026
Java
Text Blocks, String Templates, and Modern String Handling
How Java text blocks and string templates clean up multi-line strings, SQL, JSON, and HTML — with practical examples for Spring Boot and API clients.
Java
Java 21
Text Blocks
Mar 7, 2026
Matchbook
Integrating the Matchbook Exchange API in Java
A practical guide to integrating with the Matchbook Exchange API in Java — authentication, REST client setup, placing and managing orders, reading market prices, and the key differences from the Betfair API.
Java
Matchbook
Trading
Mar 6, 2026
Testing
Mutation Testing with PITest in Java
What mutation testing reveals that code coverage misses, how to configure PITest in a Java Spring Boot project, and how to act on surviving mutants effectively.
Java
Testing
PITest
Mar 5, 2026
Apache Kafka
Consumer Patterns — Idempotency and Exactly-Once Processing
Building idempotent Kafka consumers in Java — deduplication patterns, idempotency keys, outbox integration, and when to reach for Kafka transactions.
Java
Apache Kafka
Idempotency
Mar 4, 2026
Java
Immutable Design Beyond Records — Defensive Copies, Value Objects, and Wither Methods
A practical guide to immutable design in Java — when to use records, when to write manual value objects, how to handle collections correctly, and the wither pattern for clean modification.
Java
Architecture
DDD
Mar 3, 2026
Betfair
Market Suspension Handling in Java Trading Systems
How to handle Betfair market suspension events correctly in a Java trading system — state machines, safe position management, and re-entry logic after resumption.
Java
Betfair
Trading
Mar 2, 2026
Betfair
API Authentication and Non-Interactive Login from Java
How to authenticate with the Betfair Exchange API from a server-side Java application using certificate-based non-interactive login, session token management, and automatic renewal.
Java
Betfair
Trading
Mar 1, 2026
Spring Boot
Spring Security — JWT Authentication for REST APIs
How to implement stateless JWT authentication in Spring Boot REST APIs — filter chain, token generation, validation, refresh tokens, and role-based access control.
Java
Spring Boot
Spring Security
Feb 28, 2026
AWS
RDS PostgreSQL with IAM Authentication and SSL in Spring Boot
How to connect a Spring Boot service to RDS PostgreSQL using IAM database authentication instead of a static password — eliminating credentials from configuration and enabling automatic rotation.
Java
Spring Boot
AWS
Feb 27, 2026
Betfair
Overround Calculation and Market Efficiency Scoring in Java
How to calculate the overround on a Betfair Exchange market, what it tells you about market efficiency, and how to build an efficiency score that filters for trading opportunities in Java.
Java
Betfair
Trading
Feb 26, 2026
Spring Boot
Graceful Shutdown and Zero-Downtime Rolling Deploys
How to configure Spring Boot graceful shutdown to drain in-flight requests before terminating, and what Kubernetes lifecycle hooks and readiness probes you need for zero-downtime rolling deploys.
Java
Spring Boot
DevOps
Feb 25, 2026
Java
Custom Metrics with Micrometer — Counters, Gauges, and Distribution Summaries
How to instrument a Spring Boot service with custom Micrometer metrics — publishing counters for events, gauges for current state, timers for latency, and distribution summaries for arbitrary measurements.
Java
Spring Boot
Observability
Feb 24, 2026
Architecture
Strangler Fig — Migrating a Monolith to Microservices Incrementally in Java
How to apply the strangler fig pattern to incrementally migrate a Java monolith — routing traffic, extracting bounded contexts, and keeping the system running throughout the migration.
Java
Spring Boot
Architecture
Feb 23, 2026
Betfair
Steam Moves — Detecting Rapid Price Change as a Trading Signal in Java
How to detect steam moves in Betfair pre-race markets — rapid, sustained price shortening driven by informed money — and how to build a Java signal that distinguishes steam from noise.
Java
Betfair
Trading
Feb 22, 2026
Spring Boot
OAuth2 Resource Server — Validating JWTs with Spring Security
How to configure a Spring Boot service as an OAuth2 resource server that validates JWTs from an identity provider — covering JWKS validation, custom claims extraction, and method-level security.
Java
Spring Boot
Security
Feb 21, 2026
AWS
Blue/Green Deployments on ECS Fargate with CodeDeploy and CDK
How to configure blue/green deployments for an ECS Fargate service using CodeDeploy and AWS CDK — shift traffic gradually, run validation hooks, and roll back automatically on failure.
Java
AWS
DevOps
Feb 20, 2026
Java
Efficient Pagination — Offset vs Keyset with Spring Data
Why offset pagination degrades at scale and how to implement keyset pagination in Spring Data JPA — covering the trade-offs, the query pattern, and how to expose it cleanly through a REST API.
Java
Spring Boot
Database
Feb 19, 2026
Betfair
Each-Way Betting — Place Markets, Price Structure, and API Differences in Java
How each-way betting works on Betfair Exchange, how place markets differ from win markets in the API, how to identify them programmatically, and what this means for price analysis.
Java
Betfair
Trading
Feb 18, 2026
Architecture
Domain Events — Decoupling Aggregates Without a Message Broker
How to model and publish domain events within a Spring Boot application using the application event bus — decoupling aggregates without Kafka, with a clear path to async messaging later.
Java
Spring Boot
Architecture
Feb 17, 2026
Spring Boot
Distributed Cron Jobs with ShedLock and Spring Scheduling
How to prevent duplicate execution of scheduled tasks across multiple Spring Boot instances using ShedLock — covering setup, lock providers, lock duration tuning, and observability.
Java
Spring Boot
Architecture
Feb 16, 2026
Testing
Property-Based Testing in Java with jqwik
How to write property-based tests in Java with jqwik — generating hundreds of inputs automatically, expressing invariants rather than examples, and finding the edge cases you didn't think to write.
Java
Testing
Feb 15, 2026
Betfair
Market Status in the Streaming API — Handling ACTIVE, SUSPENDED, and CLOSED States
How market status transitions are signalled in the Betfair Streaming API, what each status means for your order book and positions, and how to implement correct state machine handling in Java.
Java
Betfair
Trading
Feb 14, 2026
AWS
Java Lambda Cold Start Reduction — GraalVM Native Image and SnapStart
How to reduce Java Lambda cold start times using GraalVM Native Image and Lambda SnapStart — what each approach costs, what it gains, and when to use which.
Java
AWS
Performance
Feb 13, 2026
Spring Boot
Building a Custom Auto-Configuration for Shared Libraries
How to write a Spring Boot auto-configuration that activates based on conditions — covering @ConditionalOnClass, @ConditionalOnProperty, spring.factories, and the AutoConfiguration.imports pattern.
Java
Spring Boot
Architecture
Feb 12, 2026
Java
CompletableFuture Composition — thenCompose, thenCombine, and allOf in Practice
How to compose async operations with CompletableFuture — chaining with thenCompose, combining results with thenCombine, waiting for all with allOf, and handling errors without blocking.
Java
Concurrency
Functional Programming
Feb 11, 2026
Architecture
Resilience Patterns — Circuit Breaker, Bulkhead, and Timeout in Distributed Systems
The circuit breaker, bulkhead, and timeout resilience patterns — what problem each solves, how they interact, and when to apply them in a distributed Java service.
Java
Architecture
Resilience
Feb 10, 2026
Betfair
Working with BSP and Starting Prices in the Betfair Exchange API
How BSP (Betfair Starting Price) works, how to retrieve SP and BSP prices from the API, how to place BSP bets, and how to use pre-race SP estimates in a trading strategy.
Java
Betfair
Trading
Feb 9, 2026
Spring Boot
HikariCP Connection Pool Tuning for Production
How to configure HikariCP in Spring Boot for production workloads — pool sizing, timeout settings, health checks, leak detection, and the common misconfigurations that cause connection exhaustion.
Java
Spring Boot
Database
Feb 8, 2026
Java
Stream Collectors Deep Dive — groupingBy, partitioningBy, and Custom Collectors
A practical guide to the most useful Java Stream collectors beyond toList — covering groupingBy, partitioningBy, counting, summarising, joining, and how to write a custom collector.
Java
Functional Programming
Feb 7, 2026
Betfair
Weight of Money — Computing WoM from the Full Price Ladder in Java
How to compute Weight of Money from the full Betfair Exchange price ladder, why naive WoM is misleading, and how to build a robust signal that accounts for large orders and market depth.
Java
Betfair
Trading
Feb 6, 2026
Kafka
Exactly-Once Semantics — What It Actually Means in Practice
What Kafka's exactly-once semantics actually guarantee, how idempotent producers and transactions work under the hood, how to configure them in Spring Boot, and when the cost is worth paying.
Java
Spring Boot
Apache Kafka
Feb 5, 2026
Architecture
Hexagonal Architecture — Structuring a Spring Boot Service with Ports and Adapters
How to structure a Spring Boot service using hexagonal architecture — defining ports as interfaces, writing adapters for HTTP and persistence, and keeping the domain completely framework-free.
Java
Spring Boot
Architecture
Feb 4, 2026
AWS
S3 File Upload and Download from Spring Boot
How to upload, download, and manage files in AWS S3 from a Spring Boot service using the AWS SDK v2 — covering multipart uploads, presigned URLs, and IAM access patterns.
Java
Spring Boot
AWS
Feb 3, 2026
Java
Records as DTOs — Replacing Jackson POJOs with Java Records
How to use Java records as request and response DTOs with Jackson in Spring Boot — covering deserialisation, validation, nested records, and the cases where records don't fit.
Java
Spring Boot
REST
Feb 2, 2026
Spring Boot
Constructor Injection — Why the Spring Team Recommends It
Why constructor injection is preferred over field injection in Spring Boot — covering testability, immutability, required dependencies, and what @Autowired on a field actually costs you.
Java
Spring Boot
Architecture
Feb 1, 2026
Betfair
Connecting to the Exchange Streaming API — Subscriptions and Message Flow in Java
How to connect to the Betfair Exchange Streaming API from Java, construct market and order subscriptions, and handle the initial image before processing delta updates.
Java
Betfair
Trading
Jan 29, 2026
Spring Boot
The Transactional Outbox Pattern with Kafka and MongoDB
How to guarantee at-least-once event delivery from a Spring Boot service to Kafka — implementing the Transactional Outbox Pattern with MongoDB, a polling publisher, and an idempotent consumer.
Java
Spring Boot
Apache Kafka
Jan 23, 2026
Java
Profiling Production JVMs with JFR and JMC
How to use Java Flight Recorder and Java Mission Control to profile production JVMs — recording CPU, memory, GC, and thread behaviour without significant overhead, interpreting flame graphs, and diagnosing real performance problems.
Java
Performance
Observability
Jan 8, 2026
Spring Boot
Spring Data JPA Projections — Interface and DTO Projections Without Boilerplate
How to use Spring Data JPA projections to retrieve partial data — interface projections, class-based DTO projections, and dynamic projections — without manual mapping or loading unused columns.
Java
Spring Boot
Database
Jan 7, 2026
Java
Virtual Threads in Java 21 — What Project Loom Changes for Server-Side Java
How virtual threads work in Java 21, what they change for I/O-bound server applications, how to enable them in Spring Boot, and where the remaining limitations are.
Java
Concurrency
Java 21
Jan 6, 2026
Betfair
Exchange Order Types — Limit, LimitOnClose, and MarketOnClose Explained
The three Betfair Exchange order types — Limit, LimitOnClose, and MarketOnClose — what each one does, when to use each, and how to construct them correctly in a Java API client.
Java
Betfair
Trading
Jan 5, 2026
Architecture
CQRS — Separating Commands from Queries in a Spring Boot Service
How to implement CQRS in a Spring Boot service — the command and query separation, write and read model design, why the split pays off under load, and when CQRS is the wrong choice.
Java
Spring Boot
Architecture
Jan 4, 2026
AWS
AWS CDK in Java — Writing Infrastructure as Code with Constructs and Stacks
How to write AWS infrastructure as Java code using CDK — constructs, stacks, the three levels of abstraction, environment-specific configuration, and the CDK synth/deploy workflow.
Java
AWS
DevOps
Jan 3, 2026
Spring Boot
Spring Boot 3 Migration Guide — What Changed from 2.x and How to Upgrade
The key breaking changes in Spring Boot 3 — Jakarta namespace, Java 17 baseline, Actuator changes, Spring Security updates — and a practical migration path from Spring Boot 2.x.
Java
Spring Boot
DevOps
Jan 2, 2026
Java
Sealed Interfaces — Modelling Finite State Hierarchies in Java 17+
How sealed interfaces and classes in Java 17 enable exhaustive pattern matching, replace string constants and enums for complex state hierarchies, and make invalid states unrepresentable.
Java
Architecture
Jan 1, 2026
Betfair
Introduction to the Betfair Exchange API — Architecture, Endpoints, and Getting Started in Java
An overview of the Betfair Exchange API — what it offers, how the REST and Streaming APIs compare, how to get credentials, and what a first Java integration looks like.
Java
Betfair
Trading
Dec 21, 2025
Architecture
Object-Oriented vs Functional Programming (And Why the Argument Is Wrong)
Object-Oriented vs Functional Programming in Java — a senior developer's take after 20 years building production systems. Polymorphism, immutability, and why combining both produces the best Java code.
Architecture
Object-Oriented Programming
Functional Programming
Dec 20, 2025
Architecture
Hexagonal vs Clean Architecture in Spring Boot
Hexagonal vs Clean Architecture in Java Spring Boot — a practical comparison from a senior developer who has applied both in production across event-driven, microservices, and government-scale systems.
Architecture
Hexagonal Architecture
Clean Architecture
Dec 15, 2025
Architecture
Hexagonal Architecture for Real-World Systems
How I use Hexagonal Architecture (Ports and Adapters) in Java Spring Boot systems — from Betfair trading frameworks to DWP Digital's benefit platform. Practical patterns for keeping domain logic clean and independently testable.
Architecture
Hexagonal Architecture
Clean Code
Oct 7, 2025
Spring Boot
Adding Robustness with Spring Retry Annotations
How to use Spring Retry @Retryable and @Backoff in Spring Boot to handle transient failures cleanly — configurable retry logic with exponential backoff, selective exception handling, and real-world examples from Java integration services.
Spring Boot
Retryable
Backoff
Oct 3, 2025
Java
Java Memory Management and GC Tuning for Low-Latency Systems
JVM memory management and GC tuning for Java low-latency systems — G1GC vs ZGC, key JVM flags, allocation pressure reduction, and GC monitoring with JFR for Betfair trading and financial data pipelines.
Java
JVM
GC
Sep 26, 2025
Smarkets
Smarkets API Integration for Java Developers
Integrating with the Smarkets Exchange API in Java — REST and streaming authentication, market browsing, order placement, and building a multi-exchange abstraction alongside Betfair.
Java
Smarkets
Betting Exchange
Sep 19, 2025
Spring Boot
Production Observability with Actuator, Micrometer, and Prometheus
Building production-grade observability into Spring Boot — Actuator health endpoints, custom health indicators, Micrometer metrics, Prometheus export, and instrumenting business-level metrics.
Java
Spring Boot
Observability
Sep 12, 2025
Betfair
Pre-Race vs In-Play Trading — Technical Architecture
The technical and strategic differences between pre-race and in-play Betfair trading — market state transitions, streaming API indicators, latency requirements, and Java architecture for both modes.
Java
Betfair
Trading
Sep 5, 2025
AWS
AWS Lambda with Spring Boot — Cold Start Optimisation
Deploying Spring Boot to AWS Lambda and tackling cold start latency — GraalVM native image, SnapStart, tiered compilation, and knowing when Lambda is the wrong choice for Java workloads.
Java
AWS
Lambda
Aug 29, 2025
Java
Structured Concurrency in Java 21
Structured concurrency in Java 21 — StructuredTaskScope, ShutdownOnFailure, ShutdownOnSuccess, how it prevents thread leaks, and where it produces cleaner code than CompletableFuture.
Java
Java 21
Structured Concurrency
Aug 22, 2025
Betdaq
Betdaq API Integration for Java Developers
A practical guide to integrating with the Betdaq Exchange API in Java — authentication, market browsing, placing orders, and building an abstraction layer for multi-exchange trading systems.
Java
Betdaq
Betting Exchange
Aug 15, 2025
Java
Event Sourcing with Spring Boot and MongoDB
Implementing event sourcing in Java Spring Boot with MongoDB as the event store — event appending, aggregate reconstruction, snapshots, and publishing events to Kafka for downstream projections.
Java
Spring Boot
Event Sourcing
Aug 8, 2025
Betfair
Risk Management in Automated Betting Systems
Risk management architecture for automated Betfair trading in Java — stake limits, liability caps, drawdown monitoring, kill switch implementation, and graceful shutdown on API disconnection.
Java
Betfair
Risk Management
Aug 1, 2025
Spring Boot
Spring Data MongoDB — Modelling and Querying Documents
Using Spring Data MongoDB in Spring Boot — @Document modelling, repositories, MongoTemplate for complex queries, aggregation pipelines, indexing, and avoiding the N+1 problem.
Java
Spring Boot
MongoDB
Jul 25, 2025
Betfair
Placing and Managing Orders with the Betfair API in Java
How to place, update, cancel, and replace orders on Betfair in Java — covering placeOrders, cancelOrders, replaceOrders, listCurrentOrders, error handling, and reconciliation.
Java
Betfair
Exchange API
Jul 18, 2025
Resilience4j
Circuit Breakers, Rate Limiters, and Bulkheads in Spring Boot
Practical guide to Resilience4j in Spring Boot — configuring @CircuitBreaker, @RateLimiter, @Bulkhead, and @Retry annotations, and testing resilience patterns in integration tests.
Java
Spring Boot
Resilience4j
Jul 11, 2025
Java
Sealed Classes and Pattern Matching — Modern Java Features
Sealed classes and pattern matching in switch expressions (Java 17–21) — replacing instanceof chains with exhaustive pattern matching, guarded patterns, and record deconstruction.
Java
Java 17
Java 21
Jul 4, 2025
Betfair
Building a Spring Boot Trading Strategy Engine
How to architect a pluggable trading strategy engine in Spring Boot for Betfair — strategy interfaces, event-driven signal evaluation, lifecycle management, and risk controls.
Java
Spring Boot
Betfair
Jun 27, 2025
Spring Boot
CQRS Pattern with Kafka and Spring Boot
Implementing CQRS in Spring Boot with Kafka — separating command and query models, publishing events, building read projections, and knowing when CQRS is worth the complexity.
Java
Spring Boot
CQRS
Jun 20, 2025
Betfair
Order Flow Imbalance — A Java Implementation
Order flow imbalance (OFI) as a trading signal on Betfair — what it is, how to calculate it from streaming data, and how to build a real-time OFI indicator in Java.
Java
Betfair
Trading
Jun 13, 2025
Architecture
Domain-Driven Design in Java Spring Boot
A practical DDD guide for Java Spring Boot developers — covering aggregates, value objects, domain events, bounded contexts, and how to keep JPA out of your domain model.
Java
Spring Boot
DDD
Jun 6, 2025
Java
CompletableFuture — Mastering Async Programming
A comprehensive guide to CompletableFuture in Java — covering thenApply, thenCompose, allOf, exception handling, custom executors, and the pitfalls to avoid in real-world async pipelines.
Java
CompletableFuture
Async
May 30, 2025
Betfair
Last Traded Price Dynamics — Reading Market Direction
How Last Traded Price data from the Betfair Streaming API reveals market momentum — building a sliding window LTP analyser in Java to calculate price velocity and identify drift patterns.
Java
Betfair
Trading
May 26, 2025
Java
Java NullPointerException Avoidance and Enhancement Tactics
Java NullPointerException avoidance — comprehensive guide to null-safe String handling, Objects utility methods, Optional, enum comparisons, and enhanced NPE messages in JDK 15+. Practical Java null-handling tactics for cleaner, safer code.
Java
NullPointerException
TimeUnit
May 23, 2025
Testing
Testcontainers for Spring Boot — Real Databases, Real Confidence
Why Testcontainers beats mocked repositories for integration testing, and how to use it in Spring Boot with PostgreSQL, MongoDB, and Kafka — with real container setup and test speed tips.
Java
Spring Boot
Testcontainers
May 22, 2025
Java
Pattern match Optional in Java 21
A clever Java 21 trick for combining Optional with pattern matching using instanceof — when it's useful, how it works, and why true Optional pattern matching support in a future Java version will make this obsolete.
Java
Pattern Matching
Optional
May 21, 2025
Apache HttpClient Classic APIs
A Quick Guide
Apache HttpClient Classic APIs in Java — complete guide to synchronous HTTP with POST, GET, PUT, PATCH, DELETE, HEAD, and OPTIONS. Response handlers, error handling, and full working examples tested against a REST API.
Java
HttpClient
Apache
May 16, 2025
Betfair
Weight of Money — Implementing WoM Calculations in Java
How to calculate Weight of Money (WoM) from live Betfair Streaming data in Java — including the formula, rolling trend signals, Spring Boot wiring, and when the signal is and isn't reliable.
Java
Betfair
Trading
May 9, 2025
Spring Boot
Deep Dive into Apache Kafka Consumers
A thorough guide to robust Kafka consumers in Spring Boot — covering @KafkaListener, consumer groups, manual commit, error handling, dead letter topics, and idempotent processing patterns.
Java
Spring Boot
Apache Kafka
May 8, 2025
Java
Formatting Code Snippets in Javadoc
How to correctly format code snippets in Javadoc — when to use <pre>, <code>, and {@code} for annotations, generics, and multi-line blocks. Practical guide to clean, renderable Javadoc for Java API documentation.
Java
Javadoc
Documentation
May 7, 2025
Java
Why I Avoid Checked Exceptions
Why Java checked exceptions cause more problems than they solve — and how to replace them with clean unchecked exceptions, custom RuntimeException subclasses, and Spring Boot’s @ControllerAdvice for global error handling.
Java
Exceptions
Clean Code
May 6, 2025
Java
Hashing for Secure and Efficient Code
Java hashing guide — MD5, SHA-256, PBKDF2, and bcrypt with MessageDigest, Apache Commons Codec, Guava, and jBCrypt. When to use each algorithm, how to avoid common mistakes, and practical examples for data integrity and password storage.
Java
Hashing
Security
May 5, 2025
Java, Spring Boot & AWS
Publisher-Subscriber Pattern Using SNS & SQS
Implementing the publisher-subscriber pattern in Java Spring Boot using AWS SNS and SQS — full working example with Spring Cloud AWS, decoupled microservices, and real-world event-driven architecture patterns.
Java
AWS
Spring Boot
May 4, 2025
Java
Records for Simpler, Cleaner Code
Java Records — a practical guide to replacing boilerplate data classes with immutable, concise records in Java 16+. Covers constructors, validation, factory methods, and when to use records vs classes vs Lombok.
Java
Records
Clean Code
May 3, 2025
Java
Functional Interfaces for Cleaner Code
Java Functional Interfaces deep dive — Predicate, Function, Consumer, Supplier, BiFunction, and more. Practical examples with lambdas, method references, and stream pipelines from real-world Spring Boot applications.
Java
Functional Programming
Lambda Expressions
May 2, 2025
Betfair
Understanding the Betfair Streaming API in Java
How the Betfair Streaming API (ESA) works and how to build a robust Java WebSocket client — covering the protocol, market change messages, local state caching, and reconnection logic.
Java
Betfair
Streaming API
May 1, 2025
Java
A Random Pitfall
java.util.Random is a hidden performance bottleneck in multi-threaded Java systems — here’s why, and how switching to ThreadLocalRandom eliminates CAS contention and restores throughput in high-concurrency Spring Boot applications.
Java
Random
Math
Apr 30, 2025
Java
Immutables - No Setters Allowed
Immutable objects in Java — why they matter for thread safety, how to build them correctly with final fields, factory methods, and validation, and why setters undermine everything. Practical examples from production Spring Boot systems.
Java
Immutables
Lombok
Apr 28, 2025
Clean Coding
Four Principles to Boost Your Team’s Productivity
Four clean code principles every Java developer should apply — rigorous testing, meaningful naming, Single Responsibility, and side-effect-free functions. Real examples from Spring Boot, Kafka, and microservices projects.
Software Development
Clean Code
Junit
Apr 27, 2025
Git
How to Undo Your Git Failure?
How to recover lost commits, undone resets, and dropped stashes in Git using git reflog and git reset. Step-by-step recovery guide for the most common Git disasters, with practical examples every Java developer will recognise.
Git
Version Control
Development
Apr 26, 2025
GitHub Flow
A Java Developer’s Guide to Streamlined Collaboration
GitHub Flow for Java developers — how the branch-based workflow keeps teams productive and main always deployable. Practical guide with branching strategy, pull request reviews, CI/CD integration, and real examples from Spring Boot projects.
GitHub
Workflow
Java
Apr 25, 2025
Java 21
Virtual Threads and Project Loom — A Practical Guide
Deep dive into Java 21 virtual threads — how they work, how to enable them in Spring Boot 3, where they shine for IO-bound workloads, and where they won't help you.
Java
Java 21
Virtual Threads
Apr 18, 2025
Betfair
Getting Started with the Betfair Exchange API in Java
A practical Java guide to the Betfair Exchange API — covering SSOID authentication, the non-interactive login flow, listing markets, retrieving runner prices, and placing your first bet.
Java
Betfair
Betting Exchange
Mar 20, 2025
Digital Minimalism
Staying Focused in a Noisy Tech World
Five digital minimalism strategies that help senior developers stay in flow state — managing inbox noise, social media, notifications, and screen time so you have the mental bandwidth for deep technical work.
Social Media
Minimalism
Technology