niedziela, 24 maja 2015

Zachęta do robienia warsztatów + starter do Sparka

W Łodzi życie IT wydaje się rozkwitać (mimo , iż ludzi tutaj coraz mniej), jest kilka grup tematycznych i nawet specjalny tag #nowldz, który ma wszystkie zgromadzić i w jasności związać. Pomimo tego w porównaniu do niektórych miast relatywnie daje się odczuwać pustkę społeczno-informatyczną.

Powodów tego stanu rzeczy jak zwykle jest wiele - wiadomo czas, energia i te sprawy. Ale jest jeden powód dosyć ciekawy i to o nim chcę opowiedzieć - nazwać go można irracjonalny wewnętrzny opór. Wiele zdolnych osób uważa, że nie jest jeszcze gotowa aby poprowadzić warsztat, że mają za małą wiedzę itd - a wcale tak nie jest - oj nie!

Najpierw trochę tekstu a później będzie jeszcze więcej tekstu po czym nastąpi podsumowanie w formie tekstu (i na koniec jakiś kod)

Umieć ale nie umieć

Poniżej ponowne odkrywanie Ameryki czyyli kilka linków z wytłumaczeniem dlaczego to jest naturalne, iż ludzie boją się nazwijmy to takk ładnie "ekspozycji przed grupą ludzi". Linki wkleiłem po tytułach i te tytuły wydają się brzmieć sensownie ale już nie chciało mi się czytać tekstu także mam nadzieję, że zawartość jest zgodna z nalepką :

I nie ma co tłumaczyć, że to nie jest już potrzebne w 21 wieku, że jaskiniowcy, że sratata bo to ma taki sam sens jak tłumaczyć zasadę działania mięśni i oczekiwać, ze ktoś po takim wykładzie będzie nosić szafy. Natomiast ma sens wytłumaczenie metodyki ćwiczeń i oczekiwanie rezultatu po odpowiednio długim czasie owej metodyki stosowania.

Metodyka ćwiczeń

Jakaś tam teoria

To znowu temat rzeka ale w bardzo dużym skrócie -

  • Istnieją pewne naturalne instynkty, z którymi ludzie się rodzą - np. reakcja obronna na bardzo głośny dźwięk. Strach przed ekspozycją na grupę jest również naturalnie zakorzeniony
  • Jeśli bodziec jest stopniowany i następuje faza odpowiedniej "regeneracji" wtedy system nerwowy się adaptuje do coraz większej siły bodźca :
    • Czyli np. może pojawić się taki stan "dysocjacji" kiedy to niejako uczestniczymy w sytuacji z perspektywy trzeciej osoby, dzięki czemu nie następuje reakcja obronna, która blokuje kreatywne reakcje na nieoczekiwane sytuacje i ogólnie "samo nam wychodzi"
    • Znowu jak bodziec będzie za duży to na siłce wystąpi kontuzja, którą musi leczyć specjalista, a na gruncie psychicznym również wystąpi kontuzja zwana "traumą", której leczenie lepiej też powierzyć odpowiedniemu specjaliście

Oczywiście jestem tylko informatykiem i powyższe może nie być zgodne z rzeczywistością ale taki podkład teoretyczny był i jest dla mnie przydatny.
A jak stopniować bodziec ?

  • Na siłce to będzie systematyczne dokładanie obciążenia z treningu na trening - warto mieć karteczkę i sobie notować ile żelaza poszło w danej sesjji
  • W przypadku warsztatów - bo o tym miała być mowa - należałoby najpierw zrobić coś dla kilku znajomych. W tej sytuacji mamy już jakąś tzw. "wartość społeczną" i jak coś się nie uda instynktownie czujemy, ze nic wielkiego się nie stanie (pod warunkiem, że znajomi nie są z tych tzw. "toksycznych")
  • Później włączać włanczać do grupy odbiorców osoby obce. W tym przypadku wartość społeczna wynosi 0 i wszelkie zjebki zsuną nas na poziom ujemny - co jest dodatkowym stresorem. I do tego trzeba się przyzwyczaić by nie panikować i wydostać się na powierzchnię - znowu kilka razy się pewnie nie uda po czym nastąpi adaptacja systemu nerwowego.
  • Kolejnym elementem krytycznym jest wystąpienie przed ludźmi z potencjalnie większą wiedzą od nas samych - podświadomie wyczuwamy możliwość wystąpienia trola.
  • I chyba największym hardkorem byłoby wyskoczenie z prezentacją o zajebistości Javy na konferencji Microsoftu - tudzież w programie "młodzeż rzuca kamieniami w polityków"

