2015 m. gegužės 5 d.

PyConLT 2015: Mano atviro kodo veikla

Mano pranešimo, sakyto PyConLt [0] 2015 metu tekstas. Kadangi teksto mintinai nesimokinau, tai jis šiek tiek skiriasi nuo to, kurį realiai pasakojau.

[0] http://pycon.lt/

Skaidrės:


Įžanga

Šiandieną aš jums šiek tiek papasakosiu apie savo atviro kodo veiklą. Tiksliau kažkurią jos dalį. Pradžioje norėjau temą pavadinti "Mano atviro kodo veikla arba vieno atnaujinimo istorija". Bet tokia tema atsiduoda klišiniu sovietinių laikraščių pavadinimu.

Dar norėjau pavadinti pagal Lietuvos žiniasklaidoje įprastas pavadinimų konstravimo gaires. Ką nors tokio, kaip "Programuotojas pabandė dalyvauti Django ekosistemoje ir neslėpdamas agonijos nustebo". Bet paskui nusprendžiau, kad gal kiti neskaito tiek daug Lietuvos naujienų portalų kaip aš. Tai palikau pretenzingą pavadinimą "Mano atviro kodo veikla".

Apie ką

Šitas pranešimas bus nelabai techniškas. Jis bus apie tą "vieno atnaujinimo istoriją", kurios paminėjimo neliko pavadinime.

Tai bus istorija apie mano vieną kodo pakeitimą, kuris galiausiai pateko į Django kodo bazę. Ta istorija turės įrodyti, kad prie atviro kodo projektų (net ir tokių svarbių ir garsių kaip web karkasas Django) gali dirbti ir gana nestabilios... Ir nevisai stabilių ir ne visada adekvačių poelgių žmogus. Toks kaip aš. O jei jau galiu aš, tai reiškia, kad jūs tai jau tikrai galite. Žinoma, neprivalot.

Atnaujinimas

Štai čia ir yra visas tas mano Django kodo atnaujinimas. Apie kurį aš jums papasakosiu.

Jo. Šita viena raidė. Aš pasakosiu apie vieną raidę.

EuroPython 2014

Istorija prasideda 2014-aisiais metais. Aš buvau EuroPython 2014 konferencijoje. Man patiko. Konferencija trunka 7 dienas. 5 pirmos konferencijos dienos yra pranešimų dienos. Paskutinės 2 konferencijos dienos yra skirtos atviro kodo projektų sprintams.

Kodo sprinto apibrėžimas. Tai nėra, kad gale konferencijos visiems moksliukams-programuotojams liepia greitai bėgti trumpas distancijas. Ir visi geek'ai ir kompiuterastai bėga suplūkę ir šnopuoja. O žiūrovai rodo pirštais, juokiasi ir už gerą reginį aukoja pinigus atviram kodui. Ne. Kodo sprintai nėra tai.

Atviro kodo sprintas šiek tiek primena SCRUM sprintą. Tai grupės žmonių susibėgimas (virtualiai ar gyvai) ir bendras darbas ties kažkokiu projektu ar projekto dalimi. Apibrėžtas laike. Tarkim, EuroPython 2014 būna 2 dienos.

Labai gerai dalykas. Tokia svarbi konferencija kaip EuroPython beveik garantuoja, kad bus projektų core programuotojai. Ir jie galės padėti įsivažiuoti ir greitai priimti pakeitimus.

Kas labai svarbu pradedantiesiems, nes labai lengva numušti entuziazmą, ilgomis laukimo pauzėmis.

Django kodo sprintas: nuorodos

Dabar pauzė istorijoje. Dabar aš šiek tiek supažindinsiu jus, kaip pradėti krapštytis prie Django projekto.

Dokumentacija. Django laimi dėl dokumentacijos. Tarkim, kartais sunku Python naujokui, norinčiam pradėti dirbti prie internetinių projektų, rekomenduoti ką nors kito nei Django. Ne dėl to, kad aš manyčiau, jog Django yra geriausias web karkasas. Beje, aš nemanau, kad jis geriausias.

Tačiau aš vis tiek rekomenduočiau Django. Dėl vienos paprastos priežasties. Dokumentacija. Jie turi turbūt vieną iš geriausią dokumentacijų. Bet kokio programavimo projekto. Ar tai būtų komercinis, ar atviro kodo.

