JFokus 4/4 – Se oli siinä

Scalasta

JFokuksen toinen eli viimeinen päivä on nyt ohi ja viimeiseen asti riitti tiivistä asiaa. Toisen päivän kuningasteemana oli Scala. Scala ninjailu veti salin niin täyteen että osa joutui seisoskelemaan pitkin käytäviä. Hauska esitys toi tunnissa esille olennaiset piirteet hyvin tiiviissä paketissa, ja tuotiin myös esille sudenkuoppia ja pulmia joita aloittelija kohtaa. Suomessa ensimmäinen Scala kurssi on myös pidetty, ja jatko-osia tahkotaan syksylle. Itse pidän Scalaa hyvin raikkaana tuulena kuutisentoista vuotta Javaa tahkonneena. Onko Java uusi Cobol ja Scala uusi Java? Ehkäpä ei, mutta kokeile molempia ja muodosta oma mielipiteesi.

Scalan kehittäjä Martin Odersky piti myös esityksen kokoelmista, ja siinä sivussa Scalan ilmaisuvoimasta, ja antoi myös roadmappia mitä uusissa versioissa on tuloillaan. Kun ytimien määrä ja rinnakkaisuuden tarve alati kasvaa, tarvitaan perinteistä säieohjelmointia tehokkaampia malleja, nimenomaan ohjelmoijan kannalta. Scalan kokoelmissa on paljon funktionaalisia ominaisuuksia joita hyödyntämällä sovelluksen käyttöä voi helposti skaalata ylöspäin.

Scrum, Kanban ja ketterä suunnittelu

Scalan ohella päivä täyttyi sitten HTML 5:lla ja ketteryydellä. Olen jo aiemmin nähnyt mihin HTML5 pystyy joten se on kovin kiinnostava uusi suuntaus, mutta toisaalta ei kovin monimutkainen. HTML harrastajille siinä on paljon uutta, mutta ohjelmoijille taas aika suorasukaista tekniikkaa. HTML harrastajilla tarkoitan tässä niitä lukuisia jotka tietävät että b tekee lihavoinnin ja h1 on otsikko mutta eivät tiedä mitä span tekee tai miten tehdään toimiva lomake. Olen kursseilla nähnyt oppilaiden tekevän jo uskomattomia asioita HTML 5:lla, kun heillä on hetkinen aikaa käytössään, ja Google on myös kärkäs näyttämään erilaisia kikkoja. Aika hyvin tekniikalta jonka virallinen ensispesifikaatio on vamis 2014 😉

Mielenkiinto ketteryyteen oli melkoinen, lisää näkökulmia tekijöiltä ja käytännön kokemuksia. Neal Ford on erinomainen puhuja ja Emergent Design luennossa oli paljon ajatuksia siitä miten käytännössä voit suunnitella fiksusti. Eli ei etupainotteisesti, mutta ei myöskään unohtaen suunnittelu kokonaan. Esityksessä oli mm. testivetoisesta kehityksestä, mutta myös jälkikäteen refaktoroinnista ja teknisen velan merkityksestä. Itseen teki vaikutuksen välineet ja mittarit joilla voi perustella teknisen velan purkamista projektin tilaajapuolelle. Neal Ford mainitsi SOA:n esimerkkinä tarpeetoman monimutkaisesta antipatternista 😉

Henrik Knibergillä oli erinomainen esitys Scrum ja Kanban käytännöistä: Tarkasti ottaen 15 loistavaa vinkkiä. Mitään kovin ristiriitaista ei esitetty, vaan osa ideoista oli hyvinkin tuttuja, mutta muutama hyvin perusteltu juttu taas herätti mielenkiinnon: esim. älä laske tuntimääriä taskeille, ja tee automatisoidusta testauksesta oma backloginsa josta osia virtaa ajan myötä sprintteihin hyvin priorisoituna. Tämä oli käytännössä päivitys alan perusteokseen Scrum and XP from the trenches – ja osa asioista mitä tuossa kirjassa rummutettiin olikin nyt listalla asioita joita EI pidä tehdä. Näin muuttuu maailma neljässä vuodessa 😉