Wszyscy myślą o sobie tylko ja myślę o mnie!

Inna ciekawą sprawą jest to, ze jak już coś się stanie to często kolejne wystąpienia tego czegoś przestają już być tak straszne. Nie znam dokładnej teorii ale coś mi się obiło o uszy a propo terapii "intensywnych bodźców" czy coś takiego.

Np. robimy warsztaty i boimy się (co jest naturalne), że coś pójdzie nie tak. No i na szczęście udaje nam się raz za razem, mamy pasmo udanych warsztatów - czy aby an szczęście? Niekoniecznie bo być może działamy zachowawczo przez co warsztaty tracą na wyrazistości a my nie osiągamy kolejnego poziomu.

W 2013 razem z kolegą Wojtkiem robiliśmy cykl wystąpień o Amazon AWS. Były dwa wystąpienia na targach pracy lokalnie w Łodzi. Później pojechaliśmy na 4Developers z tym samym tematem i generalnie zawsze się udawało. Ale czy na pewno udawało? Generalnie wtedy kuliśmy na blachę co każdy ma powiedzieć na którym slajdzie, było mało elastyczności ale generalnie jako, ze byliśmy przygotowani to to co chcieliśmy przekazać - przekazaliśmy - ale było trochę szaro a wszystko dowcipy zostały zawczasu przygotowane w laboratorium.

No i nastała konfitura 2013, stwierdziliśmy, że trochę zmienimy kontekst i z prezentacji "jak działa AWS" zrobimy taką w stylu "jak AWS zmienił naszą firmę". I na skutek koniunkcji zdarzeń losowych nie zdążyliśmy przygotować się naszym klasycznym sposobem nauki wszystkiego na pamieć - postanowiliśmy improwizować.

No i prezentacja wyszła raczej do dupy. Kilka osób coś tam miłego napisało jakkolwiek reszta słusznie wspomniała, że było raczej do dupy, "najgorsza prezentacja roku" i takie tam słodkie epitety.

No i mieli w sumie rację ale ciekawe jest to co stało się później. Następnego dnia słońce wstało i kolejnego dnia także i tak dalej i dalej. W zasadzie to nic się nie stało takiego złego (poza tym ,że zmarnowaliśmy kilku osobom parenaście minut życia). Natomiast ciekawie zmieniła się moja percepcja. Mózg zdał się zauważyć - "to tylko tyle? Nie będę ładował w ten strach tyle energii!!Są ciekawsze rzeczy, których można się bać!"

Jakieś blokady padły i zniknął u mnie strach przed eksperymentowaniem z różnymi formami wyrazu czy też pojawiła się chęć wprowadzania wariacji i eksperymentowania - np. co się stanie gdy wezmę podwójną dawkę przedtreningówki przed prezentacją (nie stanie się nic dobrego - dop. autora)

Inna sprawa to, że już nie jestem taki wybredny przy ocenie wystąpień i prezentacji bo zrozumiałem jakie to jest trudne. Kiedyś podobnie jak wiele osób dużo narzekałem i komentowałem. Teraz jestem na poziomie tzw. niekompetencji świadomej - czyli wiem, że nie wiem zaś wiele osób jeszcze nie zdaje sobie sprawę, że nie umie prezentować przez co łatwiej im jest dawać surowsze oceny. Sytuacja podobna do tej jak np. koleś z brzuchem i browarem siedzi na kanapie, ogląda mecz i z pełnymi ustami krzyczy "nozes ku**a biegnyj do tej pilki, no coz za patalachhy. Uff ale sie zapowietrzylem"

