Back to blog
1 Sept 2026

Blog Introduction

Introduction

Welcome to my blog!

Developers always talk about starting a blog but very few actually do, and motivation seems to run out quickly (I've been guilty of that myself, though not for blogging - yet!). I started this blog with 2 goals: to keep myself accountable and scratch that creative itch. I'm also hoping that at some point someone will find this blog, read it and share their feedback, so I can take it in and improve - after all, if I didn't want feedback I'd keep it all private :)

In order to get the most out of this and actually finish what I start, I will be working and writing about one project for the foreseeable future. I will definitely write about other topics I'm learning and exploring but as far as projects go, I believe it will be best for me to focus on one.

My OME (Order Matching Engine) project initially started as an interview practice project. I was preparing for a technical interview with a trading company and wanted to practice my C++ in a non-academic, hands-on manner. I therefore decided to implement something I found interesting, and the most interesting thing for me at the time was an order book. When making a trade, I would see the buy and sell orders constantly changing, and while I did understand what it did intuitively, I never really considered how it worked behind the scenes; at the time it seemed obvious that it was implemented using some form of min/max heap, and std::priority_queue immediately came to mind, but I hadn't really thought about it beyond that. And that was the perfect amount of curiosity for me to get started.

As it is a learning project, you will probably (meaning almost definitely) notice improvements to be made, or things you would do different. I hope that if you do, you will send me a message so we can discuss! Also, please notice that I said "is" a learning project. After I finished the price-time priority, which would have been a good point to stop the project and say "Mission accomplished!", I decided to keep working on it, to see how much I could do and learn. Eventually, I decided that I wanted to explore performance, optimizations and low-level code, which is something I've been interested in ever since the compiler project I did in university. Perhaps through this project I'll dabble with other things as well, such as full-stack or desktop development, Redis, market data feeds, etc. but for now I'll focus on the C++ part.

Regarding AI usage, I must say that while this project started without it, now I use AI quite a bit; in fact I've used this project (and others) to experiment with what it can do and how I can use it to best benefit me. In terms of code I've found it to be very good at boilerplate and scaffolding, as well as executing what I direct it to. When I want to start working on a new feature, I almost always work out the details of the implementation with AI before moving forward with it. It's also been very helpful in giving me ideas and helping me study, which I'll do even more of in the future. I see how it's easy to use it as a crutch and simply leave everything to it - like unit tests, as I'm sure a lot of engineers do, since they hate writing them - and while I'm not exactly innocent of it either, I have resolved to review what I generate using AI, and still write the code that requires thought by hand (e.g. most recently the top/priority pro-rata strategy), for practice; after all, that is the goal of this project, not the output. So far it has worked out well and I have learnt quite a bit. Let's see what the future holds!