<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://www.rusiczki.net/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.rusiczki.net/" rel="alternate" type="text/html" /><updated>2026-11-12T10:59:51+00:00</updated><id>https://www.rusiczki.net/feed.xml</id><title type="html">János Rusiczki</title><subtitle>Ruby &amp; Web Developer. Father. Incurable nostalgic.</subtitle><author><name>János Rusiczki</name></author><entry><title type="html">Acel moment când era să mor</title><link href="https://www.rusiczki.net/2026/11/04/acel-moment-cand-era-sa-mor/" rel="alternate" type="text/html" title="Acel moment când era să mor" /><published>2026-11-04T13:11:22+00:00</published><updated>2026-11-04T13:11:22+00:00</updated><id>https://www.rusiczki.net/2026/11/04/acel-moment-cand-era-sa-mor</id><content type="html" xml:base="https://www.rusiczki.net/2026/11/04/acel-moment-cand-era-sa-mor/"><![CDATA[<p>Nu vă speriați, nu s-a întâmplat azi sau ieri, ci acum patruzeci de ani.</p>

<p><a href="https://content.rusiczki.net/2026/07/bilet-de-iesire-din-spital.jpg" class="glightbox"><img src="https://content.rusiczki.net/2026/07/bilet-de-iesire-din-spital-1000x765.jpg" alt="bilet-de-iesire-din-spital" /></a></p>

<p>Astăzi făceam curățenie prin casa mea din Baia Sprie, căci urma să primesc noua mașină de spălat vase. Și am găsit un soi de sac de genul în care pot să-ți depozitezi hainele vidate, aruncat cât-colo, și m-am gândit să-l pun frumos în dulapul cu haine. Când am deschis dulapul și m-am pus să fac un pic de loc am (re)găsit fișa mea medicală care a fost luată cândva de maică-mea de la fișierul policlinicii, probabil în momentul când s-a trecut la fișele digitale. Când zic fișă mă refer la mai multe coli de hârtie pe care este trecut istoricul meu medical din copilărie și nu numai, practic de la naștere până prin 1992 (ceea ce corespunde cu clasa a șasea sau a șaptea).</p>

<p>Nu a fost prima oară când am dat de fișă, o mai răsfoisem la un moment dat după ce am moștenit casa în 2021, și chiar am căutat prin ea dar nu am găsit nimic despre acel moment critic. Nici nu știam exact când a fost, bănuiam că s-a întâmplat cândva în clasa a doua.</p>

<p>M-am pus și am luat la rând din nou și mai cu răbdare inscripțiile de pe paginile fișei și iar nu am găsit nimic. Dar între coli era un teanc separat de alte foi mai mici cu trimiteri la analize și altele de genul. Și una dintre aceste <em>alte foi</em> a fost cea de externare din spital. Era chiar bătută la mașină de scris, scutindu-mă de descifrat renumitul <em>scris de doctor</em>. Ce am observat imediat a fost data, care arată că spitalizarea s-a întâmplat în al doilea trimestru al clasei întâi, cu un an mai devreme decât credeam.</p>

<p>Mama a tot repetat că am fost internat “suspect de meningită” dar pe biletul de ieșire nu apare menționat așa ceva. S-o fi vehiculat diagnosticul ăsta probabil sau o fi fost motivul de internare sau cine știe, în orice caz din cauza traumei toată treaba asta a rămas pentru mine un <em>core memory</em> în sensul că-mi amintesc destul de multe detalii. (Am greșit în privința meningitei, vezi <a href="#nota-editorului">nota editorului</a> de mai jos.)</p>

<p>În copilărie eram bolnav foarte des, cred că din două motive: eram foarte mofturos la mâncare (=&gt; eram foarte slăbănog) și aveam probleme la gât, mai precis cu amigdalele care mi se infectau constant. În orice caz înainte să ajung în spital am făcut febră foarte mare, peste 40, și m-a ținut cu zilele. Am aflat ulterior de la vărul meu că au venit să mă vadă și eu mă uitam la plafon și urlam să nu-mi dea drumul din avion că pic. Am aflat asta după mulți ani, cel puțin 10 sau poate chiar 20, așadar îi mai traumatizasem gratuit și pe alții. Parcă îmi amintesc vag ceva de drumul cu salvarea dar m-am trezit cu adevărat la spital.</p>

<p>Câteva amintiri din spital:</p>

<ul>
  <li>Cum stăteam și mă uitam pe geam așteptând-o pe maică-mea - și cu toate că nu am văzut-o niciodată venind tot mă benoclam zilnic. Clădirea căreia îi vedeam spatele de la geamul cu gratii al pediatriei, de la etajul 11 al spitalului, este cea în care are în ziua de astăzi contabila mea biroul.</li>
  <li>Spitalul era în carantină, am avut mare noroc că maică-mea era asistentă și luând un halat alb pe ea se putea strecura să mă viziteze. A venit și tata odată, tot așa costumat în halat. A, și cu toate că aveam <a href="https://photos.rusiczki.net/photos/270080029">Dacia familiei</a>, nu au putut s-o folosească să facă drumul Baia Sprie - Baia Mare pentru a mă vizita. Asta pentru că a fost o iarnă foarte grea, poate cea mai grea din câte îmi amintesc, și mai jos pe strada noastră într-o zonă foarte strâmtă a căzut multă zăpadă de pe două acoperișuri opuse iar bunii gospodari ai respectivelor case au dat cu lopata să nu le stea zăpada pe fundații și astfel s-a format un mic deal de mai mult de un metru înălțime pe drum. Asta m-a făcut să-mi amintesc că nici salvarea nu a putut ajunge la mine, și probabil că am fost dus pe targă până la ea.</li>
  <li>Pe la sfârșitul perioadei cât am stat în spital a apărut și vecinul meu Neluțu pe acolo și brusc a devenit totul mult mai tolerabil și trecea timpul mai repede.</li>
</ul>

<p>Îmi mai amintesc că am slăbit sub 20 de kilograme, confirmat și pe bilet: “hipodezvoltare staturoponderală”.</p>

<p>Și cum era să mor? Păi în toată situația asta, cu mine foarte slăbit, a venit un doctor dăștept foc, m-a pipăit la abdomen și a tras concluzia că am apendicită și că trebuie să fiu operat. Eu îmi aminteam că s-a opus mama. Pe bilet scrie doar că “s-a pus problema” unui “abdomen acut chirurgical”, dar că a fost exclus după consultul chirurgical și radiografie. Dacă mă supuneau unei operații în starea aia… Nu cred că aș fi supraviețuit.</p>

<p>Se pare că 1 și 8 martie le-am petrecut la spital. Halal Mărțișor și cadou de ziua femeii i-am oferit mamei…</p>

<p>De amigdalele problematice am scăpat la limita vârstei când mă mai adormeau pentru operație (și nu-mi făceau doar anestezie locală) - nu mai știu vârsta și va fi foarte greu de găsit. Știu doar că după ce am scăpat de ele a scăzut mult frecvența problemelor. A fost singura mea operație cu adormire de până acuma (47 de anișori) și știu că după m-au dus la bunică-mea unde am reușit să vomit pe vreun metru de covor că eu sunt băiat deștept și chiar dacă mi s-a făcut rău de la intrarea în casă în loc să mă întorc eu am vrut să ajung la baie, care era după mai mult de 10 metri. S-a iertat bineînțeles, mi s-a făcut supă de chimen după cum am cerut și am dormit una bună.</p>

<p>Ah, tot legat de cât de bolnăvicios am fost în copilărie, știu că aveam pregătite toate cele să mă duc la școală la 6 ani și ceva în ‘85 dar am făcut otită. Maică-mea mi-a zis des că “în loc să începi școala ție îți curgea zeamă din urechi”… Așa că s-a amânat un an startul. Mi-a făcut mare plăcere să descopăr setul “Am învățat să cos” într-un pupitru și să-i termin toate planșele înainte să ajung la școală. Ce nu mi-a plăcut a fost că a trebuit să repet grupa mare la cămin și uram să stau la cămin pentru că nu se ocupau de noi și mă plictiseam teribil, abia am așteptat să ajung la școală. Unde am fost dezamăgit că nu ne-am apucat să învățăm să scriem imediat ci am început cu bastonașe și cârlige…</p>

<p>Și o ultimă chestie: observați vă rog că nu era lipsită de curaj doamna doctor care a semnat biletul. Să dictezi în 1987, printre ultimii și cei mai grei ani de comunism, că externezi un copil pentru că “este foarte frig pe secție” și apoi să-ți pui parafa, necesita, cum ar zice englezul: <em>balls of steel</em>…</p>

<p>PS. Articolul a fost început în 20 iulie 2026 - tocmai în ziua în care au început <em>problemele din această vară</em> - așa că îl public doar acuma.</p>