Eli päivä alkaa olla paketissa, ja alkaa matka takaisin Helsinkiin. Jälkimietteinä Java näyttäisi voivan vahvasti, ja niin koko IT ala. Innovaatio on taas vahvaa ja paljon tapahtuu. Aika palata sorvin ääreen ja alkaa käyttämään uusia asioita liikearvon tuottamiseen 😉

Tässäpä muutama linkkiresurssi reissua koskien:

http://www.infoq.com/minibooks/scrum-xp-from-the-trenches

http://en.wikipedia.org/wiki/Cyclomatic_complexity

http://javancss.codehaus.org/

http://www.jfokus.se/jfokus/

http://vaadin.com/home

Sekä tietysti:

http://www.tieturi.fi/java

JFokus 3/4

No niin, puolet seminaarista on nyt lusittuna.

NoSQL on saanut konferenssissa paljon huomiota vaihtoehtona, mikä on hieman hupaisaa kun pääsponsorina on suuri relaatiokantavalmistaja. Itse suhtaudun NoSQL ratkaisuihin vielä varauksella. On paikkansa missä ne ovat hyviä, mutta mitään järisyttävän uutta ei ideassa ole. Hiljattain juolahti omaan mieleen ajatus mikä voi olla täysi susi..  tai sitten neronleimaus. 90-luvulla työskentelin agenttitiimissä tutkien älykkäitä agentteja jotka liikkuvat verkostossa. Ja hiljattain pohdin tietokantojen toimintaperiaatetta.. Sitä miten älykkyys on siirtynyt pitkälti kannoista businesslogiikkakerroksiin.. Mutta mitä jos kantapalvelimet omaisivat yksinkertaisen rajapinnan ja osaisivat keskustella suoraan keskenään? Ja rajapinnan kautta voisi lähettää sopivan kriteeripaketin, jossa voi olla suoritettavaa logiikkaa.. Ja mitä jos palvelimet osaisivat keskenään reititellä haut kaikkialle missä niitä tarvitaan, ja suorittaa ne, ja aikanaan palauttaa vastaukset takaisin.. Eli tällaisista haaveilen. Tämä olisi toki tehtävissä esim. ESB ja SOA tekniikoin mutta pohdiskelin vain ajatusleikkinä älykästä kantaklusteria jossa agentit liikkuvat ja suorittavat rinnakkaisia hakuja.

Android

No niin, sivurönsy siinä, NoSQL on joka tapauksessa pop. Toinen asia mikä on pop – ei suurena yllätyksenä – on Android alusta. Siinä missä erään matkapuhelinvalmistajan uusin Microsoft strategia pommitti osakekurssit takaisin 2000-luvun alimpiin tasoihin, ja hävitti taivaan tuuliin 4,4 miljardia arvoa, ja aikaansai  osakkeenomistajien kapinaliikkeen.. Android se jatkaa porskuttamistaan ja kasvattaa markkinaosuuttaan.

Disclaimer: Todettakoon kuitenkin että historia vasta näyttää päätösten viisaudet, ja Windows Phone 7 vaikuttaisi olevan paljon aiempia tekeleitä parempi alusta. Toisaalta historia myös kertoo että Microsoftin kumppanuushankkeet ovat usein olleet turmiollisia partnereille, ja Microsoft ei ole ollut tunnettu innovaatioistaan viimeisinä vuosikymmeninä. Google Android alusta pääsee myös kiinni Googlen lukuisiin sähköisiin palvelurajapintoihin, kuten haku, käännös, kartat, ja ties mitä tulevaisuus tulee vielä pyörittämäänkään mielettömässä hajautetussa myllyssä. Juuri palvelut on pääsyy miksi uskon Android alustaan ohi muiden. Mutta onhan se kiva että alustaan tulee uusia piirteitä. Toinen asia mikä mobiililaitteissa kiinnostaa on tulevaisuuden käyttöliittymät ja tulevaisuuden sensorit.

