Przejdź do głównej zawartości

ESP32 CYD (ESP32-2432S028R): ST7789 zamiast ILI9341 — jak rozpoznać sterownik ekranu

· 11 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Mam dwie płytki ESP32-2432S028R, popularnie „Cheap Yellow Display”. Z przodu wyglądają tak samo, ale ta z dwoma gniazdami USB ma pod szkłem inny kontroler ekranu: ST7789, a nie ILI9341. Konfiguracja pierwszej płytki dała na drugiej zamienione kolory, a sterownik ILI9342_DRIVER dał obraz, który „działał”, tylko był sprany. Łatałem gammę poprawkami z forów, a przyczynę pokazał dopiero odczyt rejestrów ID: spike na mniej niż 100 linii kodu. Poniżej cała droga, surowe bajty z odczytu i konfiguracja, która działa bez łatek.

Generative AI Design Patterns #1b: Style Transfer, Reverse Neutralization i Content Optimization, czyli styl bez gwarancji

· 25 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Pozostałe trzy wzorce z rozdziału 2 „Generative AI Design Patterns" kontrolują styl tam, gdzie nie da się go zapisać gramatyką: Style Transfer uczy stylu na przykładach, Reverse Neutralization wytwarza przykłady, gdy ich nie ma, a Content Optimization w ogóle rezygnuje z opisu stylu i dostraja model pod ocenę ewaluatora. Wszystkie trzy dają prawdopodobieństwo, nie gwarancję, a w dwóch z nich o jakości decyduje sprawdzian, którego łatwo nie docenić. Sprawdziłem oba sprawdziany na lokalnych modelach. Sędzia-LLM zapytany „które ogłoszenie jest lepsze" wybierał dłuższą wersję w 15 na 16 porównań, także wtedy, gdy miała błędny fakt, a przy równej długości trafność nie miała dla niego znaczenia. Neutralizacja z Reverse Neutralization zmieniła sens w 10 z 12 wyjść, a automatyczna kontrola faktów oznaczyła jedno.

Generative AI Design Patterns #1a: Logits Masking i Grammar, czyli gwarancja formy, nie treści

· 23 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Pierwsze dwa wzorce z „Generative AI Design Patterns" — Logits Masking i Grammar — odpowiadają na najczęstszy problem z modelem w produkcji: nie trzyma formatu. Oba działają tak samo: zerują prawdopodobieństwo tokenów, które łamią regułę, więc gwarantują kształt odpowiedzi. Autorzy uczciwie dodają, że kształt to nie treść, i radzą zostawić modelowi furtkę Unknown. Sprawdziłem to na dwóch lokalnych modelach na CPU. Furtka jest potrzebna, ale nie działa tak, jak się zakłada: w moim teście faktura w złotówkach ze schematem bez PLN wychodziła u Qwena 30B jako USD w 10 na 10 prób, także wtedy, gdy model miał do dyspozycji UNKNOWN i instrukcję, kiedy go użyć.

Generative AI Design Patterns (Lakshmanan, Hapke): recenzja i mapa 32 wzorców

· 9 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

„Generative AI Design Patterns" Valliappy Lakshmanana i Hannesa Hapkego (O'Reilly) katalogizuje 32 wzorce projektowania aplikacji na modelach generatywnych: od maskowania logitów, przez RAG i agentów, po guardrails. Przeczytałem całość z jednym pytaniem przy każdym wzorcu: czy odpowiada na trwałą własność modeli, czy obchodzi brak funkcji w API z 2025 roku. Mój werdykt: część katalogu się zestarzeje, ale kryteria wyboru zostaną, bo autorzy przy większości wzorców piszą, kiedy go nie stosować, a przy kilku podpierają to liczbami. Ten wpis to recenzja i mapa serii — w dziesięciu kolejnych rozbieram wzorce grupami.

Managed Agents: rozdzielenie mózgu od rąk agenta i co z tego wynika dla bezpieczeństwa

· 8 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

W poprzednim wpisie o katalogu Claude Customize skończyłem na przyznaniu, że moje własne rekomendacje są polityką na papierze — katalog nie ma etapu zatwierdzania, więc egzekwowanie zostaje po stronie procesu. Managed Agents, platforma Anthropic do uruchamiania agentów po stronie serwera, jest odpowiedzią na dokładnie ten problem: allowlista sieciowa, bramka akceptacyjna na wywołanie narzędzia i vault na poświadczenia są tam prymitywami API, a nie zapisem w regulaminie. Haczyk polega na tym, że wszystkie dziewięć funkcji, które o tym decydują, ma status Beta.