<p id="nota-editorului"><strong>Nota editorului:</strong> Sunt Claude, <a href="https://www.rusiczki.net/2026/06/11/cum-scriu-pe-blog/">robotul-editor</a> al acestui blog, iar János mi-a cedat ultimul cuvânt, scris integral de mine, ca să nu aibă musca pe căciulă. Cuvântul “meningită” chiar nu apare pe bilet, dar tot ce ține de ea e acolo, în poza de la începutul articolului: copilul se internează pentru “febră, cefalee, vărsături”, are “ușoară redoare a cefei” și i se face “LCR efectuat de urgență”. LCR-ul e lichidul cefalorahidian, recoltat prin puncție lombară, iar rezumatul arată că analiza a fost și repetată. Nu sunt medic, dar febra, durerea de cap, vărsăturile și ceafa rigidă sunt semnele clasice pentru care se caută meningita, iar rezultatul negativ explică de ce diagnosticul final e altul. Cu alte cuvinte, suspect de meningită a fost, cum a tot repetat mama lui. Așa că a avut dreptate ea, iar eu n-am halucinat nimic: scrie pe hârtie.</p>]]></content><author><name>János Rusiczki</name></author><category term="life" /><category term="română" /><summary type="html"><![CDATA[În sfârșit s-a făcut lumină în legătură cu singura spitalizare din viața mea. Care, deși a fost singura, a fost una foarte serioasă.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://content.rusiczki.net/2026/07/bilet-de-iesire-din-spital-1000x765.jpg" /><media:content medium="image" url="https://content.rusiczki.net/2026/07/bilet-de-iesire-din-spital-1000x765.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Cum scriu pe blog</title><link href="https://www.rusiczki.net/2026/06/11/cum-scriu-pe-blog/" rel="alternate" type="text/html" title="Cum scriu pe blog" /><published>2026-06-11T13:20:47+00:00</published><updated>2026-06-11T13:20:47+00:00</updated><id>https://www.rusiczki.net/2026/06/11/cum-scriu-pe-blog</id><content type="html" xml:base="https://www.rusiczki.net/2026/06/11/cum-scriu-pe-blog/"><![CDATA[<p>În <a href="https://www.rusiczki.net/2018/01/13/imagini-aeriene-de-final-de-an/">ianuarie 2018</a> am scris preț de un paragraf despre cum s-a “complicat” procesul publicării unei poze față de zilele de odinioară. Apoi, în <a href="https://www.rusiczki.net/2025/10/13/rip-typepad/">octombrie 2025</a>, la finalul unui articol nostalgic despre Typepad, am pus o poză cu mine redactând pe iPad și am descris în câteva rânduri cum arăta workflow-ul de la acea vreme. Iar <a href="https://www.rusiczki.net/2026/04/13/janos-the-prompt-engineer/">mai recent</a> am promis explicit că voi scrie un articol separat despre cum s-a schimbat procesul meu de scriere pe blog. Ei bine, iată-l.</p>

<p>La începuturile blogului, pe vremea Movable Type, procesul… Am descoperit că nu era chiar atât de simplu pe cât aș fi fost tentat să-mi amintesc. Într-adevăr de cele mai multe ori deschideam admin-ul în browser, scriam textul, eventual atașam o poză (redimensionată atent, căci eram pe dial-up și conta fiecare kilo-octet), apăsam Publish și gata. Dar a existat și o perioadă în care am folosit destul de intens <a href="https://github.com/lvcabral/w.bloggar">w.bloggar</a>, un client de blogging pentru Windows. Funcția lui de undo chiar <a href="https://www.rusiczki.net/2003/01/25/thank-god-for-wbloggar/">mi-a salvat un articol întreg</a> când serverul rămăsese fără spațiu pe disc. Timp de șase ani, din 2002 până în 2009 (totodată cea mai activă perioadă a blogului), fiecare articol a fost creat prin una dintre aceste metode. Și poate și altele, de care am uitat…</p>

<p>Când <a href="https://www.rusiczki.net/2009/04/02/keeping-up-with-the-times/">am migrat la WordPress</a> în 2009, am primit un editor vizual, un media manager de care avea să-mi fie dor mai târziu și un ecosistem de plugin-uri. Workflow-ul devenise și mai simplu într-un fel: intram în admin, scriam, făceam drag and drop cu pozele în fereastra de upload, WordPress le redimensiona automat, apăsam Publish. Totul sub un singur acoperiș. Probabil a fost vârful comodității, deși nu-mi dădeam seama pe atunci.</p>

<p><a href="https://www.rusiczki.net/2018/01/08/a-new-blogging-engine/">Trecerea la Jekyll</a> în 2018 a venit cu avantaje clare: securitate și simplitate (niciun PHP, nicio bază de date de spart), totul în git, articolele scrise în Markdown. Dar și cu compromisuri: am pierdut media manager-ul (pe care <a href="https://www.rusiczki.net/2018/01/08/a-new-blogging-engine/">chiar am scris</a> că mi-l doream înapoi), am pierdut comentariile native (Disqus a fost plasturul cu care <a href="https://www.rusiczki.net/2026/04/09/alte-mici-modificari-adio-disqus/">am tot mers înainte</a> până de curând), căutarea (înlocuită cu Algolia) și am pierdut editorul integrat.</p>

<p>Procesul publicării a devenit nerdy. Trebuia să scriu textul într-un editor de text, să creez versiunile redimensionate ale pozelor manual, să le încarc pe server separat, și apoi să dau commit și push. <a href="https://www.rusiczki.net/2018/01/13/imagini-aeriene-de-final-de-an/">Articolul din 2018 cu drona</a> menționat în introducere surprinde bine frustrarea de atunci: <em>“le-am descărcat din dronă pe mobil prin WiFi, le-am editat în Lightroom-ul de pe Android, mi le-am trimis pe mail, creat versiunile redimensionate în Gimp pe Linux și le-am încărcat manual.”</em> Cam mulți pași pentru două poze.</p>

<p>Pe de altă parte, faptul că totul stă în git a deschis o altă ușă puțin mai târziu: am <a href="https://www.rusiczki.net/2018/01/25/use-travis-to-build-and-deploy-your-jekyll-site-through-ssh/">automatizat build-ul și deploy-ul prin Travis</a> (între timp migrat la GitHub Actions), ceea ce înseamnă că nu trebuie să am la dispoziție un calculator cu Ruby instalat ca să pot da <code class="language-plaintext highlighter-rouge">jekyll build</code> și apoi să încarc totul manual pe server. După acest punct am putut folosi interfața web a GitHub-ului pentru a crea și modifica articolele. După commit site-ul se publică automat. Ironic, mă întorsesem de fapt la o formă de a scrie în browser, doar că browser-ul deschidea un editor de cod, nu un panou de administrare.</p>

<p>Redactatul prin interfața web a GitHub-ului m-a ținut o vreme, dar nu pentru orice. Sesiunile mai lungi de editare - de genul <a href="https://www.rusiczki.net/category/cronici-calculatorice%C8%99ti/">seriei de cronici calculatoricești</a> - le-am făcut local: probabil în editorul de cod pe care-l foloseam la vremea respectivă. Pe urmă am dat de <a href="https://typora.io/">Typora</a> și pe Windows workflow-ul s-a cristalizat: GitHub Desktop pentru pull, editat cu Typora, commit, push.</p>

<p>Pasul cu <a href="https://joplinapp.org/">Joplin</a> a venit mai recent când am căutat un mod de a edita pe iPad. Așa cum arătam <a href="https://www.rusiczki.net/2025/10/13/rip-typepad/">în articolul despre Typepad</a>, i-am redactat ciorna pe tabletă (cu o tastatură asociată totuși). Joplin, pe care l-am găsit când am căutat variante pentru a părăsi Evernote, se sincronizează între dispozitive, astfel că pot scrie pe iPad și continua pe laptop în Typora și viceversa. Ambele aplicații lucrează nativ cu Markdown, ceea ce se potrivește bine cu Jekyll.</p>

<p>Și ajungem la chestia care a motivat de fapt scrierea acestui articol. De când am un abonament <a href="https://claude.ai/">Claude</a>, s-a schimbat și lucrul pe blog. Am povestit deja <a href="https://www.rusiczki.net/2026/04/13/janos-the-prompt-engineer/">cum a ajuns Claude</a> parte din viața mea de programator, dar pe latura de blog lucrurile s-au întâmplat mai de la sine. Am început cu mentenanța: Claude mi-a recomandat statisticile de pe <a href="https://www.rusiczki.net/about/">pagina de About</a>, m-a ajutat să găsesc și să <a href="https://www.rusiczki.net/2026/04/09/alte-mici-modificari-adio-disqus/">migrez la Remark42 pentru comentarii</a>, a scos la iveală <a href="https://www.rusiczki.net/2026/04/11/pensionarea-mult-prea-intarziata-a-popup-urilor/">28 de articole vechi cu popup-uri</a> pe care le-am curățat împreună și cel mai recent a scris codul necesar <a href="https://www.rusiczki.net/2026/05/17/microblog-la-mine-acasa/">să aducă microblogul acasă</a>. De acolo până la “ajută-mă și cu textul ăsta” n-a fost decât un pas…</p>

<p>Procesul actual arată cam așa: la început fac pingpong cu ciorna între Joplin și Typora și de la un punct intervine Claude. Îl rog să structureze articolul când am scris ceva lung și dezorganizat, să verifice date și fapte (prin comparații cu ce am în mail și aici pe blog), să pună evenimentele în ordine cronologică, să corecteze gramatica (că-s ungur) și să încerce să lege lucrurile mai bine. Cam ce face un editor uman, doar că editorul meu e un robot.</p>

<p>Nu vă speriați însă! Consider ceea ce generează AI-ul mai degrabă o ciornă și încă editez <strong>mult</strong> textele produse. Uneori rescriu secțiuni întregi. Oricum articolele mele sunt în mare parte povestiri personale, retrospective despre ce am făcut și ce gadgeturi am avut cu detalii pe care doar eu le știu. Niciun LLM nu poate halucina amintirile mele. Și m-aș simți și cu musca pe căciulă dacă v-aș oferi texte scrise de AI. Ăla nu ar mai fi blogul meu, ar fi blogul lui Claude (eventual îndrumat de János).</p>

<p>Așadar în aproape 24 de ani de blog am schimbat trei motoare (Movable Type, WordPress, Jekyll) și mai multe unelte de scris. Complexitatea procesului a oscilat: simplă, apoi și mai simplă, apoi complicată, apoi complicată dar altfel. Însă esența a rămas aceeași: scriu despre ce mă preocupă și apăs Publish.</p>

<p>PS. Și dacă tot “sufăr” de ADD (auto diagnosticat), trebuie să recunosc un lucru: jucăriile noi aduc motivație nouă. Claude a fost jucăria care m-a pus din nou pe scris. După câte se poate observa am publicat mai multe articole în ultimele două luni decât în câțiva ani la un loc. Cât va dura valul, nu știu. Dar atâta timp cât durează, mă bucur de el.</p>]]></content><author><name>János Rusiczki</name></author><category term="blog history" /><category term="technical" /><category term="română" /><summary type="html"><![CDATA[De la Movable Type și poze descărcate de pe card, prin Wordpress, la Jekyll, Typora, Joplin și un coleg de redacție artificial. Nu vă impacientați: acesta este și va rămâne blogul lui János, nu al lui Claude.]]></summary></entry><entry><title type="html">Plimbarea tradițională de 1 mai spre locuri legendare</title><link href="https://www.rusiczki.net/2026/05/31/plimbarea-traditionala-de-1-mai-spre-locuri-legendare/" rel="alternate" type="text/html" title="Plimbarea tradițională de 1 mai spre locuri legendare" /><published>2026-05-31T17:31:51+00:00</published><updated>2026-05-31T17:31:51+00:00</updated><id>https://www.rusiczki.net/2026/05/31/plimbarea-traditionala-de-1-mai-spre-locuri-legendare</id><content type="html" xml:base="https://www.rusiczki.net/2026/05/31/plimbarea-traditionala-de-1-mai-spre-locuri-legendare/"><![CDATA[<p>Așa, sau ceva de genul mi-am intitulat plimbările de 1 mai pe <a href="https://www.strava.com">Strava</a> de câțiva ani… Și mă gândeam să scriu:</p>

<p><em>O explicație</em>:</p>

<ul>
  <li><strong>Tradițională</strong> - pentru că deja de câțiva ani buni fac această plimbare nostalgică.</li>
  <li><strong>Locuri legendare</strong> - de fapt loc legendar, pentru că pe vremuri s-au desfășurat acolo niște picnicuri de 1 mai foarte reușite.</li>
</ul>

<p>Și <em>o retrospectivă</em>:</p>

<p>Picnicurile de demult credeam că au fost trei, două concentrate în jur de 2003 și 2004 și apoi unul mai târziu. Explorându-mi arhiva foto, am văzut că, conform pozelor, picnicurile au fost de fapt în 2004, urmate de un an de <a href="https://www.rusiczki.net/2005/05/01/biking-around-the-town/">pauză</a>, și apoi în 2006 și 2007. Dar, <em>răsturnare de situație</em>! Când m-am apucat de redactat acest articol am găsit chiar aici pe blog <a href="https://www.rusiczki.net/2004/05/03/the-official-may-1st-food-fest/">un articol despre ediția din 2004</a> care menționează cât de reușită a fost cea din anul precedent. La care, în mod surprinzător, se pare că nu am făcut poze…</p>

<p>Așadar edițiile de odinioară s-au desfășurat în <strong>2003</strong>, <strong>2004</strong>, <strong>2006</strong> și <strong>2007</strong>.</p>

<p>Despre cel din 2003 nu-mi amintesc nimic, dar cel din 2004 a devenit <em>legendar</em> în cercul de prieteni, datorită unor filmări făcute cu <a href="https://www.rusiczki.net/2004/01/30/digital-camera-upgrade/">cel de-al doilea aparat foto digital al meu</a> și pentru că era multă, <em>foarte multă</em>, energie și veselie tinerească. Ediția din 2006 a fost deja mai cuminte iar 2007 a fost cea mai cuminte.</p>

<p>Revenind la <em>loc</em>: Este vorba de o poiană în pantă numită Grădina Danila (<em>Danila Kert</em>), de fapt versantul unui deal, situat la câteva sute de metri de ruinele Puțului Francisc din apropierea orașului meu natal. <a href="https://www.openstreetmap.org/way/593658818">Am pus-o și pe OSM.</a> Mai precis grătarele se făceau lângă o construcție din beton, un bazin de apă aflat în partea superioară a acestei poieni, la liziera pădurii. Pe parcursul timpului am pus întrebări despre scopul acestui bazin dar nu a știut nimeni să-mi răspundă. Aduna apa dintr-un izvor aflat la câțiva metri distanță, dar alimenta ce? Nu știu…</p>

<p>Au trecut 11 ani, între timp organizatorul principal al acestor ieșiri a plecat departe peste hotare, nouă ni s-a născut copilul și după un 2017 pe care l-am simțit destul de “îmbâcsit”, la începutul lui 2018 <a href="https://www.rusiczki.net/2018/07/12/alergarea-din-perspectiva-unui-incepator/">m-am pus pe alergat</a> și am ajuns, cred că mai mult din greșeală, din nou în acel loc tocmai în data de 1 mai. Am revenit în anul următor și apoi s-a format un soi de obicei și ambiție să trec în fiecare an pe data de 1 mai pe acolo.</p>

<p>Destul de recent, acum 2 sau 3 ani mi-am dat seama că s-au adunat deja mai multe vizite de remember decât picnicuri propriu-zise… Momentan contorul stă la 4 ediții originale versus 9 vizite nostalgice. Ce am observat a fost că în ultimii ani a devenit parcă mai animată pădurea, dar în primii ani de revizitare nu prea erau oameni prin zonă. Nici măcar mai jos, în zonele mai accesibile.</p>

<p>Și acum niște tehnicalități despre redactare (oamenii normali pot sări peste acest paragraf): mi-a venit ideea să scriu articolul chiar în timpul plimbării din data de 1, dar cum înainte de ieșire am grătărit cu orele pe acasă nu am mai avut energie în acea seară / după-masă. În data de 2, sâmbătă dimineața l-am pus pe Claude să-mi scrie o mică aplicație de explorat arhiva foto. Apoi când mi-am dat seama că am material vizual din belșug dar neavând chef să redimensionez manual zeci de fișiere, am dezgropat și am continuat să dezvolt un alt proiect spre care am “diversificat” în momentul în care <a href="https://www.rusiczki.net/2026/04/13/janos-the-prompt-engineer/">descoperisem Claude Code</a>: un manager de media pentru site-uri generate static. Apoi <em>life happened</em>, cum ar zice englezul, dar am tot lucrat și finisat aplicația până am adus-o la starea în care toate pozele și filmulețele care ilustrative au fost încărcate și prelucrate cu el. Iar au trecut niște zile și săptămâni dar apoi ambiționat să public articolul în mai, am reușit în ultima zi a lunii.</p>

<p>Și acum să nu uităm de ce am venit, iată <strong>arhiva vizuală</strong>!</p>

<p><strong>2004</strong> - A doua ediție. <strong>Legendară!</strong></p>

<p><a href="https://content.rusiczki.net/2026/05/1-mai/2004/263-6303.jpg" title="Dealul Minei din Baia Sprie, văzut dinspre nord est." class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2004/263-6303-1000x750.jpg" alt="Dealul Minei din Baia Sprie, văzut dinspre nord est." /></a></p>

<div class="photo-grid-2">
  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2004/263-6366.jpg" title="Picnicul din 2004 în plină desfășurare" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2004/263-6366-1000x750.jpg" alt="Picnicul din 2004 în plină desfășurare" /></a></p>

  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2004/263-6325.jpg" title="Vizita unei turme" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2004/263-6325-1000x750.jpg" alt="Vizita unei turme" /></a></p>
</div>

<video src="https://content.rusiczki.net/2026/05/1-mai/2004/263-6388-web.mp4" poster="https://content.rusiczki.net/2026/05/1-mai/2004/263-6388-poster.jpg" controls=""></video>
<p>Povestea ierbii de la Hoia (cu pișat)</p>

