<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:base="https://uuksu.fi/blog" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Uuksun blogi</title>
    <link>https://uuksu.fi/blog</link>
    <atom:link href="https://uuksu.fi/blog/feed.xml" rel="self" type="application/rss+xml" />
    <description>Uuksun blogipostaukset</description>
    <language>fi</language>
    <item>
      <title>Viivakoodiunelmia</title>
      <link>https://uuksu.fi/blog/viivakoodiunelmia/</link>
      <description> &lt;p&gt; Keräiltävien taskuhirviöiden aikakauden käydessä kuumimmillaan vuosituhannen vaihteessa, kiinalaisella elektronisia leluja valmistavalla Radicalla pohdittiin, kuinka tästä pystyisi lohkaisemaan oman tuottavan siivunsa. Mietiskelyn tuloksena syntyi vanhaa ajatusta kierrättäen idea laitteesta, jolla tavallisista viivakoodeista pystyisi nappaamaan kaikenkarvaisia hirviöitä, jotka sitten usuttettaisiin toistensa kimppuun käsikähmään. Tämän idean pohjalta syntyi harvojen tuntema Skannerz, joka myös itselleni päätyi pukinkontissa vuonna 2001, tuolloin ollessani itse kymmenen vanha. &lt;/p&gt; &lt;p&gt; Skannerzissa oli vain jotain aivan käsittämättömän siistiä. Skannerzeja oli tuohon aikaan kolme, yksi väri jokaista Kaos-planeetan heimoa kohti. Jokaiseen heimoon kuului 42 hirviötä, jotka saattoivat lymytä missä tahansa keittiökaapin jauhopussien tai DVD-koteloiden viivakoodeista. Kun hirviöitä sitten oli koossa mieluisa tiimi, taisteltiin niillä joko muiden viivakoodien hirviöitä vastaan tai Skannerzit yhdistämällä kaverin kanssa. Varmasti koskaan en saanut jokaista hirviötä napattua, mutta yrityksen puutteesta se ei ainakaan jäänyt kiinni. &lt;/p&gt; &lt;div class=&quot;px-3 w-full flex justify-center mx-auto my-4&quot;&gt; &lt;div class=&quot;flex -mx-3 flex-wrap md:text-left text-center&quot;&gt; &lt;a href=&quot;https://uuksu.fi/img/blog/viivakoodiunelmia/skannerz-collection.jpg&quot; class=&quot;px-3 w-full max-w-full md:mt-0 shrink-0 venobox mt-0 md:w-full&quot; data-gall=&quot;gallery&quot; title=&quot;Ylärivissä oma alkuperäinen Ujalu, keskellä velipojan Zendra ja viimeisenä kaverin jotain kautta meille päätynyt Pataak. Alarivissä Commander ja Racerz. Kuten kuvasta näkyy, muutamat ovat olleet lähes julmien kokeiden uhreina.&quot;&gt;&lt;img alt=&quot;Ylärivissä oma alkuperäinen Ujalu, keskellä velipojan Zendra ja viimeisenä kaverin jotain kautta meille päätynyt Pataak. Alarivissä Commander ja Racerz. Kuten kuvasta näkyy, muutamat ovat olleet lähes julmien kokeiden uhreina.&quot; src=&quot;https://uuksu.fi/img/blog/viivakoodiunelmia/skannerz-collection-thumb.jpg&quot;&gt;&lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt; Lopulta aika ja ikä ajoivat Skannerzista ohi ja se jäi laatikon pohjalle, mutta tästäkin huolimatta Skannerzia tuli silloin tällöin hypisteltyä ja tarkasteltua, että vieläkö se vanha tiimi on tallella. Jossain kohdin pattereista kuitenkin loppui virta ja hirviöni siirtyivät bittitaivaaseen, mutta ajatus Skannerzista jäi kytemään takaraivoon. Se oli tehnyt pysyvän vaikutuksen eikä se sieltä hevin ollut poistumassa. &lt;/p&gt; &lt;p&gt; Joskus yli 15 vuotta ensimmäisten kokemusten jälkeen kaivoin Skannerzin takaisin naftaliinista. Muistan löytäneeni tuohon aikaan netistä alkuperäiset Skannerzin mukana tulleet hirviökortit, jotka joku oli skannannut ja jakanut muille. Luulin, että tähän mennessä joku olisi myös kaapannut itse Skannerzin ruudulla näkyvät pikselitaideversiot hirviöistä, mutta jouduin pettymään ja toteamaan, että kiinnostus koko Skannerzia kohtaan tuntui olevan aika minimaalista. Tämä vääryys täytyisi siis korjata ihan itse. &lt;/p&gt; &lt;p&gt; Ohjelmointi- ja hakkerointitaitoa oli kertynyt jo matkan varrella sen verran, että totesin tämän olevan helppo nakki. Sen kuin vain kuvaisin ruudulla näkyvät hirviöt kameralla ja taltioisin ne pikseli pikseliltä. Kuten arvata saattaa, eihän tästä tullut yhtään mitään. Tajusin jo tuolloin, että kuvien siirtäminen oikeasti pikseli pikseliltä jäljittäen veisi iän ja terveyden. Muistan kokeilleeni jotain ohjelmallista ratkaisua ongelman selättämiseen, mutta yritykset jäivät aika vähäisiksi. Tyydyin toteamaan, että eihän tästä tule yhtään mitään, ja sain vielä paremman ajatuksen: lähetin Skannerzin tuolloin omistaneelle Mattelille kirjeen ja pyysin, pääsisikö Skannerzin alkuperäistä lähdekoodia ihmettelemään näin puhtaasti kuriositeetin näkökulmasta. &lt;/p&gt; &lt;p&gt; Kirje Amerikkaan maksoi mitä maksoi, eikä vastausta koskaan kuulunut. Hautasin Skannerz-haaveet toistaiseksi, vaikkakin vanha kipinä jäi yhä kytemään. Tähän palattaisiin vielä. &lt;/p&gt; &lt;hr&gt; &lt;p&gt; Paluu viivakoodien pariin tapahtui vuosia myöhemmin, tarkalleen ottaen marraskuussa 2023. Muistan kaivanneeni tuolloin jotain projektia, ja kuinka ollakaan, Skannerz palasi jälleen mieleeni. Vastaan tulivat ensin aikaisemman yritykseni kuvat ja pian löysin itseni kaivamasta laatikosta vanhan kunnon punaisen Ujalu-Skannerzin ja ryhdyin pohtimaan taistelusuunnitelmaa. &lt;/p&gt; &lt;p&gt; Ongelma Skannerzin kanssa oli ollut aikaisemminkin se, että sen pienellä, 32 x 30 -pikselin ruudulla jokaisesta hirviöstä näkyi kerrallaan vain pieni palanen. Laitteen PAN-nappia painamalla kuvaa kuitenkin pystyi vierittämään, ja kokonainen, vähintään tuplasti isompi kuva paljastui sen alta. Sinänsä simppeliä, mutta jos jokaisen hirviön kohdalla kuvaa olisi vieritettävä eri nappeja painamalla, laite liikkuisi liikaa ja kuvan keskittäminen myöhempää käsittelyä varten olisi jokseenkin hankalaa. Skannerz piti siis saada pysymään paikallaan. &lt;/p&gt; &lt;p&gt; Kokemuksen taas kartuttua ajatus uudesta hyökkäysvektorista lähti hahmottumaan suhteellisen kivuttomasti. Ajatuksenani oli rakentaa Arduinosta Skannerziin liitettävä lisäosa, joka mahdollistaisi Skannerzin nappien etäohjaamisen ja näin paikallaan pitämisen, kun napsisin hirviöistä kuvia. Ajattelin, että voisin tietokoneelta sarjaportin kautta ohjata Arduinoa ja myös skriptata valokuvien ottamisen OBS-nauhoitussovellusta käyttäen. Idea vaikutti alkuunsa niin hyvältä, että lähdin sitä jo samaisena marraskuisena iltana toteuttamaan. &lt;/p&gt; &lt;p&gt; Kolvailin aluksi kasaan lisäkortin, joka käytännössä oli piirilevyllä kasa johtoja ja &lt;a href=&quot;https://fi.wikipedia.org/wiki/Optoerotin&quot; target=&quot;_blank&quot;&gt; 4N25-optoerottimia&lt;/a&gt;, joiden ainoa tehtävä oli simuloida näppäinpainalluksia ilman, että lisäkortti ja Skannerz olisivat samaa sähköpiiriä. Tuumin, että olisin voinut kyllä mieluummin suunnitella ihan oikean piirilevyn ja tilata sen jostain niitä kuluttajille valmistavista palveluista. Malttamattomuus saada homma valmiiksi oli tässä kohdin kuitenkin ainoa tekijä, joka painoi liikaa vaakakupissa. &lt;/p&gt; &lt;p&gt; Selvittelin tämän jälkeen, mitkä padit Skannerzin piirilevyllä tulee vetää maihin, jotta tietyt näppäimet aktivoituvat. Alkuperäinen ajatukseni oli kajota itse Skannerziin mahdollisimman vähän, koska tässä kohdin pidin niitä hyvinkin arvokkaina ja harvinaisina laitteina. Niinpä teippasin johdonpätkät kiinni piirilevylle ja kasasin sen kasaan. Tästähän ei tullut yhtään mitään, kun johdot irtoilivat hyvinkin helposti teippien pettäessä ja yhteys nappeihin katosi. Aika nopeasti tulin siihen tulokseen, että tästä ei selviä ilman Skannerzin kolvaamista, ja liitin johdot uudestaan kolvaamalla, vaikkakin tässäkin kovasti varoen, ettei tina täysin tärvelisi laitteen piirilevyä. &lt;/p&gt; &lt;div class=&quot;px-3 w-full flex justify-center mx-auto my-4&quot;&gt; &lt;div class=&quot;flex -mx-3 flex-wrap md:text-left text-center&quot;&gt; &lt;a href=&quot;https://uuksu.fi/img/blog/viivakoodiunelmia/skannerz-wires.jpg&quot; class=&quot;px-3 w-full max-w-full md:mt-0 shrink-0 venobox md:w-1/2 mt-0&quot; data-gall=&quot;gallery&quot; title=&quot;Skannerz poloinen kytkettynä johtoihin.&quot;&gt;&lt;img alt=&quot;Skannerz poloinen kytkettynä johtoihin.&quot; src=&quot;https://uuksu.fi/img/blog/viivakoodiunelmia/skannerz-wires-thumb.jpg&quot;&gt;&lt;/a&gt; &lt;a href=&quot;https://uuksu.fi/img/blog/viivakoodiunelmia/skannerz-robot.jpg&quot; class=&quot;px-3 w-full max-w-full md:mt-0 shrink-0 venobox md:w-1/2 mt-2&quot; data-gall=&quot;gallery&quot; title=&quot;Käsin kasaan kursittu, Skannerzia ohjaileva lisäkortti.&quot;&gt;&lt;img alt=&quot;Käsin kasaan kursittu, Skannerzia ohjaileva lisäkortti.&quot; src=&quot;https://uuksu.fi/img/blog/viivakoodiunelmia/skannerz-robot-thumb.jpg&quot;&gt;&lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt; Lopuksi koodailin Arduinoon pienen, käytännössä orjana sarjaportista komentoja ottavan softanpätkän ja JavaScriptillä siihen ohjaussoftan, josta pystyin antamaan yksittäisiä näppäinkäskyjä tai pidempiä sarjoja. Harmaita hiuksia aiheutti lähinnä se, että en ihan ymmärtänyt, miten Arduinon sarjaportti toimii, mutta taottuani seinää hieman otsallani tämäkin lopulta ratkesi. Selvittelin myös, miten OBS:ää saisi skriptattua, ja tähän tarkoitukseen taisin löytää oikein valmiin kirjastonkin. Naiivi ajatukseni oli, että lopputulos olisi sellainen, että pystyisin istumaan kädet niskan takana ihmettelemässä, kun robottini liikuttelisi Skannerzia ja nappailisi siitä kuvia. Kuinka väärässä olinkaan siitä, miten tämäkin lopulta ratkesi. &lt;/p&gt; &lt;p&gt; Kohtalon hetki koitti: olin valmistellut kaappaamiseen oikeat olosuhteet ja valmis käynnistämään rakkaudella työstämäni prosessin. Kuinka ollakaan, kun aloitin Skannerzin lataamisen täyteen hirviöitä skannaamalla, sen viivakoodiskanneri ei enää toiminutkaan. Pahimmat pelkoni olivat käyneet toteen, ja olin rikkonut laitteen. Kauhuissani purin kolvaukseni ja toivoin, etten ollut aiheuttanut peruuttamatonta vahinkoa, kunnes tajusin, mistä koko hommassa oli kyse. Kun paristojen jännite putoaa tarpeeksi alas, Skannerzin ensimmäinen oire on se, että sen viivakoodiskanneri lakkaa toimimasta. Kaikkea sitä oppii. &lt;/p&gt; &lt;p&gt; Olin kuitenkin jo tässä kohdin niin läpeensä kyllästynyt projektin fyysiseen puoleen, joka valtasi viikkotolkulla arvokasta pöytätilaani, joten päätin tavalla tai toisella viimeisteleväni sen nyt ja tässä ja jättäväni kuvien käsittelyn myöhemmäksi ongelmaksi. Teippasin Skannerzin ilmastointiteipillä seinään kiinni ja ryhdyin käsin hirviö hirviöltä kuvaamaan joka ikisen nurkan jokaisesta kuvasta. Joka 42. hirviön kohdalla irrotin Skannerzin ja aikaisemmin löytämäni tempun avulla vaihdoin sen heimoa kolvaamalla sen piirilevyllä jumpperin toiseen asentoon. Ja sama jatkui, kunnes 128 perushirviötä ja 12 salahirviötä oli kuvattu. &lt;/p&gt; &lt;div class=&quot;px-3 w-full flex justify-center mx-auto my-4&quot;&gt; &lt;div class=&quot;flex -mx-3 flex-wrap md:text-left text-center&quot;&gt; &lt;a href=&quot;https://uuksu.fi/img/blog/viivakoodiunelmia/skannerz-capture.jpg&quot; class=&quot;px-3 w-full max-w-full md:mt-0 shrink-0 venobox mt-0 md:w-full&quot; data-gall=&quot;gallery&quot; title=&quot;Huippumoderni kapturointistudio.&quot;&gt;&lt;img alt=&quot;Huippumoderni kapturointistudio.&quot; src=&quot;https://uuksu.fi/img/blog/viivakoodiunelmia/skannerz-capture-thumb.jpg&quot;&gt;&lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt; Fyysisen puolen valmistuttua käänsin katseeni kuvien käsittelyyn. Kuten saattoi arvata, tarkastellessani totesin, että kuvat eivät olleet täysin linjassa, eli kuvaamani laitteen ruutu vaihtoi hienoisesti paikkaa jokaisessa kuvassa ja varsinkin sen jälkeen, kun jouduin irrottamaan Skannerzin teipeistä heimon vaihtoa varten. Käytännön tasolla tämä hankaloittaisi kuvien ohjelmallista käsittelyä, ellen pystyisi luottamaan siihen, että ruudun pikselit löytyisivät aina samasta paikasta. Löysin tähän jokseenkin helposti ratkaisun tähtitieteen puolelta, jossa käytännössä sama ongelma oli jo kertaalleen ratkaistu tähtitaivaskuvista. Sama pinon tasausalgoritmi (&lt;a href=&quot;https://imagej.net/plugins/linear-stack-alignment-with-sift&quot; target=&quot;_blank&quot;&gt;Linear Stack Alignment with SIFT&lt;/a&gt;) löytyi ImageJ-ohjelmasta, ja sain kuin sainkin kuvat takaisin linjaan. &lt;/p&gt; &lt;p&gt; Seuraavaksi ajatukseni oli rakentaa tällä kertaa .NET:iä hyödyntäen sovellus, joka lukisi määritellystä ruudukosta kuvasta pikseleitä ja takaisinmallintaisi niistä bittikartan, jossa pikselit olisivat oikeissa kohdissa. Koska kuvani eivät olleet edelleenkään täysin täydellisiä, päätin, että tarvitsen konfiguroitavan ruudukon, jonka voisin piirtää varsinaisten kuvien päälle ja näin määritellä lennosta, mistä pikselit tulisi lukea. Teknologiavalinnaksi päätyi tässä kohdin SVG-vektorikuva, johon pystyin piirtämään ruudukon kaappaamani kuvan päälle Inkscapea hyödyntäen. .NET:in puolella pystyin parsimaan suoraan SVG:n XML:stä koordinaatit, joiden ympäriltä pystyin samplamaan pisteelle väriarvojen perusteella tiedon siitä, kuuluisiko koordinaatissa olla pikseliä vai ei. &lt;/p&gt; &lt;div class=&quot;px-3 w-full flex justify-center mx-auto my-4&quot;&gt; &lt;div class=&quot;flex -mx-3 flex-wrap md:text-left text-center&quot;&gt; &lt;a href=&quot;https://uuksu.fi/img/blog/viivakoodiunelmia/skannerz-capture-grid.jpg&quot; class=&quot;px-3 w-full max-w-full md:mt-0 shrink-0 venobox md:w-1/2 mt-0&quot; data-gall=&quot;gallery&quot; title=&quot;Hirviön päälle piirretty ruudukko merkkaamaan pikseleiden sijaintia.&quot;&gt;&lt;img alt=&quot;Hirviön päälle piirretty ruudukko merkkaamaan pikseleiden sijaintia.&quot; src=&quot;https://uuksu.fi/img/blog/viivakoodiunelmia/skannerz-capture-grid-thumb.jpg&quot;&gt;&lt;/a&gt; &lt;a href=&quot;https://uuksu.fi/img/blog/viivakoodiunelmia/skannerz-sprites-screen.jpg&quot; class=&quot;px-3 w-full max-w-full md:mt-0 shrink-0 venobox md:w-1/2 mt-2&quot; data-gall=&quot;gallery&quot; title=&quot;Jokainen kuva piti käydä lävitse neljään kertaan.&quot;&gt;&lt;img alt=&quot;Jokainen kuva piti käydä lävitse neljään kertaan.&quot; src=&quot;https://uuksu.fi/img/blog/viivakoodiunelmia/skannerz-sprites-screen-thumb.jpg&quot;&gt;&lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt; Ja kuinka ollakaan, ajatukseni toimi varsin mainiosti. Koska Skannerz näytti näytöllään aina vain pienen palasen koko kuvasta, jouduin jokaisen hirviön kohdalla toistamaan tämän noin neljä kertaa. Lopulta työkseni jäi palapelin kokoaminen eli nurkkien yhdistäminen toisiinsa, mikä oli työlästä, mutta lopulta melko yksinkertaista. Lopputuloksena minulla oli lähes alkuperäistä vastaavat bittikarttakuvat jokaisesta hirviöstä. Olin siis viimein kaikkien näiden vuosien jälkeen onnistunut tehtävässäni. &lt;/p&gt; &lt;hr&gt; &lt;p&gt; Nälkä kasvoi syödessä, ja päätin, että perustaisin kokonaisen nettisivun löydöksieni dokumentoimiseksi jälkipolville. Näin syntyi &lt;a href=&quot;https://skannerz.isopaha.net/&quot; target=&quot;_blank&quot;&gt;Skannerz Archive&lt;/a&gt;, jonka täytin kaikella tähän asti tietämälläni informaatiolla. Loin jokaiselle hirviölle oman sivun, johon sain ladattua kaappaamani hirviökuvat skannattujen hirviökorttien kylkiäisenä, todennäköisesti ensimmäisenä koskaan. &lt;/p&gt; &lt;p&gt; Olin tähän asti luottanut valmiiksi kerättyihin viivakoodeihin, joista pystyin tarvittaessa kaappaamaan jokaisen hirviön ja esineen, jotka jo nyt varsin hyvin tunnettiin. Koska tiedonhaluni oli sammumaton, halusin itse selvittää, mistä viivakoodit rakentuvat, ja ymmärtää sen, miksi mikäkin viivakoodi tuottaa tietyn tuloksen. Tästä alkoi kokonaan uusi polku, jonka aikana tulostin kymmeniä erilaisia viivakoodeja ja selvittelin niiden toimintaa. Ymmärsin vaiheittain, että koko Skannerzin viivakoodiavaruus oli 1 000 yksikköä, joka oli tasaisesti jaettu eri hirviöiden kesken. Tavarat toimivat samalla tavalla, mutta koska niitä oli vähemmän, useammat viivakoodit tuottivat niiden taakse kätketyn esineen. Olin varsin ylpeä löydöksistäni, ja koko homman ratkaiseminen tuntui pulmapelin päihittämiseltä. Hauskintahan tässä oli se, että paljon myöhemmin, kun olin itse tutkimukseni tehnyt opin, opin Radican aikoinaan &lt;a href=&quot;https://matthodges.com/posts/2024-07-23-how-did-skannerz-work/&quot; target=&quot;_blank&quot;&gt;hakeneen Skannerzille patenttia&lt;/a&gt;, jossa varsin tarkasti selitetään viivakoodien toimintaperiaate. Hyvä kuitenkin, että sain näin vain vahvistusta sille, että olin osunut oikeaan. &lt;/p&gt; &lt;p&gt; Hankin lisää Skannerzeja pitkin Suomea ja rikoin jossain kohdin niiden hintamarkkinat, kun tyhjensin Tori.fi:n halvoista Skannerzeista ja tilalle tuli myöhemmin vain ylihinnoiteltuja yksilöitä, jotka jo valmiiksi määrittelivät niiden jälkeen tulleiden hinnat. Jossain kohdin käsiini päätyi alkuperäisten Skannerzien ”jatko-osa” eli Commander. Olin jossain kohdin vetänyt viivan siihen, että nostalgioissani keskittyisin pelkästään lapsuudesta tuttuihin malleihin, mutta viiva siirtyi kauemmaksi. Siirtyihän se monta kertaa tämän jälkeenkin, mutta nyt se on vedetty viimein sinne, missä sen haluankin olevan (aivan takuulla). Commanderista löytyikin vain lisää haasteita, ja sen saloista oli internetin kätköissä vielä vähemmän tietoa. Selvittelin samalla tavalla sen viivakoodien toimintaperiaatteen, ja suurin onnistumisen elämykseni tähän mennessä on ollut se, että onnistuin löytämään kauan kadoksissa olleet viivakoodit Commanderin salaisille Exiles-hirviöille. &lt;/p&gt; &lt;div class=&quot;px-3 w-full flex justify-center mx-auto my-4&quot;&gt; &lt;div class=&quot;flex -mx-3 flex-wrap md:text-left text-center&quot;&gt; &lt;a href=&quot;https://uuksu.fi/img/blog/viivakoodiunelmia/commander-experiement-1.jpg&quot; class=&quot;px-3 w-full max-w-full md:mt-0 shrink-0 venobox md:w-1/2 mt-0&quot; data-gall=&quot;gallery&quot; title=&quot;Commanderin taistelun hallitseminen vaatii nopeita refleksejä. Tuumin, että mielummin tainnutan Skannerzin hitaammaksi.&quot;&gt;&lt;img alt=&quot;Commanderin taistelun hallitseminen vaatii nopeita refleksejä. Tuumin, että mielummin tainnutan Skannerzin hitaammaksi.&quot; src=&quot;https://uuksu.fi/img/blog/viivakoodiunelmia/commander-experiement-1-thumb.jpg&quot;&gt;&lt;/a&gt; &lt;a href=&quot;https://uuksu.fi/img/blog/viivakoodiunelmia/commander-experiement-2.jpg&quot; class=&quot;px-3 w-full max-w-full md:mt-0 shrink-0 venobox md:w-1/2 mt-2&quot; data-gall=&quot;gallery&quot; title=&quot;Commanderin vaihtomekaniikan tutkiminen vaati sen kytkemistä Arduinoon.&quot;&gt;&lt;img alt=&quot;Commanderin vaihtomekaniikan tutkiminen vaati sen kytkemistä Arduinoon.&quot; src=&quot;https://uuksu.fi/img/blog/viivakoodiunelmia/commander-experiement-2-thumb.jpg&quot;&gt;&lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt; Commanderissa olivat vuosikausia pysyneet salassa myös laitteen mukana tulleet hirviökortit, joista ei toistaiseksi kukaan ollut ladannut nettiin kuvia varsinaisista etupuolen hirviöistä eikä myöskään toisella puolella esitetyistä hirviöiden tiedoista. Kaivelin ja kaivelin näitä tuloksetta ja yritin epätoivoisesti pohtia, mistä kyseiset skannaukset saisin haltuuni. Jonain päivänä vastaani tuli kuitenkin YouTubessa &lt;a href=&quot;https://www.youtube.com/watch?v=6RKHikYNnaU&quot; target=&quot;_blank&quot;&gt;Tales &amp; Treasures-kanavan video&lt;/a&gt;, jossa esiteltiin huumorin keinoin Skannerzeja. Aksentissa oli jotain tuttua, ja hokasin kaverin olevan suomalainen. Otin häneen yhteyttä sen toivossa, että saisin korteista skannaukset. Kuinka ollakaan, mukavan jutustelun jälkeen ostin hänen Commanderinsa hirviökortit, ja ne vihdoin päätyivät itselleni taltioitavaksi. Sainpahan vielä kutsun osallistua Skannerz-aiheisen videon tekoon, mutta tämä kutsu on toistaiseksi vielä lunastamatta. Ehkä jonain päivänä. &lt;/p&gt; &lt;p&gt; Jossain kohdin selailtuani jälleen kerran Fandomin Skannerz Wikiä bongasin jo siinä kohdin vuosia sitten kirjoitetun &lt;a href=&quot;https://skannerz.fandom.com/wiki/User_blog:Zazi-pendragon/Centralizing_Skannerz_Fans&quot; target=&quot;_blank&quot;&gt;blogipostauksen&lt;/a&gt;, jossa muita Skannerz-faneja houkuteltiin liittymään Discordiin perustettuun yhteisöön. Hieman epäillen liityin kanavalle ja kerroin, kuka olin ja mitä olin viimeisen puolen vuoden aikana puuhaillut. Vastaanotto, jonka sain niiltä muutamilta, jotka olivat vuosia uskollisina odottelleet serverillä Skannerzin uutta tulemista, oli nöyrälle miehelle uusi ja vain kerran elämässä koettava kokemus. Alkuperäisen Skannerzin oheismateriaalina tuli sarjakuva, jossa nuori Flux-poika saa korkeammalta taholta ohjeet Skannerzin rakentamiseen ja värvää muut mukaan nappaamaan hirviöitä. Muille oli selvää, että minä olin itse lihaksi muuttunut Flux, ja vastaanotto oli sen mukainen. &lt;/p&gt; &lt;div class=&quot;px-3 w-full flex justify-center mx-auto my-4&quot;&gt; &lt;div class=&quot;flex -mx-3 flex-wrap md:text-left text-center&quot;&gt; &lt;a href=&quot;https://uuksu.fi/img/blog/viivakoodiunelmia/flux.avif&quot; class=&quot;px-3 w-full max-w-full md:mt-0 shrink-0 venobox mt-0 md:w-full&quot; data-gall=&quot;gallery&quot; title=&quot;Sanoin, emmä tiedä, mut jotain samaa meis on. Kuvassa Skannerzien sankari, Flux.&quot;&gt;&lt;img alt=&quot;Sanoin, emmä tiedä, mut jotain samaa meis on. Kuvassa Skannerzien sankari, Flux.&quot; src=&quot;https://uuksu.fi/img/blog/viivakoodiunelmia/flux-thumb.avif&quot;&gt;&lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt; Olin lopulta löytänyt kaltaiseni ja oman pienen niche-yhteisöni, enkä voisi sen suhteen olla onnellisempi. Vuosien varrella siellä pyörineistä ihmisistä on tullut tuttuja, ja parhaimmillaan keskustelu Skannerzista on päivittäistä. Puhumme menneistä ajoista kaiholla kaivaten ja nostalgisoiden, mutta katsomme myös tulevaisuuteen. Fantasioissamme on tavalla tai toisella Skannerzin toinen tuleminen, ja ajatuksia laajemmasta maailmanrakennuksesta ja jopa kokonaan uudesta laitteesta on väläytelty ilmoille. Aika näyttää, realisoituvatko suunnitelmat koskaan, vaikkakin olen kyllä jo vaivihkaa tilannut nykyaikaisen viivakoodilukijan ja ESP32-kehityslautoja. &lt;/p&gt; &lt;p&gt; Olen sittemmin jatkanut selvittelyjä erilaisten Skannerziin liittyvien polkujen varrella, ja tuntuu, että opittavaa ja dokumentoitavaa on edelleenkin. Viimeisimpänä puolivahingossa selvittelin tekoälyn kanssa muutamia puutteita Skannerz TV:nä tunnetun laitteen emuloinnissa ja onnistuin saamaan kyseisen harvinaisuuden &lt;a href=&quot;https://skannerz.isopaha.net/skannerztv/emulator/&quot; target=&quot;_blank&quot;&gt;pelattavaan muotoon&lt;/a&gt;. Ajatuksissani on siintänyt Commanderin pirun hankalien taistelumekaniikkojen selvittäminen ja esimerkiksi Skannerzin eri &lt;a href=&quot;https://github.com/uuksu/skannerz-commander-trade-reversing&quot; target=&quot;_blank&quot;&gt;kommunikaatioprotokollien takaisinmallintaminen&lt;/a&gt;. Olisihan ne hirviökuvatkin saatava Commanderista talteen alkuperäisten Skannerzien tapaan. &lt;/p&gt; &lt;p&gt; Joku kutsuisi tätä varmaan pakkomielteeksi. Minä kutsun sitä rakkaaksi harrastukseksi. Skannerz hivelee mieltä monella tapaa: sen parissa saa käyttää aivojaan, jakaa löydöksiään muille tiedonjanoisille sekä tietenkin ihan vain retroilla kadonnutta 2000-luvun alun kulttuuria. Kauan eläköön Skannerz, ja tuokoon se vielä monia onnellisia hetkiä niin minulle kuin muillekin nostalgiannälkäisille hirviönmetsästäjille. &lt;/p&gt;</description>
      <pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Mikko Uuksulainen</dc:creator>
      <guid>https://uuksu.fi/blog/viivakoodiunelmia/</guid>
    </item>
    <item>
      <title>Luottamus koetuksella</title>
      <link>https://uuksu.fi/blog/luottamus-koetuksella/</link>
      <description> &lt;p&gt; Kun viime keväänä otin Claude Coden käyttöön, tajusin nopeasti, että tässä todellakin on koodaamisen tulevaisuus ja mahdollisuudet tekoälyn kanssa ovat lähes rajattomat. Siitä lähtien olen kehittänyt lähes päivittäin niin monenmoisia tarpeeseen tulleita pieniä skriptejä kuin monimutkaisempiakin työkaluja ja jopa suuruudenhulluutta hipovia ideoita. Tekoäly on tarjonnut minulle mahdollisuuden moniin projekteihin, joihin minulla ei ole aikaisemmin yksinkertaisesti riittänyt rajallinen aika ja jo valmiiksi täytenä läikkyvä aivokapasiteetti. Tekoäly on ollut päivittäin tietenkin myös käytössä työmaailmassa, jossa tuotan sille parhaani mukaan asiakkaille arvoa. Yksinkertaisuudessaan tekoäly on muuttanut täysin sen, miten ohjelmointiin suhtaudun ja miten itseäni sitä kautta ilmaisen. &lt;/p&gt; &lt;p&gt; Kuten moni muukin, olen panostanut paljon Anthropicin tekoälymallien ja työkalujen opiskeluun. En ole tämän kanssa yksin, koska käytännössä ensimmäisenä kovan tason pelurina Anthropic sai lyötyä jalkansa oven väliin ja myytyä oikeasti ajatuksen siitä, mitä agenttipohjainen kehittäminen voi parhaimmillaan olla. Alkuun kaikki toimikin hyvin ja tulokset olivat juuri sitä, mitä luvattiin. Nyt viimeisten kuukausien aikana tästä on kuitenkin ruvennut kasvamaan suuri murheenkryyni, kun Anthropic ei pysty vastaamaan räjähdysmäisesti kasvavaan kysyntään. Käyttökokemus on ollut kaikkea muuta kuin loistelias, ja massiivinen turhautuminen on hiipinyt hiljalleen päivittäiseen tekemiseen. &lt;/p&gt; &lt;p&gt; Tekoälyn käytössä riepoo tällä hetkellä suuresti se, että käyttäessäsi tekoälyä ja ulkoistaessasi sille osan taidoistasi olet täysin jonkun kolmannen osapuolen oikkujen armoilla. Käyttäjän näkökulmasta tekoäly on täysin musta laatikko. Se, mitä laatikon sisäpuolella tapahtuu, on täysin pimennossa. Kun tekoälyn kanssa päivittäin touhuaa monenmoisten ongelmien parissa, oppii ajan kanssa huomaamaan myös sen, kun tekoäly ei toimi ja ettei se enää toimi samalla tavalla kuin aiemmin. Mitään on vaikea todistaa, mutta &lt;a href=&quot;https://reddit.com/r/ClaudeAI/comments/1s7fepn/rclaudeai_list_of_ongoing_megathreads/&quot;&gt;en suinkaan ole yksin luulojeni kanssa&lt;/a&gt;. Sen vain huomaa, että nyt kaikki ei ole kunnossa. &lt;/p&gt; &lt;p&gt; Pahimmat häiriöitä aiheuttavat tekijät kiteytyvät ongelmiin, joita kutsun &lt;em&gt;turmion kolminaisuudeksi&lt;/em&gt;. &lt;/p&gt; &lt;p&gt; Ensimmäinen tekijä on tekoälyn keinotekoinen hidastuminen. Muistan, kun tekoälyä ensimmäisiä kertoja käyttäessäni ei ollut yhtään tavatonta, että vastauksen ongelmaan kuin ongelmaan sai sekunneissa ja korkeintaan minuuteissa. Tästä tuli nopeasti lähes kiertävä vitsi: &quot;tähän olisi mennyt viikko, nyt tein sen parissa sekunnissa&quot;. Nyt kun palvelut ovat ruuhkaisempia kuin koskaan ennen, ovat parin sekunnin vastaukset hyvin harvassa. Ei ole varsin tavatonta, että Claudella kestää vastata minuutteja tai joskus jopa kymmeniä. Näen, että yksikään token ei oikeasti liiku ja Claude Coden käyttöliittymä kehtaa valehdella päin naamaa, että se mietiskelee jonkin ongelman parissa. Mistään muusta tässä ei ole kyse kuin siitä, että istut todellisuudessa jonossa odottelemassa vuoroasi. &lt;/p&gt; &lt;div class=&quot;px-3 w-full flex justify-center mx-auto my-4&quot;&gt; &lt;div class=&quot;flex -mx-3 flex-wrap md:text-left text-center&quot;&gt; &lt;a href=&quot;https://uuksu.fi/img/blog/luottamus-koetuksella/claude-code-slowness.webp&quot; class=&quot;px-3 w-full max-w-full md:mt-0 shrink-0 venobox mt-0 md:w-full&quot; data-gall=&quot;gallery&quot; title=&quot;Vaikka kyseinen tehtävä isomman puoleinen olikin, 45 minuuttia odottelua alkaa olla kohtuuttoman puolella.&quot;&gt;&lt;img alt=&quot;Vaikka kyseinen tehtävä isomman puoleinen olikin, 45 minuuttia odottelua alkaa olla kohtuuttoman puolella.&quot; src=&quot;https://uuksu.fi/img/blog/luottamus-koetuksella/claude-code-slowness-thumb.webp&quot;&gt;&lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt; Toinen tekijä ovat käyttörajat. Tekoälyn käyttö perustuu yleensä joko token-perusteiseen laskutukseen, jossa maksat jokaisesta tekoälyn sisään ottamasta ja ulos sylkemästä tokenista tietyn verran, tai laskutukseen, jossa tietyllä määrällä rahaa saat vastineeksi jonkin määrän käyttöä. Ongelmana onkin, ettei kukaan todellisuudessa tiedä, paljonko nämä rajat oikeasti kullakin palveluntarjoajalla ovat. Olen käyttänyt itse lähes alusta alkaen Clauden Pro-tilausta, johon on mielestäni kuulunut aina kohtuullinen määrä käyttöä, mikä on varsin hyvin riittänyt monenmoiseen puuhaan. Nyt Anthropic on kuitenkin &lt;a href=&quot;https://reddit.com/r/ClaudeAI/comments/1s7fcjf/claude_usage_limits_discussion_megathread_ongoing/&quot;&gt;kiristänyt vaivihkaa rajoja&lt;/a&gt;, ja sen kyllä huomaa tuntuvasti päivittäisessä käytössä. On turhauttavaa, että käyttörajat eivät riitä enää oikein mihinkään, ja juuri kun pääset hyvään vauhtiin, homma pahimmillaan jatkuu tekoälyn puolesta vasta tuntien päästä. Tuntuu, ettei rahalle saa vastinetta, kun tietää, mitä samalla summalla on aikaisemmin saanut. Nopeasti kipuavien prosenttien tuijottelu on myös melko ahdistavaa, vaikka voittaa se yhä sen, että joutuisi miettimään missä kohti tili on tyhjä, kun tokeneita palaa roppakaupalla joka sekunti. &lt;/p&gt; &lt;div class=&quot;px-3 w-full flex justify-center mx-auto my-4&quot;&gt; &lt;div class=&quot;flex -mx-3 flex-wrap md:text-left text-center&quot;&gt; &lt;a href=&quot;https://uuksu.fi/img/blog/luottamus-koetuksella/claude-code-usage-limits-1.webp&quot; class=&quot;px-3 w-full max-w-full md:mt-0 shrink-0 venobox mt-0 md:w-1/2&quot; data-gall=&quot;gallery&quot; title=&quot;Käyttörajojen paukkuminen on nykyään varsin normaalia. Tässä Team Standard -lisenssin käyttörajat täyttyivät ahkeran muutaman rivin muutoksen jälkeen (raportoidut rivimuutokset eivät pidä paikkaansa).&quot;&gt;&lt;img alt=&quot;Käyttörajojen paukkuminen on nykyään varsin normaalia. Tässä Team Standard -lisenssin käyttörajat täyttyivät ahkeran muutaman rivin muutoksen jälkeen (raportoidut rivimuutokset eivät pidä paikkaansa).&quot; src=&quot;https://uuksu.fi/img/blog/luottamus-koetuksella/claude-code-usage-limits-1-thumb.webp&quot;&gt;&lt;/a&gt; &lt;a href=&quot;https://uuksu.fi/img/blog/luottamus-koetuksella/claude-code-usage-limits-2.webp&quot; class=&quot;px-3 w-full max-w-full md:mt-0 shrink-0 venobox md:w-1/2 mt-2&quot; data-gall=&quot;gallery&quot; title=&quot;Toisena päivänä käyttöä sitten löytyikin roppakaupalla, vaikka muutos oli vielä edellistä paljon suurempi.&quot;&gt;&lt;img alt=&quot;Toisena päivänä käyttöä sitten löytyikin roppakaupalla, vaikka muutos oli vielä edellistä paljon suurempi.&quot; src=&quot;https://uuksu.fi/img/blog/luottamus-koetuksella/claude-code-usage-limits-2-thumb.webp&quot;&gt;&lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt; Kolmas tekijä on tekoälyn tyhmentyminen. Tämä on kolminaisuuden osista vaikein todistaa, mutta tekoälyä pitkään käyttäneenä sen vain oppii tunnistamaan. Vaikka tekoälyn toiminnassa jonkin verran arvuttelua onkin, on mielenkiintoista, miten joinain päivinä tekoäly ei vain kykene tuottamaan samaa tulosta kuin mihin se on aikaisemmin pystynyt. Tämä ilmenee monin tavoin, mutta esimerkiksi yksi selkeä oire on se, kun tekoäly kesken oman ajattelunsa rupeaa kyseenalaistamaan itseään tai jopa jo kerran tekemiään toteutuksia. Välillä Claude unohtaa, miten suomea puhutaan, tai se ei kykene noudattamaan selkeitä ohjeita. Välillä tekoäly tekee amatööritason virheitä, ja välillä menossa ei vain ole päätä eikä häntää. On mahdollista, että kun Anthropic ei kykene vastaamaan kasvaneeseen kysyntään, väännetään jossain automaattisesti ruuvia pienemmälle ja satunnaisesti valikoiden käyttäjille tarjoillaan kvantisoitua, halvempaa ja siten myös tyhmempää mallia. Kun tekoäly sitten käyttäytyy typerästi, on toteutuksia välillä pyydettävä uudestaan, ja tämä saa mainitut, jo valmiiksi tiukassa olevat käyttörajat hupenemaan entistä kovempaa tahtia. Kun tähän yhdistää vielä odottelun, alkaa soppa olla pitkälti valmis. &lt;/p&gt; &lt;p&gt; Kolminaisuuden tekijöille yhteistä on se, ettet voi mihinkään mainituista asioista täydellä varmuudella omalla toiminnallasi vaikuttaa. Keskustelut ovat täynnä &lt;a href=&quot;https://www.reddit.com/r/ClaudeAI/comments/1s7fcjf/comment/oibb4tp&quot;&gt;poppaskonsteja&lt;/a&gt;, joilla &lt;em&gt;ehkä saat&lt;/em&gt; enemmän irti maksamastasi tilistä, mutta ihan rehellisesti mainittujen ongelmien ei lähtökohtaisesti pitäisi olla edes tavallisen kuluttajan ratkaistavia. Tilanne, jossa työkalu joskus toimii ja joskus ei, on melkoisen järjetön, eikä ole ihme, että hallinnan tunteen puuttuminen aiheuttaa monissa itkua ja hampaidenkiristystä. &lt;/p&gt; &lt;p&gt; Turmion kolminaisuuden päälle kasaantuu myös muita pienempiä ongelmia, jotka eivät varsinaisesti edistä asiaa. Jos Anthropicia on uskominen, tuntuu Claudessa ja Claude Codessa &lt;a href=&quot;https://www.anthropic.com/engineering/april-23-postmortem&quot;&gt;olevan jatkuvasti bugeja&lt;/a&gt;, jotka omalta osaltaan aiheuttavat turmion kolminaisuuden ilmentymistä. Anthropicin tapa toimia on välillä myös varsin kummallinen, mistä esimerkkinä on vaikkapa &lt;a href=&quot;https://reddit.com/r/ClaudeCode/comments/1sldxtu/anyone_elses_weekly_limit_reset_date_has_been/&quot;&gt;käyttörajojen mielivaltainen resetointi kesken laskutuskauden&lt;/a&gt; tai heidän luottamusta murentavat kokeilunsa &lt;a href=&quot;https://simonwillison.net/2026/Apr/22/claude-code-confusion/&quot;&gt;poistaa maksavilta kuluttajilta palveluita&lt;/a&gt;. Pahin yksittäinen tekijä on myös se, että vähän väliä Clauden palvelut ovat kokonaan poissa käytöstä tai vähintään vikatilassa, etkä silloin pääse edes hyödyntämään tiliäsi. &lt;/p&gt; &lt;div class=&quot;px-3 w-full flex justify-center mx-auto my-4&quot;&gt; &lt;div class=&quot;flex -mx-3 flex-wrap md:text-left text-center&quot;&gt; &lt;a href=&quot;https://uuksu.fi/img/blog/luottamus-koetuksella/claude-outages.avif&quot; class=&quot;px-3 w-full max-w-full md:mt-0 shrink-0 venobox mt-0 md:w-full&quot; data-gall=&quot;gallery&quot; title=&quot;Tilanne Clauden statussivulta 29.4.2026. Kuluttajana haluaisin nähdä enemmänkin vihreää kuin nykyistä raitatäkkiä.&quot;&gt;&lt;img alt=&quot;Tilanne Clauden statussivulta 29.4.2026. Kuluttajana haluaisin nähdä enemmänkin vihreää kuin nykyistä raitatäkkiä.&quot; src=&quot;https://uuksu.fi/img/blog/luottamus-koetuksella/claude-outages-thumb.avif&quot;&gt;&lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt; Kuluttajan näkökulmasta paras vaihtoehto olisi äänestää lompakollaan ja jättää Anthropicin ekosysteemi taakseen. Turhauttavaa on kuitenkin se, että vioistaan huolimatta Claudet ovat tälläkin hetkellä kyvykkäimpiä malleja ja Claude Code on erinomainen työkalu. On iso kynnys hypätä kilpailijan tuotteeseen, vaikka esimerkiksi OpenAI:n GPT ja Codex kirivätkin Anthropicin jalanjäljissä ja ovat varmasti varsin varteenotettavia vaihtoehtoja monille. Ongelmana on kuitenkin se, ettei täyttä lupausta paremmasta ole, eikä ole myöskään mielekästä siirtyä käyttämään heikompaa vaihtoehtoa. Tekoälylisenssit ovat myös sen verran kalliita, että vaikka vain kokeilumielessä muutaman tilauksen pitäminen yhtä aikaa alkaa jossain kohdin kuivattaa pankkitiliä, eikä näin kokemusta muista työkaluista kunnolla pääse kertymään. &lt;/p&gt; &lt;p&gt; Palveluntarjoajalta toiselle hyppiminen ei kuitenkaan ratkaise pohjimmaista ongelmaa, että tekoäly on jonkun toisen hallussa ja se taho yksin päättää siitä, mitä sinulle tarjoillaan. Kuluttajansuoja on tässä äärettömän huono, eikä ole ihme, että tekoälyä tarjoavilta tahoilta on jo ehditty vaatia &lt;a href=&quot;https://www.ipetitions.com/petition/eu-law-ai-provider-must-confess-about-the-usage&quot;&gt;lainsäädäntöä ohjaamaan avoimuutta&lt;/a&gt;. Valonpilkahduksia on viime aikoina näkynyt idästä, kun muutamat kiinalaiset mallit ovat löytäneet markkinoille. &lt;a href=&quot;https://artificialanalysis.ai/models/open-source&quot;&gt;DeepSeek, Kimi, GLM, MiniMax ja Qwen&lt;/a&gt; ovat hyviä esimerkkejä avoimista malleista, joita pystyy jo nyt teoriassa ajamaan raskaalla raudalla täysin riippumattomasti ja joiden ulosanti alkaa hiljalleen saavuttaa lippulaivamallien tuloksia. Haluaisin uskoa tulevaisuuteen, jossa tekoäly saadaan optimoitua niin tehokkaaksi, että sitä pystytään lopulta ajamaan kotiraudalla, ja kolmannen osapuolen palvelut jäävät vaihtoehtoiseksi käyttötavaksi niille, jotka eivät halua omaa tekoälyään itse ajaa. Aika näyttää, päästäänkö tähän koskaan vai jääkö tämä vain haaveuneksi. &lt;/p&gt; &lt;p&gt; Tekoälystä on tullut osa arkea, ja uskon edelleen sen voittokulun ongelmista huolimatta jatkuvan. Clauden kanssa olemme kuitenkin lähestymässä murtumispistettä, jossa asioiden on muututtava parempaan suuntaan, tai joku muu tulee ja korjaa koko potin pöydältä. Kuluttajana haluaisin, että voisin jälleen luottaa Anthropiciin, mutta nyt ilmassa on liikaa epävarmuutta, epäilyksiä ahneuden voitosta ja suoraan sanoen arveluttavaa käytöstä kuluttajaa kohtaan. Jos ongelmat ovat aidosti siinä, että käyttäjiä on tällä hetkellä yksinkertaisesti liikaa, voisin ymmärtää Anthropicin tuskaa, jos tähän liittyisi edes ripaus aitoa avoimuutta. Anthropicilla olisi paljon annettavaa, mutta ainakin omat ajatukseni pyörivät lähinnä siinä, palaavatko asiat ennalleen vai hyppäänkö sopivalla hetkellä kilpailijan kelkkaan. Olemme ehtineet jo tottua siihen hyvään, mitä Claudella on tarjota, ja ajatus siitä, että vanhaan pitäisi palata, tuntuu lähinnä oudolta. &lt;/p&gt; &lt;p&gt; Joten näillä puheilla, arvon Anthropic, koettakaa saada homma taas luistamaan. Kiitos. &lt;/p&gt;</description>
      <pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate>
      <dc:creator>Mikko Uuksulainen</dc:creator>
      <guid>https://uuksu.fi/blog/luottamus-koetuksella/</guid>
    </item>
    <item>
      <title>Tekoälyn uhkakuvia</title>
      <link>https://uuksu.fi/blog/tekoalyn-uhkakuvia/</link>
      <description>&lt;p&gt;Tekoälykehittäminen on vielä lapsenkengissään, ja kuten mikä tahansa uusi teknologia, se herättää niin hyvin perusteltuja argumentteja kuin järjettömiä pelkoja. Samat aiheet toistuvat usein blogikirjoituksissa ja keskusteluissa. Olen nostanut esille näistä jokusen ja pohdiskellut, onko peloille todella syytä.&lt;/p&gt; &lt;h2&gt;Tekoälykehittäminen on mielenköyhää&lt;/h2&gt; &lt;p&gt;Kun ohjelmistokehittäjältä kysytään, mitä hänen työssään on mielekkäintä, usein vastauksena on, että itse koodaaminen. Koodaaminen on oma taiteenlajinsa, jossa mielen akrobatian kautta tyydyttävään lopputulokseen pääseminen aiheuttaa roppakaupalla mielihyvää. Jos koodaaminen jatkossa tarkoittaa yksinkertaisten kehotteiden kirjoittamista, tekoälyagentin valvomista ja koodin katselmointia, katoaako koodaamisesta kokonaan mielekkyys?&lt;/p&gt; &lt;p&gt;On totta, että tekoälytyökalut siirtävät koodaustyön painopistettä varsinaisesta koodin kirjoittamisesta muualle. Ohjelmistokehittäminen muuttaa muotoaan enemmän ohjelmistosuunnitteluksi, jossa koodarin on tekoälyagenttien kanssa toimiessa joskus hypättävä niin tuoteomistajan, projektipäällikön kuin arkkitehdinkin kenkiin. Muutosten etukäteen suunnittelusta tulee tärkeintä ja varsinaisen koodin tuottamisesta sivuseikka.&lt;/p&gt; &lt;p&gt;Silti pohjimmiltaan kyse on edelleen ongelmanratkaisusta, johon tarvitaan loogisesti ajattelevan kehittäjän työpanosta. Syvä ajattelu suunnittelun parissa voi johtaa yhä samanlaiseen flow-tilaan, johon kehittäjät voivat nyt päästä koodaamisen kautta. Perinpohjaisen suunnittelun kautta syntynyt tyydyttävä lopputulos voi tuottaa myös mielihyvää ja luoda työtä, josta lopulta voi olla myös ylpeä.&lt;/p&gt; &lt;h2&gt;Tekoäly tuottaa laadutonta koodia&lt;/h2&gt; &lt;p&gt;Tekoäly on työkalu siinä missä muutkin. Sillä ei ole laaduttomuuden agendaa, vaan sen arvaamattomasta luonteesta johtuen tekoälyn ulosanti on oletuksena satunnaista ja kaikkea syleilevää. Tekoälylle on annettava selvät nuotit, joiden mukaan se tuottaa koodia.&lt;/p&gt; &lt;p&gt;Tekoälyssä ja ihmiskehittäjässä on se yhtäläisyys, että kun kummallekin antaa huonot lähtökohdat kehnoilla spekseillä ja yhteisten laatuvaatimusten puutteella, kummatkin tuottavat tasapuolisen varmasti yhtä huonon lopputuloksen. Jos koodista toivotaan laadukasta, sille on asetettava laadun kriteerit ja näitä on väsymättömästi valvottava. Riippumatta työkalusta laiskuus ja välinpitämättömyys johtavat aina laaduttomuuteen.&lt;/p&gt; &lt;p&gt;Suurin vastuu tässä on siis lopulta tekoälyä hyödyntävällä kehittäjällä. Tekoälylle ei saa antaa liikaa valtaa tehdä päätöksiä, ja sen työtä on kaitsettava. Lopputulos on aina käytettävä ihmisen arvioitavana, ja tekoälyn tekemiin virheisiin ja puutteisiin on puututtava. Tämä on ennen ja aina pätenyt myös puhtaasti ihmisen kirjoittamaan koodiin, eikä mikään varsinaisesti ole muuttunut, vaikka koodia tuotetaankin nyt eri tavalla.&lt;/p&gt; &lt;h2&gt;Tekoäly vie juniorikehittäjien työt&lt;/h2&gt; &lt;p&gt;Tekoälyn on ennustettu monilla aloilla vaarantavan erityisesti uraansa aloittavien työntekijöiden töitä, eikä ohjelmistoala ole tästä poikkeus. Kun aikaisemmin uransa alkupolulla taivaltaville on annettu helpompia &quot;hanttihommia&quot;, herää nyt kysymys, miksi vaivautuisimme perehdyttämään näitä töitä oikealle ihmiselle, kun tekoäly tekee samat työt pienemmällä vaivalla, moninkertaisesti nopeammin ja halvemmalla. Pitkässä juoksussa tässä on kuitenkin kyse matalalla roikkuvien hedelmien poimimisesta.&lt;/p&gt; &lt;p&gt;Tämän päivän aloittelijat ovat huomisen ammattilaisia, mutta fakta on, että ilman uran alkupään kivikkoisia mutta opettavaisia kokemuksia saamme seuraavan sukupolven, jonka pohjatiedot ovat valmiiksi heikkoja. Kun tällaiselle työntekijälle annetaan esimerkiksi tekoälytyökalu valvottavaksi, voi olla, että kokemus ei riitä näkemään sellaisia asioita, jotka on aiemmin opittu kantapään kautta.&lt;/p&gt; &lt;p&gt;Kiusausta ulkoistaa kaikki yksinkertaisimmatkin työt tekoälylle on pyrittävä välttämään, ja kulttuuria, jossa junioreita mentoroidaan ja koulitaan tulevaisuuden varalle, on yhä vaalittava. Niin kauan kuin koodaaminen, vaikkakin tekoälyä hyödyntäen, vaatii ohjelmointikielten, loogisten ongelmien ja teknologian ymmärtämistä, perinteiselle koodarille on edelleen tarvetta. Jokaisen nyt ohjelmistoalalla toimivan vastuulla on, että emme tarkoituksella heikennä seuraavan sukupolven mahdollisuuksia toimia kehittäjinä ja samalla ammu itseämme jalkaan laaduttomuudella ja hyvien käytäntöjen unohtamisella.&lt;/p&gt; &lt;h2&gt;Tekoälystä tulee harvojen huvia&lt;/h2&gt; &lt;p&gt;Niin kauan kuin suuret kielimallit pyörivät vain isojen toimijoiden konesaleissa, niistä tullaan perimään maksua. Ohjelmistoalalla maksun pyytäminen erilaisista työkaluista ei varsinaisesti ole kovin poikkeuksellista, mutta tekoälyn kohdalla ero on siinä, että tekoälykehittäminen tulee muuttamaan jokaisen koodarin arkea ja siitä laaditaan ohjelmistoalalle vakioita, joita jokaisen kehittäjän tulisi osata hyödyntää. Vakavaraisilla yrityksillä on maksukykyä ostaa tekoälytyökaluja työntekijöilleen, mutta kuinka käy harrastelijoiden tai vasta-alkajien, jotka auttamatta jäävät jalkoihin?&lt;/p&gt; &lt;p&gt;Tekoälytyökalut voivat lisätä eriarvoisuutta, jonka kuiluna on lähinnä yksilön ja eri tahojen maksukyky. Tekoälyä tarjoaville yrityksille luovutetaan myös valtavat määrät valtaa päättää, kenellä työkaluihin on pääsy ja miten niitä käytetään. Maailmassa, jonka soisi muuttuvan entistä avoimemmaksi ja antavan jokaiselle yhtäläiset mahdollisuudet kehittyä, on vaarana, että vain harvat valitut pääsevät hyödyntämään tekoälytyökaluja.&lt;/p&gt; &lt;p&gt;Pienenä toivonpilkahduksena tällä saralla ovat avoimet tekoälymallit, joita rajoitetussa määrin voidaan ajaa myös paikallisesti. Näidenkin kanssa rajoittavana tekijänä on kuitenkin mallien kouluttaminen, joka vaatii toistaiseksi tavallisen tallaajan saavuttamattomissa olevaa laskentatehoa. Todellinen läpimurto syntyy, kun riittävän kykeneviä malleja pystytään sekä kouluttamaan että ajamaan kuluttajalaitteilla ja niiden kehitysvastuu siirtyy suurten yritysten käsistä yhteisölle.&lt;/p&gt; &lt;h2&gt;Tekoäly varastaa koodia&lt;/h2&gt; &lt;p&gt;Tekoälyn potentiaalista koodivarkautta voidaan lähestyä ainakin kahdesta eri näkökulmasta. Ensimmäinen on se, onko tekoälymallin kouluttamiseen käytetty luvatta sellaista koodia, jota sen kehittäjät eivät ole luvittaneet hyödynnettäväksi. Toinen pelko taas liittyy siihen, vuotaako tekoälyn käsittelemä koodi luvattomasti sellaisille tahoille, jotka eivät normaalisti pääsisi koodia näkemään, tallennetaanko tätä koodia ja käytetäänkö sitä taas tulevien mallien kouluttamiseen, jolloin se teoriassa voisi päätyä myös kolmannen osapuolen käyttöön.&lt;/p&gt; &lt;p&gt;Suljettujen mallien osalta harvat yritykset ovat täysin avoimia sen suhteen, millä datalla malleja on koulutettu. Lähtökohtaisesti voidaan ajatella, että mitä enemmän laadukasta dataa on tarjolla, sitä laadukkaampia malleista tulee, ja kouluttamiseen haalitaankin lähes kaikki, mitä irti saadaan. Internetissä on tarjolla valtavat määrät avointa lähdekoodia esimerkiksi GitHubin kaltaisissa palveluissa. Pitkälti tämä data on vapaata riistaa tekoälymallien kehittäjille, ja lieneekin yrityksen eettisistä näkemyksistä kiinni, noudatetaanko eri projektien lisenssejä. On kuitenkin myös hyvä huomata, että monet lisenssit eivät suoranaisesti rajoita koodin käyttöä tekoälymallien kouluttamiseen, ja myöskin ratkaisematta on se, onko avoimen koodin käyttäminen kouluttamiseen ylipäänsä sen käyttöehtoja rikkovaa toimintaa.&lt;/p&gt; &lt;p&gt;Tekoälymalleja hyödyntävien asiakkaiden osalta säännöt ovat kuitenkin jokseenkin selkeämpiä, ihan jo lain näkökulmasta sekä malleja tarjoavien yritysten omien pelkojen vuoksi hyödyntää potentiaalisesti suljettua lähdekoodia. Niin kauan kuin tekoälymallit pyörivät jonkun toisen konesalissa, on olemassa teoreettinen mahdollisuus sille, että koodia tallennetaan ja hyödynnetään johonkin muuhun, mahdollisesti myös vihamieliseen tai eettisesti kyseenalaiseen toimintaan. Terve järki on siis hyvä pitää mukana, kun tekoälylle luovutetaan kriittistä koodia, mutta täyden vainoharhaisuuden tarvetta on niin ikään syytä harkita. Jos tekoälyä tarjoavat yritykset jäävät kiinni asiakkaidensa koodin luvattomasta hyödyntämisestä, se on pitkälti kuolonisku yritykselle, ja siksi ainakin tällä hetkellä palveluntarjoajat vannovat mieluummin yksityisyyden nimeen.&lt;/p&gt; &lt;h2&gt;Tekoälyn eettisyysongelmat&lt;/h2&gt; &lt;p&gt;Ennen muinoin, kun koodatessa pärjäsi lähinnä paikallisesti ajettavilla työkaluilla, jotka olivat joko isojen tehojen kaupallisia tuotteita tai avoimen lähdekoodin projekteja, eettiset kysymykset eivät ensimmäisenä tulleet mieleen koodatessa. Tekoälyt ovat teknologiana suhteellisen uusia, ja niiden ympärillä velloo epämääräinen eettisten ongelmien utu, jonka moni lähinnä tietämättömyyttään surutta ohittaa. Vaikka tekoälyt mahdollistavatkin paljon sellaista, josta joitain vuosia sitten vain haaveiltiin, on syytä pysähtyä miettimään, minkä kustannuksella hyödyt syntyvät.&lt;/p&gt; &lt;p&gt;Tällä hetkellä tekoälymallit pyörivät konesaleissa, ja niiden ajaminen kuluttaa terawattitunneittain energiaa. Energian tarve synnyttää paineen uusille energianlähteille, ja on fakta, että vihreän siirtymän ollessa vasta vaiheessaan tämä energia ei aina ole ympäristön kannalta puhtainta. Energia on kallista varsinkin länsimaissa, mikä taas johtaa siihen, että tekoälyjä kehittävät kaupalliset tahot siirtyvät kuluttamaan energiaa niihin maihin, joissa ympäristöasioiden säännöstely on puutteellisempaa ja energiaa voidaan tuottaa esimerkiksi ympäristön ja ilmaston kannalta haastavissa hiilivoimaloissa. On tietenkin mahdollista, että tekoäly vuosien varrella kasvattaa energiantarvettaan niin paljon, että se kiihdyttää puhtaampien energialähteiden kehitystä, mutta se jää toistaiseksi nähtäväksi. Nämä huomioiden jokaisen olisi hyvä miettiä omalla kohdallaan, mitkä hassut tekoälykokeilut voisi jättää tekemättä ihan vain ympäristöä ajatellen.&lt;/p&gt; &lt;p&gt;Toinen näkökanta eettisyyteen liittyy ihmisoikeuksiin. Esimerkiksi tekoälymallien kouluttamiseen käytetty RLHF-tekniikka (&lt;em&gt;Reinforcement Learning from Human Feedback&lt;/em&gt;) altistaa köyhimpien maiden alipalkattuja ihmisiä arvioimaan tekoälyn tuottamaa, joskus jopa groteskia materiaalia. Tekoäly itsessään ei myöskään toimi aina eettisesti, sillä se nojaa oman koulutuksensa vinoumiin, jotka saattavat tehdä siitä tiettyjä osapuolia suosivan tai väärää tietoa levittävän. Aina tekoälyn kouluttamiseen käytetty materiaali ei myöskään ole välttämättä eettisesti kestävää, kun se tällä hetkellä nojaa pitkälti lainsäädännön puutteisiin. Tekoälyt vaikuttavat ihmisiin monilla tavoin, eivätkä vaikutukset ole aina pienen ihmisen näkökulmasta optimaalisimpia.&lt;/p&gt; </description>
      <pubDate>Tue, 03 Mar 2026 00:00:00 GMT</pubDate>
      <dc:creator>Mikko Uuksulainen</dc:creator>
      <guid>https://uuksu.fi/blog/tekoalyn-uhkakuvia/</guid>
    </item>
    <item>
      <title>Tekoälytekniikat</title>
      <link>https://uuksu.fi/blog/tekoalytekniikat/</link>
      <description>&lt;p&gt;ChatGPT:stä ja muista suuria kielimalleja hyödyntävistä tekoälysovelluksista on tullut arkipäivää, mutta harvalla silti tuntuu olevan käsitystä siitä, miten kekseliäillä tavoilla tekoälyä pystyy hyödyntämään erilaisissa arkipäivän ongelmissa. Yleisin käyttötapaus tuntuu olevan tekoälyn käyttäminen hakukoneena, johon se arvaamattoman luonteensa vuoksi sopii varsin huonosti. Tekoäly ei ole ihminen, mutta sitä on syytä ajatella ihmisen kaltaisena, ja näin sille voidaan osoittaa tehtäviä, joihin aikaisemmin on tarvittu oikeaa ihmistä. Olen listannut tähän kirjoitukseen joitain suosikkejani ja omassa käytössäni olevia tekniikoita.&lt;/p&gt; &lt;p&gt;Esimerkeissäni käytän OpenAI:n tekoälymalleja, mutta suuret kielimallit toimivat pitkälti samoilla periaatteilla valmistajasta huolimatta.&lt;/p&gt; &lt;p&gt;Yhtenä inspiraationa tälle kirjoitukselle toimi &lt;a href=&quot;https://www.amazon.com/dp/059371671X&quot;&gt;&lt;strong&gt;Ethan Mollickin&lt;/strong&gt; &lt;em&gt;Co-Intelligence: Living and Working with AI&lt;/em&gt;&lt;/a&gt; -kirja, joka omalta osaltaan selkeytti ajatuksiani suurista kielimalleista.&lt;/p&gt; &lt;h2&gt;Roolitus&lt;/h2&gt; &lt;p&gt;Koska tekoäly &quot;ajattelee&quot; kuten ihminen, sille voidaan antaa tehtävä omaksua erilaisia rooleja. Rooleilla voidaan ohjata tekoälyn ulosantia tiettyyn suuntaan ja jopa vahvistaa sen suoritusta sille annetuissa tehtävissä. Ilman erillistä roolitusta tekoälyn vastaukset ovat usein joko geneerisiä tai koulutuksen tuomiin vinoumiin taipuvaisia. Usein tekoälyllä on jo valmiiksi jokin esiasetettu järjestelmäkehote, jolla se on määrätty johonkin roolin, kuten vaikkapa ChatGPT:n tapauksessa, jossa tekoälyä on pyydetty toimimaan assistenttina –, mutta rooli voidaan myös tarvittaessa ylikirjoittaa ohjeistamalla tekoälyä toimimaan toisin.&lt;/p&gt; &lt;p&gt;Jos tarkoituksena olisi antaa tekoälylle läpikäytäväksi ja arvosteltavaksi erilaisia tekstejä, voisi olla paikallaan ohjata tekoäly sopivaan rooliin:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Olet ammattitaitoinen kirjallisuuden kustannustoimittaja, jonka tehtävänä on käydä läpi sinulle toimitettuja tekstejä. Ole kriittinen, mutta rohkaiseva, ja anna ehdotuksia siitä, miten sinulle annettua tekstiä voisi parantaa esimerkiksi lauserakenteiden, rytmityksen ja sanoman välittymisen suhteen. Arvostele seuraava teksti:&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;Annoin tekstiksi Wikipediasta &lt;a href=&quot;https://fi.wikipedia.org/wiki/Teko%C3%A4ly&quot;&gt;tekoäly&lt;/a&gt;-artikkelin muutaman ensimmäisen kappaleen. Tässä on osa vastauksesta, joka on sisällöltään rikkaampi kuin jos tekoälyä olisi kylmiltään pyytänyt vain &quot;arvostelemaan tekstin&quot;:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Kiitos tekstistäsi! Siinä on paljon informatiivista sisältöä ja hyvin pohdittua taustatietoa tekoälystä. Tässä on muutamia parannusehdotuksia ja ajatuksia, jotka voisivat tehdä tekstistä sujuvamman ja vaikuttavamman:&lt;/p&gt; &lt;ol&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Johdannon selkeys ja kompaktius&lt;/strong&gt;: Ensimmäinen lause on hieman monimutkainen. Harkitse lauseen tiivistämistä tai jakamista kahteen osaan. Esimerkiksi: &quot;Tekoäly (AI, engl. artificial intelligence) viittaa tietokonejärjestelmiin, jotka pystyvät suorittamaan älykkäitä toimintoja, kuten puheentunnistusta ja tietokonenäköä.&quot;&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Esimerkkien rakenne&lt;/strong&gt;: Esimerkkikohdassa on paljon tietoa, joka voisi olla helpommin omaksuttavissa, jos se jaetaan useampiin lohkoihin tai käytetään luetteloa. Tämä helpottaa lukijan hahmotusta eri sovelluskohteista.&lt;/p&gt; &lt;/li&gt; &lt;/ol&gt; &lt;p&gt;...&lt;/p&gt; &lt;/blockquote&gt; &lt;h2&gt;Haarukointi&lt;/h2&gt; &lt;p&gt;Joskus vastaan tulee tilanteita, joissa muistat esimerkiksi jonkun asian olemassaolosta, mutta et vain saa päähäsi, mikä se on tai millä nimellä sitä kutsutaan. Hakukoneita hyödyntämällä pääsee usein pitkälle, mutta joskus itse hakeminen on vaikeaa, kun et tiedä, mitä olet hakemassa! Tekoäly on hyvä löytämään yhteyksiä ja kaivamaan asioita lähes olemattomilla lähtötiedoilla.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Lapsuudessani 90-luvulla pelasimme lautapeliä, jonka pelilaudan keskellä oli noppa ja pelilautaa kierrettiin värikkäillä pelinappuloilla. Mikä peli voisi olla kyseessä?&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;Joskus tekoäly ei osu ensimmäisellä kerralla oikeaan, mutta onneksi se ei koskaan väsy arvailemaan. Sen voi ohjeistaa arvailemaan niin monta kertaa kuin on tarpeen. Edellistä lausetta voisi esimerkiksi tehostaa näin:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Anna 10 ehdotusta.&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;Tässä on osa vastauksesta, jonka kysymykseeni sain:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Tässä on kymmenen lautapeliä, jotka voisivat sopia kuvaukseesi:&lt;/p&gt; &lt;ol&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Frustration (tunnetaan myös toisinaan nimellä Trouble tai Kimble)&lt;/strong&gt; - Tässä pelissä on keskellä pelilautaa &quot;Pop-O-Matic&quot;-noppa, jota painamalla saadaan noppa &quot;heitettyä&quot;. Pelaajat kiertävät pelilautaa omilla värikkäillä pelinappuloillaan.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Sorry!&lt;/strong&gt; - Tämä on juonittelupeli, jossa pelaajat yrittävät saada kaikki nappulansa maaliin. Jotkut versiot sisältävät keskellä sijaitsevan noppamekanismin.&lt;/p&gt; &lt;/li&gt; &lt;/ol&gt; &lt;p&gt;...&lt;/p&gt; &lt;/blockquote&gt; &lt;h2&gt;Tiivistäminen&lt;/h2&gt; &lt;p&gt;Tekoäly on erityisen hyvä tiivistämään pitkiäkin tekstejä ja kaivamaan erilaisista teksteistä niiden ydinsanoman. Hienointa on, että tekstien ei tarvitse olla millään tavalla määrämuotoisia, vaan ne voivat olla missä tahansa muodossa, ja yleensä tekoäly onnistuu silti tuottamaan järkevää ulosantia. Tekoäly on myös hyvä päättelemään, mikä tekstin osista on oleellisinta, ja ohittamaan kohinan.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Tiivistä seuraavasta tekstistä kirjoituksen ydinkohdat:&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;Avasin esimerkiksi Helsingin Sanomien sivuilta satunnaisen &lt;a href=&quot;https://www.hs.fi/kulttuuri/art-2000011316802.html&quot;&gt;artikkelin&lt;/a&gt;, painoin Ctrl+A:ta kopioidakseni sivulta kaiken tekstin (mukaan lukien navigointitekstit, kommenttikentän kirjoitukset sekä muiden artikkeleiden nimet) ja annoin tämän sekasotkun tekoälylle syötteeksi. Vastaukseksi sain:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Pixarin uusin animaatioelokuva &quot;Elio&quot; teki studion historian huonoimman avaustuloksen, vaikka se sai positiivisia arvosteluja kriitikoilta. Elokuva kertoo orpopojasta, joka haaveilee avaruusolioiden sieppaamaksi tulemisesta. Pohjois-Amerikassa elokuvan avausviikonloppu tuotti vain 21 miljoonaa dollaria, ja maailmanlaajuiset tulot olivat 14 miljoonaa dollaria. Heikon tuloksen taustalla on kova kilpailu samanaikaisesti julkaistujen suurteosten kanssa. &quot;Elio&quot; saa ensi-iltansa Suomessa 27. kesäkuuta.&lt;/p&gt; &lt;/blockquote&gt; &lt;h2&gt;Pallottelu&lt;/h2&gt; &lt;p&gt;Asioiden ymmärtäminen ja ajatusten selkeyttäminen vaativat monesti dialogia toisen ihmisen kanssa. Jos toista ihmistä (tai &lt;a href=&quot;https://en.wikipedia.org/wiki/Rubber_duck_debugging&quot;&gt;kumiankkaa&lt;/a&gt;) ei ole saatavilla, tekoälyn voi valjastaa keskustelukumppaniksi, joka vahvistaa ja korjaa omaa näkemystä. Pallottelun voi aloittaa tekoälyn kanssa aiheesta kuin aiheesta, mutta on hyvä pitää mielessä, että kaikki tekoälyn tuottamat faktat eivät ole totta, minkä vuoksi myös oma kriittisyys on paikallaan.&lt;/p&gt; &lt;p&gt;Kuvitellaan, että yrität oppia uutta kotimaisesta käyttöjärjestelmästä:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Selitä, mitä tarkoittaa, että Linux on avointa lähdekoodia. Vastaa lyhyesti ja tiivistäen.&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;Tekoäly vastaa:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Linuxin avoin lähdekoodi tarkoittaa, että sen lähdekoodi on julkisesti saatavilla ja kuka tahansa voi tarkastella, muokata ja jakaa sitä. Tämä edistää yhteisökehitystä, innovaatioita ja käyttäjien mahdollisuutta mukauttaa järjestelmää omiin tarpeisiinsa.&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;Vastauksen perusteella voi heittää pallon takaisin kysymällä jatkokysymyksen:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Miten Linuxia voi mukauttaa omiin tarpeisiin?&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;Johon tekoäly taas vastaa:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Linuxia voi mukauttaa valitsemalla sopivan jakelun, asentamalla haluamansa työpöytäympäristön, lisäämällä ja poistamalla ohjelmistoja, muokkaamalla lähdekoodia, skriptaamalla automaatioita ja tarvittaessa kääntämällä oman ytimen.&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;Pallottelusta on olemassa myös käänteinen tekniikka, jossa kysyjän rooli annetaan tekoälylle ja ihmisellä säilyy vastuu vastata tekoälyn kysymyksiin:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Tiedän kaiken Linux-käyttöjärjestelmästä. Kysy minulta aiheesta kysymyksiä, joihin annan vastauksia, ja kysy näiden perusteella lisää kysymyksiä. Vastauksesi on oltava aina kysymys. Kysy vain yksi kysymys kerrallaan.&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;Tekoäly pommittaa väsymättömästi kysymyksillä:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Kuinka Linuxin ytimen kehitysprosessi eroaa suljetun lähdekoodin käyttöjärjestelmien kehityksestä?&lt;/p&gt; &lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;Mitä eroa on Linux-distribuutiolla ja Linux-ytimellä?&lt;/p&gt; &lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;Kuinka käyttöoikeudet ja omistajuus toimivat Linux-tiedostojärjestelmässä?&lt;/p&gt; &lt;/blockquote&gt; &lt;h2&gt;Ideointi&lt;/h2&gt; &lt;p&gt;Ideoinnissa käytetään hyväksi tekoälyn kykyä löytää väsymättömästi yhteyksiä myös sieltä, mistä ihminen ei niitä välttämättä itse löydä. Ideointia voidaan käyttää avuksi minkä tahansa suunnittelussa, jossa kaivataan kykyä ajatella laatikon ulkopuolelta.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Olen perustamassa ravintolaa, jonka toivoisin erottuvan kilpailijoista. Anna 10 ideaa ravintoloille, joissa yhdistyvät mielikuvitukselliset teemat ja niihin soveltuvat ruoka-annokset.&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;Tekoäly toimittaa parhaansa:&lt;/p&gt; &lt;blockquote&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Metsän Taikapöytä&lt;/strong&gt;&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Teema:&lt;/strong&gt; Mystinen metsä, jossa satuhahmot kokoontuvat.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Ruoka-annokset:&lt;/strong&gt; “Keijupöly” (yrttimaustettua risottoa), “Peikon paisti” (hidashaudutettu liha metsämarjoilla), ja “Metsätähden jälkiruoka” (juustoinen metsämansikkakakku).&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Avaruusalus&lt;/strong&gt;&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Teema:&lt;/strong&gt; Tulevaisuuden avaruusmatkailu.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Ruoka-annokset:&lt;/strong&gt; “Kuun kivipaisti” (uunissa paahdettua karitsaa), “Marsin maisemat” (punajuurikeitto), ja “Galaktinen jälkiruoka” (kiiltävä suklaakakku).&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;…&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;Ideat eivät välttämättä ole sellaisenaan käyttökelpoisia tai edes hyviä, mutta ideoita voi pyytää vaikka sata lisää, ja jossain kohtaa ihmisen oma inspiraatio ottaa vallan.&lt;/p&gt; &lt;p&gt;Ideointia voi käyttää myös esimerkiksi kirjoittajan jumista vapautumiseen:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Kirjoitan elokuvakäsikirjoitusta tulevaisuudesta saapuvasta tappajarobotista, jonka tehtävänä on eliminoida tulevaisuuden vastarintaliikkeen johtajan äiti. Kirjoitan kohtausta, jossa robotti jahtaa tulevaisuudesta saapunutta vastarintaliikkeen jäsentä ja vastarintaliikkeen johtajan äitiä moottoritiellä rekka-autolla. Anna 10 tiivistä ideaa siitä, miten sankarit voisivat pelastua robotin kynsistä.&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;Jokin näistä varmasti liikuttaa ajatusta eteenpäin:&lt;/p&gt; &lt;blockquote&gt; &lt;ol&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Yllättävä liikennetukos:&lt;/strong&gt; Sankarit ohjaavat rekka-autonsa tietyömaan tai liikennetukoksen kautta, joka hidastaa robottia, antaen heille aikaa paeta.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Vedenraja:&lt;/strong&gt; He johdattavat robotin kohti jokea tai järveä ja ajavat rekan täyttä vauhtia veteen, paeten itse uimalla. Vesi aiheuttaa robotille toimintahäiriön.&lt;/p&gt; &lt;/li&gt; &lt;/ol&gt; &lt;p&gt;...&lt;/p&gt; &lt;/blockquote&gt; </description>
      <pubDate>Wed, 29 Oct 2025 00:00:00 GMT</pubDate>
      <dc:creator>Mikko Uuksulainen</dc:creator>
      <guid>https://uuksu.fi/blog/tekoalytekniikat/</guid>
    </item>
    <item>
      <title>Claude Code kokemuksia</title>
      <link>https://uuksu.fi/blog/claude-code-kokemuksia/</link>
      <description>&lt;p&gt;Claude Code on vuoden 2025 alkupuolella julkaistu, Anthropicin eri Claude-tekoälymalleja hyödyntävä, konsolista ajettava tekoälyagenttisovellus, joka mahdollistaa interaktiivisen kehittämisen kehotteita syöttämällä ja hyödyntäen tekoälyn kykyä ajaa eri työkaluja. Claude Coden käytöstä on jo nyt kantautunut maailmalta positiivisia kokemuksia, ja sen suurimpana kulmakivenä on lähinnä Claude-mallien korkeat käyttökustannukset. Claude Coden merkittävimpiä kilpailijoita ovat samalla periaatteella toimivat OpenAI:n &lt;a href=&quot;https://github.com/openai/codex&quot;&gt;Codex&lt;/a&gt;, Googlen &lt;a href=&quot;https://github.com/google-gemini/gemini-cli&quot;&gt;Gemini CLI&lt;/a&gt;, Alibaban &lt;a href=&quot;https://github.com/QwenLM/Qwen3-Coder&quot;&gt;Qwen3-Coder&lt;/a&gt; ja yhteisön kehittämät &lt;a href=&quot;https://aider.chat/&quot;&gt;Aider&lt;/a&gt;, &lt;a href=&quot;https://block.github.io/goose/&quot;&gt;Goose&lt;/a&gt; sekä &lt;a href=&quot;https://opencode.ai/&quot;&gt;OpenCode&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Halusin itse testata Claude Coden kykyjä, ja sopiva projekti tupsahti syliin kuin itsestään, kun jouduin toteamaan lapsen pikkuautoleikkejä katsoessa, että en enää tunnista eri automerkkejä. Tuumin, että asia täytyy korjata rakentamalla niiden opiskeluun &lt;a href=&quot;https://en.wikipedia.org/wiki/Flashcard&quot;&gt;flashcard&lt;/a&gt;-sovellus.&lt;/p&gt; &lt;p&gt;Käynnistin Claude Coden Pro-tilauksen hintaan 22,59 € ja ryhdyin lapioimaan.&lt;/p&gt; &lt;h2&gt;Projektin lähtöpiste&lt;/h2&gt; &lt;p&gt;Suunnittelin ratkaisuni selaimessa ajettavaksi mobiililähtöiseksi sovellukseksi, joka lukisi suunnittelemassani formaatissa annettavia tiedostoja. Tiedostot olisivat zip-paketteja, jotka sisältäisivät json-tiedostossa tekstimuotoisia kysymyksiä ja vastauksia sekä valinnaisesti näihin liittyviä kuvia. Sovellus lukisi tiedoston selaimeen muistiin, jossa se myös säilyisi siihen asti, kunnes se erikseen poistettaisiin.&lt;/p&gt; &lt;p&gt;Aloitin projektin luomalla käsin Parcel-projektin, johon konfiguroin TypeScriptin, ESLintin ja Prettierin. Lisäsin myös package.json-tiedostoon komennot projektin ajamiseksi. Loin &lt;code&gt;index.html&lt;/code&gt;-tiedoston luurangon ja sen kaveriksi &lt;code&gt;App.ts&lt;/code&gt;-tiedoston TypeScriptiä varten. Tämän jälkeen käynnistin komentoriviltä Claude Coden projektin juuressa.&lt;/p&gt; &lt;p&gt;Claude Codeen on sisäänrakennettu erilaisia &quot;slash-komentoja&quot;, joita sen syötelaatikkoon voidaan ajaa kehotteiden lisäksi. Ajamalla &lt;code&gt;/init&lt;/code&gt; Claude Code käy läpi koko kansiorakenteen ja kirjoittaa &lt;code&gt;CLAUDE.md&lt;/code&gt;-tiedostoon tiiviin näkemyksen projektin sisällöstä. Kyseinen tiedosto ajetaan tekoälyn kontekstiin aina Claude Coden käynnistyessä, ja se onkin oiva paikka säilöä esimerkiksi projektin tyylisääntöjä ja käytänteitä, joita tekoälyn tulee generoinnissaan huomioida. Projektin alussa ajettuna se lähinnä toteaa, että projektissa ei ole mitään sisältöä, mutta samalla se oppii, miten projektia kuuluisi ajaa. Tätä tiedostoa on syytä päivittää myös matkan varrella koodipohjan muuttuessa ajamalla komento uudestaan.&lt;/p&gt; &lt;h2&gt;Kokeellinen työnkulku&lt;/h2&gt; &lt;p&gt;Tapoja tekoälyn kanssa työskentelyyn on monia, mutta päätin käyttää mallia, jossa tekoälylle annetaan etukäteen mahdollisimman paljon tietoa vaatimuksista ja yksityiskohdista. Tämä poikkeaa vibe-koodaus-mallista, jossa sovellusta tai ominaisuuksia lähdetään kehittämään pala kerrallaan yksinkertaisia kehotteita (tai jopa yhden lauseen kehotetta) syöttämällä. Omien kokeilujeni pohjalta etukäteen speksaaminen on aina johtanut parempaan lopputulokseen niin tekoälyn kuin ihmiskehittäjänkin kanssa.&lt;/p&gt; &lt;p&gt;Ajatuksenani oli, että tekoälylle annettavat tehtävät säilöttäisiin tekstitiedostoina projektin juureen &lt;code&gt;ai/tasks&lt;/code&gt;-kansiorakenteeseen, jotta ne olisivat yhdessä paikassa tallessa ja niihin olisi tarvittaessa helppo palata uudestaan.&lt;/p&gt; &lt;p&gt;Loin käsin &lt;code&gt;ai/tasks&lt;/code&gt;-kansion, jonne loin ensimmäisen &lt;code&gt;task-1-basic-functionality.md&lt;/code&gt;-tiedoston. Tähän tiedostoon tein oikeaa käyttötapausta mukaillen vaatimusmäärittelyn, johon annoin listan erilaisia vaatimuksia ja yksityiskohtia, joita tekoälyn tulisi tavoitella. Pyrin olemaan mahdollisimman tarkka ja huomioimaan sellaisia asioita, joita itse näin tärkeinä kehittämisen kannalta. Speksasin esimerkiksi, minkälaisia asioita haluaisin käyttäjälle näytettävän, miten sovelluksen eri tilat toimivat ja millaisen halusin tiedostoformaatin olevan.&lt;/p&gt; &lt;pre class=&quot;codebox&quot;&gt;&lt;code&gt;&lt;span class=&quot;hljs-section&quot;&gt;# Task 1: Basic functionality&lt;/span&gt;

