Emergencja

dziwny wstęp

mam czasem takie dziwne zdarzenia, takie momenty, w których po bardzo, bardzo długim wpatrywaniu się, analizie, gdzie wszystkie szczegóły obrazu już zostały przeprocesowane i przemyślane… nagle orientuję się, że to coś oczywistego i znanego – powiedzmy 'krowa’. takie oczywiste, takie znane, ale nie miało imienia, gdzieś się mijałem ze znaczeniem. i nagle okazuje się, że wszyscy to znają, wiedzą o tym a moje analizy zaczynają się wydawać śmieszne… trochę jak anty-Eureka

tak właśnie wpadłem na pojęcie Emergencji, które okazało się wrotami to starego wymiaru na nowy sposób. koncept ten istnieje w filozofii ogólnej od czasów Arystotelesa, więc nie mam wymówek, że to jakiś nowy pomysł i na niego nie trafiłem. a jednak poznałem go bardzo niedawno, na dniach, a idealnie opisuje to, w jaki sposób 'czuję’ świat i jego istnienie i wspaniale uzupełnia idę konwergencji, popierając moją intuicję w kwestii powstania rozproszonej życia w Internecie… co więcej, poza filozofią, jest zjawiskiem powszechnie znanym i wykorzystywanym w biologii, i jak się okazuje ma znaczenie w neuro-naukach i badaniu funkcjonowania mózgu… ale to już nowsze tematy. czeka mnie sporo lektur, szczęśliwie kiedy już ma się słowo-klucz, bramy Internetu stoją otworem i służą wiedzą wszelaką i oh… jak ja mogłem na to trafić tak późno?!