Seminaarissa oli esillä mm. Android pelien fysiikkamallinnus ja Sony Ericssonin uusimmat tuulet.. Niistä kävi kertomassa Erik Hellman, ja esillä oli mm. Sonyn Playstation Android XPeria Play, joka on siis PSP:n jatko-osa, mutta täysin Android vetoinen. Esityksessä pohdiskeltiin myös kolmiulotteisia käyttöliittymiä jotka ovat mahdollisia mm. raa’an prosessoriväännön vuoksi, sekä turbobuustattua multitouchia, jossa ei tyydytä enää yhden tai kahden sormen käyttöön vaan jopa kolmen tai useamman, ja erilaisten eleiden käyttöön ohjauksessa. Lisäksi on mahdollista käyttää kosketustapahtuman voimakkuuslukemaa, joka kuvaa siis sitä miten laajalla pinta-alalla painallus tapahtuu. Tästä saa taas uuden dimension käyttöön, mieleen tulee esim. siveltimenveto, tai kohdistimen siirto vs valinta, jne.

Puhetta oli myös antureista ja ANT+ protokollasta jolla Android voi seurata langattomasti esim. sydämensykettä ulkoisista antureista. Tämä mahdollistaa esim. lääketieteen sovelluksia jotka seuraavat ja raportoivat sydämen tilasta vaikkapa reaaliajassa – halvoin kustannuksin ja käyttäjälle lähes näkymättömästi. Mielenkiintoinen eyecandy oli myös 3d-taustakuva joka voidaan laskea mistä hyvänsä 2d-kuvasta ja muuttaa 3d käänneltäväksi. Kuulostaa ehkä pieniltä asioilta mutta yhtäkaikki vaikuttavan näköistä. Itsekin odotan kovasti uusia asioita 2011 vuoden Android puhelimilta..

Gigahertsin tuplaydinprosessorilaitteilta joissa on tusinan verran antureita voi jo odottaa innovaatioita – ensimmäinen PC kone jolla aloitin koodailemaan oli 4 megahertsiä ja sekin oli aikanaan jo paljon.. Nyt taskusta löytyy jo aika uskomatonta tehoa – muutama vuosi sitten ajoin C64 emulaattoria Androidini sisässä, ja siihen riitti paljonkin nöyremmät prosessorit. Monella on rannekellossaan jo tehokkaammat prosessorit kuin ammoin kuusnepassa, ja hyvin sekin veti.

SOA

Omalta osaltani päivä päättyikin sitten Jeff Genenderin vauhdikkaaseen esitykseen SOA vinkeistä. SOA on itselle sen verran lähellä sydäntä oleva asia että paljoa uutta ei esityksessä tullut, mutta toisen konkarin mielipiteet vahvistivat omia, ja asiat oli hauskasti esitetty ja hyvin perusteltu. Yksi ajatus jäi bonuksena mieleen.. Ei ole oikeaa tapaa tai menetelmää tehdä SOA:aa, ja olosuhteista riippuen hyvä design pattern voi toisissa olosuhteissa ollakin antipattern.

Joka tapauksessa, päivä päättyi tapahtumaan jossa oli paljon syötävää ja liian vähän juotavaa. Tulin jututtaneeksi suorituskyky-expertti Kirk Pepperdineä, ja aiheena oli mm. Scala kääntäjän suorituskykyparannukset sekä Actorit. Ja teemaan liittyen, huomenna sitten uusi päivä, jota ajattelin ladata runsaalla määrällä Scalaa. Yksi esitys on Martin Oderskyn, ja käsittelee kokoelmien suorityskykyä ja rinnakkaiskäsittelyä.

JFokus 2/4 – tarinoita Tukholmasta

No niin, edelleen ollaan siis Tukholmassa ja JFokus konferenssissa. Osallistujia täällä on hieman yli 1100, joista se satakunta tuli Suomen puolelta aamulautalla.

Aamun avasi räväkästi Henrik Ståhl Oralelta, ja mitä keynoteihin tulee tämä oli piristävää vaihtelua. Henrik puhui Oraclen ahneudesta ja arvosteli Oraclen toimintaa Machiavellin silmin 😉 Toden sanoakseni esitys oli hyvin huumoripitoinen, yllättävänkin suora ajoittain, ja siinä vastattiin taas hyvin kysymyksiin joita Java kehittäjät ovat pohtineet ja myös julkisesti ruotineet. Javan ja Oraclen näkymiä luotailtiin kolmesta näkökulmasta: Niccolo Machiavellin, Duken, sekä rahan jumalan Mammonin.