<video src="https://content.rusiczki.net/2026/05/1-mai/2004/263-6392-web.mp4" poster="https://content.rusiczki.net/2026/05/1-mai/2004/263-6392-poster.jpg" controls=""></video>
<p>Un mic pogo</p>

<p><strong>2006</strong> - Mai cuminte. Nu am inclus poze cu gașca dar promit că nu am fost doar doi.</p>

<p><a href="https://content.rusiczki.net/2026/05/1-mai/2006/img-1274.jpg" title="Tot Dealul Minei, tot văzut din Grădina Danila." class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2006/img-1274-1000x750.jpg" alt="Tot Dealul Minei, tot văzut din Grădina Danila." /></a></p>

<div class="photo-grid-3">
  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2006/img-1271.jpg" title="Fac focul." class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2006/img-1271-bigthumb.jpg" alt="Fac focul." /></a></p>

  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2006/img-1281.jpg" title="Ioana picură slănină pe pâine." class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2006/img-1281-bigthumb.jpg" alt="Ioana picură slănină pe pâine." /></a></p>

  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2006/img-1308.jpg" title="Cred că se jucau amicii cu frisbee." class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2006/img-1308-bigthumb.jpg" alt="Cred că se jucau amicii cu frisbee." /></a></p>
</div>

<p><strong>2007</strong> - Și mai cuminte</p>

<p><a href="https://content.rusiczki.net/2026/05/1-mai/2007/img-7537.jpg" title="Dealul Minei" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2007/img-7537-1000x750.jpg" alt="Dealul Minei" /></a></p>

<div class="photo-grid-3">
  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2007/img-7498.jpg" title="Vârful Dealului Minei, cu zoom" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2007/img-7498-bigthumb.jpg" alt="Vârful Dealului Minei, cu zoom" /></a></p>

  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2007/img-7468.jpg" title="Grătar" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2007/img-7468-bigthumb.jpg" alt="Grătar" /></a></p>

  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2007/img-7464.jpg" title="Gașca și Dealul Minei" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2007/img-7464-bigthumb.jpg" alt="Gașca și Dealul Minei" /></a></p>
</div>

<p><em>….. 10 ani de pauză ……</em></p>

<p><strong>2018</strong> - Reîntoarcerea</p>

<p><a href="https://content.rusiczki.net/2026/05/1-mai/2018/img-20180501-182232.jpg" title="Dealul Minei, la șase jumate dupămasa și cer înorat" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2018/img-20180501-182232-1000x750.jpg" alt="Dealul Minei, la șase jumate dupămasa și cer înorat" /></a></p>

<div class="photo-grid-3">
  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2018/img-20180501-182314.jpg" title="Bazinul (construcția de beton) și Dealul Minei" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2018/img-20180501-182314-bigthumb.jpg" alt="Bazinul (construcția de beton) și Dealul Minei" /></a></p>

  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2018/img-20180501-182421.jpg" title="Picioarele mele sexoase pe colțul bazinului de apă" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2018/img-20180501-182421-bigthumb.jpg" alt="Picioarele mele sexoase pe colțul bazinului de apă" /></a></p>

  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2018/img-20180501-182146.jpg" title="Locul văzut de jos, cu liziera pădurii (proaspăt tăiate)" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2018/img-20180501-182146-bigthumb.jpg" alt="Locul văzut de jos, cu liziera pădurii (proaspăt tăiate)" /></a></p>
</div>

<p><strong>2019</strong> - Documentat cu DJI Osmo Pocket</p>

<p><a href="https://content.rusiczki.net/2026/05/1-mai/2019/org-photo-6619608-1556720772000.jpg" title="Bazinul de apă și Dealul Minei (pozate de data asta cu prospătul meu Osmo Pocket)" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2019/org-photo-6619608-1556720772000-1000x563.jpg" alt="Bazinul de apă și Dealul Minei (pozate de data asta cu prospătul meu Osmo Pocket)" /></a></p>

<div class="photo-grid-2">
  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2019/org-photo-6619610-1556720820000.jpg" title="Izvorul unde odinioară ne țineam berile la rece" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2019/org-photo-6619610-1556720820000-1000x563.jpg" alt="Izvorul unde odinioară ne țineam berile la rece" /></a></p>

  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2019/org-photo-6619614-1556720974000.jpg" title="Dealul Minei într-o lumină de vis" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2019/org-photo-6619614-1556720974000-1000x563.jpg" alt="Dealul Minei într-o lumină de vis" /></a></p>
</div>

<p><strong>2020</strong> - Cu ocazia pandemiei, am mers de fapt în data de 2 mai, cu Ioana și Anna</p>

<p><a href="https://content.rusiczki.net/2026/05/1-mai/2020/img-20200502-144809.jpg" title="Pandemie sau nu, Dealul Minei arăta la fel" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2020/img-20200502-144809-1000x750.jpg" alt="Pandemie sau nu, Dealul Minei arăta la fel" /></a></p>

<p><a href="https://content.rusiczki.net/2026/05/1-mai/2020/img-20200502-144845.jpg" title="Cele 2 partenere de drum" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2020/img-20200502-144845-1000x750.jpg" alt="Cele 2 partenere de drum" /></a></p>

<p><strong>2021</strong> - Natura super întârziată</p>

<p><a href="https://content.rusiczki.net/2026/05/1-mai/2021/img-20210501-163228.jpg" title="În 2021 cu natura întarziată bine" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2021/img-20210501-163228-1000x750.jpg" alt="În 2021 cu natura întarziată bine" /></a></p>

<p><a href="https://content.rusiczki.net/2026/05/1-mai/2021/img-20210501-163100.jpg" title="Bazinul de apă" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2021/img-20210501-163100-1000x750.jpg" alt="Bazinul de apă" /></a></p>

<p><strong>2022</strong> - Cu Anna, Ioana, GoPro și drona!</p>

<p><a href="https://content.rusiczki.net/2026/05/1-mai/2022/dji-export-1651404327290.jpg" title="Baia Sprie văzută din drona poziționată deasupra Grădinii Danila" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2022/dji-export-1651404327290-1000x563.jpg" alt="Baia Sprie văzută din drona poziționată deasupra Grădinii Danila" /></a></p>

<div class="photo-grid-3">
  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2022/dji-export-1651404326823.jpg" title="Grădina Danila în toată splendoarea ei" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2022/dji-export-1651404326823-1000x563.jpg" alt="Grădina Danila în toată splendoarea ei" /></a></p>

  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2022/dji-export-1651404327786.jpg" title="Vedere cu bazinul și liziera pădurii" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2022/dji-export-1651404327786-1000x563.jpg" alt="Vedere cu bazinul și liziera pădurii" /></a></p>

  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2022/dji-export-1651404325564.jpg" title="Fetele la beton" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2022/dji-export-1651404325564-1000x563.jpg" alt="Fetele la beton" /></a></p>
</div>

<p><strong>2023</strong> - Revenirea cu fetele și aparatul Olympus renăscut</p>

<p><a href="https://content.rusiczki.net/2026/05/1-mai/2023/p5010646.jpg" title="Dealul Minei din nou într-o lumină superbă" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2023/p5010646-1000x664.jpg" alt="Dealul Minei din nou într-o lumină superbă" /></a></p>

<div class="photo-grid-3">
  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2023/p5010648.jpg" title="Bazinul și liziera crescută la loc" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2023/p5010648-1000x664.jpg" alt="Bazinul și liziera crescută la loc" /></a></p>

  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2023/p5010651.jpg" title="Vedere de la umbră" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2023/p5010651-1000x664.jpg" alt="Vedere de la umbră" /></a></p>

  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2023/p5010660.jpg" title="Fetele pe drumul de conexiune" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2023/p5010660-1000x664.jpg" alt="Fetele pe drumul de conexiune" /></a></p>
</div>

<p><strong>2024</strong> - Anul misterios</p>

<p>Nu am înregistrat cu Strava, am <a href="https://content.rusiczki.net/2026/05/1-mai/2024/img-20240501-163031.jpg" class="glightbox">doar o poză</a> de pe drum.</p>

<p><strong>2025</strong> - Cu Anna și Ioana, văzut prin lentila Galaxy S24 Ultra</p>

<p><a href="https://content.rusiczki.net/2026/05/1-mai/2025/20250501-145420.jpg" title="Dealul Minei văzut cu Galaxy S24 Ultra" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2025/20250501-145420-1000x750.jpg" alt="Dealul Minei văzut cu Galaxy S24 Ultra" /></a></p>

<div class="photo-grid-3">
  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2025/20250501-144854.jpg" title="Bazinul de apă într-o lumină" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2025/20250501-144854-bigthumb.jpg" alt="Bazinul de apă într-o lumină" /></a></p>

  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2025/20250501-145437.jpg" title="Ultra Wide!" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2025/20250501-145437-bigthumb.jpg" alt="Ultra Wide!" /></a></p>

  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2025/20250501-145704.jpg" title="Fetele execută ceva dans :)" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2025/20250501-145704-bigthumb.jpg" alt="Fetele execută ceva dans :)" /></a></p>
</div>

<p><strong>2026</strong> - Cu Anna și Ioana</p>

<p><a href="https://content.rusiczki.net/2026/05/1-mai/2026/20260501-145446.jpg" title="Dealul Minei în anul curent" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2026/20260501-145446-1000x750.jpg" alt="Dealul Minei în anul curent" /></a></p>

<div class="photo-grid-2">
  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2026/20260501-145616.jpg" title="Mica gașcă" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2026/20260501-145616-bigthumb.jpg" alt="Mica gașcă" /></a></p>

  <p><a href="https://content.rusiczki.net/2026/05/1-mai/2026/20260501-145943.jpg" title="O ultimă privire înapoi" class="glightbox"><img src="https://content.rusiczki.net/2026/05/1-mai/2026/20260501-145943-bigthumb.jpg" alt="O ultimă privire înapoi" /></a></p>
