Devaajan maccikone tikkiin

Olen pitkien Linux ja Windows kausien jälkeen päätynyt tekemään työhommat Macbook Pro:lla, joka on ollut positiivinen kokemus. Siinä kivasti yhdistyy helppo käytettävyys, ja toisaalta Linux-mainen johdonmukaisuus. Jos joku ei toimi, korjaus on sama kaikilla, ja komentorivi on lähellä ja hyvä.

Pari kertaa on nyt työkone tullut asenneltua. Teen töissä tyypillisesti arkkitehtuurisuunnittelua, prototypointia, ja sekä Java backend koodia että Angular/React/Node JavaScript hommeleita, muutamalla eri kannalla riippuen projektista. Ensimmäisellä kertaa kun Mac oli uusi kokemus, kaikki meni käsityönä ja puolet asioista ihan päin prinkkalaa. Mutta kirjoitin kaiken muistiin, ja toisella kertaa päätinkin sitten automatisoida hommat.

Mac devaajan ihania kavereita ovat Homebrew, NVM, ja JENV. Näistä jälkimmäisistä olenkin kirjoitellut pari artikkelia aiemmin, mutta mainittakoon että laitoin dev-koneeni homebrew scriptit yleiseen jakoon Gittiin. Pohja-asennuksina on meidän IT:ltä tuleva OSX Macbook Pro, Yosemite tai Il Capitano, jossa on perus antivirukset ja officet ja emailit jo viritettynä kuntoon. Hyvä idea asentaa myös perus osx patchit ja java fixit. Sen päälle asennan Homebrew:n, ja sitten ajan tämän scriptin:

https://github.com/crystoll/osxinstall

Ja kuten scriptiä lukemalla käy ilmi, aika paljon kamaa on koneessa sen jälkeen. Yksi kollega vinkkasi vieläkin elegantimman scriptin, niinikään Githubissa, jossa on aikalailla samaa kamaa, mutta toteutus Ansiblella, jolla voi paikata vielä aukkoja joita esim. Homebrewn jäljiltä jää:

https://github.com/hoxu/osx-dev-playbook

Lopputulos kuitenkin: Pistät scriptin jylläämään, otat ison kupin kahvia, tabletista tai kännykästä yoububeen kunnon kissavideokanavan, ja kun kahvi on juotu tai kylmää, työkone on kunnossa. Kivasti säästää aikaa ja energiaa ja takaa että lähtökohdat ovat aina samat. Jos on muutama sata devaajaa talossa, parin htp:n säästö per napa muutaman vuoden välein on ihan kiva. Ja itse tykkään että asiat menee aina samalla tapaa, eikä tarvi uudelleen muistaa mitä kaikkea on syytä tehdä. Toki vähän huoltoa kaivataan, ja tuota ansible scriptiäkin voisi vähän pilkkoa rooleihin, modulaarisuus antaisi mahdollisuuden viritellä vielä paremmin. Joku voisi kaivata jotain kivaa rasti ruutuun käyttöliittymääkin, mutta minä en 😉

Automate everything! *ryystää kahvia^*

 

 

Mainokset

NodeJS 4.0 on ulkona

Vain nopea päivitys itseä kiinnostavasta asiasta tähän väliin: NodeJS 4.0 julkaistiin tänään. Jos joku ihmettelee rajua hyppyä versionumerosta 0.12.7 tähän uuteen – kyseessä on historiallinen mergetys jossa nodejs ja iojs yhtyvät, siksi raju pomppu.

Suositusta myös sen käytöstä: Ellet jo ennestään käytä nvm versiomanageria node versioiden ajoon, hanki se! OS X:ssä esim. brew install nvm tuottaa tuloksen – jahka säädät vielä vähän lisää ohjeiden mukaan. nvm:llä voit asennella iloisesti vanhaa ja uutta rinta rinnan ja vaihtaa nopeasti kokeillaksesi. Olisin yllättynyt jos 4.0 sujahtaisi ongelmitta vanhan tilalle joka paikkaan.

