On perjantaipäivä. Firman chattiin kilahtaa muistutus pian alkavasta kahvitaukoaktiviteetista. Lähes kaikki bitwiserit säntäävät klo 14 firman kahvioon ja pian kahvikoneelle onkin muodostunut pitkä jono. Osa porukasta on kuitenkin saapunut jo viisi minuuttia aiemmin paikalle ja heidän käyttäytymistään ohjaa maistuvan kahvin lisäksi jokin muu. Juuri uusittu taukotila mukavine sohvineen ei nyt kiinnosta eikä myöskään shakkilaudan peräti jännä tilanne. Sen sijaan porukka marssiikin päättäväisesti kohti kahvion vieressä sijaitsevaa neukkaria. Lue lisää

Vuosi sitten alkanut projekti pääsi eilen välietappiinsa, kun  Bitwisen älykiekkojärjestelmä ja sitä hyödyntävä Tappara-applikaatio olivat ensimmäisen kerran käytössä Tampereen Hakametsän hallissa.

Valehtelisimme, jos väittäisimme, ettei jännittänyt.

Viimeiset viikot projektilaiset ovat tehneet pitkää päivää, jotta kaikki varmasti toimisi H-hetkellä. Jossain vaiheessa on vain pakko laittaa se ensimmäinen versio ulos. Ja meille ja Tappara-applikaatiolle se oli eilen. Kehitystyö toki jatkuu yhtä tomerana edelleen. Lue lisää

Bitwisen Bootcamp on ohjelmistoalan opiskelijoille tarkoitettu työskentelyjakso, jonka aikana he pääsevät osallistumaan oikeisiin asiakasprojekteihin bitwisereiden rinnalla. Työtehtävien lisäksi opiskelijat pääsevät mukaan tapahtumiin, jotka kutkuttavat joko kuntoa tai makuhermoja.

Bootcamp on ollut pidetty konsepti ja se sai hopeaa Vastuullisin kesäduuni 2015 -kilpailun PK-yritysten sarjassa.

Nyt kesä 2017 on ohi ja iloksemme useimmat bootcampiläiset jatkavat bitwisereina – opintojen ohessa. Parhaiten kesäfiilikset kertoo bootcampiläinen itse, joten annoimme näppäimistön yhdelle heistä:

”Tammikuussa 2017 olin malttamaton. Lue lisää

Esittelin kirjoituksen edellisessä osassa kaksi erilaista tapaa toteuttaa tilakone ohjelmointikielen tasolla. Ensimmäistä tapaa kutsuimme tapahtumapohjaiseksi malliksi. Sitten esittelin tästä ”standardimallista” hieman poikkeavan mallin, jota kutsuimme tilaa lukevaksi tai pollaavaksi malliksi. Tässä sarjan viimeissä osassa kuvaan minkälaisia käytännön ongelmia tilakoneen toteutuksessa voi olla, ja miten mallit pystyvät vastaamaan näihin haasteisiin.

Tilaräjähdysongelma

Kun erilaisten tapahtumien ja niitä lähettävien rinnakkaisten toimijoiden lukumäärä kasvaa, tapahtuu tilakoneen tilasiirtymien sekä ulospäin lähtevien käskyjen kaikkien mahdollisten lomitusten määrässä tyypillisesti eksponentiaalinen kasvu. Lue lisää

Kuten sarjan ensimmäisessä osassa lupasin, esittelen tässä osassa kaksi hieman toisistaan poikkeavaa lähestymistapaa siihen, miten tilakone voidaan käytännössä toteuttaa ohjelmointikielellä. 

Ensimmäiseksi tarkastelemme melko suoraviivaista tapaa toteuttaa tilakone. Oletamme, että kielenä on Javan tai C#:n tapainen olio-ohjelmointikieli. Lähestymistavassa tilat ovat luokkia ja tapahtumat niiden metodeja. Esimerkkinä käytämme 1. osassa esiteltyä suljetun tilan valvontajärjestelmää. Lue lisää

Tilakonetta voi käyttää reaktiivisen ohjelmistojärjestelmän mallintamiseen ja toteutukseen tilanteessa, jossa täytyy sekä reagoida reaalimaailmasta tuleviin tapahtumiin että saada vastineeksi aikaan muutoksia maailmassa. Esimerkkinä käytän valvontajärjestelmää suljetulle tilalle.