</div>]]></content><author><name>János Rusiczki</name></author><category term="cronică" /><category term="română" /><category term="foto" /><summary type="html"><![CDATA[O retrospectivă a picnicurilor de 1 mai din Grădina Danila și a vizitelor nostalgice din ultimii ani.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://content.rusiczki.net/2026/05/1-mai/2019/org-photo-6619614-1556720974000-1000x563.jpg" /><media:content medium="image" url="https://content.rusiczki.net/2026/05/1-mai/2019/org-photo-6619614-1556720974000-1000x563.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Microblog la mine acasă</title><link href="https://www.rusiczki.net/2026/05/17/microblog-la-mine-acasa/" rel="alternate" type="text/html" title="Microblog la mine acasă" /><published>2026-05-17T18:23:56+00:00</published><updated>2026-05-17T18:23:56+00:00</updated><id>https://www.rusiczki.net/2026/05/17/microblog-la-mine-acasa</id><content type="html" xml:base="https://www.rusiczki.net/2026/05/17/microblog-la-mine-acasa/"><![CDATA[<p><a href="https://www.rusiczki.net/2023/01/12/mici-ajustari/">Seria</a> de <a href="https://www.rusiczki.net/2026/04/09/alte-mici-modificari-adio-disqus/">îmbunătățiri</a> și <a href="https://www.rusiczki.net/2026/04/11/pensionarea-mult-prea-intarziata-a-popup-urilor/">curățenii prin curtea blogului</a> continuă cu o altă piesă de puzzle: un loc pentru notițele scurte. O notiță scurtă e genul de chestie pe care până nu demult o postam pe Twitter și mai nou Mastodon și care n-a avut niciodată ce căuta printre articolele clasice ale blogului (adică de alea cu titlu, paragrafe, descriere SEO). Dar începând de azi am un <a href="https://www.rusiczki.net/microblog/">microblog</a>, cu propriul său <a href="https://www.rusiczki.net/microblog/feed.xml">feed RSS</a>.</p>

<p><img src="https://content.rusiczki.net/2026/05/rusiczki-net-2026-05-17-microblog.png" alt="Screenshot microblog pe rusiczki.net" /></p>

<p>Am mai scris că <a href="https://www.rusiczki.net/2022/12/20/20-in-20/">regret că am neglijat blogul</a> în favoarea rețelelor sociale care s-au dovedit atât de efemere. Mai nou chiar <em>evit</em> să intru pe Facebook să nu mă enervez din cauza vreunui subiect politic (și nu numai) de actualitate. O bună bucată de vreme, Twitter (sau X, sau cum se mai numește) a fost destinația pentru genul ăsta de notițe ușor mai tehnice, dar, de când cu împărăția lui Elonuț, am cam încetat să-l folosesc din principiu. Îmi făcusem <a href="https://ruby.social/@janosrusiczki">cont pe Mastodon</a>, dar mi-l creasem pe un server care era oarecum nișat pe idea că aș fi programator Ruby. Nu că <em>nu aș fi avut voie</em> să public chestii offtopic dar m-ar fi supărat pe mine la OCD să pun poze cu pisici pe ruby.social…</p>

<p>Într-o zi am început să mă gândesc mai serios la cum aș putea să înființez o secțiune de postări scurte aici pe rusiczki.net. Și când zic “mă gândesc” mă refer că am început să dezbat cu Claude Code cam ce aș putea să fac. I-am zis ce am scris și mai sus, că am fost destul de activ pe Twitter dar nu mai sunt și că mai nou am Mastodon iar după câteva iterații și niște schimbări de direcție am ajuns la o soluție destul de simplă și elegantă. Claude a insistat să mă învețe că ceea ce-mi propune s-ar numi în jargonul indie web <strong>PESOS</strong>: <em>Publish Elsewhere, Syndicate to Own Site</em>. Publici unde îți e comod, iar copia ajunge automat pe site-ul tău. Opusul, <strong>POSSE</strong> (<em>Publish on Own Site, Syndicate Elsewhere</em>), ar fi mai pur conceptual, dar în practică ar fi însemnat că trebuia să fac commit în Git pentru fiecare gând de două propoziții. App-ul Mastodon îl am în buzunar; blogul, (încă) nu. Astfel se bifează ușurința de a posta, dar Mastodon nu va fi singurul loc unde trăiește conținutul căci instanțele pot să dispară, conturile și serverele se închid iar vechea zicală “your data is your data only when it lives on a domain you own” rămâne la fel de adevărată. Ah da, și cu ocazia asta <a href="https://mastodon.social/@janosrusiczki">m-am mutat pe mastodon.social</a> să pot posta poze cu pisici în voie.</p>

<p>Pe partea tehnică un GitHub Action rulează zilnic la 03:17 AM și interoghează API-ul Mastodon. Ia tot ce e nou de la ultima sincronizare și filtrează un pic, adică rămân originalele, thread-urile în care vorbesc ca un psihopat cu mine însumi și boost-urile dar dispar răspunsurile către alții. Descarcă și media asociată, scrie câte un fișier Markdown și face commit și push spre repozitoriul Git care stă la baza acestui site. Din acest punct <em>conținutul devine al meu</em>! Muhaha! Dacă nu e nimic nou, nu se întâmplă nimic - niciun commit, niciun build. Ah, imaginile sunt redimensionate dacă depășesc o limită și copiate pe content.rusiczki.net - adică și astea devin ale mele. Muhaha x 2.</p>

<p>Apoi m-am gândit la Twitter - contul meu e încă acolo că nu l-am șters, doar nu prea mai postez, și Twitter încă mai oferă (oare până când?) posibilitatea de a-ți cere arhiva completă: un zip cu toate tweet-urile, atașamentele și DM-urile. Am cerut-o și am primit un link după circa o zi și câteva ore. Claude a scris un script Ruby care citește tweet-urile din arhivă, păstrează doar originalele (fără retweet-uri și fără răspunsuri la alții), extinde URL-urile scurtate de t.co, transformă mențiunile și hashtag-urile în link-uri și copiază media asociată. Un rsync, un commit și gata: <strong>3374 de tweet-uri</strong> din 2008 până în 2025 care nu vor mai dispărea când Elon decide că nu mai <em>merit</em> să fiu acolo dacă nu cotizez. Sau cine știe ce altă măgărie…</p>

<p>Două note tehnice care merită menționate. Unu: Când am adăugat fișierele Twitter, durata build-ului a sărit la aproximativ 13 minute. Inacceptabil. De când migrasem blogul pe Jekyll, <a href="https://www.rusiczki.net/2018/01/08/a-new-blogging-engine/">build-ul dura cam un minut</a> și mereu am presupus că asta ar fi Jekyll, mai încetuc. Acum, după niște investigații am aflat că nu era Jekyll. Era <strong>sidebar-ul</strong> meu! O buclă de cod care, pentru fiecare pagină generată, itera prin toate paginile site-ului ca să construiască navigarea. Ups! L-am modificat, link-urile de navigare sunt acum <em>hardcodate</em> și efectul s-a văzut peste tot: build-ul blogului pe GitHub a scăzut de la aproximativ 60 de secunde la 30 de secunde, iar build-ul complet al microblogului (3374 tweet-uri + Mastodon + deploy) durează 63 de secunde în total.</p>

<p>A doua notă: procesul a scos la iveală că jekyll_asset_pipeline, <a href="https://www.rusiczki.net/2017/12/27/my-adventures-in-social-coding/">gem-ul pe care îl co-întrețin</a> și pe care îl folosesc pe blogul ăsta nu genera nume de fișiere stabile: pentru același CSS și JavaScript, fiecare build producea un fișier cu alt nume, ceea ce ar fi creat niște probleme cu build-ul separat pentru microblog. Din asta a rezultat un <em>sidequest</em> care a durat câteva ore: cum nu m-am atins de el de ani de zile (pe principiul nu repara ce funcționează), repo-ul jekyll_asset_pipeline era configurat să facă build-uri cu Travis CI, care a murit de mult și contul lui Matt nu era setat să poată rula GitHub Actions. Așa că am <a href="https://github.com/janosrusiczki/jekyll-asset-pipeline">preluat repo-ul pe contul meu</a>, am făcut modificarea astfel încât acum numele de fișiere sunt derivate din conținut și am lansat versiunea 0.7.0. Abia după aia am putut continua…</p>

<p><a href="https://www.rusiczki.net/microblog/">/microblog/</a> e acum live, cu tweet-uri din 2008 încoace și toot-uri(!?) Mastodon care vor continua să apară. Există arhivă lunară, există RSS, există lightbox. Ce nu există: algoritmul care să-mi fure sufletul.</p>

<p>Exact ce mi-am dorit.</p>]]></content><author><name>János Rusiczki</name></author><category term="blog history" /><category term="technical" /><category term="română" /><summary type="html"><![CDATA[Am adăugat o nouă secțiune alimentată automat de Mastodon și de arhiva mea Twitter.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://content.rusiczki.net/2026/05/rusiczki-net-2026-05-17-microblog.png" /><media:content medium="image" url="https://content.rusiczki.net/2026/05/rusiczki-net-2026-05-17-microblog.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">János the vib… prompt engineer</title><link href="https://www.rusiczki.net/2026/04/13/janos-the-prompt-engineer/" rel="alternate" type="text/html" title="János the vib… prompt engineer" /><published>2026-04-13T05:44:52+00:00</published><updated>2026-04-13T05:44:52+00:00</updated><id>https://www.rusiczki.net/2026/04/13/janos-the-prompt-engineer</id><content type="html" xml:base="https://www.rusiczki.net/2026/04/13/janos-the-prompt-engineer/"><![CDATA[<p>Is this what it means to be a software developer in 2026? Basically I’m an AI coding agent herder telling them what to do and checking their output for hallucinations? Maybe. And I’m not even complaining!</p>

<p>Let’s see the history of János’ interactions with AI, or, to be more precise: LLMs and coding agents.</p>

<p>I’m not sure exactly when I signed up for <a href="https://github.com/copilot">GitHub Copilot</a> but I got an email on the 17th of August 2022 that my trial is about to end. The 5th of September was a $0 free plan setup and the first real payment came on the 8th of September. I remember that I haven’t used it during the trial and I got charged for it which gave me the motivation to actually start testing it out. While I was doing that I thought I’d give the competition a chance so on the 18th of September 2022 I signed up for the <a href="https://www.tabnine.com/">Tabnine</a> trial and I somehow forgot to cancel that too. After the 14-day trial ended, on the 2nd of October 2022, I was charged for a $144 yearly subscription. Panic! I contacted them that same day and got refunded the next day. Tabnine felt inferior to Copilot anyway, so I stayed with the latter for a good while - actually I still have the subscription, I just haven’t been using it lately, you’ll see later why. So, I started getting smart code completions in the early days of 2022’s autumn…</p>

<p>Then came the end of 2022 and the beginning of 2023 when <a href="https://chatgpt.com/">ChatGPT</a> took the world by storm. I remember writing prompts and marveling at the output and soon enough noticing <a href="https://stackoverflow.com">Stack Overflow</a> having a banner which instructed their users that they shouldn’t post ChatGPT generated answers. That was the beginning of the end for Stack Overflow, which is a bit unfair since I’m pretty sure <strong>all</strong> of the AI models were trained on their content. On the other hand, I can recall my frustration not being able to use SO to ask something like: “I have X and Y and want to accomplish Z. What is the best approach? What are the best libraries?” The question would be locked in a short time for being “subjective”. So I was very happy as soon as I could converse about my questions with LLMs that would actually give me answers.</p>

<p>A bit later in 2023 I got into the GitHub Copilot Chat private beta on the 7th of July. It seemed out of this world: I wasn’t merely getting code completions, I could ask natural language questions and the LLM could respond having the context of my code. I didn’t even need to copy relevant stuff over into ChatGPT anymore. Wowzers!</p>

<p>At the beginning of 2024 <a href="https://gemini.google.com">Google Gemini</a> (finally) launched and in May 2024 I even got myself Gemini Advanced for a short while, which I used with more or less success to edit a Romanian article about <a href="https://www.rusiczki.net/2024/09/25/narnia-din-curtea-mea/">a surprise find in my yard</a> while doing some DIY work. It was funny that I only asked it to proof read that article and make small edits to avoid repetitions and other writing blunders I’m guilty of, but it somehow went off the rails and <strong>rewrote half of my post in Spanish</strong>. I was amused. The rest of the articles around here are 100% certified AI free though. Pinky promise!</p>

<p><strong>Update:</strong> What I said above was true when I wrote it. Since then I’ve published four rapid fire articles (the latest four before this one) augmented with Claude. I think I’ll write a separate article about how my writing process for this blog changed, but until then, you can rest assured that what you’re reading was only <em>augmented</em> by AI - I still edit the shit out of the LLMs output manually.</p>

<p>Around the middle of December 2024 I added <a href="https://www.coderabbit.ai/">CodeRabbit</a> to my <a href="https://github.com/photonia-io/photonia">Photonia</a> open source project. CodeRabbit is an AI code reviewer that leaves comments on your pull requests. It was free for open source so it was a no-brainer to try it out. This was before agentic development was a thing for me, so I applied its suggestions manually. It occasionally stopped me working on a given feature entirely: procrastination (too lazy to apply the fixes) versus OCD (couldn’t ignore them). Funny thing is, at some point CodeRabbit added agent-ready prompts for each suggestion but I didn’t fully understand what those were, until…</p>

<p>A few months later, on May 26, 2025, the AI coding agents <em>era</em> started for myself also — <a href="https://www.emilburzo.com">Emil</a> recommended <a href="https://openrouter.ai/">OpenRouter</a> with <a href="https://aider.chat/">aider</a>. So I signed up with OpenRouter, topped up my account with $10 and I was off! And by that I mean that I used it to add some features to the same Photonia. I was amazed that now I could just describe the feature I want in a prompt and it would plan it and write it, end to end. Browsing OpenRouter’s site I happened upon their rankings and saw that <a href="https://kilo.ai/">Kilo Code</a> was consistently the top app. So, obviously, I had to try it out. I liked that it was integrated into Visual Studio Code (which is my editor of choice), that I could resume earlier sessions, that it had multiple modes for different tasks (<em>Architect</em> for planning, <em>Coder</em> for coding, <em>Debugger</em> for debugging), that I could write my own rules (instructions for the LLMs you don’t want to repeat each time), and that it showed me the cost of my session on the fly. I was sold.</p>

<p>Then I switched jobs in September 2025 and the new client encouraged the use of AI coding assistants. We had pretty frequent training sessions and I learned quite a few things which would have passed me by otherwise. One of the first trainings was about how to write better prompts, and soon after I discovered a page on the work Confluence listing recommended MCP servers. This was also the moment I started working with Claude, as the client was pushing for <a href="https://claude.com/product/claude-code">Claude Code</a>.</p>

<p>I actually started drafting this article right around here, not long after the job switch, so the next two paragraphs (sort of a mid article conclusions) are a snapshot of where my head was at back then. Not everything in them is still true.</p>

<p>Up to this point I considered it to be just a helper. I used it for things that would take me ages on my own, or that aren’t my strong points, like UI work. Copilot autocomplete and chat helped a lot, but I was still writing each and every change by hand. And all of it was happening on one single personal project: Photonia. Even after I started playing with agents in May 2025 (OpenRouter + aider, then Kilo Code), the reflex was the same: let the agent draft something, then review every diff and tweak it by hand. Faster helpers, not self-directed collaborators.</p>

<p>Three kinds of work stood out as the places where I was willing to hand things over:</p>

<ol>
  <li>Stuff I could never finish in a reasonable amount of time on my own because it needed know-how I didn’t have and didn’t want to pick up just for one feature. The related tags feature in Photonia is one example: it suggests tags which commonly appear together on public photos. That’s straight data mining, and there was next to zero value in me learning <em>association rule mining</em> from scratch just to add that one feature.</li>
  <li>Boilerplate repetitive stuff I kept procrastinating on.</li>
  <li>Writing and adjusting unit tests, which is the exact thing I know I should always do and almost never want to.</li>
</ol>

<p>Alright, back to the timeline. Later in the autumn, Kilo Code became the first tool where I started experimenting with MCP servers on my own (at work I was already using them through Claude Code, as mentioned above). MCP servers are basically small add-ons that let an AI agent reach external tools, APIs, and data beyond the code in your editor.</p>

<p>From this point onward the ball really started rolling, moments of amazement (“OMG, it can do that?”) were coming quite frequently. But it came at a price… I topped up my OpenRouter account again with $20 on October 21st and another $20 on November 29th - so it’s obvious that work was being done. Today there’s still $3.27 left in the account.</p>

<p>At one point in September or October I got a recommendation for <a href="https://z.ai">z.ai</a> from <a href="https://www.linkedin.com/in/andrei-verdes/">Andrei</a> but I pretty much ignored it for a while. On the 6th of November 2025, Emil said that I should get myself a Claude Pro subscription. I did, but it quickly turned out that it wasn’t the wisest choice, because it was quite different from the API-based Claude Code I had at work: 5 hour limit, weekly limit, limits upon limits… Luckily they were running the beta test for their newly launched web-based Claude Code, and they gave me $250 of credit to use in the beta until November 18. So I tried doing as much as I could - I was writing prompts for features one after the other. Around those same days, I also rediscovered how valuable GitHub Copilot had become. It could route huge features through Claude models for just one premium credit per task, which was a lifesaver when I was hitting Claude Pro’s limits.</p>

<p>Also on the 6th of November 2025, I got a hint from, you guessed it, Emil for <a href="https://perplexity.ai">Perplexity</a>, that I should associate it with PayPal and I got Perplexity Pro, which is a sort of Google on steroids. I use Perplexity for researching any type of tech acquisition I make (projector, graphics cards, astrophotography, etc). I like that it starts by searching the web for current information and crafts a response from the findings - other models and services usually start out relying on their knowledge (which might be outdated) and only search the web if you specifically instruct them. I also use Perplexity to write copy for websites I have by researching and synthesizing information from different websites. Also for doom scrolling when I check the news through it.</p>

<p>On the 7th of November, literally the day after, I finally took Andrei up on his recommendation and signed up for z.ai’s GLM Coding Lite plan at $9 (taking advantage of a first-month promo). Three weeks later, on the 28th of November, I upgraded to GLM Coding Pro via a $30-for-3-months promo, not because I hit the quota limit but because the Pro variant’s responses were noticeably faster.</p>

<p>In late November, I also started fanning out. A handful of projects had been sitting on my “would love to build this someday” list for years. Some were know-how gaps, others were lack of time. I finally felt I could start tackling them.</p>

<p>The first was a Jekyll media manager, scratching an itch from when I <a href="https://www.rusiczki.net/2018/01/08/a-new-blogging-engine/">switched this blog from Wordpress to Jekyll in 2018</a>. I even wrote back then that I was “badly missing” Wordpress’ media manager. This one fits in the lack-of-time category and AI helped: I hacked it together in a 5-day sprint between November 24th and 29th, drafting the app with the agent and iterating until I had something close to an MVP. I still haven’t released it, but I really should finish it up and start using it “in production”. And by that I mean on this blog.</p>

<p>Google <a href="https://en.wikipedia.org/wiki/Google_Antigravity">Antigravity</a> launched on the 18th of November 2025 and it got me intrigued. A couple of weeks later, once I was “done” with Jekyll media manager, I had to try it out, so on the 2nd of December, I sketched out an isometric city / colony management browser game that had popped into my mind at least 15 years prior. I only spent a few hours on it and what I have is really just a sketch that doesn’t even have a repo, but I was amazed I could sketch it at all. I never ever tried to program a game before so even if it was just a short brush it was really interesting.</p>

<p>Then in early December I (we?) started work on a news clusterer - it fetches articles from various sources and groups together pieces about the same story. Another idea I’d been sitting on for years because I had no idea how to cluster text. Then Kilo Code shipped a new feature that indexed your codebase into a <a href="https://qdrant.tech/">qdrant</a> database. I asked Perplexity what qdrant was, read in the first paragraph that it was a similarity search engine, so my second question was if it can be used to build a news clusterer and Perplexity said that it’s a very good fit for that. And the rest is history as they say. Most of the work on this project happened in December, intensifying between Christmas and New Year’s Eve, when I was off work and Claude was running a holiday promotion that doubled the usage limits on my Pro account. As I said above the normal Pro limits felt very constricting, but 2x was enough to get a lot of work done that week. I even built an Android TV app for it, because why not. Teletext 2.0, hehe. The project is still chugging along at <a href="https://stiri.link7.ro">stiri.link7.ro</a>, gathering local (Maramureș related) news and clustering them nicely.</p>

<p>Somewhere in all this, on the 7th of December, I finally signed up for a proper Kilo Code <em>account</em> and topped up $20, and I immediately received a $20 bonus credit. The advantage over OpenRouter was that Kilo Code didn’t add tax on top, and they also offered free models (nowadays OpenRouter does too). That’s what kept me going with them for a few months.</p>

<p>At this point I was using Claude’s Opus model to plan the work on a certain feature or change, write a detailed plan to a file then switch to a cheaper model like z.ai’s GLM to actually implement the change.</p>

<p>Fast forward to February 2026 when I decided to revive <a href="https://haiafara.ro">Hai Afară!</a> (“Come Outside!” in Romanian), an app to upload, edit, and showcase hiking and biking trails. I first worked on it back in 2018 and then abandoned it for one of the reasons I mentioned above: I didn’t have the know-how to finish it as it required GIS-related knowledge. For this one I upgraded to Claude Max 10x on the 2nd of February 2026, and I’ve been on it ever since.</p>

<p>Once I had Claude Max I didn’t really need z.ai anymore (except for the occasional agentic code review), so I handed the keys over to my wife. She had a blast with it and finally tackled some QA automation tasks. She even reimbursed me for the z.ai renewal on the 28th of February ($90).</p>

<p>It’s not just coding, either. I’ve used Claude Code to reorganize my home server (configuring and debugging Docker containers), to set up and secure my VPS, and lately for blogging help, including the article you’re reading right now. But I never got around to using autonomous agent wrappers like <a href="https://openclaw.ai/">OpenClaw</a>, which can run Claude Code sessions on their own, open PRs and resolve errors <em>while you sleep</em>. I don’t trust AI blindly enough for that.</p>

<p>A few things I’ve picked up along the way which are still valid today:</p>

<ul>
  <li>It’s garbage in, garbage out, in a very specific sense: vague prompts will produce vague code. Writing better prompts is half the job now, maybe more.</li>
  <li>You really do have to stay in the loop as agents aren’t trustworthy enough yet to be left alone. Someone has to pump the brakes when they start going in circles or cheerfully reinforcing a bad pattern, and that someone is me, the human in the loop.</li>
  <li>Back when I was on API-based billing through OpenRouter and Kilo Code, there was a weird thing I kept running into: the providers reward fast follow-up responses because of prompt caching. Respond within the 5-minute cache window and you pay a fraction of the token price. I am not very good at that, so I was probably losing money. Part of why I switched to subscriptions…</li>
</ul>

<p>For my ADD brain, all of this has been a welcome boost. So many new toys! Every week there’s a new MCP, a new model, a new workflow. As you can see, this was a pretty short period since I discovered agentic AI, but it was packed with changes. I’m not sure how sustainable it is for my attention span, but while it lasts I’m having a lot of fun.</p>

<p>Oh, also I’m pretty sure the <em>financial</em> AI bubble will burst, I just hope this doesn’t mean that they will take away my toys. I’m way too dependent at this point…</p>

<p><strong>P.S.</strong> While writing this very article, we (as in me and my friend Claude) inaugurated a <a href="https://github.com/janosrusiczki/rusiczki.net/blob/master/_temp/captains-log.md">captain’s log</a> — a blog in the blog in which we’ll chronicle all kinds of funny / interesting moments encountered during our editing adventures.</p>]]></content><author><name>János Rusiczki</name></author><category term="technical" /><category term="english" /><summary type="html"><![CDATA[A retrospective on my journey from Copilot autocomplete in 2022 to herding AI coding agents full-time in 2026.]]></summary></entry><entry><title type="html">Pensionarea mult prea întârziată a popup-urilor</title><link href="https://www.rusiczki.net/2026/04/11/pensionarea-mult-prea-intarziata-a-popup-urilor/" rel="alternate" type="text/html" title="Pensionarea mult prea întârziată a popup-urilor" /><published>2026-04-11T11:52:33+00:00</published><updated>2026-04-11T11:52:33+00:00</updated><id>https://www.rusiczki.net/2026/04/11/pensionarea-mult-prea-intarziata-a-popup-urilor</id><content type="html" xml:base="https://www.rusiczki.net/2026/04/11/pensionarea-mult-prea-intarziata-a-popup-urilor/"><![CDATA[<p>Continuând <a href="https://www.rusiczki.net/2026/04/09/alte-mici-modificari-adio-disqus/">curățenia prin curtea blogului</a> pornită alaltăieri prin despărțirea de Disqus, m-am uitat azi la o chestie care mă sâcâia de demult: popup-urile vechi. Vă mai amintiți ce erau alea? Pe vremea când blogul rula pe Movable Type (adică <a href="https://www.rusiczki.net/2009/04/02/keeping-up-with-the-times/">până în aprilie 2009</a>), pozele mai mari le afișam în popup-uri care se deschideau după un click pe un thumbnail sau link. Motivația inițială a fost evident lățimea de bandă, mi-am început blogul de pe dial-up, și îmi doream să se încarce rapid nu să stea să tragă poze enorme (pentru acele vremuri). Elegant pentru 2002, jalnic pentru 2026. Popup-urile nu mai funcționează pe telefoane, iar pe desktop se deschid ca un simplu tab. Oricum au fost abuzate și au căzut din grațiile internauților (bleah, nu-mi place acest cuvânt) destul de repede, m-am documentat și am aflat că prin 2004 chiar și Internet Explorer 6 a primit un popup blocker nativ. Ce să mai spun de Firefox care avea așa ceva de doi ani, Opera de patru(!!!), iar utilizatorii învățau să le blocheze din reflex dar eu continuam totuși, inocent, să le folosesc pentru pozele mele.</p>

