PyCon Ireland 2016: parhaat pointit

Kävin viime syksynä Irlannin PyConissa (lue myös aiempi blogaukseni Suomen PyConista) ja nyt viimein esitysvideotkin on laitettu YouTubeen.

Seminaaripäivä alkoi viiden herätyksellä, jota seurasi välilasku tunnin taaksepäin ajassa, ja sitten toinen tunti taaksepäin Irlantiin. Dublinia en valitettavasti päässyt näkemään kovin paljoa, vaikka päivälle kertyi reilu 22 tuntia valveillaoloa. Illalla kävimme konferenssihotellilla katsomassa ympärillemme ja otimme oluet muiden paikallaolevien konferenssivieraiden kanssa.

Lauantaina virkeänä paikalle, erittäin sikeiden unien jälkeen. Tämä konferenssi oli noin kahdesti Suomen konferenssia isompi, myös kestoltaan ja hektisyydeltään – hyvällä tavalla, totta kai. Sponsoriständit suoraan salien edessä käytävällä rajoittivat kulkua ja nostivat äänenvoimakkuutta kenties turhankin paljon, mutta toisaalta ne sai käytyä läpi tauoilla.

Paikallinen työministeri Mary Mitchell-O’Connor avasi tapahtuman. Enpä tiennyt, että Irlannin viennistä 40 % on teknologiaa, tai että neljä viidestä suurimmasta vientiyrityksestä ovat teknologia-alalla! Valitettavasti hän ei tainnut jäädä paikalle seuraamaan tapahtumaa pidemmäksi aikaa, jonkinlainen jutustelu olisi ollut varmasti antoisaa.

Pythonin käyttö yleistyy Mozilla Firefoxissa

Ensimmäisen keynoten piti Tarek Ziadé Mozillalta, otsikko sopivasti Mozilla & Python. Hän kertoi miten Pythonin käyttö on yleistynyt Mozillalla Firefox-selaimen julkaisuketjussa. Vielä vuonna 2009 Mozillalla oli erittäin sekalainen seurakunta ohjelmointikieliä ja -kehyksiä, mutta nyt suurin osa on Pythonia ja Djangoa.

CertBot: olennainen osa tietoturvaa

Hienoa heijastusta Suomen PyConiin tuli Justin Mayerin Essential Python Security -esityksessä, kun hän mainitsi CertBotin (aiemmin Let’s Encrypt Client) olennaisena osana tietoturvallista infrastruktuuria. Esityksessä käytiin lähinnä läpi paljon hyviä käytäntöjä ja ratkaisuja, eli kalvot kannattaa katsoa – ne ovat niin oleellisia, että kaivoin linkinkin tähän artikkeliin!

Pythonilla helppoa käsitellä suuriakin määriä dataa

Heijastusta Suomen konferenssiin tuli myös tietojenkäsittelyteemasta. Irlannissa sitä oli puolen ohjelman verran. Zalandon Ana Peleteiro Ramallo veti perustason esityksen Introduction to Data Science in Python. Oikein hyvä perustason lähtö, jos ei tunne alaa. Tämä, seuraava Ali Kingin Data Pipeline Evolution ja Breandan Considinen Experimenting in Tensorflow – yhdistetynä Suomen konferenssin puheisiin aiheesta – antoi ymmärtää vain yhden asian: Pythonilla on todella helppoa ja tehokasta päästä käsittelemään suuriakin määrää dataa. Sitten täytyy vain oppia matematiikka ja tilastotiede.

Läheltä liippasi Johannes Ahlmannin How to Merge Noisy Datasets. Joskus, tai pikemminkin yleensä, kerätty tieto on eri tavoin sotkuista. On erilaisia merkistöjä, eri kulttuureissa ihmiset nimetään eri tavoin ja osoitteet ovat eri maissa erilaisia. Puhuja esitteli miten näihin saadaan tolkkua erilaisten Python-kirjastojen avulla. Siellä oli monta kirjastoa, joista olisi ollut hyötyä, jos niitä olisi ollut aikoinaan olemassa.

Python-tulkki

