# data[].attributes.body
Logboek

Trello met dezelfde kolommen als het Leanboard

Opsomming gezochte en gevonden informatie

Lijst van bestaande kennis en ontbrekende kennis per groepslid

# data[].attributes.body
Download hier het lettertype dat wordt gebruikt in de Game Boy spellen.

# data[].attributes.body
Week 3️⃣

# data[].attributes.body
Week 3️⃣

# data[].attributes.body
1️⃣

# data[].attributes.body
1️⃣

# data[].attributes.body
1️⃣

# data[].attributes.body
Week 1️⃣

# data[].attributes.body
Week 1️⃣

# data[].attributes.body
Week 1️⃣

# data[].attributes.body
Weken 2️⃣   + 3️⃣

# data[].attributes.body
Week 3️⃣

# data[].attributes.body
Week 3️⃣

# data[].attributes.body
Download bijgaande poster uit en vul de vakken in overleg met jouw groepje in in Trello.

# data[].attributes.body
Ga eerst op onderzoek uit. Dit noemen ze ook wel de oriëntatiefase.

Tijdens deze fase ga je bijvoorbeeld zoeken op internet, ga je mensen interviewen, ga je vragen stellen, ga je boeken lezen, ga je tijdschriften zoeken, ga je filmpjes over het onderwerp kijken, ga je bedrijven bezoeken, ga je op zoek naar soortgelijke applicaties, ga je de concurrenten bestuderen, etc.

Met andere woorden: je gaat je goed verdiepen in het onderwerp, zodat je een expert wordt op dat gebied.

# data[].attributes.body
Bovenstaand schema is bedoeld als handleiding om de stappen van het softwareproces te doorlopen.

Bestudeer het schema goed. Tijdens de lesdagen gaan we dit schema uitgebreid behandelen. Elke stap is belangrijk om tot een goed eindproduct te komen.

# data[].attributes.headline
Beantwoord voor jezelf o.a. de volgende vragen

# data[].attributes.subject
Beantwoord voor jezelf o.a. de volgende vragen

# data[].attributes.body
Wat is Lean? Waar wordt dat voor gebruikt?

Wat is CBL ook alweer? Doen wij het wel goed met ons groepje?

Wat is een Pokedex?

Hoe ziet een Pokedex eruit?

Hoe zou dat gemaakt zijn? Welke techniek zit er achter?

Wat hebben we nodig om dit project te kunnen maken?

Wat weten we wel al?

Wat weten we nog niet?

Hoeveel Pokemon zijn er?

Waar kan ik info krijgen over Pokemon?

Wie in ons groepje weet wat en kent wat? Maak een overzichtje van de groepsleden en hun kennis en kunde.

Welke websites kan ik raadplegen. Houd een lijstje bij van geraadpleegde websites.

Zijn er al concurrenten op de markt?

Wat kunnen wij met ons groepje doen of maken waardoor we uniek zijn. Iets hebben wat anderen niet hebben.

Moet het een website worden of een mobile app of een game of iets op TV, of iets anders? Welke mogelijkheden hebben we?

Etc....

# data[].attributes.body
Week 1️⃣

# data[].attributes.body
Week 3️⃣

# data[].attributes.body
Logboek / Trello bijgewerkt

Individuele doelen

Groepsdoelen

# data[].attributes.body
Logboek / Trello bijgewerkt

Showcase / proposal / voorstel van wat je met je groep gaat maken en je dus als eindresultaat van plan bent op te leveren

# data[].attributes.body
Logboek / Trello bijgewerkt

Lijst van teamafspraken

# data[].attributes.body
Logoek / Trello bijgewerkt

Lijst van taken per groepslid

# data[].attributes.body
Logboek / Trello bijgewerkt

Overzicht van alle taken per groepslid uitgezet in de beschikbare tijd

# data[].attributes.body
Logboek /Trello bijgewerkt

Een werkende GitHub omgeving waarbij elk groepslid mee kan synchroniseren

Een werkende applicatie

# data[].attributes.body
Logboek / Trello bijgewerkt

Test scenario's

Test rapport

Werkende applicatie via internet toegankelijk (individueel)

# data[].attributes.body
Volledig logboek

Volledige Trello

Eindpresentatie

Evaluatie challenge (zie controlevragen 19 en 20)

# data[].attributes.body
Leer meer over CBL.

# data[].attributes.attachment_link.readable_text
We are surrounded by Challenges: large, small, local, global, short and long term. Some we choose, some choose us; some we look forward to, some we dread; some we address, some we try to ignore. Ultimately, how we individually and communally respond to Challenges will determine our future. As problems become increasingly complex and pressing, the need to develop a generation of engaged Learners equipped to identify Challenges and develop innovative and sustainable Solutions is crucial.

Using Challenges to frame learning experiences originated from an exploration of reality television, conversations with individuals who's lives center on Challenges, and reflection on personal learning experiences inside and outside of the classroom. When faced with a Challenge, successful groups and individuals leverage experience, harness internal and external resources, develop a plan and push forward to find the best solution. Along the way, there is experimentation, failure, success and ultimately consequences for actions. By adding Challenges to learning environments the result is urgency, passion, and ownership - ingredients often missing in schools.

