Käyttäjien tunnistaminen graafisesti Identiconilla

Törmäsin jo aikaisemmin Don Parkin ideaan IP-osoitteen esittämisestä pienenä, anonyyminä graafisena merkkinä, mutta sivuutin asian sen suuremmitta huomioitta. Lyhyesti selitettynä Identicon -nimen saaneen idean tarkoitus on ”tunnistaa” ja erotella esimerkiksi blogin kommentoijat tai wiki:n kirjoittajat, paljastamatta käyttäjän IP-osoitetta tai muuta tietoa. Tämä onnistuu muodostamalla käyttäjän antamista tiedoista, kuten IP-osoitteesta tai sähköpostista, tietoa vastaava kuva.

9blocks 9blocks 9blocks 9blocks 9blocks 9blocks 9blocks 9blocks 9blocks 9blocks 9blocks 9blocks 9blocks

Don Park kuvaa Identiconia seuraavasti:

I originally came up with this idea to be used as an easy means of visually distinguishing multiple units of information, anything that can be reduced to bits. It’s not just IPs but also people, places, and things.

IMHO, too much of the web what we read are textual or numeric information which are not easy to distinguish at a glance when they are jumbled up together. So I think adding visual identifiers will make the user experience much more enjoyable.

I think identicons have many use cases. One use is embedding them in wiki pages to identify authors. Another is using them in CRM to identify customers. I can go on and on. It’s not just about IP addresses but information that tends to move in ’herds’.

Ideana IP-osoitteen tai muun yksilöivän tiedon esittäminen helppolukuisena kuvana on loistava ja kohtalaisen helppo toteuttaa. WordPress ei kuitenkaan toimi .NET -alustalla, joten mieleen tuli toteuttaa Identicon PHP:lla ja testata toteutusta omassa blogissani. Teknisesti idea perustuu käyttäjän IP-osoitteen tiivisteen (hash) ja sen esittämiseen graafisilla elementeillä, joten hieman graafista piirtelyä gd-kirjastolla ja hash-funktioiden kanssa leikkimistä, ja toteutus olisi valmis.

Tarkistin kuitenkin ennen töihin ryhtymistä Identicon -ideaan pohjautuvat eri toteutukset ja WordPressille löytyy jo Scott Sherrill-Mix:n toteuttama WP_Identicon -plugin. Ei kyllä ollenkaan yllättänyt, että loistavasta ideasta oli lyhyessä ajassa toteutettu versioita käyttäen PHP:ta, Pythonia, Perlia, C#:ia ja .NET -ympäristöä alkuperäisen Java -toteutuksen lisäksi. Voi olla, että testailen silti oman version luomista PHP:tä käyttäen.

Koska työt oli tehty ennen kuin pääsin edes alkuun, lisäsin blogiin Identicon -pluginin, joka näyttää kommentoijan IP-osoitteen tiivisteen perusteella muodostetun kuvan. Lisäosaa varten tarvitsi vain lisätä muutama rivi kommentti-sivuun ja vaihtaa vakiona ollut sähköpostin perusteella kuvan luova optio IP-osoitteeseen. Alkuperäiseen ideaan verrattuna WordPress-pluginissa on enemmän erilaisia muotoja kuvan luomiseksi.

Näet nyt oman Identicon -jälkesi blogin kommenteissa.

SnoopStick valvoo mitä koneellasi tehdään

SnoopStick on normaalin USB-muistitikun näköinen palikka, joka tietokoneeseen liitettynä ja piilossa olevan ohjelman avulla valvoo, mitä tietokoneellasi on tehty, kun olet ollut poissa. Valvontaa voi myös tietenkin soveltaa lasten ja työntekijöiden tietokoneisiin. Ei sinällään mitenkään erikoinen vekotin verrattuna normaaleihin vakoiluohjelmiin, mutta toteutukseltaan yksinkertainen ratkaisu USB-tikkuun sovellettuna.

