Blogi

Kirjoittajan kaikki artikkelit

Uutisia meiltä ja muualta

16.8.2010, kirjoittanut Jussi Kasurinen

Hei taas,

Jos viime kuussa kirjoitin tien päältä Italiasta, olen tällä kertaa kirjailijan hommissa Lundissa, Etelä-Ruotsissa. Rannikon kesäisen sään helliessä, 15C ja sataa vettä, on aikaa istahtaa tietokoneen ääreen ja päivittää hieman uutisia.

Ensinnäkin, Suomen Python-aktivistit ovat laittaneet pystyyn Python Interest Group Finland-nimisen viestiryhmän. Ryhmä toimii Google Groups-systeemin päällä, ja sen tarkoituksena on kerätä Python-harrastajia Suomesta niinsanotusti ”saman katon alle”. Kaikki mielenkiintoa osoittavat ovat arvatenkin tervetulleita, näin alkuvaiheessa tavoitteena onkin saada kokoon ”kriittinen massa” väkeä, jotta homma alkaa pyörimään sujuvasti. Lisätietoja löytyy esim. täältä:

http://groups.google.com/group/pigfi

Toinen uutinen on eräänlainen mielenkiinnon kohde koskien Python-kielen eri versiota. Sain jonkinaikaa sitten taas kyselyn siitä, kumpaa Python-kielen versiota kannattaa käyttää, kakkosta vai kolmosta. Tälläerää tilanne näyttäisi olevan kutakuinkin se, että kakkosversion käyttäjiä on edelleen enemmän (erään tutkimuksen mukaan 70% pythonisteista käyttää 2.6, 15% 3.x ja 15% 2.5 -versioita), mutta kannattaa pitää mielessä, että 2.x-puu on poistumassa kehityskäytöstä, ja nyt ilmestynyt uusin versio on sarjan viimeinen täysverisesti kehitetty kappale. Mitä laajennuspaketteihin tulee, on suuri osa isommista paketeista jo nyt saatavilla itsekäännettävinä versioina Python 3:lle, asennuspakettiratkaisujen tullessa perässä sitten joskus. Olen tainnut sanoa tämän joskus ennenkin.

Mutta joo, itse olen tällä hetkellä kohdistanut mielenkiintoni hieman sivuun Pythonista, ja olenkin parhaillaan tekemässä erästä toista projektia, josta toivon mukaan tulee vielä lähiaikoina jotain valmista. Kerron siitä joskus myöhemmin lisää.

Täältä tähän,

Jussi Kasurinen

Artikkeliin ei ole kommentteja »

Testitapausten hämmentäminen, alan kuumin uutuus

15.7.2010, kirjoittanut Jussi Kasurinen

Hei taas,

Vaihteeksi taas tien päältä kirjoittelen uutta artikkelia blogiin; tällä kertaa pohjois-Italiasta, Trentosta, johon tutkijanhommat pakottivat lähtemään kesken kesälomien. Hyvin, hyvin harmillista tämä tämmöinen.

No joka tapauksessa, kuuntelin aamusta Microsoftin edustajan pitämän palopuheen fuzzing-testauksesta, eli testausmenetelmästä, jossa olemassaolevaan järjestelmään syötetään toimivista testitapauksista tehtyjä variaatioita, joista on muutettu yhtä satunnaista kohtaa. Käytännössä siis eräänlaista evoluutiolaskennan ja satunnaisgeneraattorin luovaa käyttöä testisyötteitä rakentaessa. Idea onkin, että ohjelmalle lähetetään hämmentäviä ”fuzzed” testisyötteitä, joiden avulla voidaan rajapinnoista ja metodeista pukata pihalle ongelmia, joita ei tullut edes ajatelluksi. Luonnollisesti termi fuzzing tuleekin testicaseille tehtävästä toimenpiteestä, jota voidaankin suomalaisittain vaikka kutsua ”hämmentämiseksi”.