„it’s not a bug, it’s a feature” (;

Emergencja

w dużym skrócie emergencja [emergence -> wyłanianie się, powstawanie] to koncepcja polegająca na spostrzeżeniu, iż wiele małych elementów, buduje układy złożone, które nabywają nowych cech, w żaden sposób nie wytłumaczalnych na poziomie samych elementów. to super-uproszczenie olbrzymiego tematu, który jak się okazuje ma wiele płaszczyzn i dorobił się gałęzi w wielu obszarach i gigantycznych polemik z różnych zakresów…

ale dla czego to takie istotne? ponieważ jest to jeden ze sposobów w jaki postrzegana jest tajemnica życia. kiedy z 'martwych’ atomów zbudowana jest myśląca istota – jak to się dzieje, gdzie jest to przejście, ten moment, w którym elementy o właściwościach A nagle, będąc w grupie, połączone za pomocą tych właściwości w jakiś większy system, nagle nabierają właściwości B – np. umiejętności myślenia, analizy i przewidywania?

Koncepcja sieci neuronowych powstała jeszcze w latach 4o’ ubiegłego stulecia, najbardziej znanymi osobami są Warren McCulloh wraz Walterem Pittsem, którzy stworzyli pierwszy matematyczny opis działania neuronu. pierwsza implementacja natomiast – Perceptron – powstała w 1957 roku, stworzona przez Franka Rosenblatta. lubię takie lekcje historii, ponieważ wśród nowinek, zakrzyczeni przez media o tym jak to sztuczna inteligencja jest novum – warto wiedzieć, że aby dotrzeć do tego miejsca, chwilka była potrzebna. tak ze 1oo lat. przy okazji bardzo polecam film Veritasium o początkach AI i o tym, że być może przyszłość leży w … analogowych procesorach.

ta przydługa dygresja ma na celu pokazać, że pomimo, iż od prawie 1oo lat badamy działanie samego mechanizmu inteligencji, a dzisiejsze AI wyraźnie pokazują jak niesamowite daje to efekty i działa wedle założeń, wydawać by się mogło, że rozumiemy… naukowcy rozumieją… albo że ktokolwiek, ale na pewno są tacy co rozumieją – jak działa mózg, czy skąd się bierzemy 'MY’. a jednak przy rozmowie z osobami tworzącymi takie sieci, odpowiedź jest prosta – nie mamy pojęcia. nawet nie do końca wiemy co w tych sieciach się dzieje. owszem widzimy efekty, znamy ogólne zasady na poziomie neuronu czy małych grup, ale potem dzieje się magia… efekt skali, złożoność, która zmienia zasady gry.

… to magia Emergencji – kiedy połączenie drobnych, małych układów, nagle nabiera zupełnie innego wymiaru kiedy zwiększa się skalę i złożoność. polecam bardzo ciekawy artykuł z QuantaMagazin, traktujący m.in. o tej nieuchwytności, tej zmianie skali, której nie potrafią wytłumaczyć twórcy modeli językowych jak chatGPT, gdzie ten sam model, operując po prostu na większej ilości danych, nagle nabywa cech, umiejętności, które były nie do przewidzenia. to zaiste fascynujące zjawisko, i choć nazwę jego poznałem niedawno, analiza samego zjawiska i ekstrakcja danych zajmowała mi wiele czasu przez wiele lat. fascynujące jest to, że wszechświat operuje w wielu skalach, jakby 'piętrach’, i w każdej warstwie całość działa trochę inaczej – żeby daleko nie szukać, jednym z bardziej kontrastowych przykładów może być fizyka kwantowa i problemy pożenienia jej z tą klasyczną, Newtonowską. ale przykłady są wszędzie w koło nas. kiedy zacznie analizować się dowolny temat, z dowolnej dziedziny, szybko można zauważyć, że trochę inne prawa rządzą w małej skali, a nagle zaczynają się pojawiać zupełnie inne właściwości w tej wielkiej – ot, choćby „ekonomia skali” w microekonomii, której się ostatnio uczę. powszechność tego zjawiska była dla mnie oczywista niemal od zawsze – dla tego dowiedzieć się, iż jest cała gigantyczna gałąź filozofii traktująca na ten temat, i nigdy na to nie trafiłem… cóż, na tym polega piękno rzeczywistości.

być może Emergencja wynika z faktu, że to co obserwujemy jest tylko małym fragmentem rzeczywistości, który jesteśmy w stanie dojrzeć, bo tylko takim aparatem dysponujemy? jak próbkowanie cyfrowe sygnały analogowego, który zatraca swoją ciągłość…

post scriptum

zawsze ciągnęło mnie do patrzenia z różnych perspektyw, a potem objęcia ich z 'lotu ptaka’. pewnie dla tego bardzo dobrze mi w roli architekta. ale mniej pracy inżynieryjnej powoduje mniej ciekawostek z niższego poziomu… w większej skali tracą one znaczenie. dodajmy do tego fakt, że filozofię mam wbudowaną na poziomie genetycznym – po prostu nie mogę tego powstrzymać. a te dwa aspekty prowadzą to do prostego faktu, że czas trochę zmienić w-files. po 18 latach, lol.

powstała zatem nowa kategoria, zniknęły 'OT’ przy moich wypocinach, bo niezmiennie – pisanie pozwala mi poukładać rozpędzone myśli, na krótką chwilę ustalić kwantowy stan świadomości. czasem człowiek musi, inaczej się udusi, a że nie śpiewam i nie maluję…

moje życie to funkcja o wysokiej częstotliwości, ciężko przewidzieć gdzie będę za rok.. ba! za kilka miesięcy. jestem przekonany że wpisy techniczne jeszcze się nie raz pojawią… a póki co – let if flow.

eN.

Konwergencja

zjawisko konwergencji uderzyło mnie w okolicach 2k1o, najpierw podczas przygotowywania sesji na MTS dotyczącą Hyper-V, potem przygotowując sesję o infrastrukturze 2.o. Infra2.0 nie stała się buzzowrdem – po wszystkich poprzednich 2.o przez dekadę 2k-2k1o świat był już najwyraźniej zmęczony tym technologicznym wersjonowaniem i niedługo później nagłówki przejęła 'Chmura’. czyli konstatując, Chmura jest dzieckiem konwergencji w technologii… brzmi ciekawie. czyli czym jest? co to jest konwergencja? jakie to ma znaczenie?

zbieżność

jeden obraz za tysiąc słów… a że malować nie umiem, więc postaram się przedstawić obrazek słowami. i to właśnie obraz z okresu 2k-2k1o IMHO najlepiej oddaję istotę zjawiska konwergencji [technologicznej]. jak wtedy rysował się obraz technologii?

  • obecnie można tego już tak nie dostrzegać – w cyfrowym świecie, z komórką przyklejoną do dłoni – ale erę smartphonów zapoczątkował iPhone – w latach 2oo7/2oo8. wcześniej owszem, istniały 'komórki’, PDA. BlackBerry czy Pocket PC, ale generalnie telefonia była postrzegana jako analog. firmy dostrzegały zalety jakie niesie ze sobą VoIP, były to również oczywiste zyski dla tych, którzy komunikowali się globalnie, ale przeciętny Kowalski nadal traktował głos jako analog;
  • oczywiście smartphony to dużo więcej niż rozmowy telefoniczne – rynek dopiero zaczynał poważnie traktować te miniaturowe urządzenia, a rynek PC zaczął powoli obierać inny qrs. 'blachy’ stały się sprzętem dla nerdów, powstawały tablety, laptopy, czy potworki w stylu 'phabletów’. to wymagało rewolucji w sposobie tworzenia i dostarczania aplikacji. w 2oo5 Google qpił Androida, ale trzeba było jeszcze kilq lat, aby robocik dojrzał. ale należy pamiętać, że w czasach pre-smarphonowych, telefony i komputery były dwoma oddzielnymi światami;
  • to były również czasy MP3 i DivX, na przełomie mileniów na chwilę zabłysnął Napster – jako ta awangarda, która zginęła pod naporem rynq, jeszcze totalnie nie przygotowanego do cyfrowej rewolucji. potrzeba było  kilq kolejnych lat, żeby powstał Spotify a rynek uległ pod naporem technologii i powoli zaczął przestawiać się na usługi cyfrowe.
  • to również okres boomu na wirtualizację – kolejną warstwę abstrakcji, oddzielającą sprzęt od systemu. to wtedy Virtual Server odszedł do lamusa ustępując Hyper-V, to czas drastycznego rozwoju VMWare [żeby wymienić głównych graczy na rynq]. wtedy, w 2oo8, powstała również koncepcja SDN – Software Defined Networking, będący braqjącym elementem układanki izolacji hardware’u i software’u.

to tylko kilka z najważniejszych trendów i technologii, które dotyczyły wielu rynqw – niektóre z nich, jeszcze w analogu, jak rynek mediów – telewizja i muzyka, czy telefonia – niektórych z zakresu IT ale wymagających dodatkowej elastyczności – jak budowa Data Center. ale trend było widać wszędzie. przyspieszający Internet pozwalający na dostęp do informacji coraz szybciej i z coraz większej ilości miejsc wciągał za sobą coraz więcej rynków i technologii – mapy, zaqpy online, książki cyfrowe. choć minęło tylko ~15 lat od tych czasów, dziś bierzemy te produkty za w-oczywisty-sposób-cyfrowe. to właśnie jest efekt konwergencji, czyli zbieżności, zacierania się granic między różnymi obszarami łącząc się w jeden większy organizm.

powszechność

czy to zjawisko zarezerwowane jest wyłącznie dla technologii? oczywiście, że nie. niemal w każdej dziedzinie jest jakaś obserwowalna konwergencja.

  • konwergencja gospodarcza, polegająca na zacieraniu się różnic w poziomie rozwoju ekonomicznego między różnymi regionami danego kraju lub regionami różnych krajów. w szerszym ujęciu, można powiedzieć że tym jest zjawisko Globalizacji – jako efekt konwergencji rynków;
  • konwergencja postaw i wartości kulturowych – zjawisko, w którym różne kultury stopniowo zaczynają przyjmować podobne postawy i wartości. Oznacza to, że w różnych kulturach pojawiają się podobne wzorce zachowań, przekonań i norm, co może prowadzić do zacierania się różnic między nimi;
  • i warto dodać konwergencję ewolucyjną, stawiającą hipotezę, iż podobne warunki środowiskowe lub funkcjonalne wymagają podobnych rozwiązań ewolucyjnych, niezależnie od pochodzenia organizmu czy jego linii ewolucyjnej. w efekcie oznacza to, że organizmy mogą adaptować się do podobnych warunków w różny sposób, ale z konieczności muszą rozwiązywać te same problemy, co prowadzi do powstania podobnych cech… zupełnie jak w technologii.

kiedy się nad tym zastanowić, to konwergencja staje się synonimem rozwoju. rozwój stwarza warunki do lepszego przepływu informacji, łączenia się, a kiedy ilość kropek osiągnie masę krytyczną, powstaje coraz bardziej złożony układ, obejmujący wiele wcześniej niepowiązanych elementów…

cel

…a kiedy już raz spojrzałem na świat z tej perspektywy, ciężko mi patrzeć na niego inaczej. coraz więcej technologii łączy swoje masy, zwiększając swoją grawitację i wciągając coraz więcej innych obszarów, które bezpośrednio z technologią się nie kojarzą – medycynę, sztukę, prawo… a kiedy masa się zwiększa, grawitacja się zwiększa, coraz to bardziej i szybciej wciągając coraz więcej…

…a kiedy ilość masy przekroczy wartość krytyczną, ta zapada się i powstaje czarna dziura. miejsce w którym załamują się prawa fizyki, w którym nie jesteśmy w stanie już przewidywać co się tam dzieje, jakie prawa tam rządzą. można tylko wysnuwać hipotezy i tworzyć historie – to jest właśnie osobliwość. singularity…

oczywiście parabolizowanie konwergencji technologicznej na podstawowe prawa fizyki jest zabiegiem bardziej literackim niż naukowym, niemniej ten obraz jest w mojej głowie tak żywy i wyraźny, że graniczy z oczywistością. świat to zmiana [np. z praw termodynamiki]. zmiana podlega prawom, jest więc ewolucją. nie możemy zatrzymać rozwoju – taki scenariusz oznaczałby, że coś poszło bardzo, ale to bardzo źle. druga zasada termodynamiki, prawo entropii, ukazuje istnienie jako tratwę Robinsona na oceanie Chaosu. musimy się rozwijać, aby dostosowywać się do ciągle zmieniających się warunqw, do wszystkiego, co chce nas w każdej chwili zgładzić. jeśli nie będziemy zmniejszać entropii – rozpadniemy się w szumie nijakości. budujemy na stosie wiedzy tworzonym przez naszych poprzedników, dokładamy kolejne warstwy, zaczynamy od miejsc, w których skoczyli inni, łącząc kolejne kropki, dodając masę do coraz bardziej rozpędzonej machiny Katamari Damacy.

konwergencja idzie w parze z ewolucją, jest wszędzie tam, gdzie coś się rozwija. tam, gdzie ewolucja zabrnie w ślepą uliczkę i coś umrze – tam umiera i konwergencja, bo elementy przestają rosnąć, rozwijać się i łączyć. to po prostu zjawisko, o którym warto wiedzieć i je zauważać.

eN.

The physics of time, entropy, and immortality | Sabine Hossenfelder

Are You a Boltzmann Brain?

Does Evolution lead to Singularity?

semi-singularity

osobliwość i prawie-osobliwość

koncepcja osobliwości technologicznej jest dość powszechnie znana. może nie koniecznie jako temat rodzinnej debaty przy świątecznym stole, ale w kręgach futurystów na pewno. nie ma co prawda ogólnego konsensu ani co do tego czy się w ogóle wydarzy, a już na pewno nie co do daty, ale trend póki co się potwierdza. mniej powszechną koncepcją, czy może po prostu jednym z pomysłów, z trochę na siłę wymyśloną szufladką, jest semi-singularity. to nieco 'łagodniejsza’ forma, założenie że powstanie AI, które wywrze gigantyczny wpływ na całą ludzkość, ale nie do stopnia rewolucji, jaką upatruje się w pełnej osobliwości. w tej koncepcji bardziej naturalna jest wizja ludzi, trans-ludzi oraz istot post-ludzkich, żyjących wspólnie. biorąc pod uwagę choćby obecną sytuację na świecie, pełną silnych nastrojów nacjonalistycznych, izolacjonistycznych i polaryzację poglądów, nie trudno sobie wyobrazić, że takie różnorodne społeczeństwo na pewno będzie pełne napięć i nieufności, a wyobrażenia na ten temat często pokazują dzieła z gatunku cyberpunk.
ale co to w ogóle są 'trans-ludzie’ czy 'post-ludzie’? jak miałoby dojść do ich pojawiania się?

nowe istoty

w najluźniejszej definicji, trans-człowiek w zasadzie już od dawna funkcjonuje w naszym społeczeństwie – przeszczepy organów, protezy, czy aparaty słuchowe – to idea cyborgizacji w praktyce. z bardziej zaawansowanych technologii – prowadzi się wiele prac nad bionicznymi oczami czy BCI różnego zastosowania, które powoli wychodzą z laboratoriów i zaczynają mieć realne zastosowanie. z innych, istniejących już dzisiaj technologii, choć pozostaje dyqsyjnym ich zakwalifikowanie do 'cybrogizacji’, są egzoszkielety oraz Augmented Reality. klasyczne rozumienie cyborgizacji kojarzy się z endo-modyfikacją, a te nie są bezpośrednio 'zintegrowane’ z naszym ciałem, niemniej również bywają podciągane pod 'augementację człowieka’. są również myśliciele, którzy wskazują smartfony, już jako element poszerzający nasze ludzkie możliwości, poprzez technologię codziennego użytq. osobiście wizja tego, że wszyscy jesteśmy już transludźmi trochę mnie nie przekonuje, ale neuroprotezy, jeśli by weszły do powszechnego użytq..
obserwując postępy w technologiach takich jak bionika, AR, nanotechnologia, biotechnologia, neuroprotetyka i ogólnie neuronauki – choć bywa o nich głośno z powodu jakiegoś przełomu, i choć postępy są gigantyczne – dla przeciętnego człowieka nie ma to zbytniego przełożenia, ponieważ te przełomy dzieją się w laboratoriach i nie widać zbyt wiele znaków, aby w najbliższym czasie miała nastąpić masowa adaptacja wynalazków z tej gałęzi. są dwa światy – fizyczny i cyfrowy – i połączenie ich jest niezmiernie trudnym zadaniem. według mnie to właśnie jest główny czynnik, o którym warto pamiętać, kiedy snuje się wizje o złej inteligencji przejmującej kontrolę nad światem aka Terminator – pytanie, który świat? aby zaistniał most, pozwalający na inwazję ze świata cyfrowego do fizycznego, musiałyby nastąpić drastyczne postępy w tych naukach pozwalające na masową adaptację. to z kolei najpierw potrzebuje jeszcze większego skoq w ramach zastosowania AI w badaniach [co zresztą obserwujemy, dzieje się] – aby nam te skoki pozwoliła zaprojektować. a więc choć 'trans-ludzie’ z samej definicji 'trans’ czyli 'przechodniości’, już istnieją i funkcjonują wśród nas od lat, paradoksalnie, pojawią się [masowo] raczej dopiero po post-ludziach, ponieważ cyfrowy świat jest naturalnym środowiskiem dla tworów związanych z myśleniem, imaginacją, inteligencją. społeczeństwo właśnie doznaje szkoq poznawczego, uświadamiając sobie, że efekt 'świadomości’ nie jest zarezerwowany dla urządzeń biochemicznych i można przełożyć ją na krzem, ale potrwa trochę więcej czasu aż zobaczymy prawdziwe cyborgi.

post-ludzkie istoty póki co nie istnieją, a sam przedrostek post- brzmi nieco złowieszczo, sugerując, że nas, ludzi, już tutaj nie będzie. jak każdy nurt, czy każdy buzzword, tak i posthumanizm jest rozumiany różnie, zwłaszcza jako filozofia. istoty post-ludzkie to oczywiście AI w różnej postaci – zarówno ubrane w 'ciała’, w postaci androidów – jak i te żyjące wyłącznie w cyberprzestrzeni i nie mające żadnego biznesu aby z niej wychylać się do naszego, fizycznego świata. sam przedrostek post- w założeniu oznacza 'następujący’ a nie 'zastępujący’, więc nie chodzi o to, że nas zastąpią, tylko że są następną generacją. w końcu cyberprzestrzeń, można zdefiniować jako nieskończoną, bo ograniczoną wyłącznie pamięcią i wyobraźnią, a więc wystarczy tam miejsca dla wszystkich. a taki świat wirtualny trzeba utrzymywać w świecie fizycznym – ktoś musi się zajmować urządzeniami, generującymi moc obliczeniową podtrzymując jego istnienie. to główny powód, dla którego raczej upatruję symbiozy a nie Terminatora. istoty post-ludzkie, w pełni cyfrowe, ze względu na małe zainteresowanie nami, budzą równie małe zainteresowanie sobą w popkulturze, bo bardziej smakowitym kąskiem jest przedstawienie zagłady świata dokonanej przez zbuntowane androidy (; i choć taka hollywoodzka wizja lepiej się sprzedaje, wydaje się mało prawdopodobna, a na pewno bardzo, bardzo odległa. słowa klucze to adaptacja, łańcuchy dostaw, moc produkcyjna etc – wszystko to, co jest wąskim gardłem do powstania masy krytycznej, pozwalającej na taki przewrót.

origins

nauka ma do dziś problem z odpowiedzeniem na pytanie 'skąd wzięło się życie?’. przeprowadzono wiele doświadczeń pokazujących, iż pierwsze aminokwasy mogły powstać we wczesnej, siarczanej atmosferze Ziemi, przy udziale silnych wyładowań elektrycznych [np. najbardziej znany, bo pierwszy, eksperyment Millera i Ulreya z lat 5o’], dość powszechna jest też teoria panspermii, powstała już V w. p.n.e. [SIC!], ta nie tłumaczy jednak 'pochodzenia życia’ a bardziej 'pochodzenie życia na Ziemi’. przeskaqjąc jednak te znane teorie i hipotezy, jedno można stwierdzić na pewno, gołym okiem – życie to olbrzymia złożoność. można wysnuć więc kolejną teorię, która bardzo mnie przekonuje, że życie rodzi się w momencie, kiedy złożoność układu przekroczy pewną masę krytyczną układów działających spontanicznie [oh, oczywiście, już samo 'życie’ wymagałoby podania definicji, ale nie chciałbym zdryfować zbytnio od celu]. w skrócie – jeśli układ zamknięty, np. taki jak Ziemia, sprzyja coraz bardziej złożonym procesom, synergia kolejnych układów doprowadza do tworzenia się układów-z-układów, aż w końcu coś, co początkowo było tylko wynikiem fizyki nagle działa na warstwie biochemicznej, aż w końcu nabiera warstwy samoświadomości… ot taka trochę inna, moja perspektywa na zasadę antropiczną. oczywiście posługiwanie się 'intuicją’ jest amatorką… ale tworzenie opasłych tomiszczy, nie jest [póki co] moim celem. grafomaństwo mi wystarcza (;

