Django & dumbbells: toimarin paras kesäloma

Vietin lomani jälleen parhaimmalla mahdollisimmalla tavalla: päivät perheen kanssa tai salilla, illat koneen äärellä uusia asioita opetellen. Tällä kertaa kaivauduin vähän syvemmälle pythonin ja djangon maailmaan. Python on erityisesti tiedemaailmassa ja keinoälysovelluksissa suosittu ohjelmointikieli, ja django on taas pythonin päälle rakennettu framework, jolla voi rakennella kaikenlaisia mielenkiintoisia verkkopalveluita. Iltapuhteina syntyi rss-syötteiden lukemiseen tarkoitettu palvelu, blogforest.io.

Blogforest

Elämässäni on ollut pitkään tyhjiö Googlen suljettua Google Reader-palvelunsa. Erilaisia korvaavia palveluita on, mutta niissä kaikissa on joko liikaa hilavitkuttimia tai mainoksia, jotta olisin varsinaisesti ihastunut niihin. Kaipasin jotain simppeliä ja yksinkertaista. Haluan tuoreimmat linkit valitsemistani blogien RSS-syötteistä ja sillä hyvä. Ja jos maailmalta ei löydy mieleistä, täytyy tehdä oma.

Kaupallistettavaksi palvelusta tuskin on, koska tein siitä työkalun vain itseäni varten. Palveluun voi kuitenkin rekisteröityä ja sitä voi vapaasti käyttää. Rekisteröi tunnus, lisää blogeja, ja palvelu käy kymmenen minuutin välein hakemassa uudet artikkelilinkit rss-syötteistä. Toivottavasti siitä on hyötyä muillekin kuin minulle!

Wouti 0.1

Henkilökohtainen koodausspurttini pääsi ensimmäiseen etappiinsa. Sain Woudin ensimmäisen version julkaisukuntoon, ja se löytyy osoitteesta wouti.fi. Phew.

Wouti
Tiesin alusta saakka, että en ole tekemässä kirjanpitosoftaa. Koko tuotteen ydinajatus on, että on tärkeämpää seurata kassaa mieluummin tonnin tarkkuudella kuin eurolleen – yksittäisten hilujen seuraaminen on lillukanvarsiin takertumista, kun tavoitteena on huolehtia kassan riittävyydestä. Tämä tarkoitti toisaalta sekä senttien jättämistä laskelmista, että tarkastelun rajoittamista vain viikkotasolle päivätason sijaan. Koska olen pyöritellyt saman tuotteen raakaversiota Google Docsissa jo monta vuotta, itselleni oli aika selkeää miten asioiden tulisi toimia.

Tuotteen lanseerausta hidasti hieman se, että kirjoitin koko softan kerran uusiksi. Tämä tapahtui siksi, että ensimmäisellä kerralla en ihan vielä tajunnut miten tietorakenteet olisi kannattanut tehdä. Toisella kerralla syvennyin myös enemmän TDD-ohjelmoinnin (Test Driven Development) käytäntöihin, mikä tarkoitti tietenkin lisätyötä. Testejä kertyi yli 400 kpl, ja koodia on vain 1/3 testien määrään verrattuna. Versionhallinnan käyttäminen (GIT) auttoi kun pari kertaa tuli kunnon facepalm-hetki.

En halunnut käyttää aikaa muuhun kuin itse ydinasiaan. Ylläpito on Herokussa, jolloin on paljon vähemmän huolia ylläpidon suhteen. Itse wouti.fi -sivusto on Google App Enginessä (sama homma, ei ylläpitohuolia), maksuliikenteessä käytän Stripea (joka on tajunnanräjäyttävän helppokäyttöinen ja turvallinen kokonaisuus – luottokorttitiedot eivät edes käväise oman palvelimen kautta) ja support-ticketit menevät ZenDeskin kautta.

Kenelle Wouti on tehty?

Wouti sopii parhaiten kasvuhaluisille yrityksille, joilla on jo palkkalistoillaan joitain työntekijöitä ja joiden kuukausittaiset tulot ja menot vaihtelevat sen verran että pelkkä takapuolituntuma ei enää riitä. Woudin avulla saa vähän tavallista enemmän mielenrauhaa, kun näkee visuaalisesti kassan tilanteen.

Mitä seuraavaksi?

Nyt Wouti on siinä kunnossa, että sitä voi käyttää ydinongelman ratkaisemiseen, eli kassavirran hallintaan. Listalla on paljon kehitysideoita, ja lisää voi ehdotella. Seuraavana valmistuu useamman käyttäjän tilit ja alvien automaattilaskelma.

Toivottavasti mahdollisimman moni suomalainen yritys ottaa Woudin käyttöön! :)

Valitsin ohjelmointikielen logon perusteella

Kun kerroin opettelevani koodaamaan, sain vähän vaihtelevaa palautetta. Osa ihmetteli, enimmäkseen hämmästeltiin. Pari ruojaa jopa antoi ymmärtää, että paree olisi jos keskittyisin vain toimaroimaan. Hah! Samalla logiikalla voisi sanoa, että toimarin ei kannata opetella kirjanpitoa tai mitään muutakaan. En uskonut.

