Jonas Schreiber: a blog about engineering

  • Handling SQS Backpressure in Spring

    Handling SQS Backpressure in Spring

    Our team recently encountered a thorny issue in a distributed system using Spring Boot 3, JDK 21, and AWS ECS. The system processes messages from several SQS queues, with a scheduled task running every 10 seconds to dequeue and process messages. While it worked perfectly under light load or when external services were responsive, things fell apart under heavier…

  • Scaling Challenges and Solutions with Java Microservices

    Scaling Challenges and Solutions with Java Microservices

    During a recent onboarding of a large customer, a series of microservices owned by my team experienced a massive spike in traffic. Our peak load skyrocketed from handling 60 requests per minute (RPM) to an eye-popping 6,000 RPM. This kind of growth is what engineers dream of—and dread—because scaling doesn’t come without its challenges. The…

  • How This Website is Hosted

    How This Website is Hosted

    This is a blog about my trials and tribulations in getting this WordPress site hosted inside a Docker container running on a Windows 10 machine. I’ve been hosting my website using Google domains for a few years on a Linux machine. At first I was running WordPress natively, using Apache, then inside Docker (thank you…

  • Archetyping Projects

    Archetyping Projects

    When your organization or team has arrived at some best practices and wants to formalize them such that all future services will adopt these best practices going forward there is a need for a project “archetype”. This is so common, in fact, that the creators of apache’s maven have created a tool for this: the…

  • Creating an Isolated Development Environment From Scratch Using Docker

    Creating an Isolated Development Environment From Scratch Using Docker

    Sometimes unit testing isn’t enough. Sometimes even running one of your applications locally isn’t enough. Occasionally we have to integration test our changes locally as developers. A Simple Question “Wouldn’t it be nice to execute one command and see our entire stack be deployed locally?” That’s the question that my boss recently asked me. And…

  • Fun with Discrete Fourier Transforms at 2711Hz

    Fun with Discrete Fourier Transforms at 2711Hz

    As we get older our hearing declines. This is a problem that needs solving. My father has a refrigerator door alarm that goes off when the door is left open for more than two minutes. Unfortunately the alarm sounds at a frequency he cannot hear. Assisting the elderly makes me feel like a good person…

  • Quantifying the Intangible: An Engineer's Perspective

    Quantifying the Intangible: An Engineer's Perspective

    Culture can be accurately categorized as an intangible asset of a company. But intangibles can often have real world effects. The Idea The total output of your company is the total work of all individuals, working by themselves, multiplied by a coefficient that is a function of your culture. This coefficient can be thought of…

  • Clean Slate Development

    Clean Slate Development

    Hopefully, during the course of their career, every engineer gets to work on a project that’s being written from scratch. It’s a time where, as a younger developer, I would rush into things, using the tools I already knew but (hopefully) in a more sophisticated manner. Now I see it as an opportunity to employ…

  • Lambdas, Executors, and Callables, Oh My!

    Lambdas, Executors, and Callables, Oh My!

    This post complements my previous one on benchmarking.All code from this post is available on GitHub: https://github.com/JonasJSchreiber/Primitive-Benchmarking Lambda Syntax There are quite a few ways to iterate in Java. Let’s take a look at the traditional “for” loop, written three different ways, each doing the same thing: multiplying two matrices.Using a declared iterator, with terminating…

  • Bad and Good Benchmarking

    Bad and Good Benchmarking

    So, when you have a bunch of ingredients but nothing special in mind to cook, what do you do? You make a stew. That’s what I’m doing today. All code from this post is available on GitHub: https://github.com/JonasJSchreiber/Primitive-Benchmarking Down the Rabbit Hole It started with a YouTube video on Dynamic Programming. In it, the professor…