Jos vuosi sitten oli Intelin esiintyjä lupaamassa 128-ytimisiä prosessoreita lähiaikoina – eipä ole vielä kaupoissa näkynyt – on Microsoftin edustajalla hieman mielenkiintoisempi lähestymistapa.  Fuzzing-systeemi toimii jo, ja pystyy tarkastamaan vaikka koko Windows 7:n moduulikirjaston, mutta ikävä kyllä ajoaika vielä toistaiseksi ylittää maailmankaikkeuden elinennusteen kaksikymmenkertaisesti. Jonkin verran koodia on siis vielä optimoitavana ennenkuin voidaan puhua tehokkaasta testausoraakkelista.

Lisäksi jos heittäydytään humoristeiksi, voidaan todeta ettei tämä uusi testauskone sitäpaitsi edes ole oraakkeli. Järjestelmä on nimittäin vähäpätöisemmin nimetty nimellä Sage, eli tietäjä. Oletettavasti oraakkelilta vaadittava ennaltanäkemisen ominaisuus toimitetaan sitten joskus Service Packissa, ja jumalaisia toimintoja varten joutuu ostamaan kalliimman Professional-version.

Täältä tähän,

Jussi Kasurinen

Artikkeliin ei ole kommentteja »

Kesäterveiset lomailijoille

26.6.2010, kirjoittanut Jussi Kasurinen

Hei taas!

Näin juhannuspäivän aamuna ohjelmointiaiheet on varmaankin viimeinen asia mikä valolle ja koville äänille altistuneessa tilassa tulee mieleen. Siitäkin huolimatta ajattelin koota jonkinlaisen kirjoitelman ainakin niiden iloksi, jotka vielä maanantaina pääsevät takaisin työn ääreen lepäämään.

Python 2 menee edelleen kovaa vauhtia eteenpäin; nyt ollaan jo julkaisuversion 2.7 kynnyksellä. Tähän versioon se kuitenkin tulee päättymään, ainakin mikäli Python-säätiön omaa tiedotetta on uskominen. Tämä tarkoittaa siis sitä, että tämän jälkeen kaikki uusi kehitys tehdään Python 3-perheeseen, eikä uusia ominaisuuksia enää välttämättä lisätä 2.X-versioihin, niille tarjottujen päivitysten ainoastaan vasaroidessa pois koodista löytyneitä bugeja.

Lisäksi Py2exe-projekti näyttäisi myös päätyneen terminaalivaiheeseen, jossa uutta kehitystä edustaa ainoastaan versio-buildit Python 2:en edetessä uudempiin versioihin. Sääli sinänsä, kyseinen moduuli oli kohtuullisen luotettava ja näppärä väline. Korvaavaa työkalua, ja erityisesti Python 3:ssa toimivaa korviketta kannattaakin lähteä etsimään vaikkapa cx_Freezestä, joka löytyy täältä:

http://cx-freeze.sourceforge.net/

Eipä muuta, ehkä tästä voidaankin jo siirtyä kesäisempiin aiheisiin ja lomanviettoon. Lisäksi alkuvuodesta lupaamani kiintiö ylittyi juuri ja juuri, tarkoittaen sitä että ainakin ”kerran kuussa” tuli täyteen. Ainakin keskiarvona, jos ei muuta. Syksyn saapuessa voidaankin sitten katsoa, mitä aiheita ja asioita silloin käsitellään. Mutta sitä ennen on vielä kaksi lomakuukautta kesää edessä.

Täältä tähän,

Jussi Kasurinen

Artikkeliin ei ole kommentteja »

Dokumentoinnista

15.5.2010, kirjoittanut Jussi Kasurinen

Hei taas,

Jotain mitä olen jo pidemmän aikaa eräässä uudessa projektissani ihmetellyt on tapa, miten ohjelmointiprojekteissa kaikki muu kansipahvien suunnittelua ja wrap-up-saunaillan organisointia myöten tuntuu välillä menevän kunnollisen dokumentin kirjoittamisen edelle. Tietysti ymmärrän sen, että keskeneräisen kehitysversion dokumentit elävät, ja jos alusta muuttuu niin sitten kaikkia dokumenttejä pitäisi päivittää, muodostaen ylimääräisen tehtävän joka olisi voitu välttää kirjoittamalla dokumentaatio ensimmäisestä ”release candidate”-versiosta.