# data[].attributes.attachment_link.description
We are surrounded by Challenges: large, small, local, global, short and long term. Some we choose, some choose us; some we look forward to, some we dread; some we address, some we try to ignore. Ultimately, how we individually and communally respond to Challenges will determine our future.

# data[].attributes.body
Maak eerst een proef GitHub. Als je weer weet hoe het werkt en elk groepslid heeft zijn zaken in orde, pas dan...... en niet eerder.... maak je je GitHub voor dit project.

# data[].attributes.body
Logboek / Trello bijgewerkt

Schetsen / Wireframes van alle gebruikersschermen

MockUp's van alle gebruikersschermen

Figma uitwerking van een werkende applicatie

Een drawsql.app uitgewerkte versie van jullie database

Een goedgekeuring van jullie ontwerpen door Docent

# data[].attributes.body
Pokémon is rond 1995 bedacht door Satoshi Tajiri. Het verhaal is toegespitst op fictieve wezens genaamd "Pokémon", die worden gevangen en getraind door mensen, Pokémontrainers genoemd, om ze elkaar te laten bevechten voor de sport.

# data[].attributes.body
Elke speler van het spel verlangt ernaar de beste Pokémon-trainer te worden en alle Pokémon te vangen. In geen van de spellen zijn alle Pokémon te vangen, zodat de speler met iemand die het andere spel heeft, moet ruilen om alle Pokémon te bemachtigen. Sommige Pokémon kan de speler niet vangen, maar moet hij door training levels laten stijgen en zo laten evolueren.

# data[].attributes.body
Je kent hem vast wel, de Pokédex. Dit is dé digitale encyclopedie voor het ontdekken van informatie over verschillende soorten Pokémon. Het aantal Pokémon dat verzameld is op de Pokédex is door de ontdekking van nieuwe Pokémon en regio’s flink uitgebreid. Via de Regional Dex ontdek je alle Pokémon per regio, de National Dex is een compleet overzicht van álle Pokémon.

# data[].attributes.body
Op de Pokédex krijg je informatie over iedere Pokémon die geregistreerd staat in het Pokédex systeem. Binnen de Dex kun je zelf zoeken op nummer of naam van de Pokémon. Je ziet een overzicht van gegevens, waaronder het type en een omschrijving van de betreffende Pokémon.

De Pokédex is een persoonlijk apparaat dat gekoppeld is aan de trainer. Gevangen Pokémon worden in de Dex geregistreerd.

# data[].attributes.body
Deze challenge gaan jullie je eigen Pokédex bouwen.

Het moet in jouw applicatie mogelijk zijn om:
- een overzicht te krijgen van alle, in jouw Pokédex geregistreerde, Pokémon te zien
- Een nieuwe Pokémon te registreren in jouw Pokédex
- De gegevens van bestaande Pokémon in de Pokédex te bewerken
- Een Pokémon te verwijderen uit jouw Pokédex

Om dit voor elkaar te krijgen ga je gebruik maken van C# WinForms en een heuse database.

# data[].attributes.body
Je kunt deze challenge op je eigen niveau starten en afmaken. Dus hoe makkelijk of hoe moeilijk het is, ligt voor een groot deel aan jouw eigen wensen en inzet.

Belangrijk is dat je een goed plan hebt voordat je begint. Daar helpen wij je bij. Zorg dat je de stappen uit deze Padlet goed volgt. Bij vragen of onduidelijkheden moet je vragen gaan stellen.

# data[].attributes.body
Het Leanschema is een prima visueel en handzaam schema om het stappenplan duidelijk te maken.

Trello wordt gebruikt om al jouw bevindingen op te schrijven. Jouw Trelloboard wordt dus jouw bron van inspiratie en informatie.

# data[].attributes.body
Maak voor jezelf en met jouw groepje doelen die je wilt bereiken met deze challenge.

# data[].attributes.body
Een persoonlijk doel kan bijvoorbeeld zijn:
"Over drie weken, als deze challenge af is, kan ik zelfstandig een database aanmaken. Ik weet waar ik dat moet doen en hoe ik dat moet doen. Ik kan een database met minimaal 1 tabel maken. Ik weet ook wat een database is, wat een tabel is en wat kolommen zijn. Verder weet ik welke soorten datatypen er zijn en kan ik mijn keuzes uitleggen."

# data[].attributes.body
Denk goed na over het eindresultaat dat je met jouw groepje wilt afleveren. Houdt het hierbij klein en simpel. De grootste valkuil voor elk software project is dat het te groot wordt gemaakt. Daardoor krijg je het vaak nooit af. Houdt het dus klein.

# data[].attributes.body
Teamafspraken zijn de afspraken en regels die je samen met jouw groepje maakt. Deze gaan over de wijze waarop jullie met elkaar willen samenwerken. Maar ook over de verwachtingen die jullie naar elkaar toe hebben.

