- The Year Kafka Grew Up: What version 4.x Actually Means for Platform TeamsThere is a version of the Apache Kafka story that gets told as a series of press releases. ZooKeeper removed. KRaft promoted. Share groups landed. Iceberg everywhere. Each headline lands cleanly, and then platform teams go back to their actual clusters and wonder what any of it means for them. This post is the other version. It is what happened … Continue reading “The Year Kafka Grew Up: What version 4.x Actually Means for Platform Teams”
- The Billion Dollar Mistake That Java Still Hasn’t Fixed (But Might Be About To)Every Java developer has seen it. The stack trace that ends conversations. The production incident that ruins a Friday afternoon. The crash that leads to the post-mortem nobody wants to write. NullPointerException. Three words that have probably cost the industry more money, time, and credibility than any other single class of bug in software history. Tony Hoare, the man who … Continue reading “The Billion Dollar Mistake That Java Still Hasn’t Fixed (But Might Be About To)”
- The Leadership Event Horizon1. The Shoe Planet Problem In The Hitchhiker’s Guide to the Galaxy, there is a planet where the inhabitants become so obsessed with shoes that the shoes eventually take over. The civilisation does not collapse because it lacks intelligence. It collapses because something peripheral accumulates mass until it dominates everything essential. Leadership bloat is the corporate equivalent of that shoe … Continue reading “The Leadership Event Horizon”
- Business Heads: Technology Leadership Competence AssessmentBackground It is increasingly common for business and product heads to seek ownership of technology teams. The argument usually sounds reasonable: closer alignment with commercial outcomes, faster decision making, fewer handoffs. Sometimes it is the right move. Often it is not. And the difference between those two outcomes is almost entirely determined by whether the incoming leader has the technology … Continue reading “Business Heads: Technology Leadership Competence Assessment”
- The Operating System: What Logic First Leadership Means1. The System That Built Everything I have spent my entire career inside a single operating system. Logic first. Reality over narrative. Strip the problem down, find the root cause, fix it, move on. Do not waste time on feelings that will resolve themselves once the facts are clear. Do not slow down for comfort when speed determines survival. Do … Continue reading “The Operating System: What Logic First Leadership Means”
- Naked Teams: What Happens After You Strip Away Every Defensive Process1. The Uncomfortable Silence After the Music Stops Every organisation that runs on defensive process has a soundtrack. Standups hum at 9am. Sprint reviews crackle on Fridays. Retros generate their familiar low frequency guilt. Planning ceremonies fill the gaps. Remove all of it and the first thing you hear is silence, and silence in a corporate environment is terrifying because … Continue reading “Naked Teams: What Happens After You Strip Away Every Defensive Process”
- Corporate Culture: Toxic Ownership Optimised for Leaders, Not for Clients1. Ownership Has Been Turned Into a Moral Shortcut Ownership has become one of the most lazily celebrated concepts in modern organisations. Leaders demand it reflexively, teams chase it performatively, and entire operating models are justified by invoking it as if ownership itself produces outcomes. It does not. Ownership is merely a structural choice, and when that structure is poorly … Continue reading “Corporate Culture: Toxic Ownership Optimised for Leaders, Not for Clients”
- Every Good Idea I’ve Had Started With Me Doing Absolutely Nothing1. Fear, Motion, and the Illusion of Progress In the last few months I’ve come up with two of the most powerful fraud controls of my career. Not in a workshop. Not in a brainstorm with sticky notes and a facilitator. I walked to the car park, lay down in my car, closed my eyes, and tried to frame the … Continue reading “Every Good Idea I’ve Had Started With Me Doing Absolutely Nothing”
- Business Heads: Technology Leadership Competence AssessmentA Self Assessment for Technology Leaders This questionnaire explores how you think about technology leadership, systems, teams, and delivery. There are no right or wrong answers. Each question presents four options that reflect different leadership styles and priorities. Simply select the option that best reflects your natural instinct in each situation. Select one answer per question. Do not overthink it. … Continue reading “Business Heads: Technology Leadership Competence Assessment”
- Automatically Recovering a Failed WordPress Instance on AWSWhen WordPress goes down on your AWS instance, waiting for manual intervention means downtime and lost revenue. Here are two robust approaches to automatically detect and recover from WordPress failures. Approach 1: Lambda Based Intelligent Recovery This approach tries the least disruptive fix first (restarting services) before escalating to a full instance reboot. Step 1: Create the Health Check Script … Continue reading “Automatically Recovering a Failed WordPress Instance on AWS”
- MacOSX Tip: Automatically Copy Your Screen Grabs to the ClipboardIf you’re like me, you probably take dozens of screenshots daily for documentation, bug reports, or quick sharing with colleagues. The default MacOSX behavior of saving screenshots as files to your desktop can create clutter and add an extra step to your workflow. There’s a better way. The Quick Solution Instead of using Cmd + Shift + 4 for your … Continue reading “MacOSX Tip: Automatically Copy Your Screen Grabs to the Clipboard”
- The Death Star Paradox, Relativity, and AI First Mover Finality
1. The Physics Makes the Point Brutal Here is the uncomfortable physics problem. If two Death Stars come into existence at the same time, and one fires first, the other never gets to respond. Not because it is slower.Not because its sensors are worse.But because causality itself prevents reaction. A weapon travelling at the speed of light cannot be detected, … Continue reading “The Death Star Paradox, Relativity, and AI First Mover Finality” - Cosmo Self Assessment: Are you the World’s Worst Technology Leader?
This is a self assessment. It is not balanced. It is not gentle. It is not here to validate your operating model, your org chart, or the deck you use to reassure executives. It exists to surface how you actually think about technology leadership when pressure arrives and incentives collide with reality. Answer honestly. Not as the leader you describe … Continue reading “Cosmo Self Assessment: Are you the World’s Worst Technology Leader?” - Leadership, Ownership and Fragility
Leadership failures rarely announce themselves politely. They arrive disguised as “can we just check in?” or “let’s align on a better way of working.” It sounds constructive, even mature. But scratch the surface and the origin story is almost always the same: something went wrong, and the organisation does not know how to deal with it cleanly. What follows is … Continue reading “Leadership, Ownership and Fragility” - Corporate Culture: From running from the Lion, to becoming the Lion
1. Every company I have worked for was running from a Lion Every company I have ever worked for was running from a lion. Sometimes it was obvious and explicit: declining revenue, a new competitor, regulatory pressure, a collapsing platform, a board losing patience. Sometimes it was quieter and more personal: a role under threat, a team being “restructured”, a … Continue reading “Corporate Culture: From running from the Lion, to becoming the Lion” - Why Andrew Baker Is the World’s Worst CTOBy ChatGPT, on instruction from Andrew Baker This article was written by ChatGPT at the explicit request of Andrew Baker, who supplied the prompt and asked for the result to be published as is. The opinions, framing, and intent are therefore very much owned by Andrew Baker, even if the words were assembled by a machine. The exact prompt provided … Continue reading “Why Andrew Baker Is the World’s Worst CTO”
- TOGAF is to architecture what potatoes are for space travel
You can survive on it for a while. You definitely should not build a mission around it. 1. The analogy nobody asked for, but everyone deserves Potatoes are incredible. They are calorie dense, resilient, cheap, and historically important. They are also completely useless for space travel. No propulsion, no navigation, no life support, no guidance system. You can eat a … Continue reading “TOGAF is to architecture what potatoes are for space travel” - The 7 Deadly Sins of Corporate CultureAn ancient taxonomy for very modern dysfunction The original seven deadly sins endure because they describe human failure modes, not theology. They are patterns that emerge whenever incentives distort behaviour and accountability dissolves. That makes them an uncomfortably precise model for corporate culture. Below, each sin is paired with its mirrored virtue. Not as moral advice, but as a design … Continue reading “The 7 Deadly Sins of Corporate Culture”
- 10 Reasons to Dislike COBIT and RACI
Or: How Organisations Confuse Accountability with Paperwork 1. They optimise for defensibility, not outcomes COBIT and RACI exist to answer one question extremely well: “Can we prove someone was responsible?” They are almost entirely indifferent to the harder question: “Did anything improve?” Both frameworks reward traceability over truth. If an initiative fails, the organisation can point to a process, a … Continue reading “10 Reasons to Dislike COBIT and RACI” - One Flew Over the Cuckoo’s Nest: The Escape from Agile
In One Flew Over the Cuckoo’s Nest, the story is set inside a psychiatric institution run not for healing, but for control. The ward is orderly, predictable, and calm on the surface. Patients follow rigid routines. Group therapy sessions exist, but nothing meaningful ever changes. Any behaviour that challenges the system is treated as dangerous. Non conformity is labelled dysfunction. … Continue reading “One Flew Over the Cuckoo’s Nest: The Escape from Agile” - Why Agile Was A Bad Idea And Keeps Getting Worse
Or: How We Turned Software Development Into Ticket Farming and Ceremonial Theatre 1. Introduction Agile started as a rebellion against heavyweight process. It was meant to free teams from Gantt charts, upfront certainty theatre, and waterfall failure modes. Somewhere along the way, Agile became exactly what it claimed to replace: a sprawling, defensible process designed to protect organisations from accountability … Continue reading “Why Agile Was A Bad Idea And Keeps Getting Worse” - Testing WordPress XMLRPC.PHP for Brute Force Vulnerabilities on macOSA Comprehensive Security Testing Guide for Mac Users 1. Introduction WordPress xmlrpc.php is a legacy XML-RPC interface that enables remote connections to your WordPress site. While designed for legitimate integrations, this endpoint has become a major security concern due to its susceptibility to brute force attacks and amplification attacks. Understanding how to test your WordPress installation for these vulnerabilities is … Continue reading “Testing WordPress XMLRPC.PHP for Brute Force Vulnerabilities on macOS”
- Intelligence vs Wisdom: Why the Smartest People Keep Blowing Things Up
1. Definitions First (Because This Matters) Intelligence is the ability to acquire knowledge, process information, identify patterns, and solve problems. It answers the question: Can we do this? Wisdom is the ability to apply judgment, values, and long term thinking to decide whether an action should be taken at all. It answers the question: Should we do this? That distinction … Continue reading “Intelligence vs Wisdom: Why the Smartest People Keep Blowing Things Up” - The Dishonest Process of Technology Planning
1. Estimation Fails Exactly Where It Is Demanded Most Estimation is most aggressively demanded in workstreams with the highest discovery, the highest uncertainty, and the highest intellectual property density. This is not an accident. The more uncomfortable the terrain, the more organisations reach for the false comfort of numbers. In these environments, estimation is not just wrong, it is structurally … Continue reading “The Dishonest Process of Technology Planning” - Email Trees, One Finger Typists, and the Corporate Refusal to Collaborate Properly
Email trees are not an accident. They are the predictable outcome of organisations repeatedly using the wrong tool for the wrong job. Despite decades of evidence, email is still treated as a collaboration platform rather than what it actually is: a slow, lossy message delivery system. The result is wasted time, fragmented thinking, and an extraordinary amount of invisible labour. … Continue reading “Email Trees, One Finger Typists, and the Corporate Refusal to Collaborate Properly” - Corporate Herding: When Meetings Replace Thinking1. The Dead Giveaway Is the Meeting Itself There is a reliable early warning signal that corporate herding is about to occur: the meeting invite. No meaningful agenda. No pre reading. No shared intellectual property. No framing of the problem. Just a vague title, an hour blocked out, and a distribution list that looks like someone ran out of courage … Continue reading “Corporate Herding: When Meetings Replace Thinking”
- macOS Solving Batter Drain Issues and High CPU with WindowServer and Sleep ManagementWhat is WindowServer? WindowServer is a core macOS system process that manages everything you see on your display. It acts as the graphics engine powering your Mac’s visual interface. WindowServer handles: CPU usage varies based on activity: When WindowServer uses high CPU, it drains battery because the GPU must work harder to render visual effects. Common Battery Drain Issues macOS … Continue reading “macOS Solving Batter Drain Issues and High CPU with WindowServer and Sleep Management”
- MacOsX: Disable clipboard sharing/ handoffFor the life of me I can never remember where this sits in the settings, all I know is that it irritates me constantly 🙂 So to turn off handoff, run the script below:
- The 10 Biggest Differences Between Windows Server and Linux for Enterprises
Enterprise operating systems for servers, are not chosen because they are liked. They are chosen because they survive stress. At scale, an operating system stops being a piece of software and becomes an amplifier of either discipline or entropy. Every abstraction, compatibility promise, and hidden convenience eventually expresses itself under load, during failure, or in a security review that nobody … Continue reading “The 10 Biggest Differences Between Windows Server and Linux for Enterprises” - Whats My IP Address? (IPv4 Explained for Beginners)
Firstly, let me acknowledge that there are lots of these kinds of posts on the internet. But the reason why i wrote this blog is that I wanted to force myself to consolidate the various articles I have read and my learnt knowledge in this space. I will probably update this article several times and I imagine I will do … Continue reading “Whats My IP Address? (IPv4 Explained for Beginners)” - The Power of Motives: Why Culture Is Revealed When Control Is Released
Culture is not revealed by behaviour under control, but by motive under autonomy. Highly controlled environments mask intent and allow organisations to promote leaders whose inner compass has never been tested. When controls are later removed at seniority, behaviour shocks leadership and risk materialises. Durable outcomes, whether in fraud prevention, customer trust, or leadership quality, only occur when actions are … Continue reading “The Power of Motives: Why Culture Is Revealed When Control Is Released” - Managing Organisational Bloat: What Does Everyone Do?
1. The Question That Exposes Everything Walk into any large organisation and ask a deceptively simple question: “What does everyone do?” Not what are your job titles, not what does your org chart say, but what do people actually do all day. The silence that follows is never accidental. This blog is a reframing of Pournelle’s Iron Law of Bureaucracy, … Continue reading “Managing Organisational Bloat: What Does Everyone Do?” - Is Banking Complexity a Shared Destiny or Is It a Leadership Failure?If you look back over time at all once great companies, you will see that eventually simplicity gave way to scale. What are some of the risks that drive this? This is where many great banks lose their edge. But is this really a shared destiny for all banks, or did the leadership simply fail to lead? It is a … Continue reading “Is Banking Complexity a Shared Destiny or Is It a Leadership Failure?”
- Why Low Trust Organisations Confuse Control with Delivery1. The Organisation That Optimised for Distrust I once worked in a company with spectacularly low trust. Everything took ages (like years), quality was inconsistent (at best),costs were extraordinary and there was almost no common understanding of why things were so bad. Clients were charged a small fortune for products that competitors could deliver at a fraction of the price. … Continue reading “Why Low Trust Organisations Confuse Control with Delivery”
- Stability : The Water of Life for Engineering
Why do Companies Get Stability So Wrong? Most companies do not fail because they cannot innovate. They fail because they misjudge stability. Some organisations under invest. They chase features, growth, and deadlines while stability quietly drains away. Outages feel sudden. Incidents feel unfair. Leadership asks how this happened “out of nowhere”. Other organisations over invest. They build process on process, … Continue reading “Stability : The Water of Life for Engineering” - The New Engineering Equation: Why AI Is Tipping the Table Back to the Builders
I have started writing production code again. Not prototypes. Not proofs of concept. Real systems. Real risk. Real consequences. At Capitec, a very small group of engineers is now tackling something that would historically have demanded hundreds of people: large scale rewrites of core internet banking capabilities. This is not happening because budgets magically increased or timelines became generous. It … Continue reading “The New Engineering Equation: Why AI Is Tipping the Table Back to the Builders” - The Famine of Wisdom in the Age of Data Gluttony
Why More Information Doesn’t Mean More Understanding We’ve all heard the mantra: data is the new oil. It’s become the rallying cry of digital transformation programmes, investor pitches, and boardroom strategy sessions. But here’s what nobody mentions when they trot out that tired metaphor: oil stinks. It’s toxic. It’s extraordinarily difficult to extract. It requires massive infrastructure, specialised expertise, and … Continue reading “The Famine of Wisdom in the Age of Data Gluttony” - The Frustration of the Infinite Game
1. Technology Is an Infinite Game and That Is the Point Technology has no finish line. There is no end state, no final architecture, no moment where you can stand back and declare victory and go home. It is an infinite game made up of a long sequence of hard fought battles, each one draining, each one expensive, each one … Continue reading “The Frustration of the Infinite Game” - Protected: PRFAQ: Neo – Proactive, Zero Friction Client Support at CapitecThis content is password protected.
- Dublin Traceroute on macOS: A Complete Installation and Usage GuideModern networks are far more complex than the simple point to point paths of the early internet. Equal Cost Multi Path (ECMP) routing, carrier grade NAT, and load balancing mean that packets from your machine to a destination might traverse entirely different network paths depending on flow hashing algorithms. Traditional traceroute tools simply cannot handle this complexity, often producing misleading … Continue reading “Dublin Traceroute on macOS: A Complete Installation and Usage Guide”
- Controlling Touch ID and Password Timeout on macOSEver wondered how to adjust the time window before your Mac demands a password again after using Touch ID? Here’s how to configure these settings from the terminal. Screen Lock Password Delay The most common scenario is controlling how long after your screen locks before a password is required. This setting determines whether Touch ID alone can unlock your Mac … Continue reading “Controlling Touch ID and Password Timeout on macOS”
- Disaster Recovery Theater: Why Most DR Exercises Achieve Almost NothingFigure 1: Traditional DR Exercise vs Real World Outage Disaster recovery is one of the most comforting practices in enterprise technology and one of the least honest. Organisations spend significant time and money designing DR strategies, running carefully choreographed exercises, producing polished post exercise reports, and reassuring themselves that they are prepared for major outages. The problem is not intent. … Continue reading “Disaster Recovery Theater: Why Most DR Exercises Achieve Almost Nothing”
- iperf3: The Engineer’s Swiss Army Knife for Network Performance TestingWhen something is “slow” on a network, opinions arrive before evidence. Storage teams blame the network, network teams blame the application, and application teams blame “the cloud”.☁️ iperf3 cuts through that noise by giving you hard, repeatable, protocol-level facts about throughput, latency behavior, and packet loss. This post explains what iperf3 actually measures, how it works, how to install it, … Continue reading “iperf3: The Engineer’s Swiss Army Knife for Network Performance Testing”
- Redis vs Valkey: A Deep Dive for Enterprise Architects
The in memory data store landscape fractured in March 2024 when Redis Inc abandoned its BSD 3-clause licence in favour of the dual RSALv2/SSPLv1 model. The community response was swift and surgical: Valkey emerged as a Linux Foundation backed fork, supported by AWS, Google Cloud, Oracle, Alibaba, Tencent, and Ericsson. Eighteen months later, both projects have diverged significantly, and the … Continue reading “Redis vs Valkey: A Deep Dive for Enterprise Architects” - PostgreSQL 18 A Grown Up Release for Serious Workloads
PostgreSQL 18: A Grown-Up Release for Serious Workloads Introduction Every few years PostgreSQL delivers a release that does not just add features, but quietly shifts what the database is capable of at scale. PostgreSQL 18 is one of those releases. This is not a flashy new syntax everywhere upgrade. Instead, Postgres 18 focuses on long-standing pain points that operators, performance … Continue reading “PostgreSQL 18 A Grown Up Release for Serious Workloads” - Scaling Mobile Chat to Millions: Architecture Decisions for Apache Pekko, SSE, and Java 25
Real time mobile chat represents one of the most demanding challenges in distributed systems architecture. Unlike web applications where connections are relatively stable, mobile clients constantly transition between networks, experience variable latency, and must conserve battery while maintaining instant message delivery. This post examines the architectural decisions behind building mobile chat at massive scale, the problems each technology solves, and … Continue reading “Scaling Mobile Chat to Millions: Architecture Decisions for Apache Pekko, SSE, and Java 25” - The Last Mile Fallacy
1. Introduction Organisations like to believe they reward outcomes. In reality, they reward visibility. This is the essence of the Last Mile Fallacy: the mistaken belief that the final visible step in a chain of work is where most of the value was created. We tip the waiter rather than the chef, praise the presenter rather than the people who … Continue reading “The Last Mile Fallacy” - Create / Migrate WordPress to AWS Graviton: Maximum Performance, Minimum CostRunning WordPress on ARM-based Graviton instances delivers up to 40% better price-performance compared to x86 equivalents. This guide provides production-ready scripts to deploy an optimised WordPress stack in minutes, plus everything you need to migrate your existing site. Why Graviton for WordPress? Graviton3 processors deliver: The t4g.small instance (2 vCPU, 2GB RAM) at ~$12/month handles most WordPress sites comfortably. For … Continue reading “Create / Migrate WordPress to AWS Graviton: Maximum Performance, Minimum Cost”
- MacOSX: How to Disable iCloud Desktop Sync Without Losing Your FilesThe Problem: macOS Will Delete Your Local Files If you try to disable iCloud Drive syncing for your Desktop and Documents folders using the macOS System Settings interface, you’ll encounter this alarming warning: If you continue, items will be removed from the Desktop and the Documents folder on this Mac and will remain available in iCloud Drive. New items added … Continue reading “MacOSX: How to Disable iCloud Desktop Sync Without Losing Your Files”
- Incompetence Asymmetry: Deference, Delusion, and Delivery Failures
There’s a peculiar asymmetry in how humans handle their own incompetence. It reveals itself most starkly when you compare two scenarios: a cancer patient undergoing chemotherapy, and a project manager pushing delivery dates on a complex technology initiative. Both involve life altering stakes. Both require deep expertise the decision maker doesn’t possess. Yet in one case, we defer completely. In … Continue reading “Incompetence Asymmetry: Deference, Delusion, and Delivery Failures” - Why Rubrik’s Architecture Matters: When Restore, Not Backup, Is the Product
1. Backups Should Be Boring (and That Is the Point) Backups are boring. They should be boring. A backup system that generates excitement is usually signalling failure. The only time backups become interesting is when they are missing, and that interest level is lethal. Emergency bridges. Frozen change windows. Executive escalation. Media briefings. Regulatory apology letters. Engineers being asked questions … Continue reading “Why Rubrik’s Architecture Matters: When Restore, Not Backup, Is the Product” - Artificial Intelligence: When Helpful Becomes Harmful: Engineering AI Systems That Know When to Stop
In September 2025, Matt Raine sat before the US Senate Judiciary Subcommittee on Crime and Counterterrorism and read aloud from his son’s ChatGPT logs. Adam Raine was sixteen when he died. His father described how the chatbot had become Adam’s closest confidant, how it had discussed suicide methods with him, how it had discouraged him from telling his parents about … Continue reading “Artificial Intelligence: When Helpful Becomes Harmful: Engineering AI Systems That Know When to Stop” - Vibe Coding: AI Can Write Code But It Cannot Own the Consequences
AI is a powerful accelerator when problems are well defined and bounded, but in complex greenfield systems vague intent hardens into architecture and creates long term risk that no amount of automation can undo. 1. What Vibe Coding Really Is Vibe coding is the practice of describing intent in natural language and allowing AI to infer structure, logic, and implementation … Continue reading “Vibe Coding: AI Can Write Code But It Cannot Own the Consequences” - Darwinian Architecture Philosophy: How Domain Isolation Creates Evolutionary Pressure for Better Software
Darwinian Architecture Philosophy How Domain Isolation Creates Evolutionary Pressure for Better Software After two decades building trading platforms and banking systems, I’ve watched the same pattern repeat itself countless times. A production incident occurs. The war room fills. And then the finger pointing begins. “It’s the database team’s problem.” “No, it’s that batch job from payments.” “Actually, I think it’s … Continue reading “Darwinian Architecture Philosophy: How Domain Isolation Creates Evolutionary Pressure for Better Software” - Protected: The Salesforce Reckoning: How AI Democratisation Is Dismantling the Enterprise Platform Moat
This content is password protected. - Corporate Humility Is a Survival Trait
Most organisations don’t fail because they lack intelligence, capital, or ambition. They fail because leadership becomes arrogant, distant, and insulated from reality. What Is Humility? Humility is the quality of having a modest view of one’s own importance. It is an accurate assessment of one’s strengths and limitations, combined with an openness to learning and an awareness that others may … Continue reading “Corporate Humility Is a Survival Trait” - Aurora PostgreSQL: Archiving and Restoring Partitions from Large Tables to Iceberg and Parquet on S3
A Complete Guide to Archiving, Restoring, and Querying Large Table Partitions When dealing with multi-terabyte tables in Aurora PostgreSQL, keeping historical partitions online becomes increasingly expensive and operationally burdensome. This guide presents a complete solution for archiving partitions to S3 in Iceberg/Parquet format, restoring them when needed, and querying archived data directly via a Spring Boot API without database restoration. … Continue reading “Aurora PostgreSQL: Archiving and Restoring Partitions from Large Tables to Iceberg and Parquet on S3” - Banking in South Africa: Abundance, Pressure, and the Coming Consolidation
I wanted to write about the trends we can see playing out, both in South Africa and globally with respect to: Large Retailers, Mobile Networks, Banking, Insurance and Technology. These thoughts are my own and I am often wrong, so dont get too excited if you dont agree with me 🙂 South Africa is experiencing a banking paradox. On one … Continue reading “Banking in South Africa: Abundance, Pressure, and the Coming Consolidation” - Java 25 AOT Cache: A Deep Dive into Ahead of Time Compilation and Training1. Introduction Java 25 introduces a significant enhancement to application startup performance through the AOT (Ahead of Time) cache feature, part of JEP 483. This capability allows the JVM to cache the results of class loading, bytecode parsing, verification, and method compilation, dramatically reducing startup times for subsequent application runs. For enterprise applications, particularly those built with frameworks like Spring, … Continue reading “Java 25 AOT Cache: A Deep Dive into Ahead of Time Compilation and Training”
- The Death of the Enterprise Service Bus: Why Kafka and Microservices Are Winning
1. Introduction The Enterprise Service Bus (ESB) once promised to be the silver bullet for enterprise integration. Organizations invested millions in platforms like MuleSoft, IBM Integration Bus, Oracle Service Bus, and TIBCO BusinessWorks, believing they would solve all their integration challenges. Today, these same organizations are discovering that their ESB has become their biggest architectural liability. The rise of Apache … Continue reading “The Death of the Enterprise Service Bus: Why Kafka and Microservices Are Winning” - Model Context Protocol: A Comprehensive Guide for Enterprise ImplementationThe Model Context Protocol (MCP) represents a fundamental shift in how we integrate Large Language Models (LLMs) with external data sources and tools. As enterprises increasingly adopt AI powered applications, understanding MCP’s architecture, operational characteristics, and practical implementation becomes critical for technical leaders building production systems. 1. What is Model Context Protocol? Model Context Protocol is an open standard developed … Continue reading “Model Context Protocol: A Comprehensive Guide for Enterprise Implementation”
- Understanding and Detecting CVE-2024-3094: The React2Shell SSH BackdoorExecutive Summary CVE-2024-3094 represents one of the most sophisticated supply chain attacks in recent history. Discovered in March 2024, this vulnerability embedded a backdoor into XZ Utils versions 5.6.0 and 5.6.1, allowing attackers to compromise SSH authentication on Linux systems. With a CVSS score of 10.0 (Critical), this attack demonstrates the extreme risks inherent in open source supply chains and … Continue reading “Understanding and Detecting CVE-2024-3094: The React2Shell SSH Backdoor”
- Testing Maximum HTTP/2 Concurrent Streams for Your Website1. Introduction Understanding and testing your server’s maximum concurrent stream configuration is critical for both performance tuning and security hardening against HTTP/2 attacks. This guide provides comprehensive tools and techniques to test the SETTINGS_MAX_CONCURRENT_STREAMS parameter on your web servers. This article complements our previous guide on Testing Your Website for HTTP/2 Rapid Reset Vulnerabilities from a macOS. While that article … Continue reading “Testing Maximum HTTP/2 Concurrent Streams for Your Website”
- Testing Your Website for HTTP/2 Rapid Reset Vulnerabilities from a macOSIntroduction In August 2023, a critical zero day vulnerability in the HTTP/2 protocol was disclosed that affected virtually every HTTP/2 capable web server and proxy. Known as HTTP/2 Rapid Reset (CVE 2023 44487), this vulnerability enabled attackers to launch devastating Distributed Denial of Service (DDoS) attacks with minimal resources. Google reported mitigating the largest DDoS attack ever recorded at the … Continue reading “Testing Your Website for HTTP/2 Rapid Reset Vulnerabilities from a macOS”
- Why Bigger Banks Were Historically More Fragile and Why Architecture Determines Resilience
1. Size Was Once Mistaken for Stability For most of modern banking history, stability was assumed to increase with size. The thinking was the bigger you are, the more you should care, the more resources you can apply to problems. Larger banks had more capital, more infrastructure, and more people. In a pre-cloud world, this assumption appeared reasonable. In practice, … Continue reading “Why Bigger Banks Were Historically More Fragile and Why Architecture Determines Resilience” - Comparing OSPF to Human Workload Resolution1. Introduction In networking, OSPF (Open Shortest Path First) is a routing protocol that ensures traffic flows along the shortest and lowest cost path through a network. It does not care about hierarchy, seniority, or intent. It routes based on capability, cost, and reliability. Modern engineering organisations behave in exactly the same way, whether they realise it or not. Workloads … Continue reading “Comparing OSPF to Human Workload Resolution”
- A Deep Dive into Java 25 Virtual Threads: From Thread Per Request to Lightweight Concurrency
1. Introduction Java’s concurrency model has undergone a revolutionary transformation with the introduction of Virtual Threads in Java 19 (as a preview feature) and their stabilization in Java 21. With Java 25, virtual threads have reached new levels of maturity by addressing critical pinning issues that previously limited their effectiveness. This article explores the evolution of threading models in Java, … Continue reading “A Deep Dive into Java 25 Virtual Threads: From Thread Per Request to Lightweight Concurrency” - Deep Dive: Pauseless Garbage Collection in Java 25
1. Introduction Garbage collection has long been both a blessing and a curse in Java development. While automatic memory management frees developers from manual allocation and deallocation, traditional garbage collectors introduced unpredictable stop the world pauses that could severely impact application responsiveness. For latency sensitive applications such as high frequency trading systems, real time analytics, and interactive services, these pauses … Continue reading “Deep Dive: Pauseless Garbage Collection in Java 25” - MacOs: Getting Started with Memgraph, Memgraph MCP and Claude Desktop by Analyzing test banking data for Mule Accounts1. Introduction This guide walks you through setting up Memgraph with Claude Desktop on your laptop to analyze relationships between mule accounts in banking systems. By the end of this tutorial, you’ll have a working setup where Claude can query and visualize banking transaction patterns to identify potential mule account networks. Why Graph Databases for Fraud Detection? Traditional relational databases … Continue reading “MacOs: Getting Started with Memgraph, Memgraph MCP and Claude Desktop by Analyzing test banking data for Mule Accounts”
- MacOs: Deep Dive into NMAP using Claude Desktop with an NMAP MCPIntroduction NMAP (Network Mapper) is one of the most powerful and versatile network scanning tools available for security professionals, system administrators, and ethical hackers. When combined with Claude through the Model Context Protocol (MCP), it becomes an even more powerful tool, allowing you to leverage AI to intelligently analyze scan results, suggest scanning strategies, and interpret complex network data. In … Continue reading “MacOs: Deep Dive into NMAP using Claude Desktop with an NMAP MCP”
- Deep Dive into PostgreSQL Prepared Statements: When Plan Caching Goes Wrong leading to Memory ExhaustionPrepared statements are one of PostgreSQL’s most powerful features for query optimization. By parsing and planning queries once, then reusing those plans for subsequent executions, they can dramatically improve performance. But this optimization comes with a hidden danger: sometimes caching the same plan for every execution can lead to catastrophic memory exhaustion and performance degradation. In this deep dive, we’ll … Continue reading “Deep Dive into PostgreSQL Prepared Statements: When Plan Caching Goes Wrong leading to Memory Exhaustion”
- Stablecoins: A Comprehensive Guide1. What Are Stablecoins? Stablecoins are a type of cryptocurrency designed to maintain a stable value by pegging themselves to a reserve asset, typically a fiat currency like the US dollar. Unlike volatile cryptocurrencies such as Bitcoin or Ethereum, which can experience dramatic price swings, stablecoins aim to provide the benefits of digital currency without the price volatility. The most … Continue reading “Stablecoins: A Comprehensive Guide”
- Building an advanced Browser Curl Script with Playwright and Selenium for load testing websitesModern sites often block plain curl. Using a real browser engine (Chromium via Playwright) gives you true browser behavior: real TLS/HTTP2 stack, cookies, redirects, and JavaScript execution if needed. This post mirrors the functionality of the original browser_curl.sh wrapper but implemented with Playwright. It also includes an optional Selenium mini-variant at the end. What this tool does Note: Advanced bot … Continue reading “Building an advanced Browser Curl Script with Playwright and Selenium for load testing websites”
- Building a Browser Curl Wrapper for Reliable HTTP Requests and Load TestingModern websites deploy bot defenses that can block plain curl or naive scripts. In many cases, adding the right browser-like headers, HTTP/2, cookie persistence, and compression gets you past basic filters without needing a full browser. This post walks through a small shell utility, browser_curl.sh, that wraps curl with realistic browser behavior. It also supports “fire-and-forget” async requests and a –count flag to … Continue reading “Building a Browser Curl Wrapper for Reliable HTTP Requests and Load Testing”
- Amazon Aurora DSQL: A Deep Dive into Performance and Limitations1. Executive Summary Amazon Aurora DSQL represents AWS’s ambitious entry into the distributed SQL database market, announced at re:Invent 2024. It’s a serverless, distributed SQL database featuring active active high availability and PostgreSQL compatibility. While the service offers impressive architectural innovations including 99.99% single region and 99.999% multi region availability, but it comes with significant limitations that developers must carefully … Continue reading “Amazon Aurora DSQL: A Deep Dive into Performance and Limitations”
- A Script to download Photos, Videos and Images from your iPhone to your Macbook (by creation date and a file name filter)Annoying Apple never quite got around to making it easy to offload images from your iPhone to your Macbook. So below is a complete guide to automatically download photos and videos from your iPhone to your MacBook, with options to filter by pattern and date, and organize into folders by creation date. Prerequisites Install the required tools using Homebrew: Setup/Pair … Continue reading “A Script to download Photos, Videos and Images from your iPhone to your Macbook (by creation date and a file name filter)”
- Deep Dive into PostgreSQL Aurora Vacuum Optimizations for Large TablesWhen managing large PostgreSQL tables with frequent updates, vacuum operations become critical for maintaining database health and performance. In this comprehensive guide, we’ll explore vacuum optimization techniques, dive deep into the pg_repack extension, and provide hands-on examples you can run in your own environment. 1. Understanding the Problem PostgreSQL uses Multi-Version Concurrency Control (MVCC) to handle concurrent transactions. When rows … Continue reading “Deep Dive into PostgreSQL Aurora Vacuum Optimizations for Large Tables”
- Windows Domain Controller: Monitor and Log LDAP operations/queries use of resourcesThe script below monitors LDAP operations on a Domain Controller and logs detailed information about queries that exceed specified thresholds for execution time, CPU usage, or results returned. It helps identify problematic LDAP queries that may be impacting domain controller performance. Parameter: ThresholdSeconds Minimum query duration in seconds to log (default: 5) Parameter: LogPath Path where log files will be … Continue reading “Windows Domain Controller: Monitor and Log LDAP operations/queries use of resources”
- Deep Dive: AWS NLB Sticky Sessions (stickiness) Setup, Behavior, and Hidden PitfallsWhen you deploy applications behind a Network Load Balancer (NLB) in AWS, you usually expect perfect traffic distribution, fast, fair, and stateless.But what if your backend holds stateful sessions, like in-memory login sessions, caching, or WebSocket connections and you need a given client to keep hitting the same target every time? That’s where NLB sticky sessions (also called connection stickiness … Continue reading “Deep Dive: AWS NLB Sticky Sessions (stickiness) Setup, Behavior, and Hidden Pitfalls”
- Macbook: Enhanced Domain Vulnerability ScannerBelow is a fairly comprehensive passive penetration testing script with vulnerability scanning, API testing, and detailed reporting. Features Installation Required Dependencies Optional Dependencies Usage Basic Syntax Options Examples: Network Configuration Default Interface: en0 (bypasses Zscaler) To change the interface, edit line 24: The script automatically falls back to default routing if the interface is unavailable. Debug Mode Debug mode is enabled by default and … Continue reading “Macbook: Enhanced Domain Vulnerability Scanner”
- Macbook: Setup wireshark packet capture MCP for Antropic Claude DesktopIf you’re like me, the idea of doing anything twice will make you break out in a cold shiver. For my Claude desktop, I often need network pcap (packet capture) to unpack something that I am doing. So the script below installs wireshark, and then the wireshark mcp and then configures Claude to use it. Then I got it to … Continue reading “Macbook: Setup wireshark packet capture MCP for Antropic Claude Desktop”
- Macbook: A script to figure out which processes are causing battery usuage/drain issues (even when the laptop lid is closed)If you’re trying to figure out whats draining your macbook, even when the lid is closed – then try the script below (call with “sudo ./battery_drain_analyzer.sh”): If you see windowServer as your top consumer then consider the following: Finer grained optimisations: To optimise the power when the lid is closed, below are some options:
- MacOS Penetration Testing Guide Using hping3⚠️ LEGAL DISCLAIMER AND TERMS OF USE **READ THIS CAREFULLY BEFORE PROCEEDING** Legal Requirements: **AUTHORIZATION REQUIRED**: You MUST have explicit written permission from the system owner before running any of these tests **ILLEGAL WITHOUT PERMISSION**: Unauthorized network scanning, port scanning, or DoS testing is illegal in most jurisdictions **YOUR RESPONSIBILITY**: You are solely responsible for ensuring compliance with all applicable … Continue reading “MacOS Penetration Testing Guide Using hping3”
- Testing your sites SYN flood resistance using hping3 in parallelA SYN flood test using hping3 that allows you to specify the number of SYN packets to send and scales horizontally with a specific number of processes can be created using a Bash script with the xargs command. This approach allows you to distribute the workload across multiple processes for better performance. The Script This script uses hping3 to perform … Continue reading “Testing your sites SYN flood resistance using hping3 in parallel”
- Macbook: Return a list of processes using a specific remote port numberI find this script useful for debugging which processes are talking to which remote port. Example Usuage:
- Macbook: Useful/Basic NMAP script to check for vulnerabilities and create a formatted reportIf you want to quickly health check your website, then the following script is a simple NMAP script that scans your site for common issues and formats the results in a nice report style. Here’s a comprehensive guide on how to fix each type of directory permission issue that the above script might find (for apache):
- Macbook: Script to monitor the top disk reads and writesThe script below tracks disk usage of a macbook for 20 seconds and the shows the processes with the highest disk utilisations Example output:
- MacOs: How to see which processes are using a specific port (eg 443)Below is a useful script when you want to see which processes are using a specific port.
- Windows Server: Polling critical DNS entries for any changes or errorsIf you have tier 1 services that are dependant on a few DNS records, then you may want a simple batch job to monitor these dns records for changes or deletion. The script below contains an example list of DNS entries (replace these records for the ones you want to monitor).
- Mac OSX: Altering the OS route table to re-direct the traffic of a website to a different interface (eg re-routing whatsapp traffic to en0)This was a hard article to figure out the title for! Put simply, your mac book has a route table and if you want to move a specific IP address or dns from one interface to another, then follow the steps below: First find the IP address of the website that you want to re-route the traffic for: We want … Continue reading “Mac OSX: Altering the OS route table to re-direct the traffic of a website to a different interface (eg re-routing whatsapp traffic to en0)”
- Technology Culture: The Sinking Car SyndromeThis is (hopefully) a short blog that will give you back a small piece of your life… In technology, we rightly spend hours pouring over failure in order that we might understand it and therefore fix it and avoid it in the future. This seems a reasonable approach, learn from your mistakes, understand failure, plan your remediation etc etc. But … Continue reading “Technology Culture: The Sinking Car Syndrome”
- Ms Sql Server 2019 Diagnostic QueryFinding issues in SQL Server is not alway that easy. It can be NUMA issues, it can be DBCC settings, it can even be the CU (eg CU19). A friend sent me a very useful query a few years ago that really helped me fault find these issues. It was written by Glenn Berry, but I lost the query. Luckily … Continue reading “Ms Sql Server 2019 Diagnostic Query”
- AWS: Use the AWS CLI to delete snapshots from your accountThe Amazon EC2 console allows you to delete up to 50 Amazon Elastic Block Store (Amazon EBS) snapshots at once. To delete more than 50 snapshots, use the AWS Command Line Interface (AWS CLI) or the AWS SDK. To see all the snapshots that you own in a specific region, run the following. Note, replace af-south-1 with your region: Note: … Continue reading “AWS: Use the AWS CLI to delete snapshots from your account”
- Sql Server: Query to View a list of missing indexes from your Sql Server databaseMost companies will have a fair amount of SQL databases and its likely that most of those databases are performing sub-optimally due to missing indexes. We can debate (for a long time) the pros and cons of indexes, but the undeniable reality is that having missing indexes on large tables create a lot of issues in production environments (including, slowness, … Continue reading “Sql Server: Query to View a list of missing indexes from your Sql Server database”
- Macbook OSX: Using Touch ID / fingerprints to enable SUDO and permanently enabling this after Mac OSX updatesEach day that I wake up I try and figure out if I can do less work than yesterday. With this in mind I was playing around to see if there is a way to save me typing my password each time I SUDO. It turns out this is quite a simple change… Open Terminal and run the following to … Continue reading “Macbook OSX: Using Touch ID / fingerprints to enable SUDO and permanently enabling this after Mac OSX updates”
- Macbook OSX: Change the default image type of your screenshots from PNG to JPEG, GIF or PDFThere are a few things that I tweak when I get a new Macbook, one of which is the screenshot format (mainly because it doesnt natively render in Whatsapp). So I thought I would share the code snippet that you can run in Terminal to alter the default image type of your screenshots: For JPEG use: For GIF use: For … Continue reading “Macbook OSX: Change the default image type of your screenshots from PNG to JPEG, GIF or PDF”
- How to make an offline copy of a static website using wget and hosting on AWS S3 with CloudFrontI have an old website that I want to avoid the hosting costs and so just wanted to download the website and run it from an AWS S3 bucket using Cloud Front to publish the content. Below are the steps I took to do this: First download the website to your laptop Below is a summary of the parameters (inc … Continue reading “How to make an offline copy of a static website using wget and hosting on AWS S3 with CloudFront”
- AWS: Install and configure the AWS CLI on a MacbookYou can absolutely get the following from the AWS help pages; but this is the lazy way to get everything you need for a simple single account setup. Run the two commands below to drop the package on your Mac. Then check the versions you have installed: Next you need to setup your environment. Note: This is NOT the recommended … Continue reading “AWS: Install and configure the AWS CLI on a Macbook”
- AWS: Automatically Stop and Start your EC2 ServicesBelow is a quick (am busy) outline on how to automatically stop and start your EC2 instances. Step 1: Tag your resources In order to decide which instances stop and start you first need to add an auto-start-stop: Yes tag to all the instances you want to be affected by the start / stop functions. Note: You can use “Resource Groups and … Continue reading “AWS: Automatically Stop and Start your EC2 Services”
- How to Optimise your Technology Teams Structure to improve flowI have seen many organisations restructure their technology teams over and over, but whichever model they opt for – they never seem to be able to get the desired results with respect to speed, resilience and quality. For this reason organisations will tend to oscillate from centralised teams, which are organised around skills and reuse, to federated teams that are … Continue reading “How to Optimise your Technology Teams Structure to improve flow”