HIP HIP HOORAY! I've finished the #100Days writing challenge.
10165 words
@Luus

Sneeuwpret

Sneeuwpret
Het beloofde pak sneeuw is eindelijk gevallen :)

Fietsen

Ja fietsen, ineens wil ik gaan fietsen. Nee niet gewoon een rondje fietsen, maar op zo'n fitness/hybride fiets inclusief helmpje en fietskleding. En voor de koude of regenachtige dagen, een fitness fiets voor binnen. We hebben er de ruimte voor.
Ik weet niet of het door de pandemie komt, of door mijn rugpijn en slechte conditie. Maar na 15 jaar niet meer gefietst te hebben, wil ik dat nu ineens heel fanatiek. Zo vroeg ik mijn man al: "Hey, is een IronMan te doen voor me?" oke, dat is misschien een beetje te hoog gegrepen, dacht ik nadat hij al begon met: "een hele marathon en weet ik veel hoeveel km's zwemmen/fietsen. Maargoed, het feit blijft, ineens wil ik gaan fietsen.

Het gaat sneeuwen

Althans, het is de bedoeling dat er zondag een pak sneeuw ligt. Ik kijk er naar uit, een paar dagen winters weer. Maar daarna mag wat mij betreft de lente snel beginnen. Ook wil ik beginnen met fietsen, en ik ben wat dat betreft een "mooi weer" mens. Het enige wat ik doe met slecht weer is de hond uitlaten.

Stand van zaken

100Days - Dit is alweer dag 79! En het valt minder zwaar dan gedacht, maar ik kan ook eigenlijk niet wachten tot de 100 dagen bloggen voorbij zijn. Niet omdat bloggen niet leuk is, maar soms zijn er dagen dat ik niets te melden heb of heb ik er geen zin in. Nu voel ik me gedwongen om toch maar wat te schrijven. Wat ook goed is want anders had ik helemaal niets geschreven. Ik wil alleen niet de dwang voelen om dagelijks te bloggen. Maar nogmaals, ik heb wel de smaak te pakken. Zo erg zelfs dat ik een opfriscursus Nederlands heb gekocht zodat ik nog beter leer schrijven.

100DaysOfCode - Ik ben vanmorgen begonnen met lesdag 22. Ik doe meerdere dagen over één lesdag en soms doe ik lessen opnieuw om het goed te snappen. Maar ik ben vastberaden om alle 100 lessen met succes af te ronden.

30DaysOfYoga - Daar ben ik na 5 dagen mee opgehouden wegens ernstige rugpijn. Die rugpijn kwam niet van de yoga, maar ik kon het niet opbrengen om de oefeningen dagelijks te doen. Wat ik wel gedaan heb is veel wandelen.

Slicing

Python bootcamp #100DaysOfCode #myNotes

Met slicing kun je een reeks selecteren uit een sequentieel object zoals een lijst of tuple. Je kunt een "vanaf" begin, "tot" eind en tussenstap meegeven. Dit doe je tussen blokhaken gescheiden door dubbele punten. [vanaf:tot:stap]

De slices zijn net iets anders dan de indexes. Zie plaatje hieronder.
Slicing a list

een_lijst = ["a", "b", "c", "d", "e", "f", "g"]

# vanaf slice 2 tot slice 5
een_lijst[2:5] # C D E

# alles vanaf slice 2
een_lijst[2:] # C D E F G

# alles tot slice 5
een_lijst[:5] # A B C D E

# vanaf slice 2 tot slice 5
# met stappen van 2
een_lijst[2:5:2] # C E

# elke tweede item in de hele lijst
een_lijst[::2] # A C E G

# hele lijst omgekeerd
een_lijst[::-1] # G F E D C B A

In onderstaande voorbeeld zie je waarom slicing handig kan zijn. Voor een beetje context, één van de opdrachten van deze cursus is om de retro snake game te bouwen.

# zonder slicing

 # detect collision with tail
    for segment in snake.segments:
        if segment == snake.head:
            pass
        elif snake.head.distance(segment) < 10:
            game_is_on = False
            scoreboard.game_over()

# met slicing

# detect collision with tail
    for segment in snake.segments[1:]:
        if snake.head.distance(segment) < 10:
            game_is_on = False
            scoreboard.game_over()

Overerving in Python

Python bootcamp #100DaysOfCode #myNotes

Eén van de voordelen van object georiënteerd programmeren is dat je ook ouder/kind classes kunt aanmaken. Waarbij de kinderen attributen en methodes kunnen overerven van hun ouder.
Bij het aanmaken van de kind class geef je als parameter de ouder class mee. En in de init van de kind class roep je de init van de ouder class aan.

class Animal:
    def __init__(self):
        self.num_eyes = 2

    def breathe(self):
        print("Inhale, exhale.")

# als je wilt dat de class Fish ook de dingen heeft en kan als de class Animal,
# dan geef je deze class mee bij het definiëren van de class
# en in de eigen init spreek je de init van de Animal class aan.
# dit doe je met super().__init__()
class Fish(Animal):
    def __init__(self):
        super().__init__()

    def breathe(self): # bestaat al bij Animal, maar we willen wel wat extra's.
        super().breathe() # alles van de ouder class Animal
        print("doing this underwater.") # plus de extra's

    def swim(self):
        print("moving in water.")