SnoopStick -ohjelmisto tallettaa kaiken mitä valvottavalla koneella tehdään ja tapahtumia voi tarkastella jälkeenpäin. Kytkemällä palikan mihin tahansa Internet-yhteydellä varustettuun tietokoneeseen, voi valvottavan koneen tapahtumia seurata ja ohjelmia hallita reaaliajassa. SnoopStick -palikoissa on uniikki tunniste, jolla tunnistetaan valvottavat koneet ja yhdistetään ne palikkaan, jolta ohjelma asennettiin. Valvovan ohjelmiston voi poistaa ajamalla asennusohjelman samalta palikalta, jolta se asennettiin. Yhdellä 60 dollarin hintaisella SnoopStickillä pystyy valvomaan kolmea konetta ja lisäkoneet maksavat 25 dollaria kappale.

Aikamoinen valvontatyökalu, joka ei periaatteessa eroa mitenkään perinteisistä haittaohjelmista. SnoopStickin asentama valvontaohjelma ei näy käyttäjälle ja käyttäjä on tietämätön valvonnasta. Palikan sivuilla ei kerrottu näkyykö ohjelma Explorerin prosessi-listassa vai toimiiko ohjelma rootkit -tyylisesti piilottamalla toimintansa kokonaan, joskin normaaleille käyttäjille jo ohjelman piilottaminen tehtäväpalkista on riittävä piilotuskeino.

Tietoturvallisesta näkökulmasta mieleen tulee tilanne, jos ja kun SnoopStick tunnisteet murretaan ja valvottavat koneet ovat avoimesti auki Internetiin. Eettisestä näkökulmasta katsoen palikan käyttäminen käyttäjän tietämättä on vähintäänkin kyseenalaista. Toisaalta, monessakohan julkisessa tietokoneessa, esimerkiksi kirjastoissa, on asennettuna jonkinlainen haittaohjelma, joka valvoo käyttäjän tekemisiä ja muun muassa salasanoja.

(via Gizmodo)

Automaattivaihteet polkypyörään

Kevään lähestyessä ja lumien väistyessä pyöräteiltä on aika kaivaa tallista polkupyörät, rasvata ketjut, säätää vaihteet, pyyhkiä pölyt satulasta ja suunnata ulos raikkaaseen kevätilmaan. Useimmille pyöräilijöille pyörän vaihteiden säätäminen on melkein rakettitiedettä ja pyörällä ajetaan sillä vaihteella, joka on jäänyt kaupasta ulosajettaessa päälle. Shimano on kuitenkin tuonut ongelmaan ratkaisun: automaattivaihteet.

Shimanon kolmivaihteinen automaattivaihteisto on mainio pyöräilijöille, jotka eivät tarvitse 24-vaihdetta työmatkapyörässään ja haluavat vain päästä paikasta A paikkaan B. Se, miten vaihteisto määrittelee käytettävän vaihteen ei jutusta selviä, mutta sen luulisi jotenkin liittyvän pyöritysnopeuteen. Automaattivaihteet avustavat pyöräilijää käyttämään sopivaa vaihdetta ja helpottavan matkantekoa.

Tekniikkaa ollaan lisensoimassa Trek, Giant ja Raleigh -pyöränvalmistajille, mutta tuollaisen tekniikan voisi kuvitella löytyvän käytöstä muillakin valmistajilla. Automaattivaihteiston hinnoittelusta ei vielä ollut tietoa, joten sen vaikutusta pyörän kokonaishintaan on vaikea sanoa. (via Gizmodo)

Eroon Windows Updaten muistutus-ruudusta

Sain viimeinkin vajaat kaksi kuukautta takuussa olleet muistini takaisin ja Windows -koneen kasattua taas toimivaksi. Windowskin muisti usealla päivityksellä ja alati esiin hyppivällä Windows Updaten ”Do you want to restart your computer now?” -ruudulla. On kyllä ollut taas Microsoftilla hupaisia ohjelmoijia, kun ”Restart Later” tarkoittaa 10 minuuttia, jonka jälkeen samaa asiaa kysytään uudelleen ja uudelleen. Ärsyttävää.

Onneksi Windows Updaten muistutus-ruudun voi säätää hieman vähemmän ärsyttäväksi. Ominaisuutta ei saa pois päältä, vaikka asetuksissa ”disabled” -vaihtoehto onkin, vaan muistutuksen aikaa voi säätää maksimissaan 1440 minuuttiin.

Muistutukseen liittyvä asetus löytyy seuraavasti:

Start -> Run -> gpedit.msc