En osaa ohjelmoida millään ohjelmointikielellä edes keskikertaisesti. Se on myös vahvuuteni. Tylysti todettuna voisi sanoa, että olen sen verran uuvatti, etten ole oppinut vielä aivan kauhean huonoja tapoja joista pitäisi kovalla vaivalla hankkiutua eroon. Mielessäni oli kyllä selkeä kuva erilaisten ohjelmointikielien parhaista ja huonoista puolista (on todella opettavaista kuunnella koodarien henkistä pissauskilpailua parin oluen jälkeen).

Ruby
Pitkällisen – noin puoli päivää kestäneen – harkinnan jälkeen päädyin valitsemaan ohjelmointikieleksi logon perusteella Rubyn ja frameworkiksi Ruby on Railsin. Toki katselin muitakin vaihtoehtoja: Java haisi liikaa isojen monoliittyritysten maailmalta, Pythonin asentamiseen onnistuin tuhraamaan liikaa aikaa (taas), PHP:tä en haluaisi kosketella enää ikinä ja Node.js on tyypillistä JavaScript-oksennusta.

Iso syy Rubyn valitsemiseen oli myös Linda Liukas. Ohjelmointikielen valinneet ihmiset kertovat paljon itse ohjelmointikielestä. Kaikkien muiden ohjelmointikielten ekosysteemit ovat kauhean äijämäisiä. Ruby ja Ruby on Rails ovat ainakin marginaalisesti vähemmän sitä itseään.

Tykkään myös Rubyn filosofiasta. Ruby on ohjelmointikielenä suunniteltu vähäisimmän hämmennyksen periaatteella (käänsin itse, anteeksi), eli ohjelmointikieli on suunniteltu mahdollisimman ymmärrettäväksi ja ennen kaikkea, kivaksi. Yukihiro Matsumoto, Rubyn kehittäjä kertoo syntyprosessista:

Often people, especially computer engineers, focus on the machines. They think, ”By doing this, the machine will run fast. By doing this, the machine will run more effectively. By doing this, the machine will something something something.” They are focusing on machines. But in fact we need to focus on humans, on how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves.

Ohjelmointikielen valinnan jälkeen oli aika käydä hommiin. Sen sijaan että olisin vain juossut nettiin etsimään uusimpia tutorialeja, hyppäsin Pragmatic Studion RoR-kurssille. Se kannatti. Videopohjainen kurssi kesti pari viikkoa, ja sinä aikana tuli opittua perusasiat. Kurssin lisäksi vetäisin pari Ruby-kirjaa ja sitten siirryinkin mutustelemaan testipohjaisen ohjelmointimetodiikan saloja. Stack overflow on myös tullut tutuksi.

Ja miltä nyt tuntuu? Hyvältä. Kirjoitin Woudin ihan itse, ja sitten kirjoitin sen uudestaan kun tajusin millaista rapaa olin tehnyt. Nyt sitten hion viimeisintä versiota beta-julkaisukuntoon.

Uusien asioiden opettelu kannattaa aina. Sinäkin voit valita ohjelmoinnin opettelun – tai minkä hyvänsä muunkin uuden asian opettelun – sohvalla löhöämisen sijaan. Mikset aloittaisi jo tänään?

Miksi sanoin Arnold Schwarzeneggerille ei?

Huomenna on Nordic Business Forum 2014. Kyseessä on iso businesstapahtuma, jossa tuhansia vaikuttajia kokoontuu Helsinkiin kuuntelemaan maailmanluokan nimiä. Menestymisestä ja yrittämisestä ovat puhumassa muun muassa Arnold Schwarzenegger, Jim Collins, Sir Alex Ferguson ja Matti Alahuhta.

Olen todella iso Arska-fani. 80-luvun lapsena olen katsonut commandon, terminaattorit ja Conanit, ja oikeastaan kaiken mitä Schwarzenegger on tehnyt filmipuolella. Ostin liput ensimmäisten joukossa viime vuonna, kun kuulin että hän on puhujakaartissa. Pulitin kahden päivän VIP-lipuista yli tonnin.

Eilen kuitenkin päätin, että jätän menemättä tapahtumaan.

Aikaisemmissa kirjoituksissani kerroin, että päätin opetella koodaamaan. Se oli järjellä tehty päätös, jonka uskon hyödyttävän minua myös tulevaisuudessa. Opettelu vaatii kuitenkin aikaa ja energiaa, ja sitä on niukasti saatavilla kun pyöritettävänä on äärettömän kova digimediatoimisto ja kotona on kaksi pientä lasta. Kuopuksen puskiessa hampaitaan untakaan ei ole ylenmäärin tarjolla. Vaikka NBF olisi tarjonnut minkälaisia elämyksiä, niiden arvo verrattuna omaan periaatepäätökseen ei tuntunut enää niin olennaiselta.

Valitsin siis oppimisen Nordic Business Forumin ja lapsuuden idolin sijaan.

Periaatteilla ja päätöksillä ei ole mitään arvoa, jos niistä ei pidä kiinni myös silloin kun se tekee kipeää.

Kaikki kirjoitukset löytyvät blogiarkistosta.