poniedziałek, 26 maja 2014

Droga do szczęścia?

Droga do szczęścia zaczyna się niespodziewanie od czwartej edycji programowania funkcyjnego w Scali na Courserze a właściwie od tego co wyświetliło się na samym dole strony w sugerowanych kursach.

Nie wiem jakiego algorytmu oni używają do znajdywania polecanych pozycji ale w wyniku błyskotliwego wyszukiwania lub zwykłego random.next - na dole pojawił się kurs Buddhism and Modern Psychology czyli skrzyżowanie neurologii i najnowszych odkryć psychologii z kilkutysięczną filozofią.

Jeśli kogoś odpycha słowo buddyzm to niech je zwyczajnie oleje bo to był tylko taki abstrakcyjny dodatek do ścisłych faktów psychologicznych. Kurs będzie zamknięty w piątek, także jak ktoś chce obejrzeć wykłady to musi się pośpieszyć (polecam bardzo).

Na początek mały starterek.

Usiadł sobie koleś pod drzewem...

...kilka tysięcy lat temu - medytował i medytował - i wyprodukował Cztery szlachetne prawdy. Jeśli ktoś chce może sobie poczytać w linku rys filozoficzny - ale nas interesuje bardziej kontekst psychologiczny - a raczej psychologiczno-filozoficzny z naciskiem na część psychologiczną.

Pierwsza kwestia to koleś, który prowadzi wykłady ( Robert Wright - napisał fajne książki z pogranicza psychologii ewolucyjnej - "Moral Animal" i "The evolution of GOD") tłumaczy pewne nieporozumienie związane ze słowem "cirepienie", gdyż nie chodzi tu o cierpienie a o brak satysfakcji co jest chyba codziennością większości lemingów na świecie. I teraz uwaga - podobna koncepcja pojawia się w takich książkach jak "Power of habit" czy "Neuromarketing" co jest popularną częścią biblioteczki "skutecznego reklamodawcy". O co tu dokładnie chodzi?

I teraz paczta na ten obrazek bo mechanizm jest zabójczy (w swej prostocie i w ogóle). Weźmy bodziec R, który może być czymkolwiek - browar, wypłata, pochwała, nowe buty, jedzenie, sex itd. Gdy tworzy się nawyk najpierw możemy zaobserwować korelację ze skokiem dopaminy zaraz po otrzymaniu bodźca - np. małpka naciska dźwignie i dostaje banana - powstaje dosyć pożyteczny nawyk bo banan jest bogaty w potas i węgle proste.

I teraz pojawia się fascynująca rzecz - gdy nawyk się stabilizuje skok dopaminy przesuwa się przed "bodziec" - ma to sens gdyż cały mechanizm niejako zachęca małpkę do naciśnięcia dźwigni. A na ludzkie - to właśnie staje się istotą poszukiwań - nie bodziec a samo dążenie do bodźca, właśnie oglądamy neurologiczne podstawy ciągłej gonitwy po więcej oraz wytłumaczenie nieustającego braku satysfakcji. Dodatkowo jest to wzmocnione faktem, że z biegiem czasu wyskok dopaminy po samym bodźcu staje się coraz mniejszy - pozostawiając nas w stanie nienasycenia.

Mam nadzieję, że jest to wystarczająco jasne bo tutaj jest to tylko kilkoma zdaniami a na wykładzie było omawiane przez ponad dwie godziny - tak czy inaczej z ewolucyjnego punktu widzenia zagarnianie tego co się tylko da i ciągłe zaspokajanie potrzeb okazało się taktyką skuteczniejszą niż puszczanie bąków - dlatego mamy takie coś teraz w sobie (a bąki na zewnątrz). W trakcie kursu padło ciekawe sformułowanie - "hedonic threadmill".

Ale spoko - trzecia i czwarta z tych "szlachetnych prawd" mówi o rozwiązaniu - a neurologia wyjaśnia o co tu dokładnie chodzi. Lekarstwo pozostawimy jednak na koniec bo najpierw prawdziwe mięsko kursu.