Pythonin sisäisestä toiminnasta on aina kiva kuulla myös. Stephane Wirtel puhui otsikolla CPython Bytecode and VM siitä, miten Python-tulkki (virallisen toteutuksen nimihän on CPython) kääntää ihmisluettavan ohjelmakoodin väliaikaiseen muotoon, jota tulkki itse asiassa tulkitsee. Hän kävi läpi tiedon rakenteen ja miten ihminen voi sitäkin lukea.

Säielukon poistaminen Pythonista

Toinen keynote liippaa läheltä. Se tuli Larry Hastingsilta, joka on Pythonin ydinkehittäjiä. Hänen esityksensä nimi oli GILectomy. (Kyseinen video ei ole juuri tästä seminaarista, mutta puheen sisältö on suunnilleen sama.) Kyseessä on nk. GILin, prosessinlaajuisen säielukon (Global Inerpreter Lock) poistaminen Pythonista. GIL on suorituskykyinen ja elegantti tapa taata säikeelle vapaat kädet koodin suorittamiseen, mutta vastapainona monisäikeiset ohjelmat hidastuvat moniytimisillä koneilla. Pythonin kehittäjä Guido van Rossum toi sen kieleen vuonna 1992, jolloin tietokoneissa ei ollut kuin yksi ydin, ennen kuin Linuxissa oli tukea säikeille.

Ongelma on alkanut muodostua nykyään, kun moniytimiset suorittimet alkavat yleistyä jopa älykelloissa. Tällä hetkellä Hastingsilla on ideoita miten ratkoa tämä tilanne, mutta hän etsii vielä parhaita kompromisseja. Suorituskyky ei ole vielä riittävän hyvä yksisäikeisille ohjelmille ja C-ohjelmointikielellä kirjoitetut moduulit saattavat hajota. Moduulien hajoamisen voisi välttää esimerkiksi toimittamalla kaksi versiota kielestä, mutta päätöksiä ei vielä ole. Odotamme siis innolla mitä tästä tulee!

Oma esitykseni: Plug in with Python

Pääsin itsekin lavalle. Uusin aiemmassa Suomen PyConissa olleen Plug in with Python -esitykseni. Tällä kertaa olin laajentanut kalvosettiä, ettei aika pääsisi loppumaan kesken. Ikävä kyllä videotykin kanssa oli ongelmia, kuten kaikilla muillakin, joten esityksessä tuli hieman kiire. Jouduin karsimaan jonkin verran mielenkiintoista materiaalia pois, mutta toisaalta esitys saattoi pysyä tämän ansiosta paremmin kasassa. Voit itse katsoa tähän upotetusta videosta mitä mieltä olet.

***
Kuva: Flickr Creative Commons, Cazz.

Vältä Pimeä Agile

Ketterästä ohjelmistokehityksestä, agilesta, pidetään niin paljon ääntä, että voisi luulla aivan kaikkien harjoittavan sitä. Ikävä kyllä agile on alkanut kärsiä vapaasti muuttuvien kuvausten ongelmasta, vähän kuin kilpailua syrjivää sääntelyä kutsutaan kapitalismiksi. Maailmalla on paljon esimerkkejä, että itse asiassa monet, jotka sanovat olevansa agileja, eivät sitä oikeasti ole. Nämä tahot harjoittavat Pimeää Agilea, ja näin sinä voit välttää syyllistymästä samaan.

Houkutus on suuri
Houkutus on suuri

Muista, mistä agilessa on kyse

Jotta voi välttää antautumasta agilen pimeälle puolelle, täytyy ensin muistaa mistä agilessa on kyse. Liike alkoi n. 15-20 vuotta sitten eri ideoiden koheesiosta. Ohjelmistokehitys oli hidasta ja kankeaa. Ohjelmoijat saivat olla kiitollisia jos näkivät saman koodin kehittyvän iteraatioissa, muuten kaikki tehtiin kerralla hyvin suunnitellusti. Agilen kenties tärkein vaikuttaja oli Extreme Programming -nimellä kulkeva joukko menetelmiä. Kirjoittamalla yksikkötestejä ja modulaarista koodia, harjoittamalla pariohjelmointia ja muokkaamalla koodia usein pystyy toimittamaan toimivia ratkaisuja hyvinkin nopeasti.

Scrum pähkinänkuoressa

