<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel>
<title>Engineering Notes by Ripan Halder</title>
<link>https://ripanhalder.com/blog/</link>
<description>Practical backend engineering notes on Java, Spring Boot, Kafka, databases, AWS and system design.</description>
<language>en-IN</language>
<lastBuildDate>Mon, 13 Jul 2026 12:00:00 GMT</lastBuildDate>
<item>
<title>Modernizing Java Services Without Freezing Delivery</title>
<link>https://ripanhalder.com/blog/modernizing-java-services-without-freezing-delivery/</link>
<guid>https://ripanhalder.com/blog/modernizing-java-services-without-freezing-delivery/</guid>
<description>How to sequence Java, Spring Boot, Gradle, dependency, artifact and cloud migrations while teams continue shipping.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>Java Memory Model: Visibility, Ordering and Safe Publication</title>
<link>https://ripanhalder.com/blog/java-memory-model-visibility/</link>
<guid>https://ripanhalder.com/blog/java-memory-model-visibility/</guid>
<description>A practical mental model for volatile, synchronized, final fields and happens-before relationships in concurrent Java code.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>Class Loading, Metaspace and ClassLoader Leaks</title>
<link>https://ripanhalder.com/blog/class-loading-metaspace-leaks/</link>
<guid>https://ripanhalder.com/blog/class-loading-metaspace-leaks/</guid>
<description>What class metadata is, how class loaders define reachability and why application reloads can leak metaspace.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>Thread Pools and Backpressure in Java Services</title>
<link>https://ripanhalder.com/blog/thread-pools-backpressure-java/</link>
<guid>https://ripanhalder.com/blog/thread-pools-backpressure-java/</guid>
<description>How pool size, queue policy and downstream capacity determine whether concurrency improves throughput or amplifies failure.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>BigDecimal for Money: Precision, Scale and Domain Rules</title>
<link>https://ripanhalder.com/blog/bigdecimal-money-java/</link>
<guid>https://ripanhalder.com/blog/bigdecimal-money-java/</guid>
<description>Why binary floating point is unsafe for money and how to model rounding, scale and comparison explicitly.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>Spring Transaction Boundaries That Match the Business Operation</title>
<link>https://ripanhalder.com/blog/spring-transaction-boundaries/</link>
<guid>https://ripanhalder.com/blog/spring-transaction-boundaries/</guid>
<description>How @Transactional proxies, propagation, isolation and exception behavior shape real service consistency.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>JPA N+1 Queries: Fetch Plans Without Accidental Data Explosions</title>
<link>https://ripanhalder.com/blog/jpa-n-plus-one-fetching/</link>
<guid>https://ripanhalder.com/blog/jpa-n-plus-one-fetching/</guid>
<description>How lazy loading, joins, entity graphs and projections affect query count, memory and API latency.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>Spring Boot Configuration and Secrets Across Environments</title>
<link>https://ripanhalder.com/blog/spring-boot-configuration-secrets/</link>
<guid>https://ripanhalder.com/blog/spring-boot-configuration-secrets/</guid>
<description>A layered configuration strategy for defaults, environment overrides, validation and secret delivery.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>Timeouts, Retries and Circuit Breakers Without Retry Storms</title>
<link>https://ripanhalder.com/blog/resilience-timeouts-retries-circuit-breakers/</link>
<guid>https://ripanhalder.com/blog/resilience-timeouts-retries-circuit-breakers/</guid>
<description>How to combine time budgets, backoff, idempotency and circuit breaking around remote dependencies.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>Spring Boot Observability: Logs, Metrics and Traces That Explain a Request</title>
<link>https://ripanhalder.com/blog/spring-boot-observability/</link>
<guid>https://ripanhalder.com/blog/spring-boot-observability/</guid>
<description>A practical telemetry model for correlation, RED metrics, business signals and production diagnosis.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>Kafka Throughput, Partitions and Backpressure: A Practical Mental Model</title>
<link>https://ripanhalder.com/blog/kafka-throughput-partitions-backpressure/</link>
<guid>https://ripanhalder.com/blog/kafka-throughput-partitions-backpressure/</guid>
<description>How partitions, consumer concurrency, processing latency and downstream capacity determine real event throughput.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>Kafka Consumer Groups and Rebalancing Without Surprises</title>
<link>https://ripanhalder.com/blog/kafka-consumer-groups-rebalancing/</link>
<guid>https://ripanhalder.com/blog/kafka-consumer-groups-rebalancing/</guid>
<description>How partition assignment changes, why long processing causes churn and how cooperative strategies reduce disruption.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>At-Least-Once Delivery and Idempotent Consumers</title>
<link>https://ripanhalder.com/blog/delivery-semantics-idempotent-consumers/</link>
<guid>https://ripanhalder.com/blog/delivery-semantics-idempotent-consumers/</guid>
<description>Why duplicate delivery is normal and how deduplication, state transitions and database constraints create one durable outcome.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>Kafka Retries and Dead-Letter Topics Without Losing Context</title>
<link>https://ripanhalder.com/blog/kafka-retries-dead-letter-topics/</link>
<guid>https://ripanhalder.com/blog/kafka-retries-dead-letter-topics/</guid>
<description>A failure-handling design for transient errors, poison records, backoff, replay and operational ownership.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>Event Schema Evolution Without Breaking Consumers</title>
<link>https://ripanhalder.com/blog/schema-evolution-event-contracts/</link>
<guid>https://ripanhalder.com/blog/schema-evolution-event-contracts/</guid>
<description>Compatibility rules, additive change, semantic versioning and consumer-driven rollout for long-lived events.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>Database Indexes: A Practical Guide to Selectivity and Query Shape</title>
<link>https://ripanhalder.com/blog/database-indexes-practical/</link>
<guid>https://ripanhalder.com/blog/database-indexes-practical/</guid>
<description>How B-tree indexes support filtering, joining and ordering—and why extra indexes also create write cost.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>Transaction Isolation and Locking for Backend Engineers</title>
<link>https://ripanhalder.com/blog/transaction-isolation-locking/</link>
<guid>https://ripanhalder.com/blog/transaction-isolation-locking/</guid>
<description>Dirty reads, non-repeatable reads, phantoms, write skew and practical techniques for preserving invariants.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>Reading PostgreSQL EXPLAIN ANALYZE Without Guessing</title>
<link>https://ripanhalder.com/blog/postgres-explain-analyze/</link>
<guid>https://ripanhalder.com/blog/postgres-explain-analyze/</guid>
<description>How to interpret plan nodes, row estimates, loops, buffers and the difference between planner cost and elapsed time.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>Redis Caching Without Serving Incorrect Data</title>
<link>https://ripanhalder.com/blog/redis-caching-consistency/</link>
<guid>https://ripanhalder.com/blog/redis-caching-consistency/</guid>
<description>Cache-aside, TTLs, invalidation, stampede protection and consistency trade-offs for backend systems.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
<item>
<title>Designing a Ledger Data Model That Can Explain Every Balance</title>
<link>https://ripanhalder.com/blog/ledger-data-model/</link>
<guid>https://ripanhalder.com/blog/ledger-data-model/</guid>
<description>Append-oriented entries, double-entry structure, immutable history and reconciliation-friendly balances.</description>
<pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
</item>
</channel></rss>
