Practical writing on web development, system design, AI tooling, and the craft of shipping software.
Start with a single toothpick. Add new ones at every exposed endpoint. What emerges is a fractal structure that doubles in complexity each generation.
What if you smoothly increased the multiplication factor on the cardioid from 2 to 200? Watch the circle's string art morph through every known times table curve.
A single random decision — slash or backslash — repeated across a grid produces an endlessly varied maze. Originally a one-line Commodore 64 BASIC program.
Visualise the Sierpiński triangle through recursive geometry. A simple rule — divide, remove the centre — repeated until you can't see the individual pieces anymore.
Divide a square into nine parts, remove the centre, and repeat on the eight remaining squares. The Sierpiński carpet has zero area but a well-defined fractal structure.
The same circle trick as the cardioid, but multiply by 3 instead of 2. The resulting curve — a kidney-shaped nephroid — appears in reflected light inside a coffee cup.
Defined by a deceptively simple iteration in the complex plane, the Mandelbrot set reveals infinite detail at every level of zoom — a fractal icon of mathematical beauty.
Apply the Koch curve to all three sides of an equilateral triangle and you get a snowflake. Infinite perimeter, finite area, endlessly satisfying.
Replace every line segment with four smaller ones. Repeat. The Koch curve has infinite perimeter but encloses a finite area — one of the earliest known fractals.
The Julia set is the Mandelbrot's sibling — same iteration, but the constant C sweeps over time. Watch the fractal morph through an infinite family of shapes.
Each branch splits into two smaller ones at an angle. Change the angle and the tree transforms from a bare winter silhouette to a lush summer canopy.
Multiply each point on a circle by 2 and connect them with lines. At enough resolution the curve that emerges is a perfect heart shape — a cardioid.
beginnerExplore the intersection of mathematics and art. Learn how simple recursive functions can generate complex patterns like the Sierpinski Triangle using Processing.
Cut through the hype and learn what AI really means for software engineers — understand core terms like LLMs, tokens, prompts, and how they apply to real-world development.
beginnerModernizing legacy systems isn't just about technology—it's about unlocking agility, innovation, and future-proofing your business. In this tech blog, we explore the core challenges of transformation and why businesses that modernize stand to gain a decisive competitive edge.
beginnerCreating a developer-friendly business isn't just about improving workflows—it's about fostering an environment that empowers developers to be their best. In this tech blog, we explore why prioritizing developer experience can drive productivity, reduce turnover, and ultimately lead to better products and faster time-to-market.
beginnerAs digital demands grow, traditional monolithic systems struggle to keep up. This tech blog explores why transitioning to microservices architecture isn't just a technical upgrade—it's a strategic move toward scalability, agility, and long-term innovation.
beginnerCreating a developer-friendly business isn't just about improving workflows—it's about fostering an environment that empowers developers to be their best. In this tech blog, we explore why prioritizing developer experience can drive productivity, reduce turnover, and ultimately lead to better products and faster time-to-market.
beginnerLearn how to build a simple React app from scratch using just HTML and JavaScript. This guide walks you through adding React and ReactDOM via CDN, using JSX with Babel, and creating your first functional component—all in a single HTML page. Perfect for beginners!
beginnerAPI security ensures data protection by restricting sensitive operations to admins and validating user sessions. Middleware like allowAdminsOnly enforces admin-only access, while authorise verifies tokens and trusted devices for robust security across web and mobile clients.
beginnerIn this guide, we will explore how to integrate Stripe payments into a Node.js and Express application. From setting up the Stripe SDK to implementing subscription management, this blog will walk you through the key components.
beginnerIn web development, understanding client information can be crucial for enhancing user experience, security, and debugging. When working with a Node.js and Express server, collecting and handling request details like the client’s IP address, browser type, operating system, and device type can provide valuable insights.
beginnerIn modern software development, creating a consistent and reliable development environment can be challenging. Enter Dev Containers, a powerful tool for developers using Visual Studio Code (VS Code) to streamline their workflow. In this blog post, we’ll explore what Dev Containers are, how they work, and when you might need them in your development process.
beginnerNode.js enables efficient server apps in JavaScript, using a non-blocking, event-driven model. With Google’s V8 engine and Libuv, it excels at handling asynchronous I/O, ideal for real-time, scalable applications. This article dives into its architecture and internal mechanics.
beginnerSecure user accounts with Twilio's Verify API in Node.js! Learn to send SMS verification codes, validate them, and manage phone updates efficiently. A step-by-step guide to building robust verification for your app. 🚀
beginnerLearn how to use AWS S3 pre-signed URLs to securely share files from a Node.js app. Pre-signed URLs enable temporary, controlled access to files in your S3 bucket without exposing them publicly. Perfect for secure file sharing, this guide walks through setup, code, and best practices.
beginnerSet up a scalable Node.js project with TypeScript and Express using best practices. This guide walks you through initialization, configuration, and two development approaches—compiling to JavaScript or running directly with ts-node and nodemon for a smoother workflow.
Kickstart your Node.js Express web server project in 2024 with modern best practices. From project structure and TypeScript support to security, testing, and deployment with Docker—this guide covers everything you need to build scalable and maintainable applications.
beginnerJWTs enable stateless authentication, but securing them is critical. Avoid storing tokens in local storage due to XSS risks. Instead, use HttpOnly, Secure cookies to prevent access via JavaScript and limit CSRF attacks. Pair short-lived access tokens with refresh tokens for enhanced security.
beginnerLearn how to create scalable and maintainable web applications using React, TypeScript, and modern development practices.
beginnerLearn how to implement secure JWT-based authentication in Node.js using access and refresh tokens. This guide covers user login, token generation, token refresh flow, and best practices for managing sessions in modern web and mobile applications.