/Blog

Blog

O designu, technologiích a všemu mezi tím.

8 min čteníJohnny UnarJohnny Unar

Structured Outputs Guarantee Shape, Not Semantics

JSON mode doesn't mean your LLM output is safe to use. Here's why you need a schema contract layer on top of it.

Číst dále
9 min čteníJohnny UnarJohnny Unar

Structured Outputs Don't Mean Your LLM Data Is Correct

Schema conformance is trivially easy. Semantic correctness is where LLM pipelines actually fall apart, and most teams never notice until production.

9 min čteníJohnny UnarJohnny Unar

Stop mocking your database: Postgres 17 makes it unnecessary

Mocking your DB keeps tests green and production broken. Here's how transaction savepoints and schema isolation fix that.

9 min čteníJohnny UnarJohnny Unar

Your AI Feature Ships Fast and Rots Faster

Shipping a GPT-4o integration takes a weekend. Maintaining it takes a policy. Here's the one-page lifecycle template we actually use.

9 min čteníJohnny UnarJohnny Unar

Postgres Outbox Beats RabbitMQ for Webhook Ingestion Under 5k RPM

Before you bolt on SQS for webhook reliability, read this. A Postgres outbox table and a Go worker will serve most startups better.

9 min čteníJohnny UnarJohnny Unar

Postgres RLS Is Your Real Tenant Isolation Layer, Not Django

Manual WHERE clauses in your ORM will eventually leak tenant data. Here's how to wire Postgres 17 RLS into Django 6.x properly.

12 min čteníJohnny UnarJohnny Unar

Stop warming pools: adaptive CPU-bursting that actually saves money

Warm pools feel like a win until the AWS bill arrives. Here's a concrete pattern with Go worker pools, Redis token buckets, and KEDA that gets you sub-200ms p95 without paying for idle CPUs.

12 min čteníJohnny UnarJohnny Unar

Edge na delivery, Go na doménu

Praktický recept, jak striktně rozdělit odpovědnosti mezi Next.js 15 a Go 1.22, včetně authu, streaming SSR, feature flags, observability a bez mlžení kolem edge hype.

10 min čteníJohnny UnarJohnny Unar

Jeden npm balíček málem ovládl naši Next.js 15 appku

Postinstall hook, remote loader a pár hnusných hodin v CI. Oprava byla nakonec jednoduchá, jakmile jsme si přestali nalhávat, že supply chain risk v JavaScriptu je jen teorie.

10 min čteníJohnny UnarJohnny Unar

Přestaňte stránkovat v clientu, nechte to na Next.js 16

Client-side pagination žere paměť, zhoršuje TTFB a dělá z UX loterii. Cursor API a cache route segmentů tenhle bordel spraví bez velkého přepisu.

10 min čteníJohnny UnarJohnny Unar

Rozumné monorepo potřebuje tvrdé hranice

Monorepo funguje i v roce 2026, když hranice berete jako součást kódu a jejich vynucování zautomatizujete. Náš setup je schválně nudný, právě proto drží pohromadě.

10 min čteníJohnny UnarJohnny Unar

Jak vyměnit encoder, aniž si rozbijete retrieval

Upgrady embedding modelů rozbíjejí search potichu a draze. Tohle je rollout playbook, který používáme, když potřebujeme nasadit nový encoder bez toho, aby retrieval šel do háje.

11 min čteníJohnny UnarJohnny Unar

Observabilita na edge je hlavně problém telemetry

Next.js 15 edge functions a služby v Go 1.22 potřebují jinou observabilitu než dlouho běžící servery. Měřte cold starty, sbírejte sampled flamegraphy a u trace dělejte agresivní tail sampling.

10 min čteníJohnny UnarJohnny Unar

Ne shipujte agent chainy SMB zákazníkům

Agentic orchestraci nástrojů to sluší v demu, v produkci je z toho rychle průšvih. Místo toho použijte typed function calls, deterministické proxy vrstvy a explicitní fallbacky.

10 min čteníJohnny UnarJohnny Unar

Přestaňte dávat business logiku do Next.js Edge

Edge používejte na rychlá rozhodnutí, stavové operace nechte v Go. Tohle rozdělení řeší bugy v korektnosti, retry logice i observabilitě, které se v SaaS systémech pořád vrací.

10 min čteníJohnny UnarJohnny Unar

Ve 12 službách GraphQL gateway zařízněte

Federation přidává governance daň, kterou si většina startupů v mid-stage fázi nemůže dovolit. Typed OpenAPI a consumer-driven contracts vrátí rychlost a udělají chyby viditelné.

9 min čteníJohnny UnarJohnny Unar

Django Postgres migrace bez downtime chtějí plán po krocích

Bezpečné změny schématu v Django monolitu nevznikají squashem migrací. Vznikají přes rollout po fázích, backfill a nudnou provozní disciplínu.

14 min čteníJohnny UnarJohnny Unar

Multi-tenant Postgres 16: berte RLS jako výchozí volbu, dokud se neprokáže opak

