28. Nov 2020 |

Tähelepanek – tahvel

Kuna Echo360 loengute järelvaatamine on üsna… nagu ta on, siis ma ripin kõik videod (mis on omaette väike tööke*) ja panen endale Youtube’i, kus kiiruse kontroll, timestamping, kõigis seadmetes töötamine jne on palju parem.

Aga sellel on üks nõrk koht – kui õppejõud kasutab tahvlit 🙂 Sellisel juhul ma pean rippima 2 videot ja vaatamisel kuidagi navigeerima nende vahel.

Aga ma saan aru, et mingit head tehnilist lahendust ei ole hetkel olemas, kuidas arvutisse asju “tahvliliku kogemusega” saaks joonistada. Ago joonistab hiirega. Vahepeal Excalidraw‘s, enamasti Paintis, vahepeal Microsoft Whiteboardis. Põhimõtteliselt graafikalauaga see isegi toimiks aga graafika laua kasutamine (nii et see mugav tunduks) võtab päris kaua aega ja eeldada, et kõik õppejõud ennast klassis graafikalauaga hästi tunneks on ebamõistlik oodata. Mul endalgi vedeleb põhimõtteliselt kasutamata Wacom Intuos kapi otsas ja ei leia head kasutust.

Jalutamas käisin, siis kuulasin Stack Overflow Podcasti, kus räägiti IT-haridusest. Oli huvitav ja vast sobib siia ka.

Nt see koht, kus räägiti, et nr 1 oskus on AWSi hästi tunda, mis on “the new cool programming language“.

*Kuna TalTechi Echo360 seadistus hetkel annab välja heliriba ja 2 (ilma helita) videoriba, siis tuleb need ise kokku kleepida pärast brauseri Network tab’i kaudu allalaadimist. Ametlikku allalaadimise võimalust ei ole enamasti sisse lülitatud. Vanemate videote (nt 2018) seadistuses on heliriba pandud videote külge.

21. Nov 2020 |

Let the Spotify play your favourite songs by 30 seconds

Inspired by this article and the economic situation for musicians I wrote this little script. This lets Spotify to play your favourite artists on rotation and automatically presses “next” after every 33 (+ littlebit of random) seconds. 30 seconds is the minimum amount of time a song must be listened to before Spotify registers a single “play”.

Loading the song also takes little bit of time so you can not maximize the play count by making the loop take exactly 30 seconds long.

function getRandomInt(min, max) {
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min) + min);
}

function doSomething() {
    var button = document.querySelector('[aria-label="Next"]');
    button.click();
}

(function loop() {
    var rand = getRandomInt(33000, 37000);
    console.log(rand);
    setTimeout(function() {
        doSomething();
        loop();
    }, rand);
}());

If you are using Spotify in your browser the press ctrl+shift+k or just F12, open console tab, paste this code there and press enter. This code does nothing but pressing the button with title attribute “Next” after every 33-37 seconds (random between these times).

Example of how it works in browser.

It is one option to support your favourite artists 🙂

5. Nov 2020 |

Kui kaua see aega võtab

Mind natukene rõhub see määramatus, et ma ei tea, kui kaua mingi asi aega võtab. Näiteks hetkel on 2 ainet – algoritmid ja C#. Mõlemad meeldivad aga kui mõlemal on tähtajad lähenemas, siis ma ei oska hinnata, kui kaua mul töö tegemiseks aega läheb. Ja see skaala on üsna raju selles mõttes, et ma ei tea, kas läheb 2 päeva mingi algoritmi harutamiseks või läheb 2 tundi 🙂

C# semestritöö on põhimõtteliselt selline, et kogu aeg on võimalik ka ainult sellele ära kulutada. Ja samas ei tea, kas puruneb töö käigus Git, mida on vaja remontima hakata või laguneb Rider ära vms. Määramatust on päris palju, millest siis omakorda tekib hirm ja ärevus.

21. Oct 2020 |

Python OOP – objektorienteeritud programmeerimine

Kuna ma ise sellega olin aasta tagasi üsna hädas, sest pea lihtsalt ei võtnud seda abstraktsiooni nii lennult, siis laia pintsliga kirjutasin siia (võimete piires) natuke selgitustega töötavat objektorienteeritud Pythoni koodi:

github.com/robineero/my-python-jam/tree/master/oop-jam

Mõni objekt, mõni meetod ja natuke funktsionaalsust. Ehk on kellelegi veel abiks, kes aru ei saa, kuidas objektid töötavad. See võib sisaldada vigu igal pool aga noh, see ongi jam.

17. Oct 2020 |

3. semester – teise kuu keskel

Sorry, et ma ei ole jõudnud õppimisest kirjutada. See semester on üsna kiire olnud. Aga järgemööda nüüd püüan natuke valgustada, mis koolis toimub 🙂

Veenduge

Aina enam pean endale meelde tuletama, et kui millegi uue õppimisel on  tunne, et “ma ei oska seda seda üldse” või  “ma ei saa mitte midagi aru”, siis see ongi õige koht, kus olla ja kust alustada. Ja end rahustama, et see ei ole maailma lõpp, kui mingit asja isegi esimese korraga tehtud ei saa, sest õppeprotsess ongi iga kord erinev ja individuaalne.

Lorentsi “süsteemide selitamine” hulgateooriast on siin ka abiks mõistmisel, kuidas teadmine tekib.

Kui miski huvitab

Olen märganud, et kui mind miski huvitab, siis ma võin seda teha väsimatult tundide viisi. Olgu selleks algoritmide lahendamine, veebitehnoloogia või isegi C#. Või EDRide joonistamine. Või giti remontimine. Võin ennast täiesti ära unustada neid nokitsedes.

Aga kui peab tegema midagi, mis mind üldse ei huvita – näiteks see õnnetu arvutigraafika valikaine – siis peab ennast kõvasti sundima.

Andmebaasid

Seni üsna kasulik aine. Eriti kombinatsioonis Lorentsi hulgateooriaga. Aga ma ei saa aru, miks õppejõud Priit Raspel ei kasuta praktikumides ja loengutes enda soovitatud Vertabelot, mis teeb seose jooned automaatselt sirged ja laseb kasutada korduvaid olemite nimesid (kuigi annab sellekohase veateate). Nii ta ei peaks tegelema viltuste joontega ja sama sõna erinevate versioonide väljamõtlemisega (nt isik, isic, isikk, izik, isssikkkk jne), kui ta ERDi näiteid joonistab. Aga noh, 7. nädala lõpuks olen sellega juba harjunud 🙂

C#

Minu jaoks kõige hirmutavam aine. Õppejõud ütles, et 50% ei saa läbi ainest ja sain aru, et järgmise semestri hajussüsteemid tulevad selle C# baasil edasi. Javas aitas mind kõvasti soomlaste MOOC aga C# jaoks ei ole midagi sarnast leidnud.

Samuti ei ole päris täpselt aru saanud, et milleks C# vajalik või mille poolest eriline või mis märksõnaga seda peaks kuskil arendusfirmades märkama (.NET?). Lihtsalt mul ei ole tutvusringkonnas olnud mitte kellegagi sellest keelest juttu. Pigem Java, TypeScript, Python jne. Samas Tiobe 5. koht hetkel. Seega, paneme kõik välja ja vaatame kuhu see jõuab. Äkki on tõesti hea. Hetkel mul ei ole ühtegi mõtet, mida ma selle keelega huvitavat teha saan.

Seni on mulje selline, et nii palju jama mul ei ole ühegi keelega seni olnud tehniliselt poolelt. Nii Rider‘i erroreid, mingeid koodi crashimisi täiesti suvalise koha peal, giti jamasid jne. Python ja Java selle kõrval töötasid (vähemalt õppetöös) ikka eriti sujuvalt 😀

Algoritmid

Vaimustun. Väga lahe õppejõud. Aga hirmus aine on ka, et ei tea, kas pea võtab lõpuni ikka. Aine lehe leiab siit.

Veebitehnoloogia

Üks lemmik aineid. Ootan huviga igat kodutööd ja teen hea meelega ise juurde. Selle aine Moodle foorum on parim meelelahutus.

Sotsiaalmeedia

