Skip to main content

Blog

Despre dezvoltare web, performanță, instrumente — și, din când în când, ceva mai mare.

Next.jsA/B TestingProxyPerformanceSSG

O pagină statică care e, în secret, un test A/B

Un test A/B e de obicei construit așa încât pagina cade de pe CDN într-un render la fiecare cerere. Nu trebuie să fie așa. Ține fiecare variantă complet statică și lasă un proxy (middleware-ul redenumit din Next.js) să rezolve alocarea printr-o platformă de experimente, pe baza unui device id stabil — și rescrie doar când vizitatorul nu e în control. URL-ul nu se schimbă niciodată, CDN-ul tot pune în cache, iar calea obișnuită nu costă nimic.

14 august 20268 min de citit
Citește articolul
VercelGitHub ActionsCI/CDDeploymentMonorepo

Deploy pe Vercel din CI când cel care face commit nu e membru al echipei

Muți un repo într-o organizație GitHub și Vercel începe discret să-ți blocheze deploy-urile: commit-ul „nu a putut fi asociat unui membru al echipei”. Iată cum fac deploy din GitHub Actions cu CLI-ul Vercel: commit-urile mele continuă să conteze în propriul graf GitHub, dashboardul arată în continuare cine a dat push, iar eu nu plătesc un loc pentru fiecare contribuitor.

10 august 20268 min de citit
Citește articolul
Next.jsMemory LeakDockerAWS LambdaNode.js

Next.js Memory Leak: Fetch + Mod Standalone — 2 ani fără rezolvare

Next.js aplică un patch peste fetch-ul global și adaugă un strat de cache care pierde memorie la fiecare cerere. În Docker/K8s asta provoacă crash-uri OOM la fiecare câteva ore. Bug-ul există din Next.js 14 și rămâne nerezolvat în 16.2.x.

Actualizat 10 august 202610 min de citit
Citește articolul
claude-codeproductivityclidevtools

Mai multe conturi Claude Code pe un singur dispozitiv

Cum să folosești două (sau mai multe) conturi Claude Code în paralel — personal și corporativ — cu izolare completă folosind o singură variabilă de mediu.

Actualizat 9 august 20264 min de citit
Citește articolul
SolidJSSolidStartPerformanceSSGCode Splitting

Încărcarea leneșă a conținutului blogului în SolidStart fără a pierde SSG

Blogul tău livrează probabil corpul fiecărui articol într-un singur bundle — al meu crescuse la 2,88 MB și se descărca chiar și pe pagina de index, unde ai nevoie doar de titluri. Iată cum am împărțit proza fiecărui articol într-un chunk leneș care se încarcă la cerere, în timp ce fiecare pagină rămâne complet randată pe server pentru SEO.

5 august 20268 min de citit
Citește articolul
ailearningcareermethodology

CRAFT: o metodă de a folosi AI fără să-ți pierzi măiestria

A numi o problemă fără a oferi o soluție nu face decât să semene neliniște. După postarea despre pierderea abilităților din cauza AI, iată rețeta: CRAFT — cinci principii (Challenge First, Review Adversarially, Ask Why Not What, Friction on Purpose, Test Your Understanding) sub o singură axiomă: AI face ce ai stăpânit deja, tu faci ce încă înveți. O metodă practică și ușor de reținut pentru a folosi AI zi de zi fără să-ți pierzi pe tăcute priceperea.

Actualizat 5 august 20266 min de citit
Citește articolul
JavaScriptAnalyticsEvent DelegationServer ComponentsPerformance

Un singur ascultător în loc de câte o componentă client pentru fiecare buton

În clipa în care adaugi analiză de clicuri unei componente, aceasta devine o componentă client care livrează JavaScript. Fă asta la scara unui site întreg și doar urmărirea îți umflă bundle-ul. Iată alternativa care se află în platformă dintotdeauna: un singur ascultător delegat, atribute de date declarative și componente care rămân pur HTML randat pe server.

28 iulie 202610 min de citit
Citește articolul
CSSHTMLAccordionFrontendPerformance

Un acordeon fluid cu zero JavaScript

Toată lumea recurge la o stare React și la un hook de măsurare a înălțimii ca să construiască un acordeon. Browserul livrează unul nativ de ani buni — iar din 2024 se animează la deschidere și la închidere cu CSS pur. Iată tehnica completă: details[name], ::details-content, interpolate-size și proprietatea care face ca și închiderea să se anime.

28 iulie 20269 min de citit
Citește articolul
JavaScriptWebThird-Party ScriptsFrontendPatterns

Prinde o valoare de la un script terț chiar în clipa în care ajunge pe window

Un script pe care nu îl controlezi își scrie rezultatul într-un global de pe window la un moment pe care nu îl poți prezice. Cea mai mare parte a codului intră într-o cursă cu el folosind un timeout sau irosește main thread-ul cu polling. Iată trucul cu accessor property care transformă scrierea într-un eveniment — plus getter-ul pe care nu trebuie să-l uiți, și cum să înlocuiești complet valoarea.

27 iulie 20269 min de citit
Citește articolul
CSSContainer QueriesTypographyFrontendPerformance

Potrivește textul în containerul său cu CSS pur — fără JavaScript

Toată lumea scrie un hook JavaScript care micșorează font-size până când textul încape în container. Iată o alternativă complet funcțională și fără JS, folosind unități de container query, clamp() și despărțire în silabe în funcție de limbă — inclusiv capcana cascadei care îi face pe mulți să renunțe.

24 iulie 202611 min de citit
Citește articolul
Next.jsPerformanceCode SplittingTurbopackReact Server Components

