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