Practical lessons on architecture, developer workflows and the systems straining under modern software demands.

Symptoms of Bad Software Design

🎯 Featured Article

🧩 Symptoms of Bad Software Design
A concise breakdown of four classic software design failure modes — Rigidity, Fragility, Immobility and Viscosity — and why they still surface in modern systems.

  • Identifies architectural “smells” that increase maintenance costs over time
  • Explains how poor modularity amplifies change risk and delivery friction

⏩ TL;DR (Quick Recap)

  • Modern platforms are revisiting architectural fundamentals to handle scale, concurrency and maintainability
  • JVM ecosystem updates continue improving interoperability, structured concurrency and build tooling
  • Spring teams are focusing on operational resilience through API gateways, idempotency and infrastructure tuning
  • AI-assisted development is shifting from experimentation toward governance, cost control and workflow integration

☕ JVM Corner

🧵 JEP 533 Tightens Exception Handling in Java’s Structured Concurrency for JDK 27
JDK 27’s latest structured concurrency preview improves exception propagation and strengthens type safety in concurrent task orchestration.

  • Introduces exception typing directly into StructuredTaskScope join semantics
  • Refines cancellation and lifecycle management for grouped concurrent operations

📦 Taming Maven Version Ranges
A pragmatic look at Maven version ranges, including why they are controversial.

  • Explains dependency resolution edge cases caused by open version ranges

🧩 Kotlin — The Road to Name-Based Destructuring
JetBrains proposes new destructuring syntax to improve readability and reduce positional ambiguity in Kotlin code.

  • Introduces name-based destructuring with new parenthesized syntax

🏗️ Scaling ArchUnit with Nebula ArchRules
Netflix describes how Nebula ArchRules scales architectural governance across thousands of Java repositories.

  • Automates architectural policy enforcement directly during builds
  • Standardizes technical debt detection across large polyrepo environments

Native Interoperability with JDK 25 and the FFM API
The Foreign Function & Memory API continues replacing JNI complexity with safer and faster native interoperability.

  • Eliminates common JNI pain points around memory and native bindings
  • Enables direct native library access using modern Java abstractions

🍃 Spring Updates

🔥 How HikariCP Caused 98% CPU Usage in Our Spring Boot Microservice
A production-focused analysis of HikariCP internals, pooling behavior and concurrency pitfalls in high-load Spring Boot systems.

  • Explains how pool misconfiguration triggered runaway CPU utilization under load
  • Details monitoring strategies and concurrency patterns behind HikariCP performance

🔐 Idempotency Keys in Spring Boot APIs
A practical guide to preventing duplicate requests and unintended side effects in distributed API workflows.

  • Demonstrates replay protection strategies for payments and transactional APIs

🌐 Implementing an API Gateway in Spring Boot Microservices
An overview of centralizing routing, authentication and cross-cutting concerns using a Spring Boot API gateway layer.

  • Consolidates authentication and request routing behind a unified entry point
  • Simplifies observability and policy enforcement across distributed services

🗂️ How I Structure application.yml in Large Spring Boot Projects
A maintainability-focused approach to organizing Spring Boot configuration files as projects scale in complexity.

  • Separates configuration concerns to reduce operational and deployment confusion
  • Improves readability and onboarding for teams managing large codebases

🔍 Extra Reads

Developer Tooling & Workflow
🪄 Git’s Magic Files — A walkthrough of Git’s lesser-known repository control and metadata files.
⌨️ Writing my own text editor, and daily-driving it — A reflection on building and using a custom editor as a primary development tool.
From latency to instant: Modernizing GitHub Issues navigation performance — Explains how caching and prefetching transformed Issues navigation responsiveness.

AI Engineering & Developer Productivity
🤖 How to make LLM-assisted changes governable, reviewable, and reusable — Presents Structured Prompt-Driven Development for collaborative AI-assisted engineering.
📉 How to Never Hit Claude’s Usage Limit Again: 3 Proven Methods — A workflow-oriented explanation of how prompt habits influence AI usage consumption.
💸 End of an Era — GitHub Copilot models and prices change — GitHub’s new token-based Copilot pricing reshapes cost expectations for AI coding assistants.
🧠 2026 Software Engineer Trends: Retrospective and Beyond — A analysis of how software engineering trends evolved entering 2026.

Architecture, Systems & Scalability
🛡️ Databases Were Not Designed For This — An exploration of failing database assumptions in modern distributed application architectures.
🏗️ 5 Years and $5M Later: Inventing a New Programming Language for Web Development Was a Mistake — Wasp reflects on the operational and ecosystem costs of creating a custom programming language.
📚 Don’t overestimate domain expertise — A cautionary discussion about balancing domain input with structured discovery practices.

Engineering Culture & Industry Commentary
🚪 Your Onboarding Is a Hazing Ritual and You Call It Agile — A critique of onboarding practices that overwhelm new hires instead of enabling productive ramp-up.
🧪 How Dangerous Is Anthropic’s Mythos AI? — Examines the growing capability of AI systems to discover software vulnerabilities.
🗣️ Everyone’s a thought leader. Almost no one is thinking. — A sharp critique of AI-generated content culture and performative professional branding online.

Originally posted on marconak-matej.medium.com.