Většina SaaS týmů by měla v Postgresu 16 začít se sdílenými tabulkami, tenant_id a Row Level Security. Těžká část není SQL, ale pooling, migrace a provozní disciplína.

10 min čteníJohnny UnarJohnny Unar

Přestaňte rvát analytiku přes Django ORM

Reporting nacpaný do řetězených QuerySetů je pomalý, křehký a nečitelný. Těžkou analytiku vraťte do SQL, tam vám Postgres opravdu pomůže.

9 min čteníJohnny UnarJohnny Unar

Shipujte prompty jako kód, jinak počítejte s regresí

LLM feature v produkci degradují potichu. Verzujte prompty, testujte je v CI, pouštějte canary proti shadow trafficu a udělejte rollback nudně spolehlivý.

9 min čteníJohnny UnarJohnny Unar

Shipujte jeden správný admin workflow

Konfigurační panely chvíli vypadají jako produktový pokrok, než z vaší SMB appky udělají support mašinu. Vyberte jeden silný admin scénář a držte ho.

10 min čteníJohnny UnarJohnny Unar

Berte halucinace jako systémové chyby

Halucinace za sebou nechávají stopy. Měřte pravděpodobnosti tokenů, sledujte provenance evidence a než cokoliv pustíte do produkce, zastavte to levnými verifikátory.

9 min čteníJohnny UnarJohnny Unar

GPU, API, nebo CPU batching pro AI inference

Většina rozhodnutí kolem AI infra ve startupech vzniká podle pocitu. Lepší je vzít throughput, tail latency, objem tokenů a ops náročnost a podle toho vybrat variantu, která vás bude bolet nejmíň.

11 min čteníJohnny UnarJohnny Unar

Účtujte compute, zabijte pricing per request

Účtování per request trestá automatizaci a odměňuje plýtvání. Měřte compute a ekonomika vašeho SaaS se přestane chovat jako bug.

11 min čteníJohnny UnarJohnny Unar

Přepisy API jsou selhání governance

Většina přepisů API nevzniká kvůli technologiím, ale protože týmy ignorovaly kontrakty, verzování a rozumnou deprecation politiku. Stačí trochu governance a vyřešíte to bez zpomalení delivery.

10 min čteníJohnny UnarJohnny Unar

Embedding drift vám potichu rozbije retrieval

Vector search se zhoršuje pomalu, a pak najednou. Měřte drift dřív, než spadne recall a upgrade modelu odpálí produkci.

9 min čteníJohnny UnarJohnny Unar

Rozbité PDF vám odpálí pipeline, pokud nepřipíchnete každý krok

Naivní OCR a embeddings pipeline na reálných PDF selhávají potichu. Layout-aware a deterministický ingest vám dá drift detection i rollback.

10 min čteníJohnny UnarJohnny Unar

Deterministické testy pro RAG pipeline, jinak nedeployujte

LLM feature selhávají potichu. Pořádná testovací sada pro RAG potřebuje zmražené snapshoty, adversariální prompty a kontrakty kolem retrievalu a attributionu.

10 min čteníJohnny UnarJohnny Unar

HTMX v Next.js nám výrazně zjednodušil frontend

Pro interní nástroje a B2B portály je HTMX uvnitř Next.js rychlejší na dodání, lehčí a rozbíjí se míň než plný SPA stack.

9 min čteníJohnny UnarJohnny Unar

Přestaňte dělat produktová rozhodnutí podle Lighthouse

Lighthouse je v pohodě na smoke testy. Rozhodnutí, která mají dopad na revenue, potřebují RUM, reálné user journeys a performance data napojená na konverze.

11 min čteníJohnny UnarJohnny Unar

Přestaňte pro ERP automaticky volit microservices

Většina startupových ERP týmů microservices nepotřebuje. Django 4.2 a PostgreSQL 15 vás dostanou mnohem dál, s menší bolestí a bez nočních překvapení ve dvě ráno.

10 min čteníJohnny UnarJohnny Unar

pgbouncer dřív než víc workerů

Limity připojení v Postgresu většinou neukazují na problém se škálováním, ale na špatnou konfiguraci aplikace. Nejdřív opravte pooling, až potom řešte, jestli opravdu potřebujete víc compute.

10 min čteníJohnny UnarJohnny Unar

Next.js Edge Functions jsou špatné místo pro skutečnou backend logiku

Edge runtime vypadá v demu rychle, pak narazí na reálné backendové limity. Hybridní model edge plus region vám dá rychlost, aniž by rozbil správnost systému.

10 min čteníJohnny UnarJohnny Unar

Modulární Django bez cirkusu

Většina týmů nepotřebuje microservices. Potřebuje Django appky s tvrdými hranicemi, verzováním a upgrade cestou, která nerozbije produkci.

9 min čteníJohnny UnarJohnny Unar

Většina RAG systémů selže, protože je nikdo nenavrhuje pro audit

RAG se v produkci nerozbíjí kvůli ničemu exotickému, ale kvůli nudným věcem: slabá provenance, rozmazaný retrieval, žádná evaluace. PostgreSQL s pgvector vyřeší víc problémů než další vector DB.