Local Computer Policy
  Computer Configuration
    Administrative Templates
      Windows Components
        Windows Update
          Re-prompt for restart with scheduled installations

Asiasta löytyy kirjoitus myös Microsoftin tukitietokannasta. Otin toimenpiteestä muutaman ruudunkaappauksenkin, vaikkakin kuvia löytyy Googlettamalla termillä ”Windows Update nag screen”.

Windows Group Policy Windows Group Policy

LTY:n .NET Sovelluskehitys -intensiivi, päivät 3, 4 ja 5

Päivät venyivät pitkiksi, kun tietotekniikan opiskelijat pääsivät Visual Studioon sisään ja koodia tulevaa sovellusta varten alkoi syntymään. Useat ryhmät olivat ideoinnin vähyyden ja tiukan aikataulun takia päätyneet kehittämään jonkinlaista kurssin harjoitustyönpalautus -web-sovellusta. Muita ideointeja oli muistiinpano -webtyökalu, opiskelumateriaalin tarjoaminen webin avulla, prosessorin muistioperaatio -simulaattori, kielenopiskelu -sovellus ja tietojen hakeminen web-sivulta.

Kurssin puolesta keskiviikkona ja torstaina oli muutamia demoja Visual Studion käytöstä ja valmiista komponenteista. Muutamat elementit sivulle ja käyttäjän autentikointi oli valmis. Osaltaan kätevää, mutta toisaalta valmiit elementit ja kehitysympäristö pakottivat tiettyyn toteutustyyliin. Ainakin Web-sovelluksen ja osittain tietokantojen näkökulmasta valmiit elementit tuottivat päänvaivaa. En ollut Googlen mukaan ainut, joka kirosi Sitemapin muotoilua. Valmiit elementit kuitenkin mahdollistivat nopean kehittämisen ja valmista jälkeä syntyi. Aikaa olisi vain voinut olla enemmän käytettävissä, vaikka päivät venyivätkin seuraavan päivän puolelle.

Perjantain palautustilaisuudessa valmiusasteet vaihtelivat, mutta aika hyvin oli valmista saatu tehtyä. Ulkoasun ja käytettävyyden viimeistely uupui lähes jokaisessa työssä, joka tosin oli oletettavaakin muutaman päivän projektia ajatellen. Oman ryhmäni Courserator -projekti liittyi harjoitustöiden palautukseen ja teknisesti kaikki ominaisuudet saatiin toteutettua. Myös ulkoasuun sijoitettiin hieman muita ryhmiä enemmän työaikaa, sillä viimeistelty työ luo hyvän mielen, eikä sen toteuttamiseen juuri aikaa mene. Projektista myöhemmin muutamia kuvia, kunhan pääsen takaisin kotiin.

Kurssin viimeisenä päivänä projektien esitystilaisuuden jälkeen myös palkittiin parhaana ideana ”Muistiinpanotyökalu”, teknisestä toteutuksesta ”Adaptive English learning application” ja ”Kurssien sivuilta tapahtumien parsettaminen omalle sivulle” ja ryhmien lisäksi palkittiin muutama osallistuja Code Camp -hengestä ja sisukkuudesta. Muista erottuvalla idealla pääsi pitkälle, vaikka toteutukseltaan moni ”harjoitustyön palautustyökalu” oli teknisesti toimivampi. Kielenopiskeluun liittyvä toteutus oli kyllä myös ideansa lisäksi teknisesti hyvä.

Kokonaisuudessaan .NET Sovelluskehitys -intesiivi oli hyvä kurssi, joskin Code Camp -henkisesti alkuviikon alustukset ja muutamat demot olisivat voineet keskittyä enemmän ratkaisuihin kuin arkkitehtuuriin ja sen yksityiskohtiin. Kehittäessä sovellusta tuli tutustuttua Visual Studioon, sen toiminnallisuuteen ja komponentteihin, mutta kehitysympäristön hallitsemiseksi hyvin, tarvittaisiin hieman lisää koodaamista.

Intensiivikurssista on vielä edessä viiden sivun raportin kirjoittaminen, joka on ”Imagine Cup” -kilpailua varten tähdätty, tarkoituksena kuvata idea ”Technology & Education” -aihepiirin projektista. Raporttia ei ole pakko lähettää kilpailuun ja luultavasti emme sitä sinne lähetä.

