Circuit Breakers - Stop Calling a Service That Is Already On Fire

A few weeks into Spring Boot land and I already have a new favourite kind of production pain: one slow downstream dependency quietly taking the whole request path with it. Not a crash. Not a clean 500. Just threads waiting, timeouts stacking, and suddenly your service looks unhealthy because someone else’s database is having a bad afternoon.

In the .NET world I reached for Polly when this showed up. In Java the answer that keeps coming up in code reviews is Resilience4j — the library that basically replaced Netflix Hystrix after Hystrix went into maintenance mode back in 2018. If you are wiring Spring Boot 3 services that talk to other services (and who isn’t), this is the pattern I am finally treating as non-optional.

Read More

The Art of Debugging

One of my strengths at work is debugging/troubleshooting technical issues. I have been told that I have a knack for finding and fixing problems that others find hard to solve. Many people come to me for assistance when they encounter difficulties and I often am able to give them effective solutions or workarounds that allow them to continue their work. This is an ability that has come with a lot of practice and experience in dealing with various technical challenges. There are a few core ideas that underpin these abilities, some of which I try to enumerate below

Read More

Bearer, pop the tokens

In modern web architectures, a security token is used to grant access to a protected resource. It typically is a string of random characters that is generated by an identity/authorization server in response to a login/identification request. Bearer tokens are a type of security tokens - one that has gained a lot of popularity due to the introduction of the OAuth2.0 standard. The name “bearer token” comes from the fact that the token can be used by anyone who has it. This is in contrast to other types of tokens, such as proof of possession (PoP) tokens, which can only be used by the specific client that was issued the token. If the PoP token is stolen, it cannot be used by anyone else.

Read More

Transformers - Age of ChatGPT

A transformer model is a neural network architecture that can automatically transform one type of input into another type of output. It was first introduced in the paper “Attention Is All You Need” by Vaswani et al. (2017). Transformer models are distinguished by their use of self-attention, a mechanism that allows them to learn long-range dependencies between input and output sequences. This makes them well-suited for tasks such as machine translation, text summarization, and question answering.

Transformer models are typically composed of two parts: an encoder and a decoder. The encoder takes the input sequence and produces a sequence of hidden representations. The decoder then takes these hidden representations and produces the output sequence. The encoder and decoder are both made up of a stack of self-attention layers. Each self-attention layer takes the hidden representations from the previous layer and produces new hidden representations that are weighted by their attention to each other. This allows the model to learn long-range dependencies between the input and output sequences.

Read More

Load Balancing - A Balancing Act

Load balancing is a technique used to distribute network or application traffic across a number of servers. Load balancers can be used to distribute traffic for a variety of applications, including web servers, databases, and file servers. They can also be used to distribute traffic for different types of traffic, such as HTTP, HTTPS, and DNS. Load balancing is important because it helps to improve the performance, reliability and security of applications. By distributing traffic across multiple servers, load balancing can help to prevent any single server from becoming overloaded. This can improve performance by ensuring that requests are processed quickly and efficiently. Load balancing can also help to improve reliability by preventing a single server failure from taking down an entire application or website. Finally, load balancing can help to improve security by making it more difficult for attackers to exploit a single server.

Read More

Spring Boot for a .NET Brain - Same Job, Different Dialect

For years my muscle memory has been C# and ASP.NET Core. Controllers, middleware, IServiceCollection, appsettings.json, NuGet, ship it. That is still how I think when nobody is watching. Lately the day job is pulling me into Java land — Spring Boot, Maven, a different IDE, and a package namespace that used to be javax and is now stubbornly jakarta.

I am not rewriting my career overnight. I am learning the dialect so I can read the codebase, review a PR without guessing, and stop treating the Java services on our map as black boxes. If you are a .NET person staring at Spring Boot 3 for the first time, this is the cheat sheet I wish someone had handed me on day one.

Read More