Tas pats ir su pradėjimu užsiminėt atviro kodo veikla. Django dokumentacija valdo. Joje yra apmokymas (turorial'as), kaip dirbti prie Django kodo bazės.

Taip. Pažingsninis apmokymas.

Tai antra nuoroda sąraše. Pirma yra bendrinis dokumentacijos puslapis.

Aš tą apmokymą rekomenduoju perskaityti ir įvykdyti visiems, norintiems pradėti dirbti prie atviro kodo projektų, bet vis nepradedantiems, nes kažkaip neaišku, nei kaip čia pradėti, nei ko griebtis.

Net jeigu ir neketina dirbti prie Django. O gal net jeigu ir neketinate dirbti su Python iš vis.

Sekančios nuorodos.

Trečia yra Django Trac užduočių valdymo sistema. Ale Redmine. Ale Bugzilla. Ale Asana. Ar kas dabar ant bangos.

Dashboard. Čia yra tiek greitos nuorodos į tam tikrus django trac filtrus (tarkim, easy tickets), tiek šiokios tokios ataskaitos apie Django kodo progresą netolimoje praeityje.

Paskutinė nuoroda yra pakankamai sunkiai surandama. Tai yra Django Jenkins sistema. Ten galima pažiūrėti visokias nuolatinės integracijos ataskaitas. Tokias kaip kodo bazės padengimas testais. Prie šitos ataskaitos, beje, grįšiu savo istorijoje.

Django kodo sprintas: aš


Kalbant apie istoriją.

EuroPython 2014 metu aš prisijungiau prie Django sprinto. Pirma užduotis, kurią apsiėmiau, tai patobulinti dokumentaciją. Ji man buvo parekomenduota vieno Django core programuotojų.

Susikūriau Django užduočių sistemoje Trac užduotį. Parašiau ten kelis kažkokius sakinius. Žinot, pagal visą Langlų [1] kalbos tradiciją. Kiekvienas doras Langlų ekspertas posakį "Nepūsk arabų" verstų į "Don't blow arabians" ir drąsiai naudotų jį kalbėdamas su anglakalbiu.

Sukūriau prašymą įtraukti mano pakeitimus į einamą Django kodo versiją. Nu gerai -- sukūriau pull request'ą į masterį.

[1] https://eglemarkeviciute.wordpress.com/2015/04/09/langlu-kalba-weird-sounding-lithuanian-proverbsnsayings/

Tada. Tada. Kažkas paėmė tą mano pull request'ą. Pataisė mano pagal Langlų notaciją parašytus angliškus sakinius į suprantamus angliškus sakinius. Parašė man: "Ačiū -- gerai padirbėjai". Taip ir neišsiaiškinau ar ironiškai, ar ne. Ir įliejo realiai savo -- o ne mano -- tekstą į master kodo atšaką.

Tai dabar git blame ten rodo to kito programuotojo inicialus.

Supratau, kad dokumentaciją rašyti dar ne su mano įgūdžiais. Dėl to pradėjau taisyti tikro kodą.

Susiradau Django Trac paprastą klaidą. Kažkas apie django.forms.ImageField. Atsižymėjau, kad aš prie jos dirbu. Pasirašiau unit testą, kuris nepraeina.  Pataisiau kodą. Testas praeina. Valio! Sukūriau prašymą įlieti mano kodą.  Kažkas iš turinčių teises, pirma pasakė: "nu, nu, nu -- pirma suspausk commit'us į vieną, o tik po to kurk pull request'ą". Tada pats suspaudė mano atnaujinimus į vieną ir įkėlė mano kodą į Django master.

Suspausti atnaujinimus į vieną

Kartais atviro kodo projektuose (ir netik) yra reikalavimai, kad į master giją kiekvienas funkcinis atnaujinimas būtų įliejamas kaip vienas commit'as, o ne N commit'ų.

A) Taip lengviau sekti pakeitimus
B) Taip lengviau atstatyti seną versiją

Norintys žinoti kaip tai padaryti, pasiieškokite git rebase --interactive.

Bitcoin

Kaip ir minėjau, mano atnaujinimas buvo įkeltas į Django kodo bazė.

Ir gavau bitkoinų. Nes yra toks projektas kaip tip4commit. Kur kažkas gali aukoti bitkoinus atviro kodo projektams. O jau tada tas tip4commit paskirsto visiems dirbantiems prie to projekto.

[2] https://tip4commit.com/

Taigi, aš gavau nulis kablelis nulis nulisnulisnulislislisnulis N bitkoinų. Bet jų man tas tip4commit portalas neleidžia išsiimti. Nes reikia pasiekti kažkokią minimalią ribą. Minimalų kiekį. Kada jau leidžia išsiimti.

Čia reikia priminti, kad buvo gūdūs 2014 metai kai visos kriptovaliutos buvo dar ant bangos. Pvz.: Login 2014 konferencijoje buvo daug pranešimų apie kriptovaliutas. Šiemet įtariu bus viso 0 pranešimų.

Taip pat, reikia paminėti, kad pats tip4commit nėra vertinamas vienareikšmiškai. Kažkuri dalis projektų nenori būti su juo asocijuojami. Plius, yra įtarimų, kad pats projektas yra arba nelegalus, arba ant legalumo ribos. Ir dar kai kurie jį kaltina piniginėmis machinacijomis. Nes projekto savininkai gali būti, kad pasisavina dalį paaukotų pseudo-pinigų. Kas būtų visiškai neįtikėtina, nes kur gi girdėta, kad bet koks projektas susietas su bitkoinais būtų neskaidrus.

Šitie faktai, aišku, man visiškai nesutrukdė, nes aš apie juos tada dar visiškai nežinojau.

Taigi, aš ale gavau tų bitkoinų ir nusprendžiau, kad man, kaip kompiuterastui būtų į naudą su jais pasižaisti ir susipažinti iš techninės pusės.