next/dynamic nu te va salva: de ce paginile Next.js bazate pe CMS livrează fiecare chunk

Paginile noastre Next.js bazate pe CMS livrau toate cele ~100 de componente de secțiune pe fiecare rută — în ciuda unei utilizări exemplare a next/dynamic. Am epuizat orice remediu la nivel de bundler (import() direct, împărțirea fișierelor, configurarea Turbopack, splitChunks în webpack) înainte de a găsi cauza reală: accesibilitatea, nu chunking-ul. Codegen la build time plus rewrites au redus JavaScript-ul de la prima încărcare cu 53%.

18 iulie 202614 min de citit
Citește articolul
obsidianmiroautomationtoolsopen-source

Îmi scot board-urile din Miro și le aduc în Obsidian

Butonul Export din Miro îți dă un PNG sau un PDF — o fotografie a datelor, nu datele. Dacă board-urile tale sunt load-bearing maps of thinking adunate de-a lungul anilor, locul lor e în Obsidian: editable, searchable, într-un vault local. Cum am scos board-urile din Miro prin REST API și le-am convertit în Excalidraw / Obsidian Canvas — păstrând poziții, culori, fonturi, curved connectors, mindmap nodes — iar lecția merge mai departe decât Miro: orice SaaS merită un exit plan ÎNAINTE să-l deschizi vreodată.

30 iunie 20266 min de citit
Citește articolul
claude-codeproductivityclidevtools

Claude Code Multi-Profile, v2: o arhitectură XDG curată

După o lună pe vechea abordare bazată pe alias, mi-am reconstruit setup-ul multi-profile Claude Code într-o structură conformă XDG sub ~/.config/claude-profiles/. Motivul real nu a fost ordinea — a fost descoperirea că ~/.claude.json este un fișier separat în rădăcina home, unde trăiau discret serverele MCP adăugate cu --scope user.

Actualizat 23 iunie 20269 min de citit
Citește articolul
ailearningcareerengineering

Liniștea pe care a oprit-o AI

Mai merită să înveți programare dacă există AI? Răspunsul zgomotos greșește din ambele părți. Cu baza de dovezi 2025–2026 (Nature, Anthropic, AI & Society) întrebarea nu e "AI sau nu", ci ce competențe îi predai AI-ului și pe care le păstrezi pentru tine — și un lucru chiar s-a schimbat: înainte realitatea te forța să înveți prin fricțiune, AI a oprit în tăcere această presiune.

22 iunie 20268 min de citit
Citește articolul
claude-codeagentsaiprompt-engineeringautomation

Cum să scrii agenți Claude Code care nu te mint

Două reguli pentru pipeline-uri de agenți Claude Code de încredere: un agent per specializare și comenzi de shell în locul prompturilor oriunde sunt implicate răspunsuri cantitative.

29 mai 20266 min de citit
Citește articolul
ObsidianClaudeMCPAutomationAI

Cum conectezi Claude Desktop la Obsidian — O călătorie prin 4 servere MCP

O poveste reală despre găsirea unei modalități stabile de a automatiza refactoring-ul vault-ului Obsidian prin Claude. Ce s-a stricat, ce a funcționat și de ce VaultForge s-a dovedit a fi singura opțiune funcțională.

3 mai 20269 min de citit
Citește articolul
physicsphilosophyconsciousnessblack-holescosmology

Găurile negre ca universuri recursive: de la fizică la sensul existenței

Ce-ar fi dacă fiecare gaură neagră este un Big Bang al unui nou univers? O explorare a cosmologiei recursive, a radiației Hawking și a închiderii cognitive.

17 aprilie 202610 min de citit
Citește articolul
aicmsweb-developmentopinionworkflow

AI a ucis CMS-ul — cel puțin pentru site-urile simple

De ce sistemele tradiționale de gestionare a conținutului devin inutile pentru portofolii, bloguri și landing page-uri — și cum instrumentele AI înlocuiesc întregul strat CMS cu limbaj natural.

17 aprilie 20268 min de citit
Citește articolul
ObsidianPerplexityMCPAIProductivity

Cum conectezi Perplexity AI la Obsidian prin MCP — notițe direct din chat

Configurează Perplexity Desktop pentru a citi și scrie în Obsidian vault-ul tău folosind serverul MCP filesystem. Cercetează pe web și salvează în notele tale într-o singură conversație.

12 aprilie 20265 min de citit
Citește articolul
Claude CodeAIObsidianAutomationProductivity

Digest zilnic de știri AI cu Claude Code CLI și Obsidian — zero dependențe

Cum am construit un agent zilnic de documentare a știrilor cu un script bash de 6 linii, modul headless Claude Code și macOS launchd. Caută 11 subiecte și scrie digesturi direct în Obsidian.

12 aprilie 20267 min de citit
Citește articolul
next.jsreact-19dark-modezustandperformance

Next.js Dark Mode fără flash sau avertismente React 19

Cum să înlocuiești next-themes cu Zustand + useServerInsertedHTML pentru dark mode fără pâlpâire în Next.js 15+, fără avertismente de script React 19.

11 aprilie 20268 min de citit
Citește articolul
Next.jsCSSPerformanceTurbopackSCSS

Cum am eliminat 94 de fișiere CSS care blochează randarea în Next.js 16 cu o funcționalitate Turbopack slab documentată

După zile în care am încercat fiecare abordare — de la experimental.inlineCss până la hack-uri cu MutationObserver — am descoperit Turbopack Import Attributes care rezolvă problema CSS-ului ce blochează randarea în Next.js App Router.

8 aprilie 202612 min de citit
Citește articolul