Witaj na blogu.
Czytaj bez spiny.
Automatyzacja czy prosty kod? Od zera do losowej kawy

Automatyzacja czy prosty kod? Od zera do losowej kawy

24 marca 2026

Żyjemy w czasach, w których do byle kalkulatora próbuje się wcisnąć sztuczną inteligencję. Kiedy wpadłem na pomysł, żeby na końcu każdego mojego wpisu pojawiała się prośba o postawienie wirtualnej kawy, prawie wpadłem w tę samą pułapkę. Prawie.

Nudne widżety i 16 moich twarzy

Standardowe przyciski są nudne. Bezpłciowe, korporacyjne ramki, które zlewają się z resztą strony. Chciałem, żeby to było autentyczne. Pomyślałem: a co gdybym narysował siebie? Wyraził emocje, które faktycznie mi towarzyszą podczas pisania i dłubania w systemach? Złość na Dockera, zmęczenie po zarwanej nocy, duma z dowiezionej automatyzacji w n8n albo po prostu chill przy malowaniu figurek.

Postaw wirtualną kawę

Zrobiłem sobie selfie. Następnie wrzuciłem je do Gemini z precyzyjnym promptem, żeby wygenerować grid referencyjny.

Into a 64K DSLR shot resolution of A black-and-white typographic poster titled "YouTuber Thumbnails", designed as a visual reference chart for exaggerated facial expressions commonly used in online video thumbnails. 
The layout is clean and structured, featuring a bold, large sans-serif headline at the top reading "YouTuber Thumbnails" in black text on a white background.
Below the title is a 4x4 grid of square portrait photographs, each showing the same young man wearing a dark turtleneck against a neutral studio backdrop. The portraits are tightly framed headshots, evenly lit, with consistent composition and contrast. Each square displays a distinct exaggerated facial expression, clearly labeled underneath in simple sans-serif text. 
The expressions include:
- Surprised (wide eyes, open mouth)
- Sad (downturned mouth, raised inner brows)
- Mad (tense jaw, furrowed brows) 
- Shy (averted gaze, subtle smirk)
- Happy (broad smile, raised cheeks)
- Tired (drooping eyelids, relaxed face)
- Confused (scrunched brows, uneven expression)
- Suspicious (side-eye glance, narrowed eyes)
- Frightened (hunched shoulders, tense face)
- Confident (upright posture, neutral assertive stare)
- Sleepy (yawning expression)
- Disgusted (wrinkled nose, curled lip)
- Embarrassed (awkward smile, hand near face)
- Disappointed (downturned lips, resigned look)
- Stunned (wide eyes, frozen expression) 
- Guilty (uneasy smile, raised shoulders)
The overall style is classic studio photography, high contrast monochrome, with dramatic facial emphasis and theatrical expressions. The design feels instructional, humorous, and meme-like - intended as a visual guide for content creators choosing expressive thumbnail faces.
Mood: humorous, exaggerated, instructional
Style: black-and-white photography, clean grid layout, minimalist graphic design. 
Resolution: high clarity, sharp facial detail, uniform lighting. No color, no background distractions, no realism beyond studio portraiture. Octane render & Unreal Engine 5.

Dostałem 16 gotowych wyrazów twarzy w moim standardowym, zbrutalizowanym stylu. Pociąłem je na równe kwadraty. Miałem świetny materiał. I wtedy wjechało to słynne over-engineering.

Plan A: Niech AI decyduje (czyli sztuka przepalania zasobów)

Mój pierwotny plan brzmiał jak mokry sen ewangelisty AI. Wymyśliłem, że wepnę w to automatyzację. Kiedy kończę pisać artykuł, agent AI podpięty przez n8n miałby go analizować, wyciągać główny ton i emocję tekstu, a następnie na tej podstawie dobierać jeden z 16 awatarów i generować w locie krótki, spersonalizowany tekst. Wszystko po to, żeby ramka idealnie pasowała do treści.

Brzmi nowocześnie. Szkoda tylko, że to kompletny przerost formy nad treścią. Szybko uświadomiłem sobie, co to w praktyce oznacza:

  • Ciągłe zużywanie tokenów i koszty API przy każdej generacji.
  • Uzależnienie prostego elementu strony od zewnętrznego skryptu.
  • Ryzyko, że LLM w swojej "mądrości" dobierze smutny tekst do uśmiechniętej twarzy.

W zderzeniu z rzeczywistością ten plan był po prostu głupi.

Plan B: Powrót do korzeni (PHP i potęga losowości)