Tai aš buvo sugalvojęs, kad man reikia kažkaip gauti ten tų bitkoinų ir tip4commit būtų puikus būdas.

Turtėjimo planas

Taigi, prieš pradėdamas turtėti, aš ne tik kvailai neišsiaiškinau projekto skaidrumo. Tuo pačiu aš dariau klaidingą prielaidą apie patį bitkoinų dalinimo algoritmą.

Aš dariau prielaidą, kad bitkoinus duoda pagal kodo atnaujinimo eilučių skaičių. O pasirodo, kad duoda tiesiog pagal commit'ų skaičių.

Remdamasis savo kvaila prielaida aš sugalvojau, kaip greitai praturtėti. Man tiesiog reikia prirašyti daug kodo.

O kur šiek tiek pro pirštus yra žvelgiama į logikos dublikavimą?

Turtėjimo planas: Unit testai

Unit testai. Čia žinoma filosofinis klausimas, bet rašant unit testus lyg ir galima dublikuoti eilutes. Man asmeniškai patinka, kai atsidarai unit testo kodo ir pačioje testo funkcijoje ar metode matai viską:

- Pradines sąlygų sukūrimas
- Testuojamos dalies paleidimas
- Visos assertFoo komandos

Dėl to, jeigu pavyzdžiui, turi 4 testus, kurie testuoja tą patį funkcionalumą, tie 4 testai turės labai panašų kodą, kurį būtų galima vadinti kodo dublikavimu. Ir tarsi reiktų iškelti į atskirą metodą. Bet tada testai taps mažiau suprantami. Trumpai, filosofinis klausimas.

Kaip jau minėjau, Django turi savo Jenkins serverį. Kuris prie visa ko leidžia testus ir generuoja kodo padengimo testais ataskaitas.

Taigi, aš susiradau django.contrib.admin Meta klasės opcijų validacinį modulį, kurio padengimas testais buvo labai mažas ir pradėjau jam rašyti unit testus.

Rašiau, rašiau

Rašiau, rašiau. Prirašiau kelis šimtus eilučių. Pamiršau aš tuos ir bitkoinus. Neberūpėjo jau man jie. Nes radau kitą skaičiuką. Ant kurio galima, kaip ant heroino kabliuotis. Tą procentą, kuris rodo kiek failas yra padengtas testais. Buvo 63% dabar yra 65%. Dar, dar reikia dar procentų.

Berašydamas turėjau nemažai pasiknaisioti po Django: tiek .contrib.admin tiek pačią šerdį (taip verčiu core. Šerdis), kad suprast, kas per velnias dedasi.

Rašiau be reikalo

Ir besiknaisiodamas radau įdomią kodo vietą. Ji teigė, kad tas modulis, kuriam unit testus aš rašau, bus apleistas (depreciated) ir ištrintas. Taigi nebeliko prasmės rašyti testus.

Beje, jau master gijoje jis yra ištrintas.

Bet

Bet. Už tai berašydamas testus, aš radau vieną tikrą klaidą.

Kodas turėtų mesti ValueError. Jis ir meta ValueError. Bet meta ne dėl to, kad Django kodas prašo mesti ValueError.

ValueError yra metamas giliau. % metodas gauna per didelį kiekį parametrų ir lūžta su ValueError. Taigi turime ValueError su blogu message atributu. Ir stack trace gauna papildomą frame'ą.

Kodo atnaujinimas

Atsimenate atnaujinimą.

Taigi, aš susikūriau sau užduotį pataisyti tą vietą. Ir prirašiau realiame kode tą vieną raidę. Dabar Django kodo bazė yra truputį geresnė, nes aš susigalvojau kvailystę.

Kodo atnaujinimas: biurokratija

Kad būti visiškai sąžiningu, tai čia yra visas kodo pokytis. Viena eilutė, keičianti Django kodą.

Visa kita -- biurokratija. Bet, mano manymu, svarbi ir reikalinga biurokratija. Pranešimas Release Notes. Ir, žinoma, unit testas.

Ačiū

Tai va. Istorijos pabaiga. Čia buvo mažas žvilgsnis į mano dalį atviro kodo veiklos.

Tikiuosi, ši istorija gali būti kaip iliustracija, kad prisidėjimas prie atviro kodo projektų neprivalo būti kažkoks įspūdingas dydžiu ir/ar vedinas kilnių tikslų ir/ar reikalaujantis nežmoniškų pastangų.

Tai tiek. Ačiū, kad išklausėte. Jeigu turite klausimų, mielai į juos atsakysiu.

2015 m. sausio 9 d.

Apie vieną taikos kultūros statistiką

Kad mes pilnai europiečiai rodo ne tik Euro įsivedimas, bet ir tas, kad kaip ir visoje likusioje vakarų civilizacijoje, taip ir Lietuvoje yra gyvas galas europietiškų kairiųjų, užaugintų ant Noam Chomsky (aš nesakau, kad Chomsky ir blogai, beje) ir pan. Žinoma, pilna ir tų senovinių komunistinių kairiųjų, bet va internetuose, manau, daugiau naujųjų -- europietiškųjų (neskaitant botų, kas be ko).