Teraz będzie ważny fragment

Paradoks eksperta - strach przed utratą pozycji społecznej

To jest jeden z ważniejszych eksperymentów w psychologii - gdy chwali się dzieci za wysiłek wierzą w siebie i podejmują ryzyko ucząc się efektywniej oraz pracując ciężej. Gdy chwali się je za zdolność wtedy działają zachowawczo i nie podejmują ryzyka tak jakby nie chcą aby przypadkiem się okazało, ze nie są zdolni.

Z poniższymi linkami akurat polecam się zapoznać bo są niezwykle ciekawe i życiowe:

Mam swoja teorię zebraną z tysiąca innych, która może tłumaczyć dlaczego tak się dzieje ale o tym są całe książki. Generalnie można rzec, iż osoby które osiągnęły pewien status, mają doczepioną etykietę "dobrego specjalisty w jakiejś dziedzinie" i boją się, że na skutek ponownej reewaluacji ten status stracą - to się doskonale komponuje ze strachem przed oceną grupy i mamy zabójczy tandem powstrzymujący nas przed działaniem.

Tutaj może pomóc tzw przeramowanie - http://en.wikipedia.org/wiki/Cognitive_reframing

Ja np. nie robię warsztatów ze Scali w kontekście "specjalista radzi" ale w kontekście "sam jej nie znam to przygotuję kilka warsztatów by się jej nauczyć". ( Co więcej to jest główny powód dla którego robię te warsztaty - niestety projektów Scalowych jest w Łodzi jak na lekarstwo toteż taka forma nauki wydaje mi się bardzo dobra - atakowanie tematu z wielu stron, analiza introwertywna i ekstrawertywna i jeszcze kilka mądrych słów. )

I to jest właśnie piękny paradoks - nie mogę stracić żadnej wartości społecznej bo z założenia żadnej nie mam! - stresu zero! Oczywiście zależy mi bardzo na tym aby wszystko było dobrze przygotowane i ludzie zdobyli jak najwięcej umiejętności bo głęboko wierzę, że wraz ze wzrostem wiedzy eksperckiej Łódź przestanie być "fabryką risorsów do utrzymywania muzealnych wersji Javy". Im mniej do stracenia tym mniej stresu - ot taki paradoks.

TL;DR

Podsumowując - bezpieczna i bezstresowa "RAMA" czy prościej nastawienie by nie stresować się warsztatem - "ja nie umiem i wy nie umiecie - to ja coś przygotuję i pouczymy się razem". I wydaje mi się, ze tym modelem każdy może jechać - jak już pisałem w Łodzi zdolnych ludzi jest masa - także śmiało!

Scala i Spark

Dalej w kontekście warsztatów ale już z lepszym stosunkiem kodu do słowotoku. Czego nauczyłem się wczoraj robiąc warsztat na cybercomdev? Plan był prosty : najpierw pokażemy, ze immutable jest fajne, potem, że fajnie jest w Scali wspierane następnie będziemy przeskakiwać od programowania imperatywnego do deklaratywnego i TADA!! - funkcje wyższego rzędu.

I mamy takie reduce bo wydawało mi się, że to prościej wytłumaczyć niż fold gdzie pojawiają się dwie pary nawiasów.
List(1,2,3).reduce((a,b)=>a+b)
List(1,2,3).reduce((a,b)=>a*b)
- i pada pytanie- a co się stanie jak lista będzie miała jeden elemen?
- (hehe zaraz im wytłumaczę, ze to nie dwa elementy ale akumulator) - bo widzisz bo to jest akumulator, który akumuluje wynik działania. - no ale co w nim jest? - (hehe no zero) - no zero - ale to by i przy mnożeniu wyszło zero a wyszło jeden... - (eeee...) I teraz zaczyna się ciekawy ciąg zdarzeń. JAk sobie zanurkujemy do kodu :
 def reduce[A1 >: A](op: (A1, A1) => A1): A1 = reduceLeft(op)
