piątek, lipca 25, 2025

Prakacje męczą ;-)

Ostatnimi czasy jestem w trybie prakacyjnym (aka workation).

Mam za sobą już 4 tygodnie w Las Palmas de Gran Canaria w lutym, 4 tygodnie w Juracie w czerwcu, teraz jestem w Wenecji, a jeszcze mam w planach Juratę i po głowie mi chodzi znów Gran Canaria....

Niby to jest fajne, nawet odkryłem supermoce polegającą na braniu 1 dnia urlopy w tygodniu, wtedy na 4 dni pracy są 3 dni wolnego w fajnym miejscu.

Ale też jest "ciemna" strona ;-) człowiek jest po prostu zmęczony. Codziennie przechodzę z 15-25 km. Tutaj teraz często przy temperaturze 30 stopni C.

Więc jak mam wolne to nie mam ochoty wychodzić ;-), ale wtedy mam to "to po to tyle płacisz za ten wyjazd żeby siedzieć w domu?"

No nie dogodzisz człowiekowi ;-)

Mam parę projektów, które wymagają mojej uwagi i po przejściu tych ~20 km i dniu pracy jak wracam to nie mam znów tak dużo siły, a trzeba jeszcze zrobić zadanie na LeetCode. Więc w końcu oglądam odcinek Glee (Brittany Pierce Rulez!!!, btw. Heather Morris, która ją gra zrobiła największy postęp bo zaczęła jako extra żeby nauczyć ich jakiegoś tańca, dostała niemą rolę i w ciągu jednego sezonu zaczęła być istotnym bohaterem drugoplanowym, a w końcu zaczęła być też na pierwszym planie. Robi wrażenie)

Najbardziej lubię pierwsze kilka dni, bo wtedy radość nowego miejsca znosi zmęczenie,  później się robi rutyna, ale taka dziwna, albo bardziej nawet nie rutyna, a poruszanie się po linii najmniejszego oporu.

A projekty czekają.... a takie robienie z dobiegu, raz na kilka dni po 5-10 minut to nie jest robota ;-)

środa, lipca 23, 2025

Wyzwania ;-)

Dzień zaczyna się od tego wyzwania:


i mantry "tylko żeby nie zlecieć"

Później jest to wyzwanie:


i mantra "tylko żeby nie walnąć"... wtedy nie walnę, jak zapomnę o mantrze to....

Jak wstaję z łóżka jest jeszcze:

Jak pamiętam "bardziej w prawo" to wstaję dobrze i wygodnie...

(temperatura spada to wychodzi ze mnie chęć tworzenia, że nadal jest wysoka, to moje dzieła nie są najwyższych lotów ;-))

Maksymalna temperatura operacyjna Przemka

Mam chyba temperaturę operacyjną ;-) albo bardziej chyba poznałem swoja górną granicę temperatury operacyjnej ;-)

27-28 stopni C ;-) 

Jest sobie zadanie 1.5 w Cracking the Coding Interview, trzeba sprawdzić czy 2 stringi są od siebie oddalone o co najwyżej 1 edycję (zamiana znaku, skasowanie znaku lub dodanie znaku).

Wiem, że umiem to zadanie zrobić bo jak te 5 lat temu robiliśmy z koleżanką w ramach trenowania przed ewentualnymi rozmowami po 3 zadania dziennie to dość szybko to zrobiłem (jej rozwiązanie było chyba ładniejsze).

A dziś nic, null... dopiero wieczorem jak temperatura spadła to mi się w głowie od razu pojawiło rozwiązanie ;-)

Co z tym?

Opcji jest kilka ;-)

  • klima
  • zamieszkać w Las Palmas de Gran Canaria
  • praca w nocy ;-)
  • zamieszkać w Juracie (nie jest tak stabilna jak Las Palmas de Gran Canaria, ale w lato też zwykle nie przekracza tych 25 stopni ;-))
  • suck it - zaakceptować to ;-)

wtorek, lipca 22, 2025

Przeglądarkowy zawrót głowy

Mój setup przeglądarkowy jest taki:
  • Chrome - ogólnie przeglądanie Internetu - jestem zalogowany do Google
    • dodatkowo w pracy mam 2 profil, używający innego konta, które zawsze porzucam gdy zmieniam pracę, więc nie muszę się przejmować hasłami czy podpowiedziami z poprzedniej pracy
  • Firefox z Facebook Container - FB, Newsy (Wyborcza, Newsweek, Polityka, Rzepa, Onet)