Tai va šiomis dienom tie europietiški (kaip ir likusioje vakarų civilizacijoje) pradėjo gana vokaliai rodyti savo priklausymą pro-religinių-žudymų judėjimui. Tas jų judėjimas pasireiškia krikščionybės ir judaizmo viešu išjuokimu ir žeminimu, bei gilia pagarba ir supratingumu islamo religijai. Dar jie žinomi kaip ne islamofobai. Neretai koreliuoja su Putino rėžimo apologetais. Ypač su pastaraisiais gerai sutaria klausimu, kad dėl visko kalta JAV, ar bent jau vakarų civilizacija.

Vienas iš įdomesnių anų argumentų man asmeniškai yra tas, kai jie kur komentuodami numeta teiginį, kad: skirstant pagal religijas, daugiausia žūstančių nuo terorizmo atakų išpažįsta islamo religiją [1]. Atseit, ko jūs čia myžat, va anie vargšai iš tos anos kultūros tai nukenčia žymiai labiau negu mes.

Yra melas, didelis melas ir statistika. Čia vienas iš tų atveju. Tuo pačiu parodantis žmogžudžių apologetų tam tikrą mastymą.  Nagrinėjant teroristų atakas susikoncentruojama į aukas, o ne į vykdytojus.  Taip -- daugiausia žuvusių teroristinėse atakose yra musulmonai. Bet spėkite, kokios religijos savižudžiai sprogdintojai sprogdina musulmonus. Taip -- islamo. Čia kai dėl nusikaltimo kaltinama auka, o ne budelis.

Panašiai, kaip kad seksualinių nusikaltimų statistikoje absoliutiniu skaičiumi yra išprievartaujama daugiau vyrų nei moterų (Jeigu atrodo netiesa, tai atsakymas vienas žodis: kalėjimas). Tai tokią statistiką išgirdus atrodo: o vargšai vyrai. Moterys galėtų ir patylėti, nes palyginus su vyrais, tai jų kančios tik gėlytės. Bet jeigu kaltinsi vis dėl to nusikaltimo vykdytoją, o ne auką, tai pamatysi, kad absoliuti dauguma prievartautojų yra vyrai. O visų atvejų, kai prievartauja moterys, aprašymai atsiduria naujienų portalų gyvenimo būdo skyriuose. Šalia straipsnių apie kokią nors įžymybę su miniatiūriniu bikiniu.


[1] http://fas.org/irp/threat/nctc2011.pdf

Aš prastai piešiu #3

Buvau darbinėje kelionėje. Gera kelionė buvo. Šauni šalis ir daug naudingos patirties įgavau. Dargi buvo po ranka sąsiuvinis ir tušinukas.












2014 m. spalio 16 d.

Kas nors gero apie JAV: ambasados po okupacijos

Sugalvojau, kad reikia ką nors teigiamo parašyti apie JAV. Nes, manu, kad tuoj vatnikų kanalais [1] prasidės gausus šūdo pylimas ant vakarų šalių ir vakarų kultūros. Dėl to norisi šiek tiek kompensuoti ir parašyti, ką nors gražaus apie JAV. To aktyvumo laukiu, nes kaip kad prognozavo R.Sadauskas [2] yra tikimybė, jog Rusija baigė vieną Ukrainos karinio užpuolimo etapą ir pereina į kitą:
Dabar Rusija skuba taisyti šio karo pasekmes – pašlijusius santykius su Vakarais.
Tai į klausimą: "kodėl mes turėtume pamiršti, kad Rusija okupavo Krymą, numušė civilių lėktuvą, nužudė tūkstančius žmonių ir sužlugdė ateitį milijonams?" visi putinofilai atsakinės maždaug taip: "O tai kaip JAV užpuolė Afganistaną; kaip Snowden'as šnipinėjo visus; kaip JAV patys susprogdino bokštus dvynius, kad šiemet galėtų užpulti ISIS; kaip JAV sufalsifikavo nusileidimą Mėnulyje, nes taip siekė sukelti Maidaną; kaip Norvegijoje JAV grobia lietuvių vaikus ir atidavinėja lesbietės ir gėjaus porai? Aaa? Ir iš viso Krymas jau kokius 20-imt tūkstančių metų visą laiką priklausė Rusijai ir ten vien tik rusai gyveno. Ir iš vis ten ne Rusija okupavo, o JAV sukėlė visą šitą konfliktą.".

Tai va. Istorija. 1940-aisiais Sovietų Sąjunga okupavo Lietuvą. Lietuva nepriklausomybę atgavo 1990-aisiais. Tai tarsi kaip ir tuos 50-imt metų Lietuvos nebuvo. Netiesa. Sovietai okupavo Lietuvą ir beveik visas valdžios institucijas apstatė savais komunistais. Tas žodis "beveik" čia svarbus. Jie negalėjo pakeisti visų visų institucijų darbuotojų. Nes yra toks dalykas, kaip diplomatinė tarnyba. Ambasados ir panašiai.