Päivitys 15.3.2007:
.Net Sovelluskehitys -intensiivikurssi sai myös huomiota paikalliselta medialta, kun Etelä-Saimaan toimittaja kävi paikalla kuvaajan kanssa. Tapahtumasta tehty juttu löytyy Etelä-Saimaan verkkosivuilta.

Microsoftin puolelta järjestävänä tahona mukana ollut Aali Alikoski kirjoittaa tapahtumasta blogissaan, josta löytyy myös muutamia kuvia.

LTY:n .NET Sovelluskehitys -intensiivi, päivä 2

.NET Sovelluskehitys -intensiivin toinen päivä alkoi mikroluokassa ohjelmointiympäristöön tutustumisella. Luokkaan oli asennettu valmiiksi Visual Studio 2005, mutta kaveri oli tietenkin onnistunut valitsemaan juuri yhden niistä neljästä koneesta, joissa Visual Studion asennus ei kunnolla toiminut. Onneksi ohjelmointiympäristön debug-ominaisuuskin saatiin kuntoon ylläpidon suoritettua noin pari tuntia yhteensä kestäneen korjaus- ja service pack -asennuksen.

Sillä välin kun muut leikkivät Visual Studiolla, ehdin todeta Monodevelop -ohjelman asentamisen OS X:lle mahdottomaksi. Fink ei löytänyt peileiltä haluttuja paketteja Gnome-työpöytäympäristön asentamiseksi. Kai ohjelman voisi asentaa käsinkin, mutta sivuilla olevat ohjeet ja lista useista paketeista, joita pitäisi kääntää tietyillä optioilla, ei oikein herätä innostusta. Lisäksi sivuilla mainittu MacUX -projekti Monodevelop -asennuspaketin kasaamiseksi OS X:lle, on kirjoitusten mukaan jäämässä kesken. Pitää vielä yrittää Finkin kautta asennusta, asentamalla ensin Gnomen eri lähteistä (stable) ja tämän jälkeen Monodevelopin (unstable).

OS X:lle tarjolla olevien .NET-järjestelmän -kehitystyökalujen suhteen on harmillista, että Monodevelopin asentaminen OS X:lle on turhan hankalaa ja muiden ohjelmien tuki ohjelmoijalle on olematonta. Vaikka XCode:lla voi ohjelmoida C#:ia, on sen käyttäminen aloittelijan lähtökohdista kohtalaisen hankalaa ilman minkäänlaisia ohjelmointiapuja. Yhtä hyvin voisi ohjelmoida vimillä. Leikin kuitenkin XCoden lisäksi hieman Interface Builder -ohjelmalla ja helpostihan Cocoa# -käyttöliittymä rakentui.

Päivä sisälsi myös katsauksen .NET-järjestelmän tarkempiin ominaisuuksiin ja toiminnallisuuteen ja näimme muutamia demoja. Ei mitään sinällään erikoista. Mainostaakseen Imagine Cupia Microsoft tarjosi jokaiselle kilpailusivustolle rekisteröityneelle yhden vapaavalintaisen kirjan ja pelin. Valitsin vaihtoehdoista ”ASP.NET 2.0 Applications: Advanced Topics” -kirjan ja ”Gears Of War” -pelin Xbox 360:lle, vaikka en kyseistä konsolia omistakaan. Pitänee kai harkita ostamista :)

Päivän lopuksi käsiteltiin kurssin arvosteluperusteita ja aihepiiriä, johon liittyen pitäisi perjantaihin mennessä koodata jonkinlainen Windows- tai Web-pohjainen sovellus. ”Technology & Education” -teema on sinällään läheinen, mutta järkevän sovelluksen kehittäminen lyhyessä ajassa tuo omat haasteensa. Aivan yksin ei sovellusta tarvi kehittää, vaan päivän aikana muodostettiin 3-4 hengen ryhmiä. Varsinaisen ohjelman jälkeen ryhmät jäivät ideoimaan voittajasovellustaan tähtäimessään perjantain koodijulkistus ja palkinnot. Voi olla hankalaa kehittää toimivaa ideaa näin lyhyessä ajassa, joka jaksaisi kantaa myös mainostettuun Imagine Cupiin. Eihän sitä tosin koskaan tiedä.

