JavaScript a- z cheat sheet
Een erg handige cheatsheet voor alle javascripters tijdens de S4D projecten!
Voor iedereen die de developer tools van Firefox gebruikt, is dit even handig om te kijken! Release nog deze maand! #nice
Download Android GUI PSD kit
Een handige kit en de moeite waard om te delen. Voor als je een snelle start wil maken met het ontwerpen van een Android app in Photoshop, kun je deze kit gebruiken. Hieronder alvast een voorbeeld van de inhoud van de kit:

Speel de 21 Lucifers Game!
Het is mij uiteindelijk gelukt om de game met “21 lucifers” werkend te krijgen! De bovenstaande link toont de online voorbeeldversie waar je de game kan uitproberen.
NOTE - De broncode is beschermd en geminimaliseerd, om te voorkomen dat die zo wordt overgenomen. Het kopiëren ervan is dan ook in het kader van de opdracht niet toegestaan!
Datatypes, Parameters & Test-Driven Programming
De titel van deze blog vat de voor mij leerzame onderwerpen van de afgelopen week samen. We hebben het tijdens de lessen over veel meer dingen gehad dan deze 3 items alleen, maar dit waren hoofdzakelijk onderwerpen waar ik nieuwe dingen bij heb geleerd.
Allereerst de datatypes. Het begrip datatype was voor mij niet nieuw, maar de verschillen tussen Javascript en Arduino en hoe zij omgaan met datatypes wel. Opdracht 12 vond ik daarom tot nu toe de meest leerzame opdracht. Allereerst geeft het e-book wat we daarvoor moesten lezen veel duidelijkheid over hoe bepaalde functionaliteiten of codes werken en waarom dat zo is. In de toekomst wil ik dit dan ook blijven gebruiken als naslagwerk voor Javascript. Daarnaast geeft opdracht 12 je de gelegenheid om de verschillen in omgang met datatypes tussen beide programmeertalen te leren kennen en ermee te experimenteren. De onverwachte dingen vond ik daarbij het meest interessant. Waarom bepaalde dingen werken zoals ze werken weet ik nog niet helemaal, maar dat zal wel duidelijk worden in de les van morgen, waarin opdr 12 behandeld wordt.
Dan zijn er de parameters. Ik heb de afgelopen weken veel geleerd in hoe hiermee omgegaan moet worden, ook in combinatie met de datatypes. Een voorbeeld van een leermoment was tijdens het bespreken van opdracht 10 over de SOS slider in Arduino. Zelf had ik een oplossing bedacht die wel werkte, maar veel makkelijker uitgeschreven kon worden. In feite zette ik een if statement neer op een plek waar die ook weggelaten kon worden. Op dat moment zag ik pas echt het voordeel van parameters, omdat deze ervoor zorgen dat een functie een hele andere uitkomst of return waarde kan hebben. In het voorbeeld werd in principe de parameter door 2 gedeeld en als return waarde terug gegeven. Ongeacht het getal wat meegegeven wordt aan de functie, de uitkomst is altijd de helft daarvan. Toen realiseerde ik mij echt wat een parameter voor verschil kan maken en heb ik mijn eerdere functie-code van 10 regels kunnen terugbrengen naar 1 regel.
Naast het experimenteren bij opdracht 12 heb ik ook een begin gemaakt met opdracht 13. Dit klonk voor mij meteen als een uitdaging, omdat het in dit geval iets wezenlijks is wat je met de opdracht gaat maken en later kan gebruiken. Voor zover ik met de opdracht ben is het mij wel duidelijk dat het hier om Test-driven programming gaat. Dit is het bedenken en noteren van een invoer en verwachte uitvoer van het programma, en daarna controleren of de uitvoer ook echt is wat je verwacht. Later in de opdracht moest ik dit gaan automatiseren door er een functie voor te schrijven die in een log vertelt of de case goed is gegaan, of de verwachte uitkomst behaald of niet. Deze manier van programmeren was nieuw voor mij, maar leek mij direct al heel zinvol. Na het verder maken van opdracht 13 kwam ik tijdens het uitvoeren van de geautomatiseerde code ook achter dat er fout in mijn code zat, waardoor 1 van de in dit geval 4 cases niet de uitkomst had die had gemoeten. Op deze manier heb ik een bug in mijn code kunnen fixen die ik anders niet was tegengekomen. Kortom: Leerzame opdracht met een introductie naar Test-Driven Programming, een manier om je code te checken en fouten eruit te halen die je anders niet had gevonden!
Tip: Arduino Tutorials!
Handige Arduino Tutorials als je er verder mee wil experimenteren!
if(week == 2){return blogpost}
De titel van deze blog zegt alles over de afgelopen tweede week. In deze week hebben ik en mijn mede-studenten weer veel gestoeid met de Arduino en Javascript programmeertalen.
Een van de codes die ik veel heb gebruikt bij het maken van de opdrachten zijn de ‘if’ & ‘else’ combinaties. Zelf was dit voor mij niet nieuw, omdat ik al enige tijd geleden wat met actionscript 3 en andere programmeertalen gedaan heb waar dit ook in voor komt.
Bij de Arduino leidde het gebruik van onder andere if & else in de code tot een mini muziekinstrument, door mij tot ‘MiniPiano’ gedoopt. De 3 buttons op het DangerShield geven wanneer ingedrukt een toon op een bepaalde frequentie. Deze frequentie is te bepalen door de slider boven de button, zodat elke button voor een andere zelf-te-bepalen toonhoogte kan zorgen. Ook heb ik het zo geprogrammeerd dat wanneer meerdere knoppen worden ingedrukt de bijbehorende frequenties bij elkaar opgetelt worden, zodat ipv 3 tonen, 6 verschillende tonen geproduceerd kunnen worden. Voor het schrijven van de code heb ik gebruik gemaakt van veel if & else statements, om elke mogelijke knoppencombinatie erin te zetten. Naast de knoppen en sliders brand het rode ledje standaard, maar wanneer een willekeurige knop wordt ingedrukt brand het gele ledje. Tegelijkertijd geeft het lcd display aan of de 1e 2e of 3e knop is ingedrukt met een 1 2 of 3.
Voor degene die de code willen uitproberen de volgende link: http://bit.ly/x75L5e
Daarnaast heb ik vooral met Javascript veel geoefend met het maken van functies die ‘return’ waarden opleveren. Eerst was dit begrip voor mij nog vaag, zoals bij de uitwerking van opdracht 7_2 naar voren kwam. De vraag was of de code “alert( 30+40 );” een return waarde opleverd. Hier heb ik zelf eerst geantwoord met “Ja, 70.” Tijdens de les werd het mij opeens duidelijk dat dat helemaal niet klopt. De uitkomst van de som 30+40 is 70, maar dat is geen return waarde. Ik heb hiermee geleerd dat in de verschillende programmeertalen een return waarde gedefinieerd moet zijn in een functie en dat wanneer deze functie aangeroepen wordt, dit een bepaalde return waarde kán opleveren als deze in de functiedefinitie staat.
Alternatieve stijl toewijzing (Opdracht 5_6)
Tijdens het maken van opdracht 5_6 kwam ik met een alternatieve oplossing voor het toevoegen van stijlen aan html objecten. Waar de uitvoering van de opdracht doelde op het herhalen van de volgende code: document.getElementById(“groenBlok”).style.backgroundColor = “red”; Zelf vond ik het een nadeel dat je op deze manier niet aan 1 element met 1 regel code stijlen kan toewijzen, maar elke keer opnieuw document.getElementById(“groenBlok”).style moet herhalen met daarachter een javascript variant van css (.backgroundColor / .paddingTop / etc.).
Het alternatief wat ik hierop gevonden heb maakt het mogelijk om in 1 verwijzing naar het element meerdere regels css toe te voegen, waarbij de css ook als css code geschreven is en niet als de js variant. Een voorbeeld van deze code is:
document.getElementById(“groenBlok”).style.cssText = “background:red; padding:10px; font-size:10px;”;
Op deze manier is code voor het toewijzen van een css stijl naar mijn mening een stuk korter en beter te managen.
Hello Arduino!
Vandaag was de eerste dag voor Scripting 4 Designers. Na de aftrap door Arthur en Robert heb ik allereerst de benodigde account aangemaakt voor twitter (@S4DSteven) en voor deze blog.
Eenmaal weer thuis ben ik aan de slag gegaan met de video’s en de eerste 2 huiswerk opdrachten. Daarbij vond ik vraag 1_4 over de concept map een lastige vraag. Zelf heb ik dat geïnterpreteerd als een technische schets over de werking van Arduino. In de les kom ik erachter of dat ook de bedoeling was.
Daarna ben ik met de 2e opdracht aan de slag gegaan. Daarbij vond ik het beantwoorden van de vragen niet moeilijk, maar wel het werkend krijgen van de Arduino en de code. Bij de functie Verify geeft Arduino namelijk geen foutmelding, maar zodra ik het programma (exact hetzelfde als het voorbeeld uit de video) upload, komt de volgende melding tevoorschijn: avrdude: stk500_getsync(): not in sync: resp=0x30 (zie afbeelding hieronder)

Dit is denk ik niet iets wat ik zelf kan oplossen, dus moet ik dat komende donderdag vragen in de les. Tenzij er natuurlijk slimmerikken zijn die dit lezen en een oplossing hebben! Tips zijn altijd welkom.
Tip: Collabtive projectmanagement
Wellicht handig voor het werken in projecten tijdens S4D!