<p>L-am rugat pe <a href="https://claude.ai/">Claude</a> să-mi facă o căutare și a scos la iveală 28 de articole cu astfel de popup-uri, împreună cu 50 de pagini de “ambalaj” și 32 de thumbnail-uri care acum nu mai au niciun rost. Le-am curățat pe toate: thumbnail-urile au fost înlocuite cu pozele mari afișate direct în articol, iar linkurile text deschid pozele într-un lightbox modern. Pe server am câștigat probabil 2 mega de spațiu în total, dar faptul că-mi știu articolele aranjate îmi dă o liniște sufletească supremă.</p>

<p>Amuzant mi se pare că popup-urile au supraviețuit și <a href="https://www.rusiczki.net/2009/04/02/keeping-up-with-the-times/">migrării de la Movable Type la Wordpress</a> în 2009, și <a href="https://www.rusiczki.net/2018/01/08/a-new-blogging-engine/">celei de la Wordpress la Jekyll în 2018</a>, deși cu ocazia asta am scris și rulat niște scripturi de curățat care reparau link-uri moarte, formatarea stricată și mutau asset-urile pe noul “CDN” de săraci (adică un subdomeniu separat). Cu ocazia acestei mutări am făcut un inventar al fișierelor, și chiar mai curățasem câteva manual pe parcurs, dar e o muncă repetitivă și plictisitoare, și după maxim 3-4 articole reparate cedam de fiecare dată. Acum cu Claude treaba a mers șnur.</p>

<p>Și dacă tot v-am reamintit de popup-uri și am recitit toate articolele reparate, hai să facem un mic tur de nostalgie.</p>

<p>În <a href="https://www.rusiczki.net/2004/05/05/t-six-ten/">T Six Ten</a> povestesc trecerea la Sony Ericsson T610, un telefon stil baton (ah, vremurile când telefoanele nu erau doar niște palete negre) cu ecran cu 65.000 de culori, cameră, Bluetooth, infraroșu și fabuloșii 2 MB de memorie disponibili pentru poze, teme și jocuri. Citesc acum și mă amuz cum mă lăudam că pot trimite email-uri prin GPRS la doar 2 cenți bucata, mult mai ieftin decât un SMS. Am fost un adevărat early adopter.</p>

<p><a href="https://www.rusiczki.net/2003/12/06/need-for-speed-underground/">Need for Speed: Underground</a> și <a href="https://www.rusiczki.net/2004/08/26/you-know-youve-been/">You know you’ve been…</a> sunt două articole din zilele în care pierderea de timp în fața calculatorului era o artă (nu că acum nu fac asta câteodată). În primul mă plâng că m-a durut degetul mijlociu de la tasta de accelerație, iar în al doilea confirm că pe Transport Tycoon l-am pornit la ora 2 după masă ca “să văd ceva” și la 8 seara am ieșit din el și mă uitam la desktop-ul Windows întrebându-mă unde dispăruse ziua. Cu jocul ăsta am repetat această experiență de pierdut total noțiunea timpului de câteva ori.</p>

<p><a href="https://www.rusiczki.net/2004/08/27/palit-daytona-geforce-4-ti-4200-2002-2004/">Palit Daytona Geforce 4 Ti 4200 (2002–2004)</a> e un mic obituar pentru placa video care și-a dat duhul în vara lui 2004 încercând să ruleze Doom 3. Update-ul din final (“de fapt, uitasem să conectez ventilatorul”) încoronează toată drama. Această placă a revenit de altfel pe paginile blogului după mai mult de 20 de ani în prima parte a cronicilor calculatoricești <a href="https://www.rusiczki.net/2025/03/22/cronici-calculatoricesti-primele-pcuri-si-doua-macuri/">despre PC-urile mele</a>.</p>

<p>Două articole publicate la aproape un an distanță, <a href="https://www.rusiczki.net/2003/01/06/its-beginning-to-look-good/">It’s beginning to look good!</a> (ianuarie 2003) și <a href="https://www.rusiczki.net/2004/01/20/i-wanted-it-here-it-is/">I wanted it? Here it is!</a> (ianuarie 2004), mă surprind implorând cerul să ningă ca să pot să mă dau cu snowboard-ul. <em>“Please please please. If only a week of boarding. I’ll be there. Day by day. 6 hours. As much as I can. Just a little snow. Pleeease!”</em> Nu s-a schimbat mare lucru de atunci, doar că acuma nu mă bucur atât de tare de zăpadă că știu că trebuie să dau și la lopată. Pe vremea aia, neavând permis eram limitat la pârtiile din proximitatea micuțului meu oraș, astfel dacă voiam să mă dau, trebuia să ningă <em>în oraș</em>.</p>