Monesti kuitenkin käy niin, että lataan jonkin moduulin tai koitan selvitellä mistä metodi oikein on keksinyt vaatia kaiken mahdollisen tupleina, tai vaihtoehtoisesti haluaisin käyttää jotain umpimielistä koodia tekemään monimutkaisia asioita. ”Älä keksi pyörää uudestaan” on mielestäni ihan hyvä periaate; ikävä kyllä alkuperäisen keksijä jättää monesti kertomatta mihin tätä uutta hienoa pyörää voisi käyttää.  Helpot tapaukset on niitä, joissa API on kuvattu skriptillä pureskeltuna generoituna tekstinä, joka ei aukea oikeastaan sen enempää kuin itse lähdekoodi. Kehittäjille ehkä hyödyllinen, käyttäjille vihamielinen. Pahimmillaan olen nähnyt tilanteita, missä kaksi, jopa kolme, dokumenttia ovat keskenään ristiriitaisia ja neuvovat tekemään asiat eri tavoin, tai painottavat täysin eri asioita. Lopulta usein tuleekin tunne, että on kokoamassa pelkkiin faktoihin perustuvaa kuvausta urheilukilpailusta haastattelemalla ulos heitettyjä humaltuneita katsojia, tai olevansa loukussa ”yksi valehtelee aina, yksi joskus ja loput puhuu totta”-tyyppisessä logiikkatestissä.

Mutta joo. Jo ohjelmistotekniikan peruskurssilla opetetaan, että ainoa asia joka on huonompi kuin puutteellinen dokumentointi on virheellinen dokumentointi, ja että kaikista viisain eläin on majava joka sukeltaa sateelta suojaan. Dokumentaatio ja käyttöohjeet voivat monesti vaikuttaa turhalta lisätyöltä, mutta ne eivät olekkaan tarkoitettu kehittäjille itselleen, vaan niille jotka käyttävät heidän tekemiään työkaluja. Ja vaikka ajatus vahingon kiertämään laittamisesta voikin houkuttaa, olisi siinä tapauksessa harkitsemisen arvoista ennemmin ryhtyä vaikka autokauppiaaksi.

Täältä tähän,

Jussi Kasurinen

Artikkeliin ei ole kommentteja »

Peliohjelmointia ja modaamista

1.4.2010, kirjoittanut Jussi Kasurinen

Hei taas,

Kuten vuoden alussa lupasin, keskityn päivittämään tätä blogia useammin, joten heti kärkeen jätin maaliskuun kokonaan väliin. No joka tapauksessa, enimmät matkat on nyt tehty ja Saharat ja Inarit koettu,  joten  on taas aika tarkastella mitä maailmalta on käteen jäänyt.

Joskus aikaisemmin mainitsin, että Python-ohjelmointikielellä on taipumus olla projekteissa kieli, jolla kootaan paloja yhteen ja laitetaan kokonaisuuksia toimimaan.  Käytännössä tämä myös tarkoittaa sitä, että Pythonia voidaan sopivissa paikoissa käyttää kertomaan mitä kokonaisuus itseasiassa tekee. Tähän liittyen kiinnitin huomiota erään viikolla lukemani lehden artikkeliin Civilization 4-pelin modaamismahdollisuuksista, jossa myös puhuttiin siitä kuinka Pythonin avulla on mahdollista muuttaa koko pelin toimintalogiikkaa ja muuta mukavaa. Itseasiassa, osaavan modaajatiimin käsissä Civ4 onkin muuttunut varsin erinomaiseksi fantasiapeliksi Fall From Heaven 2-modipaketin ansiosta. Vastaavasti Colonization-pelin uudelleenlämmittelykin piristyi mukavasti kun joukko pelisarjan faneja korjasi enimmät suunnittelu- ja tasapainoongelmat  Age of Discovery-laajennuksella, joka vastaa käytännössä kaupallista lisälevyä jota peli ei koskaan saanut.

