<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Joshua Antony | Tech Blog</title><link>https://blogs.joshuaantony.com/</link><description>Recent content on Joshua Antony | Tech Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 06 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blogs.joshuaantony.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Go's Developer Experience Problem: Why Spring Boot Still Wins for Business Applications</title><link>https://blogs.joshuaantony.com/posts/go-developer-experience-problem/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><guid>https://blogs.joshuaantony.com/posts/go-developer-experience-problem/</guid><description>Go is a fine language for infrastructure tooling. But for the 90% of software that is business applications, Spring Boot&amp;rsquo;s developer experience is dramatically superior &amp;ndash; and AI-assisted development has eliminated the last argument against Java&amp;rsquo;s annotation-driven model.</description></item><item><title>Building a Self-Hosted Photo Gallery on Kubernetes with Immich, Authentik, and Cloudflare Tunnel</title><link>https://blogs.joshuaantony.com/posts/self-hosted-photo-gallery-kubernetes/</link><pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate><guid>https://blogs.joshuaantony.com/posts/self-hosted-photo-gallery-kubernetes/</guid><description>How I built a Google Photos alternative running on a 3-node Kubernetes cluster at home, protected by MFA authentication, and exposed securely via Cloudflare Tunnel with zero open ports.</description></item><item><title>The Identity Provider Customization Cliff: When OAuth2 Is Overkill and SaaS IDPs Aren't Enough</title><link>https://blogs.joshuaantony.com/posts/identity-provider-customization-cliff/</link><pubDate>Fri, 03 Apr 2026 00:00:00 +0000</pubDate><guid>https://blogs.joshuaantony.com/posts/identity-provider-customization-cliff/</guid><description>The identity industry is stuck between SaaS IDPs that aren&amp;rsquo;t flexible enough and custom solutions that aren&amp;rsquo;t secure enough. And for a surprising number of applications, the entire OAuth2 token ceremony is overkill &amp;ndash; a session cookie would do.</description></item><item><title>Overengineering Microservices: When Smart Decisions Compound Into Complexity</title><link>https://blogs.joshuaantony.com/posts/overengineering-microservices/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><guid>https://blogs.joshuaantony.com/posts/overengineering-microservices/</guid><description>HAProxy sidecars for mTLS. Hystrix for circuit breaking. Apache Camel between layers within the same service. Six API versions. A mandated common framework. A squash merge ban. Each decision was defensible. Combined, they created a system that took three months to onboard into.</description></item><item><title>Stop Returning 200 OK for Everything</title><link>https://blogs.joshuaantony.com/posts/stop-returning-200-ok-for-everything/</link><pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate><guid>https://blogs.joshuaantony.com/posts/stop-returning-200-ok-for-everything/</guid><description>HTTP status codes are a contract consumed by clients, load balancers, monitoring, and caches. When you return 200 OK for partial failures, every one of these systems is blind.</description></item><item><title>Hybris OCC: A REST Facade Over a Stateful Monolith</title><link>https://blogs.joshuaantony.com/posts/hybris-occ-rest-facade-over-stateful-monolith/</link><pubDate>Mon, 30 Mar 2026 00:00:00 +0000</pubDate><guid>https://blogs.joshuaantony.com/posts/hybris-occ-rest-facade-over-stateful-monolith/</guid><description>SAP Commerce OCC promises a stateless REST API for headless commerce. Underneath, every request hydrates an HTTP session and routes through the same stateful facades built for the JSP storefront. The API is stateless in contract but stateful in implementation.</description></item><item><title>Hybris Populator Framework: Design Flaws and Memory Pitfalls</title><link>https://blogs.joshuaantony.com/posts/hybris-populator-framework-design-flaws/</link><pubDate>Sat, 28 Mar 2026 00:00:00 +0000</pubDate><guid>https://blogs.joshuaantony.com/posts/hybris-populator-framework-design-flaws/</guid><description>The SAP Commerce Converter/Populator pattern optimized for extensibility at the cost of predictability. Deep chaining, invisible runtime graphs, and JVM heap exhaustion are the consequences.</description></item><item><title>Katalon Is Obsolete: Open Source Has Won</title><link>https://blogs.joshuaantony.com/posts/katalon-is-obsolete/</link><pubDate>Wed, 25 Mar 2026 00:00:00 +0000</pubDate><guid>https://blogs.joshuaantony.com/posts/katalon-is-obsolete/</guid><description>Katalon solved a real problem for its era: giving non-coding QA teams a path to automation. That problem has been solved more effectively by open-source frameworks and AI code generation.</description></item><item><title>Module Federation Is Coupling Disguised as Micro-Frontends</title><link>https://blogs.joshuaantony.com/posts/module-federation-is-coupling-disguised-as-micro-frontends/</link><pubDate>Fri, 20 Mar 2026 00:00:00 +0000</pubDate><guid>https://blogs.joshuaantony.com/posts/module-federation-is-coupling-disguised-as-micro-frontends/</guid><description>With 40+ MFEs federated into a single shell, Module Federation creates a distributed monolith &amp;ndash; all the operational complexity of microservices with all the coupling of a monolith.</description></item><item><title>Playwright Is Not a Backend API Testing Tool</title><link>https://blogs.joshuaantony.com/posts/playwright-is-not-a-backend-api-testing-tool/</link><pubDate>Sun, 15 Mar 2026 00:00:00 +0000</pubDate><guid>https://blogs.joshuaantony.com/posts/playwright-is-not-a-backend-api-testing-tool/</guid><description>Using Playwright for backend API testing in a Spring Boot repo is not reuse &amp;ndash; it&amp;rsquo;s dual-stack maintenance. The right tool depends on what you&amp;rsquo;re verifying, not what you already have installed.</description></item><item><title>PyTorch Essentials Cheat Sheet: From Zero to Backpropagation</title><link>https://blogs.joshuaantony.com/posts/pytorch-essentials-cheat-sheet/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://blogs.joshuaantony.com/posts/pytorch-essentials-cheat-sheet/</guid><description>A dense, correct reference covering tensors, GPU acceleration, autograd, backpropagation, and training loops. Everything you need to understand how PyTorch trains models.</description></item><item><title>The Spelled-Out Intro to Language Modeling and Transformers</title><link>https://blogs.joshuaantony.com/posts/intro-to-language-modeling-and-transformers/</link><pubDate>Thu, 05 Mar 2026 00:00:00 +0000</pubDate><guid>https://blogs.joshuaantony.com/posts/intro-to-language-modeling-and-transformers/</guid><description>A dense walkthrough of how large language models work &amp;ndash; from next-token prediction to tokenization, embeddings, self-attention with causal masking, multi-head attention, and the full transformer architecture. Based on Andrej Karpathy&amp;rsquo;s teaching approach.</description></item></channel></rss>