Machiavellillä on muuten ollut jo aikanaan PR puoli hyvin hallussa, monet viisaudet pätevät (entistä enemmän) tänä päivänä. Pelottavaa.. Oli miten oli, aamu oli kiintoisa ja rentouttava. Esityksen lopussa tuli myös esille roadmap ajatuksia aina Java 9:ään asti. Nyt kannattaa kaikkien kynnelle kykenevien pistää ehdotuksia HotSpot + JRockit JVM yhdistelmän nimeksi, tai muuten sen nimeksi tulee Fusion JVM 😉

Esityspuolelta mieleen jäi Oraclen standin Brainwaves peli jossa piti aivonsa alfa aallot rentouttamalla saada kuula leijumaan ilmassa mahdollisimman pitkään. Tiedä sitten onko hyvä asia mutta kun pistin anturit päähäni kuula pomppasi melkein samantien kattoon, liekö sitten tuo aivojen tyhjentäminen vahva puoleni. Valitettavasti kuulan liikkeistä innostuminen toi aktiviteetia ja tipautti kuulan maahan. Paikallinen ennätys oli 22 sekuntia leijuntaa (eli tyhjä pää), ja kuulemma joiltakuilta onnistuu pari minuutiakin. Itseä kun nuo UI puolen asiat aina kiinnostavat, ja kun en usko että monitori, hiiri ja näppäimistö on se lopullinen ratkaisu tietokonetta käskyttäessä, niin tällaiset poikkeukselliset ratkaisut kiinnostavat. Tuossa linkit vielä Neurosky laitteeseen ja yleensä aiheesta: http://www.neurosky.com/ http://gajitz.com/mind-games-four-games-you-control-with-your-brain/

Brainwaves anturien oikea käyttö on liikkumisrajoitteisten ihmisten käyttöliittymissä, ja keskittymällä kuulaa pystyikin ohjaamaan. Kontrolli oli vielä omasta yrityksestä kaukana mutta eiköhän tuossa muutamassa päivässä olisi jo vauhdissa. May the Force be with you!

Sieltä sitten takaisin maan pinnalle. Eric Evans puhui ketterästä DDD:stä, Domain Driven Developmentista, ja sen sudenkuopista ja parhaista käytännöistä. Toistuvana kaavana suomalaisten firmojen kanssa olen aika ajoin kuullut miten ketteriä menetelmiä kuten Scrum:ia kirotaan alimpaan manalaan ja haukutaan miten ne eivät toimi. Useimmiten kun kuulen tällaista ja kyselen lisää, selviää kaksi asiaa aina toistuvasti: 1) Projektissa ei olekaan Product Owneria ja piirteiden priorisointia, vaan kyseessä onkin Scrummerfall eli on tehty speksit, on tehty suunnittelu alussa, ja sitten ohjelmoijatiimille sanotaan että olkaa ketteriä. Ja 2) on aamupalaverit ja iteraatiot, mutta toteutuksen osalta on lähinnä omaksuttu että ei suunnitella, eikä dokumentoida varsinkaan, eli jätetään suunnittelu ja testaus kokonaan pois iteraatiosta ja hakataan vain päätä seinään tekemällä lyhytnäköistä koodia jota ei ehditä saamaan iteraatiossa edes valmiiksi. Tässä esityksessä ei suoranaisesti menty Agile menetelmiin tai prosesseihin, vaan käytiin läpi miten DDD:tä voi tehdä hyvinkin luonnollisesti keskustelujen kautta.

Tähän väliin hieman kehuja Vaadin frameworkille tehdystä seminaarin aikatauluohjelmasta, ainakin vielä osoitteessa http://www.jfokus.se/jfokus/page.jsp?id=vschema ja http://code.google.com/p/devoxx-schedule-2010/ – varsin näppärä ja toimiva kontrolli ja sovellus. JFokushan fiksusti julkaisi REST rajapinnat joilla seminaaritietoja saa esille.. Ihan piruuttani koodasin itsellenikin niiden varaan Android mokkulan, joskin jaossa oleva virallinen versio on huomattavasti parempi. Mutta oma on aina oma vaikka onkin ruma.