Linkkivinkkejä:

https://nodejs.org/en/

https://medium.com/node-js-javascript/4-0-is-the-new-1-0-386597a3436d

http://apmblog.dynatrace.com/2015/09/05/all-you-need-to-know-about-node-js-4-0/

https://github.com/creationix/nvm

ES6: It’s a better monster!

Kirjailin taannoin Aurelia-nimisestä Javascript sovelluskehyksestä joka teki vaikutuksen. Yksi suurimpia osia miksi se kiinnosti oli helppo kyvykkyys alkaa heti käyttämään JavaScriptin/ECMAScriptin versiota 6. Se taas kiinnosti kahdesta syystä: Ensimmäinen on halu pitää nokka aina menosuuntaan: muuten putoaa helposti rattailta. Toinen on, että ES6 tarjoaa lukuisia sovelluskehittäjälle oikeasti laatua parantavia tekijöitä jahka se vain saadaan laajemmin käyttöön. Ja näin inspiroiduin kirjoittamaan vähän sen nykytilasta.

Nykyisellään selaimissa käytetään yleisimmin ECMAScript versiota 5 – tai 5.1 – ja versio 6 on ollut työnimellä Harmony työstettävänä jo jonkin aikaa. ES6 saatiin spesifikaationa viimein valmiiksi tämän vuoden toukokuussa.

Selaintuki on aina määräävä tekijä: Tätä artikkelia kirjoittaessa parhaiten ES6:sta tukee Firefox versio 40 – hurjalla 63% ominaisuustuella. Pienenä yllätyksenä kakkossijan jakavat Firefoxin versio 39 – ja Microsoftin tuleva Edge/Spartan selain joka tulee syrjäyttämään jo tammikuusta alkaen IE8-11 versiot joiden tuki lakkautetaan. Chrome ei ole ihan vielä näissä ajan tasalla – ominaisuuksia on tuettu n. 45% hujakoilla. Safarilta ja IE10/11 versioilta saati sitten vanhemmilta ei kannata näistä edes kysellä – tulee turhaan paha mieli. Ja mobiililaitteiden selaintuki on toki ihan oma lukunsa.

Onneksi on myös Babel/6to5 transpiler jota myös Aurelia käyttää – se osaa tarvittaessa kääntää ES6 syntaksia ES5 yhteensopivaksi jotta piirteet toimivat myös vanhoissa selaimissa – jep, aina pahamaiseiseen IE9:ään asti. Tämän avulla uusia piirteitä voi alkaa jo käyttelemään projekteissa joissa on tarpeen tukea laajaa selainkirjoa.

Mitä sieltä sitten löytyy? Miksi kannattaisi alkaa käyttämään ES6:sta? No siitä taidan tehdä ihan toisen artikkelin, sen verran mehukas aihe. Mutta tuossa itselle muistilistaa:

  • Vakiot (tai siis immutable muuttujat…)
  • Scope käyttö
  • Nuolifunktio (lambda syntaksi)
  • Parannukset this-avainsanaan
  • Tuki moduuleille, import/export
  • Parannukset luokkiin/objekteihin
  • Promise/Rinnakkaisuusmekanismit
  • Iteraattorit
  • Kokoelmaparannukset

Pysykäähän kuulolla…

Linkkejä:

http://www.ecma-international.org/ecma-262/6.0/ECMA-262.pdf

https://kangax.github.io/compat-table/es6/

Uutta Javascript-rintamalla: Aurelia

Olin aikeissa perehtyä syvemmin tulevaan Angular 2- versioon, mutta eksyinkin reitiltä. Tammikuussa nimittäin julkaistiin uusi Javascript framework nimeltä Aurelia. Sen taustavoimista löytyy entinen Angular2 tiimiläinen, ja framework teki aikamoisen vaikutuksen.