Huomenna ja torstaina aamupäivät on varattu luennoille ja iltapäivällä jatketaan koodausta. Aikaa ei juuri tuhlattavaksi ole.

LTY:n .NET Sovelluskehitys -intensiivi, päivä 1

Tänään alkoi Lappeenrannan teknillisen yliopiston järjestämä .NET Sovelluskehityskurssi, joka toteutetaan intensiivinä 5.3 – 9.3.2007 Code Camp -periaatteella. Ensimmäisen päivän ohjelmana oli Microsoftin sovelluskehityskiertue, joka käsitti katsauksen .NET kehitysympäristöön, ominaisuuksiin ja mahdollisuuksiin. Kurssi toimii myös lähtölaukauksena Imagine Cup:iin.

Microsoftin sovelluskehityskiertue oli jotakuinkin samanlainen kuin vuosi sitten, kun sellaisessa kävin. Alkuun yleisesti aiheesta, Imagine Cup:n mainostusta, jonka jälkeen käsiteltiin .NET-järjestelmää kohtalaisen yleisellä tasolla ja luotiin katsaus mitä .NET 3.0 tuo tullessaan. Lisäksi yhteistyökumppani kertoi työelämän tarpeista ja haasteista sovelluskehityksen parissa työskenneltäessä. Aiheiden välissä pidettiin sopivasti kahvitaukoja, jotka Microsoft ystävällisesti tarjosi ja jonka laskuun myös lounas meni. Tietenkin Microsoftin Visual Studio -kehitystyökalua ja kumppanuusohjelmia mainostettiin riittävästi. Kyllähän se Visual Studio ihan kivalta ja toimivalta näytti. Esitysten jälkeen ilta jatkui LTY:n rantasaunalla illanvieton ja vapaamuotoisen keskustelun merkeissä ja tarjolla oli syötävää, juotavaa ja sauna.

Tapahtuma oli ihan mukava ja esityksiäkin jaksoi kuunnella, vaikkakin aiheita käsiteltiin hieman liian yksinkertaisesti. .NET-ympäristöstä sai jonkinlaisen kuvan, mutta joitakin aiheita olisi voinut käsitellä hieman syvemmin ja jättää toisia aiheita, kuten C# esimerkkien rakentamista, hieman vähemmälle. Arkkitehtuuri ja mahdollisuudet käsiteltiin aika pintapuolisesti ja kokonaiskuva jäi aika hajanaiseksi; paljon kivoja ominaisuuksia, hienoja käyttöliittymiä, helppoa koodigeneroimista, erilaisia rajapintoja ja hyvät kehitystyökalut. Myös Vistan karkkimainen käyttöliittymä ja toiminta tulivat tutuiksi.

Huomenna intensiivikurssi jatkuu luennoilla, demoluennoilla, aiheen valinnalla ja koodaamisella. Asensinkin jo Mac OS X:lle Mono -ympäristön, XCode:en C# -pluginin. ASP.NET -sovelluksia voi ajaa Mono:n mukana tulleen XSP -palvelimen avulla. Kaikki tarvittava löytyi Mono -projektin sivuilta, mutta ympäristön voi asentaa myös Darwin Portsin kautta. Peruskoodit kuten C# HelloWorld.cs, Cocoa# -HelloWorld.app ja ASP.NET HelloWorld.aspx toimivat, joten asennus onnistui. Monon, C# -ympäristön ja XCoden käytöstä lisää myöhemmin.

Kurssilla koodausympäristönä toimii Visual Studio 2005, mutta oma Mono -ympäristö Mac OS X:ssä helpottaa ominaisuuksien testaamista ja samalla voi vertailla koodin toimivuutta .NET ja Mono -ympäristöissä. Nopeasti testattuna XCoden C# -pluginin tuki ohjelmoijalle oli olematonta, joten ohjelmointiympäristöjen vertailu ei ole mielekästä. Jos omistaisin Macbookin voisin ajaa Windowsia ja Visual Studiota Parallelin kautta ja silti nauttia OS X:n mukavuuksista.

Saa nähdä kuinka ahdasta huomenna mikroluokkaan ja koneiden äärelle tulee, sillä luokka on kohtalaisen pieni ja innokkaita koodaajia ensimmäisen päivän perusteella runsaasti.