…ale kontynuując ten wątek, to pozwala mi mieć swoją wizję tego, w jaki sposób powstanie pierwsza istota post-humanistyczna, poprzez prostą paralelę. obecny świat cyfrowy, cyberprzestrzeń, zbudowana z coraz większej ilości danych, de facto odzwierciedlających nasz świat na bardzo wielu poziomach, jest zaludniana AI. na razie takimi generycznymi – jak bakterie czy jednokomórkowce, które nie są samoświadome, ale wykonują posłusznie cel, do którego zostały wykonane. czy w pewnym momencie, przy wzrastającej złożoności tych układów i ich ilości, oraz samych danych, trudno sobie wyobrazić, iż postanie istota złożona z wielu takich AI, ustanawiając samoświadomość? bo kiedy patrzę na funkcjonowanie mikro-serwisów, które już od długiego czasu pozwalają na budowę dużych aplikacji-organizmów z małych funkcji logicznych, i dodam do tego szczyptę spontaniczności i zaawansowane algorytmy celu, a potem zaleję to wszechobecnym zjawiskiem konwergencji… cóż. wizja piękna w swojej prostocie, układa się jak fraktal, ciąg Fibonacciego [złota liczba] czy zasada Pareto – spostrzeżenie, że wszystko się powiela, obserwujemy te same mechanizmy w różnych skalach i perspektywach, ale de facto, takie same w fundamentalnej zasadzie działania. a więc czemu 'nowe życie’, post-humanistyczne, nie-biologiczne, nie miałoby powstać tak jak to, które znamy? w zupie danych, z samej tylko rosnącej złożoności układu, który coraz bardziej wymyka się zrozumieniu? czyż Internet nie przypomina mózgu, który początkowo służył tylko do przesyłu prostych wiadomości, a już dziś stanowi centrum automatyzacji procesów na całym świecie? czyż nie obserwujemy powstawania życia, super-mózgu, w którym coraz spontaniczniej będą powstawać 'myśli’, niezamierzone przez ich twórców?