Eelmise semestri lõpus panin endale sotsiaalmeedia piirangu ja see tõstis märgatavalt mu produktiivsust. Hetkel tunnen, et peaksin sama uuesti tegema. Sotsiaalmeedia segab kohutavalt.

Arvutigraafika

Tegin ühe halva valiku juba sel semestril ja selleks on valikaine nimega Arvutigraafika (ICD0002). Õppejõud ja kõik on väga tore – pole viga midagi – aga see täiesti vale asi võrreldes sellega, mida ma arvasin, et see on. Ma arvasin, et see on midagi sellist nagu kasutajaliidese prototüüpimine, Sketch, Figma, CSS nagu www ja Aku jne seda teeb, ligipääsetavus jne. Aga ei. See on 3D joonestamine ja ma hetkel ei oska üldse rõõmu tunda sellest sülle kukkunud võimalusest seda õppida 😀 Ei teagi mis teha sellega.

12. Oct 2020 |

Entity–relationship diagram (ERD scheme) for family tree database

I have seen this question asked many times and most of the times poorly answered.

Entity–relationship diagram for family tree database. N means ‘nullable’ in this syntax.

I think it could be done like this. The left one has two tables – person and pairing. Person table is for entities and the other table for relationships between persons. The green one has both in one table and it is basically recursion hierarchy between Persons.

I don’t know if this solution is correct or not. Neither know I which one is better 🙂

Lines on the right ERD explained:

  • Each mother_id can be mother to zero-to-many person_id’s
  • Each father_id can be father to zero-to-many person_id’s
  • Each person_id can have 0-to-1 father id (zero if I don’t know the father) and 0-to-1 mother id. Person can not have more than one biological father and mother.

NB! You can not add relationships between Persons before you have created the Person you need. Therefore I suggest to leave everything nullable where it makes sense.

Please come back later. If I have time I will share SQL query for setting up MySQL database with sample data and maybe some simple php interface.

10. Oct 2020 |

MySQL autoincrement PK growing quickly

Primary key (PK) is skipping values for some reason. This was an issue I spent time solving until I discovered that auto increment column increases after insertion error occurs. To avoid duplicates on this website I set rule on MySQL side that if three colums match then don’t insert (give insertion error and continue). This way I had hundreds of insertion errors every hour and therefore PK was growing rapidly.

9. Oct 2020 |

Priviligeeritud

Pisut koduõppest. Kui ma kodus õpin, siis ma töötan kahe(!) arvutiga, millest üks on loenguvideo mängimiseks. Kokku on avatud 3 ekraani.

Kuna loenguvideo pausile panemiseks, kiiruse muutmiseks, tagasi kerimiseks jne tab’ide või akende vahel liikumine + hiirega hullamine on lihtsalt ebaergonoomiline. IDEs kaob järg, joonistuses kaob järg jne.

Võrdluseks eraldi arvutis:

  • üles-alla nool on video esituse kiiruse muutmiseks (kus niisama jutt paned 2x, kus vaja trükkida paned 0.75x vms)
  • space on pausi jaoks
  • vasak-parem on edasi-tagasi kerimiseks, kui mingi koht jäi tähele panemata

Eriti hea, kui õppejõul on video Youtube’is kuna seal on kiiruse jaoks shortcutid olemas ja need videod töötavad tehniliselt paremini kui kooli Echo360 lahendus.

Aga ma saan aru, et see on täielik luksus. On peresid, kus on 1 arvuti kõigi peale, on peresid, kus pole üldse arvutit jne. Et koduõpet teha hea kasutajakogemusega on vaja ikka nii heal järjel ja nii hea õnnega olla.

19. Sep 2020 |

mysqli ja täpitähed

Kulutasin eile öösel paar tundi, et täpitähtede liikumine andmebaasi ja andmebaasist tagasi ühel kodulehel korda saada. Hetke lahendus on selline nagu pildil. See set_charset("utf8") oli puudu. Aga enna ma muidugi toimetasin kõvasti charseti kallal ja tegin andmebaasi uuesti ja kõike muud 😀

Muidu virinat ka. Tore, et WordPress ja Blogspot genereerivad erineva struktuuriga RSSi ja et blogijad omakorda suudavad seda RSSi kerge vaevaga purustada.