Idea jest taka, że trudniej mnie śledzić ;-) bo główna powierzchnia reklamowa czyli Facebook i Newsy nie wiedzą gdzie ja chodzę po Internecie ;-)

W Chrome używałem mojej wtyczki Chrome2Chrome, która umarła bo Manifest V2 (chociaż wydaje mi się, że mógłbym jej dać V3), wtyczka używa "dzielonego między instancjami" Chrome obiektu do przesyłania stron między instancjami... czyli z komputera A mogę przesłać do B tabkę.

Kusi mnie przejście na Arc'a... ale nie wiem czy ten obiekt dzielony między instancjami tam jest (używam chrome.storage.sync i AI Overviews mówi, że nie działa), więc jak uBlock Orgin (btw. czemu już nie µBlock Orgin? ;-)) by mi działał to Chrome2Chrome nie będzie działać...

Do tego chciałbym jakoś wciągnąć do miksu jeszcze Safari... ale nie do końca mam pomysł gdzie je użyć...

Kiedyś było prościej ;-)

[Update parę godzin później]
Już mi uświadomiono, że Arc się nie rozwija, teraz Zen jest w modzie ;-)
A ja się po informacji o nierozwijaniu Arc'a dowiedziałem o ich nowej przeglądarce Dia, która ma wersję tylko dla ARMowych Maców ;-)

Depresja temperaturowa, czyli chyba jednak zrobię klimę... kiedyś ;-)

Dzisiejsze 34 stopnie C w Wenecji mnie chciały zabić...
Dokładniej siadł mi nastrój i stałem się bardzo negatywnie nastawiony do świata. Przygnębia mnie polityka, praca, to że jestem przygnębiony, a nawet to że mi zwinęli most (był taki tymczasowy przez kanał Giudecca'i) ;-)

Stąd dwie lekcje ;-)
Raczej nigdy więcej Wenecji w lipcu/sierpniu ;-) [zapomniałem, byłem tu w 2021, ale jednak hotel ma większą bezwładność cieplną niż AirBnb i tam było chłodniej (w końcu Hotel Indigo w Wenecji to dawny klasztor ;-))] i chyba trzeba będzie jednak w domu zrobić klimę.
Ale zaskakujące jest to jak gorąco sprawia, że człowiek jest po prostu głupi. Nie chce się myśleć, każda trudniejsza rzecz powoduje wkurzenie. Nawet audiobook, którego słucham czyli God Delusion Dawkinsa jest zbyt poważny i najchętniej posłuchałbym czegoś lekkiego i tęsknię za np. Lesiem czy Dzikim Białkiem Chmielewskiej.
Niby wiesz, że istnieje pomodoro, ale zapominasz o tym.
Co ciekawe kawałki Abby i niektóre, takie żwawsze, metalowe/rockowe sprawiają, że słuchając je człowiek czuje się jakby było chłodniej ;-) ale może po prostu szybciej chodzę bo muzyka bardziej skoczna?  ;-)

Ogólnie miewam ataki depresji wywoływanej temperaturą ;-) i to jest ciekawe, z jednej strony jest masa słońca i jest jasno, więc antydepresyjnie, z drugiej gorąco i depresyjnie ;-)

piątek, lipca 18, 2025

Wyjście na 5 łupsów!

Moje weneckie mieszkanie ;-) jest całkiem fajne.

Jest w Castello, ma 2 piętra ;-) i jest jakieś 2-3 razy większe od poprzedniego (które jest 2 pietra niżej ;-))



Ma jednak pewną wadę...



Belki w suficie... o które (nie wszystkie) co jakiś czas uderzam głową ;-)

Jak wstaję z łóżka to może być pierwsza, to mnie sadza z powrotem do łóżka... później wchodząc do kuchni jest drugi raz o framugę, wychodząc 3 raz, jeszcze wychodząc z budynku, schodząc po schodach jest lustro, człowiek odruchowo się poprawia i prostuje... więc jest 4 belka i przy wychodzeniu znów framuga ;-)