Kun sanon uusi, niin tarkasti ottaen ei tämä ihan tyhjästä putkahtanut – se on aiemmin tunnettu nimellä Durandal, ja perustuu moneen jo ennestään liikkeellä olleeseen palikkaan.

Joka tapauksessa, frameworkin olennaiset piirteet:

  • EcmaScript 6 ja 7 tuki – ja koodi pyörii nyky/vanhoissa selaimissa Babel 6to5 transpilerin johdosta. ES6 on jo itsessään melkomoisen maistuvaa tavaraa
  • jspm pakettimanageri
  • modulaarisuus: voit valita mitä moduuleja otat, ja yhdistellä niitä juohevasti muiden javascript frameworkkien kanssa
  • koodin puhtaus ja yksinkertaisuus, verrattuna esim. Angulariin – yhdistetään ES6 parhaat piirteet, ja konventiot ohi mekaanisten deklaraatioiden, hyvältä näyttäisi.
  • Binding on voimallinen alue, jossa Aurelia hakee tehokkaimman ratkaisun bindaukseen aina tilanteen ja kyvykkyyksien mukaan, ilman että sillä vaivataan koodaajan päätä liikaa

En ehkä vielä sanoisi että ready for primetime, mutta ehdottoman mielenkiintoinen tulokas, jota aion itse seurata tarkkaavaisena, ja on tuo vaivan arvoinen jo pelkästään ES6 itseopiskelun labrana.

Tuolta sitä saa: http://aurelia.io/

JavaOne 2013

No niin, lomat on lomittu, sorvin ääreen palattu, ja nyt on taas aikaa perehtyä teknologioihin ja menetelmiin sekä kirjoitella niistä mietelmiä. Tässä kohtaa kuitenkin mielessä siintää JavaOne 2013 seminaari – jokaisen Java ihmisen ykköstapahtuma työroolista riippumatta. Viikon mittainen pläjäys teknologiapäivityksiä, väline- ja tuoteuudistuksia, kokemuksia ja näkemyksiä projekteista, verkostoitumista, inspiroitumista, innostumista.

Tämän vuoden JavaOne on taas yksi niitä tärkeämpiä. Kesän aikana julkaistiin Java EE 7, ja Java SE 8 alkaa olla piirteiltään ja ominaisuuksiltaan hyvin tiedossa. Ensi vuoden alusta ilmestyy Java SE 8, ja Java EE 7 alkaa tosissaan hiipimään servereihin. Aion tänä vuonna seminaarissa keskittyä täysin core Java-alustan uusien piirteiden syynäykseen ja harjoitteluun joka kantilta, poislukien tietysti muutama syrjähyppy suuntaan Scala, Grails, Riak, MongoDB, Hadoop, sekä mitä uutta kiinnostavaa on esim. monitorointi- ja vianselvityksen tuotepuolella tarjolla. Harmillisesti ei taaskaan näytä siltä että Google olisi vahvasti esillä – lienee syynä edelleen käynnissä olevat oikeusjupakat.

Seminaariin valmistautuessa on hyvä suunnitella aikataulunsa Schedule Builderillä etukäteen – paikkoja on parhaissa esityksissä hyvin rajallinen määrä. Schedule Builder on jo avattu ja toimii – joskin aikataulun importtaus Google Calenderiin on taas tänä vuonna yhtä hankalaa kuin viimekin vuonna. Kannattaa myös säätää Twitter taajuudelle #javaone13 ja #javaone. Viime vuosina on Twitter kanavalla ollut ihan oma lukunsa säpinää ja tietoa ja mielipiteitä, sitä ei kannata missata.

Tällä kertaa siis vain lyhyt päivitys – syyskaudella on paljon uutta mielenkiintoista luvassa ja vanhaakin voi syventää, akut ladattuna siis kohden uusia seikkailuja 😉

Scala of the day – RSS reader