Tietysti Python, tai edes Civ4 joka varsin liberaalisti tukee muuntelua,  ei ole ainoa asia mikä tämän on mahdollistanut. Esimerkiksi Medieval 2 Total War on saanut täyskonversiopaketin joka muuttaa pelin keskimaa-aiheiseksi, samoin esimerkiksi Hears of Iron 2 muuttuu ensimmäistä maailmansotaa käsitteleväksi peliksi yhden lähes lisälevy-tasoisen modauksen ansiosta. Mitä siis yritän tällä sanoa?

Usein kuulen puhuttavan siitä, miten opiskelijat haluavat oppia ohjelmoimaan juuri siksi, että pääsevät mielekkääseen ohjelmointityöhön – monesti tekemään pelejä – järjestelmäsoftan tekeminen kun ei kaikkia tunnu kiinnostavan. En pysty nyt lyömään pöytään faktoja, mutta eräs varmasti asioihin sisäänpääsyä helpottava tekijä on aloittaa vaikkapa osallistumalla modaus-projekteihin ja sitä kautta päästä tekemään ohjelmoimalla jotain mielekästä. Semminkin kun pelien suunnittelua ja tekemistä ei suoranaisesti tunnuta missään opettavan, vaikka hype aina muutaman vuoden välein nostaa päätään. Ei siitä sitten töitä hakiessa luulisi ainakaan haittaa olevan, ja itseasiassa jotkin pelifirmat ovat ottaneet jo tavaksi palkata paremmin menestyvien modien tekijätiimejä.

Tietysti jotkut voivat saada kallonsisäistä kutiavaa ihottumaa siitä, että ohjelmointipanos menee kaupallisen softwan parantelemiseen ilmaiseksi eikä esimerkiksi open source-projekteihin, mutta ei sitä aina jaksa olla vakavamielinen; ohjelmointitaitoja voi käyttää joskus myös ihan vaan viihdeprojektien tekemiseen.

Täältä tähän,

Jussi Kasurinen

Artikkeliin ei ole kommentteja »

Asiantunteva ja erehtymätön tutkimus jalokivistä ja käärmeistä

26.2.2010, kirjoittanut Jussi Kasurinen

No niin,

Tälläkertaa ajattelin käsitellä ihan huvikseni tekemää kokeilua, missä Google Trends-palvelun avulla selvittelin hieman sitä, missä kaikkialla Python-jutuista ollaan kiinnostuneita. Vaikka Trends-palvelu ei olekkaan kovin tieteellinen, niin silti se välillä paljastaa varsin yllättäviä tuloksia, kuten esimerkiksi erään hyvin suositun hanurinvenytyskuvan yllättävän supersuosion Suomessa, erityisesti Tampereella.

No joka tapauksessa, kokeilin hakuehtona ”Python programming” ja yllätyin jonkin verran; kolmen kärjen muodosti niinkin suuret huipputekniikkamaat  kuten Intia, Etelä-Afrikka ja Filippiinit. Oli Suomi sentään listalla, näin olympiahengen mukaisesti seitsemäntenä. Pelkällä hakusanalla Python kärkeen meni Tsekki, Norja ja Venäjä, mutta tietenkin pitää pitää mielessä, että tässä tapauksessa myös käärmeisiin liittyvät artikkelit otettiin huomioon. Lopuksi kokeilin vielä huvikseni vertailla kahta keskenään usein päitä yhteen lyövää ohjelmointikieltä, Rubya ja Pythonia keskenään.

Trendeissä kilpailu oli tasaväkistä, Rubyn ollessa hieman niskan päällä 2006 alkaen.  Tietenkin pitää muistaa, että tässä myös voidaan pitkälti vertailla käärmeiden ja jalokivien suosiota keskenään. Parhaimmillaankin tuloksia voi käyttää myöhästyneenä ystävänpäivälahjan hankintaohjeena puolisolleen jos on kahden vaiheilla näiden välillä. Tai noh, menee ainakin ensi vuonna valinta sitten oikein jos ei muuta. Samoin anopin tapauksessa, joiden suosio on muuten Trendsin mukaan ollut laskussa jo viisi vuotta.