Scrum on menetelmä, joka jakaa muutaman yksinkertaisen roolin kehittäjien ja liiketoiminnan kesken, antaen muutoin vapaat kädet toimia. Liikepuolelta kuullaan mitä tarvitaan. Tuoteomistaja päättää mitä voi ja pitää tehdä, toki pitäen liiketoiminnan mielessä. Kehitystiimi päättää aikataulut.

Päämääränä luottamus osapuolten välille

Liikepuolelle yrityksessä tämä on vaikea pala, koska hehän tuovat rahat sisään elättääkseen ohjelmoijia! Toisaalta, ohjelmoijat mahdollistavat tämän rahan tuomisen. Tällainen menetelmä, jolla laadukasta ohjelmistoa toimitetaan nopeasti, on tarkoitettu parantamaan luottamusta osapuolten välille. Liikemiesten ei tarvitse enää hönkiä ohjelmoijaparan niskaan kuukausikaupalla kun näytettävää tulee nopeammin. Ohjelmistopuoli alkaa luottaa liikemiehiin enemmän, kun palautetta saa nopeammin.

Ketterän ohjelmistokehityksen julistus kuvastaa muutamalla ranskalaisella viivalla ydinperiaatteet.

Tule pimeälle puolelle…

Ei mennyt kovinkaan kauaa, kunnes agilen pimeä puoli alkoi houkutella. Perinteiselle projektijohdolle Scrum Master -koulutus on tietysti yksi natsa CV:ssä muiden joukossa, mutta alunperin Scrummasterin piti olla yksi kehittäjistä. Mieluusti vähän väliä eri kehittäjä. Syyllistämättä tämän enempää projektipäälliköitä on käynyt niin, että ulkopuolinen Scrummaster lähestyy tilannetta usein komentavasti, ei fasilitoivasti.

Sen lisäksi, että Scrummasterin, tiimin fasilitaattorin, pitäisi olla kiinteä osa tiimiä, hänen pitäisi olla tekninen. Ymmärtämättä Extreme Programmingin tärkeyttä saatetaan ajautua tilanteeseen, jossa testit irrotetaan koodista tai kannustetaan ohjelmoijaa kirjoittamaan monoliitti, koska rajapintasuunnitteluun menee pidempi aika. Tai mitä tahansa muuta, johon ohjelmoijat samaistuvat pimeänä puolena. On valitettavaa, ettei Agile Manifesto nosta tätä yhdeksi periaatteeksi.

Toisin sanoen, Scrummasterin, tai minkä tahansa vastaavan, työ on puolustaa Scrumia ja teknistä laatua, eikä mitään muuta. Jos tämä ei pidä paikkaansa, et harjoita Scrumia, etkä luultavasti agilea muutenkaan.

Mistä tiedät siirtyneesi Pimeään Agileen?

On paljon tunnusmerkkejä, joista tietää lipsuvansa:

  • Työskentelyssä väheksytään suunnittelua, koska sehän olisi vanhanaikaista. Tiimin täytyy ymmärtää, että nopea koodin muokattavuus ei ole hyväksyttävä peruste aikaa hukkaavalle uudelleenkirjoittelulle, jos kerran voi suunnitella paremmin etukäteen.
  • Tuoteomistaja on suorittavalla tasolla tekemisissä ohjelmoijien kanssa, vaikuttaen (tai edes yrittäen vaikuttaa) työskentelyyn. Tuoteomistajan rooli on selventää työtehtäviä, ei muuttaa niitä työn aikana tai kertoa ohjelmoijille miten työ kuuluu tehdä.
  • On olemassa projektipäällikkö, joka pääsee häiritsemään esimerkiksi Scrumin sprinttien pituutta.
  • Vähintään viikottaisia isompia tehtävälistan muutoksia. Tekemättömien töiden listaa voi olla järkevää hienosäätää vaikka jatkuvasti, mutta sprintin tavoitteeseen ei saa kajota kun se on lyöty lukkoon.
  • Yksittäiset pienet alitehtävät tai vastaavat yksityiskohdat näkyvät ulospäin. Liiketoiminnan ei pitäisi välittää kuin päätason tehtävistä ja bugikorjauksista.

Pysy agilen valoisalla puolella