Aby uzyskać fajny efekt kinowego przejścia na blogu tekstowym to teraz wyobraź sobie takie subtelne i delikatne ściemnienie się obrazu - jednocześnie dźwięk lekko zanika udostępniając przestrzeń nowym doznaniom - przed twymi oczyma pojawia się poniższy fragment z youtube (jak net będzie zamulał to trzeba sobie wyobrazić odpowiednio dłuższe przejście).

Kim nie jesteś

Taka ciekawa rzecz - musiałem to kilka razy przewijać aby załapać - generalnie ogromną tamą dla szczęścia w życiu jest pogoń każdego z nas za atrybutami, które błędnie kojarzymy ze sobą. Powoli.

mental formations

Czyli nasze przekonania. Weźmy sobie takie forum dyskusyjne - jak sama nazwa wskazuje forum dyskusyjne służy do napierdalania się do nieprzytomności o to kto ma rację. O proszę bardzo http://www.goldenline.pl/pawel-wlodarski2/wypowiedzi/ - 770 wypowiedzi z czego duża część jest bezwartościowym pierdoleniem o wyższości jednej rzeczy nad drugą. Masa irracjonalnych nerwów i straconego czasu.

Gdy zyskujesz doświadczenie zmieniasz swoje poglądy - Nie jesteś tym co uważasz

perception

Siedzisz sobie, walisz wódę i percepcja się zmienia. I tutaj fajne badanko - w zależności od tego jakiej muzyki słuchali badacze - strasznej lub przyjemnej - widzieli na obrazku aligatora lub wiewiórkę - Aligator czy wiewiórka - Nie jesteś tym czego doświadczasz

feeling

Do tego tematu powrócimy za chwilę bo uczucia to raczej sygnały, które oddziałują na nas a nie część nas. - Nie jesteś tym co odczuwasz

form (body)

To już w ogóle temat abstrakcja - jak już ktoś się zbierze i skoczy na siłkę, dobry trening siłowy zamiast stepera i maszyn - po kilku miesiącach "inny człowiek".

świadomość

To już w ogołe jest mindfuck - czas na modułową teorię swiadomości

Świadomość i moduły

Temat jest tak nieintuicyjny, że lekko go tu musnę tak czubeczkiem po powierzchni - generalnie polecam amazon i wpisać "Michael S. Gazzaniga" pojawią się takie książeczki jak Who's in Charge?: Free Will and the Science of the Brain.