# data[].attributes.body
- We starten met de groep elke dag om 9:15 met een StandUp Meeting. Deze duurt maximaal 10 minuten. Elke groepslid bereidt deze meeting voor en beantwoord de vragen: Wat heb je gisteren gedaan? Is alles gelukt? Wat ga je vandaag doen? Welke hulp heb je nodig?

- Elke groepslid is er elke lesdag. Bij afwezigheid wordt de groep op de hoogte gesteld en is vervolgens het afwezige groepslid de hele dag bereikbaar.

- Wij werken met een GitHub, gemaakt door de teamleider. De andere groepsleden worden hiervoor uitgenodigd. Hiermee voorkomen we dat we niet verder kunnen als een groepslid er een keer niet is.

- Gemaakte deadlines over te maken werk worden nagekomen. Lukt dat niet, dan wordt de groep tijdig op de hoogte gebracht.

- Bij niet functioneren van een van de groepsleden wordt gelijk de SLB-coach ingeschakeld voor overleg. Samen wordt gezocht naar een oplossing.

- etc.....

# data[].attributes.body
Dit is de planning die je met jouw groepje gaat maken. Bedenk wat er moet gebeuren. Zet alle werkzaamheden op een rijtje op basis van belangrijkheid.

Verdeel daarna de werkzaamheden onder de groepsleden. Je mag ook aan Pair-Programming doen (zie link hierboven).

# data[].attributes.attachment_link.description
Pair programming is het programmeren van broncode in duo’s.

# data[].attributes.body
Bart en Erik:
- Database ontwerp maken
- Github aanmaken en delen
- Mockup maken Pokédex
- Eerste programmeer aanzet om lijst uit database weer te geven maken
- etc

Raymond en Cara:
- Database maken in PHPMyAdmin
- Mappenstructuur project bedenken en maken in GitHub
- Layout bedenken op basis van Mockup's
- Programmeerwerk van Bart en Erik reviewen
- Eerste aanzet voor toevoegen nieuwe Pokémon maken met PHP
- etc

# data[].attributes.body
Belangrijk is dat je gaat onderzoeken wat je wel al weet over het onderwerp én wat je wel al weet over hoe je het gaat maken. Maar tegelijkertijd moet je ook onderzoeken wat je nog niet weet. Welke kennis moet je nog opdoen? Welke techniek moet je nog leren? Wat kan en ken ik nog niet?

Juist dat is belangrijk om te weten voordat je dadelijk je doelen  kunt stellen.

# data[].attributes.body
Een goede planning is de basis voor jouw succes. Hoe beter je dit onder de knie hebt, hoe zekerder je bent van het behalen van het gewenste resultaat.

Plannen doe je per groepslid, per dag. Maak een goed en overzichtelijk schema zodat je samen kunt bijhouden of jullie nog op schema zitten.

Stel de planning bij als tijdens het uitvoeren blijkt dat dat nodig is.

Vergeet niet de opdrachten voor Nederlands en Burgerschap mee te nemen in je planning!!!!

# data[].attributes.body
Maak Gantt chart (zoek dit op), of vul het voorbeeld aan. Begin bij het plannen met het opsommen van de afzonderlijke taken. Probeer ook taken te verdelen in deeltaken. Hoe uitvoeriger je de taken kunt splitsen in deeltaken, hoe nauwkeuriger je kunt plannen. Als je de tijd wilt inplannen ga dan eerst grof van achter naar voor werken. Begin met het plannen van de presentatie en werk naar de dag van vandaag toe. Stel voortdurend de planning bij als dat nodig is.

# data[].attributes.body
Lees de opdracht voor Engels heel goed.

Ga vervolgens aan de slag met het programmeren. Soms is het handig om twee projecten naast elkaar te hebben.

De eerste is je testomgeving. Hierin probeer je nieuwe dingen uit. Maak je je 'Proof of concept'. De klooiomgeving zeg maar.

De tweede is jullie groepsomgeving waarin je alleen maar code zet die je beheerst en waarvan je weet dat die goed is.

# data[].attributes.body
Maak een testscenario. Dit is een beschrijving / handleiding voor een ander die jouw applicatie moet gaan testen. Beschrijf dus wat er getest moet worden (een functionaliteit), hoe dat moet gebeuren en wat het te verwachten resultaat van de test moet zijn.

# data[].attributes.body
Er zijn een aantal basisregels om iedere presentatie tot een succes te maken.

1. Wees voorbereid

2. Wees op tijd

3. Presenteer met zelfvertrouwen

4. Zorg voor een goede inhoud van je presentatie

5. Sluit goed af

# data[].attributes.body
1. Internet wikipedia pagina's

2. Internet random pagina's over het onderwerp

3. YouTube filmpjes

4. Online cursussen als LinkedIn Learning (via SPL)

5. Bedrijven zoeken en vragen gaan stellen (e-mail, telefoon)

6. Bedrijven bezoeken (pak de bus of trein)

7. Docenten raadplegen en in overleg gaan over workshop

# data[].attributes.body
Stel je gedurende deze challenge voortdurend onderstaande vragen.

Deze controlevragen helpen jou om erachter te komen of je voldoende kennis en kunde hebt opgedaan tijdens deze challenge.