Kažkada man tai buvo didelis maindfakas (taisyklingai turbūt būtų: aš buvau didžiai nustebintas idėjos), kai suvokiau, kad taigi jo -- jokia agresorė negali visiškai absoliučiai okupuoti šalies. Nebent okupuoja visą žemės planetą. Kitaip sakant, visas kitas šalis.

Pažiūrėkime, kaip sekėsi Lietuvos diplomatinėms tarnyboms po okupacijos.

Italija (oficialiai pastatą atidavė 1945, bet realiai 1940): Pripažino Lietuvos inkorporavimą į Sovietų Sąjungą ir atidavė ambasados pastatą. [3]

Prancūzija (1940): Pripažino Lietuvos inkorporavimą į Sovietų Sąjungą ir atidavė ambasados pastatą. [4]

Švedija (1940): Švedija pripažino Baltijos šalių inkorporavimą į SSRS ir atidavė sovietams Baltijos šalių auksą. [5] Gerai, kad šito fakto nežino visi, kurie verkia, kad Lietuvą valdo skandinavų bankai, o tai verktų dar labiau.

Didžioji Britanija (1942): Baltijos šalys išnyko iš diplomatinio sąrašo, o Baltijos šalių diplomatai tapo asmenimis, kurie daugiau nebeįeina į diplomatinį sąrašą, bet vis dar pripažįstami Didžiosios Britanijos vyriausybės kaip asmenys, turintys tam tikrą diplomatinį statusą. [5]

Šveicarija (1946): Šveicarija sustabdė Lietuvos pasiuntinybės veiklą. [6]

Argentina (1946): Argentinos vyriausybė pasidavė sovietų spaudimui ir suspendavo diplomatinius santykius su Pabaltijo kraštų legaliais atstovais. [7] [8]

Nelabai, kaip sekėsi Lietuvos Diplomatiniai tarnybai. Būtų sekęsi dar prasčiau, jeigu ne dvi šalys: Vatikanas (Šventasis sostas) [9] ir JAV [10].

1946 liepos 23 d. JAV valstybės sekretoriaus pareigas einantis S. Welles pareiškė savo šalies poziciją, kad JAV nepripažįsta Sovietų Sąjungos okupacijos trijose Baltijos valstybėse, ir pažymėjo, kad Lietuvos, Latvijos ir Estijos diplomatinės ir konsulinės įstaigos galės tęsti savo veiklą. [11]

Taip, kai Lietuvai atėjo sunkus laikas JAV neapleido mūsų šalies. Ji jau praėjo "Ar neapšiksi mūsų, kai bus proga" tęstą. Ir jį praėjo aukštais balais. Tai yra viena iš priežasčių, kodėl aš laikau, kad Lietuva turi 4-is draugus, kuriais daugmaž galima pasitikėti: Latvija, Estija, Lenkija ir JAV.

[1] Nežinau, ar teisingai naudoju žodį "vatnikas"
[2] http://druskininkunaujienos.blogspot.com/2014/10/kodel-jiems-prireike-lauztis-i.html
[3] http://www.it.mfa.lt/index.php?2008325242
[4] http://www.delfi.lt/news/daily/lithuania/baigta-lietuvos-ambasados-paryziuje-pastato-istorija.d?id=2260000
[5] http://genocid.lt/Leidyba/7/laurynas7.htm
[6] http://lt.wikipedia.org/wiki/Lietuvos_diplomatin%C4%97_tarnyba
[7] http://www.aidai.us/index.php?option=com_content&task=view&id=1345&Itemid=150
[8] http://www.delfi.lt/news/daily/emigrants/montevidejuje-atidarytas-lietuvos-garbes-konsulatas.d?id=59827035
[9] https://va.mfa.lt/va/lt/dvisalis-bendradarbiavimas/lietuva-ir-sventasis-sostas
[10] https://usa.mfa.lt/usa/lt/atstovybe/apie-ambasada
[11] http://genocid.lt/Leidyba/6/laurynas6.htm

Taip, didžioji dalis mano "istorinių" šaltinių yra lyg tarp kitko paminėti faktai delfyje.

2014 m. rugpjūčio 13 d.

Europython 2014 apžvalga sau

2014 metų liepos 21-27 dienomis praleidau Berlyne, kur vyko EuroPython 2014 [1] konferencija. Visos konferencijos metu, remdamasis savo magistro studijų patirtimi [2], viską konspektavau į užrašų knygutę. Tai iš esmės įrašas skirtas man pačiam. Tam, kad geriau viską atsiminčiau. Bet gal tai bus naudinga ir kitiems (Tikriausiai nebus naudinga niekam). Perspėjimas: reikia būti Python programuotoju, norint bent kažką suprasti šitose sapalionėse.

Konspektavau, aišku, į kažkokią sporto klubo motyvacinę knygutę, kur reikia rašyti, kaip jauteisi, ką valgei, kiek šikai ir pan. Visiems konspektams tas suteikė keistą foną. Ir šiokią tokią sąžinės graužatį visos konferencijos metu. Kai visiškai nepavyko išlaikyti sportinio rėžimo. Nu, nebent jeigu nedamiegojimą ir besaikį šokoladinių batonėlių, kavos ir alaus vartojimą galima laikyti sportiniu rėžimu.
Tai va, kalbos, kurias aš pats išklausiau gyvai:

Keynote: One year of Snowden, what's next?
https://ep2014.europython.eu/en/schedule/sessions/118/


Vokiečiai labai jautriai reagavo į faktą, kad, girdi, jų partneriai (JAV ir Didžioji Britanija) drįso juos šnipinėti. PRISM, Tempora ir pan.

Ragino visus užsiimti duomenų kodavimu visuose lygiuose. Aš tai tingiu tą daryti.

pymove3D Winner Announcement
https://ep2014.europython.eu/en/schedule/events/11/


Čia buvo kažkoks grybas. Visiška nesąmonė. Galėjau neiti, o vietoje to praleisti bufete, valgydamas dar daugiau šokoladinių batonėlių.

Keynote: What can python learn from Haskell?
https://ep2014.europython.eu/en/schedule/sessions/121/



Trumpai: anot Bob'o, jam patinka griežtai tipizuotos funkcinės programavimo kalbos. O Python'as nėra tokia programavimo kalba. Dėl to Haskell yra geriau. Anot jo.

Kelios įdomios nuorodos, pateiktos kalbos metu:

Python versija su statiniais tipais. Hmmm...:
http://www.mypy-lang.org/

PEP'as apie funkcines anotacijas:
http://legacy.python.org/dev/peps/pep-3107/

Beje, jau veikia Python 3:
https://docs.python.org/3/tutorial/controlflow.html#function-annotations

Lightning Talks #1
https://ep2014.europython.eu/en/schedule/events/12/ 

Vienintelė įdomesnė nuoroda, kurią užsirašiau:
https://packaging.python.org/

Recruiting Session
https://ep2014.europython.eu/en/schedule/events/67/


Žodžiu, visi EP2014 rėmėjai ieško programuotojų. Kuo pigesnis ir kuo geresnis programuotojas -- tuo geriau.

Keynote: Will I still be able to get a job in 2024 if I don't do TDD?
https://ep2014.europython.eu/en/schedule/sessions/120/



Kaip ir neatsakė į klausimą. Bet kalbėtoja, mano, kad kuo toliau, tuo daugiau žmonės naudos automatinius testus. Aš ir taip manau. Dar supykau ant pavadinimų "Code Kata", "Coding Dojo" paminėtų kalboje. Grynai dėl to, kad aš durnas.

The Magic of Attribute Access
https://ep2014.europython.eu/en/schedule/sessions/123/


Įdomi kalba apie atributų skaitymo magiją. Nuorodos:

Kaip veikia property:
https://docs.python.org/3.4/howto/descriptor.html

MRO (Method Resolution Order):
https://www.python.org/download/releases/2.3/mro/

Extending Python, what is the best option for me?
https://ep2014.europython.eu/en/schedule/sessions/69/


Nelabai įdomu. Vienas paketas apie, kurį aš buvau viena ausimi girdėjęs, bet niekada taip ir nepasigilinau, apie ką jis:
https://cffi.readthedocs.org/

Message-passing concurrency for Python
https://ep2014.europython.eu/en/schedule/sessions/113/


python-csp autorė pasakojo apie kaip su Python'u atkartoti tai, ką, pavyzdžiui, daro Google Go programavimo kalba su Goroutines. Paketas gal ir geras. Nežinau, nes nežiūrėjau ir netestavau. Autorė vienos kavos pertraukėlės metu (kai čiaumojau šokoladinius batonėlius) man pasakojo, kad Python dinamiškumas stipriai kerta per žinučių siuntimo greitį. Ir kad tas nėra didelė problema kompiliuojamose kalbose, tokiose kaip Go, Scala ar Rust.
https://github.com/snim2/python-csp

Solution oriented error handling
https://ep2014.europython.eu/en/schedule/sessions/174/


Pavadinimas skambėjo labai įspūdingai. Bet pati kalba tai šiaip sau. Trumpai: nerašykite spageti kodo. Hmmmm... Tą ir taip žinojau.

How to make a full fledged REST API with Django OAuth Toolkit
https://ep2014.europython.eu/en/schedule/sessions/81/


Nieko gero.

Gamers do REST
https://ep2014.europython.eu/en/schedule/sessions/136/


Demonware darbuotojas pasakojo apie jų Rest API, skirtą žaidimų, žaidžiamų tinkle, suvaldymui. Demonware kažkada buvo nepriklausoma kontora. Dabar priklauso Blizzard|Activision. Tai ir gamina produktus tik pastariesiems.

Žaidimų sąrašas gana įspūdingas:
- Diablo 3
- Call of Duty
- Ir taip toliau

Kas nustebino? Labai ir labai žemiški įrankiai: Django, MySQL, Apache2.

Kelios įdomesnės nuorodos:
- Kontoros puslapis: http://www.demonware.net/
- MySQL schemos migracijos įrankis, nereikalaujantis nieko stabdyti: http://www.percona.com/software/percona-toolkit
- JSON schema: http://json-schema.org/ Hmmm....

Lightning Talks
https://ep2014.europython.eu/en/schedule/events/24/