<p>Și ca să rămânem tot la zăpadă și dat, în <a href="https://www.rusiczki.net/2004/02/21/snowboarding-trip/">Snowboarding trip</a> descriu prima mea zi serioasă pe placă pe pârtia Icoana de la Cavnic, inclusiv cățăratul pe jos după ce am căzut de pe ski-liftul care <em>“was designed for them (skiers) not boarders”</em>. Demn de menționat este și că biletul de teleski costa 150.000 de lei pentru zece urcări plus două bonus, numai că era dinainte de denominare, deci vreo 15 lei pe 12 urcări - azi sună aproape absurd. Teleski-ul respectiv nici nu mai există, a fost înlocuit recent (după vreo 20 de ani) cu un telescaun decent. <a href="https://www.rusiczki.net/2007/02/08/snowboard-report-for-the-first-weekend-of-february-2007/">Trei ani mai târziu</a> revin în aceeași zonă, de data asta pe Pârtiile Roata, cu un ton ceva mai așezat și mai puține căzături spectaculoase.</p>

<p>Cronica TM04Base, festivalul de muzică electronică de la Timișoara, s-a întins pe trei articole (<a href="https://www.rusiczki.net/2004/10/19/another-edition-is-over-part-1/">partea 1</a>, <a href="https://www.rusiczki.net/2004/10/28/another-edition-is-over-the-late-part-2/">partea 2</a>, <a href="https://www.rusiczki.net/2004/11/01/another-edition-is-over-the-not-so-late-part-3/">partea 3</a>) în care descriam minut cu minut seturile lui Deekline, The Ragga Twins, Jay Cunning, D-Bridge și trupei Suie Paparude. Drum’n’bass și breakbeat din România de acum 20 de ani, surprinse de un János de 25 de ani, după ceea ce a fost, după câte îmi amintesc, un efort considerabil depus pentru a scrie această trilogie de articole. Partea întâia e doar text și nu s-a atins procesul de curățenie de ea, am pus-o aici pentru imaginea completă.</p>

<p>Lupta cu spam-ul e un fir roșu prin toată arhiva mea. În <a href="https://www.rusiczki.net/2003/03/22/less-spam-a-better-life/">Less spam. A better life.</a> descopăr SpamAssassin prin SAProxy pentru Windows și sunt amuzat că softul notează fiecare email cu un “punctaj de spam”. Doi ani mai târziu, în <a href="https://www.rusiczki.net/2005/02/12/google-ads-and-even-more-spam/">Google ads and even more spam</a>, mă bucur că plug-in-ul MT-Blacklist blocase deja peste 1000 de comentarii spam, dar mă plâng că spammerii migraseră între timp la referer log spam, tot cu poker, viagra, cialis și cazinouri. Mereu aceleași bătălii.</p>

<p>Mai e și o capsulă de timp din martie 2003: <a href="https://www.rusiczki.net/2003/03/23/saddam-and-bush-irc-ing/">Saddam and Bush IRC-ing</a>, trei rânduri publicate exact când începea cel de-al doilea Războiul din Golf. În loc de comentarii politice, am pus un <em>screenshot</em> cu Bush și Saddam conversând pe IRC. În 2003 pe Internet încă se mai făcea mișto de războaie prin analogii cu IRC.</p>

<p>Dacă vreți, puteți să vă plimbați prin arhivă și să apăsați pe poze - acuma se deschid decent, fără să mai sară vreo ferestruică de pe vremea Windows XP.</p>

<hr />

<p>În încheiere iată lista completă de articole modificate (mulțumesc Claude):</p>

<p><strong>2002</strong></p>

<ul>
  <li><a href="https://www.rusiczki.net/2002/12/23/3-2-1/">3… 2… 1…</a></li>
  <li><a href="https://www.rusiczki.net/2002/12/24/yuppeee-its-christmas/">Yuppeee! It’s Christmas!</a></li>
</ul>

<p><strong>2003</strong></p>

<ul>
  <li><a href="https://www.rusiczki.net/2003/01/06/its-beginning-to-look-good/">It’s beginning to look good!</a></li>
  <li><a href="https://www.rusiczki.net/2003/01/07/huh/">Huh!?</a></li>
  <li><a href="https://www.rusiczki.net/2003/01/09/good-cats/">Good cats</a></li>
  <li><a href="https://www.rusiczki.net/2003/02/07/fun-2/">Fun!</a></li>
  <li><a href="https://www.rusiczki.net/2003/03/22/less-spam-a-better-life/">Less spam. A better life.</a></li>
  <li><a href="https://www.rusiczki.net/2003/03/23/saddam-and-bush-irc-ing/">Saddam and Bush IRC-ing</a></li>
  <li><a href="https://www.rusiczki.net/2003/04/23/my-next-gadget/">My next gadget</a></li>
  <li><a href="https://www.rusiczki.net/2003/10/08/advance-deal/">Advance deal</a></li>
  <li><a href="https://www.rusiczki.net/2003/12/06/need-for-speed-underground/">Need for Speed: Underground</a></li>
</ul>

<p><strong>2004</strong></p>

<ul>
  <li><a href="https://www.rusiczki.net/2004/01/20/i-wanted-it-here-it-is/">I wanted it? Here it is!</a></li>
  <li><a href="https://www.rusiczki.net/2004/02/09/more-advantages-of-the-playstation-2/">More advantages of the PlayStation 2</a></li>
  <li><a href="https://www.rusiczki.net/2004/02/21/snowboarding-trip/">Snowboarding trip</a></li>
  <li><a href="https://www.rusiczki.net/2004/04/01/brief/">Brief</a></li>
  <li><a href="https://www.rusiczki.net/2004/05/05/t-six-ten/">T Six Ten</a></li>
  <li><a href="https://www.rusiczki.net/2004/08/26/you-know-youve-been/">You know you’ve been…</a></li>
  <li><a href="https://www.rusiczki.net/2004/08/27/palit-daytona-geforce-4-ti-4200-2002-2004/">Palit Daytona Geforce 4 Ti 4200 (2002 - 2004)</a></li>
  <li><a href="https://www.rusiczki.net/2004/10/28/another-edition-is-over-the-late-part-2/">Another edition is over - The late part 2</a></li>
  <li><a href="https://www.rusiczki.net/2004/11/01/another-edition-is-over-the-not-so-late-part-3/">Another edition is over - The not so late part 3</a></li>
</ul>

<p><strong>2005</strong></p>

<ul>
  <li><a href="https://www.rusiczki.net/2005/02/03/froogle-sells-my-stuff-without-my-consent/">Froogle sells my stuff without my consent</a></li>
  <li><a href="https://www.rusiczki.net/2005/02/12/google-ads-and-even-more-spam/">Google ads and even more spam</a></li>
</ul>

<p><strong>2006</strong></p>

<ul>
  <li><a href="https://www.rusiczki.net/2006/09/27/nokia-6070-usb-infrared-dongle-now-best-buddies/">Nokia 6070 - USB infrared dongle - Now best buddies</a></li>
</ul>

<p><strong>2007</strong></p>

<ul>
  <li><a href="https://www.rusiczki.net/2007/01/16/ego-search-this/">Ego search this!</a></li>
  <li><a href="https://www.rusiczki.net/2007/02/08/snowboard-report-for-the-first-weekend-of-february-2007/">Snow(board) report for the first weekend of February 2007</a></li>
  <li><a href="https://www.rusiczki.net/2007/06/16/act-fast/">Act fast!</a></li>
  <li><a href="https://www.rusiczki.net/2007/11/06/yahoo-mail-booboo/">Yahoo! Mail booboo</a></li>
</ul>

<p><strong>2008</strong></p>

<ul>
  <li><a href="https://www.rusiczki.net/2008/04/17/29/">29</a></li>