Purpose of this task is to create a working application filling basic functional requirements.

The application is a simple web application with a purpose of loading and showing flashcards for learning different things.
It will use a custom zip and json based file format for loading the flashcards and stores the cards to browsers storage.

The application supports two configurable modes: &lt;span class=&quot;hljs-code&quot;&gt;`set`&lt;/span&gt; and &lt;span class=&quot;hljs-code&quot;&gt;`forever`&lt;/span&gt;. With &#39;set&#39; mode the application goes through a one time randomized deck of flashcards and then return back to start. With &#39;forever&#39; mode the deck is randomized after every card and it keeps on going until user quits.

&lt;span class=&quot;hljs-section&quot;&gt;## Requirements and details&lt;/span&gt;

&lt;span class=&quot;hljs-bullet&quot;&gt;-&lt;/span&gt; Use TypeScript, there is already &lt;span class=&quot;hljs-code&quot;&gt;`App.ts`&lt;/span&gt; for the code.
&lt;span class=&quot;hljs-bullet&quot;&gt;-&lt;/span&gt; Try to use as vanilla JavaScript as possible, try not to import depedencies unless there is no other way
&lt;span class=&quot;hljs-bullet&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;hljs-code&quot;&gt;`index.html`&lt;/span&gt; should contain a centered, mobile first responsive layout
&lt;span class=&quot;hljs-bullet&quot;&gt;-&lt;/span&gt; When deck file is first time loaded, it&#39;s &lt;span class=&quot;hljs-code&quot;&gt;`deck.json`&lt;/span&gt; file is read to store a name of the deck to localStorage and reference the zip file stored in IndexedDB
&lt;span class=&quot;hljs-bullet&quot;&gt;-&lt;/span&gt; When game starts and the deck is selected, the file is extracted to memory, it&#39;s metadata is read from &lt;span class=&quot;hljs-code&quot;&gt;`deck.json`&lt;/span&gt; and images are preloaded to be used when they&#39;re used by the application
&lt;span class=&quot;hljs-bullet&quot;&gt;-&lt;/span&gt; Card images can be in any format supported by the browser and in any size. Scale them so that they fit to width of the screen.
&lt;span class=&quot;hljs-bullet&quot;&gt;-&lt;/span&gt; Application never stores anything server side, it&#39;s purely client side browser software.&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;Verrattuna perinteiseen koodaamiseen huomasin, että ajattelin kyllä täsmälleen samoja asioita, mutta ajattelin niitä vain tarkemmin etukäteen. Oppimani koodaustapa on ollut sellainen, että kirjoitan ja iteroin koodia ilman suurempia etukäteissuunnitelmia, mutta nyt nämä vaiheet oli suunniteltava ennen varsinaisen koodaustyön aloittamista. Tavallaan tämä tuntui varsin luonnolliselta tavalta toimia, ja ainakin äkkiseltään erilaisia vaatimuksia ei ollut vaikea keksiä, kun ne kuitenkin kokemuksen kautta olivat peruskauraa. Suunnitteluun tuskin kului tuntia kauempaa, mutta prosessia olisi voinut jouduttaa tätäkin haipakammaksi käyttämällä tekoälyä ideoinnin pallotteluun tai projektin myöhemmässä vaiheessa kopioimalla edellisen taltioidun tehtävän listauksen pohjaksi.&lt;/p&gt; &lt;p&gt;Lisämausteena loin muutaman oman slash-komennon luomalla &lt;code&gt;.claude/commands&lt;/code&gt;-kansioon tiedostot &lt;code&gt;task.md&lt;/code&gt;, &lt;code&gt;task-update.md&lt;/code&gt; ja &lt;code&gt;task-document.md&lt;/code&gt;. Command-tiedostojen sisällöt ovat käytännössä kehotteita ja argumentteja, jotka pyydettäessä syötetään agentille. Omat komentoni tein tukemaan työnkulkua luomalla pikapolut uuden tehtävän aloittamiselle, tehdyn työn päivittämiselle (jos olen muuttanut tehtävänkuvausta toteutuksen jälkeen) sekä työn dokumentoimiselle takaisin vaatimusmäärittelyyn (jos olen sitä iteroinut lennosta kehotteiden kautta).&lt;/p&gt; &lt;h2&gt;Ensimmäisen tehtävän suoritus&lt;/h2&gt; &lt;p&gt;Käskin Claude Codea lukemaan kirjoittamani vaatimusmäärittelyn ja aloittamaan toteutuksen, minkä jälkeen se loi itselleen erillisen TODO-listan ja lähti toteuttamaan pyydettyä tehtävää. Suunnitelmani mukaisesti se toteutti pyytämäni yksityiskohdat ja vaatimukset pala kerrallaan.&lt;/p&gt; &lt;p&gt;Muutaman kerran suorituksen aikana Claude Code pyysi lupaa eri työkalujen ajamiseen, mutta enimmäkseen se eteni ilman puuttumista suunnitelmansa mukaisesti. Kyselemisen tarvetta pystyisi vähentämään listaamalla etukäteen Claude Coden asetustiedostoon luvituksia erilaisille työkaluille. Hyviä versiohallintakäytänteitä noudattamalla tekoälylle voi antaa luvan moniin työkaluihin, lähinnä poisto-operaatioiden kanssa kannattaa olla tarkkana ja oikeasti varmistaa, mitä tiedostoja ollaan hävittämässä.&lt;/p&gt; &lt;p&gt;Suoritus kaikkiensa kesti alle kymmenen minuuttia, ja ulkoista työkalua käyttämällä sain selville, että tokeneita oli kulunut noin dollarin edestä, vaikka Pro-lisenssiä käyttämällä tällä ei niin merkitystä ollutkaan. Pro-lisenssiin kuuluu tietty määrä käyttöä kuukaudessa, viikossa ja viiden tunnin sessioissa, mutta ainakaan tämän projektin parissa nämä rajat eivät vielä tulleet vastaan. Pro-lisenssillä ei myöskään ole pääsyä parhaimpaan (ja kalleimpaan) Opus 4 -malliin, mutta varsin hyvään lopputulokseen pääsee myös kakkossijan Sonnet 4 -mallilla.&lt;/p&gt; &lt;h2&gt;Katselmointi ja korjaukset&lt;/h2&gt; &lt;p&gt;Lopputuloksena tekoäly toimitti täysin toimivan sovelluksen, joka vastasi käytännössä yksi yhteen sitä, mitä olin vaatimusmäärittelyyn kirjannut. Kun en antanut tarkkoja määrityksiä ulkoasun suhteen, tekoäly oli ottanut taiteellisia vapauksia, mutta mielestäni sovellus oli siltäkin osin varsin kelvollinen ja uskoakseni helposti kustomoitavissa tarpeen vaatiessa.&lt;/p&gt; &lt;p&gt;Silmäilin tekoälyn tuotoksen läpi, ja mielestäni se oli monilta osin varsin kelvollista koodia, sellaista jota itsekin olisin kirjoittanut, mutta jonka kirjoittamiseen käsin olisi varmasti kulunut paljon enemmän aikaa. En edes yrittänyt sisäistää jokaista tekoälyn tuottamaa riviä, koska en nähnyt sitä projektin luonteen huomioiden tarpeellisena. Jos kyseessä olisi ollut oikeaa tuotantokoodia, olisin varmasti katselmoinut ja sisäistänyt koodia tarkemmin. Tottuneena siihen, että perinteisesti tuotetusta koodista sisäistää jokaisen itse kirjoitetun rivin, tämä herätti jossain määrin levottomuutta, mutta toisaalta luottoni tekoälyyn oli korkealla, varsinkin kun lopputulos oli pitkälti sitä, mitä pyysinkin.&lt;/p&gt; &lt;p&gt;Kun en määritellyt tarkemmin koodin tyyliä, se oli esimerkiksi nimennyt muuttujia luovasti lyhentäen, mutta tämäkin olisi korjaantunut kirjaamalla tekoälylle tarkemmat tyylisäännöt &lt;code&gt;CLAUDE.md&lt;/code&gt;-tiedostoon. Ei ole vaikea kuvitella, että esimerkiksi tiimi- tai yritystasolla tyyli- ja arkkitehtuuriohjeistuksia säilöttäisiin versionhallintaan ja jakaisi eri projektien välillä, jotta pyörää ei tarvitsisi keksiä joka projektissa ja sovelluksessa uudestaan. Tajusin, että tekoäly oli tarttunut vähän turhan hanakasti siihen, että kaikki TypeScript-koodi tulisi kirjoittaa yhteen ja samaan tiedostoon, mutta varmasti tämänkin olisi saanut korjattua ohjeistamalla sen pilkkomaan koodia tarpeen mukaan omiin moduuleihin.&lt;/p&gt; &lt;p&gt;Tajusin nopeasti, että joltain osin vaatimusmäärittelyni oli puutteellinen tai liian lavea. Tästä hyvänä esimerkkinä oli se, että kun en määritellyt tiedostoformaattiani kovin tarkasti, tekoäly oli jostain syystä olettanut, että sen zip-tiedostot ovat pakkaamattomassa (Store) muodossa. Korjasin tämän muutamalla kehotteella ja dokumentoin muutoksen takaisin määrittelyyn käyttämällä luomaani &lt;code&gt;/task-document&lt;/code&gt;-komentoa. Lisäsin samalla tuen myös tar.gz-tiedostoille.&lt;/p&gt; &lt;p&gt;Iteroin toteutusta lennosta antamalla lyhyempiä kehotteita. Enimmäkseen tekoäly toimitti tässäkin juuri sitä, mitä pyysin, mutta muutaman UI-korjauksen osalta se tuntui jäävän välillä jumiin, ja korjausta sai pyytämällä pyytää. Koetin ohjata muutoksia oikeaan suuntaan antamalla syötteenä kuvia sekä käymällä itse läpi koodia kipukohtien ympäriltä.&lt;/p&gt; &lt;p&gt;Halutunlaisesti tekoäly dokumentoi muutokset kirjoittamaani vaatimusmäärittelyyn, mutta ilman tarkempia ohjeita se otti tässäkin tyylillisiä vapauksia. Tämän johdosta vaatimusmäärittelystä meinasi tulla eri toteutustapojen sillisalaattia. Hyvänä nyrkkisääntönä tässäkin on, että aina kun tekoälyä pyytää tuottamaan jotain sisältöä, olisi hyvä olla tarkka sen suhteen, miltä lopputuloksen haluaa näyttävän.&lt;/p&gt; &lt;h2&gt;Jälkipyykki&lt;/h2&gt; &lt;p&gt;Esimerkkini oli varsin yksinkertainen ja suoraviivainen, mutta toisaalta siinä oli lisähaastetta esimerkiksi määrittelemäni tiedostoformaatin suhteen. Näytettäväksi jää, miten tarkasti tekoäly onnistuisi haastavimmissa tehtävissä ja oikeissa projekteissa, jotka jo vuosia ovat saaneet rakkautta eri ihmiskehittäjiltä ja joiden ymmärtäminen lähtökohtaisesti vaatii kokeneen kehittäjän koodinlukutaitoa. Pitkälti tässä on kuitenkin kyse siitä, miten pieniksi atomeiksi tehtäviä pystyy itse suunnittelijana pilkkomaan ja näin ohjeistamaan tekoälyä tekemään oikeita asioita.&lt;/p&gt; &lt;p&gt;Anthropicin Claude-mallit ovat varsin suorituskykyisiä, ja niiden työskentelyä on välillä taianomaista seurata. Muutaman satunnaisen kerran jouduin puuttumaan tekoälyn puuhiin, kun se esimerkiksi jäi jumiin yrittäessään ajaa sovellusta taustaprosessina ja imi ikuisuudelta tuntuvan ajan sovelluksen tuottamaa logitusta. Nämä ovat esimerkkejä ongelmista, jotka ajan kanssa saattavat korjaantua itsestään mallien ja agenttisoftien parantuessa. Mielessä kävi myös, että esimerkiksi projektin suoritusta voisi ohjata tehokkaammin vaikkapa luomalla &lt;a href=&quot;https://modelcontextprotocol.io/&quot;&gt;MCP-palvelun&lt;/a&gt;, jonka kautta ajettavan sovelluksen käskyttäminen sujuisi tekoälyltä vakaammin.&lt;/p&gt; &lt;p&gt;Tekoälytyökaluille ei ole päässyt tähän mennessä vakiintumaan käytänteitä, ja oma kokeellinen työnkulkuni oli vain yksi arvaus siitä, miten työkalujen kanssa kannattaisi menetellä. Mielestäni yksi isoimpia dilemmoja tällä hetkellä on se, kuinka paljon tekoälyä hyödynnetään koodaamisessa. Äkkiseltään vaikuttaisi houkuttelevalta laittaa kaikki peliin ja vaihtaa tekemisen malli kokonaan kehotteiden pyörittelyksi, mutta tähän liittyy joitain ongelmia. Välillä on nopeampaa, että kehittäjä itse tekee käsin joitain muutoksia, mutta toisaalta tämä vaatisi tekoälyn tuottaman, nopeasti muuttuvan koodin jatkuvaa sisäistämistä. Jonkinlainen hybridimalli tuntuu toistaiseksi parhaalta ratkaisulta, ja tekoäly tuntuu taipuvan siihen varsin hyvin.&lt;/p&gt; &lt;p&gt;Saamani kokemus Claude Codesta vahvisti näkemystäni siitä, että tekoälytyökalut ovat tulleet jäädäkseen. Aika ja kokemukset oikeiden projektien parissa näyttävät, miten niitä lopulta tullaan käyttämään. En näe tätä uutta koodaustapaa uhkana, vaan mahdollisuutena kehittää itseään myös suunnittelijana ja nopeuttaa työskentelyä raa&#39;an koodaamisen parissa, joka väistämättä on kehittämisen työläin osuus. Pidän myös jännittävänä ajatuksena, että tekoälyt saattavat pakottaa kehittäjiä tietyn laadun tavoitteluun, kun vaatimusmäärittelyiden ja testaamisen kanssa saa olla tarkempi. Tekoälyissä on paljon potentiaalia, jota jokaisen kehittäjän on suositeltavaa opetella hyödyntämään. Omasta työkalupakistani tekoälyt saavat tästäkin eteenpäin pysyvän paikan.&lt;/p&gt; &lt;hr&gt; &lt;p&gt;Jatkoin kirjoituksen laatimisen jälkeen kokeiluja saman projektin äärellä lisäämällä tekoälylle uusia tehtäviä. Löydät koodit omasta &lt;a href=&quot;https://git.isopaha.net/uuksu/flashcards&quot;&gt;Forgejostani&lt;/a&gt; ja lopputuloksen &lt;a href=&quot;https://flashcards.isopaha.net/&quot;&gt;täältä&lt;/a&gt;. Jos haluat seurata jalanjäljissäni ja kokeilla itse, miten toteutus onnistuisi valitsemallasi agentilla, pyyhi tyhjäksi &lt;code&gt;src&lt;/code&gt;-kansion sisältö ja pyydä tekoälyä aloittamaan työskentely vaatimusmäärittelyni mukaisesti.&lt;/p&gt; </description>
      <pubDate>Thu, 07 Aug 2025 00:00:00 GMT</pubDate>
      <dc:creator>Mikko Uuksulainen</dc:creator>
      <guid>https://uuksu.fi/blog/claude-code-kokemuksia/</guid>
    </item>
    <item>
      <title>Tietsikkamiehen elämää</title>
      <link>https://uuksu.fi/blog/tietsikkamiehen-elamaa/</link>
      <description>&lt;p&gt;Usein riittää, että vain hakeudun tietokoneen äärelle. Aloitan siivoilemalla kotikansiotani. Järjestän tiedostoja oikeille paikoilleen ja poistan turhia. Selailen läpi säilömiäni muistoja vuosien takaa ja käyn läpi vanhoja ja keskeneräisiä projekteja.&lt;/p&gt; &lt;p&gt;Ajatukseni hiipivät käyttöjärjestelmääni, jota hoivaan ja hoidan, jotta se pysyisi iskussa. Varmistan, että logit eivät ole punaisella ja softat ovat ajan tasalla. Teen pientä kustomointia ja huoltotöitä siellä täällä ja teen näin ympäristöstäni mielekkäämmän. Asennan ja kokeilen uusia työkaluja ja tehostan käyttökokemustani.&lt;/p&gt; &lt;p&gt;Kun en löydä tarvitsemiani työkaluja, on äkkiä auki myös kehitysympäristö, jossa kirjoittelen skriptin- tai softanpätkän itselleni. Teen kokeiluja erilaisilla ohjelmointikielillä ja alustoilla ja pohdiskelen, mikä itselleni olisi mielekkäintä. Tallennan työni versiohallintaan, jonne olen arkistoinut lukemattomia pieniä ja suuria projekteja.&lt;/p&gt; &lt;p&gt;Tarkastan kotipalvelimeltani projektieni varmuuskopiot ja totean ne toimiviksi. Päätän ottaa käyttöön palvelimella uuden sovelluksen rakentamalla sille infrakonfiguraatiot. Käyttöönottoa nopeututtavat tekoälytyökalut, joita olen vertaillut ja ottanut käyttöön.&lt;/p&gt; &lt;p&gt;Tämä herättää halun generoida tekoälytaidetta. Kokeilen erilaisia malleja ja taidetyylejä sekä tutkin, minkälaisilla kehotteilla saisin aikaan haluamani lopputuloksen. Otan inspiraatiota muiden tekeleistä ja videoista. Kuvat saavat mielikuvitukseni hyrräämään ja laitan ylös muutaman uuden idean.&lt;/p&gt; &lt;p&gt;Videoiden kautta päädyn tutkimaan jotain uutta teknologiaa. Kaivelen foorumeita ja pitkiä keskusteluketjuja. Siirryn luontevasti aasinsiltaa pitkin muihin aiheisiin ja tutkin niitäkin. Jos hurjaksi heittäydyn, saatan kokeilla jotain käytännössäkin.&lt;/p&gt; &lt;p&gt;Uudet ideat synnyttävät jostain kaipuun nostalgiaan. Asentelen PC-emulaattorille lapsuudestani tutun käyttöjärjestelmän ja joitain pelejä. Aikani pelattuani koetan tutkia, miten nuo pelit toimivat. Takaisin mallinnan ja ihmettelen, miten helposti lapsuudessa mystisenä koetut salaisuudet nykyään aukeavat.&lt;/p&gt; &lt;p&gt;Nostalgia herättää pelon katoavasta datasta ja tiedosta, ja päätän aloittaa projektin vanhojen, mutta itselleni tärkeiden nettisivujen pelastamiseksi. Tutkin hyviä käytäntöjä ja maailmalla käytettyjä työkaluja. Perustan uuden virtuaalikoneen pilveen, jossa ajan pelastusprojektiani.&lt;/p&gt; &lt;p&gt;Pääni kuitenkin pursuaa uutta oppia ja ideoita, joten päätän kirjailla niitä ylös. Kasvatan omaa tietopankkiani ja laajennan näkemystäni. Tekstin tueksi kaivan eri lähteitä ja piirrän kuvia. Muutaman idean pohjalta päätän aloittaa niiden hahmottelun myös blogimuotoon.&lt;/p&gt; &lt;p&gt;Jatkan vaeltelua digitaalisessa puutarhassani. Muovaan ja vaalin kallisarvoisintani. Istutan ja kitken ja pidän maaperän kosteana ja ravinteikkaana, jotta luovuuteni kukoistaa ja tuottaa hedelmää. Joskus raivaan ja teen tilaa uudelle, mutta aina puutarhani kukkii ikivihreänä vuodesta toiseen. Välillä vain pysähdyn ja katselen luomaani kauneutta.&lt;/p&gt; &lt;p&gt;Kaiken tämän teen flow-tilassa, jossa ajatukseni soljuvat asiasta toiseen ja siitä kolmanteen. Teen juuri sitä, mitä haluan ja mistä tulen iloiseksi. Matkalla on sekä onnistumisen elämyksiä että karvaita pettymyksiä, mutta jokainen käyttämäni hetki vie itseäni eteenpäin. Kasvan joka kerralla isommaksi koodarina ja hakkerina.&lt;/p&gt; &lt;p&gt;Ennen kaikkea tietokone on minulle rakkain harrastukseni. Tietokone on aivojeni jatke. Tietokone on inspiraationi lähde. Tietokone on valtaväylä kaikkeen kiinnostavaan ja jännittävään. Elätän tietokoneella myös perheeni, mutta sen mahdollistaa vain ja ainoastaan se, että olen itse raivannut valitsemani polun.&lt;/p&gt; &lt;p&gt;Rakastan tietokoneita. Elän tietokoneista. Se on tietsikkamiehen elämää ja se tekee minut onnelliseksi.&lt;/p&gt; </description>
      <pubDate>Wed, 23 Jul 2025 00:00:00 GMT</pubDate>
      <dc:creator>Mikko Uuksulainen</dc:creator>
      <guid>https://uuksu.fi/blog/tietsikkamiehen-elamaa/</guid>
    </item>
    <item>
      <title>Copilot kokemuksia</title>
      <link>https://uuksu.fi/blog/copilot-kokemuksia/</link>
      <description>&lt;h2&gt;Hehkutus tekoälyn ympärillä on ollut suurta ja täynnä odotuksia&lt;/h2&gt; &lt;p&gt;Teoriassa ohjelmointiin ei tarvita muuta kuin tekstieditori ja valitsemansa kielen kehitystyökalut. Käytännössä meitä koodareita on kuitenkin vuosien kuluessa hemmoteltu elämää helpottavilla työkaluilla, joista mainittakoon esimerkkinä erilaisia työkaluja pursuavat IDEt, koodiehdotuksia tarjoilevat kielipalvelut (esim. Intellisense) ja koodia jo ennen ajoa korjaavat staattiset analyysityökalut (esim. SonarQube). Kuin tyhjästä koodia taikovat tekoälyavusteiset työkalut ovatkin varsin luonnollinen jatke tälle kehitykselle.&lt;/p&gt; &lt;p&gt;Hehkutus tekoälyn ympärillä on ollut suurta ja myös täynnä odotuksia. Sama on pätenyt koodaamisen tekoälyavustimiin, joiden on povattu vähintään muuttavan koodaamisen koko luonteen tai pahimmissa skenaarioissa hävittävän koko ohjelmistokehittäjän ammatin. Toistaiseksi kuitenkaan mikään ei ole järisyttävästi muuttunut, mutta pysyvän jäljen tekoäly on jo nyt koodarin työtapoihin jättänyt.&lt;/p&gt; &lt;p&gt;Tällä hetkellä tekoälyavustimet sekä kirjoittavat koodia että toimivat tarvittaessa työkaverin korvikkeena, toisina silminä ja kumiankkana. Kuten muidenkin työkalujen kanssa, ihan kaikkea täyspäiväinen koodari ei ehdi testaamaan, ja omat kokemukseni perustuvatkin lähinnä Microsoftin tarjoamaan GitHub Copilotiin.&lt;/p&gt; &lt;p&gt;Olen itse elänyt tekoälyavusteisessa maailmassa keväästä lähtien ja käyttänyt Copilotia kaverina asiakasprojekteissa ja muissa pienemmissä kehitystöissä. Siirryin tuolloin myös jonottamaan Copilotin seuraavaa X-iteraatiota, ja sen sain käyttöön syksyn tullessa. Kokemusta hyödyistä ja haasteista on siis ehtinyt jo jonkin verran kertymään.&lt;/p&gt; &lt;h2&gt;Hallusinaatioiden harmitusta&lt;/h2&gt; &lt;p&gt;Käytän Copilotia lähinnä koodin kirjoittamisen apuna. Kun kehitän ohjelmistoa, Copilot ehdottaa Visual Studiossa koodinpätkiä, joita se uskoo minun tarvitsevan. Valitettavasti ehdotukset ovat toistuvasti niin pahasti pielessä, että työtavakseni on muodostunut seuraava: kirjoita koodia, hyväksy Copilotin ehdotus, totea ehdotuksen olevan täysin pielessä, pyyhi se pois ja kirjoita tämän jälkeen koodi siten kuin halusin. Lähinnä ehdotukset häiritsevät näin omaa ajatusprosessia, eivätkä ne tuo mitään lisää koodin kirjoittamisen tehokkuuteen.&lt;/p&gt; &lt;p&gt;Suuriin kielimalleihin pohjautuvat tekoälyt kärsivät valitettavan paljon hallusinoinnista eli siitä, että ne esittävät väärää tietoa faktana. Koodin osalta hallusinaatio esiintyy niin, että tekoäly esittää suurella itsevarmuudella koodiehdotuksia, joissa logiikka sinänsä voi pitää paikkansa, mutta koodissa esiintyy esimerkiksi muuttujien tai tyyppien nimiä, joita ei ole olemassakaan. Tähän ongelmaan törmään valitettavasti jatkuvasti myös omassa kehitystyössäni.&lt;/p&gt; &lt;p&gt;Luonnollisin selitys hallusinoimiselle on, että tekoälymalli ei tunne tarpeeksi hyvin aihetta, josta siltä pyydetään generoimaan vastauksia. Copilot on koulutettu hyödyntäen GitHubin avoimen lähdekoodin projekteja, joista häviävän pieni määrä on kirjoitettu C#:lla. Toisekseen generoidusta koodista tulee juuri niin laadukasta kuin se aineisto, jolla malli on koulutettu, ja laatu esimerkiksi ihmisten harrasteprojekteissa voi olla vaihtelevaa. On mahdollista, että Copilot toimii luotettavammin muiden ohjelmointikielten kanssa, mutta tästä itselläni ei ole tarpeeksi kattavaa kokemusta.&lt;/p&gt; &lt;h2&gt;Vau-hetkiä&lt;/h2&gt; &lt;p&gt;Välillä Copilot kuitenkin osuu oikeaan, ja silloin tekoälyn todellinen potentiaali tulee esille piilostaan. Copilot esimerkiksi generoi luotettavasti listoja, oppii nopeasti toistuvat asiat, jotka refaktoroidessa saattavat nousta esiin, sekä välillä täydentää ajatusta nopeammin, esimerkiksi kommentteja.&lt;/p&gt; &lt;p&gt;Parhaimmillaan tekoäly toimii aivojen jatkeena silloin, kun se auttaa muistamaan asioita, joita itselle ei välttämättä heti tule mieleen. Yksinkertaisimmillaan tämä vähentää googlaamisen tarvetta, kun tekoäly täydentää pikavauhtia jotain, mitä olisi pitänyt lähteä itse kaivamaan dokumentaatioista. Olen kokeillut tekoälyn käyttöä myös sellaisten ohjelmointikielten kanssa, joiden syntaksia en muista ulkoa, ja huomannut, miten kätevästi tekoäly täydentää aukon, jossa tiedän haluavani tietynlaisen toiminnallisuuden, mutta en tiedä tarkasti, miten se tulisi kirjoittaa. Oppimisen työkaluna tekoäly siis toimii loistavasti.&lt;/p&gt; &lt;p&gt;Ja onhan se myönnettävä, miten siistiä se kuitenkin on, kun muutaman sanan vihjeellä tekoäly generoi kokonaisia metodeja tai luokkia ja koodia kirjaimellisesti ilmestyy rivikaupalla silmien eteen. Näissä tilanteissa ajatukset välillä kääntyvät siihen, että tarvitaanko tässä koodaria kohta ollenkaan?&lt;/p&gt; &lt;h2&gt;Kohti tulevaisuutta ja sen yli&lt;/h2&gt; &lt;p&gt;Tekoälytyökalut jakavat vahvasti mielipiteitä, ja käyn ajatuksissani itsekin jakolinjojen molemmilla puolilla. Toisille AI on kaivattu supervoima, jonka avulla koodia on mahdollista kehittää tehokkaammin ja nopeammin, ja toisille taas lähinnä kummastuksen aihe siitä, että mitä ihmeellistä tässä nyt sitten olikaan. Ajattelen, että erot selittyvät sillä, kuinka kokenut kehittäjä työkaluja käyttää. Näin vanhemmalle kehittäjälle työkalut eivät ehkä enää tuo niin suurta helpotusta, mutta vasta uraansa aloittava saattaa tekoälyn avulla nostaa omaa tasoaan korkeammalle.&lt;/p&gt; &lt;p&gt;Lopulta on myönnettävä, että itselle tekoälytyökalut ovat tällä hetkellä enemmän riesa kuin supervoima. Huonojen hetkien joukkoon kuitenkin mahtuu myös niitä suurenmoisia tilanteita, jolloin Copilot näyttää parhaat puolensa. Nuo hienot hetket saavat ajattelemaan, että kyllä sitä on ihmeellisten asioiden kanssa tekemisissä ja AI:lle on syytä vielä antaa mahdollisuuksia.&lt;/p&gt; &lt;p&gt;Tekoälyn hyödyt riippuvat paljon käyttötapauksesta, eikä myöskään siksi kannata antaa lopullista tuomiota, kun elämme vasta tekoälyn aamunkoittoa ja AI:n erilaiset mahdollisuudet vielä laajenevat.&lt;/p&gt; &lt;p&gt;Tekoälytyökaluissa on paljon potentiaalia, mutta samalla paljon ongelmia, joista suurin on ihminen itse. On mielenkiintoista nähdä, voidaanko koodaamisen yhtälöstä jättää jonain päivänä itse ihmiselle tarkoitettu koodi pois ja oppiiko tekoäly generoimaan tietokoneen ymmärtämää koodia ihmisen syöttämän luonnollisen kielen kautta. Elämme murroskohdassa, jossa on jännittävää seurata, mitä tulevaisuus tuo tullessaan, ja arvailla, miltä koko alamme saattaa vuosikymmenien päästä näyttää.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Julkaistu alunperin &lt;a href=&quot;https://web.archive.org/web/20240222050600/https://adafy.com/github-copilot-kokeneemman-kehittajan-kasittelyssa/&quot;&gt;täällä&lt;/a&gt;. Kiitos Satu Kuusinen oikoluvusta ja editoinnista!&lt;/em&gt;&lt;/p&gt; </description>
      <pubDate>Thu, 28 Dec 2023 00:00:00 GMT</pubDate>
      <dc:creator>Mikko Uuksulainen</dc:creator>
      <guid>https://uuksu.fi/blog/copilot-kokemuksia/</guid>
    </item>
    <item>
      <title>Yhdessä etänä</title>
      <link>https://uuksu.fi/blog/yhdessa-etana/</link>
      <description>&lt;p&gt;Vuosi 2020 on ollut yhtä myllerrystä niin maailmalla kuin täällä kotipuolessakin. Eräs virus Wuhanista iski meihin yllättäen ja kovaa, ja yritämme edelleen huojua pystyyn sen jäljiltä. Kesällä ehdimme saada merkkejä jo paremmasta, ja se sai monet ajattelemaan, että tilanne on nyt ohi ja elämä jatkuu. Toisin kävi, ja nyt meillä on vastassamme myös synkkä syksy täynnä koronaa.&lt;/p&gt; &lt;p&gt;Sitä mukaa kun rajoituksia on purettu, myös ihmiset ovat käyttäytyneet leväperäisemmin. Niille keinoille, joilla tauti jo kerran saatiin kesän alussa kuriin, on näytetty pitkää nenää, ja elämä on monella jatkunut niin kuin mitään tautia ei olisi koskaan ollutkaan. Kesän jälkeen ihmiset palasivat työpaikoilleen ja harrastustensa pariin, ja kuinka ollakaan, tartuntatapaukset ampaisivat raketin lailla nousuun.&lt;/p&gt; &lt;p&gt;Meille on pienestä pitäen optimistisesti opetettu, että tauti kuin tauti häviää rokottamalla. Koronan tapauksessa ihmisten odotukset eivät ole yhtään poikkeavat, ja odotammekin rokotetta kuin hopealuotia, joka ratkaisisi käsillä olevan ongelman. Aika näyttää, saadaanko rokote markkinoille ja kuinka pian. Karu totuus voi kuitenkin jopa olla, että toimivan rokotteen kehittäminen venyy tai sitä ei edes koskaan saada valmiiksi. Lääketiede ei valitettavasti ole mitään magiaa, vaan puhtaasti luonnonvoimilla leikkimistä. Alamme ihmislajina olla aika hyviä siinä, mutta emme sentään ole jumalia.&lt;/p&gt; &lt;p&gt;Lohtuna asiassa on kuitenkin se, että myös korona on altis noille samoille luonnonvoimille. Unohdamme aina, että ei korona ole mikään mystinen toisesta ulottuvuudesta keskuuteemme levinnyt niittäjä, vaan meissä loisiva, perimäjuostetta sisältävä molekyylimöykky. Loisena se tarvitsee meitä lisääntyäkseen, ja paras tapa tappaa se sukupuuttoon on pitää sen kasvualustat erillään toisistaan. Ratkaisun avaimet koko pandemian loppumiseen ovat koko ajan käsissämme, ja ihmisten oma päättäväisyys onkin isossa roolissa ratkaisun syntymisessä.&lt;/p&gt; &lt;p&gt;Suomi on pinta-alaltaan iso maa, ja täällä on oikeasti mahdollisuudet pysyä toisesta ihmisestä vaikka kilometrin päässä. Nyt kuitenkaan ei kauaksikaan tarvitse lähteä, vaan jo ihan eristäytyminen neljän seinän sisään riittää. Nyt olisi jokaisen aika katsoa peiliin ja miettiä, onko kotoaan aivan pakko poistua mihinkään vai riittäisikö se omalla kotisohvalla pötköttely joksikin aikaa. Jos kotonaan ei jaksa istua päivästä toiseen, aina voi lähteä kauniiseen syysilmaan, kunhan välttää niitä paikkoja, joissa voi törmätä muihinkin ihmisiin.&lt;/p&gt; &lt;p&gt;Kaikkia töitä ei voi kotoa käsin tehdä, mutta esimerkiksi monet toimistotyöt taas ovat sellaisia, että niiden tekemiseksi ei ole merkitystä sillä, onko paikalla konttorilla vai kotisohvalla. Kipenä työpaikalle ei saisi raahautua, mutta tarvitseeko sinne nyt oikeasti raahautua ollenkaan? Työpaikka on monen elämässä ainoa sosiaalinen kokoontumispaikka, mutta ei kotona kyhjöttäminen tarkoita, että sosiaalisuudesta pitäisi jäädä paitsi. Esimerkiksi yhteiset kahvitunnit videon välityksellä ovat hyvä ajatus yhteyden pitämiseen työkavereihin. Myös ne jutut, mitä yleensä sermin takaa huudellaan, voi yhtä hyvin huikata siellä työpaikan chatissa.&lt;/p&gt; &lt;p&gt;Ei työpäivän jälkeenkään tarvitse yksin olla. Elämme siitä onnellisessa asemassa, että lähes jokaisesta kodista löytyvät nopeat internetyhteydet, jotka tuovat meitä yhteen välimatkojen päästä. Kun laittaa harmaat aivosolut liikkeelle, etänä voi ihmisten kesken tehdä vaikka mitä. Jo aikaisemmin mainittujen kahvituntien lisäksi esimerkiksi illanistujaiset toimivat hyvin myös videon välityksellä. Pienellä mielikuvituksella voi järjestää yhteisen etäjumpan tai vaikka katsoa elokuvan yhdessä. Aina fyysinen läsnäolo yhdessä olemiseen ei ole pakollista.&lt;/p&gt; &lt;p&gt;Harrastukset ovat ihmisille tärkeitä, ja ne luovat sisältöä elämäämme. Monet harrastukset ovat sellaisia, että samoista asioista kiinnostuneet ihmiset kokoontuvat yhteen, ja tässä tapauksessa ne toimivat tehokkaina viruksen leviämispaikkoina. Jälleen pitäisi miettiä, voisiko siitä omasta harrastuksesta luopua joksikin aikaa ja miettiä sen ajaksi jotain muuta tekemistä. Monia harrastuksia voi harrastaa myös kotona yksin, ja kuka tietää, vaikka sitä innostuisikin jostain aivan uudesta asiasta! Jälleen kerran internetin voi ottaa avuksi harrastuksen aloittamiseen. Kyllä maailmassa tekemistä riittää, ja joskus on hyvä ajatella myös laatikon ulkopuolelta.&lt;/p&gt; &lt;p&gt;Jos ihmiset jaksaisivat pysyä erillään toisistaan, pandemia olisi ohi joissain viikoissa, kun nykyisellä elämäntavallamme se todennäköisesti jatkuu vielä kuukausia, ellei vuosia. Maltti olisi nyt valttia, ja jokaisen tulisi kohdallaan miettiä, olisiko omassa toiminnassaan parantamisen varaa. Ollaan yhdessä etänä ja nitistetään tuo meitä piinaava pirulainen.&lt;/p&gt; </description>
      <pubDate>Thu, 01 Oct 2020 00:00:00 GMT</pubDate>
      <dc:creator>Mikko Uuksulainen</dc:creator>
      <guid>https://uuksu.fi/blog/yhdessa-etana/</guid>
    </item>
    <item>
      <title>Duunit vaihtoon</title>
      <link>https://uuksu.fi/blog/duunit-vaihtoon/</link>
      <description>&lt;p&gt;Muutama kuukausi sitten aloin olla työelämässäni taas siinä pisteessä, että kaipasin uusia haasteita. Tuo tunne on tullut tutuksi vuosien varrella kasvaneena tuskautumisena siitä, että nykyisessä työpaikassani ei ole enää hyvä olla töissä. Harvemmin lähtemiseen tarvitaan mitään suurta draamaa, vaan syyksi usein riittää pienten negatiivisten asioiden kasaantuminen ja lopulta se kuuluisa kamelin selän katkeaminen.&lt;/p&gt; &lt;p&gt;Lyhyen työuran aikanani olen tähän mennessä kirjoittanut viisi eri työsopimusta. Työrupeamien pituudet ovat vaihdelleet reilusta puolesta vuodesta noin kolmeen ja puoleen vuoteen. Kaikki työpaikkani ovat olleet erinomaisia, ja olen oppinut jokaisesta aina jotain lisää. Mikään työpaikoistani ei ole ollut niin umpimätä, että hampaankoloon olisi jäänyt jotain pysyvää kaunaa. Siitä huolimatta asian voi ajatella myös siltä kantilta, että olen jättänyt neljä työpaikkaa taakseni syystä tai toisesta.&lt;/p&gt; &lt;p&gt;Vaikka IT-alalla vaihtuvuus firmojen välillä on nykypäivänä aika suurta, jaksavat haastattelijat edelleen kysellä, miksi työsuhteeni ovat olleet niin lyhyitä. Fakta alkaa kuitenkin olla, että tällä alalla eläkeikään asti jatkuvat työurat yhden yrityksen palveluksessa alkavat olla aika harvinaisia. Toki huoli työntekijän sitoutumisesta on työnantajan näkökulmasta ymmärrettävää, sillä myös resursseja tuhlaavia työpaikanvaihtajia on liikkeellä työmarkkinoilla. Töissä käydään pyörähtämässä kuukausi tai pari, ja työsuhdetta käytetään ponnahduslautana joko palatakseen edelliseen työpaikkaan paremmassa asemassa tai ihan vain täyttääkseen CV:tä tulevaisuuden hommien varalle.&lt;/p&gt; &lt;p&gt;Omalla kohdallani työpaikan vaihtoon on yleensä aina samankaltaisia syitä työpaikasta riippumatta. Yleensä ensimmäisenä itse työtehtävät ja projekti alkavat kyllästyttää, ja niiden osalta kaipaa uusia haasteita. Usein sitä on jumittunut samoihin tehtäviin vuosiksi, ja tuntuu, että elämä on päivästä toiseen samojen asioiden parissa pyörimistä. Joillekin tämäkin malli sopii, mutta itse vain turhaudun, jos en pääse kokemaan uusia asioita ja näkemään asioita erilaisesta näkökulmasta. Koen, että vaihtelu myös kasvattaa omaa osaamistani, kun ymmärrän, että asioita voi tehdä toisellakin tapaa.&lt;/p&gt; &lt;p&gt;Toinen syy yleensä on, että koen urakehityksen pysähtyvän työpaikassa täysin. Pysähtyminen alkaa näkyä työtehtävien ja vastuiden paikalleen jumittautuneisuudessa, ja se heijastuu suoraan titteleihin ja palkkaan. Projektit saattavat olla myös sellaisia, että ne sitovat täysin johonkin tiettyyn rooliin, eikä tilaa kasvamiselle uralla enää ole. Joskus voi olla niin, että projektit itsessään ovat luonteeltaan sellaisia, että ne on esimerkiksi sidottu johonkin teknologiaan, josta haluaisi itse siirtyä pois ja tehdä jotain muuta. Jos omaa vapaata potentiaaliaan ei pääse hyödyntämään, se alkaa pidemmän päälle kasautua turhautumisena.&lt;/p&gt; &lt;p&gt;Usein syynä on myös se, että yritystä ei osata johtaa oikein ja se heijastuu kaikkeen tekemiseen negatiivisesti. Esimerkiksi YT-neuvottelut, lomautukset ja irtisanomiset sekä projektit, joita on haalittu ilman mitään selvää näkemystä yrityksen suunnasta, ovat hyviä syömään omaa motivaatiotani. Työpaikalla myös tekemisen malli saattaa joskus olla sellainen, että härvätään siellä täällä päättömästi ja työn laatu on olematonta. Työn tulisi olla sellaista, että siitä voisi olla aidosti ylpeä.&lt;/p&gt; &lt;p&gt;Aivan pakan alimmaisena ovat työpaikan ihmisistä johtuvat syyt. Pääsääntöisesti ihmiset tällä alalla ovat hyvää porukkaa, ja asioita tehdään aina hyvässä hengessä. Asiat saavat riidellä, mutta harvemmin kenenkään kanssa tarvitsee ryhtyä käsirysyyn erilaisten mielipiteiden takia. Joskus kuitenkin tietynlaisten jääräpäisten ajatusmallien kanssa eläminen on aika vaikeaa, ja silloin ainoa keino päästä niistä eroon on vaihtaa kokonaan maisemaa.&lt;/p&gt; &lt;p&gt;Päinvastoin, monesti se viimeinen ohut repale, jonka varassa työpaikassa on enää roikkunut, on ollut ajatus työkavereiden menettämisestä. Tunne on varsin luonnollinen ja liittyy muutoksen pelkoon. Olisi kuitenkin hyvä pitää mielessä, että työpaikan vaihtaminen ei ole kuolemantuomion julistaminen työkavereille ja ihmissuhteille. Hyvät kaverit jäävät aina osaksi elämää myös työpaikan ulkopuolella, ja muutenkin maailma on niin pieni, että samoja ihmisiä tulee kohdattua edelleen myös toisissa työpaikoissa. Työ tuo ihmisiä yhteen, mutta työpaikan vaihtamisen ei tarvitse erottaa meitä toisistamme.&lt;/p&gt; &lt;p&gt;Itse näen, että epämieluisaan työpaikkaan jääminen on aina se kaikkein huonoin vaihtoehto. Vietämme niin ison ajan elämästämme töissä, että jokapäiväisen tekemisen tulisi olla sellaista, että asian kanssa voi elää kärsimättä. Työhyvinvointi on osa kokonaishyvinvointiamme ja vaikuttaa sitä kautta kaikkeen, mitä teemme. Hyvin töissä voiva ihminen on hyvin voiva ihminen myös kotona.&lt;/p&gt; &lt;p&gt;Vielä tähän mennessä yksikään työpaikan vaihdos ei ole jälkikäteen kaduttanut. Totta kai joka kerta työpaikkaa vaihtaessa käy läpi saman tunteiden skaalan pelosta, epävarmuudesta ja haikeudesta, mutta ne ovat lähinnä ohimeneviä olotiloja. Jokaisen työpaikan olen ottanut avoimin mielin vastaan ja kokenut asiat paremmaksi kuin entisessä työpaikassa. ”Vaihtamalla paranee” on kyllä pitänyt joka kerta hyvin paikkansa.&lt;/p&gt; </description>
      <pubDate>Wed, 26 Aug 2020 00:00:00 GMT</pubDate>
      <dc:creator>Mikko Uuksulainen</dc:creator>
      <guid>https://uuksu.fi/blog/duunit-vaihtoon/</guid>
    </item>
    <item>
      <title>Menneisyyden taakka</title>
      <link>https://uuksu.fi/blog/menneisyyden-taakka/</link>
      <description>&lt;p&gt;Muistan edelleen sen päivän, kun ensimmäistä kertaa kävin internetissä. Ne ensimmäiset googlailut 56 kilobittisellä modeemilla ovat painuneet syvälle muistoihin, ja nykytekniikan helppouden äärellä se tuntuu lähinnä kaukaiselta unelta. Noissa hetkissä oli jotain niin maagista, ja luonnollisesti nuoren miehen nälkä siitä vain kasvoi syödessä.&lt;/p&gt; &lt;p&gt;Joitain vuosia myöhemmin pääsin ensimmäistä kertaa käyttämään laajakaistaa kirjastossa tunnin vuorolla. Jälleen maailmani laajentui uusiin sfääreihin, kun yhtäkkiä sivut ja kuvat latautuivatkin sekunneissa silmieni edessä. Hain tietoa, tutkin sivustoja ja tulostin maksullisella tulostimella enemmän tai vähemmän tärkeitä asioita. Pääasia, että oli hauskaa.&lt;/p&gt; &lt;p&gt;Lopulta laajakaista tuli myös meille kotiin, ja seuraava sivu seikkailullani oli kääntymässä. Kun yhteys oli nyt koko ajan auki, juttelin ihmisten kanssa erinäisillä foorumeilla ja sain uusia kavereita netin välityksellä. Pian mukaan kuvioihin tuli myös mesettely MSN Messengerillä, jonka välityksellä ihmiset tulivat luokseni sinne nurkkaan, jossa meidän perheen pöytäkone sijaitsi. Netti oikeasti yhdisti samoista asioista kiinnostuneita ihmisiä ympäri Suomea ja maailmaa.&lt;/p&gt; &lt;p&gt;Mikä tuosta maailmasta teki kuitenkin uniikin ja erilaisen nykypäivän nettiin verrattuna, on se, että me olimme aina anonyymejä toisillemme. Hyvin harvojen kanssa tiesimme edes toisiemme etunimiä tai sitä, miltä toinen näytti. Meitä oli silloin varoitettu internetin vaaroista niin hyvin, että oppi oli porautunut päähän. Olimme toisillemme vain nimimerkkejä, avatareja ja hahmoja niiden takana.&lt;/p&gt; &lt;p&gt;Tuolta ajalta on olemassa hyvin vähän sellaista historiaa internetissä, josta meidät nykypäivänä tunnistaisi. Lienen ehkä itse hieman poikkeus, kun minulla on tallessa tuonaikaisia keskustelulokeja, joiden pariin palaan joskus nostalgiannälkäisenä. Tuohon aikaan saimme olla ihan rauhassa lapsia ja nuoria, joilla oli omat kiinnostuksen kohteensa ja mielipiteensä. Meitä ei tuomita nykypäivänä sen perusteella, mitä olimme vuosia sitten.&lt;/p&gt; &lt;p&gt;Ajat ovat kuitenkin muuttuneet paljon viime aikoina. Nykyään on trendikästä, että aivan kaikki jaetaan sosiaalisessa mediassa ja vielä yleensä omalla nimellä. Myös tiedon kerääminen ja etsiminen on paljon helpompaa niin suurille yrityksille kuin tavalliselle kaduntallaajallekin. Koko elämäntarinamme on yleensä muutaman klikkauksen päässä sitä kaipaavalle arkistoituneena ykkösiksi ja nolliksi. Harmi vain, että kaikki ei aina ole niin positiivista ja ainaista onnea.&lt;/p&gt; &lt;p&gt;Parhaimmillaan tuo tietojen levittäminen alkaa kuukausia ennen ihmisen syntymää. Huomionkipeät äidit jakavat lapsistaan sosiaaliseen mediaan ultraäänikuvia tykkäysten toivossa. Seuraavat kuvat tulevat ehkä eetteriin lapsen syntymän jälkeen, koska kyllähän se onni on jaettava myös puolituttujen kanssa. Ennen kuin lapsi edes itse pääsee kokemaan internetiä, hänen persoonaansa on jaettu verkossa jo vuosia satojen valokuvien ja tilapäivitysten voimalla.&lt;/p&gt; &lt;p&gt;Vuosia vanhemmistaan mallia ottanut lapsi saa sitten jonain päivänä kännykän omaan kouraansa ja alkaa tuottaa omaa sisältöä. Ehkä laitetaan muutama kuva sinne, tilapäivityksiä tänne ja vähän videoita YouTubeen. Kukaan ei koskaan vahdi, mitä sisältöä nettiin jaetaan, eikä lapsi omalla vajaalla ymmärryksellään voi ymmärtää, mitä seurauksia jakamisella on. Sitten kun jonain päivänä kokee sen ahaa-elämyksen, että kaikki alkaakin nolottaa, vanha viisaus pätee: &quot;internet ei unohda mitään&quot;. Harva sitä tuntuu ymmärtävän, että jos jaat jotain, silloin jollakulla toisella on aina vähintään yksi kopio sisällöstäsi, eikä siihen sinulla ole enää mitään valtaa.&lt;/p&gt; &lt;p&gt;Ei ole kovin vaikea nähdä tulevaisuutta, jossa esimerkiksi koulukiusaajat kaivavat kiusatun äidin somesta kuvia tästä lapsena ja naureskelevat hörökorville tai sille, kun yhtenä päivänä lapsi ei ehtinytkään potalle. Ei ole vaikea kuvitella teinejä, jotka saavat naljailua muutaman vuoden takaisten kuvien asuvalinnoista ja kärsivät ulkonäköpaineista. Ei ole vaikea asettua sellaisen työnantajan kenkiin, joka jättää nuoren työhakemuksen käsittelemättä jo sillä perusteella, että löytää tämän sometilin täynnä kännäilykuvia. Esimerkkejä voisi keksiä loputtomiin.&lt;/p&gt; &lt;p&gt;Jo nyt ja tulevaisuudessa vielä enemmän ihmisten menneisyyden taakka on aivan valtava. Ihmisten ja varsinkin vanhempien tulisi pysähtyä ja miettiä, onko kaikkea aivan tarpeellista jakaa muille pällisteltäväksi. Onko se hetken riemu muutamasta tykkäyksestä sen arvoinen, että omaa tai jälkeläisensä taakkaa kannattaisi kasvattaa yhtään enempää? Voisimmeko vielä palata siihen yksinkertaisempaan maailmaan, jossa perhe ja lähipiiri olivat kaiken huomion kohde ja jalanjälkemme internetissä oli höyhenenkevyt? Valitettavasti nykyisten sosiaalisen median palveluiden voittokulku näyttäisi puhuvan sitä vastaan, että asioihin olisi tulossa suurta muutosta parempaan. Jokainen voi kuitenkin omalla kohdallaan tehdä päätöksen ja pidättäytyä jakamasta tietoa itsestään ja läheisistään. Uskokaa tai älkää, elämää on myös internetin ulkopuolella.&lt;/p&gt; </description>
      <pubDate>Thu, 13 Aug 2020 00:00:00 GMT</pubDate>
      <dc:creator>Mikko Uuksulainen</dc:creator>
      <guid>https://uuksu.fi/blog/menneisyyden-taakka/</guid>
    </item>
  </channel>
</rss>