Negaliu paaiškinti, ką aš čia galvojau

Dvi nuorodos, kurias pasižymėjau:
- http://legacy.python.org/dev/peps/pep-0436/
- http://kit.pyladies.com/en/latest/

Keynote: Our decentralized future
https://ep2014.europython.eu/en/schedule/sessions/122/


Vienas pagrindinių ZeroMQ veikėjų padarė labai įdomų pranešimą. Kalbėjo labai įdomiai. Ar vėjus kalbėjo, tai nežinau. Reiktų labiau pasigilinti.

Pasižymėjau, kad reiktų patikrinti jo knygą "Culture & Empire: Digital Revolution":
http://www.amazon.com/Culture-Empire-Revolution-Pieter-Hintjens-ebook/dp/B00GF48Z4S/
http://cultureandempire.com

How we switched our 800+ projects from Apache to uWSGI
https://ep2014.europython.eu/en/schedule/sessions/137/


Visąlaik norėjau pasigilinti į uWSGI. Kažkiek padėjo pasiaiškinti. Pasirodo visai neblogas įrankis. Reikės pasidomėti daugiau:
https://uwsgi-docs.readthedocs.org/en/latest/

Using All These Cores: Transactional Memory in PyPy
https://ep2014.europython.eu/en/schedule/sessions/51/


PyPy žmogus pasakojo, kaip jis eksperimentavo su Transactional Memory idėja. Ir kaip jis sugebėjo pašalinti GIL naudodamas Transactional Memory. Viskas dar tik eksperimentinėje stadijoje.

Po teisybei aš buvau (ir esu) per durnas, kad suprasčiau šitą kalbą:
http://en.wikipedia.org/wiki/Transactional_memory

Stackless: Recent advancements and future goals
https://ep2014.europython.eu/en/schedule/sessions/114/


Stackless kūrėjas pristatinėjo Stackless. Parodė kelis įdomius dalykus. Pavyzdžiui galimybę pickle'inti funkcijų paleidimo steko būseną. T.y. paleidi programą. Programos metu kviečiama funkcija A, kuri kviečia B, kuri kviečia C. Ten išsaugai (su pickle moduliu) būseną į pickle objektą. Kitą kartą galėsi paleisti programą būtent toje būsenoje, kurioje ir išsaugojai.

Įdomiausia, kad galima šokinėti tiek per operacines sistemas, tiek per architektūras. Pvz.: išsaugoti būseną Mac OS X 64bit ir programą pratęsti Windows 7 32bit. Ar panašiai:
- https://docs.python.org/2.7/library/pickle.html
- http://www.stackless.com/

Automatic code reviews
https://ep2014.europython.eu/en/schedule/sessions/75/


Apžvelgė įrankius automatiniui, statiniui Python kodo tikrinimui:
- https://gemnasium.com/
- https://landscape.io/
- https://github.com/landscapeio/prospector
- https://github.com/landscapeio/pylint-django

Identifying Bugs Before Runtime With Jedi
https://ep2014.europython.eu/en/schedule/sessions/83/


Jedi kūrėjas pristatė, kaip jo įrankis (Jedi) gali būti naudojamas ne tik automatinio užbaigimo funkcionalumui, bet ir kaip pylint pakaitalas/papildinys.

Šitą Jedi jau senokai žadu išbandyti. Bet vis neprisiruošiu. Ir šiek tiek bijau kuo toliau tuo bijau, ką nors keisti savo Vim konfiguracijose. Nes žinau, jog vos tik pradėsiu kažką kažkur klibinti, tai viskas vis tiek galiausiai pasibaigs minimum 4 valandų Vim spalvų gamos rinkimusi... Galiausiai liekant prie tos pačios spalvų temos.
http://jedi.jedidjah.ch/en/latest/

Python in system testing
https://ep2014.europython.eu/en/schedule/sessions/12/


Nieko gero neatsimenu iš šitos kalbos.

Lightning Talks
https://ep2014.europython.eu/en/schedule/events/25/


Po teisybei nieko – visiškai nieko – nepasižymiau.

Multiplatform binary packaging and distribution of your client apps
https://ep2014.europython.eu/en/schedule/sessions/31/


Kaip autorė naudojo cython, Python programos pavertimui binariniu paleidžiamu failu.

Metaprogramming, from decorators to macros
https://ep2014.europython.eu/en/schedule/sessions/84/


Apie metaprogramavimą. Ir apie macros'ų įgyvendinimą Python. Įgyvendintas jis, tiesiogiai lendant prie abstraktaus sintaksės medžio. Prašau, nenaudokite to, kuriant ne eksperimentinius projektus:
https://github.com/lihaoyi/macropy

Python Debugger Uncovered
https://ep2014.europython.eu/en/schedule/sessions/23/


Labai rekomenduoju šitą kalbą. Vien geriausių visoje konferencijoje. Apie tai, kaip paprasta pasirašyti debug'erį.

https://docs.python.org/3/library/sys.html?highlight=sys#sys.settrace