Hupaisa yksityiskohta: IPhonellekin oli tehty seminaarisofta, mutta se ei ole ehtinyt hyväksyntäprosessien läpi vielä joten iPhone mistajat… sorry! 😉 Henrik Ståhl muuten lipsautti aamun keynotessaan miten Javan tavoite on pyöriä myös iPhonessa tulevaisuudessa, saapa nähdä oliko tässä konkretiaa vai unelmointia..

JFokus 1/4 – hyvää syntymäpäivää Vaadin!

No niin, keskellä talvilomaa on aikaa käydä seminaareissakin vaihteeksi. Kohteena on Tukholmassa järjestettävä Java-kehittäjien seminaari JFokus, ja päätin lähteä matkaan Vaadin porukan sponsoroimalla laivaristeilyllä, joka sisältää mm. luentoja ja verkostoitumista.

Silja Europa risteily sujui mukavasti, ja päädyin lumiseen Tukholmaan jossa pakkasasteita on n. puolet siitä mitä Helsingissä tällä hetkellä – käytännössä siis melkein lämmin rantaloma. Osallistuin eilen tilaisuuteen jossa kävi ilmi että suosittu Vaadin framework on melkeinpä päivälleen 10 vuotta vanha – kun huomioidaan sen juuret. Nykyisessä GWT vetoisessa muodossahan se ei ole montaa vuotta ollut, mutta serveripään koodi on ollut lähes saumattoman yhteensopivaa alkuajoista alkaen. 10 vuotta vanha vaadin taitaa olla jo aika poro. 😉 Edelleen pidän Vaadin frameworkissä siitä miten komponentisointia ja uudelleenkäyttöä on viety äärimmilleen GWT:n avulla – mutta serveripään tilanhallinnalla on saatu kevennettyä kovasti paljon AJAX tietoturvapulmia – lukuisat AJAX sovellusten tietoturvareiät ovat muuten asia josta muuten tulevina vuosina tullaan vielä seminaareissa jauhamaan.  Tällä hetkellä niitä lähinnä hyödynnetään 😉

Illan luennoissa Arun Gupta Oraclelta kävi kertomassa miten OSGI, Glassfish ja Java EE 6 pelaavat yhteen, ja jälleen kerran syntyi uusia ideoita ja ymmärrystä. OSGI vetoisuus on varmasti sovelluspalvelimille hyvä asia, koska käytännössä niitä monet haluavat kustomoida, ja OSGI mahdollistaa mahdollisimman sulavan modulaarisen rakenteen, jonka avulla saadaan mm. nopeampi kännistyminen kun turhia palveluita ei ladata, ja sujuvampi päivitys kun uusia palveluita tarvitaan lisää.

David Chandler Googlelta kävi kertomassa GWT:n uusista kujeista ja antoi nipun tehovinkkejä siihen, miten GWT:stä saa kaiken irti, mm. miten JavaScript kääntämisvaihetta voi rutkasti nopeuttaa kehityksen aikana. Mieleen jäi myös uusi HTML 5 Canvas widget. Hupaisaa muuten miten W3C:n roadmap HTML 5 suhten on julkaista finaaliversio 2014… 😉 Kovasti sitä käytetään jo nyt.

Tässä vaiheessa uupumus voitti ja jouduin vetäytymään hyttiin herkkää aamuviiden herätystä varten. Kuulematta jäi Vaadin frameworkin tulevista piirteistä, mutta yritän paikata aukon sivistyksessä myöhemmin. Joka tapauksessa, Tukholmassa ollaan, ja nyt on aika poimia materiaalit ja aloittaa seminaarin päivä 1. Luvassa itselleni mm. Scalaa ja Androidia. Ja jos haluaa etäältä seurata tapahtumia reaaliajassa, twitter avainsanat #Jfokus ja #vaadin toimivat, samoin kanavat @Jfokus ja @Vaadin

 

Spring 3.1

Jahas, kesällä on sitten tulossa Springistä uusi versio.. Varsinainen susi lammasten vaatteissa. Spring versio 3.1 ei ole ihan vain pikkuinen bugifiksaus tai viilaus vaan isompia muutoksia on tulossa.