Kun je alle vragen beantwoorden, dan ben je erg goed bezig. Lukt het nog niet om alle vragen te beantwoorden, niet getreurd, dan weet je tenminste waar je nog aan moet werken.

# data[].attributes.body
Download hier het lettertype dat wordt gebruikt in Pokémon games.

# data[].attributes.body
1. Wat is HTML en waar wordt het voor gebruikt?

2. Wat is CSS en waar wordt het voor gebruikt?

3. Wat is JavaScript en waar wordt het voor gebruikt?

4. Wat is PHP en waar wordt het voor gebruikt?

5. Wat is het verschil tussen client-side en server-side.

6. Wat is Apache en Nginx (engine X) en waar wordt het voor gebruikt?

7. Wat is de openingstag en sluittag voor het PHP-script?

8. Waarom wordt er in elke map (folder) een file genaamd index.html of index.php gebruikt?

9. Wat is MySql en waar wordt het voor gebruikt?

10. Wat is SQL language en waar wordt het voor gebruikt?

11. Wat is een Database en waar wordt het voor gebruikt?

12. Wat doet een tabel binnen een Database?

13. Elke tabel heeft een unieke identifier nodig om de afzonderlijke dataregels van elkaar te kunnen scheiden? Ja of nee?

14. Wat is een variabele? Leg uit waarom en waarvoor we die soms nodig hebben.

15. Wat is een function binnen het programmeren? Waarom gebruiken we die?

16. Wat zijn de spelregels omtrent het schrijven van een column?

17. Wat zijn de spelregels bij het debatteren?

18. Hoe kan ik mijn product op de beste manier presenteren? Wat zijn de basisregels of tips die me hierbij kunnen helpen?

19. Heb ik deze challenge iets geleerd? Wat heb ik geleerd? Heb ik voldoende geleerd? Had ik meer willen leren? Waar ben ik trots op? Hoe ging het samenwerken met de groep? Waar moeten we nog in verbeteren?

20. Wat ga ik bij de volgende challenge anders cq beter doen?

# data[].attributes.body
Dit zou een mogelijke optie voor een database kunnen zijn. Stel vragen als je wilt begrijpen hoe en waarom het zo in elkaar gezet is... !!!

# data[].attributes.body
Klik om naar de webpagina te gaan.

# data[].attributes.body
Een simpel voorbeeldje hoe het eruit zou kunnen zien. Uiteraard ben je vrij om er zelf iets anders van te maken. Deze is alleen ter inspiratie.

# data[].attributes.body
Gebruik voor het maken van database verbindingen met PHP bij voorkeur gebruik van PDO.

Ga nu eerst zelf via internet zoeken naar informatie over PDO. Volg daarna onderstaand voorbeeld.

Hieronder een voorbeeldje van de code die je kunt gebruiken.

Let op!! Je zult nog wat code moeten aanpassen om het goed werkend te krijgen. Dat is afhankelijk van jouw naamgevingen en instellingen. Dus geef niet meteen op als het niet meteen werkt. Zoek naar de mogelijkheden!!

# data[].attributes.headline
Download het bestand met de code voor de DB connection

# data[].attributes.subject
Download het bestand met de code voor de DB connection

# data[].attributes.body
Maak een nieuwe file en noem die database.inc.php.
Zet onderstaande code erin. Pas op de plekken waar de puntjes staat de code aan. Dus vul de naam van jouw database, jouw username, jouw password in.