Dlaczego miałem analizować za każdym razem, czy byłem smutny czy szczęśliwy? Przecież odwiedzający stronę i tak nie będą widzieć tego samego artykułu codziennie. To, czego naprawdę potrzebowałem, to po prostu funkcja random.

Zamiast zatrudniać wielkie modele językowe do podawania mi kawy, zrobiłem to, co jako praktyk-architekt lubię najbardziej: poskładałem to z prostych, niezawodnych klocków. Zamiast płacić za tokeny, napisałem zwykły plik losuj-kawe.php.

W środku siedzi prosta tablica. 16 awatarów pomnożyłem przez 3 warianty tekstowe, co dało mi potężną bazę 48 unikalnych wiadomości. Mam tam teksty szczerego praktyka ("Technologia potrafi wypić krew..."), teksty inspirujące oraz warianty architekta IT, w których otwarcie mówię, że lepię systemy z gotowych narzędzi i skryptów. Przy każdym odświeżeniu strony, poczciwy PHP losuje jedną parę i ładuje ją w moją neo-brutalistyczną ramkę na końcu wpisu.


Lekcja z tego całego zamieszania

Czasem syndrom oszusta podpowiada mi, że skoro sam nie piszę od zera skomplikowanych algorytmów, to nie znam się na IT. Ale ta sytuacja przypomniała mi ważną rzecz. W dzisiejszym IT liczy się architektura systemu i pragmatyzm. Rozwiązanie ma działać, być odporne na błędy i nie obciążać niepotrzebnie serwera (na Mikrusie każdy megabajt RAMu jest na wagę złota!).

Sztuczna inteligencja jest absolutnie genialna do zbudowania narzędzia. Ale używanie jej jako silnika do tak trywialnego zadania w trakcie działania strony, to jak odpalanie kombajnu do skoszenia trawnika przed domem.

Stary, poczciwy skrypt ładuje się w ułamek sekundy, kosztuje równe zero złotych i daje mi pełną kontrolę nad tym, co widzi czytelnik. Jeśli to podejście trafia do Ciebie, zjedź na dół strony i przetestuj ten system w praktyce. Kofeina napędza kolejne eksperymenty.

Widzisz błąd, masz uwagę albo chcesz coś dodać?
Napisz tutaj →
Wsparcie Warsztatu

Laptop Asus VivoBook 16X (Ryzen 9)

Maszyna dla tych, którzy nie lubią iść na kompromisy. Potężny procesor Ryzen 9 i piękny ekran OLED. To stacjonarka upchnięta w obudowę laptopa. Zmiecie każde zadanie, od obróbki zdjęć po automatyzacje puszczone w tle.

Zobacz Asusa na Allegro →

Mój nastrój

Od autora: Niektóre drogie abonamenty i gotowe rozwiązania bolą w oczy. Szukam alternatyw i rzeźbię je po swojemu. Wspieraj niezależnego bloga.

Postaw mi kawę →
BEZ SPINY • MYŚLĘ • BEZ SPINY • ROBIĘ • BEZ SPINY • PISZĘ • BEZ SPINY • DZIELĘ SIĘ • BEZ SPINY • ZERO NADĘCIA • BEZ SPINY • ZERO POZERKI • BEZ SPINY • KONKRETNE RZECZY • BEZ SPINY • NORMALNY BLOG • BEZ SPINY • UCZĘ SIĘ • BEZ SPINY • BUDUJĘ • BEZ SPINY • SPRAWDZAM • BEZ SPINY • WYCIĄGAM WNIOSKI • BEZ SPINY • SERWER • BEZ SPINY • SEO • BEZ SPINY • AUTOMATYZACJE • BEZ SPINY • ŻYCIE ONLINE • BEZ SPINY • BLOG JAK DAWNIEJ • BEZ SPINY • RÓŻNE TEMATY • BEZ SPINY • PRAWDZIWE PROBLEMY • BEZ SPINY • PRAWDZIWE ROZWIĄZANIA • BEZ SPINY • UCZĘ SIĘ PUBLICZNIE • BEZ SPINY • TESTUJĘ I OPISUJĘ • BEZ SPINY • CZASEM TECHNICZNIE • BEZ SPINY • CZASEM ŻYCIOWO •
Antoni Fic - O mnie

O Mnie

To nie jest blog. To narzędziownia. Odrzucam SaaS-owe abonamenty, marketingowy bełkot i cyfrowy szum. Sam stawiam serwery, tnę czysty kod i zmuszam sztuczną inteligencję do odwalania czarnej roboty.

Nie sprzedaję kursów, nie buduję zasięgów i nie owijam w bawełnę. Zrzucam tu gotowe, zweryfikowane w boju systemy.