nemo = Fish()
# het nemo object bevat ook de methoden en attributen van Animal.
nemo.breathe() # als deze in eigen class bestaat, voert hij die uit. Anders die van de ouder class.
print(nemo.num_eyes)

Niets helemaal niets

Soms heb je van die dagen dat je helemaal niets doet. Vandaag was weer zo'n passieve dag voor mij. Zolang dit maar af en toe gebeurd vind ik het zelf geen probleem.
Morgen is het weer een nieuwe dag!

Creepy AF

Found this during a walk with my dog. Actually my dog did. But just before he wanted to grab it, I yelled "NO" so hard, he now also has coulrophobia.
Creepy AF

Warme kruik

Vandaag de hele dag al zonder pijnstillers en 2 x een rondje van ongeveer 2,5 km gewandeld.
Pas na het tweede rondje, aan het einde van de middag, kreeg ik weer wat meer last van mijn onderrug. Al denk ik dat de kou ook niet meegeholpen heeft. Ben nogal een koukleum en het verkrampt lopen heeft denk ik niet echt geholpen. Eenmaal thuis heb ik een warme kruik tegen mijn rug gehouden en de pijn werd daardoor weer wat minder.

Wild zwijn

In de verte zag ik wat rennen. Ik dacht eerst een hele grote hond, maar nee, een wild zwijn!

Klik op de foto om het filmpje te zien.
Wild zwijn bij Radio Kootwijk

Wat een onsamenhangend verhaal

Vanavond de film "The Last Thing He Wanted" gekeken. Een film met potentie, maar ik kon er niet inkomen en achteraf vroeg ik me zwaar af waar ik zojuist naar gekeken heb.

Gelukkig is het nieuwe seizoen van Snowpiercer begonnen! En die is keigoed!

Staan, zitten en lopen

Inmiddels loop ik al een week met hevige rugpijn. Het is wel een beetje verbeterd maar nog steeds veel last.
Het advies is om gedurende de dag continu af te wisselen met staan, zitten en wandelen. Erg blij ben ik met mijn sta/zit-bureau. In eerste instantie wilde ik hem niet, zonde van het geld want ik ga toch niet staan. Zitten is namelijk mijn grootste hobby, maar helaas blijkt het ook een zeer ongezonde hobby te zijn. En achteraf, het staan achter je bureau valt reuze mee. Gewoon vaak afwisselen en tussendoor wat rondlopen en dan hou je het goed vol.

Python class en constructor

Python bootcamp #100DaysOfCode #myNotes

Een class is een blauwdruk voor het maken van een object. Bij het aanmaken van het object kun je als je wilt alvast wat attributen meegeven. Een attribuut is een variabele geassocieerd met een object. Dit doe je binnen de constructor, die in Python een methode is die init tussen dubbele underscores wordt genaamd. De constructor wordt elke keer dat een object wordt aangemaakt aangeroepen.
De constructor heeft altijd de parameter "self". Dit is het eigenlijke object dat wordt gecreëerd. Naast self mag je meerdere parameters meegeven aan de constructor. In het voorbeeld hieronder zijn dat user_id en username. Bij het aanmaken van een object van de class User is het logisch om deze tijdens het aanmaken al mee te geven aangezien dit er altijd zal zijn in dit voorbeeld.
Naast een constructor en attributen kan je ook class specifieke methoden definiëren. Een functie dat is gekoppeld aan een object wordt methode genoemd. Ik haal ze vaak door elkaar.

class User:
    # self is het eigenlijke object dat wordt gecreëerd/geïnitialiseerd/
    # init is de constructor
    def __init__(self, user_id, username):
                # bij het aanmaken van dit object (self)
                # wordt alvast een user_id en username meegegeven.
                # deze wordt gekoppeld aan het object op onderstaande wijze.
        self.user_id = user_id
        self.username = username
                # een object kan bij het aanmaken ook andere (start) attributen
                # hebben zoals hieronder toegewezen followers/following. 
        self.followers = 0
        self.following = 0

    def follow(self, user):
        user.followers += 1
        self.following += 1

# user_1 en user_2 zijn objecten van de class User.
user_1 = User("001", "Luus")
user_2 = User("002", "Pat")


user_1.follow(user_2)
print(user_1.followers) # 0
print(user_2.followers) # 1
print(user_1.following) # 1
print(user_2.following) # 0

Naamgeving in Python

Python bootcamp #100DaysOfCode #myNotes

PascalCase voor class namen, hoofdletters met underscores voor constanten en kleine letters met underscores voor de rest.
Wat mij opvalt is dat het niet gebruikelijk is om camelCase te gebruiken binnen Python.

class DitIsEenClass:

DIT_IS_EEN_CONSTANTE = 3.14159

dit_is_een_gewone_variable = "Hallo!"

Meer over naamgeving en stijlafspraken binnen Python kun je lezen in de PEP 8 -- Style Guide for Python Code.

Niets te melden

Ik heb vandaag niets bijzonders te melden, behalve dat ik de rellen zat ben. En om toch maar wat positiefs te schrijven, het gaat vandaag iets beter met mijn rug.