Pidin juuri Scala kurssia ja taas tuli hurmaannuttua kielen yksinkertaisesta eleganssista tietyissä operaatioissa. Ensi vuonna jää nähtäväksi miten Java 8 Lambda Expressions vastaa tähän.

Mutta tässä yhden harjoitustehtävän hedelmä; koodi joka lukee Tieturin blogista kaikki otsikot ja listaa ne ruudulle:

  for ( line
       <- Source.fromURL("http://feeds.feedburner.com/tieturi").getLines
        if line contains("<title>") )
          println (line)

Ja tässä tämänhetkinen tulostus:

 <title>Tieturi</title>
  <title>Tieturi</title>
  <title>Työympäristö muuttuu yhä vaativammaksi, pysyykö työntekijä tahdissa mukana?</title>
  <title>Arvoista hyveisiin – päämääristä tuloksiin!</title>
  <title>Lean IT – onko palveluprosessissa läskiä?</title>
  <title>Maailmaa muuttamassa yhdessä Jurgen Appelon kanssa</title>
  <title>Kokonaisarkkitehtuuri on kaikkien asia – ei vain tietohallinnon!</title>
  <title>Tieturilaisten etäpäivästä ekopäivä</title>
  <title>HTML5 ja JavaScript – kahvipöydässä kuhisee</title>
  <title>Windows Phone 8 tähtää varteenotettavaksi yrityspuhelimeksi</title>
  <title>Pienennä hiirijalanjälkeäsi</title>
  <title>Tervetuloa IPv6!</title>

I likes it! 😉

Otetaanpas tuolta kommenttiosiosta vielä tiiviimpi ja scalamaisempi tapa tehdä sama:

Source.fromURL(“http://feeds.feedburner.com/tieturi”).getLines.filter(_.contains(“<title>”)).mkString(“\n”)

Tampere Goes Agile!

Kävin pitämässä lightning talkin Tampere Goes Agile tapahtumassa aiheesta Agile Enabler: Grails, eli aiheena miten aikainen prototypointi auttaa saamaan aikaan sen mitä asiakas todella TARVITSEE eikä sitä mitä HALUAA. Want ja Need voivat joskus johtaa samaankin asiaan, mutta ne eivät itseisarvoisesti ole sama asia – jonka ketteryyttä tuntevat toki hyvin tietävätkin.

Java alustalla toimiessa ja projektia aloittaessa iskee usein valintahalvaus: vaihtoehtoja on lukemattomia tehdä sama asia. Spring? Puhdas Java EE ja JSF? GWT? Kun valinta on tehty, valitaan lisää. JDBC vai JPA? SQL vai NOSQL? Log4j vai util.logging? Maven vai Ant? Matka siitä kun tuoteidea on päätetty toteuttaa ja alusta valittu siihen kun on jotain mitä voi prototypoida ja demota on pitkä, pahimmillaan kuukausia.

Ongelma ei ole sama kun tietää mitä tekee, valinnat on tehty ja yhdistelmästä on kokemusta ja apuvälineet rakennettu. Mutta silti, miten pitkään menee ensimmäiseen toimivaan prototyyppiin? Josta siis saa arvokasta palautetta siitä mennäänkö oikeaan suuntaan, ja siitä mitä suuntia on edes tarjolla. Kuukausia? Viikkoja? Päiviä?

Grailsillä vastaus on minuuteja. Ja customoidessa yksityiskohtia ehkä tunteja. Koska prototyypit ovat pystyssä heti, muutokset reaaliaikaisia, oletuksia paljon, ja valinnat jo tehty, alusta on äärimmäisen tuottava. Tein seminaari-ilmoittautumisjärjestelmän parissa tunnissa. Ja verkkokoulutusjärjestelmän parissa päivässä. Nopeita iteraatioita, nopea palautesilmukka.

P.s. seminaarikahvi on TODELLA asiallista… :p

image