Is There a Best OS to Develop a Java Application on?
One subject that often evokes a lot of debate is which is the best OS to develop a Java application on. This article gives…
How Behaviour Driven Development Works Well with Event Driven Architectures
Behaviour Driven Development (BDD) and Event Driven Architecture (EDA) work well together as they complement each other’s strengths and weaknesses. Using both can result…
Why Core-to-Core Latency Matters
Last year we had a global shortage of microchips; today, I feel there is a worldwide shortage of software developers. Like many other software…
“The More You Say, the Less People Remember…
…The Fewer the Words, the Greater the Profit.” These wise words were written by François Fénelon, a writer and theologian living during the 17th…
Cloud-Native Chronicle Deployment
Traditionally, companies with low-latency requirements deployed to bare metal servers, eschewing the convenience and programmability of virtualisation and containerisation in an effort to squeeze…
How to Reduce Cloud Cost by 99% for EDA Kafka Applications
While the cloud offers great convenience and flexibility, the operational cost for applications deployed in the cloud can sometimes be significant. This article shows…
How to Leverage Method Chaining to Add Smart Message Routing
This article explores how to use method chaining to add routing information to serialised data structures in a lightweight fashion, where the routing information…
Challenges when Developing a GUI for FIX
This article explores the Challenges in developing a Graphical User Interface (GUI) for Financial Information eXchange (FIX) data. FIX is both a protocol and…
Automated CI/CD of Multiple Projects Using TeamCity’s Kotlin DSL
In a previous article I described a way to organise low-latency products as multiple code bases which are bound together with a Maven Bill…
Why the Cool Kids Use Event Loops
A Discussion On the Benefits of Event Loops in Java. When I was working in software development back in the 1990s, nearly all the…
How to Develop Event-Driven Architectures
Last month, I wrote an article on Open source Chronicle Wire, that discusses how we could serialise an application’s state into different message formats….
Unusual Java: StackTrace Extends Throwable
There are things you can do in Java you rarely see, generally because there is no use for it. However, there are some unusual…
How to Get C++ Speed in Java Serialisation
Using Trivially Copyable Objects to Improve Java Serialisation Speeds For any low-latency software it is vital that the most common operations introduce minimal latency….
How Object Reuse Can Reduce Latency and Improve Performance
Become familiar with the art of object reuse by reading this article and learn the pros and cons of different reuse strategies in a…
Creating Terabyte Sized Queues with Low-Latency
Queues are often fundamental components in software design patterns. But, what if there are millions of messages received every second and multi-process consumers need…
High-Performance Java Serialisation to Different Formats
Java serialization is a popular mechanism where you are able to serialize and deserialize complex object graphs; for example where object A can contain…
Why a Set Can Contain Duplicate Elements
In low-latency applications, the creation of unnecessary objects is often avoided by reusing mutable objects to reduce memory pressure and thus the load on…
Low Latency Microservices, A Retrospective
I wrote an article on low latency microservices almost five years ago now. Chronicle Software has worked with a number of tier one investment banks…
Monorepo Versus Bill of Materials: Shaping Your Project
During most of my development career, the usual code organization pattern was monolithic repository or Monorepo. There is a single large version control repository,…
As most Java developers know, putting values in a Java Map (like a HashMap) involves creating a large number of auxiliary objects under the…