const happy = true; // life is good { } npm run enjoy git commit -m "💛" while(coding) { smile(); }
Est. 2024 · Warsaw, PL

Where code
meets happiness

A developer blog for humans who love building things. Real stories, honest takes, and practical wisdom from the trenches — served with a warm cup of ☕.

120+
Articles
4.2k
Subscribers
8yr
Coding
happy-dev ~ zsh
~ node life.js
// initializing happiness...
✓ Coffee: loaded
✓ Music: playing
✓ Dark mode: enabled
✗ Meetings today: 0
→ Ready to build something
✓ Status: HAPPY_DEV mode on

~
Read · Learn · Build · Ship
Clean Code Good Vibes Real Stories Open Source Side Projects DevOps Life Build in Public No Fluff Clean Code Good Vibes Real Stories Open Source Side Projects DevOps Life Build in Public No Fluff

Coding with
intention and joy

Hey — I'm a developer who got tired of reading tutorials that feel like legal documents. This blog is my antidote: honest writing about the craft of building software, the lessons that only come from shipping, and the small moments that make this whole career deeply satisfying.

Expect deep dives into architecture, war stories from production incidents, opinionated takes on tools, and the occasional philosophical ramble about why we write code in the first place.

Java / Spring Boot DevOps & Kubernetes API Design System Architecture Python Integrations Productivity Career
01
Practical over theoretical
Every post comes from real-world experience — things I've actually built, broken, and debugged. No ivory tower here.
02
Honest & opinionated
I'll tell you when something sucks. Good writing requires a point of view. Expect candor, not corporate speak.
03
Human at the core
Code is written by people, for people. The soft stuff — teamwork, burnout, focus — matters as much as the hard stuff.
Topics I cover
⚙️
Backend Engineering
APIs, microservices, databases, performance tuning, and all the invisible magic that keeps systems running.
28 articles →
🚀
DevOps & Infra
Kubernetes, CI/CD pipelines, cloud deployments, and the art of not waking up at 3am because something is on fire.
19 articles →
🔌
Integrations
Connecting systems that weren't meant to talk. Webhooks, ETL, third-party APIs, and data format torture.
24 articles →
🧠
Architecture
How to think about systems before writing a single line. Patterns, tradeoffs, and why "it depends" is always the real answer.
16 articles →
🛡️
Security
From SIEM integrations to threat intelligence pipelines — the security engineering layer most blogs ignore.
14 articles →
🌿
Dev Life & Career
Productivity, focus, burnout, leadership, remote work, and how to stay sane in a job that never stops evolving.
21 articles →

Latest
dispatches

All articles →
const router = new RegionRouter({
eu: process.env.EU_ENDPOINT,
us: process.env.US_ENDPOINT,
cache: new RedisCache({
ttl: 86400, strategy: 'LRU'
})
});
 
// Route by identity, not IP
app.use(router.middleware());
Architecture
Building a GDPR-Compliant Region Router with Nginx Lua and Redis Identity Caching
When you need to route EU traffic to EU servers and US traffic statefully — not just by IP — you need something smarter than a basic load balancer. Here's the full architecture I landed on.
grafana.dashboard({
panels: [loki, prom],
refresh: '30s'
})
Observability
Grafana Dashboards for Spring Boot Services That Don't Lie to You
Per-step latency breakdowns, Loki log correlation, and panels that actually tell you where things go wrong.
splunk-cloud upgrade
--target 8.4.0
--aws ec2 --no-dry-run
DevOps
Surviving a Multi-Hop Splunk SOAR Upgrade on AWS EC2
OS check blockers, ownership conflicts, and lock files — a step-by-step survival guide for the upgrade nobody writes about.
// TAXII 2.1 feed
query("ip:8.8.8.8")
Security
Natural Language to STIX: Designing a Threat Intelligence Query Builder
What happens when you let developers query threat feeds in plain English? A hackathon project that might become a real product.
xsltproc transform.xsl
basware-invoice.xml
Integrations
XSLT in 2026: Why the "Old" Format Is Still King for Enterprise XML
Tax aggregation, Muenchian grouping, and why I stopped apologizing for using XSLT when JSON just can't cut it.