<?php
function dbConnect() {            $dbhost     = "localhost";            $dbname     = "db_.........";            $dbuser     = "usr_..........";            $dbpass     = 'Passwd_........';            $conn       = "";             // connection string            $pdo        = "";             // handler            $charset = 'utf8mb4';
            $conn = "mysql:host=" . $dbhost . "; dbname=" . $dbname . ";charset=". $charset;
            $options = [ // define options for PDO connection                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION, // give error in case of issue                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,       // get row indexed by column name                PDO::ATTR_EMULATE_PREPARES   => false,            ];            try {                $pdo = new PDO($conn, $dbuser, $dbpass, $options); // create connection                return $pdo;            } // end try            catch (\PDOException $e) {                throw new \PDOException($e->getMessage(), (int)$e->getCode());            } // end catch
        } // end dbConnect

# data[].attributes.body
In elke file waarin je de connectie nodig hebt kun je de functie aanroepen. Maar eerst moet je met een include of require de file inladen.

require_once("database.inc.php");

Daarna roep je de functie aan (call function) en sla je het resultaat van de functie, dus wat de functie teruggeeft, op in een variabele.

$conn = Database::dbConnect();

$conn bevat nu de verbinding met de database. Dus via deze 'deur' kun je naar de database gaan.

# data[].attributes.body
Vervolgens kun je de database vragen gaan stellen. Dit doe je met de taal SQL. We gaan nu alle informatie opvragen uit de tabel tb_pokemon van de Pokemon wiens status 1 is.

$sSql = "SELECT * FROM tb_pokemon WHERE status = ?";
$aData = array("1"); //komt op plaats van vraagteken

$stmt = $conn->prepare($sSql);  // prepare the query$stmt->execute($aData);   // execute the query
$rows = $stmt->rowCount(); // aantal gevonden rijen
$result = $stmt->fetchAll(); //zet de rijen klaar voor gebruik

# data[].attributes.body
Nu je de gegevens klaar hebt staan, kun je erdoorheen lopen met een foreach statement. In deze lus zetten we elke rij afzonderlijk op het scherm.

foreach($result as $key=>$value) {

echo $value['pokemon']; //print de naam van de pokemon op het scherm

echo "<br />"; //nieuwe witregel

}

Dus met de code $value['pokemon'] kun je elke kolom uitlezen. Voor het type kun je dan $value['type'] gebruiken.

# data[].attributes.body
Je gaat nu aan de slag met het ontwerpen van de software met behulp van schetsen,  MockUp's, Storyboards, kleurpallets, icons, pictures, moodboards, database ontwerp, etc.

# data[].attributes.body
Pak pen en papier en teken wat in je hoofd zit. Gooi weg en maak opnieuw indien nodig. Na 300 mislukte pogingen mag je je docent vragen om op te geven, niet eerder.

# data[].attributes.body
Maak een grof ontwerp van je hoofdindelingen per gebruikersscherm. Ga nog niets aan kleuren ouzo doen. Denk met name aan de functionaliteiten die het gebruikersscherm (UI) moet krijgen. Maak voor elke UI een aparte MockUp.

# data[].attributes.body
Hier is het Excelbestand als voorbeeld. Je mag uiteraard ook iets anders gebruiken.

# data[].attributes.body
Voor als je tijd over hebt en nog een extra uitdaging zoekt hebben we in het schoolgebouw Pokemon verstopt. Ga op zoek naar de Pokemon en scan de QR-code met je telefoon.

Deze QR-code brengt je naar een webpagina waarin je je eigen endpoint kunt ingeven. Daarna kun je de gegevens van de gevonden Pokemon via jouw endpoint in jouw Pokedex opslaan.

# data[].attributes.body
Ok, Wat moet je doen?

Je maakt een PHP pagina waarbij je $_POST ontvangt en verwerkt. De binnengekomen $_POST verwerk je zo, dat deze wordt opgeslagen in jouw database.

De QR-code brengt je naar een pokemon-pagina die de Pokemon informatie via $_POST doorgeeft aan jouw pagina. Op deze Pokemon-pagina vul jij dus de URL in van jouw PHP pagina.

# data[].attributes.body
Scan de QR-code. Volg de link. Je komt nu op een webpagina waarop je je eigen end-point url kunt invullen.

Nu staat er test.php als voorbeeld.

Jij vult dadelijk iets in als: https://pokedex.mijnwebpagina.nl/insert.php

# data[].attributes.body
Dit lijkt iets voor een workshop zodat het uitgelegd wordt en je vragen kunt stellen.

Het lijkt heel ingewikkeld, maar dat is het uiteindelijk niet. Als je de uitdaging aanneemt zul je zien dat je al snel te gekke dingen kunt maken.

En wie wil er niet op jacht naar nieuwe Pokemon?

# data[].attributes.body
Schrijf een column voor in het magazine: 'PC Gamer Magazine' over de totstandkoming van je Pokedex.

Hoe heb je het aangepakt?

Waar ging goed en wat minder?

Waarom is jouw Pokedex de beste?

Leg uit waarom jouw groep de beste Pokedex-bouwer is.

Onderbouw je verhaal met feiten, argumenten. Humor mag.

Randvoorwaarden:

Je schrijft de column in het Nederlands.

Je schrijft een column van minimaal 300 en maximaal 500 woorden.

Je houdt je aan de regels die horen bij het schrijven van een column (uitleg vindt plaats tijdens een workshop op aanvraag).

Je plaatst de column uiterlijk vrijdag 28 januari 2022 in de inlevermap in Teams

# data[].attributes.body
Discussiëren / debatteren

Je gaat in groepen van 10/12 personen discussiëren over actuele onderwerpen die spelen in de samenleving.

Op basis van eigen onderzoek vorm je je mening over het betreffende onderwerp.

Discussiëren doen we op een respectvolle manier en met argumenten (voor en tegen) probeer je de ander te overtuigen van jouw standpunt.

Volg de workshop discussiëren/debatteren.

# data[].attributes.body
Jullie houden een groepslogboek bij. In dit logboek staat per dag wat elk groepslid heeft gedaan. Elke vordering van werkzaamheden moet controleerbaar terug te herleiden zijn. Dus als jouw docent in het logboek vraagt naar gedane werkzaamheden kun je deze meteen laten zien en aantonen dat ze ook daadwerkelijk gedaan zijn. Het logboek is voorzien van begintijden en eindtijden waarmee je aan de werkzaamheden bent begonnen.

# data[].attributes.body
Elke dag werk je je groeps-Trello-bord bij. Op elk moment in de challenge moet er een actueel overzicht zijn van de werkzaamheden en de vorderingen ervan.

# data[].attributes.headline
Overzicht van de onderzoeken (individueel)

# data[].attributes.subject
Overzicht van de onderzoeken (individueel)

# data[].attributes.body
Je houdt voor jezelf precies bij welke bronnen je hebt geraadpleegd en welke onderzoeken je gedaan hebt. Schrijf voor alles een korte samenvatting wat je geleerd hebt. Uiteraard kun je ook een verkeerde bron raadplegen. Schrijf ook deze op en vermeld waarom die niet aansloot aan jouw kennisvraag.

# data[].attributes.body
1. Denk eraan dat alleen jij weet wat je wilt gaan zeggen. Dus er is niemand die weet, dat je iets vergeet of dat je het verhaal anders had willen vertellen. Wat jij vertelt, is dus gewoon jouw verhaal.

2. Spreek met luide stem.

3. Haal goed adem tussen de zinnen.

4. Praat overdreven langzaam.

5. Beweeg maar zonder te overdrijven.

6. Liever kort en duidelijk, dan lang en wazig en eigenlijk niets gezegd te hebben.

7. Herhalen is goed, maar met mate.

# data[].attributes.headline
Opbouw/ inhoud presentatie : Wees voorbereid! 

# data[].attributes.subject
Opbouw/ inhoud presentatie : Wees voorbereid! 

# data[].attributes.body
1. Heet iedereen welkom en stel jezelf voor.

2. Zorg voor een inhoudsopgave.

3. Elke presentatie heeft een inleiding, kern en slot (dit is tijdens de workshop presenteren behandeld).

4. Zorg ervoor dat je jouw verhaal kunt onderbouwen.

5. Zorg voor een originele opening.

6. Betrek de luisteraar bij je presentatie (bijvoorbeeld door vragen te stellen aan je publiek).

7. Zorg voor een goede afsluiting van je presentatie.

8. Zorg dat je beeldmateriaal hebt.

9. Zorg dat je je laptop hebt opgeladen.

10. Zorg dat alle documenten die je nodig hebt klaar staan.

11. Zorg ervoor dat je niets hoeft te zoeken tijdens de presentatie zelf.

12. Ben goed gekleed. Trainingspakken en jassen zijn niet toegestaan. Een stropdas voor de heren is geen must, maar denk eens na over de professionele uitstraling die dit geeft.

13. Zorg dat je alle kabels hebt en dat je de aansluiting van te voren gecontroleerd hebt. Dus je bent al eerder op locatie geweest om zaken te checken.

# data[].attributes.headline
Iedereen presenteert / maak goede onderlinge afspraken

# data[].attributes.subject
Iedereen presenteert / maak goede onderlinge afspraken

# data[].attributes.body
1. Elk groepslid is aanwezig. Alleen bij absolute overmacht kun je ontbreken tijdens de presentatie. Kan dit niet worden aangetoond gaat de presentatie niet door en krijgt de hele groep een negatieve aantekening.

2. Iedereen van de groep neemt een deel van de presentatie voor zijn/haar rekening.

3. Zorg dat er precies is afgesproken welk groepslid wat doet en zegt.

4. Maar zorg ook ervoor dat iedereen elkaars taak kan overnemen. Dus elk groepslid moet elke vraag kunnen beantwoorden en elk deel kunnen vertellen. Hiervoor moet je dus samen oefenen.

5. Iedereen is er ruim op tijd.

6. Iedereen is voorbereid.

# data[].attributes.body
1. Zorg dat er ruimte is voor stellen vragen.

2. Overtuig je ervan dat jouw publiek de boodschap heeft begrepen.

3. Vat alles nog eens heel kort samen.

4. Bedank je publiek voor de aandacht.

# data[].attributes.attachment_link.readable_text
A few examples of using Flourish for a data-rich hobby

I think it's fair to say that if you're someone who's interested in data visualization, you see ways of applying those techniques in all areas of your life where you can see data could be gathered, even if they're hobbies, daily habits, sports, etc.

An example of this for me recently has been Pokémon GO, which I restarted playing about 6 months ago. I've been enjoying it particularly because of the way it encourages you to walk lots and explore, and because it has an interesting community-building aspect. It's also a very data-rich game, even if that data is sometimes hard to collect or extract! This post is about a couple of examples where I couldn't resist using Flourish to visualize some Pokémon GO data.

Type advantages

One aspect of the game that I've found hard to navigate is essentially a complicated game of Rock, Paper, Scissors: each Pokémon has one or two "types" (which might be Grass, Steel, Fire, etc.) and Pokémon of particular types have advantage in battles over certain other types. (For example, one of the more natural ones is that Water types perform well against Fire types.) The problem is that there 18 different types, so 18² = 324 combinations that it's potentially useful to know.

Sometimes this complete data is presented in a big table with an entry for each combination, as seen here:

This is useful for reference, but it can be easily reduced if you just want to focus on the type advantages it might be useful to remember. For example, if a combination of types have neither advantage nor disadvantage when attacking each other, that's not really worth remembering.

When you remove those elements, there are other ways you can represent it more concisely. For example, this representation is popular:

A chart showing which Pokémon types are supereffective - this is widely reproduced, but the earliest copy I found was from imgur in 2014

However, there are a couple of problems I have with this - the key one is that each type is represented redundantly in the chart multiple times. The other is that it still includes more data than I can easily remember - it includes any type A which is supereffective when attacking another type B, without considering the effectiveness of type B attacking type A.

The alternative representation of these type advantages that I liked best, which addresses both of these issues, is this one from Reddit user r_noob:

A chord diagram from Reddit based on an idea of "type dominance".

This introduces a concept of one type being "dominant" over another: that means that type A is supereffective over type B, and type B is not very effective against type B. This leaves out various combinations that are useful to know about, but those still present are arguably the most important.

I think this is a really nice representation of the data, but, as one Redditor comments, it would be nice if it were interactive so that you can highlight just the relationships with one particular type - since it's a PNG, you can't do that.

Fortunately, that's where Flourish comes in. We have a very easy to use Chord diagram template, which allows you to highlight either particular chords or all chords going to a particular arc.

My attempt to make an interactive version of that type dominance chart is here:

I've overriden the colors for each arc with those that are associated with those types in the game, and chosen the "color by larger end" option for the arcs. This means that if you highlight a particular type, it's clear which arcs represent an advantage for that type (those of the same color) and those that represent a disadvantage (those of a different color). This is more obvious than the other visual cue, which is that the arcs taper from the type with the advantage to that with the disadvantage.

I find this a much easier way to explore the most important relationships between Pokémon types than any other I've seen, and I hope you find it useful too. Here's a link to a single page version of the chart.

The raw data for this visualization is extracted from the GAME_MASTER file in the game, which is the canonical source of that information; there are multiple GitHub repositories which have JSON versions of that file, and the script I wrote to generate CSV files of type effectiveness data should work on any one of them.

Visualizing your progress towards level 40

In common with many games, Pokémon GO has a concept of XP, or Experience Points, which is an indication of your progress through the game. As your XP exceeds particular values, you go up a "trainer level": you start at trainer level 1, and the maximum is level 40. (In the Pokémon GO world, players are Pokémon "trainers".) Reaching these new trainer levels in the game is important in many several ways: new game features become available at particular levels (for example, you can fight in gyms, you have access to more powerful Pokéballs for catching Pokémon, you encounter better Pokémon in the wild, etc.)

One of the interesting aspects of these trainer levels is that they don't go up linearly with you XP - in fact, far from it. This little Flourish story shows the exponential growth in XP requirements as you go progress through the levels - click to the next slide to see the huge jumps needed to get to level 39 and 40:

A few days ago I finally reached level 40 in the game, which is a big personal achievement, though I should say that it doesn't make me a particularly serious player: many of the players I know from London communities have been playing intensively since 2016 and have amassed enough XP to have reached level 40 multiple times over.

However, at that landmark, I thought it would be interesting to figure out where all those Experience Points came from for me. This is interesting because there are many different actions in the game that generate XP, and some people focus much more on some than others. (One of the interesting things about the game is that there are lots of different ways to play it.) I had a hunch that a lot of my XP came from the rewards you get for raising friendship levels with other trainers, but I was interested in seeing how significant a factor it was.

Gathering the data for this was somewhat tricky; the statistics shown on the medals on your trainer profile are very helpful, and I can easily count the the number of friends of each level I'd made. However, I needed to estimate quite a few values, such as the proportion of Pokémon I caught with particular types of throw, and so on. In addition, there are various effects in the game that mean you get multiples of the usual amount of XP; I can remember, for example, that I used a "Lucky Egg" to get double the XP with all but a couple of of transitions to Ultra Friends and Best Friends, but I have no way of assessing in retrospect how much extra XP I got from special events where all catches got double XP, for example.

I suspect the data I built up isn't far out, however, and I think it's still interesting to explore. You can explore this Flourish Sunburst chart yourself, or click through the slides in the story for some commentary:

As expected, the amount of XP I got from the friendship level mechanism is by far the most important source. Other aspects were a surprise for me - I was fairly serious about collecting cheap-to-evolve Pokémon and evolving them in batches with a Lucky Egg on for double XP, but that turned out to be a relatively small part of the XP that got me to level 40.

The other key point that might not jump out at non-players is that the friendship mechanism that generated the bulk of my XP was only introduced into the game in 28th of June. I'm in awe of the dedication of the players who reached level 40 without any of those bonuses!

Enjoyed this blog post? Get the newsletter!

How to make "bar chart race" visualizations without coding

It's time to talk about tables

# data[].attributes.attachment_link.title
Pokémon GO data visualization with Flourish

# data[].attributes.attachment_link.description
A few examples of using Flourish for a data-rich hobby I think it's fair to say that if you're someone who's interested in data visualization, you see ways of applying those techniques in all areas of your life where you can see data could be gathered, even if they're hobbies, daily habits, sports, etc.

# data[].attributes.body
"Als eindresultaat leveren wij een website op waarmee je een overzicht krijgt, een lijst, van alle gevonden Pokémon. Deze lijst komt uit de database.

Er is ook een mogelijkheid om de lijst aan te vullen met nieuwe Pokémon. Hiermee wordt de database aangevuld.

Wat we niet doen is een optie maken voor het wijzigen van de gegevens."

# data[].attributes.body
Een groepsdoel kan bijvoorbeeld zijn:
"Over drie weken, als de challenge af is, hebben wij met onze groep minimaal eenmaal per dag een StandUP meeting gedaan. Hiervan hebben we een logboek bijgehouden. De meeting is gebruikt om de voortgang van alle groepsleden bij te houden."

# data[].attributes.body
https://sketch2code.azurewebsites.net

Wonderbaarlijke website. Zet jouw tekening meteen om in code!!!

# data[].attributes.body
Alle programmeercode is geschreven in het Engels.

Dus namen van id's, classes, functions, variables, databases, tabellen, comments, etc, zijn in het Engels.

Namen van variables zijn altijd een zelfstandig naamwoord (noun).
In de naam van een function zit altijd een werkwoord (verb).

Er wordt gebruik gemaakt van de camelCase notatie in de naamgeving, beginnend met een kleine letter.

Als je object oriented programmeert begint elke classnaam met een hoofdletter.

Filenamen en mapnamen zijn altijd met kleine letters.

Zet waar nodig Comments in je code. Schrijf deze in het Engels.

# data[].attributes.attachment_link.readable_text
camelCase is a naming convention in which the first letter of each word in a compound word is capitalized, except for the first word. Software developers often use camelCase when writing source code.

camelCase is useful in programming since element names cannot contain spaces. The camelCase naming convention makes compound names more readable. For example, myOneMethod is easier to read than myonemethod.

Other examples of camelCase are listed below:

The name camelCase (also "camel case" or "dromedary case") comes from the hump on a camel, which is represented by the capital letter in the middle of the compound word. A camelCase word may have one or more capital letters.

camelCase vs PascalCase

camelCase is similar to PascalCase, which capitalizes the first letters of all words in a compound word, including the first word. For example, myFunction() in PascalCase would be MyFunction(). Programmers may choose to use either font case when writing source code, since it does not affect the syntax. While each developer can choose his or her preferred style, some programming languages have standard naming conventions. For example, in Java, the following cases are recommended:

NOTE: PascalCase is sometimes called "UpperCamelCase," while standard camelCase may be specified as "lowerCamelCase." In recent years, developers have moved away from these terms and use PascalCase and camelCase instead.

# data[].attributes.attachment_link.description
camelCase is a naming convention in which the first letter of each word in a compound word is capitalized, except for the first word. Software developers often use camelCase when writing source code. camelCase is useful in programming since element names cannot contain spaces. The camelCase naming convention makes compound names more readable.

# data[].attributes.attachment_link.description
Coding conventions are a set of guidelines for a specific programming language that recommend programming style, practices, and methods for each aspect of a program written in that language. These conventions usually cover file organization, indentation, comments, declarations, statements, white space, naming conventions, programming practices, programming principles, programming rules of thumb, architectural best practices, etc.

# data[].attributes.body
Zorg dat jouw software via internet toegankelijk is. Hiervoor heb je een domein nodig. Dit domein kun je via FTP benaderen.

De link naar jouw project moet duidelijk in jouw documentatie vermeld staan.

Let op dat dit een individuele taak is. Dus elk groepslid levert de software op. Met andere woorden jullie leveren weliswaar dezelfde software op, maar elk op een ander domein.

Elk groepslid moet ook zijn eigen database draaien. Dus niet stiekem de credentials van een ander gebruiken, omdat die toevallig op dezelfde server draait en het daardoor per ongeluk werkt.

# data[].attributes.body
https://www.youtube.com/watch?v=3-2OE4AFCRE

Vanaf ongeveer minuut twaalf. Kijk naar het voorbeeld met de twee kannen met vloeistof.

# data[].attributes.attachment_link.title
Wat veroorzaakt al die chaos in je hoofd?

# data[].attributes.body
Werkende Pokedex die je kunt bezoeken vanaf je eigen subdomein.

# data[].attributes.body
Jasper Hautvast
Joey Pfoster

# data[].attributes.body
Youri Bartholomeus
Jeremy Bovens
Luc Naus

# data[].attributes.body
Sven Heimsoth
Joris Vetter
Jelle Langeveld

# data[].attributes.body
Paris Stassen
Vigo Lutke-Schipholt
Shoban Overhof
Robin Reinders

# data[].attributes.body
Jeffrey van Hecke
Joshua Makuza (-)
Jarold Boafo
Nouâman Mayfers

# data[].attributes.body
Ilias Kul
Jarrow Cox

# data[].attributes.body
Nick Drinckwaard
Jorrit Hoenjet
Jay Huijbregts
Elise van Broeckhuijsen

# data[].attributes.body
Youri Schoonheim
Stijn Hoeveler
Djeno Peeters
Zuzanna Hyndza

# data[].attributes.body
Nour Alkeswani
Marendsly Inocente

# data[].attributes.body
Christian Mercedes
Bram Noortman
Luuk Koolmoes
Titiziano Florack