Mitä täytyy sitten pitää mielessä, että pysyisimme agilen valoisalla puolella? Ladon tähän listan, joka pätee melko hyvin, oli käytössä Scrum tai jokin täysin itsekeksitty juuri sinun tiimillesi toimiva malli.

  • Valmiin määritelmä, Definition of Done, sisältää aina vähintään yksikkötestit ja mahdollisesti muita laatukriteerejä. Kukaan tiimin ulkopuolelta ei saa vaatia kriteerien poistamista tai heikentämistä. Ketteryys vaatii laadukasta työtä, joten tiimin täytyy aina varata puskuria mahdollisille ongelmille, olivat ne tiukasta laadunvarmistuksesta huolimatta ilmenneitä bugeja tai jotakin muuta. Kukaan tiimin ulkopuolelta ei saa vaikuttaa ajanvarauksiin tai deadlineihin.
  • Tiimin on ansaittava luottamusta kertomalla tiimin jäsenille ongelmista. Scrummasterin on fasilitoitava ongelmat pois tieltä.
  • Tuoteomistajan on luotettava tiimiin. Jos jotain jää tekemättä sprintissä, sille on varmasti syy ja siitä tulee keskustella, mutta ei syyllistää.
  • Liiketoiminnan ei tarvitse myöskään tietää mistään story pointeista tai velocitystä tai muusta tiimin sisäisestä kirjanpidosta. Ihanteellisesti liiketoiminnan, poislukien tuoteomistajan tai muun yhteyshenkilön, ei tarvitse edes tietää harjoittaako tiimi Scrumia vai jotakin muuta.

Loppuun pari havainnollistavaa Youtube-videota:

 

 

***
Ylin kuva: Flickr CC, Holley & Chris Melton

PyCon Finland 2016

Viikon sisään kaksi konferenssia! Sokerina pohjalla molempien aiheena oli Python-ohjelmointikieli. Ensimmäinen oli PyCon Finland ja toinen PyCon Ireland.  Julkaisen PyCon Irelandista kertovan blogauksen myöhemmin.

Suomen konferenssi kesti yhden maanantaipäivän, mutta oli sitäkin paremmin täynnä ohjelmaa. Päivän alussa järjestettiin salamapuheet, nuo korkeintaan viisi minuuttia kestävät esitykset, joiden aihe on vapaa. Yleensä nämä pidetään tapahtuman päätteeksi, mutta tapahtuman lopussa kannettavien ja projektorien kanssa säätämisen välttämiseksi nämä oli siirretty alkuun. Tämä tosin rajoitti kenties osallistumista, koska usein ideoita voi tulla konferenssin aikana aiheista, joista puhua. Ehkä ajatuksena oli, että ei päätetä konferenssia turhautumiseen ja ainakin salamapuheet olivat hyviä. Varsinaisista esityksistä minulle mieleenpainuvimmat olivat tietojenkäsittelyyn ja tekoälyyn liittyviä.

Käsialatunnistustietokanta

Aleksei Tiulpinin esitys Machine Learning with Python havainnollisti MNISTin käsialantunnistustietokannan käyttöä www-palveluna. Hän kävi läpi teoriaa ja esitteli sitten tekemäänsä ohjelmistoa, jossa selaimeen pystyi piirtämään numeron ja palvelun takana pyörivä tekoäly kertoi minkä numeron luulee olevan kyseessä milläkin todennäköisyydellä.

Tekoälyä työpaikkailmoituksiin

Myös Clemens Westrupin Representation Learning and Deep Sequential Modeling for Predicting Topics of Sentences in Job Advertisements oli mainio. Puhuja kävi läpi miten Oikotien englanninkielisiä työpaikkailmoituksia voi luokitella tekoälyn avulla, kunhan ensin saa kerättyä dataa siitä, mitä sisältö yleensä on.

Yksikkötestit data-analyysin maailmassa

Viimeisenä tästä kategoriasta täytyy mainita Unit Testing in the Scientific Python Stack, jonka piti Antti Kaihola. Tässä puhuja näytti, miten data-analyysin maailmassa voidaan suorittaa yksikkötestejä – eri menetelmiä ja havaintoja sekä bugin kirjastossa.

Valtavirran unohtama ZODB