Claude Customize w firmie: skille, konektory i wtyczki to trzy różne modele ryzyka

· 8 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Panel Customize w Claude wygląda jak jeden sklep z rozszerzeniami, ale kryje trzy zupełnie różne mechanizmy: Skills, Connectors i Plugins. Różnią się tym, co faktycznie dostają — instrukcje, token OAuth czy jedno i drugie naraz — a więc także tym, co może pójść nie tak. Traktowanie ich jako jednej kategorii „wtyczek" jest najczęstszym błędem przy pisaniu polityki bezpieczeństwa dla asystentów AI. Do tego dochodzi czwarty element, którego w katalogu nie widać: Scheduled tasks, czyli ten sam agent uruchamiany cyklicznie, bez człowieka przy klawiaturze.

Claude Code za darmo: OpenRouter + NVIDIA Nemotron zamiast API Anthropica

· 7 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Claude Code da się uruchomić za darmo, przeciwko realnemu modelowi klasy 30B z obsługą narzędzi, bez pisania linijki kodu proxy. OpenRouter wystawia endpoint kompatybilny z Anthropic Messages API pod https://openrouter.ai/api, a w jego katalogu są darmowe modele NVIDIA Nemotron, które wprost wspierają wywołania narzędzi. Wystarczą trzy zmienne środowiskowe. W tym wpisie: jak to skonfigurować bezpiecznie (klucz API nigdy nie ląduje tam, gdzie nie powinien), jak wybrać między dwoma wariantami Nemotrona i jak zrobić z tego jeden skrót powłokowy, który działa dokładnie jak claude --resume.

CHIPS w enterprise: partycjonowane ciasteczka i aplikacje w iframe

· 8 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Blokady i partycjonowanie ciasteczek third-party paraliżują działanie krytycznych aplikacji biznesowych osadzonych w ramkach iframe — systemów płatności, czatów, widgetów CRM. Mechanizmem, który w 2026 roku rozwiązuje ten problem w sposób akceptowany przez wszystkie trzy silniki przeglądarek, jest CHIPS (Cookies Having Independent Partitioned State): podwójnie kluczowane kontenery pamięci, izolowane osobno dla każdej witryny najwyższego poziomu. Poniżej: dlaczego wygaszenie Privacy Sandbox go nie dotyczy, gdzie Safari nadal nie honoruje atrybutu Partitioned, i jak wygląda kompletna konfiguracja na przykładzie systemu contact center.

Ciasteczka w 2026: SameSite działa inaczej w każdej przeglądarce

· 12 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Powszechnie powtarzana zasada „brak atrybutu SameSite oznacza Lax" jest prawdziwa tylko w Chromium. Firefox nigdy nie wdrożył tego domyślnego zachowania w kanale stabilnym, Safari blokuje ciasteczka cross-site niezależnie od deklaracji, a dokument, na który wszyscy się powołują — „RFC 6265bis" — po piętnastu latach wciąż jest Internet-Draftem bez numeru RFC. Poniżej: co przeglądarki naprawdę robią z ciasteczkami we wrześniu 2026, gdzie mechanizm Lax+POST cicho maskuje błędy konfiguracji, dlaczego limit 400 dni jest mniej istotny niż siedmiodniowy cap Safari, i jak wygląda poprawna konfiguracja z prefiksami __Host- oraz atrybutem Partitioned.

AI jako dżin: dlaczego modele hakują reguły, a nie kod

· 6 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Bruce Schneier od lat powtarza, że hacking nie dotyczy kodu, tylko reguł — kodeks podatkowy, regulamin programu lojalnościowego i procedura głosowania to też algorytmy z wejściem i wyjściem, a luka prawna to podatność. Nowe w jego tegorocznym wystąpieniu na DEF CON jest to, kto tych luk szuka: nie księgowy, tylko model, który optymalizuje cel i nie ma pojęcia o niepisanych normach. Poniżej: mechanika reward hackingu, taksonomia „dżinów", przesunięcie priorytetu z poufności na integralność — i osobno to, co z tej narracji jest realnym wnioskiem inżynierskim, a co ładną metaforą.