– Parempi tuki cache ratkaisuille, ei vain ehcache vaan geneerinen lähestymistapa huomioiden mm. annotaatioiden käyttö ja hajautetut cachet

– Social Spring: valmis kirjasto sosiaalisten palveluiden integrointiin huomioiden mm. autentikointivaatimukset. Esimerkiksi facebook ja twitter saavat tästä helpotusta (pysyvätköhän Spring kirjastot hyvin ajan tasalla rajapintamuutosten kanssa, jää nähtäväksi)

– Pääjujuna on tietysti parempi tuki Servlet 3.0 ja EE 6.0 uudistuksille

– @MVC annotaatioita tehdään enemmän konfiguroitavaksi, ja parempi tuki täysin xml:ttömälle käytölle Servlet 3.0 tapaan – jos niin haluaa…

– Web Flow 2.3 tulee hyödyntämään Spring 3.1 tilallisuusratkaisuja joten se saadaan huomattavasti kevyemmäksi

– Yksi tilallisuusparannuksista on mm. frameworkin tuki useille samassa istunnossa auki oleville ikkunoille: framework generoi jokaiselle oman ikkuna id:n, jonka avulla esim. web flow juoksutukset toimivat taas virheettömämmin.

– Spring ROO ja parempi tuki GWT:lle

– Olisiko syytä myös mainita Spring Mobile ja Spring Android? 😉 Kehys paisuu paisumistaan.

– Spring Securityyn tulossa mm. parempi tuki symmetriselle salaukselle ja salasanojen turvalliselle käsittelylle.

Jahas, ensi viikolla sitten JFokusta kohden ja lisää uutuuksista urkkimaan. Siitä varmaan lisää tässä blogissa 😉

Nexus S ja MMS asetukset

Tulin taas hommanneeksi uuden Google puhelimen, ja tällä kertaa malli on Nexus S, Near Field Communication kyvykkyydellä. Näissä on aina ongelmana tuo MMS asetuksten käsinnäpräys, ja jostakin syystä useat lähteet eivät pidä paikkaansa. Joten nyt löysin toimivat ja pistän ne tähän itsellenikin muistiksi. Kyseessä siis ELISA asetukset jotka toimivat Android:ssa. Eivät omaa keksintöä, vaan pihistetty jostakinpäin Interwebiä.

Internet

Name: Elisa Internet APN: Internet Username: Password: MCC: 244 MNC: 05 APN type: default

MMS

Name: Elisa MMS APN: mms MMSC: http://mms.elisa.fi MMS proxy: 213.161.41.57 MMS port: MCC: 244 MNC: 05 APN TYPE: mms

Muuten olen viime aikoina perehtynyt Android alustan ihmeelliseen sensorirajapintaan: mikrofonin reaaliaikaiseen lukemiseen, ja kiihtyvyysantureihin. Scalaa tuli myös koodattua urakalla ja siinä missä tiesinkin jo Actorit etukäteen, RemoteActor oli uusi miellyttävä tuttavuus…

Tapa Java

Osuipa silmään maailmalla.. Miten saat Java-koodin kuolemaan? Ajonaikana tai kääntäjässä. Kokeilepa tätä:

class runhang {
public static void main(String[] args) {
  System.out.println("Test:");
  double d = Double.parseDouble("2.2250738585072012e-308");
  System.out.println("Value: " + d);
 }
}

No niin, eihän se siitä varsinaisesti kuole mutta saa ”sydänkohtauksen” ja jumittuu. Tarkistettu uusimmalla Java6u23 versiolla. Saman jutun variaatio voi saada kääntäjän jumiin. Aika eksoottinen tilanne ja epätodennäköinen tietoturva-heikkous mutta kiintoisaa kumminkin. Ja enimmäkseen täysin hyödytöntä, mikä on tietysti lisäbonus 😉

Ja originaali löytyy http://www.dzone.com/links/r/java_hangs_when_converting_22250738585072012e308.html

 

Ja update: Oracle reagoi nopeasti ja nyt löytyy patchi tähänkin haavoittuvuuteen, Oraclen FPUpdater työkalu. Hyvää työtä!

http://www.oracle.com/technetwork/java/javase/fpupdater-tool-readme-305936.html