Loppuun ajattelin vielä hieman selitellä alussa heittämääni huomautusta Suomen sijoituksesta olympialaisissa. Tiedän, että viime yönä Suomen naiset voitti pronssia jääkiekossa, onnea siitä heille. Haluan kuitenkin korostaa hyvää urheiluhenkeä ja muistuttaa näin lopuksi siitä, että tärkeintä ei ole se kuka voittaa, vaan se kuka häviää.

Täältä tähän,

Jussi Kasurinen.

Artikkeliin ei ole kommentteja »

Editoreista ja työkaluista

8.2.2010, kirjoittanut Jussi Kasurinen

Heipä vaan,

Näin helmikuun alkuun ajattelin ottaa puheeksi jälleen aiheen, josta minulle tulee eniten kyselyitä Pythonista; ”Mitä työkaluja minä oikein tarvitsisin kun haluan nyt alkaa koodaamaan/suunnittelen kurssia?”

Rehellisesti sanoen, jos aiot harjoitella Windows-ympäristossä, niin oikeastaan et paljoakaan muuta kuin Pythonin peruspaketin mukana tulevan IDLE-editorin ja tulkin. Oikeasti.  Tiedän toki, että Linux-työasemalla IDLE tapaa välillä sekoilla, joten siellä melkein mikä tahansa editori joka tukee Pythonin tapaa käyttää sisennyksiä on hyvä. Kuulemma Vim ja Emacs on erittäinkin päteviä tähän hommaan.

Jos Windows-puolella kuitenkin halutaan käyttää jotain kehittyneempää editoria, niin Notepad++ ja Netbeans ainakin osaa Pythonia ”suoraan paketista”, ja Eclipsen saa kanssa toimimaan hieman virittelemällä. Erityisesti, jos tulee tarve tai halu myöhemmin tehdä IronPythonilla palikoita .NET-projektiin tai koodata Jythonia. (Ja kyllä, .NET ei ole ohjelmointikieli vaan ohjelmistokehys jossa voi yhdistellä useita eri ohjelmointikieliä. Syytän kirjaan asti päässeestä virheestä kiireessä tekemääni oikolukua, jossa tein vielä jotain viime hetken muutoksia.)

Eli jos aikomuksena on tehdä ihan perusjuttuja, niin omasta mielestäni ei edelleenkään ole syytä yliampua työkalujen kanssa. Jos projekti taas on astetta isompi, löytyy Python-tukea jo aika mukavasti useammasta ammattilaistason työkalusta.

Täältä tähän,

Jussi Kasurinen

Artikkeliin ei ole kommentteja »

Uusi vuosi, uusia kuvia

22.1.2010, kirjoittanut Jussi Kasurinen

Jees,

Lomilta palanneena ja virkistyneenä  ajattelin taas tarkastella uusimpia Python-puolen kuulumisia, kun ulkonakin on niin kylmä että ei sieläkään viitsi paljoa pakollisia käyntejä enempää oleilla. Vuodenvaihde näyttäisi puhaltaneen uutta eloa Python 3:n moduulikirjastoon, sillä Python Imaging Library näyttäisi vihdoinkin löytävän tiensä myös Python 3-perheeseen. Uusin versio 1.1.7  ei ehkä ole vielä julkaisuasteella, mutta alpha-versioita näyttäisi jo tihkuneen muutamia, joten hieman toiveikas voi jo alkaa olemaan. Ei kuitenkaan liian, ettei tule paha mieli jos kaikki menee pieleen, lähderepon uusimmat tapahtumat  kun ovat systemaattisesti vähintään kuukauden vanhoja. Itse en kuitenkaan sattuneesta syystä ala osoittelemaan ketään sormella, jos nyt vaikka on kuukauden verran jäänyt asiat vähän heikolle hoidolle.