Plius, autorius gauna papildomų taškų už tai, kad pozuodamas nuotraukai, naudojo niekam nežinomą rankos-pakištos-po-bicepsais-tam-kad-raumenys-atrodytų-didesni-nei-yra triuką:
https://ep2014.europython.eu/en/accounts/profile/358/

Morepath: a Python Web Framework with Super Powers
http://morepath.readthedocs.org/en/latest/



Buvęs užkietėjęs Zope programuotojas pristatė naują micro web karkasą (web framework) [3].
http://morepath.readthedocs.org/en/latest/

The inner guts of Bitbucket
https://ep2014.europython.eu/en/schedule/sessions/24/


Bitbucket žmogus pristatė technologijas, kurias jie naudoja. Ir iššūkius, su kuriais jie susiduria. Vėlgi, kaip Demonware, atveju nustebino tas, kad jokios magijos. Gunicorn, Django, Celery ir pan.
https://bitbucket.org/

Farewell and Welcome Home: Python in Two Genders
https://ep2014.europython.eu/en/schedule/sessions/58/


Moteris, kuri anksčiau buvo vyru, pasakojo, kaip IT bendruomenėje jaučiasi moterys. Po teisybei labai mažai pasakojo apie buvimą moterimi. Daugiausia pasakojo apie save ir apie savo transformaciją. Kas suprantama. Po teisybei, nė velnio nesuprantama ir nebandysiu apsimetinėti, kad turiu galiu suprasti.

Bet kokiu atveju, akiratį praplečianti kalba.

Lightning Talks
https://ep2014.europython.eu/en/schedule/events/26/


Įdomios nuorodos iš greitųjų kalbų:
- https://pypi.python.org/pypi/e/1.4.5
- https://pypi.python.org/pypi/netaddr
- http://doc.devpi.net/latest/

Keynote: Python's Role in Big Data Analytics: Past, Present, and Future
https://ep2014.europython.eu/en/schedule/sessions/119/


Numpy pagrindinis programuotojas pasakojo apie Python panaudojimą kažkur, kur matomai aš nenaudoju. Nes visa kalba ir visos nuorodos man yra svetimos ir nelabai suprantamos:
- http://legacy.python.org/dev/peps/pep-3118/
- http://numba.pydata.org/
- http://blaze.pydata.org/
- http://conda.pydata.org/

Scientific Visualization with GR
https://ep2014.europython.eu/en/schedule/sessions/86/


Pristatė paketą vizualizuoti duomenims. Pagrindinis privalumas prieš matplotlib tas, kad yra ir 3D vizualizavimas. Paketas komercinis. Ir šiaip kalba – šeipsau.

Everything You Always Wanted to Know About Memory in Python But Were Afraid to
Ask
https://ep2014.europython.eu/en/schedule/sessions/28/


Jau jaučiasi, kad paskutinė konferencijos diena. Ir aš turbūt pavargęs. Nelabai atsimenu, ką čia pasakojo. Turbūt šeipsau kalba, jeigu jau neatsimenu.

Aij, bet tai prisiminiau vieną įdomų Python veikimo pavyzdį iš šios kalbos:
>>> foo = 1
>>> bar = 1
>>> foo is bar
True
>>> foo = 256
>>> bar = 256
>>> foo is bar
True
>>> foo = 257
>>> bar = 257
>>> foo is bar
False


https://docs.python.org/2/c-api/int.html#PyInt_FromLong

Įdomūs paketai iš kalbos:
- https://pypi.python.org/pypi/objgraph
- https://pypi.python.org/pypi/psutil

Fun with cPython memory allocator
https://ep2014.europython.eu/en/schedule/sessions/9/


Irgi nelabai, ką atsimenu. Kažkas apie tai kaip malloc ir draugus pakeisti kažkuo kitu. Jaučiu, kad susiję su šituo PEP:
http://legacy.python.org/dev/peps/pep-0445/

Concurrent programming with Python and my little experiment
https://ep2014.europython.eu/en/schedule/sessions/65/


Buvo galima likti toje pačioje salėje ir klausytis dar vienos kalbos apie Python'o atmintį.

Kaip žmogus perkėlė Go kalbos Goroutines idėjas į Python. Naudojantis naujuoju async.io:
- https://docs.python.org/3/library/asyncio.html
- https://github.com/benoitc/offset

Sprint Orientation
https://ep2014.europython.eu/en/schedule/events/27/


Liepos 26-ą ir 27-ą vyko atviro kodo sprintai. Tai čia žmonės organizuojantys sprintus, juos pristatinėjo.

Tai dabar po tų sprintų Django kode yra dvi mano parašytos kodo eilutės. Plius, keliolika eilučių unittest'ų.

Lightning Talks
https://ep2014.europython.eu/en/schedule/events/28/


Nieko gero neužsirašęs. Po teisybei beveik nieko neužsirašęs. Išskyrus vieną dalyką. Kad Yandex naudoja Python. Kažkodėl tuo metu įdomus faktas pasirodė.

[1] https://ep2014.europython.eu/en/
[2] http://petraszd.blogspot.com/2010/06/magistrantura-epilogas.html
[3] http://programisiu-godos.blogspot.com/2012/07/naudok-kudus-web-karkasus-ir-pipira.html