Stąd przy odpowiednim dniu jedno wyjście to 5 łupsów w głowę...

Dziś w nocy walnąłem 2 razy ;-)

środa, lipca 16, 2025

Agent by Agent ;-) czyli o tworzeniu agenta AI agentem AI ;-)

Spróbowałem vibe coding z Gemini CLI.

Żeby było zabawnie poprosiłem je o napisanie mi czegoś podobnego do Gemini CLI, ale działającego z lokalnym modelem.

Myślałem o Codellama i Deepseek-r1, okazało się, że mniejsze modele z Codellama i Deepseek-r1 nie dawały w ogóle rady, ale już Codellama 34b, coś tam daje radę...

Zacząłem od prompta, który wytłumaczył, że chcę zbudować coś podobnego do Gemini CLI, ale z lokalnym modelem i że żeby dostać się do tego modelu to może używać kodu modułu mistral.py, który mu dałem. Wytłumaczyłem też, że powinien dodać do kodu fragmenty pozwalające na wykonywanie funkcji takich jak zapisanie pliku, przeczytanie pliku i uruchomienie komendy. Jako testu kazałem Gemini CLI instruować tworzonego agenta, że ma stworzyć plik z kodem w Pythonie, który stworzy program do liczenia Pi metodą Monte Carlo.

Zacząć działać, a ponieważ budowa agenta nie jest czymś co zostało oprogramowane już wiele razy to model, którego używa nie ma raczej duże wiedzy o tym...

Wygenerował kod i tu był pierwszy problem ;-) bo postanowił uruchomić agenta, ale jak go uruchomił to nie miał możliwości interakcji z nim ;-) bo przecież Gemini CLI to NPM i 1 wątek...

Przerwałem mu, wytłumaczyłem problem i zaproponowałem zrobienie wersji z serwerem HTTP, która będzie słuchać i odpowiadać, a on będzie mógł gadać do niej cUrlem...

Spodobało mu się, przepisał kod.

Uruchomił, wysłał cUrla i okazało się, że mu nie działa...

Zaczął debugować i z uporem maniaka prosił mnie o to żebym ręcznie włączył lub wyłączył serwer... wytłumaczyłem, że przecież sam to może robić... stwierdził, że fakt, i zaczął uruchamiać serwer w background (z &), a później killować go z pkill...

Problem był taki, że model zwracał kod, ale tworzony agent nie chciał go zapisać na dysk... czyli najpierw Gemini CLI kilka razy sam chciał ten kod zapisać do pliku, wyjaśniłem w końcu mu grzecznie, że oszukuje, że to ma zrobić agent.

Więc zaczął go poprawiać, uruchamiać, zabijać... uznał, że musi zrobić debug... tu miał masę problemów, jednym z nich było to, że znów żeby móc widzieć output serwera HTTP to musiał go uruchomić... ale w foreground, więc nie mógł wysłać cUrlem nic, bo wisiał ;-)

W końcu mu przerwałem i zaproponowałem, że może lepiej będzie użyć przekierowania do pliku, ba że może przecież przekierować do pliku output z serwera i z cUrla i porównać...

Sam też sprawdziłem kod i okazało się, że w prompt'cie tłumaczył modelowi, że ma komendy owijać w <<CMD>> </CMD>>, ale w kodzie szukał końcowego znacznika <</CMD>> więc go tam nie było...

W międzyczasie sam wymyślił, że lepiej od przekierowywania strumienia użyć biblioteki logging ;-)

Wypalił w trakcie całą pulę tokenów/requestów do lepszego modelu, przełączył się na gemini-2.5-flash i spalił 63% contextu.

W końcu zrobił jakąś pierwszą wersję agenta, która umie pisać na dysku i która stworzyła plik z kodem liczącym Pi metodą Monte Carlo, ale już uruchomić tego nie umiał... a w końcu chciał nadpisać plik "example content" ;-)

Często blokował się na czymś trywialnym i trzeba mu to było tłumaczyć jak "bardzo tępemu juniorowi", chociaż bardziej komuś kto niby kojarzy, że kod można pisać, ale jest pozbawiony jakichkolwiek zdolności do rozwiązywania problemów ;-)

Z tym, że parę lat temu nawet w to miejsce by nie można było dotrzeć ;-)