Lisäksi nostaisin Asko Soukan ZODB-esityksen korkealle. ZODB on valtavirran kenties unohtama – tai tiedostamaton – Python-objektitietokanta. Tähän tietokantaan voi tallentaa suoraan Python-ohjelman ajonaikaisia rakenteita. Yleensä ajonaikaiset rakenteet käännetään JSON-muotoon tallennettavaksi, joten oli mielenkiintoista kuulla miten muutoin tämän voi tehdä. Lisäksi ZODB:ssä on suurin osa vakiintuneiden tietokantojen ominaisuuksista.

Älä unohda tietoturvaa

Päällekkäisyyksien takia ainakin Joona Hoikkalan CertBot-aiheinen esitys Closing the gap with TLS adoption täytyy ehdottomasti katsoa Youtubesta. Tietoturva on tärkeä asia, joka laiminlyödään liian usein.

***
Kuva: Flickr Creative Commons, Chris Parker.

PyCon Finland 2015

Yksi Pyconin mielenkiintoisimpia oppeja oli se, miten Pythonin avulla voi taistella haittaohjelmia vastaan.

PyCon Finland 2015 on Python-kielestä kiinnostuneille suunnattu konferenssi, jonka järjestää Python Suomi ry. Tässä blogauksessa esittelen mielenkiintoisimmat huomiot ja oivallukset niin puheista kuin tapahtuman toimivuudestakin.

Kuin rasvattu käärme

Pycon lähti osaltani käyntiin hieman kankeasti, kun bussini jumiutui ruuhkaan ja missasin vaihtoratikan. Puhujana minun olisi syytä olla ajoissa. Pamahdinkin paikalle kirjaimellisesti viime hetkellä.

Nimikylttiä ei näkynyt rekisteröinnissä! Sainkin sen suoraan järjestäjältä, minkä jälkeen konferenssi sujui kuin rasvattu salami, tai käärme. Taukoja oli sopivasti ja tekniikkakin toimi paremmin kuin yleensä tällaisissa tapahtumissa. Hektisen aamun jälkeen oli mukavaa viettää päivä kitkattomasti soljuvassa tapahtumassa.

Nähtävissä netissä

Mainitsemisen arvoista on etenkin se, että PyCon kuvattiin ensimmäistä kertaa ammattilaisten voimin, ja kaikki talkit tulevat myöhemmin nähtäväksi YouTubeen. Konferenssissa oli kaksi erillistä trackiä, joten kaikkia puheita ei ehtinyt näkemään livenä, vaikka olisi miten halunnut. Onneksi ne voi nyt tsekata jälkikäteen netistä. Kaikki näkemäni puheet olivat hyviä, mutta tässä kohokohdat.

Kafka – jonojärjestely täydellisellä logituksella

Keynotesta on tietysti pakko sanoa pari sanaa. Spotifyn Jyrki Pulliainen esitteli puheessaan Solid data structures in Python with logs Kafkaa, joka on LinkedInin kehittämä viestijonojärjestelmä täydellisellä logituksella, jota pystyy myös hajauttamaan. Homman juju on siinä, että viestijonon voi palauttaa aiempaan tilaan ja kelata eteenpäin haluamaansa pisteeseen. Ehkä mielenkiintoisin käyttökohde tälle olisi tietokantamuutos, jossa luodaan uusi tietokanta päivitetyllä schemalla ja ajetaan vanhan tietokannan transaktiot Kafkasta sisään. Se ei tosin sovellu hyvin töihin, joissa täytyy yrittää uudelleen epäonnistunutta tehtävää, koska jokainen tehtävä on uusi transaktio.

Hakukone, johon asianajajat rakastuvat

Priidu Kull on entinen asianajaja, nykyinen koodari. Hän kertoi puheessaan Building a Product for Legal Professional projektistaan, jossa hän pyrkii luomaan hakukoneen lakidokumenteille. Hakukoneen päämääränä on olla sellainen, että juristit käyttävät sitä mielellään. Hakukone rakentuu asianajajien workflow’n ympärille. Tästä talkista teki erityisen mielenkiintoisen se, että puheen lopuksi Kull keskusteli yleisönsä kanssa projektinsa sisällöstä ja kysyi heidän näkemystään sen ongelmakohdista. Keskustelua syntyi etenkin siitä, miten haut olisi parasta toteuttaa – tekstien hakeminen kun ei ole ihan helppoa. On hienoa nähdä koodaaja avoimena ja vielä hienompaa, kun hän on harvinaisesti sekä asianajaja että koodaaja. Tämän lisäksi opin, että virolainen oikeusjärjestelmä ei ole aivan samanlainen kuin suomalainen.