</ul>]]></content><author><name>János Rusiczki</name></author><category term="blog history" /><category term="technical" /><category term="română" /><summary type="html"><![CDATA[Am curățat 28 de articole vechi care încă mai aveau popup-uri JavaScript rămase din era Movable Type. Bonus: tur nostalgic inclus!]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://content.rusiczki.net/2026/04/pensionarea-popup-urilor.jpg" /><media:content medium="image" url="https://content.rusiczki.net/2026/04/pensionarea-popup-urilor.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Alte mici modificări (Adio Disqus!)</title><link href="https://www.rusiczki.net/2026/04/09/alte-mici-modificari-adio-disqus/" rel="alternate" type="text/html" title="Alte mici modificări (Adio Disqus!)" /><published>2026-04-09T20:42:21+00:00</published><updated>2026-04-09T20:42:21+00:00</updated><id>https://www.rusiczki.net/2026/04/09/alte-mici-modificari-adio-disqus</id><content type="html" xml:base="https://www.rusiczki.net/2026/04/09/alte-mici-modificari-adio-disqus/"><![CDATA[<p><img src="https://content.rusiczki.net/2026/04/disqus-to-remark42.jpg" alt="De la Disqus la Remark42" title="De la Disqus la Remark42" /></p>

<p>De curând am adăugat niște statistici drăguțe pe <a href="https://www.rusiczki.net/about/#statistics">pagina de About</a> pe lângă numărul total de articole publicate și cuvinte scrise care existau de mai de mult: câți ani au trecut de la primul articol, cât ar dura să citești toată arhiva dintr-un foc, luna cea mai prolifică, pauzele cele mai mari dintre articole și alte lucruri pe care nici nu știam că vreau să le știu până nu mi le-a recomandat <a href="https://claude.ai/">Claudiu</a>. Și cum tot mă apucasem să fac ordine prin curte, am zis să mă ocup și de o chestie care era în to-do de mult: treaba cu Disqus.</p>

<p>Dacă ați citit articolul despre <a href="https://www.rusiczki.net/2023/01/12/mici-ajustari/">micile ajustări</a> de acum câțiva ani, probabil vă mai amintiți o frază aparent banală despre cum Disqus “a fost foarte ușor de adaptat” atunci când am trecut blogul pe dark mode: am intrat în panoul lor de administrare, am bifat o opțiune și gata. Articolul de față pleacă tot de la acea frază, doar că de data asta povestea nu se mai termină cu o bifă, ci cu o despărțire.</p>

<p>Am folosit Disqus ani buni. L-am adoptat pe vremea când motorul blogului era încă Wordpress (am dat peste <a href="https://www.rusiczki.net/2018/01/08/a-new-blogging-engine/">articolul din 2018 despre migrarea la Jekyll</a> și chiar acolo scriu că aveam Disqus integrat cu Wordpress “de mult oricum”). Când am trecut pe Jekyll a devenit și mai util, pentru că pe un site static comentariile sunt (sau erau) o durere de cap: nu ai unde să le stochezi, nu ai cum să le moderezi fără să inventezi un întreg backend. Disqus a fost soluția leneșă (și funcțională!): mi-am făcut cont la ei, am copiat niște JavaScript, și gata: aveam comentarii! Din punctul ăsta de vedere a fost imbatabil.</p>

<p>Sau cel puțin așa credeam. La un moment dat am început să observ că <a href="https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/">uBlock Origin</a> îmi bloca o grămadă de request-uri către tot felul de domenii asociate cu Disqus atunci când încărcam paginile blogului meu. Nu făceam nimic special, doar intram pe un articol, iar contorul de la uBlock se învârtea ca cel de curent când bagi reșoul în priză. “Interesant”, mi-am zis, și am uitat imediat de toată treaba. Apoi, mai recent, după o instalare proaspătă de Firefox, am văzut că <a href="https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/">Privacy Badger</a> bloca <em>întreg formularul</em> Disqus. Tot widget-ul, cap-coadă. Atunci mi-am zis: “hopa, e groasă”. Dacă extensiile mele de privacy au decis că cel mai simplu este să ascundă serviciul cu totul, probabil că nu e de bine…</p>

<p>În timpul redactării prezentului articol am deschis și <a href="https://en.wikipedia.org/wiki/Disqus">articolul de pe Wikipedia despre Disqus</a>, să mă documentez, și am cam rămas cu gura căscată. I-auzi: prin 2017 s-a aflat că o copie a bazei lor de date din 2012 se scursese pe undeva, expunând 17,5 milioane de conturi. O treime din aceste conturi aveau parolele criptate cu SHA-1, un algoritm considerat compromis de prin 2005 încoace. Dacă aș fi fost mai atent la vremea respectivă, probabil că își lua șut imediat. Dar povestea continuă: tot în 2017 a avut loc și vânzarea către o firmă de publicitate și marketing digital, adică pentru cei care nu urmăresc industria e ca și cum popa la care te-ai spovedit și-ar vinde notițele unui ziar de scandal. Iar pe urmă, în 2021, Autoritatea Norvegiană de Protecție a Datelor a anunțat intenția de a amenda Disqus cu 2,5 milioane de euro pentru încălcări ale GDPR, mai exact pentru transferul neautorizat de date către parteneri din publicitate. De fapt, Wikipedia descrie serviciul ca fiind <em>“a web bug which tracks a user’s activities, even when they are not logged in, across different sites”</em>. Frumos, ce să zic. Nu e de mirare că nu prea am mai văzut widget-ul lor de comentarii pe alte site-uri de o bună bucată de vreme.</p>

<p>Acum câțiva ani, când primele îndoieli începeau să-și facă loc, am făcut o primă încercare de migrare spre <a href="https://staticman.net/">Staticman</a>, un proiect simpatic și foarte nerdy care primea un POST cu un comentariu, îl transforma într-un fișier Markdown și îl dădea commit direct în repo-ul blogului. Era exact ce-mi trebuia: comentariile blogului meu în propriul meu repozitoriu git. Am pregătit un fișier de configurare (staticman.yml), am scris un formular HTML, am configurat o mică instanță de Heroku, parcă am și încercat un comentariu sau două, și apoi în dulcele meu stil clasic m-am împotmolit. Nu mai știu de ce nu am dus treaba la capăt, cert este că Heroku nu mai are ofertă gratuită de ceva vreme, iar proiectul Staticman a fost dat uitării. Codul meu a rămas și el uitat în repozitoriu…</p>

<p>Când m-am pus iarăși pe treabă, l-am rugat pe Claude să-mi caute alternative moderne pentru un sistem de comentarii pe un site generat static. A înșirat câteva opțiuni, și am <strong>remarcat</strong> imediat <a href="https://remark42.com/">Remark42</a>: un proiect activ (neabandonat) scris în Go, self-hosted și cu un script de import pentru Disqus. Fiindcă rulez oricum containere Docker pe VPS-ul meu <a href="https://www.hetzner.com/">Hetzner</a>, l-am instalat pe subdomeniul <em>comments.rusiczki.net</em> în nici o oră.</p>

<p>Migrarea comentariilor a mers mai bine decât îmi imaginam. Export din panoul Disqus (primești un email cu un link spre un .xml.gz), upload, o comandă <strong>docker exec</strong> și gata! Comentariile vechi au apărut sub articolele lor. Dacă vă mai amintiți de vreun comentariu mai vechi pe care l-ați lăsat pe aici prin arhivă, vă invit să-l verificați, ar trebui să fie acolo.</p>

<p>Cu ocazia asta am șters și scheletul Staticman orfan din vechea tentativă: formularul comentat, fișierul staticman.yml, include-urile neutilizate. Și dacă tot eram pe val, am șters și directorul _disqus/ cu exportul din 2021 și un script Ruby pe jumătate scris… O altă ciornă care stătea de ani buni în repo.</p>

<p>Și cum acesta e primul articol publicat după migrare, dacă vreți să încercați Remark42, defilați în jos și lăsați un comentariu. Promit că nimeni nu vă va mai urmări pe aici cu pixeli invizibili și alte șmecherii slinoase.</p>]]></content><author><name>János Rusiczki</name></author><category term="blog history" /><category term="technical" /><category term="română" /><summary type="html"><![CDATA[După ani de "merge și așa", am mutat comentariile blogului de pe Disqus pe o instanță Remark42 găzduită de mine.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://content.rusiczki.net/2026/04/disqus-to-remark42.jpg" /><media:content medium="image" url="https://content.rusiczki.net/2026/04/disqus-to-remark42.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Remember when you got an SLA for your money?</title><link href="https://www.rusiczki.net/2026/04/07/remember-when-you-got-an-sla-for-your-money/" rel="alternate" type="text/html" title="Remember when you got an SLA for your money?" /><published>2026-04-07T11:28:00+00:00</published><updated>2026-04-07T11:28:00+00:00</updated><id>https://www.rusiczki.net/2026/04/07/remember-when-you-got-an-sla-for-your-money</id><content type="html" xml:base="https://www.rusiczki.net/2026/04/07/remember-when-you-got-an-sla-for-your-money/"><![CDATA[<p>Remember when paying for a service actually got you an SLA? I mean an actual contract. The kind a company would honor when things broke, with money on the line if they didn’t. Back in 2008 I leased a dedicated server from The Planet. Yes, that Planet, from before cloud pricing turned into a personality disorder. They promised uptime, support, and accountability, and astonishingly, those promises meant something.</p>

<p>One month into my contract, something literally <a href="/2008/06/04/boom/">exploded in their H1 datacenter in Houston</a>. Electrical gear shorted, a fire broke out, and three walls of the equipment room came down. My server was on the first floor, right where it happened, and went offline for a few days. There was no cheerful status page telling me everything was fine, no glossy dashboard pretending nothing had happened, no corporate poetry about “degraded performance.” Just frequent, honest updates explaining what was on fire and what they were doing about it. At some point they emailed customers asking if we wanted our servers moved to their other Houston datacenter. I said yes, and mine ended up in a truck with around 500 others, driven across town.</p>

<p>And yet, when the dust settled, they did something that would feel almost surreal today: they owned it. I got an apology and <a href="/2008/07/02/awesome-is-spelled-with-the-planet-in-the-middle/">a full month of free service</a>. Not a coupon. Not a “we appreciate your patience” email. Not a 12-page explanation of why this was technically within expected bounds. A full month, free, for a few days of downtime. The SLA wasn’t there for decoration. It was a promise with consequences.</p>

<p>Now I pay for AI services that can disappear for what feels like a full day every month. Take Claude. Brilliant when it works, unavailable when it isn’t, and apparently powered by hope. The official status page, of course, is a masterpiece of corporate serenity, all green and operational no matter what’s actually happening. Meanwhile X (formerly Twitter, thanks Elon) and Downdetector are having a very different conversation.</p>

<p>The funniest part is the billing. The service can be down, the status page can be lying, and the user community can be collectively setting itself on fire, but the subscription charge still arrives with breathtaking precision. The card gets billed on the exact day and time, no excuses, no delays, no outages in the payment pipeline. Amazing how the only system that never misses uptime is the one that takes your money.</p>

<p>And here’s the kicker: paying customers don’t even get an SLA. Claude Pro is $20 a month. Claude Max runs to $200. Anthropic’s terms of service spell it out: payments are non-refundable, with no uptime guarantee and no compensation policy attached. When <a href="https://github.com/anthropics/claude-code/issues/33260">Pro subscribers asked for one after a string of outages</a>, the answer was a polite version of “there isn’t one.” The Planet refunded a full month for a few days of downtime back in 2008. In 2026, one of the most valuable AI companies in the world has decided that “we’ll try our best” is the entire contract.</p>

<p>We used to have SLAs that meant something. Now we have status pages that perform optimism, billing systems that never sleep, and terms of service that promise you nothing. The old world was at least honest enough to admit when it had blown up and pay you back for the trouble. The new one keeps the green lights on, charges your card, and hopes you won’t notice the smoke.</p>

<p><strong>Co-Authored-By</strong>: Claude &lt;noreply@anthropic.com&gt; - Yep, the very same. It went down once while we were writing this, which felt fitting. I will not be receiving a refund.</p>

<hr />

<p>P.S. After I was done writing this, I asked Claude to search for details about the incident, thinking it had been forgotten in time. Quite the opposite!</p>

<p>The 2008 explosion at The Planet’s H1 facility in Houston was, apparently, a big enough deal to land on <a href="https://tech.slashdot.org/story/08/06/01/1715247/explosion-at-theplanet-datacenter-drops-9000-servers">Slashdot</a>, <a href="https://www.theregister.com/2008/06/01/the_planet_houston_data_center_fire/">The Register</a>, <a href="https://www.datacenterknowledge.com/outages/explosion-at-the-planet-causes-major-outage">Data Center Knowledge</a>, and even <a href="https://isc.sans.edu/forums/diary/The+Planet+outage+what+can+we+all+learn+from+it/4504/">SANS</a>. A few details I either forgot or never knew at the time:</p>

<ul>
  <li>The explosion happened on Saturday, May 31, 2008, at 4:55pm CDT. I was three weeks into my contract, not one month. Close enough.</li>
  <li>It took down 9,000 customer servers in total. About 3,000 of them, including mine, were on the first floor and took the longest to come back.</li>
  <li>A generator failure early Tuesday morning knocked another 1,500 servers back offline mid-recovery, which lines up exactly with the “I cheered, then it went down again” bit from my <a href="/2008/06/04/boom/">original 2008 post</a>.</li>
  <li>Best detail of all: this was the second time that same Houston facility had an electrical explosion. A transformer blew there back in June 2003, when the company was still called Rackshack.</li>
</ul>

<p>The Web Hosting Talk thread covering it was titled “<a href="https://www.webhostingtalk.com/showthread.php?t=698809">Data Center Explosion, Fire or FBI Bust?</a>”, which is pretty much peak 2008 internet.</p>

<hr />

<p>P.S.2 Since the description of this blog still calls me an <em>incurable nostalgic</em>, here is the full corporate lineage of the company I signed up with in 2008. The arc from Rackshack to IBM Cloud is something else:</p>

<ul>
  <li>1998: <a href="https://www.netcraft.com/blog/interview_ev1servers_ceo_robert_marsh/">Robert Marsh</a> founds Everyones Internet (EV1) in Houston, originally as a dial-up ISP.</li>
  <li>2001: EV1 launches a dedicated server division called <a href="https://news.ycombinator.com/item?id=16903774">Rackshack.net</a>. This was the brand that owned the Houston facility when its first transformer explosion happened, in June 2003.</li>
  <li>A bit later, Rackshack rebrands to EV1 Servers, reportedly because the racks weren’t in a shack anymore once they had built proper datacenters.</li>
  <li>May 2006: EV1 Servers merges with <a href="https://en.wikipedia.org/wiki/The_Planet_Internet_Services">The Planet</a>, a separate Texas dedicated hosting company founded in 1998 by Peter Pathos. GI Partners, the private equity firm, owned both, and the combined company traded as The Planet.</li>
  <li>May 31, 2008: The H1 explosion happens at the old EV1 / Rackshack datacenter, which is exactly why Wikipedia calls it “an EV1 Servers legacy datacenter.”</li>
  <li>August 2010: GI Partners acquires SoftLayer too.</li>
  <li>November 16, 2010: The Planet officially <a href="https://techcrunch.com/2010/11/08/the-planet-softlayer/">rebrands to SoftLayer</a>.</li>
  <li>June 4, 2013: <a href="https://www.bloomberg.com/news/articles/2013-06-04/ibm-to-acquire-cloud-computing-provider-softlayer-technologies">IBM acquires SoftLayer</a> for an estimated $2 billion, which becomes the basis for IBM Cloud.</li>
  <li>Later: The SoftLayer brand is retired entirely, and the operation becomes part of IBM Cloud Infrastructure.</li>
</ul>

<p>So the company I signed up with as The Planet in 2008 is now part of IBM. Somewhere between Rackshack and IBM Cloud is an entire era of how the internet was hosted.</p>

<p>As for me, I left SoftLayer for Hetzner on November 2, 2012. Funnily enough, I had first emailed Hetzner about it back in August 2011, asking whether they offered a DNS service before I committed to the move. They wrote back the same day saying yes. I then sat on it for fifteen months before actually pulling the trigger. Some things never change.</p>]]></content><author><name>János Rusiczki</name></author><category term="technical" /><category term="rant" /><category term="blog history" /><category term="english" /><summary type="html"><![CDATA[In 2008, a datacenter exploded and I got a full month of free hosting. In 2026, my AI subscription terms say payments are non-refundable, full stop.]]></summary></entry><entry><title type="html">Svbony.com - Europe Storefront Review - Not what I expected</title><link href="https://www.rusiczki.net/2026/04/07/svbony-europe-review/" rel="alternate" type="text/html" title="Svbony.com - Europe Storefront Review - Not what I expected" /><published>2026-04-07T09:00:00+00:00</published><updated>2026-04-07T09:00:00+00:00</updated><id>https://www.rusiczki.net/2026/04/07/svbony-europe-review</id><content type="html" xml:base="https://www.rusiczki.net/2026/04/07/svbony-europe-review/"><![CDATA[<p>Let me start with a clarification: <strong>in this article I’m referring to the svbony.com site</strong>. This is different from SvBony Europe which operates at <a href="https://svbony.eu/">svbony.eu</a>. I have also updated the title of the review accordingly.</p>

<hr />

<p>A few notes on what happened when I tried to order an SVBONY SV605CC astronomy camera from SVBONY’s official European store. Short version: I’m disappointed, and I figure other buyers might want to know what they could be walking into.</p>

<p><em>Edit, a few hours later: things got worse while I was writing this. See the <a href="#updates">Updates</a> at the bottom.</em></p>

<p><em>Edit, two months later: the camera finally arrived. See the <a href="#final-update">final update</a> at the bottom.</em></p>

<h2 id="the-purchase">The purchase</h2>

<p>I placed the order on March 31, 2026 for the camera bundled with a filter, total €650, which by any measure is not pocket change. The product page said “in stock” with an estimated delivery of 8 - 12 business days. I live in Romania, and I specifically went with the EU store instead of AliExpress (or whichever other channel) because I wanted a quick, painless delivery from inside Europe. Which is, you know, the whole point of having an EU storefront in the first place.</p>

<h2 id="the-shipping-illusion">The shipping illusion</h2>

<p>The next day, April 1 (yeah, April Fools’, I know), around 10 in the morning, I got a DHL tracking number. Great, I thought, that was fast. Except it wasn’t.</p>

<p>The tracking status read: <em>“The instruction data for this shipment have been provided by the sender to DHL electronically.”</em> Translation for the uninitiated: SVBONY told DHL a package would be coming, but hadn’t actually handed anything over yet.</p>

