Writing
Thoughts on systems engineering, performance, and continuous learning.
Multi Cloud vs Single Cloud: What's Right for NZ Fintech?
New Zealand's financial services sector is at a genuine crossroads right now. As our banks and fintechs push further into digital transformation, the choice bet
Cloud Infrastructure Cost Optimisation in Cloud Native Fintech: Balancing Innovation and Budget
Fintech sits at a genuinely interesting inflection point right now. Born in the cloud and built for scale, these organisations have leaned into cloud native arc
Infrastructure as Code: Terraform for Fintech Compliance on Microsoft Azure
Terraform is not just an infrastructure tool, it functions as a compliance tool
Building a Secure, Scalable Cloud Architecture for Fintech Startups in Aotearoa New Zealand By Nischal Khanal, AWS Certified Solutions Architect
Fintech systems are not standard web apps. They handle the most sensitive data going, personal identification details, transaction records, account balances
Designing the Binary Wire Protocol for a C++ Limit Order Book Matching Engine
Designed a zero-parsing, cache-aligned binary wire protocol for a C++ matching engine with deterministic byte-offset message layouts
Single Threaded epoll Matching Engine in C++ for Deterministic Order Execution
How one CPU thread and Linux epoll enforce price and time priority in a C++ limit order book, with zero locks and zero heap allocation on the matching path
Decoupled Vector-Map Data Layout for Allocation-Free Limit Order Book
An architectural guide to a 3-layer C++ order book layout using a flat vector memory pool and shallow map to achieve O(1) FIFO queue operations.
Python GIL Trap in Low-Latency Async Pipelines
We stopped market-volatility event loop freezes by micro-batching Pydantic payloads into a single GIL-efficient thread handoff for flatline reliability
Stabilizing a High-Frequency Trading Gateway: How We Reclaimed Our Event Loop Under Extreme Market Volatility
Fixed trading pipeline message drops by replacing blocking writes and GIL-heavy validation with an async micro-batching architecture
The Packet Was Already Late Before My Application Saw It
Today I followed a market data packet from the network card all the way to the application and realized that latency can appear long before our code even starts running.
A Growing Queue Doesn't Mean You Need More Workers
A System Can Be Technically Working and Still Be Failing Its Users
What happens when a system can process 10,000 requests per second but suddenly receives 15,000? Today's exploration led me through queueing, backpressure, retries, and a different way of thinking about overload.