• Software Engineering - Intermediate - Advanced - Devops - Coding - Azure - Amazon Web Services

    Geo-Resilience in the Cloud: Active-Active vs Active-Passive Architectures

    Building resilient systems is no longer a best practice. It as an expectation. Whether you’re running a small internal app or handling millions of transactions a day, the assumption is the same: your service should stay online, even when things go wrong. That includes major failures such as a full region outage on your cloud provider. This is where geo-resilience comes in. Think of it as the modern approach to designing for the worst-case scenario. Your architecture will determine whether users feel the impact of an outage or whether they don’t even know it happened. In this post, we will…

  • JavaScript - React - Web Development - Beginner

    React Compiler: A Big Step in React

    React just took a quiet but deeply meaningful step forward. With the release of the React Compiler, we are entering a new phase of performance. In this new era not the developer, the compiler takes on the burden of micro-optimisation. In this blog post, I will be summarizing what has happened. For a deeper dive please check https://react.dev/learn/react-compiler. If you’ve written React for any length of time, you’ve likely to get familiarized with useMemo, useCallback, and memoization strategies. We have learned to optimize re-renders manually, scattering hooks throughout our components to avoid unnecessary updates. However the results have been complicated.…

  • Beginner - Coding - Intermediate - Java - C# - Go - Software Engineering

    Why Go Is Becoming a Strong Alternative to C# and Java?

    In the world of enterprise software, some names have stayed strong for decades. C# and Java are two of those names. They shaped the way companies built applications. They gave us reliability, structure, and a deep ecosystem of tools and libraries. For a long time, they were simply the best choices for building serious systems. However, the ground of the world of software is a wobbly ground, does not stand still. We are now in an age where speed, simplicity, and flexibility matter more than ever. Cloud-native systems, containers, and microservices have changed the way we think about software. New…

  • Web Development - Beginner - JavaScript - Coding

    Deno, Just Another JavaScript Runtime for Backend

    JavaScript has come a long way since its creation. It started as a very basic language for making web pages interactive. It has become more powerful and it has been the monopoly over web development for decades. However in this blog post we won’t be talking about JavaScript’s web development capabilities. The idea of Node.js has been an unexpected step for JavaScript, because JavaScript was tightly coupled with frontend development. Yet Node.js was allowing it to run on the server. This was a game-changer for the industry. It enabled developers to use JavaScript for both frontend and backend. However, no…

  • Beginner - Go

    Writing REST Api with Go

    REST APIs are everywhere. From mobile apps to web platforms, they connect the front-end and back-end in a clean and standard way. In this post, we’ll write a basic REST API using Go. It will not use any third-party packages. Only the Go standard library. We’ll simulate a database using a simple map. Go is fast, simple, and powerful. It compiles to a single binary. It starts up quickly and uses little memory. Go has strong support for concurrency, and the standard library is great for building APIs. In a microservices setup, services talk to each other. Often they use…

  • Coding - Beginner - Artificial Intelligence - Large Language Models

    Running DeepSeek R1 on Your Local Machine Offline: A Step-by-Step Guide

    Over the past few months even weeks, DeepSeek has emerged as an unexpected guest in the AI market. It literally redefined the AI industry and cost trillions of dollars loss in stock markets. Even though I am also interested in, I won’t focus on that side of DeepSeek today. The reason it caused such a fundamental change is that it uses significantly fewer resources than its competitors in the market. The level of optimization is so high that you can run a fully pre-trained model even on a laptop. Today, I will take you through how to run DeepSeek R1…

  • Advanced - C# - Software Engineering

    Advanced C# Tips: Use Conditional Attribute for Debugging Code

    In C#, it’s common to sprinkle your code with debugging information—like console logs that help you track down bugs. However, when you’re ready to release your application to the world, you don’t want all that extra debug code to slow things down. This is where the Conditional attribute comes into play. The Conditional attribute allows you to mark certain methods so that they’ll only be called when specific conditions are met—typically when you’re building in a debug environment. When you build your application for release, the compiler ignores these methods, as if they weren’t there at all. This helps to…

  • Advanced - C# - Software Engineering

    Advanced C# Tips: Optimize Recursive Functions With Tail Recursion

    Recursive functions are a staple in many programmers’ toolkits. They allow us to solve complex problems by having a function call itself with a different set of parameters until a certain condition is met, known as the base case. This is an elegant way to process data structures like trees or to perform repeated operations until a condition is satisfied. However, recursion comes with its cost. Each recursive call adds a new layer to the stack (a special area in a program’s memory) that tracks where each function should return control once it completes its execution. This is known as…

  • C# - Software Engineering - Advanced

    Advanced C# Tips: Beware of Micro-Optimizing at the Cost of Code Clarity

    Micro-optimizing refers to making small modifications to code in an attempt to improve performance, often at the expense of making the code harder to read, understand, and maintain. While it’s natural for developers to want their applications to run as efficiently as possible, it is also crucial to balance these optimizations with the overall clarity and maintainability of the code. Micro-optimizations may be a bit faster language constructs, helps to handle tricky algorithms for minor performance gains, or restructuring code in a way that makes it harder for others (or even yourself) to understand later. These optimizations are “micro” because…