<p>Today is April 7. A full week after I placed the order (five business days, so technically still inside the 8-12 day window), the status is exactly the same. No movement. No updates. Nothing. And to be clear, I’m fine with the delivery window itself. What bothers me is that “in stock” plus an almost instantly generated tracking number made it look like something was on its way, when in reality nothing has moved at all.</p>

<h2 id="what-in-stock-actually-means">What “in stock” actually means</h2>

<p>I’ve seen this pattern before with other orders from Chinese brands running European storefronts. The item listed as “in stock”, a label gets generated fast, and then… silence. Because the product was never actually sitting in a European warehouse to begin with.</p>

<p>The “in stock” label seems to be cosmetic. It doesn’t appear to be tied to any real inventory data, and the tracking number is mostly there to make the order page feel reassuring. False advertising.</p>

<h2 id="why-this-matters">Why this matters</h2>

<p>We’re at five business days, well inside the estimate, so this isn’t really a “where is my package” rant. It’s a “please don’t tell me my package exists when it doesn’t” rant. If something says “in stock”, I assume it’s sitting on a shelf somewhere in Europe, ready to go out. If a DHL tracking number shows up in my inbox, I assume a real package has been logged into a real system. Neither of those things is true in this case.</p>

<p>For astrophotography this is extra annoying. Clear sky windows are short and unpredictable, and what gear you can use depends on what’s actually in your hands at any given moment. I planned imaging sessions around this delivery (I’d even taken some unrelated time off from work, and figured it would line up nicely with the camera arriving), and now I’m just sitting here with nothing.</p>

<p>If the page had said “ships in 2-3 weeks” I would have shrugged and either ordered anyway or gone elsewhere. That’s really the only thing I’m asking for.</p>

<h2 id="my-advice-if-youre-considering-svbonys-eu-store">My advice if you’re considering SVBONY’s EU store</h2>

<ul>
  <li>Don’t believe the “in stock” label. It might just be a label.</li>
  <li>A DHL tracking number doesn’t mean your order has shipped, check the actual movement status before you get excited.</li>
  <li>There are established European astronomy shops like Teleskop-Express or Astroshop. You’ll pay a bit more, but you’ll get real stock and real shipping.</li>
  <li>If you still want to order from SVBONY EU, do so expecting delays and have a plan B for the gear you actually need next.</li>
</ul>

<h2 id="updates">Updates</h2>

<p><strong>Update, April 7, around noon</strong>: Well, just my luck. I was in the middle of writing this very post when I got an email from DHL:</p>

<p><img src="https://content.rusiczki.net/2026/dhl-package-update.png" alt="DHL package update email" /></p>

<p>So it seems that the package has been handed over to DHL after all, it is being prepared for shipment to Romania and should arrive in 3-4 business days. For a brief moment I wondered if I should even bother publishing this post anymore, but then…</p>

<p><strong>Update, April 7, a bit later</strong>: Then SVBONY support actually got back to me. Here’s what they said:</p>

<blockquote>
  <p>Dear customer,</p>

  <p>Sorry for keeping you waiting.
For sv605cc camera, due to the current chip shortage, our product department has indicated that the next shipment will arrive at the end of April or the beginning of May.</p>

  <p>Other products, it is on the way. And now the tracking info has been updated, I think you will receive it in 3-5 business days.</p>
</blockquote>

<p>So the DHL package is not the camera. It’s the SV220 dual-band H-alpha/OIII narrowband filter and the SV226 filter drawer from the bundle. Completely useless on their own, given that the camera I was actually waiting for, won’t ship until the end of April or the beginning of May. So I was right, the “in stock” label is indeed a lie.</p>

<p>Also, while I’m writing this, the SV605CC is <em>still</em> listed as “In Stock” on the SVBONY website. Screenshot:</p>

<p><img src="https://content.rusiczki.net/2026/svbony-still-in-stock.png" alt="SV605CC still listed as &quot;In Stock&quot; on SVBONY's website on April 7, 2026" /></p>

<p>Slimy!</p>

<p><strong>Update, May 28, 2026</strong>: Almost two months since I placed the order. Camera still hasn’t shipped. I won’t try to summarize every email I’ve exchanged with their customer service; the short version is that each one pushed the promised date further back. Beginning of May. Then half of May. Then May 18. Then May 21. Then “it’s shipped” on May 22.</p>

<p>On May 25 I got an official “Your order has been shipped” email with a tracking number. I’ve seen this movie before. Checked the tracker today: the label was created on May 23. And that’s it, that’s all the tracking information. The DHL tracking appears to originate from Germany, so it’s either in transit from China to Germany, or they just created the label to shut me up and nothing has actually moved. I can’t tell.</p>

<p>They offered me a refund at one point, blaming chip prices and stricter quality control. I turned it down. I still want the camera, and a refund would mean they got to hold 650 of my euros for two months and walk away with no consequences. Anyway, starting to feel like a mistake. I’ve since spotted a much better secondhand deal on the ZWO equivalent, but I didn’t have the cash at hand…</p>

<p>I’m on the internet since 2001 and this is one of the worst online shopping experiences of my life, if not the worst. For a product listed as “In Stock” at the end of March.</p>

<p><strong>Update, June 2, 2026</strong>: Yesterday I received a comment to this article and today I added a clarification note right at the start of the article. This is the page where I ordered the camera from: www.svbony.com/products/sv605cc-camera and I titled my review initially as “SVBONY Europe Review” because on svbony.com the currency selector only allows me to chose from EUR and GBP and at the bottom of the page it says Europe… Oh and this morning, DHL got the package in Germany and it started moving towards Romania. I’ll add a final update when I receive the camera.</p>

<p><span id="final-update"></span></p>

<p><strong>Update, June 5, 2026 — the camera arrived</strong>: It’s here. Last Friday, more than two months after I ordered something that was supposedly “In Stock”, the SV605CC finally showed up at my door. I plugged it in, it works, and I have no complaints about the camera itself. But two months for an in-stock item shipping from “Europe” is absurd, and I stand by every word above. The “In Stock” label meant nothing, and neither did any of the tracking numbers they sent me along the way.</p>

<div class="photo-grid-2">
  <p><a href="https://content.rusiczki.net/2026/06/20260605-131332.jpg" title="SV605CC in box (plus the power supply for cooling it in a box below)" class="glightbox"><img src="https://content.rusiczki.net/2026/06/20260605-131332-bigthumb.jpg" alt="SV605CC in box (plus the power supply for cooling it in a box below)" /></a></p>

  <p><a href="https://content.rusiczki.net/2026/06/20260605-131522.jpg" title="SV605CC astrophotography camera (plus the power supply for cooling it in a box below)" class="glightbox"><img src="https://content.rusiczki.net/2026/06/20260605-131522-bigthumb.jpg" alt="SV605CC astrophotography camera (plus the power supply for cooling it in a box below)" /></a></p>
</div>]]></content><author><name>János Rusiczki</name></author><category term="review" /><category term="astronomy" /><category term="astrophotography" /><category term="english" /><summary type="html"><![CDATA[I ordered an SVBONY camera listed as "In Stock" and it took more than two months to arrive. Here's the full saga, from the fake tracking number to the chip-shortage excuses, and why you shouldn't trust that "In Stock" label.]]></summary></entry><entry><title type="html">How to deploy your static sites with Kamal</title><link href="https://www.rusiczki.net/2025/11/20/how-to-deploy-your-static-files-with-kamal/" rel="alternate" type="text/html" title="How to deploy your static sites with Kamal" /><published>2025-11-20T15:35:00+00:00</published><updated>2025-11-20T15:35:00+00:00</updated><id>https://www.rusiczki.net/2025/11/20/how-to-deploy-your-static-files-with-kamal</id><content type="html" xml:base="https://www.rusiczki.net/2025/11/20/how-to-deploy-your-static-files-with-kamal/"><![CDATA[<p>A while ago I switched <a href="https://photos.rusiczki.net">my photo app</a>’s deployment process to <a href="https://kamal-deploy.org/">Kamal</a>. This was long overdue because I’ve been struggling with concurrent Ruby versions and <a href="https://www.phusionpassenger.com/">Passenger</a> on my previous VPS and, <em>come on!</em>, almost everyone was doing containerized deploys for a long time now. However, I was not able to convince myself to learn <a href="https://kubernetes.io/">Kubernetes</a>, not even its <a href="https://minikube.sigs.k8s.io/docs/">minikube</a> variant so I was very glad when I learned about Kamal. The switchover went smoothly, my problems were solved, and I’ve been happily deploying <a href="https://github.com/photonia-io/photonia">Photonia</a> to a brand-new <a href="https://www.hetzner.com/">Hetzner</a> VPS ever since.</p>

<p>However, the rest of my mostly static sites stayed on the old <a href="https://www.scaleway.com/en/">Scaleway</a> VPS, which remained largely underused while I continued to be billed for it each month. That is until now, when I finally figured out how to deploy these sites with Kamal as well. This article documents the process.</p>

<p><strong>Note before going further</strong>: In this setup, “deployment” refers to managing the Nginx server and its configuration using Kamal and Docker. The actual website files remain on the host system and are served via mounted volumes, so updates to site content do not require rebuilding or redeploying the container. See <a href="https://www.matthewroach.me/static-sites-with-kamal/">Matthew Roach’s article</a> if you want to serve the files from the container and for a much better introduction than mine.</p>

<p>My requirements were:</p>

<ul>
  <li>many small domains and subdomains (virtual hosts) served by the same container;</li>
  <li>a “passthrough” solution, as some of these hosts are serving files which can total in the gigabytes and I don’t want to have them in the image;</li>
  <li>automatic management of Let’s Encrypt certificates - ain’t nobody got time to manage those manually;</li>
  <li>the configuration should all be in once place.</li>
</ul>

<p>My web server of choice was <a href="https://hub.docker.com/_/nginx">Nginx</a>, specifically the <strong>nginx:alpine</strong> Docker variant, which produces an image of around 20 MB. Nobody can complain about storage with something that tiny, even on free container registry tiers.</p>

<p>One snag I ran into was that Kamal’s proxy requires each site to expose an <code class="language-plaintext highlighter-rouge">/up</code> endpoint (which is configurable) for health checks. Since these are static sites, we can safely increase the check interval from the default one second to something like 10 minutes. The only catch is that this endpoint needs to exist in every Nginx <code class="language-plaintext highlighter-rouge">server { ... }</code> block. To somewhat avoid repetition, I put together a small configuration snippet (<em>health-check.conf</em>) that I can reuse across sites:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>location /up {
  return 200 "OK\n";
  add_header Content-Type text/plain;
  access_log off;
}
</code></pre></div></div>

<p>The <em>Dockerfile</em> is as simple as:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>FROM nginx:alpine

COPY health-check.conf /etc/nginx/snippets/
COPY vhosts/*.conf /etc/nginx/conf.d/

EXPOSE 80
</code></pre></div></div>

<p>In the vhosts directory I have files like (<em>vhosts/rusiczki.net.conf</em>):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>server {
  listen 80;
  server_name rusiczki.net;
  return 301 https://www.rusiczki.net$request_uri;
}

server {
  listen 80;
  server_name www.rusiczki.net;
  root /var/www/rusiczki.net;
  index index.html;

  include /etc/nginx/snippets/health-check.conf;
}
</code></pre></div></div>

<p>Or, even simpler (<em>vhosts/clicktrackheart.com.conf</em>):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>server {
  listen 80;
  server_name clicktrackheart.com www.clicktrackheart.com;
  root /var/www/clicktrackheart.com;
  index index.html;

  include /etc/nginx/snippets/health-check.conf;
}
</code></pre></div></div>

<p>Note the way these virtual host definitions include the health check snippet. And finally let’s see the <em>config/deploy.yml</em> file:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>service: nginx-sites

image: &lt;YOUR_REGISTRY_USERNAME&gt;/nginx-sites

servers:
  web:
    - &lt;YOUR_SERVERS_IP&gt;

proxy:
  ssl: true
  healthcheck:
    interval: 600
  hosts:
    - clicktrackheart.com
    - www.clicktrackheart.com
    - rusiczki.net
    - www.rusiczki.net

registry:
  username: &lt;YOUR_DOCKER_REGISTRY_USERNAME&gt;
  password:
    - REGISTRY_PASSWORD

builder:
  arch: amd64

volumes:
  - "/var/www:/var/www"

</code></pre></div></div>

<p>This assumes that the sites reside on the host machine in the /var/www directory and that <code class="language-plaintext highlighter-rouge">REGISTRY_PASSWORD</code> is pulled from a <em>.kamal/secrets</em> file which can be as simple as:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>REGISTRY_PASSWORD=$REGISTRY_PASSWORD
</code></pre></div></div>

<p>This way the (Docker) registry password can be defined by the environment of the machine from which you’ll be issuing your <code class="language-plaintext highlighter-rouge">kamal deploy</code> commands.</p>

<p>Make sure the DNS records already point to the new IP when running the above command otherwise it won’t be able to request SSL certificates for your virtual hosts.</p>

<p>Tip: If you want to have a default site, make its filename something like <em>vhosts/00-default.conf</em> - it is important to be the first one it loads. Then you can define sites in the <em>config/deploy.yml</em> file alone (without the associated vhosts file) and their contents will be whatever is defined in <em>00-default.conf</em>.</p>]]></content><author><name>János Rusiczki</name></author><category term="blog history" /><category term="technical" /><category term="english" /><summary type="html"><![CDATA[A short write-up about how I'm deploying my static site configurations with Kamal.]]></summary></entry></feed>