Polecam też kliknąć w te linki :

  • Modułowa teoria umysłu
  • http://psychologydictionary.org/beneffectance/ - termin tłumaczący po co wyewoluowała samoświadomość. Nie jest ona prezesem a raczej działem marketingu - inaczej rzucenie palenia czy zmiana nawyków żywieniowych byłaby zwykłą sekundową decyzją. Nie chcę palić - no dobra to nie palę - nichuja to tak nie działa
  • http://biasandbelief.pbworks.com/w/page/6537179/Beneffectance - bardziej praktyczne opracowanie.
  • Samooszukiwanie - a to takie życiowe - jak mi się nie udało to miałem pecha. Jak mi się udało to jestem zajebisty. Jak komuś kogo nie lubię się udało to miał oczywiście farta ("Fartuch pierdolony"). A jak mu się nie udało to było do przewidzenia...
  • No i generalnie różne uczucia włączają różne moduły a później nasza świadomość to wszystko racjonalizuje aby miało sens w kontekście skomplikowanej sieci społecznych zależności. Weźmy te kłótnie na forach. Tutaj działa między innymi modułu odpowiedzialny za obronę statusu społecznego i później umysł świadomy racjonalizuje, że ja się nie napierdalam tak dla zasady ale naprawdę ten PHP jest zjebany (no bo jest ale chyba wiadomo o co chodzi). W końcu! Neurologiczne wytłumaczenie świętych wojen!

    Cytat : "One last bit of evidencein support of the argumentthat the self is essentially a tool of impression management and the product of a specialize dprocessor. Severely brain damaged individuals, eventhose subjected to commissurotomies, maintain a steady stream of rationalization and denial of their handicap. They appear to be striving to convey an impression of being reasonable and sensible (Gazzaniga 1985). The algorithms of the selfs specialized processor appear to demand this." by jerome barkow - http://www.omega23.com/Journal_of_Ideas/Barkow-Folk_Pyscholog_Free_Will_Evolution-JoI_V2_2_3-1991.pdf

    No dobra na razie jest tak trochę mrocznie - ale jest lekarstwo

    Mindfulness meditation

    Specjalnie zostawiłem angielski tytuł aby uniknąć "szklanej pułapki" tłumacza. Generalnie pierwsze pojęcie-klucz to Default mode network. Jest to to coś co działa w nas kiedy nie myślimy o czymś konkretnym.

    I tutaj jest ciekawy link : Wpływ medytacji na default mode network. Generalnie medytacja wycisza to DMN co ma dosyć ciekawe konsekwencje gdyż pozwala spojrzeć nam na emocje - czyli trigery zachowań - z dystansu. I teraz bardzo ważny rodzaj medytacji - wspomniana w tytule "mindfulness meditation"

    Idea jest prosta - odbierać uczucia,odczucia, obserwacje bez oceniania ich. Co ciekawe ta koncepcja atakuje z różnych stron w różnych publikacjach - w NLP to była praca z "presupozycjami", było też o tym w wizualizacjach metody Silvy jeśli dobrze pamiętam. Generalnie pomaga skupienie się na scence gdzie oglądamy w trzeciej osobie siebie odbierającego dane wrażenia co tworzy formę interesującego dystansu od uczuć. Przywraca nam ograniczoną kontrolę nad tym co robimy i pomaga programować siebie na przyszłość.

    Zmieniamy postrzeganie świata, zmieniają się uczucie, zmienia się nasze zachowanie ... i postrzeganie świata. I o to tutaj kurwa chodzi. A no i przy okazji zrozumiałem dlaczego tak mi się podoba rzucanie kurwami w tekście. Generalnie to takie podświadoma próba uwolnienia się od mentalnych łańcuchów społecznych. Tak naprawdę awersja do słów kurwa,chuj itd to takie lekko snobistyczne podejście podobnie jak jedzenie śledzia pięcioma widelcami - niby udajemy, że jesteśmy szlachta - ale wracając do tematu.

    Gdy zerwie się łańcuchy ewolucji i naturalnej selekcji wtedy czeka nas.. dobra ostatniej częsci jeszcze nie skumałem ale pojawia się słowo "enlightenment" (I nie chodzi o javascript enligtment) oraz pojęcie "emptiness" co wbrew pozornym negatywnym zabarwieniu ma znaczenie pozytywne gdyż pozwala nam dostrzec rzeczy takimi jakie są. To jest ciekawe arcy arcy ciekawe. Może zrozumiem przy okazji drugiej edycji.

    I jeszcze jeden ciekawy cytat dlaczego świat jest generalnie taki zjebany - niestety nie zapisałem autora a i słowa są z pamięci : "This planet is settled by beings which each one has build in system to convince them that they are more important than others"

    Następny odcinek będzie pewnie coś o Scali aby czytelnicy nie pouciekali - chociaż z drugiej strony jebać to - nie jestem swoim blogiem

    niedziela, 18 maja 2014

    Jeden slajd z Geecon 2014

    DRY - tutaj są dobre recenzje :

    Zwykły acz niezwykły slajd

    Powyższy slajd zaprezentował Sam Newman podeczas swojej prezentacji o Mikroserwisach.

    To jest arcyciekawy slajd gdyż jedzie walcem po pseudo-perfekcjonistycznej nasyconej strachem przed porażką kulturze wielu korporacji. Tutaj jest wyraźnie narysowane, że będziemy testować po deployu i trzeba się szykować na ewentualną "cofkę". Na slajdzie użyte jest słowo remediation zamiast rollback ale chyba chodzi mniej więcej o coś podobnego.

    Problem polega na tym, że jak coś wrzucimy na produkcję a później się cofamy to metryki stoją w miejscu. W tematyce samorozwoju istnieje takie pojęcie jak learning experience co też trochę trąci bullshitem ale jednocześnie ma za zadanie pokazać, że pewne zdarzenia owocują jedynie niematerialnym zastrzykiem wiedzy, który generuje zmiany w połączeniach neuronowych - niestety nichuja z tego nie da się wyrysować fajnego wykresu do powerpointa na spotkanie.

    Jakby np. wyglądała nauka jazdy na rowerze według korpo procesu? Najpierw potrzebny jest jakiś ambitny target metodą smart więc jebnijmy sobie "przejechać 100m", co zostanie zmienione na "100km" przez innego managera posługującego się formułkami "push harder" i "reach higher". Teraz koleś wsiada na rower i gleba. Jego mózg przetwarza nowe informacje jak tu się utrzymać na dwóch kółkach ale zanim będzie miał okazję wsiąść na rower musimy odbyć meeting dlaczego się nie udało, "This situation makes me very concern" i inne takie "postmortem analysis".

    Dobra, koleś siada drugi raz - 5 metrów i znowu gleba. Trzeba zrobić meeting z "root cause anlysis" dlaczego wciąż ponosimy porażki - a przecież ponosimy porażki bo według flow chartu rower stoi w miejscu a przecież na kursie z zarządzania pan Zdzichu wyraźnie mówił, że jak "stoimy w miejscu to się cofamy".

    I tutaj nagle na dużej konferencji pojawia się slajd, który mówi, że to w sumie dobra opcja wyskoczyć do świata rzeczywistego, zebrać rzeczywiste info z tego świata rzeczywistego i ewentualnie się wycofać - "Reality driven development".

    I nawet ci ludzie od robotów odnieśli spektakularny sukces bo zdobyli niesamowicie cenną wiedzę "co może pójść źle w czasie prezentacji" - i teraz jak wyskoczą przed potencjalnych inwestorów maja szansę zabłysnąć.

    Apropo robotów to nawet one były najebane.

    Do rozwiązania ponadto pozostaje standardowy problem wszystkich konferencji IT czyli blokowanie się wątków przy wejściu do męskiego kibla.

    ***

    niedziela, 11 maja 2014

    PlayFramework - drugie spotkanie i scenariusz nauki

    Gdy coś się dzieje po raz drugi to już trudniej nazwać to coś tymczasową anomalią. I w ten sposób - ku mej uciesze - warsztaty z Playa i Scali wydają się mieć dobrze i będą rozwijać się nadal.

    Uwagi i wnioski

    1. Tym razem na początku było trochę więcej chaosu związanego z konfiguracją środowisk toteż będę musiał pisać dokładną instrukcję tak krok po kroku jak się przygotować.
    2. Muszę pamiętać by ustawiać limity na meetupa bo tym razem przyfarciłem i zorientowałem się jak było akurat 15 osób zapisanych.
    3. Nie udało się zrobić tyle zadanek ze scali ile planowałem i do tego niektóre koncepcje nie są od razu jasne przy pierwszym zetknięciu. Być może będzie opcja na niezależne warsztaty ze scali?
    4. Chociaż programowanie w parach upraszcza prowadzenie warsztatów to jakoś ludzie wydają się być niechętni co do tego sposobu pracy na zajęciach.

    Co dalej

    W czerwcu jedno lub dwa spotkanka z dalszej części warsztatów. Czas na formularze, parsery i kompozycje akcji. Materiału jest trochę także może podzielę to jeszcze na dwa części.

    Play 2.3 RC1 jest już do pobrania także w lipcu może dla kolejnych chętnych będzie powtórka startu z playa - tym razem wersja 2.3 i scala 2.11.

    Scenariusz warsztatów

    To jest tak jakby kontynuacja Części pierwszej. Poniżej rozwinięta wersja punktu 3 z programu warsztatów --> Program warsztatów

    Start

    Tutaj standardowo tworzymy aplikację i w akcji index zmieniamy Your new application is ready. na pomidor albo dupa żeby było więcej zabawy

    HTTP

    Od razu trzeba pokazać, że dla Playa HTTP to przyjaciel a nie wróg. Robimy dodatkową akcję i prezentujemy jedyny chyba działający "quick fix" dla playa w eclipse - "ctrl+1" i automatyczne generowanie "ruta".

    //application.scala
    def moja = Action {
        Ok("siema")
    }
    //routes
    GET   /moja           controllers.Application.moja()
    

    I od razu działa bez restartu. Tutaj trzeba zrobić efekt WoW, o ku*wa itd. Wydaje mi się, że za pierwszym razem wyszło mi to bardziej epicko.

    Na razie akcja zwraca nam text/plain ale łatwo i przyjemnie można to zmienić.

    Ok("siema").as(HTML) //text/html;charset UTF-8
    Ok(siema) // application/xml
    import play.api.libs.json._
    Ok(Json.obj("klucz"->"siema")) // application/json
    

    Parametry

    Tutaj przede wszystkim dobrze pokazać jak jasno Play raportuje gdzie brakuje parametru i gdzie popełnione są błędy w mapowaniu. Przy każdej okazji staram się podkreślać, że kompilator stara się tutaj pomóc jak może. Albo się walczy z kompilatorem albo z Runtimem - to pierwsze wydaje mi się bezpieczniejsze i przyjemniejsze

    //Application.scala
    def moja(name:String) = Action {
       Ok(s"siema $name")
      }
    

    A jak już mapowanie będzie ok, to nadal raportowanie o złym użyciu api jest zajebiste. Aby uspokoić zmysły kolor czerwony zamienia się w kolor klocka.

    Tutaj też jest dobry moment aby uświadomić uczestników warsztatów o tym, że play wygenerował nam ładną lokalną dokumentację, w której można sobie sprawdzić opcje na deklaracje parametrów w query, w urlu, na parametry zdefiniowane i opcjonalne. Była krótka dyskusja o tym czy da się zrobić tak aby wartość parametru była deklarowana w akcji a nie w routach - chociaż wydaje mi się to bez sensu bo parametr to części API to jednak w wolnej chwili muszę to sprawdzić.

    Szablony

    Tutaj dobrze jest ujawnić opcję ~run oraz ciekawe ustawienie w eclipse Window->preferences->General->Workspace->Refresh using native hooks pooling . Ze zwyklym run po stworzeniu nowego widoku trzeba by najpierw odświeżyć stronę a później projekt - co jest zwyczajnie słabe.

    I teraz też czas na pokazanie szczodrości kompilatora - ku naszej uciesze nie da się do widoku przekazać Int kiedy oczekiwany jest String. Mniej zjebek typu "Object w jsp" - ano i podpowiadanie jest IDE jak zna typ.

    Więcej o szablonach w opisie poprzednich warsztatów -> Szablony

    Testy

    Wygenerowane testy powinny nam nie przechodzić na tym etapie gdyż domyślny nagłówek strony głównej został zastąpiony słowem pomidor lub dupa. Co akurat pokazuje, że owe testy działają.

    Tutaj też fajnie pokazać, jak łatwo testuje się widoki, które są zwykłymi funkcjami.

    @* widok Template File *@
    @(name: String)
    <html>
    <head>
    <title>widok</title>
    </head>
    <body>
    <h1>Siema @name </h1>
    </body>
    </html>
    

    I jak mamy ów widoczek to najwygodniej otworzyć worksheet i najzwyklej w świecie widoczek wywołać.

    object warszt {
     
     html.widok("Bożenka")                     //> res0: play.api.templates.HtmlFormat.Appendable = 
                                                      //| <html>
                                                      //| <head>
                                                      //| <title>widok</title>
                                                      //| </head>
                                                      //| <body>
                                                      //| <h1>Siema Bożenka </h1>
                                                      //| </body>
                                                      //| </html>
    }
    
    

    I w końcu można testować widok w testach jednostkowych. Nie chce mi się drugi raz opisywać tego samego -->Testy jednostkowe dla widoku

    Reverse routing

    To jest dosyć ciekawa funkcjonalność bo chyba nie ma czegoś podobnego w innym frameworku javowym. Żeby był efekt jebnięcia wystarczy chyba utworzyć obok siebie link zwykły i link używający reverse routing aby pokazać, że problemy z updatem linków w aplikacji nie będą nas już niepokoić

    //widok.scala.html
    <a href="/">link do indexu </a> <br/>
    <a href="@routes.Application.index">samoupdatujący się link do indexu </a> //i zmiana w routes GET /nowaStrategiaMarketingowa controllers.Application.index

    I to na razie byłoby na tyle

    ***