Czyli woła reduce left i co tam jest?:
 def reduceLeft[B >: A](op: (B, A) => B): B = {
    if (isEmpty)
      throw new UnsupportedOperationException("empty.reduceLeft")

    var first = true
    var acc: B = 0.asInstanceOf[B]

    for (x <- self) {
      if (first) {
        acc = x
        first = false
      }
      else acc = op(acc, x)
    }
    acc
  }
To jest co najmniej interesujące! Akumulatorem będzie zawsze pierwszy element ale... co.. to.. jest : var acc: B = 0.asInstanceOf[B] ??

Ta linijka doczekała się własnego wątku na stackoverflow : http://stackoverflow.com/questions/8465356/what-is-happening-with-0-asinstanceofb-in-scala-reduceleft-implementation . I jak ktoś będzie chciał poczytać to dokładnie zrozumie jakie cuda mogą dziać się na granicy kompilacji i runtime (po polsku rantajmu).

Spark

Za tydzień zaczyna się online kurs Sparka - https://www.edx.org/course/introduction-big-data-apache-spark-uc-berkeleyx-cs100-1x - Spark to jeśli ktoś nie wie to takie coś co ma zabić hadoopa.

kupiłem sobie spark in action, teraz jest MEAP v2 i nawet taki hello world przykładowy projekt - ale on jest w mavenie... :

"Ale dlaczego nie użyjesz mavena??"

Są jakieś gotowce z SBT w activatorze ale generalnie wystarczyło wrzucić takie coś

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % "1.3.1",
  "org.apache.spark" %% "spark-sql" % "1.3.1"
)
i wio
object HellloSpark {

  def main(args: Array[String]) {
  val conf=new SparkConf().setMaster("local").setAppName("nauka")
  val sc=new SparkContext(conf)
  val file: RDD[String] =sc.textFile(readTestFilePath)
  println(file.count())

  }

  def readTestFilePath: String = {
    val path=Paths.get(getClass.getClassLoader.getResource("InputFile.txt").toURI)
    path.toString
  }
}

Ten kurs na edx ma być chyba głównie z Pythonem czyli będzie też ciekawe ćwiczenie by zadania poprzerabiać na scalę

I jeszcze taka ciekawostka gdzieś się jeszcze napatoczyła : - http://0xdata.com/product/ (i patrz i znowu scala - ) - może się przydać.

5 komentarzy:

  1. Czytałem o badaniach, w których mierzyli ile myśli na dzień ma człowiek. Wyszło, że ok 80k. Z czego ponad 80% o sobie samych, a z tych najczęściej negatywne.

    Tak więc, jeśli ktoś się zastanawia: "Co o mnie pomyślą?", to spoko - prawie w ogóle :)

    Btw. A może zrobić warsztaty o tym, jak robić warsztaty?

    OdpowiedzUsuń
    Odpowiedzi
    1. no to byłby bardzo ciekawy temat - może by dodatkowo rozruszał community.

      Usuń
    2. a tak konkretnie :

      "A może zrobić warsztaty o tym, jak robić warsztaty?" - w sensie, że ty chcesz takie zrobić czy "fajnie jakby ktoś takie zrobił" ? :D

      Usuń
  2. Co to za tajemnicza przedtreningówka? :)

    OdpowiedzUsuń
  3. w tej chwili jako przedtreningówkę stosuję spalacz Ripped Freak ale wcześnie używałęm NoExplode i cąłkiem ładnie działało przed prezentacjami

    OdpowiedzUsuń