Mutta siis, toivokaamme että tänä vuonna asiat luistavat hieman paremmin, ja tuo moduulikirjasto alkaisi pikkuhiljaa pääsemään jaloilleen myös kolmosen puolella. Omalta kohdaltani taas lupaan, että yritän saada pidettyä hieman puoluekuria ja julkaista tekstiä hieman tiuhempaa tahtia mitä tähän asti. Tämän lupauksen johdosta voitte sitten naureskella heinäkuussa, kun olen muistanut viisi kertaa koko kevään aikana päivittää juttuni tänne blogiin asti.

Täältä tähän,

Jussi Kasurinen

Artikkeliin ei ole kommentteja »

Python-tapaaminen Suomeen

16.11.2009, kirjoittanut Jussi Kasurinen

Hei taas,

Tässä pieni huomio, voisi jopa sanoa mainos, liittyen Pythoniin liittyviin teemakonferensseihin, PyConeihin.

Jonkin aikaa sitten huomasin, että isossa maailmassa jo useampaan kertaan järjestetyt PyCon-konferenssit ovat rantautumassa myös Suomeen.  Ainakin mikäli verkkosivua

http://fi.pycon.org/

on uskominen, ja miksi emme uskoisi.

Teemalla ”Python-koodareilta Python-koodareille” järjestettävä tapahtuma ei ehkä ole ihan Helsinki Motor Shown kokoinen perhetapahtuma, mutta varmasti mielenkiintoinen kokonaisuus kaikille kielestä kiinnostuneille ja sitä käyttäville.

Täältä tähän,

Jussi Kasurinen

Artikkeliin ei ole kommentteja »

Python .NET-ympäristössä

13.10.2009, kirjoittanut Jussi Kasurinen

Tälläkertaa ajattelin kirjoittaa jonkin verran Pythonin käyttämisestä osana toista ohjelmointiympäristöä, ja aiheeksi päätin ottaa Python-kielen .NET-ympäristöön tehdyn IronPython-käännöksen. IronPython on saatavilla .NET-ympäristöön laajennuksena ja näyttäisi löytyvän Mono-ympäristöstä oletuksena.

Toki muuttaminen .NET-ympäristöön on asettanut jotain rajoitteitakin. Ensinnäkin, näin alkuvaiheessa IronPython takaa yhteensopivuuden ainoastaan Pythonin version 2.6 kanssa, mutta kehitystiimi on jo muutama vuosi sitten luvannut tuottavansa Python3-yhteensopivan version.  Lisäksi kannattanee huomata, että IronPython on nimenomaisesti kääntäjä eikä tulkki, joten IronPython tuottaa itsenäisiä ohjelmia samalla tarjoten keskeisen ominaisuuden joka normaalista CPython-tulkista puuttuu… ja py2exe:n Python3-implementaation puuttuessa jatkaa puuttumistaan vielä tovin. Toivoa siis sopii, että kehitystiimin lupaus muuttuu todellisuudeksi kohtuullisen ajan sisällä.

IronPythonin tärkein ominaisuus on kuitenkin siinä, että sen avulla on kohtuullisen helppoa luoda eri kielten ominaisuuksia yhdisteleviä toimintoja. Esimerkiksi frameworkin omien GUI-työkalujen käyttäminen on varmasti helpompaa kuin Tkinter-määrittelyn kirjoittaminen.  Tietysti asiaa voi myös ajatella toisinpäin; Python on näppärä pyörittelemään dataa haluttuun muotoon, joten sen avulla voidaan tehdä helposti tehokkaita kirjastofunktioita muiden ohjelmien tarpeisiin.

Lisätietoa ja lyhyt tutoriaali IronPythonille löytyy esimerkiksi osoitteesta

http://www.voidspace.org.uk/ironpython/introduction-to-ironpython.shtml

Täältä tähän,

Jussi Kasurinen

Artikkeliin ei ole kommentteja »