Tilakoneella tarkoitetaan systeemiä, joka koostuu tiloista ja niiden välisistä tilasiirtymistä. Tilasiirtymiä aiheuttavat yleensä jotkin ulkoa tulevat syötteet, ja ne voivat tuottaa ulospäin näkyviä tuloksia.

Yksinkertaisimmillaan tilakone lukee jonoa symboleita, suorittaa tilasiirtymiä syötteiden mukaisesti ja joko hyväksyy tai hylkää tietyt syötejonot tai tuottaa siirtymien tuloksena jonon tulosarvoja. Lue lisää

Kvanttitietokone on mielestäni konseptina erityisen mielenkiintoinen. Kuitenkin mielestäni liian moni ihminen ei ymmärrä siitä muuta kuin sen mystisyyden, joten kunnianhimoinen kun olen, aion tässä tekstissä yrittää selittää sinulle lukija, mitä tämä fysiikan muotisana oikeasti tarkoittaa! Joten otetaanpa loikka tuntemattomaan, seuraa vain minua.

Joitain kuukausia sitten maailmalla levisi kulovalkean tavoin video, jossa Kanadan pääministeri Justin Trudeau vastaa toimittajan heittoon kvanttitietokoneista. Vaikka pääministerin selitys onkin jokseenkin puutteellinen, antaa se silti jotain kuvaa siitä, mikä erottaa normaalin tietokoneen kvanttitietokoneesta. Lue lisää

Aiemmassa blogikirjoituksessani käsittelin responsiivisen käyttöliittymäsuunnittelun perusteita. Tällä kertaa tutustutaan tarkistuslistan avulla muutamiin mielenkiintoisiin responsiivisuuden haasteisiin.

Uuden web-projektin käynnistyessä ulkoasun suunnittelu tulee yleensä käsiteltäväksi hyvin alkuvaiheessa prosessia. Kaikissa tapauksissa projektin kokonaiskuva ei ole vielä erityisen hyvin selvillä, joten monesti joudutaan varautumaan erilaisiin tilanteisiin, jotka saattavat realisoitua tai jäädä toiveiksi. Ulkoasun kannalta eräs tärkeä alkuvaiheen valinta on se, lähdetäänkö eri laitteita varten tekemään eri versioita sivustosta vai käytetäänkö responsiivista suunnittelua, jonka myötä ulkoasu mukautuu laitteelle sopivaksi. Lue lisää

Tämä teksti on jatkoa aikaisemmin julkaistulle tekstille, joten kannattaa lukea se ensin.

Edellisessä osassa puhuttiin erilaisista hyödyistä, kun käytetään suunnittelumalleja dokumentoinnin apuna. Tässä osassa näytetään, kuinka projektin käytännöistä saadaan luotua suunnittelumalleja. Kannattaa huomioida, että vaikka projektit ja tilanteet ovat erilaisia, suunnittelumallien pitäisi olla yleiskäyttöisiä, kestäviä ja käytettävissä myös oman projektin ulkopuolella – helposti muuttuvat yksittäistapausten yksityiskohdat voi dokumentoida muuten.

Suunnittelumallien on tarkoitus kuvata olemassa olevia käytäntöjä, jolloin niihin ei kannata laittaa osioita, joita ei ole oikeasti käytössä tai itse kokeiltu. Lue lisää

JavaRx_reactive_future_blog

Koska RxJava on nyt teoriassa täysin hallussa, on aika kokeilla sitä käytännössä. Graafinen käyttöliittymä tarjoaa hyvän leikkikentän käytännön tekemiseen. Tähän tarkoitukseen sopii hyvin JavaFX, jossa on muihin vaihtoehtoihin verrattuna parempi tuki asynkroniselle ohjelmoinnille. JavaFX on Javan uusin (ja jo kolmas AWT:n ja Swingin jälkeen) työpöytäkäyttöliittymäkirjasto. JavaFX:n ja RxJavan yhteenliittämiseen on myös olemassa valmis kirjasto, mielikuvituksellisesti nimetty RxJavaFX, mutta tässä esimerkissä käytetään vain RxJavaa ja JavaFX:ää, jotta pääsemme tekemään itse enemmän. Lue lisää