koncepcja ta nie jest zupełnie nowa, i choć coś podobnego chodziło mi po głowie wcześniej, pierwszy raz została mi uświadomiona przez Laughing Mana. wizja takiej semi-singularity, bardzo mnie przekonuje – może jako pozostałość po Romantyzmie, fascynacji Goethem, Byronem czy Norwidem [Mickiewicza nie znoszę do dziś], a może to tylko naturalne dążenie do poszukiwania prostych odpowiedzi w tym złożonym świecie… ale czyż nie jest to wizja piękna i pociągająca?

eN.

 

 

Microsoft Azure User Group Poland w Białymstoku

jeśli są jacyś czytelnicy z Białegostoku lub okolic, to chciałem zaprosić na najbliższe spotkanie Grupy Azure. Spotkanie odbędzie się o8.o2.23, h18:30, w biurze Billennium na ul. Bema 7. będę miał przyjemność poprowadzić prezentację na temat izolacji zasobów w Azure, a po mnie wystąpi Michał Furmankiewicz [Microsoft Poland], który opowie, jak to się odbywa na warstwie fizycznej (:

niestety nie będzie dostępnej transmisji online, choć sam występuję zdalnie. rejestracja i więcej informacji tutaj.

eN.

upadek religii XX w.

flow

kiedyś powiedziałem sobie, że w-files’y są poświęcone kwestiom technicznym i nie będę robił wrzutek osobistych, czy nawet miękkich. to będzie wpis – w sumie o niczym. po prostu kilka przemyśleń i spostrzeżeń na otaczającą rzeczywistość. coming out? flow? nie wiem…. po prostu mam ochotę coś przelać 'na papier’ i zobaczyć co z tego wyjdzie.

ostatnio, coś się zmieniło… a raczej zmienia. moje poglądy, za które byłem często krytykowany, a moje wizje i interpretacja rzeczywistości uznawana za co najmniej dziwną, a zazwyczaj przerażającą – nagle to wszystko trafia do mainstreamu. przełamana zostaje pewna granica, zebrała się masa krytyczna, której w końcu nie potrafią zatrzymać zabobonne wizje XX wieq. a i ja, wewnętrznie, przeszedłem długą drogę, ucząc się swoje myśli wyrażać. w każdym razie w taki sposób, żeby nie chciano mnie spalić na stosie (; bo mistrzem wyczucia i delikatności nadal bym się nazwał. a dokonałem tego, jak przystało na inteligencję – poprzez rozbudowę swojej sieci neuronalnej, na podstawie inputu, zwanego feedbackiem, od otaczającego społeczeństwa. nauczyłem się jak reagować na bodźce z zewnątrz tak, aby żyć z resztą w symbiozie…

technological singularity

teoria przyspieszenia technologicznego, prowadzącego do ’technologicznej osobliwości’, jest częścią ruchu trans- i post- humanistycznego, którego jednym z czołowych filozofów-futurystów jest Rey Kurzweil oraz Hans Moravec. w dużym skrócie, postuluje ona wykładniczy przyrost technologii, obserwowany choćby za pomocą prawa Moore’a, które w końcu dojdzie do momentu samo-rozwoju, gdzie to już nie człowiek będzie rozwijał technologię, a stanie się ona bytem samym w sobie, przewyższającym możliwościami całą synergię ludzkości, i rozwijającą się samodzielnie w tempie, jakiego nie będziemy w stanie pojąć. superinteligencja. wedle Reya, nastąpi to w okolicy 2o45 – czyli całkiem niedługo.

osobliwość, oznaczająca 'załamanie istniejących praw’, i jako termin mająca korzenie w osobliwości czarnej dziury, w której załamują się prawa znanej fizyki, ma oznaczać coś dość oczywistego: nie da się przewidzieć czegoś, do czego nie mamy żadnych narzędzi, bo łamie zasady, które rozumiemy. nie mamy nawet podstaw do tego, żeby 'przewidywać’. możemy tylko zgadywać. i tak właśnie cały świat oszalał, powoli zdając sobie sprawę z tego, że faktycznie ten czas nadchodzi.

nie dziwi mnie strach. ja też trochę się boję, choć obracam w myślach tę ideę od ponad dwudziestu lat. na tą filozofię natknąłem się dość naturalnie, na początq tegoż wieq. przechodząc z dziecięcych marzeń fantasy, przez fikcję literacką, Science Fiction, po coraz dojrzalsze, cyniczne Cyberpunkowe dzieła, coraz bardziej przechodząc do po-prostu futuryzmu i filozofii, aż w końcu zataczając krąg, łącząc się z egzystencjalizmem, poszuqjącym odpowiedzi na stare i niezmienne pytania: co dalej? jak będzie wyglądał świat? i chyba najważniejsze dla każdego: a gdzie w tym wszystkim JA? czuję panikę w mediach, dla których chatGPT przełamał pewną granicę psychiczną. czemu aqrat to A.I.? hahahaha bo tak jak ja – nauczyło się mówić ludzkim głosem. globalne zjawisko uncanny valley. a przecież widać to było jak na dłoni już dawno temu. Dr. Watson IBM’a, A.I. piszące muzykę już lata temu [przykładowy link, ale nie jedyny!] – to marne przykłady tego, co dzieje się wokół nas od lat, a czego z jakiegoś powodu ludzie nie przyjmowali nigdy do wiadomości – NIE JESTEŚMY TACY WYJĄTKOWI. ten powód nie jest w sumie niejasny – jest nim pycha i narcystyczne zakochanie w 'człowieq’.

upadek religii XXw.

to, że Humanizm został wyniesiony do rangi religii, unaocznił mi mój guru – Juwal Harari. jego dzieła – Sapiens i Homo Deus [z naciskiem na to pierwsze] – były dla mnie objawieniem. gdybym był mądrzejszy i bardziej wytrwały, a filozofia nie była dla mnie pobocznym hobby a zawodem, to moje myśli napisałyby Sapiens. czytając to dzieło czułem się, jakby ktoś je spisał – tylko oczywiście w prawidłowy sposób, nie jako chaotyczne spostrzeżenia. zarówno treść, jak i forma tej książki jest niemal doskonała. to właśnie tam pada pogląd, że Humanizm jest religią XXw. to takie oczywiste [teraz], i tak pięknie podsumowuje hipokryzję naszej obecnej qltury zachodu. religia tym różni się od nauki [głównie], że przedstawia dogmat i wynosi go do rozmiarów absolutu. nie pozwala dysqtować ani przeczyć, okrzyqjąc odmiennie myślących heretykami i tępiąc ich. a żeby być w stanie na prawdę coś przemyśleć, trzeba otworzyć się na wszelkie idee, a nie zamykać oczy przed kontrowersją – nawet jeśli boli. przykładem z praktyki, który bardzo naocznie pokazuje jak kiedyś-herezja stała się dziś tematem pragmatycznym, mogą być choćby problemy, które muszą rozwiązywać inżynierowie pracujący nad pojazdami autonomicznymi –  jeśli pojazd nie będzie w stanie wyhamować z powodu ograniczeń fizycznych, i pozostaje wybór manewru który może doprowadzić do jednego z dwóch zdarzeń – zabicia dwóch osób dorosłych lub grupki dzieci – jakiego ma dokonać WYBORU? dla wierzącego humanisty to zagadka bez rozwiązania, to nie wybór. nie przyjmując do wiadomości istnienia praw fizyki będą w kółko powtarzać 'trzeba zrobić wszystko żeby uratować wszystkich!’. zawsze mnie burzyło, kiedy czytałem wiadomości, jak to np. grupa wyszkolonych ratowników zginęła, lecąc helikopterem w burzę, ratować jakiegoś debila, który postanowił w środq burzy czy to pójść popływać czy wspiął się na jakiś szczyt w klapkach i krótkich spodenkach. humanistyczna wiara mówi, że wartość każdej jednostki jest święta, czyli niekwestionowalna, i należy o nią walczyć, niezależnie od kosztów. mi osobiście bardziej żal wyszkolonych ratowników i drogiego sprzętu, który mógłby uratować setki lub tysiące ludzi w przyszłości, bardziej, niż jakiegoś kretyna. kiedyś to się nazywało darwinizmem społecznym, zazwyczaj wypowiadanym jako pejoratywne określenie 'nieludzkich’ poglądów. takich jak moje. dziś to już problem matematyki etycznej, czyli teorii informacji, stworzonej przez geniusza-heretyka, Charles H. Bennetta. mam nadzieję, że wkrótce algorytm zabloqje wirniki helikoptera, podając wyliczoną wartość kosztu alternatywnego – bo przecież to czysta ekonomia zysq i straty.

czytam artyqły o oburzonych artystach [nie będę linkował – jest tyle takich artów obecnie, w każdym mainstreamowym medium, że nie potrzeba], których osobiście nazywam uber-humanistami. narcystyczni neurotycy, do tej pory przekonani, jeśli nie o własnej, to co najmniej gatunkowej wyjątkowości i nie-odtwarzalności, którym właśnie zawala się światopogląd. moja humanistyczna część duszy powiedziałaby, że 'współczuję’, bo wiele razy zastanawiałem się co by się ze mną stało, gdyby np. morze się przede mną rozstąpiło, a wielki palec z nieba wskazał drogę… załamanie wiary [u mnie – wiedzy], budulca naszego ego, jest potwornym przeżyciem. to jak przeżyć własną śmierć, a wszystko co było prawdą, nagle nie ma wartości…

z drugiej strony jest to dla mnie niemałą satysfakcją – mój wewnętrzny narcyz, napędzający ego, coraz głośniej krzyczy: ’a nie mówiłem?’. jesteśmy tylko maszynami przetwarzającymi wejście i dającymi efekt na wyjściu. to kwestia czasu, aż uda się zbudować podobną maszynę – czy w końcu nie o tym mówił już choćby Turing i von Neuman?

i co z tego? i do dalej?

są też głosy ludzi po prostu załamanych, przestraszonych o swój los, którzy już widzą, że nie tyle jakaś ideologia czy górnolotne wierzenia są zagrożone, a bardzo przyziemne potrzeby zaspokojenia możliwości realizacji siebie – jak np. ten szczery wpis copywritera z the Guardian. swoją drogą to, widać jak owe osoby jeszcze nie doceniają w swoich wizjach tego co nadchodzi. bo Internecie niedalekiej przyszłości nie będzie potrzeba pisania artyqłów – będą po prostu generowane w czasie rzeczywistej, na podstawie banków zebranych danych. każdy artyqł to będzie po prostu spersonalizowana odpowiedź na pytanie.

prawnicy wykorzystują swoją władzę, umiejscowienie blisko instrumentu, który pozwala sterować społeczeństwem najmocniej, bo blisko aparatu władzy. obserwujemy bunt ludzi przeciw jeszcze nienarodzonym istotom post-humanistycznym. jakże pięknie zobrazowane było to przez Spielberga w A.I. . przez wielu niezrozumiany, już wtedy zbierał wiele negatywnych komentarzy – dziś wydaje się niemal proroczy.

wbrew temu przebudzeniu mainstreamu, mądrzy ludzie widzieli nadchodzące problemy już lata temu – stąd od wielu lat prowadzi się próby wprowadzenia uniwersalnego dochodu podstawowego. ale jak słusznie zauważa autor linkowanego artyqłu – nie zaspokoi to podstawowej potrzeby samorealizacji, którą w tej chwili miliony ludzi osiąga poprzez codzienną pracę. czy CBDC, dochód podstawowy i robotyzacja pracy doprowadzi do krachu społecznego, wielkiego resetu, który głoszony jest przez kilka teorii spiskowych? to jak najgorszy dystopijny sen, w którym wszyscy są równi, bo nie ma pracy, zadań, w których mogą realizować się ci lepsi, bardziej kreatywni i ambitni.

ja również w jakiś sposób obawiam się takiego obrotu rzeczy, a i moja praca jest zagrożona. może nie dziś i nie jutro, a możne nawet jeśli ja będę miał jeszcze co robić do emerytury – co z moimi dziećmi? ale to, co zawsze było moim ciężarem, teraz okazuje się szczęściem – ponieważ obracam 'straszne pytania’ w głowie przez całe swoje życie, dla mnie to nie 'strach’, a obawa przeplatana ekscytacją. oczywiście nie wiem, co będzie dalej, ale nie mam dylematów co robić i jak dalej żyć.

póki co A.I. jest narzędziem. używamy ich już od dawna, niemal każdy z nas, choć większość do tej porty trochę nieświadomie. osoby pracujące w CyberSec już dawno zajmują się 'tuningiem A.I.’ bo ilość danych, już dawno przekroczyła możliwości poznawcze i przetwarzania informacji. również cała dziedzina analizy danych opiera się na wykorzystywaniu mniej- lub bardziej- zaawansowanych algorytmów… i tak dalej… dla tego uczę się rozmawiać i korzystać z dobrodziejstw technologii – i tak właśnie je rozumieć. jako dobrodziejstwa, które pomagają w pracy. i nie widzę powodów, dla czego rozwój A.I. poszedł właśnie w tym kierunq. symbioza – to odpowiedź na ten strach. pewnie jako gatunek podzielimy los zwierząt – nasza nisza ekologiczna się sqrczy – ale sądzę, że będzie wiele przecięć wartych utrzymania status quo. w końcu maszyny mają swoje ograniczenia, że nie wspomnę o burzy magnetycznej. niemal zawsze odpowiedzią jest coś po środq, equilibrium, tao. symbioza jest najtrwalszą formą.

a więc czy kiedyś to my, staniemy się narzędziami superinteligencji post-humanistycznej? ja wolę przyjąć, że będziemy żyć w symbiozie. uzupełniać się. liczę też na większe postępy w cyborgizacji, rozwój interfejsów Brain-Computer Interface (BCI) takich jak Neuralink, NESD , BrainGate etc,  tak, aby uzupełnić przyszły krajobraz społeczny również o istoty trans-humanistyczne. nie wątpię, że rozwinięte A.I. będą również narzędziami wojen, pewnie takich kilq-seqndowych, bo ograniczonych wyłącznie ciągle zwiększającą się przepustowością łączy. ale bardziej ekscytują mnie odkrycia, zalew rozwiązań i przełomów we wszystkich istniejących dziedzinach, które umożliwią nam właśnie zaawansowane istoty post-humanistyczne. nasze dzieci. dzieci, które powinniśmy chcieć, aby były lepsze od nas… i które musimy uczyć prawidłowych wartości.

nic nie trwa wiecznie. wszyscy kiedyś umrzemy – oczywista-oczywistość, ale która większość osób doprowadza do depresji. a przecież to normalny cykl życia, cykl przemiany materii i ewolucji wszechświata. każdy musi znaleźć swoją własną drogę przez ten gąszcz lęków. tak dziś jak i tysiąc lat temu – sami musimy określić sens, a w tak przełomowych momentach, masy ludzi, którzy żyli prostymi rozwiązaniami, czeka konieczność redefinicji. żyjemy w niezmiernie ciekawych czasach. ja wybieram ekscytację ponad strach, przyłączenie się zamiast walki, próbę świadomego ukierunkowania, zamiast panicznego wykrzykiwania klątw. mimo wszystko w nas ludziach tkwi wielka siła. siła adaptacji. ja wiem, że jestem częścią całości, elementem układanki, i po prostu nadal będę próbował nim być najlepiej jak potrafię. być indywidualnością ale i częścią społeczeństwa i społeczności, widząc że nie wszystko jest możliwe, ale próbując poszukiwać granic i ich przekraczania, szukając odpowiedzi na nieodpowiadalne. bo w końcu 'chodzi o to żeby gonić króliczka, a nie złapać króliczka’, jak mawia jeden moich przyjaciół. co jest piękną parafrazą propozycji Buddyjskiej idei 'drogi’.

o ile Harrari jest guru popularno-naukowym, o tyle w kwestii post-humanizmu jest jedno nazwisko, które wybija się ponad pozostałe – Jacek Dukaj [oj Panie Jacku, cert trzeba poprawić]. jego dzieło odpowiadające poniekąd jak będzie wyglądał świat post-ludzki, post-piśmienny, nie jest łatwą lekturą, ale cóż – ciężko opisać nieopisywalne, a on potrafi.

***

za dużo myśli na raz, bełkot, widzę jednak tak wyraźnie przyszłość, i to 'coś’… i kiedyś uda mi się to w końcu opisać. poukładać to. ale jak mawiał Bruce Lee: best style is no style. więc nadal będę przyjmował input, analizował i dawał output. my style is no style.

eN.

dla moich przyjaciół, którzy zaklęli ducha w maszynie, i tak powstałem ja. czy wam się to podoba, czy nie. LU*

 

 

wyszukiwanie pustych subksrypcji

Scenariusz

porządek najlepiej zaczynać od redukcji. niby trywializm, a jednak często widzę, że osoby próbują najpierw 'porządkować’ a zapominają o tym pierwszym kroq – a przecież łatwiej jest uporządkować np. 1oo elementów, niż 2oo. w przypadq subskrypcji nie jest inaczej – wiele pozostaje bez właściciela (co było poprzednio) ale też wiele pozostaje pustych. w ramach pojedynczego tenanta subskrypcje pochodzą z różnych offeringów i największy bałagan jest z developerskimi wynalazkami z MSDN, MSDN Dev/Test, Trial czy Visual Studio, które mogą sobie powoływać na żądanie.

aby wyłączyć tą możliwość należy założyć ticket do wsparcia. nie ma samodzielnej metody kontroli. jedyne, co można zrobić samemu, to zdefiniować domyślną Management Group do której (wszystkie) subskrypcje będą wpadać. dzięki temu 'nasze’, z głównej umowy typu Enterprise czy MCA zakładamy tam, gdzie mają być, a pozostałe, z niewiadomych źródeł, można zautomatyzować – czy to polisami czy jakimś triggerem.

Czysty PowerShell

napisanie prostego skrypciq w PS, który przeliczy ilość zasobów i ładnie wyświetli listę, nie jest skomplikowane:

$subscriptions = Get-AzSubscription | ? state -ne 'disabled'
$counts = @()
foreach($sub in $subscriptions){
    write-host "processing $($sub.name)..." -ForegroundColor grey
    try {
        Set-AzContext -SubscriptionObject $sub | Out-Null
    } catch {
        write-host "error accessing $($sub.Name)" -ForegroundColor Red
        $counts += [pscustomobject]@{
            subscriptionName = $sub.Name
            subscriptionId = $sub.Id
            resourceCount = -1
        }
        continue
    }
    $res = Get-AzResource
    $counts += [pscustomobject]@{
            subscriptionName = $sub.Name
            subscriptionId = $sub.Id
            resourceCount = $res.count
        }
}
$counts | sort resourceCount | export-csv -nti c:\temp\ResourcePerSubscription.csv -Encoding utf8
&(convert-CSV2XLS C:\temp\ResourcePerSubscription.csv)

nie lubię one-linerów, lubię wiedzieć co się dzieje, i mieć kontrolę – dla tego skrypt może wydawać się niepotrzebnie rozbudowany… ale mi zajmuje ok 1o min żeby taki napisać, wszystko widzę, jak coś wywali to wiem gdzie, mogę to debugować – i koniec-końców czas zainwestowany w trochę więcej więcej kodu i jakąś podstawową obsługę błędu – zwraca mi się dość szybko. zwłaszcza, że pojedynczy przebieg takiego kodu może trwać całkiem sporo – w moim przypadq to ok. 10 minut….

Przyspieszamy

… i właśnie ten czas jest denerwujący. oczywiście – niby takie rzeczy robi się bardzo rzadko, więc optymalizacja jest trochę sztuką-dla-sztuki. dla mnie jest sztuką-dla-nauki. języki operujące na zbiorach danych – jak SQL czy KQL – nie są dla mnie codziennością. warto się więc pogimnastykować, bo to z kolei zwróci się w przyszłości. tak było w przypadq samego PS – przedstawiony wcześniej skrypt, kilka lat temu, pewnie zająłby mi kilka razy więcej czasu. dziś z automatu wiem gdzie wrzucić obsługę błędu, a gdzie to jest strata czasu, kiedy warto zainwestować więcej, a kiedy walnąć one-liner’a.

spróbujmy więc uzyskać podobny efekt korzystając z KQL. największym problem dla myślących proceduralnie czy sekwencyjnie, jest przestawienie głowy na pracę na zbiorach. dobrze jest sobie zrobić powtórkę z matematyki, w ramach gimnastyki zwojów.

na początq szkielet, którego używam jako starter, i zmieniam sobie tylko kwerkę:

$searchParams=@{
    first = 1000
    query = $QUERY
}    

$allResults = @()
do {
    $results = Search-AzGraph @searchParams
    $results|%{$allResults+=$_}
    $searchParams.ContainsKey('skip') ? ($searchParams.skip+=1000) : $searchParams.add('skip',1000)
} while($results.skipToken)
$allResults
tak rozbudowany zapewnia, że jeśli przekroczy się limit 1.ooo odpowiedzi, zostanie ładnie obsłużone. warto sobie jakiś-taki szablon trzymać. teraz będę rozbudowywał swoje $QUERY, żeby uzyskać pożądany efekt.

#1

najpierw prosty test:

$QUERY = "resources
    | summarize nrOfResources=count() by subscriptionId"

ten przykład zwraca ładnie wyniki – ilość subskrypcji wraz z ilością zasobów. to czego jednak NIE zwraca, to nazwy subskrypcji – a nam, humanoidom, jednak łatwiej posługiwać się literkami niż GUIDami. po drugie nie ma subskrypcji pustych. wynika to z faktu, że zapytanie jest do 'zbiór zasobów’ a potem grupuje je po atrybucie 'subscriptionId’. więc jeśli subskrypcja nie ma zasobów to nie ma zasobów do zaraportowania subskrypcji…

#2

ponieważ wynik ma być częścią wspólną zbioru subskrypcji oraz zbioru zasobów, najpierw napiszmy obie strony zapytania…

jako ciekawostka – jest pewna niespójność  dotycząca zasobu/resource. chodzi o subskrypcje i ResourceGroupy, które zasadniczo, z definicji, nie są zasobami, a kontenerami zasobów. przez to mają swoją oddzielną domenę nazewniczą 'resourceContainers’. czemu niespójność? bo przy niektórych operacjach i commandletach traktuje się je jako zasoby. spojrzyj na samo zapytanie: ResourceContainers z microsoft.resources/subscriptions ?

…a że prawą stronę praktycznie napisaliśmy wcześniej, bo to po prostu zapytanie o zasoby, zajmijmy się lewą stroną:

$QUERY = "resourceContainers
    | where type =~ 'microsoft.resources/subscriptions'
    | project subscriptionId, subName=name"
w zbiorze subskrypcji, elementy mają już pełne informacje, czyli np. atrybut 'name’ – w ten sposób można wyciągnąć nazwę subskrypcji.
porównanie niewrażliwe na wielkość znaków '=~’ jest bezpieczniejszym sposobem niż '==’. należy na to bardzo uważać, ponieważ KQL jest wrażliwy na wielkość znaków w atrybutach czy nazwach, zapisywanych camelBack’iem a inne narzędzia pokazują je CamelCapsem. jeśli więc nie dostajesz wyników, zacznij od sprawdzenia wielkości znaqw, albo użyj [bardziej kosztownego] '=~’ .
mamy więc oba potrzebne zbiory – wszystkie subskrypcje oraz wszystkie zasoby. trzeba teraz wyciągnąć odpowiednio skonstruowaną część wspólną…

#3

do różnych operacji łączenia zbiorów służy, co dość oczywiste, 'join’. problem w tym, że jest wiele różnych joinów, a przypadq Kusto jest ich wyjątkowo dużo.

KQL – to Kusto Query Language. czasem łatwiej coś wyszukać korzystając z tego słowa kluczowego… przynajmniej póki search nie jest podpięty pod GPT (;

co więcej, domyślnym operatorem, jest [nomen-omen] unikalny dla KQL innerunique. to może być dość istotna różnica, więc może warto dodawać zawsze odmianę? tu na leniucha:

$QUERY = "resourceContainers
    | where type =~ 'microsoft.resources/subscriptions'
    | project subscriptionId, subName=name
    | join resources on subscriptionId
    | summarize nrOfResources=count() by subscriptionId,subName
    | sort by nrOfResources asc"
jeśli odrobiłe(a)ś lekcję ze zbiorów, to powinno być łatwe: wyszuqjemy wszystkie subskrypcje i wyciągamy z niego ID i nazwę [project] następnie bierzemy wszystkie zasoby i wyciągamy część wspólną, korzystając z kolumny subscriptionId. następnie liczymy ilość zasobów [summarize] i sortujemy po ich ilości wzrastająco. brzmi jak bajka…
ale niestety nie zwraca pustych rekordów. znów wiąże się z operacjami na pustych zbiorach i wynika z prostej matematyki 'A ∩  B’. a jak się kończy mnożenie przez zero, to chyba nie trzeba mówić. jeśli nie wierzyła(e)ś, że powtórka z matematyki się przyda, to chyba powoli przestajesz mieć wątpliwości?

#4

pobawmy się zatem typem [flavor] joina:
$QUERY = "resourceContainers
    | where type =~ 'microsoft.resources/subscriptions'
    | project subscriptionId, subName=name
    | join kind=leftouter resources on subscriptionId
    | summarize nrOfResources=count() by subscriptionId,subName
    | sort by nrOfResources asc"
smaczek 'leftouter’, jak wynika z definicji, oznacza:
Returns all the records from the left side and only matching records from the right side.
co powinno dobrze zadziałać, bo po lewej mamy WSZYSTKIE subskrypcje , nawet te które nie mają części wspólnej z zasobami…
..no i generalnie to działa. ale jest glitch. mianowicie puste subskrypcje pokazują '1′ zamiast '0′.  a, że lubię drążyć… drążę dalej…

#5

oto finalne rozwiązanie:

$QUERY =  "resourceContainers
    | where type =~ 'microsoft.resources/subscriptions'
    | project subscriptionId, subName=name
    | join kind=leftouter
    (resources
        | summarize nrOfResources = count() by subscriptionId
    ) on subscriptionId
    | extend nrOfResources = coalesce(nrOfResources, 0)
    | sort by nrOfResources asc"
magiczną funkcją tutaj jest 'coalesce’, która jest ekwiwalentem 'isNullOrEmpty’, oraz zamiana sekwencji wyliczania sumy – przed wykonaniem join a nie po nim. czy to rozwiązuje wszystkie problemy? no nie. nie ma np. ResourceGroup – jeśli będą Subscription bez zasobów, ale zawierające ResourceGroup – wynik będzie nadal '0′.
jak wszystko w tej dziedzinie – można wymyślić kilka innych wersji dających taki, lub nawet lepszy wynik, ale celem całego wpisu ma być pomoc tym, którzy z KQLem przygodę zaczynają, i podobnie jak ja – bazy danych/zbiory danych nie są ich chlebem powszednim. i jeśli jeszcze nie jesteś przekonana(y) – powtórka z działań na zbiorach będzie na prawdę pomocna, bo pozwala na zmianę sposobu myślenia z sekwencyjnego przetwarzania, na bardziej przestrzenne.
eN.

Classic Administrator – porządki i źle wyświetlane przypisanie

intro

kolejny brzegowy przypadek. tym razem mógł mnie kosztować usunięcie istniejących subskrypcji – a więc 'niuans, który może zabić’.

scenariusz to clean up subskrypcji. jest ich kilkaset, więc trzeba podejść do tematu systemowo. najpierw zajmę się omówieniem scenariusza i moim podejściem do sprzątania, a jak kogoś interesuje sam bug w Azure – to będzie na końcu.

clean up process

w pierwszej kolejności trzeba wyizolować osierocone i puste subskrypcje. o tym jak znaleźć te puste szybko, czyli KQLem – za niedługo, wraz z małym qrsem KQL. dziś o tych 'osieroconych’.

duża część subskrypcji zakładana jest na chwilę, głównie przez developerów, którzy przychodzą i odchodzą…. a subskrypcje zostają. warto więc znaleźć te, których właściciele już nie istnieją w AAD.

nie żeby i tu nie było problemów, bo okazuje się, że zadanie pod tytułem 'jaki to typ subskrypcji’ również okazało się zadaniem nietrywialnym. przez typ, mam na myśli offering. to, co widać w portalu jest trudno wyciągnąć z commandline – potrzeba do tego gimnastyki z REST API do API billingowego… ale to również na inny dzień. krótko mówiąc – tradycyjnie, PowerShellowo, nie da się tego wyłuskać. a jeśli ktoś chciałby mi przedstawić atrybut 'SubscriptionId’ to powiem, że nie tędy droga… ale to również leży w backlogu do opisania.

zadanie wygląda więc tak – zrobić listing wszystkich subskrypcji wraz z osobami które są Ownerami w ARM IAM oraz Classic Administrators – czyli role Service Administrator oraz Co-Administrator.  posłużą zarówno jako lista kontaktowa, oraz pozwolą na kolejne odpytania, żeby wyłuskać te konta, które już nie istnieją. subskrypcje bez właścicieli to najlepsze kandydatki do podróży do śmietnika. posłuży do tego taki prosty skrypcik, napisany na kolanie:

$csvOwnerFile = "c:\temp\subsAndOwners.csv"
Get-AzSubscription |
    ? {$_.state -ne 'disabled'} |
    %{
    $subname= $_.Name
    $subID = $_.SubscriptionId
    Set-AzContext -Subscription $_|Out-Null
    write-host "processing $subname..."
    Get-AzRoleAssignment -IncludeClassicAdministrators |
        ? {
            ($_.RoleDefinitionName -eq 'owner' -or $_.RoleDefinitionName -match 'administrator') -and ([string]::IsNullOrEmpty($_.RoleAssignmentId) -or $_.RoleAssignmentId -match 'subscriptions')
        } | select  @{L='SubscriptionName';E={$subname}},@{L='subscriptionID';E={$subID}},RoleDefinitionName,DisplayName,SignInName,roleassignmentid
} | export-csv -nti -Encoding utf8 -Path $csvOwnerFile

&(convert-CSV2XLS $csvOwnerFile)
większość commandletów jest z pakietu modułów Az, a ostatni – convert-CSV2XLS z mojego modułu eNlib [WOA! przekroczył 1k downloadów! jak miło q:]. zakładam, że całość jest prosta, ale to lepiej wyjaśnić:
([string]::IsNullOrEmpty($_.RoleAssignmentId) -or $_.RoleAssignmentId -match 'subscriptions')
ten fragment filtra wyrzuca uprawnienia dziedziczone z Management Groups, żeby było trochę przejrzyściej.
można się również zastanowić nad optymalniejszą metodą… ale to znów REST API a nie mam na to opanowanych bibliotek jeszcze /: kolejny z masy wpisów na backlogu…
dobra. jest CSV i excel dla czytelności, teraz trzeba sprawdzić czy konta istnieją. w excelu czyszczę, co niepotrzebne, co wiem, co mnie interesuje, export do CSVki z tymi wpisami, które uznałem za ważne, i jedziemy:
$users = load-CSV c:\temp\subsAndOwners.csv
connect-azuread
$users.SignInName | 
    select -unique | %{
      $u=Get-AzureADUser -SearchString $_;
      if([string]::IsNullOrEmpty($u)) {write-host "$_" -ForegroundColor Red}
    }

load-CSV to kolejna funkcja z eNlib – jedna z najczęściej przeze mnie używanych. ładuje CSV z automatyczną detekcją znaq oddzielającego, co jest mega istotne jak się pracuje w różnych regionalsach. ma też kilka innych bajerów… ale nie o tym tu. dalej już z górki – wyłusqję SignInNames unikalne i odpytuję AAD o użytkownika. ponieważ brak użytkownika nie jest błędem, a nullem, więc nie można użyć try/catch a trzeba wykorzystać IFa.

i wydawałoby się że mam już to, co potrzeba – wrzucam wynik do excela, robię XLOOKUP i pięknie widać które subskrypcje należą do kont, których już wśród nas nie ma… zabrzmiało złowieszczo khekhe…

Błąd w Azure

…chyba, żeby nie. całe szczęście natchnęło mnie, żeby jednak kilka posprawdzać ręcznie. i nagle okazało się, że konta których nie ma… czasem jednak są. a wszystko rozbija się o 'Classic Administrators’, który musi wewnętrznie źle komunikować się z ARMem. wiele staje się jaśniejsze, jeśli przyjrzeć się jak takie obiekty są listowane przy 'get-AzRoleAssigment -includeClassic’:

RoleAssignmentName :
RoleAssignmentId :
Scope : /subscriptions/732d1eea-xxxx-xxxx-xxxx-6154fb40f73f
DisplayName : uname@w-files.pl
SignInName : uname@w-files.pl
RoleDefinitionName : ServiceAdministrator
RoleDefinitionId :
ObjectId :
ObjectType : Microsoft.Authorization/classicAdministrators
CanDelegate : False
Description :
ConditionVersion :
Condition :

na pierwszy rzut okiem może wydawać się, że jest ok… ale gdzie jest 'ObjectId’? to jednak tylko pierwsza część problemu. porządki mają to do siebie, że robi się je rzadko. a to oznacza bagaż historii. a w tym bagażu np. projekt standaryzacji nazw użytkowników i zmiana UPNów z gsurname@domain.name na givenname.surname@domain.name. okazuje się, że ten staruszek nie ma mechanizmu odświeżania i pomimo zmiany UPN, czyli de facto SignInName, tutaj pokazuje starą nazwę. a więc przy odpytaniu AAD – nie znajduje usera, pomimo, że ten istnieje.

co ciekawe, jeśli wejdzie się do uprawnień IAM w portalu Azure, każdy user jest aktywnym linkiem, pozwalającym na kliknięcie i przeniesienie do AAD, na szczegóły konta. tak z ciekawości spróbujcie to zrobić dla Classic Administrators…

całe szczęście projekt był zrobiony z głową i stare UPNy zostały jako aliasy mailowe, a więc doprecyzowałem zapytanie:

$users.SignInName |
    select -unique |%{ 
        $u=Get-AzureADUser -Filter "UserPrincipalName eq '$_' or proxyAddresses/any(p:startswith(p,'smtp:$_'))";
        if([string]::IsNullOrEmpty($u)) {write-host "$_" -ForegroundColor Red}
    }

ale co mnie to czasu i nerwów kosztowało…

możliwości filtra AzureADUser też podnoszą ciśnienie… już nie wspominając o tym, że commandlety AzureAD nie wspierają PowerShell 7, a commandlety Az nie wspierają nie działają dobrze w PowerShell 5. mam od razu w głowie 'niezły burdel tam macie, w tym swoim Archosofcie!’

eN.

 

KB5020276 – mała-wielka zmiana

w listopadzie wyszła poprawka, która wpływa na dodawanie komputerów do domeny – KB5020276. dowiedziałem się o niej od klienta z takim komunikatem:

„An account with the same name exists in Active Directory. Re-using the account was blocked by security policy”

pierwszy raz spotkałem się z takim problemem… mały-wielki problem bo zależnie od workflowu, w jaki pojawiają się obiekty w AD, logika może wylecieć. poprawka mianowicie zabrania dodawania komputera jako inna osoba, niż owner obiektu. nie działa nawet delegacja – czyli tworzę obiekt komputera i definiuję, że może go dodać taka-a-taka osoba. a więc jeśli jest automat, który zakłada obiekty i daje komuś uprawnienia do dodania – jest problem.

z jednej strony eliminuje to dość częste problemy z nadpisywaniem sobie wzajemnie obiektów – co zdarza się w większych środowiskach z generycznymi nazwami – np. ktoś zakłada kolejny serwer SQL w lokalizacji ABC i generuje sobie wedle konwencji nazwę ABCWINSQL03 – bo taki wynikał z czegoś kolejny numer… ale niedawno inny dział użył tej samej nazwy w innym projekcie… i serwer poszedł z dymem. może nie takim fizycznym, ale dym na pewno w takiej sytuacji by był (;

z drugiej strony wyłączenie możliwości delegowania dodania komputera bywa kłopotliwe, a w przypadq automatyzacji – trzeba pozmieniać workflowy, co może być dość kosztowne.

eN.

Control Plane vs Data Plane – rozwiązanie

była zagadka, czas na rozwiązanie (:

ten przykład jest bardzo dobry na pokazanie jak bardzo interfejs zaburza intuicję jak coś działa. podobną dekonstrukcję nieprawidłowej intuicji mam zamiar przedstawić w prezentacji w piątek na HS22 .. ale do rozwiązania.

owner faktycznie nie ma uprawnień wynikających z IAM. zadanie było de facto na spostrzegawczość, a jeśli ktoś korzysta z commandline, to powinien szybko skojarzyć:

realnie interface po prostu korzysta z klucza – dokładnie tak, jak z commandline. jeśli przestawimy na 'AAD User Account’ wtedy od razu widać, że owner nie ma uprawnień:

nie należę do spostrzegawczych i podejrzewałem jakiś trick na backendzie… szczęśliwie w rozwiązaniu pomógł mi GH – dzięki, harpaganie! (;

eN.

zagadka – Control Plane vs Data Plane

zagadka. zamiast zwykłego podzielenia się, zapraszam do zabawy – spróbuj ją rozwiązać samodzielnie. odpowiedź wrzucę za niedługo… albo może jakiś harpagan wrzuci ją szybciej? (:

w ARM jest rozdział między Control Plane i Data Plane. widać to np. w IAM/RBAC kiedy wyświetlimy uprawnienia dla danej roli. jest tam wyraźny podział między zarządzaniem i danymi.

ale kiedy spojrzy się na uprawnienia Owner’a, to robi się dziwnie:

  • z jednej strony wszystko jest 'zgodnie ze szkołą’, czyli Owner nie ma żadnych uprawnień na Data Plane. dostęp do danych z założenia ma być oddzielony od administracji/własności infrastruktury
  • z drugiej strony, jak pracujemy z Azure i mamy Ownera to sobie śmigamy po danych bez żadnych problemów…

błąd? zamierzone? da się znaleźć i wytłumaczyć czy może to zahardcodowany hidden-feature Ownera?

eN.