Taas edistymisraportti lasten opettamisesta.
Yksitoistavuotias halusi serverilleen Tekkit classicin sen jo asentamamme Direwolf FTB -serverin tilalle. Niinpä lähinnä kertailimme kaikkea: wget, unzip -l, unzip, sh launch.sh jne. Käynnistin halusi varata serverille enemmän heapia kuin koneessa oli tarjolla, joten pääsimme muokkaamaan sitä vi:llä ja meillä oli jopa käyttöä vim:n esoteeriselle ^X-komennolle.
Kaikkiaan suurin hyöty tästä oli ehkä se, että lapsi sai kertausta ssh:n ja screenin käytöstä: screen -r, ^A^W, ^A^A, ^A^D. Hän osannee tässä vaiheessa omin päin ottaa yhteyden palvelimelleen ja esim. bannia tai opata jonkun käyttäjän Tekkit-serverillään.
Piuhoitin myös palvelimen kotiverkkomme ulkopuolelle, jottei tarvitsisi tehdä tunneleita saadakseen palvelimen näkymään ulkopuolisille. Meillä on nyt siis koti-DMZ :) En tehnyt piuhoitusta yhdessä lapsen kanssa, koska siinä on paljon mahdollisuuksia mennä vikaan, eikä lasten kärsivällisyys yleensä riitä niihin pitkiin virheeneristämissessioihin, joita selvittely vaatii. Hyödyllistä opittavaa se tietenkin olisi, jos lapsilla motivaatio riittäisi loppuun asti.
Hommasin jo aiemmin dy.fi:stä aliakset koneille. Nyt, kun lasten palvelin on ulkoverkossa, dy.fi-nimi on oikeastaan ainoa järkevä tapa ottaa siihen yhteyttä. Voisin tietysti määrittää kotipalvelimen DNS:iin CNAME-recordin.
Tällä kertaa lapsen kone sattui olemaan Windowsissa, joten pääsin demoamaan, miten ssh toimii yhtä hyvin PuTTYssa kuin Linuxin päätteestä. Olin tästä hyvin tyytyväinen.
Viisivuotiaan kanssa tehtiin monikulmioita. Koko juttu oli käytännössä kertausta siitä, kuinka käytetään toista-komentoa säännöllisten kulmioiden tekemiseen. Teimme kolmion, monesta kolmiosta rakentuvan pitsin, ja kolmiokehrän. Tämän tunnin paras anti oli ehkä se, että lapsi alkaa muistaa ulkoa miten komentoja määritellään, enkä joudu paljonkaan sanelemaan.
to aurinkokukka toista 36[kolmio et 5 va 10] end to kolmio toista 3[et 100 oi 120] end to pitsi toista 100[kolmio et 10] end to siirry :matka pu oi 90 et :matka va 90 pd end
Viime komennon tein, jotta lapsen olisi helpompi siististi asettaa rinnakkain eri kuvioita.
Lapsille nimeäminen on selvästi tärkeää. Lopuksi tallennetaan työn tulokset:
? save "blobloblobloblo
Kymmenvuotiaan kanssa olin päättänyt jo pitää jatkotunnin parametreista ja puhua monikulmioista. Teimme ensin neliön ja kolmion toista-komennon kertauksena. Mutta nämä näyttivät yhdessä niin paljon raketilta, että lapsi jäi vähäksi aikaa tekemään raketteja. Ensin kokeiltiin, ja sitten muutettiin komennoksi (mutta rumasti, koska oikeasti tämä kannattaisi jakaa alikomennoiksi):
to raketti toista 4 [et 90 va 90] toista 3 [et 90 oi 120] oi 90 va 180 et 90 oi 90 toista 4 [et 90 va 90] oi 90 va 180 et 90 va 90 et 90 va 135 et 130 ta 130 va 45 et 270 oi 135 et 130 ta 130 oi 45 et 180 end
Mainitsin myös, että astekulmia ei aina tarvitse laskea itse. Logohan osaa laskea, voi kirjoittaa esim. pr 90 + (90/2) ja Logo kertoo.
Mutta sitten varsinainen aihe. "Miksiköhän kolmiossa käännytään juuri 120 astetta? -- Paljonko täysi käännös on?" 360 astetta, aivan oikein, ja koska monikulmiossa mennään yksi täysi kierros ja jokaisessa kulmassa käännytään saman verran -- mutta kulmien määrä vaihtelee kulmiosta riippuen -- niin astekulman voinee laskea... tässä vaiheessa lapsi täytti loput. Pyysin häntä tekemään viisikulmion. Ensin kokeillen...
? pr 360 /5 (<--- wow!) 72 ? toista 5 [et 90 va 72]
... sitten komennoksi. Ensin vakiomitoin, sitten parametrisena.
to 5kulmio :koko toista 5 [et :koko va 72] end
Täytyy sanoa, että olin lapsesta todella ylpeä tässä vaiheessa, mutta parempaa oli tulossa. Sanoin, että haluan uuden komennon, "kulmio". "Ja haluan sille kaksi syötettä... mitkähän?" Kun lapsi oli arvannut ne, hän sanoi: "Odota, odota, odota" ja sitten!
to kulmio :kulmat :koko toista :kulmat [:koko 360 /:kulmat] end
Melkein oikein! Ja kuten ohjelmoijien laulussa sanotaan, "jos joskus pieleen meneekin, se paremmaks' tulkoon".
to kulmio :kulmat :koko toista :kulmat [et :koko va 360 /:kulmat] end
Ei paljon puuttunut, ettei tullut tippa linssiin tässä vaiheessa.
Mitäpä olisi komento ilman siitä iloitsemista?
? kulmio 9 100 ? kulmio 8 100 ? kulmio 7 100 ? kulmio 6 100 ? kulmio 5 100 ? kulmio 4 100 ? kulmio 3 100 ? kulmio 2 100 ? kulmio 1 100
Miksiköhän 1-kulmio on ainoa, jossa kilpikonna ei palaa alkuun?
Nimeäminen on tärkeää.
? save "lillu pillu I don't know how to pillu