.Array[1]. audio audiovideo
 


 
 
 
2023:03:28   Sztuczna inteligencja permalink

Od dawna obserowałem z daleka rozwój sieci neuronowych, a mój wewnętrzny budzik mówiący ‘to już czas, kto nie będzie miał żadnego pojęcia zostanie na peronie’ od ostatnich rewelacji już nie przestaje dzwonić, postanowiłem więc zrobić kolejne (po serii nieudanych) podejście do liźnięcia tematu.

Chciałem zrobić coś najprostszego, nie musi robić nic pożytecznego, żadnych myślących, skaczących, rozwiązujących poważne problemy maszyn, chodziło tylko o to żeby na minimalnym przykładzie zapoznać się z toolchainem. Warunki brzegowe były takie:

Chciałem móc uczyć sieć na syntetycznych danych, chciałem żeby uczenie nie zajmowało tygodni, i żeby było super prosto rozpoznać czy jest lepiej czy gorzej (jasno określoną funkcję celu).

Problemem który ostatecznie wybrałem, jest dodawanie. Ten ambitny problem określiłem następująco: daję sieci dwie liczby całkowite, oczekuję w odpowiedzi wyniku ich sumy.

W takim intuicyjnym rozumieniu komputera, jako maszyny do dodawania, ciężko jest spodziewać się, że dodawanie miałoby być dla maszyny jakkolwiek trudne.

Trudność dla maszyny polega tu na tym, że nie mówię jej nigdzie, że akurat o dodawanie mi chodzi, musi sama się domyśleć, rozpoznać pattern.

Trudność dla mnie, polegała na tym, że nie znam Pythona, (nie umiałbym napisać w tym języku ‘hello world’), w zasadzie moja wiedza sprowadza się do znajomości nazw dwóch bibliotek do ML: TensorFlow i pyTorch (wiem że jest ich więcej), i ogólnych pojęć, ale bariera wejścia jest tu dość wysoko, a tutoriale często robią od razu jakąś zaawansowaną rzecz, rozpoznawanie obrazu, klasyfikacje wyrażeń, a ja tu próbowałem sobie odpalić coś tak trywialnego że szkoda mi było czasu na zagłębianie się.

Mój brat zasugerował w rozmowie, że może to jest moment żebym dał szansę ChatowiGPT. Myślę, że to był punkt zwrotny w mojej karierze machine learningowca, która przez wiele lat nie chciała ruszyć z miejsca.

O ile nie bardzo rozumiem sens rozmowy z maszyną na tematy filozoficzne, to słyszałem wiele głosów chwalących kompetencje techniczne nowych botów. Zalogowałem się więc do bota i wpisałem swojego pierwszego w życiu meaningful prompta w rozmowie z maszyną.

‘Write python script generating sample data for tensorflow. Data consists of two numbers as input and their sum as result’.

W odpowiedzi dostałem krótki przykładowy kod, wraz dwoma akapitami wyjaśnienia co tam się dzieje. Spodziewałem się że może podpowie mi składnie tworzenia arraya w pythonie, ale nie, dostałem kompletny minimalny przykład stawiający i uczący na danych według mojego pomysłu sieć neuronową. Spodziewałem się że użycie AI może przyspieszać pracę, ale spodziewałem się jakiegoś procesu a nie rozwiązania problemu, z którym zmagam się od lat, w 7 sekund

Great, can you do the same using torch?

Przekleiłem pierwszy, zajmujący tuzin linijek kod do Jupytera i wcisnąłem Run. Inicjowana szumem tablica wag wewnątrz modelu wykonała 10 iteracji uczenia, kończąc z dość wysokim poziomem błędu. Seria prostych pytań matematycznych zadanych tak wytrenowanemu modelowi dawała ciekawe rezultaty, świadczące o tym że zaczęła być może widzieć korelację pomiędzy drugim parametrem a wynikiem:

1+2=2.09, 3+4=3.93, 5+6=5.7

Postanowiłem jednak iść z tym przykładem w zaparte i uczyć go dalej, jak trudne może być dodawanie? Próbowałem więc uczenia coraz wytrwalszego. Przy ~200 (zamiast pierwotnych 10) epokach uczenia, wyniki zaczynały się powoli zbliżać do oczekiwanych, ale dalej było bardzo źle.

2+3=6.04, 4+5=10, 6+7=13.4

Wreszcie, po około półtora tysiąca epok, sieć dochodziła do poziomu, w którym błąd zaczynał być e do minus którejś potęgi i dla większości zapytań odpowiedzi

5.000007 ~ ile jest 2+3?
9.000006 ~ ile jest 4+5?
13.00005 ~ ile jest 6+7?

Dla naszego trywialnego przykładu jedna epoka uczenia trwa ułamki sekund i cały proces uczenia dla danego wariantu trwał tyle co łyk herbaty, ale im bliżej była poprawnej odpowiedzi, tym droższe stawało się zmniejszenie błędu, w którymś momencie wyniki zaczęły się różnić od oczekiwanych o tak małą liczbę, że można było uznać je za poprawne. Tu była ciekawa lekcja o precyzji wyników. Sieć nie zwraca prawdy, jak algorytm, tylko coś co z dużym prawdopodobieństwem nie różni się od prawdy za bardzo, ale jednak coś innego. Jeżeli mam źle zaprojektowany model, to on będzie się on być czasami zbliżał się asymptotycznie do właściwego wyniku, ale może nigdy nie dojść dostatecznie blisko, w tym przypadku, może nigdy nie gwarantować że zwróci liczbę całkowitą.

Dla przykładu, gdybym chciał używać tej sieci jako kalkulatora, to byłby to bardzo kiepski kalkulator. Na początku uczenia maszyna nie dawała mi żadnej gwarancji że w następnym dodawaniu, które dostanę od niej jako rezultat, nie pomyli się o nawet kilkadziesiąt procent, potem w miarę uczenia błąd spadał do pomijalnych wartości, ale zawsze była możliwość, że dla jakiejś nietypowej kombinacji wartości wejściowych wyjdzie jakaś bzdura i że nasz hipotetyczny autonomiczny samolot spadnie nieba.

Postanowiłem na fali sukcesu sprawdzić jeszcze jak to wygląda w api pyTorcha

Przykład z pyTorcha był trochę inny. Mniej skrótowy, bardziej verbose. Dla przykładu, tensorflow brał moją tablicę intów bez marudzenia, a cała inicjalizacja struktury modelu mieści się w jednej okropnie wyglądającej linijce:

tf.keras.Sequential([tf.keras.layers.Input(shape=(2,)),tf.keras.layers.Dense(1))

Odpalenie pyTorcha wymagało jeszcz kilku dodatkowych pytań do ChatGPT, np o calla do numpy służącego do konwersji danych wejściowych, a sama biblioteka potrafiła bezceremonialnie rzucić wyjątkiem gdy nie podobało jej się cokolwiek błachego

Ale po chwili kod używający Torcha zaczął mi się podobać bardziej, bo nawet ze znikomą wiedzą o tym czego się spodziewać dało się rozpoznać jakieś znajome wzorce, konstruktor modelu, główną pętlę uczącą itp, podczas gdy w TensorFlow wyglądało to bardziej jak zestawianie strumieni (chociaż podkreślam że jest to skojarzenie osoby pierwszy raz widzącej coś z bliska, bardzo powierzchownie).

Dość długo, lekko popsuty walką z typami danych, przykład używający Torcha wypluwał z siebie zupełnie losowe, nie skorelowane z wejściem wyniki, i nie uczył się wcale (zawsze wychodziło coś przypadkowego), ale można było podejrzeć trochę co się dzieje pod maską, np wykomentowanie linii zerującej gradient powodowało stworzenie mutanta odpowiadającego np 1+1=9234238462835423243768.

Na szczęście na wszystkie trudności próbowałem dalej po prostu pytać bota, czasami po prostu wklejając mu cały log z błędu, i szybko razem rozwiązywaliśmy problem.

Potem jeszcze potweakowałem trochę parametry uzyskując sieć uczącą się szybciej (tak tak, można po prostu dać kosmiczny lern rate w takim prostym case), co ciekawe, wartości dobrze skorelowane z oczekiwanymi dostawałem po dostarczeniu dosłownie kilku próbek danych wejściowych. Jak zrobić to dobrze, dalej nie mam pojęcia, a całe zagadnienie wydaje się być bardzo otwarte na różne kreatywne sztuczki, choć ich rolą jest tak naprawdę przyspieszenie uczenia, osiągnięcie lepszego nachylenia krzywej błędu, bo można też problemy brute-forsować i po prostu dawać odpowiednio dużej sieci uczyć się odpowiednio długo.

Ale teraz najlepsze. Patrząc po datach screenshotów całkowity czas od samego początku (‘where python’, poprzez instalację pip, bibliotek), aż do odpalenia zaplanowanego eksperymentu na dwóch frameworkach, zmieścił się w dwóch godzinach

Spisanie tej historii zajęło dłużej, niż ona trwała

Dość niezwykłe doświadczenie, obserwować jak sztuczna inteligencja buduje prostą sieć neuronową, rękami i na prośbę człowieka.


 
 
2022:11:11   Atak holograficzny permalink

Poniższy fragment tekstu pochodzi ze spisanego w 2018 snu. Skąd bierze się tam komisariat? Mój bohater wkrada się tam do czasami skorzystać z toalety, ale większość opisu codziennego życia spędzanego w większosci poza murem nie jest aż tak ciekawa

(...) Chyba mniej więcej w tym czasie nad miastem zaczęły pojawiac się hologramy, z początku chyba nikt po prostu nie zwrócił na nie uwagi, wyglądały jak zwykłe ekrany diodowe, nie odróżniały się niczym od reklam coca-coli widocznych na starych pocztówkach z trafalgar square, zaskakiwało co prawda jak udało się powiesić je na masztach, już uginających się od anten, ale dziś istnienie ultralekkich technologii wyświetlania było w zasadzie koniecznością, a że kogoś pomimo konfliktu stać było na dalsze powiększanie łuny - cóż, odkąd emiraty zaczęły nieoficjalnie przejmować drobny handel w Mieście, różne kaskaderstwa w wykonaniu węża konsumpcji próbowano uskuteczniać na mieszkańcach Miasta, którzy utrzymywali byli dzięki niemu w błogim przeświadczeniu, że nic zlego się nie dzieje.

(...)

Postanowiłem nie ryzykować zostawania przy rzece, konwój handlowy z jakiegoś powodu zawrócił, więc możliwe że stanie się tam niedługo nieprzyjemnie, zerwałem więc swój hamak i przeniosłem się na tą noc na jeden z dachów opuszczonych magazynów, było tam już kilku mieszkańców, znałem ich z widzenia, ale nigdy nie rozmawialiśmy, tak było bezpieczniej. Bez słowa rozłożyłem śpiwór i nasłuchiwałem odgłosów miasta, ale miasto było spokojne, trwał mecz, a może transmisja koncertu, w każdym razie stopniowo, szybciej niż nadszedłby świt, miasto zaczęło stawać się dziwnie jasne, jakby wszystkie szklane powierzchnie odbijały jakieś fajerwerki.

Wystawiłem głowę nad legowisko ale miasto wyglądało prawie normalnie, przynajmniej na pierwszy rzut oka. Stopniowo jednak zauważyłem całą bateria wieżowców, dość daleko, parę kilometrów od mojej pozycji płonie.

Przetarłem oczy ze zdumienia ale obraz wijących się płomieni, eksplozji wybuchów kolejnych pięter, w hiperrealizmie, niczym z hollywoodzkiego filmu wywołuje u kolejnych ludzi atak paniki, zostaliśmy zaatakowani, ewentualnie mógł mieć meijsce atak terrorystyczny, z punktu widzenia nomada konsekwencje są w zasadzie takie same. Jeszcze większa presja wojska, jeszcze ciaśniejsze kontrole.

W mieście zaczęły rozlegać się syreny, nikt jeszcze nie krzyczał z przerażenia, nikt blisko jeszcze nie wił się od poparzeń, na pewno nie była to więc technologia termonuklearna, telefon także wydawał się dalej mieć internet, więc nie był to atak jonizujący, ale powoli całe miasto zaczynało stawać w płomieniach, i pierwsze krzyki przerażenia słychać już było z pobliskich balkonów.

Czekałem co będzie dalej bo wyglądało to bardziej na marketing stunt producenta gaśnic, albo nieśmieszny żart hakerów z bogatej dzielnicy, niż faktyczny kataklizm, wszystko wydawało się być nienaruszone.

Nagle rozbłysły chmury, najpierw było tylko światło, pare sekund bieli która błyskawicznie sfocusowała laserowe projekcje na jednolity grid, niczym wielki obraz kontrolny focusując się na optymalnej głębokości gęstych chmur. Obraz zgasł, a następnie zapłonął na sekundę ogromnym, zajmującym całe niebo obrazem kontrolnym, którego odbicia widać było we wszystkich okolicznych oknach. Atak holograficzny pomyślałem, starając się nie patrzeć w rozszarpujący świadomość na drobne kawałki miks, wyświetlany na pewno na wszystkich odbierających publiczny internet wyświetlaczach, przez godzinę czułem odruch wymiotny po fragmencie który dostrzegłem kątem oka odbity od szyby toalety. Potem wszystko zgasło, był wyjątkowo słoneczny dzień, dzięki czemu udało się rozmontować montowany na pewno przez kilka miesięcy system projektorów laserowych, dzięki którym chmury zapłonęły, ale nigdy nie udało się wprowadzić poprawek firmware łatajacych dziury w wyświetlaczach, Miasto nie odzyskało już nigdy swojego wczorajszego poziomu beztroski.

Następnego dnia w toalecie komisariatu był lekko powiększony ruch, dwóch grubasów oddawało swoje odchody, oraz co gorsza, na korytarzu mignął mi mundur polowy służb specjalnych, ale poza nerwowym trzaskaniem drzwiami w zasadzie panował spokój.

Jadłem batona udając oddającego kał w toalecie, kiedy usłyszałem nerwowe krzyki, wojsko zajęło korytarz szybko wypychając gliniarzy do ich gabinetów, nie mogli tego widzieć, zresztą nikt się nie opierał, widocznie znali tą procedurę. Podwinąłem nogi zanim wyraźnie spieszący się żołnierz zerknął tylko schylając się po toaletach szukając nóg, a nie widząc moich uznał że jest pusta i pobiegł dalej. Po chwili rozmów przez radio usłyszałem znajomy odgłos, często dochodził z windy, przypominał otwieranie śluzy pneumatycznej.

Tym razem było jednak trochę inaczej, po kolei otwierały się kolejne śluzy, a drzwi windy pozostawały otwarte. Wojskowi opuścili korytarz, a sześciu dryblasów w cywilnych ciuchach przeciągnęło przez korytarz coś czemu nie mogłem się przyjrzeć, było mniej więcej gabarytów człowieka ale musiał to być albo egzoszkielet albo coś tego typu bo sześciu kolesiom niesienie tego sprawiało dużą trudność. Miałem też wrażenie że słyszałem brzdęk metalu gdy ta rzecz przekraczała próg windy i znikała w czeluściach tajemnego przejścia, prowadzącego do ukrytej części budynku.

Do korytarza ktoś wszedł więc udałem że sikam do pisuaru, koleś poszedł najpierw do damskiego a potem speszony stanął nieopodal,

- Pierwszy dzień? Spytałem żartobliwie
- Pierwszy dzień u was, to nie są ćwiczenia - odpowiedział wyraźnie spięty

Ktoś do nas krzyknął z korytarza

- Dawać chłopaki, zaraz zamykamy śluzę

Nie pamiętam czy konsekwencje tego że byłem tam nielegalnie i miałem tylko kurtkę wyglądającą podobnie do stylu w jakim ubierali się tajniacy, ale świat zmienił się tego dnia, i w ten sposób zacząłem współpracę z służbami, próbującymi przywrócić po ataku porządek

(...)
 
 
2022:07:14   Polszczyznowe permalink
Podziękowania dla Jaro Ślimaka który z własnej nieprzymuszonej woli przeszedł przez wpisy z ostatnich dwóch lat i poprawił literówki i pare innych bugów. ❤
 
 
2022:04:05   Zapomniane interfejsy permalink

Artykuł napisany w 2020.07.16, niedawno odnaleziony jako dotąd nie publikowany

Ten artykuł poświęcony będzie małemu znalezisku z gatunku computer science. Będzie dość technicznie, a interfejsy z tytułu dotyczą zarówno interfejsów użytkownika jak i abstrakcji stosowanej w programowaniu, ale

Zagadnienie wzięte na tapetę tego poranka, wymagało wyciągnięcia od usera wskazania pliku na dysku, a następnie wskazania nowej nazwy pliku w celu zapisania pliku wynikowego.

Używane przez nas środowisko Unity3D, z racji posiadania supportu wielu dla różnych systemów operacyjnych operacyjnych, w tym takich, które nie posiadają w ogóle eksponowanej dla użytkownika koncepcji ‘pliku’ (iOS, XBOX), więc okienko nawigacji po katalogach trzeba sobie własnoręcznie ‘wystrugać’, co zresztą niedawno ćwiczyłem.

W tym jednak wypadku zależało mi na sprawieniu żeby użytkownik poczuł się możliwie jak w domu, tzn żeby pokazało mu się mniej więcej to samo co zobaczy wybierając co wybierając plik otwórz w notatniku:

Ponieważ okienko to otworzyć potrafi 90% istniejących na windowsie programów, zagadnienie nie mogło wymagać arkanów magii, chociaż z koniecznością przeklejenia jakichś tzw. Krzaków, tzn kodu który na pierwszy rzut oka przypomina kawałek żywopłotu. W przypadku Unity3D, wywołania do ‘starej części’ windowsa są jak najbardziej możliwe, ale wymagają lekkiego ‘obudowania’ odwzorowaniem tego co chcemy wywołać odpowiadającym mu kodem w C#, a zrobienie tego w sposób nieco inny niż dokładnie ten który autorzy specyfikacji mieli na myśli, powoduje różne dziwne problemy, więc dobrze zacząć od jakiegokolwiek działającego przykładu.

Tu trafimy dość szybko na ślady pierwszego z dwóch zapomnianych interfejsów. Później wrócimy jeszcze do bardziej graficznego znaczenia słowa interfejs, i przez chwilę spojrzymy na zagadnienie od strony kodu, jeśli nie jest to dla Ciebie ciekawe, śmiało przewiń następne akapity.

Metoda otwierająca standardowe systemowe okienko, otwierające plik, nazywa się GetOpenFileName, i zaszyta jest w pliku Comdlg32.dll, nie licząc deklaracji DllImport i odwzorowania lekko przesadzonej struktury którą metoda ta przyjmuje jako parametr, działające ‘krzaki’ wyglądały mniej więcej tak:

Kod ten znalazłem na unity forums, postępującemu pytanie chyba nie do końca on działał, zaznaczał że nie zna chińskiego, i że znalazł to na chińskim forum. Google potwierdza że jest to chiński, oraz że prawdopodobnie jest to właśnie to czego szukam, z uwagi na to co wiem o starych microsoftowych API (czyli - interfejsach) epoki WIN32

Gdy Microsoft pokazał swoje Win32 API, efekt wielu lat pracy, wybuchł mały skandal w świecie koderskim związany z tym że najprostszy kompilujący się przykład, hello_world.c, składał się ze 150 linii nie intuicyjnego kodu. Zajmowałem się w tym czasie byciem małym chłopcem, ale wyobrażam sobie jakim terrorem (bez stack overflow czy choćby aktualnej literatury) dla ówczesnej braci programistycznej musiało być zaznajamianie się z mocno przekombinowanym tworem microsoftu. Specyfikacja struktury openfilename, dalej aktualna i obowiązująca, dostępna jest na stronie microsoftu, polecam niedowiarkom https://docs.microsoft.com/en-us/windows/win32/api/commdlg/ns-commdlg-openfilenamea

Zwróćmy najpierw uwagę na to z jak skomplikowaną strukturą mamy do czynienia. Są tu pola na callbacki, wskaźniki zarezerwowane, przewidziane miejsce na wskazanie od razu offsetu w ramach nazwy pliku i rozszerzenia, starano się nie zapomnieć o żadnym przypadku. Patrząc z perspektywy dzisiaj, ręczne dogrzebywanie się do poprawnej formy doczepienia się do któregoś z hooków, wydaje się jakąś absurdalnie zbędną pracą, ale w 95 było albo to, albo samodzielne rysowanie okienek w trybie 80x25 ze znaków typu ╒══╾---╴

Przejrzałem specyfikacje głównie pod kątem flag, bo czasami w zakamarkach specyfikacji poukrywane są ciekawostki, i nie zawiodłem się. Jedna z flag którą nasi uprzejmi koledzy z chin wstawili do naszego kodu, nazywa się OFN_EXPLORER, i wszyscy rekomendują żeby mieć ją podniesioną (tzn żeby dodać określony bit do wynikowej liczby wstawionej w to pole, robi to linijka

ofn.flags = 0x00080000 |0x00001000 | 0x00000800 | 0x00000200 | 0x00000008;

Pierwsza z liczb, 80000 oznacza jedynkę w tym miejscu ---- ---- ---- ---1 ---- ---- ---- ---- . Czyli ustawia OFN_EXPLORER

Wg opisu na stronie microsoftu, ustawienie jej, powodować powinno wyświetlenie się ‘nowej’ wersji systemowego okienka. Okej, widziałem takie okienka ale nie pamiętam ile lat temu ostatnio, i raczej nie kojarzą mi się z nowymi:

Tym bardziej postanowiłem sprawdzić co wydarzy się jeśli podczas wywołania, umieszczę w tym miejscu zero, jak wygląda prawdziwe okienko otwarcia pliku, oryginalne, bez makeu-pu, który w mainstreamie został już dawno zastąpiony kolejnym.

I tym sposobem, trafiłem na główny, tytułowy, zapomniany interfejs. Przedstawiam państwu, prawdziwy wygląd okienka otwierania pliku na systemach Windows (działające dalej na najnowszym buildzie windowsa 10).

I tym sposobem, trafiłem na główny, tytułowy zapomniany interfejs.

Przedstawiam państwu, prawdziwy wygląd okienka otwierania pliku na systemach Windows (działające dalej na najnowszym buildzie windowsa 10).


 
 
2022:03:31   Population:ONE permalink

Ci którzy mnie znają, wiedzą jak bardzo lecę na nowe technologie, w tym w szczególności na VR, czyli możliwość zabrania innej istoty do swojego snu.

Nie będę tu szczególnie długo o samej technologii pisał, ale opowiem o aspekcie społecznym, który dotyczy mnie istotnie jako osoby aspołecznej. Moje pierwsze próby oswajania się z obecnością innych ludzi za pomocą technologii to oczywiste eksperymenty z VR Chatem. Opowiem o nich najpierw bo ciekawe i śmieszne.

Albo nie, najpierw akapit o Echo Arena, które było polecanym przez wszystkich darmowym tytułem VR (o Alyx nawet nie zaczynam bo dziś nie skończe, to będzie przynajmniej film). Echo poza tym że jest naprawdę ładne, ma dość innowacyjne podejście do fizyki. Wszystko dzieje się w kosmosie, z dala od planet, nie ma grawitacji, podstawową siłą jaka panuje w tym świecie jest bezwładność. Gdy utkniesz, zawsze możesz użyć nadgarstkowych boosterów żeby nadać sobie trochę pędu, i dolecieć dokąd chcesz, ale znacznie szybszą i bardziej efektywną metodą transportu jest chwycenie się np sciany i odepchnięcie. I zrobiłem sobie powolutku cały tutorial, znalazłem się lobby areny i pojawiły się inne postacie. Gdy jednak zdałem sobie sprawę że to co te postacie mówią jest bezpośrednim feedem z ich mikrofonów, a w grze nie ma botów, i wszystkie inne postacie jakie spotykam, są awarami innych ludzi, zdjąłem headset i więcej w Echo Arena nie grałem (co innego fabularne EchoVR, w które grałem). Łapiecie flow?

Wiedząc już czego mniej więcej się spodziewać, spróbowałem VRChata, i tu zdałem sobie sprawę z pewnej realizacji, ale najpierw background. Zwiedzałem sobie spokojnie, nie niepokojąc nikogo jakieś bardziej egzotyczne pokoje VRChata, i wtem pojawił się obok mnie jakiś random, podniósł rękę i powiedział 'hello how are you'. Gwałtowny zastrzyk adrenaliny spowodował że nie tylko zrzuciłem z głowy headset ale też panicznie zacząłem wciskać alt+f4 żeby to uczucie, że ktoś jeszcze oprócz mnie jest w tej przestrzeni, minęło.

Ale nie poddawałem się i dalsze próby przełamywania fobii społecznej trwały. Pamiętam (i pewnie nie zapomnę), jak zapuściłem się do jakiegoś bardziej uczęszczanego miejsca typu klub, z barem przy którym stało kilka avatarów, które ominąłem szerokim łukiem, i densflorem gdze na szczęście nie było nikogo. Zwiedzałem sobie ten klub szukając dla siebie miejsca, i jakieś już w miarę dogodne znalazłem gdy dopadł mnie random z 'hello how are you'. Oczywiście zrzuciłem headset ale udało mi się nie wcisnąć alt+f4. Po chwili oddechu i obejściu mieszkania założyłem znowu gogle, i znalazłem swój avatar kucającym za kanapą na piętrze na balkoniku nad densflorem. To była duża realizacja - technologia nie sprawi, że moje problemy społeczne znikną automatycznie, one są we mnie, i nie dotyczą tego co fizycznie robi moje ciało.

Potem kolega Boros (pozdrawiam serdecznie) namówił mnie, za co dziękuję na spróbowanie gry która nazywa się Population:ONE.

Od strony mechaniki jest to typowe Battle Royale (podobne do PUBG czy Fortnite). Sam termin wywodzi się z bardzo brutalnego japońskiego filmu z 2000, idea która została w nim wprowadzona jest taka, że dostępny dla graczy teren stopniowo się zmniejsza, zawęża się strefa w której możesz być jeśli nie chcesz umrzeć, ostatni który przeżywa, wygrywa.

Gracze lądują na różnorodnym terenie, szukają rozrzuconej po nim broni, i próbują wyeliminować się wzajemnie

Elementami które wprowadza Pop:1 jest parkour, tzn każda płaszczyzna nadaje się do wspinania, możesz wdrapać się (za pomocą rąk i przycisku grab na kontrolerach) na dosłownie wszystko, w połączeniu ze drużynowością. Na każdą rozgrywkę przypada sześć tzw. squadów, czyli trzyosobowych drużyn, łącznie osiemnaście osób, wygrywasz tylko jeśli pokonasz wszystkich, ale robicie to w trójkę, jako drużyna. Zawsze otwarty w ramach drużyny mikrofon pozwala informować się wzajemnie o namierzonym na przyjacielu, informować o własnych zamiarach, o ciekawych znalezionych broniach czy potrzebach (można wymieniać się sprzętem), w teorii można wygrać samodzielnie, ale jest to bardzo trudne. Jeżeli naprawdę nie wymiatasz, to jedyna droga do zwycięstwa prowadzi przez sprawną komunikację

Moje początki z tym trybem rozgrywki były trudne, po prostu bałem się całej sytuacji, rozmawianie z randomami po angielsku było z początku przerażające, dlatego pierwszych pewnie kilkadziesiąt gier odbywałem tylko wtedy, gdy udało mi się znaleźć dwóch dostępnych do gry znajomych z Polski. Teoretycznie znam angielski nie najgorzej ale bariery są jednak wtedy większe.

Stopniowo jakoś udawało mi się nad tym pracować i mam wrażenie, że zdobyte skille promieniują na mój daily life. O ile w grze komunikacja jest stricte zorientowana na cel jakim jest pokonanie reszty graczy, o tyle ćwiczenia z robienia tego jak sądze zmiękczyły mój opór przed nawiązywaniem przypadkowej relacji słownej z innym człowiekiem. To bardzo dziwne ale chyba ćwiczenia trochę pomogły

Na koniec jeszcze obowiązkowa wstawka techniczna, bo przecież nie byłbym sobą gdyby nie. Na początek może wideo demo z zapowiedzi gry, to nie jest jej finalna postać tylko beta albo nawet alpha, z zapowiedzi. Wolno przeskakiwać bo nuda

Co jest ciekawe - ostateczna gra wygląda o wiele wiele gorzej niż na demie. Jak do tego doszło? Otóż twórcy gry zrobili deala z oculus/facebook, i wydali ją jako exclusive na platformie oculus, w tym na Quest/Quest 2/Rift CV1/Rift 2. O tyle dwa ostatnie to normalne, pełnoprawne VRy podłączane kablem do PC, o tyle Questy to headsety standalone, nie wymagające komputera za tysiące złotych, dostępne, tanie, powszechne. Zamiast wypasionego GPU i CPU, na pokładzie jest scalak znany z telefonów komórkowych, zasilany z baterii.

Rezultatem jest bardzo (względem mocnego PC) moc obliczeniowa. I okej, współczeny telefon komórkowy ma moc całkiem porównywalną z PC sprzed 10 lat, ale żeby nie było nudności, na pewno nie może nam spaść FPS poniżej 60, jeszcze lepiej >70, Rift cv1 wyświetla w 90fps, a niektórzy mówią nawet o pożytkach ze 120 klatek na sekundę do wyświetlenia, w dodatku razy dwa, bo potrzebujemy osobno lewe i prawe oko żeby widzieć stereoskopowo. I tak population:one zostało wizualnie zdegradowane do poziomu blokowości z okresu pierwszego Tomb Raidera.

Najciekawsze jest jednak to, że królem jest jednak miodność, i dobra, satysfakcjonująca mechanika rozgrywki jest znacznie ważniejsza niż wizualne wodotryski, ilość polygonów czy jakość tekstur. Za cenę grafiki sprzed 15 lat dostajemy inkluzywność, populację graczy na tanich dostępnych headsetach, dzięki którym nie czekasz godziny na zapełnienie wszystkich osiemnastu slotów ochotnikami na strzelaninę.


 
 
2022:03:19   Długi ogon permalink

Zostałem ostatnio zapytany ile aktualnie dziennie zbłąkanych dusz, takich jak Twoja, trafia na tą stronę. Ustalenie tego nie było aż tak proste jak się spodziewałem, nie śledziłem tego dawno.

W zasadzie chyba ciekawiej będzie jeśli zaczniemy od fejsbuka. Patrzyłem na wykresy oglądalności na fanpejdżu zambariego, i o ile niektóre posty trafiały do kilkuset osób, o tyle re-entry czyli że kogoś zaciekawiła Twoja treść i wraca zobaczyć więcej wychodziło w okolicach zera. Gry publikujesz relację, notyfikacje dostanie jakaś grupa minionków, a Ty będziesz cieszyć się z lajków przez półtora dnia. Potem uwaga wygasa, a przecież jak to, nie wyświetla się mój content każdemu na planecie?

No i tu wchodzi merit posiadania własnej strony www.

Bo o ile przed rewolucją cyfrową miałem około jednej klasy szkolnej odwiedzin dziennie, i moje aktualne 'zasięgi', które są w rejonach jednej osoby dziennie, na pozór wyglądają bardzo źle, strona umarła. Ale jednak czytasz to, od czasu do czasu, czyli jest to w sumie daleko więcej niż zero re-entries jakie daje ci fejsbuk.

Przecież sieć stara się ci zawsze podać nowy content, lepszy. Nie będzie wskrzeszać twojego starego contentu. Mógł być dobry ale widziało go siedem osób. U mnie owszem, widziało go tuzin osób w zeszłym roku, ale być może czytasz to daleko w przyszłości i długi ogon takiego bezsensownego posta może już liczyć batalion. Intensywność ataku memicznego to jedno, ale jego persistence jest ostatecznie bardziej wiążący.

Do tego dochodzi całkowita niezależność. Nie mam tu nad sobą regulaminu, community guidelines, nawet jeśli poczujesz się (choć staram się do tego nie doprowadzić) offended tym co tu piszę, to możesz najwyżej wysłać mi maila z uprzejmą prośbą (zambari at gmail dot com)

Minusem jest oczywiście brak dostępu do natychmiastowego odbiorcy, dla wielu potencjalnych odbiorców pula contentu sprowadza się do tego co można 'wyscrollować' na używanym socjalu, w zasadzie skąd mieliby dowiedzieć się że taka strona istnieje, nawet dla wielu firm fejsbunio czy insta czy tiktok stał się główną platformą komunikacji, utrzymywanie swojego www wydaje się być czymś staroświeckim, niemodnym, mało sexy.

Paradoks polega na tym że jednak to czytasz, coś cię tu sprowadziło, do tego listu w butelce na granicy znanego wszechświata.

Wracając do głównego pytania. Wchodzi mało. Jedna, dwie, czasami trzy osoby dziennie .Pisałem o tym już wcześniej kiedy wchodziło jeszcze trochę więcej. Wciąż jednak jedna osoba dziennie to więcej niż pejdż na którego wchodzi jedna osoba na dwa tygodnie. I chyba o tym chciałem napisać.

Aha, i jeszcze jedna ciekawostka. Prawie wszyscy jacy chodzą, po prostu wpisując w przeglądarkę adres, strona nie jest w żadnym istotnym miejscu linkowana, to tym bardziej sugeruje że prawdopodobnie jesteś dziadem, który pamięta.


 
 
2022:03:18   Radiolaria permalink

Do napisania tego posta zainspirował mnie pewien tiktok, który zaczyna się od błędu rzeczowego a kończy ezoterycznym odwołaniem do eteru, więc trochę questionable content, obrazek poniżej powinien do niego linkować

Te formy wydały mi się w jakiś dziwny sposób znajome - chociaż obce. Postanowiłem wpisać termin w google. Okazuje się że owszem, istnieją takie formy życia, chociaż oczywiście bazują na węglu (jak całe życie na planecie ziemia) a nie na krzemie.

Cechą charakterystyczną Radiolarii (Promienionóżek) jest bardzo silna obecność symetrii w geometrii ich szkieletów, zrobionych z prostych związków krzemu bryły, wyglądające bardziej jak zabawa jakimś generatorem geometrii, niż jak forma życia. Skorupki te tworzone są z różnorodnością prawie że płatków śniegu, adaptują się do warunków otoczenia.

Są to byty prastare organizmy pierwotne, choć do dziś występują w mnogiej obfitości, tworząc większość 'zwierzęcej', tzn 'nie roślinnej' części część planktonu, pokrywają dna oceanów

W przeciwieństwie do raczej pacyfitycznych, przeprowadzających fotosyntezę okrzemek, promienionóżki są cudzożywnymi drapieżnikami, 'polują'

Na zdjęciach widać tylko ich szkielety, ale organizmy te miewają odstające nibynóżki, spełniające jakieś funkcje, mogłoby się wydawać że mówimy tu o jakimś zwierzęciu wielkości ryby, ale są to wciąż organizmy jednokomórkowe, niewiele młodsze od bakterii

Jak bardzo stare może być to wspomnienie?

Na początku myślałem że może jest to jakiś nasz pra pra pra przodek, może znamy te wzory z naszego DNA, ale nie. Jedyne co ich gałąź życia łączy z naszą to że mają jądro komórkowe, i że chronią je w środku, poza tym pierwotniaki były na ziemi długo i są dalej, radzą sobie nieźle, ale one istniały tu na ziemi na długo zanim życie zauważyło, że może się wyspecjalizować i łączyć w kolonię. Łatwo to mówić z perspektywy dużego ssaka, w którego szkielecie ma fabrykę czerwonych krwinek, ale gdy pierwsze życie wielokomórkowe powstawało, to te skubańce patrolując w dużych grupach teren we wbudowanych tych pancerzach musiały stanowić poważne zagrożenie dla nas, wielokomórkowców, jeszcze nieporadnych.

Poniżej ciekawe 10 minut patrzenia na te szkielety pod mikroskopem elektronowym, z komentarzem i demonstracją działania maszyny, polecam.

Potem jeszcze chwilę zacząłem zastanawiać się jeszcze nad właściwościami częstotliwościowymi jakie mogą wykazywać takie kryształki. Pewnie rezonują jakoś, są sztywne i łamliwe, wyobraziłem sobie że a może fajny dźwięk jest dokładnie na środku takiej symetrycznej struktury, wyobraziłem sobie ją wielkości budynku, mały kulisty biurowiec wykonany z wbudowywanego rezonansem monokryształu.

Najstarsze cmentarzyska tych istot znaleziono w próbkach wczesnego kambru czyli jakieś pięćset milionów lat temu. Trwałe gówno.

Wyobraziłem sobie (sytuacja baśniowa) trwający pół sekundy błysk świadomości jakiegoś zlepka komórek, budzącego się ku słońcu wewnątrz takiego pokonanego szkieletu Radiolarii.

Bardzo bardzo stare wspomnienia.


 
 
2022:03:18   Co TY możesz zrobić dla ruchu oporu permalink

Kupić zewnętrzny dysk, i regularnie zapisywać na nim ciekawe odwiedzane wideo i teksty (np w pdf)

Dlaczego to ważne?

Content będzie znikał. Niektóre filmy, grupy, staną się prywatne, konta będą usuwane pociągając za sobą usunięcie linków do nich z publicznego internetu.

Część contentu zostanie, ale będzie totalnie zasypany nowym contentem, hashtag którym obecnie potrafisz znaleźć ten filmik, może nawet będzie dalej w wynikach wyszukiwania, ale na 45 stronie, może zapomnisz hashtag

Oczywiście, zapchanie sobie dysku śmietnikiem w którym ze znalezieniem czegokolwiek będzie również problem, jest ryzyko że tam też nie znajdziesz tego czego szukasz, jeśli po prostu będziesz wrzucać wszystko do jednego katalogu.

Ale już na przykład ryzyko, że jak akurat najdzie Cię ochota pokazania komuś czegoś, to akurat nie będziesz miał przy sobe dysku, nie jest w istocie groźne.

We własnym repozytorium contentu nie chodzi o to żeby teraz coś komuś pokazywać, tylko żeby móc w retrospektywie za wiele lat spojrzeć jak inna była sieć 2022.


 
 
2021:11:06   Listary permalink

Najwyższy czas napisać o super użytecznym, a jednocześnie zaskakująco mało znanym dodatku do systemu operacyjnego które nazywa się Listary (chyba że używasz maca, wtedy analogicznym programem jest DefaultFolderX).

Dobra, cofam ten wpis. Po namyśle to jednak będzie wideo:

Ze względów historycznych postać tekstową także załączam:

Jest to jeden z programów które instaluje w zasadzie zaraz po przeglądarce innej niż Edge przy reinstalacji systemu. Nie ściemniam, zanim zainstaluję winzipa/rara/7z, zanim zainstaluję Notepad++, zanim zacznę w ogóle myśleć o tym jakich jeszcze narzędzi na danym systemie będę potrzebował, instaluję Listary.

Listary jest małym utilem, który doczepia się do systemowego okienka 'Open File', i przy każdym przerysowaniu okienka explorera (eksploratora plików?) które czeka na wybór pliku lub katalogu, na dole wyświetla mały panel. Trzy przyciski dostępne na panelu to Favourites, Ostatnio Używane, a pod ikoną pioruna jest kolejny pierdyliard funkcji które Listary ma schowane.

.

Z ikonek czasami korzystam, ale najważniejszą funkcjonalnością Listary jest kontekstowa zmiana katalogu przy przechodzeniu między oknami managera plików (Explorer we wszelkich postaciach, Total Commander itp). Jeśli poprzednim oknem jakie miało focus jest otwarty gdziekolwiek okno plików z otwartym jakimś folderem, to po przy przechodzeniu do okienka Otwórz/Zapisz, jego aktualny folder zostaje w tym oknie zastosowany.

Trudno się to tłumaczy, ale załóżmy że pracuję sobie nad jakimś złożonym projektem znajdującym się w c:/super/mocno/zagrzebany/katalog/340/240/ , i chcę sobie gdzieś tam w podkatalogu zapisać readme.txt. Otworzyłem notatnik, napisałem swoje wypociny, wciskam ctrl+s, a notatnik pyta się mnie gdzie zapisać, proponująć jakąś domyślną scieżkę typu Dokumenty czy Pulpit, i trzeba mozolnie przeklikać się przez całe drzewo żeby znaleźć swój katalog. Większość userów akceptuje to jako zło konieczne i wykonuje za każdym razem mozolnych parę sekund pracy. Ale, jeżeli mam zainstalowane listary, zostawiam notatnika na widoku 'zapisz plik', wciskam alt+tab żeby przejść na chwilę do explorera, jeszcze raz alt tab i jestem już notatnikiem w odpowiednim katalogu

Listary działa z praktycznie wszystkimi programami, z nielicznym wyjątkiem programów które rysują swój selektor plików, np Blender.


 
 
2020:04:25   Photometria / Lambert permalink

Miałem właśnie poważny moment wow. Przedzierałem się dziś przez chaszcze związane z shaderami. A ostatnich parę dni przez ogólnopojętą matmę wektorową (muszę przyznać że temat dalej powoduje u mnie ból mózgu gdy tylko zaczyna się budowanie macierzy 4x4 po to żeby obrócić w 3D 'zwykły' trójwymiarowy wektor. Ile razy bym nie próbował - boli). Spróbuję się o wektorach nie rozpisywać, ale jedno zdanie na ich temat dla kompletności jeszcze się pojawi.

Każdy kto bawił się kiedykolwiek w napisanie swojego shadera, zetknął się na pewno, choćby sumując treść innych shaderów (podprogramów wykonywanych na karcie graficznej, ustalających kolor piksela na podstawie geometrii sceny), z taką linijką:

Ponieważ Lambert zazwyczaj pisany jest z dużej litery, postanowiłem więc z ciekawości uzupełnić wiedzę i dokształcić się o co w zasadzie chodzi. Jego model cieniowania to prawie że najprostsze co da się zrobić, aby 'pocieniować' obiekt, tzn mając wiedzę o kształcie czegoś, i kierunku padania światła, określić jak jasny powinien być narysowana przez nas reprezentacja tego obiektu (najlepiej deterministycznie, bez bazowania na artistic feeling rysującego, bo chcemy zlecić to maszynie). W odróżnieniu od Phonga, i późniejszych modeli, Lambert dla uproszczenia założył że ciało jest idealnie matowe, tzn nie odbija światła bezpośrednio 'do obiektywu', a to które na nie pada, doskonale rozprasza we wszystkich kierunkach. Zapostulował, że natężenie światła odbitego przez takie doskonale matowe ciało, które dotrze do 'kamery' a więc na naszą 'kliszę' będzie proporcjonalne do iloczynu skalarnego (dot produktu) normalnej do płaszczyzny, i kierunku padania światła.

Tu na chwilę wrócę do wektorów, bo rozumiem to zdanie tylko dlatego, że ostatnio temat odświeżyłem. Kierunek padania światła na punkt możemy sobie wyobrazić intuicyjnie - to po prostu ta linia, którą snopik światła pada na nasz wycinek cieniowanego czajniczka. Termin 'normalna do płaszczyzny' jest sposobem oznaczenia nachylenia powierzchni w danym miejscu. 'Normalna' to wektor skierowany dokładnie prostopadle do powierzchni w tym konkretnym punkcie. Dla płaszczyzny normalna jest stała i oznacza kierunek w jaki skierowana będzie równo ustawiona na niej ekierka, dla powierzchni pofalowanych - zmienia i wskazuje na punkt dokładnie 'nad' danym, biorąc pod uwagę nachylenie przylegających do niego punktów. Nie jest to koncept trudny ale nie jest też trywialny. Iloczyn skalarny, albo dotproduct, to sposób przemnożenia przez siebie dwóch wektorów, dający rezultat 1, jeżeli wektory te są identyczne, i mniejszy niż 1 tym bardziej, im bardziej kierunki przez nie wskazywane się różnią, by dla 90 stopni osiągnąć zero (iloczyn skalarny można też przedstawić jako cosinus kąta pomiędzy nimi).

No i okej, ale o czym w zasadzie jest ten post? Otóż praca w której Lambert przedstawi swój postulat, Photometria, wydana została w 1760 roku.

Jeszcze raz, żeby się dobrze załadowało. Podwaliny matematyczne działania dzisiejszych shaderów, i ogólnie renderowania syntetycznych obrazów, zostały zapostulowane 260 lat temu, przez typa który do dyspozycji miał papier, ołówek i trochę świeczek.


 
 
2020:04:10   Przygody z kodem greya permalink


 
 
2020:03:07   Telewizja permalink

Zaczęło się od tego że rzekomo w narodzie jakaś panika ostatnio (mam nadzieję że gdy to czytasz to nie ma już tematu więc go nawet nie poruszę), i postawiłem w tej kwestii na fejsie pewne śmiałe oskarżenia pod kątem telewizji. Serdeczny mój przyjaciel odpowiedział że to nie telewizja jest winna, bo te same przywary dotyczą także prasy i internetu. Leciutko tym zostałem striggerowany, a rezultat, w postaci klasycznego wodospadu słów, wyglądał mniej więcej tak:

Na początek - 'prasę', czyli gazety drukowane na papierze możemy w całej dyskusji dla uproszczenia po prostu pominąć. Po pierwsze tak mało ludzi korzysta z prasy w tej chwili że możemy uznać że ci którzy to robią - wiedzą co robią - spośród wszystkich ludzi których znam używają prasy dwie osoby, czyli w zasadzie to jest błąd pomiaru. Nie wątpię że jest ich więcej w innych środowiskach, ale dla porównania strzelam że około dwudziestu osób które znam, używa regularnie roweru. Idąc tym torem można by wnioskować że stan dróg rowerowych ma większy wpływ na to co ludzie akurat danego dnia pomyślą, niż to co napisała prasa. Ponadto, jeżeli już ktoś czyta, to zazwyczaj nie wchodzi do kiosku ot tak 'prosze mi dać jakąś gazetę' tylko kupuje sobie swój ulubiony tytuł, bo lubi sobie felietonik przeczytać (albo, jak w przypadku drugim, jest dziennikarzem który z racji wykonywania zawodu musi wiedzieć o czym się pisze). Osoba taka za każdym razem muszi potwierdzić swoją decyzję zostawiając w sklepie pare złotych. Nawet jeśli redaktorzy są tendencyjni a tytuły należą do niemców, możemy uznać że osoby płacące za dostęp do tekstów są w miarę odpowiedzialni ludzie i że wiedzą co robią. Nie do końca tak uważam, ale na potrzeby tego wywodu tak założę.

Jest ogromna różnica pomiędzy internetem tak zwanymi a telewizją. W zasadzie poza tym, że jedno i drugie operuje na informacji, oraz korzysta z słów i obrazów, to nie widzę podobieństw. Internet jest miejscem pełnym interakcji, gdzie wykonujesz swobodne ruchy, nawigujesz, szukasz, sprawdzasz, zmieniasz, dopytujesz, dopisujesz, zbierasz feedback (nawet jeśli są to tylko lajki). Dla porównania telewizja jest bardziej miejscem gdzie dosiadasz po pracy, bo ci się nie chce poszukać, popisać, popytać, poodpowiadać. Telewizja jest miejscem gdzie leci jakiś film, ale nie da się go oglądać bo co parę minut ktoś hałaśliwym donośnym głosem sugeruje że powinieneś sobie natychmiast kupić jakiś lek, albo samochód. Rozumiem że być może niektórzy postrzegają swoje miejsce pracy jako czyściec, gdzie czują się źle, i może robię źle obrażając ich pragnienie 'normalności', ale z drugiej strony warto mieć świadomość bardzo niebezpiecznych mechanizmów które bez naszej świadomej wiedzy zaczynają wtedy działać (skupię się tu na aspekcie tworzenia postaw światopoglądowych, więc nie ma sensu odnosić tego co napiszę do filmu przyrodniczego czy tego sensacyjnego na który nie udało ci się wybrać do kina.

Najbardziej podstawowy mechanizm to (do pewnego stopnia uzasadniony) mechanizm zaufania. To, co zostało pokazane w telewizji, jest uznawane za prawdę. Staje się faktem, i z automatu przestaje się dane zdanie kwestionować. Przecież w telewizji nie powiedzieliby nieprawdy. Ale istnieje drugi, komplementarny, o wiele bardziej zdradziecki, który każe nam myśleć o rzeczach którymi telewizja nie raczy zaprzątać sobie czasu, jako o 'nie-prawdzie', albo 'prawdzie mniejszej wagi'

Na tym mechanizmie na chwile się skupmy. Załóżmy że oglądasz program publicystyczny (mogliście się domyśleć że nie będzie tu o powtórkach AirWolfa)

Telewizja stara się zachować pozory obiektywizmu, podsuwając ci do wyboru dwie przeciwstawne opinie, i dając Ci zdecydować samodzielnie. To iluzja. Często sam fakt określenia ram problemu w ten czy inny sposób, określa ogólną klasę odpowiedzi które możesz uzyskać. Czasami obydwie odpowiedzi są błędne. Często są akceptowalne, ale bywa też że pomijany jest fakt, że istnieje masa innych odpowiedzi o których się NIE mówi.

Gdy obowiązuje paradygmat że istnieją odpowiedzi A i B, przecież nie zaprasza się do studia osób które mogłyby udzielić odpowiedzi innej niż z pozycji A i B. Selekcją gości prędzej wybierze się tych zwolenników A i B, którzy znani są z agresywnego tonu i nakręcania emocji, reklamy sprzedają się przecież gorzej w trakcie merytorycznej dyskusji, niż w trakcie obrzucania się tortem.

Żaden redaktor nie doświadczający akurat myśli samobójczych nie zaprosi do programu osób, mogących poddać w wątpliwość sposób w jaki zadane jest pytanie - bo i po co, jeszcze widz poczuje się nieswojo, a reklamodawcy postanowią zabrać swoje gówno gdzie indziej. W telewizji chodzi przecież o to żeby ten czas po pracy spędzić miło, a najlepiej (tam gdzie mamy spolaryzowane opinie) w poczuciu, że Twój reprezentant, dobrze nagadał tym idiotom co lubią to czego Ty nie lubisz. I zasadzie niby nie ma tu nic złego, ale coś jednak jest

Samo to, że telewizja istnieje, jest całkiem w porządku. To że trzeba za nią płacić jak się nie ogląda też aż tak bardzo mnie nie boli - ludzie którzy nigdzie nie jeżdżą też muszą płacić za drogi. To że jest dużo ludzi którym się to podoba, lubią to, jest też bardzo nawet okej. Jeden lubi pić, drugi lubi palić, trzeci lubi grać w piłkę, a pozostałych piętnastu lubi oglądać telewizję. Osobiście uważam że to co kto lubi to jego prywatna sprawa, a skoro tak znacznej większości ludzi ta forma spędzania wieczorów odpowiada - widocznie nie może być aż taka zła.

A potem, ponieważ ('mówią-więc-prawda' oraz 'powiedzieliby-gdyby-było-ważne') zaczynamy nieświadomie zapadać się w te koleiny myślenia, a umysł nie ma się czego chwycić (bo przekaz jest totalny) i tylko czasami przeczuwamy, że może to chyba jednak jest ściema. Pojawia się dysonans poznawczy który jednak jest szybko tłumiony, bo swędzi i w zasadzie po co.

Zacząłem na to zwracać o wiele większą uwagę w czasie gdy mieszkałem poza krajem. Znacznie łatwiej jest zauważyć to stojąc nieco z boku - nie doświadczając całości ściekowej rury, albo stojąc na co dzień pod inną, ale patrząc czym w zasadzie w rodaków media karmią. Zagranica przedstawia sprawy pod innym kątem (projektowanym pod inne społeczeństwo), subtelnie ryjąc koleiny, o nieco innym wyżłobieniu, przez co pojazd buja się, gdy jedzie po nich, a kierowca ma szansę spojrzeć na sprawę pod nieco innym kątem. Gdy nie stykasz się z przekazem cały czas (oraz, co ważniejsze z jego cechami, potwierdzającymi, legitymizującym to co zostało powiedziane poprzez rozmowy w przysłowiowej kolejce po mięso) jesteś jakby osłonięty przed główną falą uderzeniową - i widać wtedy o wiele wyraźniej co jest legitną myślą w narodzie, a co echami projekcji prezentowanej nam z medialnego taśmociągu.

Telewizja nadaje ton dyskursowi publicznemu, ludzie rozmawiają spontanicznie o tym co wczoraj widzieli, a przypadkowy przechodzień zapytany co się akurat dzieje na świecie nie tylko powtórzy to co zapamiętał z ostatniego serwisu informacyjnego (i będzie przekonany że nic więcej się przecież nie działo - gdyby działo się coś ważnego, to na pewno już by o tym było w telewizji - proste). Ten sam przechodzień, do opisu tych zjawisk, zupełnie podświadomie (myśląc że tylko tak się da) użyje do opisu tych zjawisko podobnego języka, podobnych słów.

Tu pokusa jest wielka. Mając kontrolę nad przekazem który trafia do (praktycznie) wszystkich, możesz w zasadzie dowolnie definiować znaczenie słów, zmieniać je. Nasycać emocjonalnie. Przecież wystarczy że do swojego popularnego programu publicystycznego, przez parę miesięcy zapraszać będziesz ludzi reprezentujących ten sam zbiór poglądów, aby stopniowo wypłukiwać ze społeczeństwa choćby przeczucie, że poglądy mogą też być inne.

Nasi goście, z grup A i B, zaczną ci już sprzedawać całe zagadnienie tak, że nie będzie dla ciebie podmiotem dyskusji to, że są dwie grupy. Grupy te co prawda sprzeczają się, czy parówka lepsza jest z majonezem czy z keczupem, ale wspólnie, czego wprost nie widać, zgadzają się co do tego że sama parówka jest dobra.

A teraz plot twist.

Mówię o zapraszaniu ludzi, bo na zapraszaniu ludzi się znasz, i rozumiesz jak mógłbyś pokierować dyskusją zupełnie inaczej, gdyby zamiast pana B była pani C. Ale większość tego co leci w telewizji (z treści właściwej, więc nie mówię o reklamach i filmach, tylko o publicystyce), to chyba już od dawna nie są takie programy że ludzie sobie rozmawiają.

Nowoczesna telewizja nie musi zapraszać przedstawicieli, robi to inaczej. Z zapraszania ludzi są same problemy. Może nie przyjdą, może będą nudni, a może wręcz przeciwnie - powiedzą nie to co chcemy żeby powiedzieli. Do tego tempo akcji zupełnie nie takie, nuda, nic się nie dzieje

Na szczęście istnieje bardzo dobry, sprawdzony sposób na obejście tego problemu. Nazywa się to 'montaż'. Polega na tym że wysyłasz operatora z praktykantem na, dajmy na to manifestację. Oni spędzają tam pół dnia, nagrywają gdzieś pomiędzy pięcioma a dziesięcioma wypowiedziami jakichś losowych ludzi. Nie musisz im nawet specjalnie tłumaczyć co mają robić, zresztą na dziennikarstwie to podejrzewam jest wtłaczane dosyć szybko. Dziennikarz wie, że jeśli spytał losowego człowieka o zdanie na temat (dajmy na to) toczącej się manifestacji, a on ci odpowiedzial, że 'kościół latającego potwora spaghetti popiera', to możesz to w zasadzie skasować, bo i tak nie wejdzie do programu. Więc nagrywasz następną setkę z następną osobą, ona ci mówi że skręciła kostkę, no to też słabo. Następny ci powie że on uważa że bez sensu manifestacja, idziesz dalej. Chodzisz i każesz tym ludziom mówić co myślą tak długo, aż nie znajdziesz paru wypowiedzi które pozwolą potem, w montażu złożyć się w sensowną narrację, pasująca z grubsza pod tezę, odwołującą się do emocji do których chcesz się odwołać.

Przy takiej pracy najlepiej, jeżeli pierwsza osoba powie, że to wszystko wina zwolenników tezy A a druga powie że to wszystko wina tych debili co wolą B. Wtedy w zasadzie masz koniec pracy, nagrajmy jeszcze jakieś ogólne i zwijamy sprzęt i do domu, żona się ucieszy.

Po zmontowaniu to wygląda tak że spierali zwolennicy dwóch wielkich ugrupowań - bo to jest wizja która się pokrywa z interesami jakichś ważnych ludzi których boi się twój szef. Jesz sobie obiad zadowolony z siebie i w zasadzie wszystko jest w porządku, przecież tak właśnie jest, czyż nie?

Ale gdy masz dostęp do innych źródeł (choćby dla przykładu mieszkasz w innym kraju) to zaczynasz widzieć że halo, w tamtej telewizji narracja jest zupełnie inna, niby fakty te same, ale wnioski dotyczą czegoś zupełnie innego.

Jeżeli codziennie nagrywasz piętnaście osób, a potem replikujesz to nagranie i odtwarzaz w milionach domów, to samą decyzją o tym kogo dać, a kogo nie, jeżeli będziesz to robił konsekwentnie przez dłuższy czas, pozwala ci dość mocno modyfikować rzeczywistość, w praktycznie niewidoczny sposób. Bo widz nie ma dostępu do surówki, nie wie czego NIE puściłeś

A co jeśli na tej manfiestacji większość stanowili przedstawiciel latającego kościoła spaghetti, protestując przeciwko ekspansji rastafarian? I tak przed kamery pchać będą się lokalni samorządowcy, opowiadając jak to oni właśnie stoją po stronie ludu.

Telewizja mówi nie tylko 'mówię tylko prawdę, nie kłamię', ona ci także sugeruje (choć nie może wprost powiedzieć tak, bo musiałaby skłamać i byłoby za łatwo podważyć), że przedstawia ci kompletny zestaw faktów potrzebnych do wyrobienia sobie opinii. Nasz statystyczny przechodzień będzie przekonany, że z programu dowiedział się wszystkiego czego powinien o problemie, najlepiej jeśli pokrywa się to z tym co już wiedział, czyli że reprezentancji grupy tej-co-nie-lubię to jacyś debile, bo człowiek głównie to chce się poczuć lepszy od kogoś innego (a znaleźć idiotę do powiedzenia paru słów aż tak trudno nie jest).

Gdy o tym myślę - pracując przy tej maszynerii, jedząc chleb z tego pieca, też wyciąłbym pewnie zwolenników latającego potwora spaghetti, bo jeszcze trzeba by najpierw kowalskiemu wytłumaczyć o co tam w zasadzie chodzi, bez pół godzinnego wprowadzenia do czczenia durszlaka, pani grażyna pracująca w biedronce poczułaby się niezbyt komfortowo, nie będąc pewną czy ktoś nie próbuje zrobić ze niej debila? Nikt nie daje medal za budzenie ludzi. Płacą nam za utrzymywanie ich we śnie. I stąd chyba potem wynikają te wynaturzenia, które ostatecznie telewizja powoduje - montażyście, ani dziennikarzowi nie musi osobiście przyjść żydowski bankier i zakazać wzmianki o potworze. Uczestnicząc w procederze naturalnie czujesz, że w interesie telewizji (więc i twoim) jest podtrzymywanie tej iluzji

Zaczynasz wierzyć w to, że przecież na pewno pokazalibyśmy prawdę, gdyby była prawda lepsza niż ta którą pokazujemy.

Dopływając powoli z tezą do brzegu - w internecie przekaz nie leci 'ot tak', sam. To znaczy częściowo tak jest, bo mamy newsfeed i FILTER BUBBLE, ale jednak dla osoby aktywnie korzystające z internetu będzie naturalne otworzyć w zakładce obok wikipedię, aby zweryfikować fakty o których jest mowa, a w zakładce obok poszukać źródeł mogących tą wikipedię podważyć. To że każdy serwis jest prowadzony przez ludzi, którzy prezentują tam swój pojęciowy framework, swoje A i B, jest w dużym stopniu równoważony poprzez to, że masz WYBÓR, w bardzo niewielkim stopniu ograniczony (ponownie, filter bubble) źródeł z których korzystasz.

Ponadto, i to chyba różnica najważniejsza, masz możliwość tworzenia swojego źródła, swojego kanału na youtube, swojego routera (twitter), czy wreszcie, prowadzenia swojego czasopisma (np. pozwala mi publikować ten felietonik bez pytania się kogokolwiek o zgodę, a ponieważ sam płacę za serwer - dopóki nie łamię prawa - nikt nie ma możliwości zmuszenia mnie do usunięcia czy zmiany wpisu - choć konstruktywną krytykę przyjmuje i bywa że coś zdejmuję po namyśle). Wybór pomiędzy dwunastoma kanałami nadającymi swoje papki ma się nijak to wolności przeglądania treści we wciąż jeszcze publicznym i ogólnodostępnym internecie.

Ilość dostępnych w publicznym internecie zbliża się do dwóch miliardów, na siedem i pół miliarda ludzi. Ma on swoje problemy (po raz trzeci, filter bubble), ale nijak mają się one do ciasnego kaftana bezpieczeństwa jaki zakładamy sobie biorąc do ręki pilota


Kontynuując porównanie starego medium i nowego medium - Internet jest jak skrzydła służące do przemieszczania jaźni, a przy nim telewizja to wygodne kapcie żeby ci było ciepło nogi jak w wrócisz do domu. Jedno i drugie środek transportu, tyle podobieństw, reszta to różnice.

 
 
2020:03:02   Blockchain permalink

przeklejka mojej odpowiedzi na pytanie z jednej z grup naukowych:

anonimous: Ej, tak sobie myślę, mamy 2020, czy są już jakieś faktyczne zastosowania blockchaina? Kryptowaluty się nie liczą, wyciąganie hajsu na startupy też.

zambari: podstawową funkcją blockchaina jest trwałe splątanie informacji, tzn nie istnieje obecnie żaden praktyczny sposób modyfikacji choćby bitu z oficjalnej przeszłości danego bloku bez zamienienia go w szum. wyobrażam sobie że ktoś gdzieś blokchainuje wikipedie, ogólnie podejrzewam, że wykłuwają w bloki ci którym zależy na tym żeby istniał ciągły cyfrowy log teraźniejszość, z obawy przed podróżnikami w czasie (lub bycia złamanym przez silną AI, na razie jest to najskuteczniejszy sposób zablokowania zmian). w przypadku walut chodzi o zamrożenie transakcji (przelałeś pieniądze, nowy blok stał się aktualnym czyli są już twoje, co by się dalej nie działo), ale są też inne zastosowania


 
 
2020:03:01   Necromancy permalink

Przyszła się do mnie dziś metafora.

Zaczęło się od tego, że programista musi być trochę leniwy. Zbyt pracowity człowiek po prostu zrobi co ma być do zrobienia, bez marudzenia. Programista powinien mieć bardzo rozwinięty zmysł zauważania wzorca, coś w rodzaju

"hola hola, przecież od dwudziestu minut robię dokładnie to samo, słyszę regularność w pracy swoich palców coś jest nie tak"

tak jak młynarz budzi się ze snu gdy ustaje dźwięk młyna, programista budzi się ze snu gdy słyszy rytm w dźwięku wydawanym przez swoje palce. To oznacza, że znajdujemy się w cyklu, że robimy rzecz, którą być może mogłaby robić maszyna.

W tym momencie trochę skłamałem. W rytmie pisania kodu nie ma nigdy słyszanego rytmu. Znam ten dźwięk z czasów pracy przy rotoskopii, cyzelowania keyframeów, mozolnego przekładania czegoś z jednego miejsca na drugie, gdzie elementów jest na tyle mało że jeszcze nie opłaca się pisać skryptu w jakimś topornym środowisku, ale gdyby elementów do przełożenia było cztery razy tyle, to mogłoby się już opłacać (obserwując wirujący zegar i słuchając monotonnego rytmu pracy swoich rąk. Dobra zeszliśmy z tematu

Programista musi być leniwy, bo jego rolą jest zbudowanie maszyny, która będzie robić sama to, co wcześniej robił człowiek, albo co mogłaby robić armia ludzi gdybyśmy mieli ich gdzie nocować i czym karmić przez parę lat, w każdym razie celem jej lub jego jest stworzenie czegoś (będziemy myśleć o tym w kategorii bytu), co będzie miało pewną dozę samodzielności istnienia.

Trochę jakby tworzyło się małą istotę żywą.

A potem jest serwis. Serwis jest wtedy jak maszyna przestała działać. Mogło się coś zużyć, zazwyczaj coś się po prostu zmieniło z warunków na jakie maszyna była projektowana, jakiś element wypracowanej pomiędzy sensorami, logiką a częścią renderującą równowagi został wytrącono poza zakres stabilny. Maszyna wymaga odrobinę miłości, odrobinę opieki. Jak dziecko.

Ale jednak nie, dla życia, tego prawdziwego, zmienne warunki nie stanowią problemu, adaptuje się, to bardzo kosztowne ale ostatecznie się adaptuje.

Program, czy jak u mnie, instalacja, umiera. Czasami poprzedza to okres choroby, niedomagania, okresu, podczas którego gdybym był wtedy przy niej, mógłbym przeczuwać że coś się dzieje, ale często dzieje się to gwałtownie. W końcu śmierć następuje (ostatecznie gdy pleśń zje kondensatory stabilizujące zasilanie na płycie głównej, ale nie o tym przypadku mowa). Wtedy trzeba to coś wskrzesić. Tu następuje tytułowe spostrzeżenie tego posta: Technologia to magia Nekromancji.

No więc przyjeżdżasz na miejsce, faktycznie, pacjent nie żyje, zmarł. Czasami to coś banalnego, sprzątaczka ruszyła kabel i odłączyła zasilanie. Czasami trzeba zabrać zwłoki do bazy, ocalić działające organy i wymienić resztę.

Ps. najczęściej sekcja zwłok wykazuje za przyczynę awarii nie gnijące kondensatory, a Twój własny błąd. Nie popełnia błędów tylko ten co nie robi.


 
 
2019:12:14   Github part one permalink

Opowiem wam co mi się właśnie przydarzyło. Historia hermetyczna ale chyba czytelnicy tej strony są do tego przyzwyczajeni.

Sobota wieczór, czas na odświeżenie tematu generowania perlin noise w Unity3D za pomocą shadera (jest mi potrzebne, dłuższa historia, innym razem).

Pierwszą rzeczą którą robię w takich sytuacjach jest sprawdzenie czy keijiro przypadkiem nie zrobił tego dawno temu, i oczywiście zrobił, trzy lata temu, ale bardziej jako proof of concept i niezbyt użyteczne do moich celów

Niezawodne google pokierowało mnie w strone TurbulenceLibrary i tu wylądowaliśmy zdecydowanie bliżej celu (prawie na miejscu).

Wtyczka miała mały kosmetyczny problem przy próbie odpalenia, zakodowana na sztywno była ścieżka do szablonu shadera, i jeżeli przypadkiem umieściłeś katalog w innym miejscu to nie potrafiła się ogarnąć i w tym miejscu stawała.

Ponieważ u mnie rzeczy często zmieniają miejsce postanowiłem poświęcić te pięć minut i dopisać wyszukiwanie właściwego pliku, raptem parę linijek

Pomyślałem wtedy, że to może być ważny moment, bo ogólnie wtyczka jest bardzo potężna, ale porzucona, zmiana którą wprowadziłem nie powoduje żadnych side effects, a jedynie naprawia praktyczny problem, więc mam rzadką sytuację gdzie jest względnie jasne że zmiana którą zrobiłem jest in plus, co więcej, inni mogliby na niej skorzystać

Z sercem bijącym na ramieniu otworzyłem tutorial tworzenia na githubie pull requestów. Utworzyłem requesta, napisałem opis, ale gry próbowałem go wysłać okazało się że to repo zostało zamrożone.

W takiej sytuacji nie pozostawało nic innego jak stworzyć forka

Okazało się, że istnieje ich już siedem

Co tu teraz zrobić? Zrobiłem to co musiało zostać zrobione czyli przejrzałem wszystkie siedem forków, i na szczęście tylko na jednym był jakikolwiek ruch (dwa commity zmieniające formatowanie, ale przy okazji psujące nieco strukturę katalogów. Skończyło się oczywiście ósmym forkiem (zwłaszcza że przeczuwam że jeszcze tam coś dopiszę), ale chciałem tak naprawdę nie o tym.

Zaglądając na profile ludków, którzy klonowali projekt (podejrzewam że wykonując po prostu w ten sposób publiczny 'backup' chroniący ten kod przed zaginięciem na wypadek jakby autor zdecydował się je usunąć, doszło do mnie, że ludzie którzy wpadli na ten sam pomysł byli podobni do mnie zainteresowaniami. Niby oczywiste ale jednak zastanowiło mnie to gdy w zasadzie splądrowałem ich projekty, patrząc 'o to, się przyda' i 'o to też się może przydać', narzędzia do geometrii, shadery, OSC, ogólnie parę tematów do których dość regularnie wracam. W końcu trafiłem na to


https://github.com/bryanrtboy/ArduinoSerialThreading

W zasadzie nic ciekawego, ot, hackerski projekt jakiś, jak każdy inny. Na mnie osobiście zrobiło to wrażenie na pewno większe niż na was, ponieważ nie dalej niż 72h temu bawiłem się tematem. Tzn obydwoma tematami. Tytuł repo sugeruje że rzecz jest o threadingu w dostępie do portu szeregowym pomiędzy unity a arduino - co też usprawniałem w swoim własnym kodzie bardzo niedawno, ale potem przyjrzałem się wykresom (są animowane czego już mi sie nie chcę tu kopiować ale wystarczy kliknąć). Bardzo niedawno bawiłem się prototypując zabawkę która wyczuwa zbliżającą się do niej rękę i zaczyna migać wesoło diodkami już odrobinę wcześniej, zresztą pokażę wam.

Czujniki dotyku ESP działają na zasadzie pomiaru pojemności elektrody - układ pobudza ją falą prostokątną i mierzy odpowiedź, tzn po jakim czasie napięcie faktycznie osiągnęło zadany poziom na danej nóżce - czas ten wydłuża się w miarę wzrostu pojemności (a więc zbliżania się do elektrody powierzchni palca, którą traktujemy tu jako uziemioną. Działa, chociaż nie działa za dobrze.

Jak się okazuje laboratorium działające pod skrzydłami Disney Studios opracowało metodę detekcji nie tylko odległości palca użytkownika od powierzchni interakcji, ale, za pomocą modulacji częstotliwości pobudzenia elektrody, i późniejszej analizy widmowej odpowiedzi, uzyskać można o wiele bardziej szczegółowe informacje o tym co robi ręka użytkownika, do momentu że podobno całkiem dobrze działa sterowanie za pomocą gestów. Poczytać można o tym tutaj:

Opis technologii disneya na extremetech

Opis wersji DIY na instructables



UPDATE:
Ciekawostka z katalogu synchroniczności świata. Ten wpis napisałem cztery dni temu, publikuję go dziś. Czyli wpływ na rzeczywistość miał nawet nie opublikowany najwyraźniej (albo po prostu randomowy wynchron):

Co oznacza, że prawie dokładnie wtedy kiedy podekscytowany opisywałem Wam moje przygody z forkowaniem po raz pierwszy projektu, dwa moje projekty zostały sforkowane.


 
 
2019:07:30   KineticJamm permalink

chwila pograne


 
 
2019:07:09   Harmonic Clock i Zaquencer permalink

Harmonic Clocka zlutowałem 8 czy 9 lat temu, ale tak naprawdę nigdy go specjalnie nie używałem, az do wczoraj. Zaquencer używany jako arpegiator, kontrolowany z elektorna, kontorlujący x0xb0xa, chciałem sposobu na podejrzenie nut które faktycznie są przez ten setup wypluwane. Wystarczyło sięgnąć do schowka z prototypami i gotowe. Przykład rzeczy które robię sobie 'na zapas' jeszcze nie wiedząc dokładnie po co.

Przy okazji drugi filmik, nagrany dnia poprzedniego, opowiadający więcej o działaniu tego setupu


 
 
2019:07:08   Rocznica permalink
Trzecia historia
 
 
2019:07:08   Rocznica permalink
Z okazji zbliżającej się (a być może nawet przekroczonej, bo po wersji 1.0 nie został nawet ślad w webarchive) dwudziestej rocznicy odpalenia tej strony, postanowiłem wreszcie odpalić permalinki (dostępne są po prawej stronie przy poscie). Dodatkowo zaczęło ponownie działać oglądanie starszych postów (przez jakiś błąd dało się obejrzeć tylko ostatnich 20). Za dużo mądrości tam nie ma ale jakaś wartosć historyczna jest. Also czytanie swojego kodu sprzed kilkunastu lat, bezcenne
 
 
2019:06:010   Szybkie granie permalink

Eksperymentalne nagranie w 238bpm


 
(1-15)   (16-35)   (36-55)   (56-75)   (76-95)   (96-115)   (116-135)   (136-155)   (156-175)   (176-195)   (196-215)   (216-235)   (236-255)   (256-275)   (276-295)   (296-315)   (316-335)   (336-355) 


 
  2D Guestbook::2DGB   (cc) 1982 1986 1998 2000-2019 2020 2021 2022 by zambari@gmail.com  
  

Creative Commons License