Python vs. haittaohjelma

F-Securen Matteo Cafasso kertoi ja näytti livenä talkissaan Hunting malware with Python kuinka haittaohjelmia ajetaan. Puheen aikana pääsi näkemään myös F-Securen vakavaa suhtautumista tietoturvaan. Cafasso kertoi, että läppäriä, jolla ajetaan malwarea millään tavalla, kutsutaan punaiseksi läppäriksi. Tämä tarkoittaa, että jos koneelle on mitenkään saatettu malwarea, edes virtuaalisesti sillä ajettavaan ympäristöön, ei konetta saa kytkeä mihinkään paitsi videotykkiin – eikä etenkään laittaa siihen muistitikkua. Hän näytti kolme erilaista haittaohjelmaa ja kertoi niiden toiminnasta.

Ohjelmistovirheitä voi ennustaa

Tommi Penttisen puheessa Bug forecasting by visualizing code evolution  käsiteltiin sitä, miten ohjelmistovirheitä voi ennustaa visuaalisin menetelmin. Hän viittasi paljon Adam Thornhillin kirjaan Your Code as a Crime Scene sekä käytti samaisen Code Maat -ohjelmistoa versiohallinnan kuvaamiseen. Sillä voi nähdä paitsi koodimoduulien omistajuutta, myös paljonko muutoksia koodi on vaatinut. Tästä voidaan päätellä riskikkäitä alueita ja mahdollisia puutteita testauksessa. Jos tällaiset haasteet havaitaan ajoissa, voi niihin myös puuttua ennen kuin nk. tekninen velka kasaantuu holtittoman suureksi ja korjaaminen tulee kalliimmaksi kuin heti hyvin tekeminen.

Lightning talkit

Lightning talkeja oli vain muutama. Niiden lisäksi PyConin sponsorit pitivät omat puheenvuoronsa. Suurin osa niistä oli odotesti rekry-puheita, paitsi Local Bitcoinsin, joka keskittyi Bitcoin-maailman tapahtumiin ja Bitcoinia muistuttaviin muihin blockchain –teknologioihin. Oli virkistävää, että kerrankin sponsori ei ollut vain rekrytoimassa, vaan esitteli uusia näkemyksiä.

Pluginit Pythonissa

Oma talkkini oli nimeltään Plug in with Python. Kerroin sen aikana, mitä pluginit ovat ja miten niitä voi koodata sovelluksiin. Itseäni kiehtoo ohjelmien eräänlainen väärinkäyttö, eli toiminnallisuuden muokkaaminen. Kävin läpi hieman erilaisten ohjelmistojen plugin-arkkitehtuureja ja omaa aiempaa koodia. Valmisteluksi olin tehnyt yksinkertaisen tekstinmuokkaajan PyQt5-käyttöliittymäkirjastolla. Lopuksi tein myös hieman livekoodausta, joissa näytin yleisölle, miten hommat hoituvat käytännössä.

Mitäs Dockerille kuuluu?

PyConin lopuksi oli perinteinen illallinen, jossa päästiin jatkamaan tauoilla lupaavasti alkanutta verkostoitumista. Yksi konferenssien parhaita puolia on se, kun pääsee näkemään tuttuja, joita ei niiden ulkopuolella juuri kohtaa. Lisäksi tietenkin pääsee tapaamaan aivan uusia ihmisiä. Jatkoilla juttelimme paljon Dockerista ja siitä, kärsiikö se samoista ongelmista kuin vuosi sitten. Vuosi sitten oli paljon keskustelua esimerkiksi virheviestien logituksen vaikeudesta ja parhaiden käytäntöjen puuttumisesta. Parhaat käytännöt ovat ilmeisesti kehittyneet hyvin viime vuoden aikana, ja logitukseen on jonkinlaista ratkaisua. Pienten terävien kulmien takia minusta ei tullut suoraan Docker-fania; se ratkoo kyllä ongelmia, mutta ongelmiin on muitakin päteviä ratkaisuja. Siitä huolimatta heräsi halu päästä perehtymään siihen tarkemmin. Päivä päättyi rennosti oluttuopilla One Pintissa.

 //Kuva: Tambako the Jaguar, Flickr