54,302 blogs · [ { "id": "01a08794-c1a8-7025-ba0c-b2f452dbc3db", "title": "Renovate Opened 40 MRs, 6 Are Red: Now What?", "url": "https://keninkujovic.com/blog/renovate-mr-breaks-build", "published_at": "2026-07-05T00:00:00+00:00" }, { "id": "01a08794-c1a8-7025-ba0c-b2f453332af1", "title": "Server-Driven UI: Describe Interfaces as Data, Render Them Natively", "url": "https://keninkujovic.com/blog/server-driven-ui", "published_at": "2026-07-04T00:00:00+00:00" }, { "id": "01a08794-c1a8-7025-ba0c-b2f453432490", "title": "Zero-Downtime Migrations: Expand and Contract Explained", "url": "https://keninkujovic.com/blog/expand-and-contract-migrations", "published_at": "2026-05-05T00:00:00+00:00" }, { "id": "01a08794-c1a8-7025-ba0c-b2f454073756", "title": "Code Is Only Half the Job", "url": "https://keninkujovic.com/blog/code-is-only-half-the-job", "published_at": "2026-03-03T00:00:00+00:00" }, { "id": "01a08794-c1a8-7025-ba0c-b2f454e22f41", "title": "You Can't Avoid Cognitive Biases. Catch Them Instead.", "url": "https://keninkujovic.com/blog/cognitive-biases", "published_at": "2026-02-14T00:00:00+00:00" }, { "id": "01a08794-c1a8-7025-ba0c-b2f45530004e", "title": "Next.js Sitemap for Static Export: The force-static Solution", "url": "https://keninkujovic.com/blog/nextjs-static-sitemap", "published_at": "2026-01-09T00:00:00+00:00" }, { "id": "01a08794-c1a8-7025-ba0c-b2f45537143c", "title": "Patch Container Vulnerabilities in Seconds Without Rebuilding Images", "url": "https://keninkujovic.com/blog/patch-container-vulnerabilities-trivy-copa", "published_at": "2026-01-09T00:00:00+00:00" }, { "id": "01a08794-c1a8-7025-ba0c-b2f4553ba793", "title": "I Leaked My AWS Keys to GitHub. Rewriting Git History Wasn't Enough", "url": "https://keninkujovic.com/blog/fix-leaked-secrets-git", "published_at": "2026-01-08T00:00:00+00:00" }, { "id": "01a08794-c1a8-7025-ba0c-b2f456324bd7", "title": "Profile Go Code with Flamegraphs: A Practical pprof Guide", "url": "https://keninkujovic.com/blog/flamegraphs", "published_at": "2025-11-14T00:00:00+00:00" }, { "id": "01a08794-c1a8-7025-ba0c-b2f4564d8bf2", "title": "SemVer Explained: A Practical Guide to Semantic Versioning", "url": "https://keninkujovic.com/blog/semantic-versioning", "published_at": "2025-01-03T00:00:00+00:00" }, { "id": "01a08794-c1a8-7025-ba0c-b2f45698323b", "title": "Daily Programming", "url": "https://keninkujovic.com/blog/daily-programming", "published_at": "2024-12-22T00:00:00+00:00" }, { "id": "01a08794-c1a8-7025-ba0c-b2f456f4f31d", "title": "Infrastructure Naming Conventions That Scale (With Examples)", "url": "https://keninkujovic.com/blog/infrastructure-naming-convention", "published_at": "2024-12-14T00:00:00+00:00" }, { "id": "01a08794-c1a8-7025-ba0c-b2f457e8c1a0", "title": "SSH Key Forwarding", "url": "https://keninkujovic.com/blog/ssh-key-forwarding", "published_at": "2024-12-11T00:00:00+00:00" }, { "id": "01a08794-c1a8-7025-ba0c-b2f4583260bd", "title": "Hello World", "url": "https://keninkujovic.com/blog/hello-world", "published_at": "2024-03-20T00:00:00+00:00" } ] posts Claim your blog
Back to Kenin Kujovic — Software Engineer
Blog · corpus.blog/blogs/keninkujovic.com/posts

Kenin Kujovic — Software Engineer

keninkujovic.com

2026

2025

2024