Home of Kaj Rietberg I am writing about my experiences as a front-end dev. 2023-11-11T00:00:00Z https://www.kajrietberg.nl/ Kaj Rietberg kaj@kajrietberg.nl Mijn nieuwe weg User Experience (2013) 2013-02-28T00:00:00Z https://www.kajrietberg.nl/posts/2013-02-28-mijn-nieuwe-weg/ <p>De meesten die dit lezen weten dat ik op zoek ben naar een nieuwe uitdaging. Ik ben op zoek naar iets dat beter bij mij past. Al jaren ben ik verslingerd aan het WereldWijdeWeb, dus waarom niet hiervan mijn werk maken. Ik heb het al eerder geprobeerd, maar een eigen bedrijf en daarnaast leraar zijn, dat lukt mij niet. Beiden vergen veel aandacht, beiden kosten veel energie. Daarom toen besloten om mij alleen te richten op het leraar zijn. Ik merkte al snel dat dit het niet ging worden.</p> <p>Via loopbaancoaching aan het nadenken, soms te snel, maar ik was onderweg. Het voelde vaak niet prettig, ik ben iemand die slecht kan genieten van de weg ergens naar toe, Ik wil er gelijk al zijn. Gelukkig ging het genieten van de weg ergens naar toe steeds beter. Door de loopbaancoaching heb ik juist veel geleerd over mij als persoon en niet zozeer over werk dingen.</p> <p>Juist die persoonlijke dingen hebben mij veel gebracht. Na besloten te hebben iets in de ict te gaan doen, besloten dat dit iets met webontwikkeling werd en dat webontwikkeling uiteindelijk User Experience gaat worden. Dat is dus mijn doel: UX. Nu weet ik mijn doel en ga ik de weg er naar toe uitstippelen. Ik heb al ideeën, maar de komende tijd ga ik mijn actieplan invullen hoe ik daar ga komen. Ik heb er zin in. Een nieuwe weg.</p> Mijn UX-Frontend toekomst een maand later (2013) 2013-05-29T00:00:00Z https://www.kajrietberg.nl/posts/2013-05-29-mijn-ux-front-end-toekomst-een-maand-later/ <p>Mijn uiteindelijke doel is nog steeds User Experience Guru. Mijn weg er naar toe gaat via Front-end ontwikkeling, het bouwen van gebruiksvriendelijke websites is mijn doel. Dit zou ik het liefste bij een educatief bedrijf doen. Mijn drive om het onderwijs voor leerlingen leuker te maken is er nog steeds.</p> <p>Sinds een maand loop ik stage/ co-work ik 2 dagen per week bij Thomas Jacobs. Thomas is een freelance Front-end ontwikkelaar met zeer veel ervaring. Voor Thomas houd ik mij bezig met Pop a Question. Het idee wat het is staat al. Het design voor de voorkant van de website heb ik afgelopen maand omgezet naar een werkende webpagina. Hiervoor heb ik het framework Foundation als basis gebruikt met daarnaast eigen CSS(3) en HTML(5).</p> <p>Als editor gebruik ik BlueFish, deze werkt op Windows en Linux (Lubuntu heb ik). Het was een maand van nadenken, bouwen, uitproberen, weer nadenken, verder bouwen of opnieuw bouwen en ga zo maar verder. Erg leuk om te doen, al doende leer ik veel en door de hulp van Thomas kwam ik op momenten dat ik echt vast zat weer verder.</p> <p>Het gave van het bouwen van een website is het bezig zijn met iets concreets, langzaam aan zie je wat het wordt en wordt het steeds mooier en beter. Verder het creatief bezig zijn en oplossingen bedenken over hoe ik Foundation het beste gebruik en de verdere inzet van CSS en HTML optimaal benut is heerlijk om te doen. Tijdens het bouwen hebben we het uiterlijk ook op bepaalde punten aangepast. Dit flexibel bezig zijn maakt het werk soms wel lastig, vooral als ik denk dat we klaar zijn, moet het toch nog iets anders. Maar zorgt er voor dat het uiteindelijke product beter en mooier wordt. Dus iets waar je nog trotser op kan/mag zijn.</p> <p>Wat ik heb geleerd de afgelopen periode:</p> <ul> <li>Foundation framework</li> <li>CSS (3) kennis verder uitgebouwd</li> <li>HTML(5) kennis verder uitgebouwd</li> <li>Veel is via Google te vinden</li> <li>Het wiel niet opnieuw uitvinden, iemand anders heeft vast al een oplossing gevonden</li> <li>Samen kijken naar iets levert nieuwe ideeën op</li> </ul> <p>Langzaam aan word ik de webontwikkelingswereld ingezogen. Ik vind het heerlijk. Deze wereld gaat mijn wereld worden. Afgelopen periode heb ik een paar sollicitaties de deur uitgedaan. Helaas niet uitgenodigd voor een gesprek, maar dat gaat wel komen. Mijn vaardigheden moet ik op een hoger plan krijgen, dat is het belangrijkste. Zoals ik nu tegen aankijk zal een baan als Front-end ontwikkelaar die zich bezig houdt met UX/Interactie design mij zeer aanstaan. Lekker afwisselend. Afgelopen periode veel geleerd. Lekker bezig geweest en mooi op schema. Komende maand ga ik mij bezighouden met het wireframen van verschillende pagina's van Pop a Question en deze bouwen.</p> Wat een front-end ontwikkelaar moet kunnen in 2015 2013-06-12T00:00:00Z https://www.kajrietberg.nl/posts/2013-06-12-wat-een-frontend-developer-moet-kunnen/ <p>Afgelopen periode heb ik verschillende vacatures waarin Front-end developers worden gevraagd bestudeerd. Ik ben geen fan van vacatures, maar aangezien ik er 1 wil worden ben ik benieuwd wat er gevraagd wordt van een Front-end developer. Ik heb een lijst samengesteld van vaardigheden die gevraagd worden van Front-end developers. De meesten ken ik wel, maar Sass en Less waren nieuw voor mij. Hieronder staat de lijst met vaardigheden die een Front-end developer moet kunnen. Met daarbij een korte uitleg en/ of verwijzing naar een site als je er nog meer over wil weten.</p> <ul> <li>CSS (3): Cascading Styling Sheets. Met <a href="https://www.w3.org/Style/CSS/">CSS</a> beschrijf je het uiterlijk van een website. De nieuwste versie is CSS3. Hiermee kan je visuele zaken toevoegen die eerst alleen met een afbeelding konden. Dit zorgt ervoor dat het uiterlijk van de website nog meer met CSS bepaald kan worden, websites worden hiermee lichter. Ik vind het zelf een verademing omdat dit het voor mij makkelijker maakt. Ik hoef geen afbeeldingen uit Photoshop te halen om het zelfde effect te krijgen. Zo kan je schaduw via de CSS toevoegen.</li> <li>HTML (5): HyperText Markup Language. We zijn momenteel bij <a href="https://www.w3.org/TR/2012/CR-html5-20121217/">versie 5</a>. Daarom wordt deze ook gevraagd, het voegt vele nieuwe mogelijkheden toe om websites interactief te maken. Eerder gebruikte men daar Flash voor. Nu hebben we HTML5. HTML is bedoelt om de structuur van een website aan te geven.</li> <li>jQuery: <a href="http://jquery.com/">jQuery</a> is afgeleid van Javascript. jQuery zou makkelijker moeten zijn te gebruiken in websites omdat het simpeler is dan Javascript. jQuery gebruik je om interactieve applicaties toe te voegen aan je website. Zaken die met HTML en CSS niet kunnen of lukken.</li> <li>Less: Ze noemen het zelf de dynamische Stylesheet taal. Zoals ik het begrijp kan je met <a href="http://lesscss.org/">Less</a> 1x een bepaald iets definiëren en dat kan je in je stylesheet steeds weer gebruiken.</li> <li>Sass: het lukt me niet echt een beschrijving te geven van <a href="http://sass-lang.com/">Sass</a>. Het lijkt wel php met CSS gecombineerd. Het wordt een taal genoemd en draait op Ruby. Sass en Less lijken het zelfde doel voor ogen te hebben, gemakkelijker Stylesheets bouwen met minder tekens.</li> <li>Mobile en responsive: Mobile design is het bouwen van een website voor een mobiel. Verschillende websites gaan over op een mobiele website als je die met je mobiel bezoekt. Vaak zie je dan m.endanderestvande.url. Responsive is dat de website met elke grootte van het scherm meegaat en het beste uiterlijk levert zo dat de gebruiker van de website optimaal bedient wordt.</li> <li>Scrum: dit is een software ontwikkelmethode. Je kan hier een opleiding in volgen om een scrum-master te worden. Je werkt als team samen om de software te ontwikkelingen, dit doe je op een vastgelegde manier, de <a href="https://nl.wikipedia.org/wiki/Scrum_%28softwareontwikkelmethode%29">scrum methode</a>.</li> <li>SEO: Search Engine Optimization. Staat niet bij alle vacatures, maar ik kwam deze term wel tegen. Volgens mij weet iedereen hier wel wat van. Maar dit is wel echt een specialisatie. Er zijn pros die dit alleen maar doen en dus ook heel goed kunnen.</li> <li>WordPress: Het gaat om een Content Management Systeem. Ik werk zelf al jaren prettig met WordPress. Heb ook verschillende WordPress Meetups georganiseerd en de eerste 2 Wordcamps hier in Nederland mede-georganiseerd. Zo zijn er meerdere CMS-en, zoals Joomla, Drupal en ExpressionEngine.</li> <li>Github: Github kan je gebruiken om samen software te ontwikkelen. Je kan lid worden van een ander zijn Github en volgen wat veranderingen zijn aan de software, maar ook nieuwe ideeën aandragen. Wordt volgens mij veel gebruikt.</li> <li>OTAP: Hiermee wordt de weg bedoelt die software aflegt in haar ontwikkeling. Het staat voor <a href="https://nl.wikipedia.org/wiki/OTAP">Ontwikkeling, Test, Acceptatie en Productie</a>.</li> <li>SVN: Staat voor <a href="http://subversion.apache.org/">Subversion</a> en is versie beheer software. Ik ken het vanuit de WordPress wereld waar hier mee wordt gewerkt. Ik gebruik het zelf niet en kan ook niet goed uitleggen wat je er precies mee kan.</li> </ul> <p>Naast de tools om mee te werken heb je als Front-end ontwikkelaar ook persoonlijke vaardigheden nodig zoals:</p> <ul> <li>creatief denken</li> <li>oprecht geïnteresseerd zijn in nieuwe technieken</li> <li>klantvriendelijkheid</li> <li>kunnen samenwerken</li> <li>zelfstandigheid</li> <li>oog voor detail</li> </ul> Waar ik sta als front-end ontwikkelaar (2015) 2015-01-13T00:00:00Z https://www.kajrietberg.nl/posts/2015-01-13-Waar-ik-sta-als-front-end-ontwikkelaar/ <p class="lead"> Sinds half april 2014 heb ik een baan als front-end ontwikkelaar bij <a href="http://www.zorgweb.nl/">Zorgweb</a>. Daarvoor heb ik een klein jaar stage gelopen als front-end ontwikkelaar en veel gelezen over front-end ontwikkeling. Gezien het moment qua werk is een goed moment om op te maken waar ik nu sta in mijn nieuwe beroep. Want wat kan ik nu eigenlijk? Wat heb ik er voor gedaan? Voor mij belangrijke vragen, ik wil namelijk verder groeien in mijn beroep. Niet vele jaren stil blijven staan, wat ik als leraar in het speciaal onderwijs wel deed. Ik wil de regie hebben. </p> <p> Bij Zorgweb ben ik aangenomen als styler/ front-end ontwikkelaar. Ik doe wat design, maar vooral zet ik de aangeleverde designs om zodat onze z-advies applicatie het uiterlijk krijgt die onze klanten graag willen. Vaak worden deze aangeleverd door een design bureau. <br /> De front-end bestaat uit een framework dat door een eerdere front-ender in elkaar is gezet. Deze is met Sass gebouwd. Wat ik afgelopen maanden heb gedaan, is een demo styling/uiterlijk ontwikkelt zodat (toekomstige) klanten kunnen zien wat we aanbieden, ik heb designs gebouwd met CSS en het framework dat wij hebben staan, ik heb simpele zorgverzekering vergelijkers een uiterlijk gegeven dat past bij de klant, de verschillende designs getest in verschillende browsers (hierover ideeen opgedaan). In september heb ik voor ons team een succesvolle presentatie gegeven over hoe we onze applicatie Responsive kunnen bouwen zodat het meeschaalt met de verschillende mobiele apparaten die er zijn. Door deze presentatie heb ik het team kunnen overtuigen dat we ons in die richting moeten begeven. </p> <p> Veel tijd ging zitten in het leren werken met het framework dat eerder was gebouwd. Het lastige was dat het voor mij te weinig gedocumenteerd was en deels ook verouderde CSS oplossingen werden toegepast. Dat maakte het lastig om het framework eigen te maken. Deels is dat mijn kennis van Sass wat te kort schiet. </p> <p> Naast mijn werk bij Zorgweb ben ik actief betrokken bij Fronteers, de vakvereniging voor front-end ontwikkelaars. Ik regel met iemand anders artikelen voor het weblog. Fronteers biedt verschillende video's aan van sprekers tijdens bijeenkomsten, maar er zijn genoeg mensen die liever iets leren dmv lezen. Op moment van schrijven zijn er 2 artikelen geplaatst, hiervan is 1 van mij. Het artikel gaat over <a href="https://fronteers.nl/blog/2015/01/css-resets">CSS-resets.</a> Dat er nu al een artikel van mijzelf op een weblog staat zoals die van Fronteers maakt mij zeer trots. Weer iets dat ik bereikt heb. </p> <p> Afgelopen jaar heb ik doelen voor mijzelf opgesteld die ik wilde bereiken na 1 jaar te werken bij Zorgweb. Deze doelen ben ik nu aan het evalueren, dit is voor mij een goed moment. Het zorgverzekeringen seizoen is voor ons bedrijf nu afgelopen. We evalueren het afgelopen jaar en gaan plannen maken voor komend jaar. Voor mij een goed moment om te kijken waar ik sta en waar ik in januari 2016 wil staan. </p> <p> Afgelopen jaar ben ik beter geworden in en ervaring opgedaan met: </p> <ul> <li>CSS</li> <li>HTML</li> <li>CSS architectuur</li> <li>Kennis over software ontwikkeling</li> <li>Webbrowsers (wat doen ze, hoe werken ze)</li> <li>Het <a href="https://www.kajrietberg.nl/2015/08/introduction-on-http.html">http protocol</a></li> <li>Zelf een webserver (nginx) opzetten en website hosten</li> <li>Basis beginselen van visueel design</li> </ul> <p> Ik merkte ook tekortkomingen van mij omdat ik er geen tot weinig ervaring mee heb. Van daaruit wil verder groeien en punten oppakken om te leren. </p> <p> Komend jaar wil ik beter worden in of mij verdiepen in: </p> <ul> <li>CSS en HTML</li> <li>Sass (vooral het gebruik van mixins en functies)</li> <li>Responsive webdesign voor webformulieren</li> <li>CSS architectuur (eigen framework voor onze applicatie bouwen)</li> <li>Accessibility voor webformulieren</li> <li>Web-animatie voor UX</li> <li>Visueel design (typography, kleur gebruik, layout)</li> <li>Starten met wat JavaScript</li> </ul> <p> Als ik deze lijst zie, zijn dat veel punten. Het zal allemaal niet lukken. Maar in het meeste zal ik wel weer meer ervaring krijgen dan ik nu heb. </p> <p> Ik ga dit doen door conferenties te bezoeken, boeken lezen (UX Boekenclub Groningen bezoeken), Fronteers bijeenkomsten bezoeken, weblogs te volgen, mensen bevragen en met ze discusieren over front-end en design onderwerpen, zelf artikelen schrijven, mijn hobby fotografie actiever oppakken. Als ik dit allemaal zo zie, ga ik weer een mooi en leuk jaar tegemoet! </p> Introduction on HTTP 2015-08-14T00:00:00Z https://www.kajrietberg.nl/posts/2015-08-14-introduction-on-http/ <p class="lead">In 2013 I decided to turn jobs. I was a teacher in Special Needs education and wanted to become a front-end developer. When you’re a front-end starter, it is important to know the basics of the web. There are a lot of topics on front-end development that can be found on the Internet. Most topics that starters are learning are HTML, CSS and JavaScript or jQuery. These are topics that will be learned by doing. Are these the real basics of front-end development? In a way yes, but one of the real basics is HTTP. I explored the web to find good references to read and learn about this topic. Well there is enough to find but not that much about this topic. Is it not important or is it not sexy to write about this topic? Don’t know, but this article is for web dev starters to show them the basics of HTTP.</p> <h2>What is HTTP?</h2> <p>Ludovico Fischer calls <a href="https://code.tutsplus.com/tutorials/a-beginners-guide-to-http-and-rest--net-16340">HTTP the life of the web</a>. And as front-end developer it’s also your lives, you will earn our money with HTTP. What is this HTTP then? If we look at us humans, we can talk to each other. We put letters behind each other and those letters make words. We put these words in a certain order to make sentences. The order in which we put these words is based on rules. Because of these rules we know how to build sentences and with those we can build stories. These rules are important so we can understand each other better. If every one would make his or her own kind of sentences we still wouldn’t understand each other, even if we speak the same language. Some people wrote all of these rules down so everyone can use these rules. Now we can understand each other well. We have a lot of languages on our planet, but to make sure we can understand each other better, we humans said that English is the language of the world. So if we want to understand each other we better learn English. So we have rules how a language should be used and we said we have one language that we all can speak to understand each other, English. Computers need the same to understand each other. They also need rules about how they can communicate with each other and also one language to understand each other. For computers that are on the Internet there is one language they have to speak to understand each other and there are rules put in a protocol. This is where HTTP comes in. HTTP stands for Hypertext Transfer Protocol. As you can see it’s a protocol that describes how hypertext should be transferred. Nowadays it’s not only hypertext but also a lot of other media too, like images, sounds, movies, etc.</p> <p>We have a language and this language has a protocol, HTTP. The transportation from HTTP goes from a client (for example a web browser) to a server, to another server, to a destination server and back to the client. This transportation goes with TCP and IP over wire, by air or satellite. It starts with a client who makes contact with a server; let’s say to wake the server. Then sends a request to a server for information and the server tries to reply with the information needed. They understand each other. Even though they are different brands, with different kind of software they all speak the same language, the HTTP language. If we hadn’t this, the Internet would not be useful. As you can see we speak of a request and trying when client and server are talking to each other. It is a request from the client to the server in which the client asks, “please try to match this”. The server will look and see what matches or comes closest and send the information that is the best match. It isn’t always possible to send the information that is requested. When a client requests for information in the Dutch language, but there is nothing in the Dutch language it will send what comes closest. In short, this is what HTTP is about. We will dive deeper into this subject in this next section. And talk about some parts of HTTP.</p> <h2>The different HTTP parts</h2> <p>HTTP has a header with Meta data and a body. The important part of the HTTP file is the header. The client sends information in the request-header to the server, like which client it is, if caching is possible, if there is a cookie for this website, if gzip is accepted by the client.</p> <img src="https://www.kajrietberg.nl/assets/img/http-parts.png" /> <p>The server looks up which information is given to the server and tries to deliver the information that is asked for or tries to be as close by as possible. That means if gzipping is on it wil gzip the files. And the server gives the information (or data) that is asked for. It puts this in de body of the HTTP response and of it goes to the client. Together with the information that is send in de body, the server sends a response-header with information see number 2 in the image). This information is what you call meta-data. It is information about the data. This meta-data is in de header of the HTTP response and gives the client information, like the kind of server it is coming from, the kind of content it has in de body (text, html or an image), etc. The meta-data is not important for visitors of websites or people using web applications. They don’t see or hear it. For the client, the server and all the web developers it is important.</p> <h2>Good to now about HTTP</h2> <p>HTTP has more to offer then what this article covers. This article is about the basics of HTTP. When you want to know more about this subject read the links that are at the end of the article. Here is some basic and important knowledge of HTTP.</p> <h2>Verbs</h2> <p>HTTP uses some verbs. These verbs are doing an action. Some of the verbs that are used in HTTP are GET, POST, PUT, DELETE. The most used verbs are GET and POST. GET number 1 in the image is used to get data from a webserver, like the HTML and the CSS. GET is used to build the website in a browser. GET is seen as a safe way of communication to a server, because it only wants to pick something up and deliver it to the client. POST number 2 in the image is used to bring new information to the server. A form on a website or a basket in a webshop are methods that use POST. In the image above is a Newsletter subscription used. This action uses POST to send this information to the server. POST is seen as an unsafe way of communication because it wants to change something on the server. When POST is done there should always be a redirect to another source. Because when you refresh and the information that was sent to the server will be sent twice. That’s not what the visitor wanted.</p> <img src="https://www.kajrietberg.nl/assets/img/verbs.png" /> <h2>Status codes</h2> <p>When the client is contacting the server. The server will interpret the message of the client and talks back. It always gives back a status code. With this status code the client knows if the request was successful or not and what went wrong. The most known status code is the 404. This means that the client did do something wrong. Most of the time visitors of a website typed a wrong url. These are the status codes there are:</p> <ul> <li>1xx: Informational - Request received, continuing process.</li> <li>2xx: Success - The action was successfully received, understood, and accepted.</li> <li>3xx: Redirection - Further action must be taken in order to complete the request.</li> <li>4xx: Client Error - The request contains bad syntax or cannot be fulfilled.</li> <li>5xx: Server Error - The server failed to fulfill an apparently valid request.</li> </ul> <p>This list is coming from the RFC2616 document of the IETF. Each hundred number has some more codes it can give back to the client. Like the 404 is one of the 4xx numbers. Or 304 is one of the 3xx numbers. With 304 the server tells the client that nothing has changed. The server knows this because the client did send in the HTTP header when it was the last time it visited that server. This means that the client can grab a local copy of the information, which is faster then downloading it again.</p> <p>For now it is important that you know what a status code is and which general numbers there are and what they mean. In the image below you see a GET request and the server sees that it doesn’t have to send it again because it was not modified and still in the cache of the client.</p> <img src="https://www.kajrietberg.nl/assets/img/get.png" /> <h2>Cookies</h2> <p>Cookies are sent with the http-header from the server to a client. With this cookie a server can see if a client has already been there. This means that when a client comes a second time on a server it will look for the cookie and send the cookie information with the HTTP header over to the server. The server now knows that the client already visited this server. See below how a cookie looks like. Not something that is eatable.</p> <img src="https://www.kajrietberg.nl/assets/img/cookies.png" /> <h2>Caching</h2> <p>A browser stores data from websites like images, HTML, CSS, JS in a folder on the hard drive of a computer. This we call caching of the information. A client only does that when the server allows it. The server sends with the HTTP header information about caching from the data it is sending to the client. One of the things it sends is if caching is allowed, but also when the expire date of the cached material is and when the client has to look back on the server for new material.</p> <h2>Proxies</h2> <p>Because the HTTP information is based on text other machines can look at it and do something with it. Like a proxy. A proxy at an office can read the information that is sent through and for example throw it away. Because the proxy has to filter the requests that are going to twitter and facebook and don’t let them pass the proxy. The proxy can see in the HTTP header to which host a request is going.</p> <h2>Change the HTTP header</h2> <p>The HTTP request is changeable with jQuery. If you change the request of the client, the output of the server will also be different. See <a href="https://api.jquery.com/jQuery.ajax/">jQuery AJAX</a>.</p> <h2>Webdeveloper tools</h2> <p>The best way of looking at HTTP is going to your web developer tools and look at the network tab. Here you find all the information needed. Take a look at the image below and read the explanation afterwards. What you see is the FireFox web developer tools. If you open the web developer tools go to Network and visit a website.</p> <img src="https://www.kajrietberg.nl/assets/img/developer-tools.png" /> <p>The request header (1) shows which website you visit, here it is Smashing Magazine. This is the header the web browser did send to the server of Smashing Magazine. The request header show the host the client wants to connect to, the user-agent, which is Mozilla FireFox, what it accepts, like language and kind of media, a cookie, etc. Above it is the response header (2) from the server of Smashing Magazine. We can see it is a nginx server, it had the data gzipped, and some more things. Above that (3) you can see the url that was requested, the client requested it with a GET method and the status code was 200, which means that it went OK. A lot of this information is also viewable at the left of the image. In the blue bar you see the url (4) that was requested, the status code (5) the server returned, the method was GET (6), the type of media it is (7), how big (8) it is and the time (9) it did cost to get to the client. There are many files that were coming to the client. They all did get in with a GET request. The media types are different, from JavaScript, to gif, png and html. The files are coming from different servers or from a subdomain. Look at the status code. There are two different kinds of status codes to see in this window. The green round one (10) and the orange round (11). The green one is a 200 OK, but the orange one is a 304. This means it is not modified since the last time the client visited Smashing Magazine. So these files could be retrieved from the local cache. There is a lot to see at the web developer tools about HTTP. It gives a lot more insight in what HTTP is. A good way to get around in HTTP and the web developer tools is reading about HTTP and watch at the same time in the web developer toolsbar.</p> <h2>Why should I know about it? What can I do with it?</h2> <p>This is the question we always have to ask our self when hearing about something. The same is with HTTP. Why should we know about this? Well when I was reading some articles about HTTP some pieces came together. HTTP gives more insight in how the web works. As a starter web dev you will know better how clients, like browsers, and servers work together and how they react on each other. Especially when you go more on the technical side of front-end development it is important to know this. You will become a better web apps and websites programmer. Because you know how the connection from a client to a server is best used and can take this in account for your web application. Understanding HTTP is important for debugging.</p> <p>When I was a trainee at popaquestion.com we had to see how the server was responding on our POST and GET action with a form. We wanted a user become a member (POST) and that the questions this person made also would be linked to the username. So we had to look with the web developer tools how the server acted on our POST request and put the Username together with the id’s of the questions.</p> <p>Knowing about HTTP can give you a better insight on performance of your website or application. When working on bigger projects the project team mostly has influence on the choice of webserver. Then the project team has to think about how HTTP influences the performance. By knowing HTTP you know which setup of the webserver will give the best performance for you website or application. Like checking the webserver its configuration and seeing if keepalive is enabled. This will save a lot of time. Now the client only has to make contact to the server once. Making contact is just a few milliseconds. But a website or application nowadays needs to do this around 90 times to get al the information that is needed to show the website or application. Keepalive takes care of this by keeping the connection open until all the information the client needs is send and the last package will have a connection close in the HTTP header. Or something like HTTP pipelining can be used in applications and reduces waiting time. It should be supported by the client and the server. Pipelining will send a request for the HTML and CSS at the same time, these GET requests will be processed by the server at the same time and will be send to the client after each other. This will safe some extra time.</p> <h2>The future</h2> <p>The IETF has a working group named HTTPbis who are working on HTTP 2.0. It will be mainly focused on performance. As they call it there self: “HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by introducing header field compression and allowing multiple concurrent messages on the same connection.” But HTTP 2.0 will do more. It will know how to prioritize; it lets more important requests come first. Another thing that will be better is that less TCP connections will be needed. That will be possible because it will have parallel requests and responses in one connection. Also an interesting thing is the server push, which means that a server knows which information the client needs, so it will already send this information before it is needed. The future is looking interesting for HTTP. If you want to read more about this future and go in depth read, “HTTP continues to evolve” by Ilya Grigorik.</p> <h2>Resume</h2> <p>In this article are some basics of HTTP explained. If you want to learn more about HTTP go and read the recourses that were used for this article. The important things that were mentioned in this article are: HTTP lets clients and servers talk to and understand each other on the Internet. HTTP uses a header for sending meta data to a server and back to a client which helps the communications between them. HTTP uses some verbs, which are actions. Like GET, PUT, DELETE, POST, etc. GET and POST are the most used ones. With GET data is coming from the server. With POST data will be changed or put on the server. Like an username on a description form. A server sends a status code to the client, so the client knows how the communication went. HTTP helps with the caching of data on the local machine with information that is stored in the header of the HTTP request and response. We started with HTTP 0.9. Now the web is many years on HTTP 1.1, but we see the end of this. HTTP 2.0 is coming closer to the web, which means the web will be faster. Yes! But other protocols are still there and could be a bottleneck. Like TCP or IP. And according to Ilya latency is also still a problem and costs some extra time.</p> <pre><code>“We are in a great industry, an industry of movement”. </code></pre> <h2>Recources</h2> <ul> <li>The best place to start is the free book of Ilya Grigorik <a href="http://chimera.labs.oreilly.com/books/1230000000545">“High Performance Networking”</a>.</li> <li><a href="http://code.tutsplus.com/series/http-succinctly--net-33683">http://code.tutsplus.com/series/http-succinctly--net-33683</a></li> <li><a href="http://code.tutsplus.com/tutorials/http-the-protocol-every-web-developer-must-know-part-1--net-31177">http://code.tutsplus.com/tutorials/http-the-protocol-every-web-developer-must-know-part-1--net-31177</a></li> <li><a href="http://code.tutsplus.com/tutorials/http-the-protocol-every-web-developer-must-know-part-2--net-31155">http://code.tutsplus.com/tutorials/http-the-protocol-every-web-developer-must-know-part-2--net-31155</a></li> <li><a href="http://www.ietf.org/rfc/rfc2616.txt">http://www.ietf.org/rfc/rfc2616.txt</a> and <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.html">http://www.w3.org/Protocols/rfc2616/rfc2616.html</a></li> <li><a href="https://datatracker.ietf.org/doc/draft-ietf-httpbis-http2/?include_text=1">https://datatracker.ietf.org/doc/draft-ietf-httpbis-http2/?include_text=1</a></li> <li><a href="http://tools.ietf.org/html/draft-ietf-httpbis-http2-10">http://tools.ietf.org/html/draft-ietf-httpbis-http2-10</a></li> </ul> Waar ik sta als front-end ontwikkelaar (2016) 2016-04-04T00:00:00Z https://www.kajrietberg.nl/posts/2016-04-04-waar-ik-sta-als-front-end-ontwikkelaar-2016/ <p> Het is april 2016. Nu bijna 2 jaar front-end ontwikkelaar. Wat heb ik geleerd, hoe heb ik dit geleerd, en hoe ga ik verder? Vragen die ik mijzelf steeds stel. Via deze weg ga ik hier een antwoord op geven. </p><p> </p><h2>Wat heb ik geleerd?</h2> <p> Ik kan mijn weg vinden in CSS en HTML. De designs die wij aangeleverd krijgen kan ik bouwen met CSS, soms zitten er lastige punten in die niet lukken vanwege slechte compatibiliteit van browsers of bugs in browsers. Eerst was dit nog spannend, maar nu niet meer. Ik merkte de laatste tijd dat de uitdaging hiervan weg was en daardoor ook de uitdaging in mijn werkzaamheden. Ik heb een basis voor de CSS van elke applicatie omgezet in een Framework/ basis waar ik met Sass een template van bouw. Ik gebruik hierbij wat mixins, extends, variabelen en nesting. </p> <p> Ik kan mail-templates bouwen. Het designen lukt een beetje. Ik heb een eigen template gebouwd zodat ik bijna zeker weet dat deze goed wordt getoond in verschillende browsers. </p> <p> Ik weet waar ik mijn info vandaan moet halen als ik iets niet weet. Ik kan gewoon niet alles weten, dus weten waar welke info te krijgen is of welke persoon het meeste weet van een bepaald onderwerp is zeer belangrijk. </p> <p> Ik heb meer inzicht in hoe een webbrowser werkt, wat het http protocol is en hoe het werkt. Zie: <a href="http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/" title="How browsers work, artikel op HTML5 Rocks">HTML5Rocks.</a> </p> <p> Ik ken de rol van een Front-end ontwikkelaar nu beter en de plek binnen een bedrijf. Dit is veelzijdig en geheel afhankelijk van wat er binnen een bedrijf nodig is. De basis is bouwen van websites of applicaties waarbij CSS, HTML en/of JavaScript nodig is. Maar of je dan ook design er bij pakt of dat je scrum master wordt of noem maar op. Echt, de rol Front-end ontwikkelaar is net zo divers als het werkgebied. </p> <h2>Hoe heb ik dit geleerd?</h2> <p> Ik lees verschillende webfeeds, krijg de nieuwsbrief van Smashing en HTML5-weekly en de Sass nieuwsbrief. Ik bestel boeken als ik denk dat het handig is. Als ik iets moet weten, duik ik er letterlijk in. Ik besteed dan uren om via websites, boeken, twitter, bekijk broncode van websites, kijk hoe anderen iets aanpakken, ik bezoek meetups en conferenties, noem maar op om er achter te komen hoe een onderwerp in elkaar steekt. Ik maak daar aantekeningen van. Ik wil een onderwerp kunnen voelen/beleven. Dan snap ik het en als ik dan weer iets nieuws lees begrijp ik wat er wordt bedoeld. </p> <p> Ik gebruik het geleerde uiteindelijk in mijn praktijk. Als ik dan zaken niet weet, kan ik door mijn zoektocht snel antwoorden vinden op mijn vragen. </p> <h2>Wat vind ik van front-end?</h2> <p> Lastig om bij te blijven. Er valt zo veel binnen dit werkveld, waar richt ik mij op? Wat lees ik wel en wat niet? Het komt misschien negatief over, maar dit is iets wat mij de laatste tijd tegen valt en ik momenteel moeite mee heb. </p> <p> Ik heb gemerkt dat veel zaken lastig lijken, maar door ermee aan de slag te gaan wordt het steeds makkelijker. Er over blijven lezen en praten maakt iets niet makkelijker. </p> <p> Er veranderd zoveel, als ik in een ander onderwerp duik ben ik bang dat ik iets mis van weer een ander vlak. Ik kan niet alles weten en dat leren accepteren is belangrijk. Iedereen in dit werkveld weet niet wat hij/zij doet. We zijn aan het uitproberen, we denken het te weten. Maar niemand weet het zeker. Daarom hoef je ook niet bang te zijn om fouten te maken. Wees nieuwsgierig en leer nieuwe dingen, brand je vingers en probeer weer opnieuw. Ga lekker door en je komt er wel. </p> <p> Front-end en nog breder alles wat er online gebeurt is een bijzonder werkgebied. We zijn aan het ontdekken wat er allemaal kan en elke dag is er wel iets nieuws of anders. Dat is juist zo heerlijk van dit gebied. </p> <h2>Hoe nu verder?</h2> <p> Ik heb met mijzelf afgesproken dat ik mijn werk spannend en uitdagend wil blijven vinden. Daarom afgesproken met mijn bazen dat ik meer verantwoordelijkheid krijg. Ik ben verantwoordelijk voor de huisstijl en wat hierbij komt kijken, ik ben verantwoordelijk voor de front-end van alle applicaties, onze eigen website. Alle uitingen die wij naar buiten doen (beetje marketing) ben ik verantwoordelijk voor.<br /> Ik bedenk voor de gebieden waar ik verantwoordelijk voor ben doelen, welke natuurlijk aansluiten bij de bedrijfsdoelen. Ik wil dat de gebieden waar ik verantwoordelijk voor ben ook bijdragen aan het behalen van de bedrijfsdoelen. </p> <p> Ik stel steeds doelen, maar dat doe ik nu eens niet voor mijzelf. Ik ga mij nu eerst verder verdiepen in JS en data visualisatie. Daarna zien we wel verder. Het stellen van doelen is een manier om de toekomst te willen controleren en dat doe ik nu eens niet. Maar even laten gaan en go with the flow. </p> Mail template bouwen; een startpunt 2016-04-05T00:00:00Z https://www.kajrietberg.nl/posts/2016-04-05-mail-template-bouwen/ <p>Email is nog steeds of weer een belangrijk communicatiemiddel. Het leek een tijdje er op dat we het minder gingen gebruiken. Maar in de stroom van sociale media is mail juist weer belangrijker geworden, je kan het makkelijker bewaren. Bedrijven sturen steeds meer post via de mail ipv briefpapier. En we abonneren ons liever op een nieuwsbrief dan constant maar alle sociale media af te lopen om bij te blijven. Het sturen van een goed leesbare mail en dan heb ik het niet over inhoudelijk maar over het uiterlijk is goed te doen, als je maar weet hoe. En dit hoe is anders dan het bouwen van een website. Zoals velen zeggen is het net zoals in de begintijd dat tabellen gebruikt werden voor het uiterlijk van je website. Het is weer terug in de tijd. De reden hiervoor ligt aan het feit dat er veel mail-clients zijn. De bedrijven die mailclients bouwen vinden het niet belangrijk genoeg om deze net zo vaak te updaten als met een webbrowser. Iets wat ik mij ook kan voorstellen.</p> <p>Om voor onze klanten beter beslagen ten ijs te komen heb ik mij verdiept in het bouwen van mail-templates. De informatie die ik verzameld heb wil ik hier met jullie delen.</p> <p>Door je te verdiepen in het bouwen van mail templates kan je klanten vertellen wat wel en niet mogelijk is. Zij weten vaak niet wat wel en niet kan en verwachten hierdoor dat bijvoorbeeld knoppen altijd rond zullen zijn. Wat dus niet zo is.</p> <p><strong>Denk er aan: dit artikel is geschreven in april 2016.</strong> De ontwikkelingen gaan gestaag in de mail-wereld, maar ze zijn er wel. Er zullen betere en nieuwere technieken zijn. Bekijk de links onder aan het artikel voor plekken om deze nieuwere informatie te bekijken.</p> <h2>Algemeen</h2> <p>Om de boodschap, wat heb je besteld, voor wie en wat zijn de gegevens van deze personen, over te brengen lijkt een single column layout het beste te werken. De boodschap moet duidelijk leesbaar zijn.</p> <p>Een link in de mail met: &quot;Lees in de browser&quot; zou mooi zijn, mocht de mail niet duidelijk leesbaar zijn kan iemand er voor kiezen om de link in de browser te lezen. Maar dit zou betekenen dat de mail ook online zou moeten staan. Ivm de privacy kan dit niet altijd.</p> <p>Belangrijke boodschap bovenaan zetten ivm afbreken van een mail in een mail-client. Gebeurt vaak op mobiel. Pixel perfect design in elke mail-client lukt je niet.</p> <p>Melding op bedankt pagina dat mensen een bepaald mailadres toevoegen aan hun adressenbestand zodat de mail niet in de spamfilter terecht komt.</p> <h2>Bouwen</h2> <p>Voor de opbouw van email templates wordt een <code>&lt;table&gt;</code> element gebruikt met daarnaast een <code>&lt;tr&gt;</code> en een <code>&lt;td&gt;</code>. Meer heb je niet nodig. Hiermee kan je makkelijk alles op de goede plek zetten en weet je dat in de meeste mail-clients de mail goed staat. En dit laatste daar gaat het om. Je kan ook gebruik maken van meer semantische HTML tags zoals een <code>div, p, h1-h6,</code> maar je hebt dan grote kans dat er verschillende mail-clients zijn die de styling daaraan gekoppeld niet toont. Zo heeft Outlook 2007+ moeite met het tonen van de padding op een p en een div. Op elke <code>&lt;table&gt;</code> en bijna elke <code>&lt;td&gt;</code> kan of moet je gebruik maken van een aantal attributen namelijk:</p> <ul> <li>align</li> <li>bgcolor</li> <li>border</li> <li>cellspacing</li> <li>cellpadding</li> <li>width</li> <li>height</li> </ul> <p>Gebruik voor elk element een eigen <code>&lt;table&gt;</code>, dit is modulair opbouwen van je mail. Hierdoor kan je een element makkelijk verplaatsen, toevoegen of verwijderen. Hierdoor krijg je ook natuurlijke breekpunten die belangrijk zijn voor Outlook, in lange emails zet Outlook die anders zelf en dan kan het op een plek komen waar je het niet wilt. Visuele problemen zie je hierdoor ook sneller en zijn makkelijker op te lossen.</p> <p>Gebruik de overall table voor de achtergrond kleur, body wordt door sommige mail-clients genegeerd. Gebruik onderstaande manier:</p> <pre><code class="language-html"> &lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot;&gt; &lt;tr&gt; &lt;td bgcolor=”#000000”&gt; Your email code goes here. &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; </code></pre> <p>Je kan shorthand attributes gebruiken, maar schrijf dan wel de waardes voor elke kant voluit.</p> <p>Reken bij meerdere kolommen iets minder % dan 100% bij elkaar opgeteld, dan weet je zeker dat het naast elkaar blijft staan. Outlook plaatst soms wat extra ruimte en dan komen ze niet naast elkaar te staan.</p> <p>Je kan een mailtemplate zelf opbouwen. Maar om je werk uit handen te nemen kan je ook gebruik maken van een mail-template. Ik heb hieronder een aantal opgenoemd.</p> <p>Templates</p> <ul> <li><a href="http://foundation.zurb.com/emails.html">Foundation for email</a></li> <li><a href="https://github.com/rodriguezcommaj/salted">Salted van Litmus</a></li> </ul> <p>Er zijn meer templates te vinden, maar verschillende zijn 3 of meer jaar niet aangepast. Er zijn zeker wel wat veranderingen geweest in de mail-client wereld. Dus die heb ik hier weggelaten .</p> <h2>Design</h2> <p>Voorbeelden:</p> <ul> <li><a href="http://inspiration.mailchimp.com/#all">Mailchimp voorbeelden</a></li> <li><a href="https://www.campaignmonitor.com/best-email-marketing-campaigns/">Campainmonitor</a></li> <li><a href="http://reallygoodemails.com/">Really Good Emails</a></li> </ul> <p>Maak de mail maximaal 600 - 800px breed. De schermen waarin je de mail krijgt te zien zijn niet breder. Je nest verschillende tables. De eerste heeft een breedte van 100%, de tweede een breedte van 600px. Degene die daar dan inkomen zijn de elementen van de mail. Deze geef je dan een breedte van 100% of een andere breedte als je met verschillende columns wilt werken.</p> <h2>Typografie</h2> <p>Zet alle tekst in een <code>td</code>. Zoals eerder benoemd kan semantische HTML tags, maar is niet gegarandeerd dat elke mail-client ze weergeeft.</p> <p>Geef elke td een inline styling met:</p> <ul> <li>color: ; Beste is hexidecimaal met 6 tekens. Meeste garantie.</li> <li>font-family: ; Zet bij font bestaande uit meerdere woorden wel ' ' er om.</li> <li>font-size: ; Gebruik px. Bij iOs wordt alles onder de 14px weergegeven als 14px of je moet - webkit-text- size-adjust: 100% en -ms -text sizeadjust: 100% toepassen. Voor mobiel maak je tekst 16-18px. Maak kopteksten niet te groot</li> <li>font-weight: ; Je kan woorden of de getallen gebruiken.</li> <li>line-height: ; Voor gewone tekst gebruik je het beste 4px meer dan font-size is. Bij een heading zelfde of zelfs iets minder. Maar kijk vooral wat goed staat en leesbaar is.</li> </ul> <p>Je kan bovenstaande op een table zetten, maar het is niet gegarandeerd dat een td de styling meekrijgt van de table zoals het geval is bij webbrowsers.</p> <p>Elke mail-client toont teksten. Deze zijn ook belangrijk in je mail. Je wilt een boodschap overbrengen. Web safe fonts van 16px zijn het beste te gebruiken. Zie een typography overzicht bij <a href="http://templates.mailchimp.com/design/typography/">Mailchimp</a>. Zorg er qua styling voor dat jezelf alles bepaalt en niet de mail-client, dan weet je zeker dat het er uitziet zoals je bedoelde. Gebruik geen afbeelding als fallback om een font te laten zien. Veel clients blokkeren afbeeldingen op default. Gebruik dan fonts die erg lijken op jouw font, kijk op <a href="http://ffffallback.com/">ffffallback.com</a>. Je kan web-fonts inladen via <code>@font-face</code>, <code>&lt;link&gt;</code> en <code>@import</code> in een style block in de header. De laatste werkt het beste, maar heeft ook beperkingen.</p> <h2>Responsive</h2> <p>Zorg er voor dat je mail mobiel vriendelijk is. Mails worden tegenwoordig veel op mobiel bekeken. Je kan media-queries gebruiken, maar niet alle mail-clients kunnen er mee overweg. Grootste deel wel. De media-queries kunnen in de head gezet worden, want de mailclients die de head laten staan, zijn ook degene die overweg kunnen met media-queries.</p> <p>De 2de table element in de template heeft een vaste breedte omdat sommige mailclients (o.a. veel Outlook) niet met percentage kunnen omgaan. Om er voor te zorgen dat deze vaste breedte op mobiel overschreven wordt zetten wij in een mediaquerie:</p> <pre><code>@media screen and (max-width: 600px) { table[class=&quot;fluid-table&quot;] { width: 100% !important; } } </code></pre> <p>De table die de vaste waarde van bijvoorbeeld 600px heeft gekregen, krijgt ook <code>class=&quot;fluid-table&quot;</code>. Voor mail op mobiel kan je verder nog kijken of je lettertype juist groter maakt en bepaalde ruimtes tussen linkjes en logo's ook groter. De belangrijkste mail-client die niet om kan gaan met media-queries op elk platform is: <strong>Gmail</strong></p> <h3>Artikelen:</h3> <ul> <li><a href="http://alistapart.com/article/can-email-be-responsive">Can email be responsive</a></li> <li><a href="http://labs.actionrocket.co/the-hybrid-coding-approach">The hybrid coding approach</a></li> </ul> <h2>Afbeeldingen</h2> <p>Gebruik:</p> <ul> <li>jpg. Wordt goed ondersteund.</li> <li>png. Voor transparante afbeelding deze gebruiken. Vaak iets groter dan jpg</li> <li>gif. Voor animatie deze gebruiken. Nadeel is dat ze vaak erg groot worden.</li> </ul> <p>Afbeeldingen worden vaak geblokt, zorg er voor dat ze niet belangrijk zijn voor je verhaal en plaats een alt-text die je ook styling meegeeft door inline styling op het img element te plaatsen. Het beste is ze in te laden met een absoluut pad. Zet ze dus ergens op je server. Verschillende mail clients zetten ruimte om een afbeelding, daarom display: block; toepassen op een afbeelding. Voor retina kan je het beste een afbeelding dat 2x zo groot is nemen en op de img de juiste breedte meegeven. Zorg voor compressie via software voor dat je de afbeelding online zet.</p> <p>Gebruik <code>vspace=&quot;10&quot; hspace=&quot;10&quot;</code> voor padding om afbeeldingen heen in Outlook.</p> <pre><code>&lt;img src=&quot;img/fluid-images.jpg&quot; width=&quot;240&quot; height=&quot;130&quot; style=&quot;display: block; color: #666666; font-family: Helvetica, arial, sans-serif; font-size: 13px; width: 240px; height: 130px;&quot; alt=&quot;Fluid images&quot; border=&quot;0&quot; class=&quot;fluid-image&quot;&gt; &lt;img src=&quot;responsive-email.jpg&quot; width=&quot;500&quot; height=&quot;200&quot; border=&quot;0&quot; alt=&quot;Can an email really be responsive?&quot; style=&quot;display: block; padding: 0; color: #666666; text-decoration: none; font-family: Helvetica, arial, sans-serif; font-size: 16px;&quot; class=&quot;fluid-image&quot;&gt; </code></pre> <p>We kunnen deze afbeelding schaalbaar maken door het volgende in een media-querie en de head van de template te stoppen:</p> <pre><code>img[class=&quot;fluid-image”] { width:100% !important; height: auto !important; } </code></pre> <h2>Links</h2> <p>Zet links niet te dicht op elkaar, op mobiel kan je dan niet goed de juiste link klikken. Je kan het font iets groter maken of de line-height iets hoger zodat er meer ruimte om een link zit om aan te klikken.</p> <p>iOs maakt van onderstaande elementen een link die aanklikbaar is, hierdoor krijgt het de standaard styling van een link. Je kan dit ondervangen door een span met een class er op om heen te zetten. Geef de class in je style block in de header de styling mee die je graag wilt zien. Plaats ook een !important er achter zodat je zeker weet dat inline styling overschreven wordt.</p> <ul> <li>data (lijkt er op dat alleen data in de toekomst dit doen)</li> <li>telefoonnummers</li> <li>adressen</li> <li>tijd</li> <li>email-adressen</li> </ul> <p>Deze kan je ook niet laten detecteren en dan gebruik je:</p> <pre><code>&lt;meta name=&quot;format-detection&quot; content=&quot;telephone=no&quot;&gt; &lt;meta name=&quot;format-detection&quot; content=&quot;telephone=no&quot;&gt; &lt;meta name=&quot;format-detection&quot; content=&quot;date=no&quot;&gt; &lt;meta name=&quot;format-detection&quot; content=&quot;address=no&quot;&gt; &lt;meta name=&quot;format-detection&quot; content=&quot;email=no&quot;&gt; </code></pre> <p>Gebruik je bovenstaande manier, dan haal je styling en functie weg, dus zijn de links ook niet meer aanklikbaar.</p> <p>Voor alleen telefoonnummers kan je in de style tags in de head zetten:</p> <p><code>a[href^=tel]{ color:#F00 ; text-decoration:none ;}</code></p> <p>Volgens Litmus is de beste manier om spans met een class er om heen te zetten en die dan te stylen.</p> <pre><code>.appleLinksWhite a {color: #ffffff !important ; text-decoration: underline ;} .appleLinksBlack a {color: #000000 !important ; text-decoration: none ;} &lt;span class=”appleLinksBlack”&gt;+32(0)612345678&lt;/span&gt; </code></pre> <p>Mijn ervaring van het zetten van een border-bottom via een span is dat Outlook er een hele border van maakt en niet alleen op de bottom. Voor een rij getallen die je onder elkaar zet en wilt tonen als optelling werkt deze techniek niet.</p> <h2>Buttons</h2> <p>Gebruik voor buttons geen afbeeldingen, die worden geblokt en weg is je knop op het eerste gezicht. Je kan VML-based knoppen maken. Nadeel hiervan is dat ze niet makkelijk aan te passen zijn, niet onderhoudbaar zijn, slecht leesbaar voor een designer/ ontwikkelaar. (Zie bij tools bulletproof email buttons). Handiger is in een td een anchor link te plaatsen en de styling op de td te zetten met een padding. Nadeel is dat niet elke mail-client padding accepteert en de link is alleen aanklikbaar en niet de hele knop. (Foundation for email; http://foundation.zurb.com/emails/docs.html#buttons). Of een anchor link in een td plaatsen en op de link dikke borders plaatsen. Te dikke borders worden niet geaccepteerd door Outlook. Maak ze dus niet te dik of probeer een variant van laatst genoemde en bovenstaande.</p> <pre><code class="language-html"> &lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; class=&quot;responsive-table&quot;&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt; &lt;a href=&quot;#&quot; target=&quot;_blank&quot; style=&quot;font-size: 16px; font-family: Helvetica, Arial, sans-serif; font-weight: normal; color: #666666; text-decoration: none; background-color: #5D9CEC; border-top: 15px solid #5D9CEC; border-bottom: 15px solid #5D9CEC; border-left: 25px solid #5D9CEC; border-right: 25px solid #5D9CEC; border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; display: inline-block;&quot; class=&quot;mobile-button&quot;&gt; Learn More → &lt;/a&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; </code></pre> <h2>HTML en CSS en JS</h2> <p>Gebruik tables voor neerzetten van je email. Gebruik simpele CSS, veel CSS3 wordt niet ondersteund door verschillende mail-clients. De nieuwere Outlook's ondersteunen CSS zeer slecht. Pixel perfect stylen gaat je waarschijnlijk niet lukken of na veel extra tijd. Zet de styling in de head en inline of alleen inline. Gmail stript de <code>&lt;head&gt;</code> en dus ook de <code>&lt;link&gt;</code> en <code>&lt;style&gt;</code> tag. Geen shorthand bij schrijven van CSS. Schrijf het vol uit, dit geeft de meeste garantie dat het getoond wordt.</p> <h3>CSS3</h3> <p>Van CSS3 kan je gebruiken:</p> <ul> <li>border-radius</li> <li>box-shadow</li> <li>text-shadow</li> <li>transform (voor aanpassingen aan de grote of iets scheef laten staan)</li> <li>animation: Met transition of @keyframes, beide in de head plaatsen. Of gebruik een gif, denk aan grote en outlook toont 1 beeld.</li> </ul> <p>JavaScript: niet gebruiken omdat email clients dit er uit halen vanwege veiligheid.</p> <h2>Reset styles</h2> <pre><code> &lt;style type=&quot;text/css&quot;&gt; /*////// RESET STYLES //////*/ p{margin:0 0 10px 0;} a{word-wrap:break-word;} table{border-collapse:collapse;} h1, h2, h3, h4, h5, h6{display:block; margin:0; padding:0;} img, a img{border:0; height:auto; outline:none; text-decoration:none;} body, #bodyTable, #bodyCell{height:100%; margin:0; padding:0; width:100%;} /*////// CLIENT-SPECIFIC STYLES //////*/ #outlook a{padding:0;} /* Force Outlook 2007 and up to provide a &quot;view in browser&quot; message. */ @-ms-viewport{width:device-width;} /* Force IE &quot;snap mode&quot; to render widths normally. */ img{-ms-interpolation-mode:bicubic;} /* Force IE to smoothly render resized images. */ table{mso-table-lspace:0pt; mso-table-rspace:0pt;} /* Remove spacing between tables in Outlook Desktop. */ .ReadMsgBody{width:100%;} .ExternalClass{width:100%;} /* Force Outlook.com to display emails at full width. */ p, a, li, td, blockquote{mso-line-height-rule:exactly;} /* Force Outlook Desktop to render line heights as they're originally set. */ a[href^=&quot;tel&quot;], a[href^=&quot;sms&quot;]{color:inherit; cursor:default; text-decoration:none;} /* Force mobile devices to inherit declared link styles. */ p, a, li, td, body, table, blockquote{-ms-text-size-adjust:100%; -webkit-text-size-adjust:100%;} /* Prevent Windows- and Webkit-based mobile platforms from changing declared text sizes. */ .ExternalClass, .ExternalClass p, .ExternalClass td, .ExternalClass div, .ExternalClass span, .ExternalClass font{line-height:100%;} /* Force Outlook.com to display line heights normally. */ a[x-apple-data-detectors]{color:inherit !important; text-decoration:none !important; font-size:inherit !important; font-family:inherit !important; font-weight:inherit !important; line-height:inherit !important;} /* Force iOS devices to heed link styles set in CSS. */ &lt;/style&gt; </code></pre> <h2>Outlook</h2> <p>Outlook 2007+ op Windows hebben Word als hun rendering engine en daardoor is het een beperkte mail client. Die op de Mac heeft daar geen last van, die is gebaseerd op webkit. Om te zorgen dat Outlook mee werkt kan je <a href="http://templates.mailchimp.com/development/css/outlook-conditional-css/">conditinal comments</a> gebruiken.</p> <p>Outlook toont geen gif's, alleen het eerste frame. Outlook.com filtert the CSS background-image property.</p> <pre><code>&lt;!--[if mso]&gt; /* Plaats HTML en CSS hier */ &lt;![endif]--&gt; &lt;!--[if (IE)]&gt; /* Plaats HTML en CSS hier */ &lt;![endif]--&gt; </code></pre> <p>Outlook.com targeting is ook met:</p> <p><code>.ExternalClass div[class=&quot;ecxmyclass&quot;]</code></p> <h2>Gmail</h2> <p>Filtert id's en classes en verwijderd de style tag uit de header. Vanwege deze mailclient is het gebruik van inline styling zo belangrijk. Hierdoor kan je ook geen media-queries gebruiken, want die staan in je style tag in de header en worden er dus uitgesloopt.</p> <h2>iOs</h2> <p>In iOs krijgen linkjes voor adres, telefoonnummer, mailadres een blauwe kleur. Als je dit niet wilt zijn er <a href="https://litmus.com/blog/update-banning-blue-links-on-ios-devices">verschillende oplossingen</a>. De handigste is:</p> <p>In de header:</p> <ul> <li><code>.appleLinksWhite a {color: #ffffff !important; text-decoration: underline;}</code></li> <li><code>.appleLinksBlack a {color: #000000 !important; text-decoration: none;}</code></li> </ul> <p>In de table:</p> <p><code>&lt;span class=”appleLinksBlack”&gt;866-787-7030&lt;/span&gt;</code></p> <h2>Standaard</h2> <p>Er is geen email standaard. Alles gebeurd op basis van good practices. Er zijn verschillende pogingen ondernomen om tot een standaard te komen maar de mail-client bouwers gaan er niet in mee.</p> <h2>Tools</h2> <ul> <li><a href="http://buttons.cm/">Bulletproof email buttons</a></li> <li><a href="http://ffffallback.com/">Fallback font zoeken</a></li> <li><a href="https://litmus.com/builder/">Email builder en inliner</a></li> <li><a href="https://litmus.com/scope/">Code bekijken van gekregen email met Litmus Scope</a></li> </ul> <h2>Testen</h2> <p>Bij de mail heb je verschillende mailclients. Deze tonen niet alle CSS die je gebuikt. Dit verschilt per client. Het verschil hierbij is veel groter dan bij de browsers. Er zijn ook meer clients die gebruikt worden. We spreken dan over desktop en mobiel. Om er voor te zorgen dat de mail in de meest gebruikte clients goed toonbaar is kan je allemaal clients installeren. Dit zal je nooit helemaal lukken. Verschillende apparaten zorgen voor verschillende clients. Dat zijn er uiteindelijk zoveel dat het te kostbaar wordt. Je kan een abonnement nemen op <a href="https://litmus.com/email-testing">Litmus email testing</a> of <a href="http://www.emailonacid.com/">Email on Acid</a> (bij acid kan je credits kopen om per keer een mailtemplate te testen). Hier kan je makkelijk een mail template testen. Of neem een gratis account op Mailchimp. Zet daar je template in en laat je <a href="http://mailchimp.com/features/inbox-inspector/">template testen voor $3,- per test</a>. Dit kan goedkoper zijn dan een abonnement op een test applicatie.</p> <h3>Mailchimp test route</h3> <p>Bij Mailchimp kan je een gratis account aanmaken. Hier kan je een account aanmaken. De template die je hebt gebouwd kan je hier inplakken, aanpassen op basis van de preview die je ziet en daarna kan je deze via de knop Run inbox inspection laten testen. Je kan een abonnement nemen van $10,- p/m en dan is het gratis. Of een eenmalige test kopen voor $3,-. Voordeel van dit laatste is dat je niet aan een abonnement vast zit. Nadeel is dat je na 1x testen en nog aanpassingen maken nog een x zou moeten testen en je kan maximaal 10 clients kiezen. En dat zou weer geld kosten.</p> <h2>Mail-clients</h2> <p>Op <a href="http://emailclientmarketshare.com/">Email Market Share</a> kan je zien welke mail-clients welk aandeel hebben qua gebruik. Mail-clients veranderen eens in de zoveel tijd. Test je mail-templates om de zoveel tijd.</p> <h3>Meest gebruikte mail clients in Nederland</h3> <p>Hier ben ik nog niet achter. Ik denk dat het vrij gelijk loopt met die wereldwijd.</p> <h2>Spam filters</h2> <p>Check de woorden in je mail bericht ivm dat je in een <a href="http://templates.mailchimp.com/concepts/spam-filters/">spam-filter</a> kan komen.</p> <h2>Handige theorie linkjes</h2> <ul> <li>Boek: <a href="http://modernhtmlemail.com/">Modern HTML email</a> (vooor beginners volgens de schrijver)</li> <li>Boek: <a href="http://professionalemaildesign.com/">Professional email design</a></li> <li>Tips voor het bouwen van een <a href="https://litmus.com/blog/html-email-coding-101-infographic">template voor de te gebruiken html en css</a></li> <li><a href="https://www.campaignmonitor.com/dev-resources/">Tools for coding HTML emails</a></li> <li><a href="http://responsiveemailresources.com/">Responsive email resources</a></li> <li><a href="http://responsiveemailpatterns.com/">Responsive email patterns</a></li> <li><a href="http://templates.mailchimp.com/">Overzicht van Mailchimp</a> (aanrader!)</li> <li><a href="http://webdesign.tutsplus.com/series/mastering-html-email--webdesign-17696">Verschillende artikelen over bouwen en designen van email</a></li> <li><a href="http://www.benjystanton.co.uk/blog/making-responsive-html-emails/">Workflow voor bouwen van een mail</a></li> <li><a href="https://litmus.com/community/learning">Litmus community learning</a></li> <li><a href="https://litmus.com/blog/a-guide-to-css-inlining-in-email">Overzicht voor code inliners</a></li> </ul> <h3>Overig</h3> <ul> <li><a href="https://litmus.com/community">Email community</a></li> <li><a href="https://www.w3.org/community/htmail/">HTML for email group van de W3C</a></li> </ul> <h2>People to follow</h2> <ul> <li><a href="https://twitter.com/flcarneiro">Fabio Carneiro</a></li> <li><a href="https://twitter.com/iamelliot">Elliot Ross</a></li> <li><a href="https://twitter.com/moonstrips">Nicole Merlin</a></li> </ul> <h2>Bedrijven om te volgen</h2> <ul> <li><a href="http://actionrocket.co/">Action Rocket</a></li> <li><a href="https://www.displayblock.com/">Display:Block</a></li> </ul> <h2>Cursussen</h2> <p>Om meer te leren over het bouwen van mail templates heb je verschillende cursussen en een conferentie.</p> <ul> <li><a href="http://zurb.com/university/responsive-emails-intro">Introduction to responsive email</a></li> <li><a href="https://litmus.com/conference">Email design conference van Litmus</a></li> </ul> <h2>Conclusie</h2> <p>De wereld van email-design en coding is een wereld apart. Je kan hiervan je werkgebied maken zonder dat je verder bezig hoeft te houden met het bouwen van websites. Het is een werkgebied dat ook zeker in ontwikkeling is, helaas minder snel dan de mensen die er in werken zouden willen. Maar er gebeurt genoeg. Naar mijn idee is dit ook voor front-end ontwikkelaars een tof vakgebied.</p> Data visualisatie; een startpunt 2016-04-20T00:00:00Z https://www.kajrietberg.nl/posts/2016-04-20-data-visualisatie/ <p>Bij Zorgweb (het bedrijf waar ik als UX-developer) werkte verzamelden we veel data. De data die we verzamelden heeft alles te maken met de financiering, toegang en kwaliteit van zorg. En dat is veel data. Omdat we juist zoveel met data bezig zijn, willen we kijken of datavisualisatie ook iets voor onze data is en zo ja, wat en/of hoe dan precies.</p> <p>Ik heb mij hiervoor verdiept in datavisualisatie. De hieruit voortgekomen informatie heb ik verzameld en publiceer ik hier. Het zijn opmerkingen, linkjes die voor mij belangrijk zijn, het geheel is niet altijd een goed lopend verhaal. De reden dat ik het hier publiceer is dat anderen er iets aan kunnen hebben of dat ik feedback ontvang zodat ik weer nieuwe inzichten op doe.</p> <h2>Wat is datavisualisatie?</h2> <p>Datavisualisaties laten op een visuele manier je data zien. Dit kan een zo getrouw mogelijke weergave zijn omdat een wetenschapper daar om vraagt, maar kan ook een vereenvoudigde weergave zijn opdat de doelgroep beter begrijpt wat je wilt overbrengen. Dan is het beter om randzaken weg te laten.</p> <p>Naast data visualisaties heb je infographics. Naar mijn idee is een infographic een vereenvoudigde weergave van je verhaal om iets uit te leggen. Je laat zien hoe iets werkt, hoe een proces in elkaar zit, waarom iets zo gebeurt, de getallen die ergens bij horen. Data visualisaties tonen de relaties tussen de verschillende data. Een datavisualisatie wil de data tonen, maar ook dat je begrip krijgt van de getoonde data en de verhoudingen tussen de data ziet.</p> <p>Data visualisaties en infographics hebben verschillende uitingsvormen. Kunnen foto's zijn van eigen gemaakte stellages, of tekeningen die met de hand zijn gemaakt of juist met de computer, verzameling van data, veel lijnen die data of verbindingen voorstellen, kleurig, pizzapunt grafieken, etc. Voor wetenschappelijke infograhics is een tekening vaak beter want deze vertelt het verhaal beter dan een foto. In een foto heb je zaken die afleiden van je verhaal. Let bij een vereenvoudiging op dat iedereen deze hetzelfde interpreteert. Test dit goed. Iedereen kijkt er weer anders tegen aan.</p> <p>Een data-visualisatie kan middels een infographic, maar een infographic hoeft geen datavisualisatie te zijn. Datavisualisatie en infograpics zijn de sterke uitleg tools.</p> <h2>Wat kan je met een datavisualisatie?</h2> <p>Een datavisualisatie gebruik je zodat mensen het verhaal achter de data op een visuele manier kunnen interpreteren opdat ze het beter kunnen begrijpen. Steeds vaker zie je storytelling gebruikt worden om o.a. nieuws, data over te brengen op de bezoeker van een website. Hele lappen tekst lezen we niet graag vanaf een beeldscherm en juist het visuele is de sterke kant van het web. Datavisualisatie maakt juist gebruik van dat visuele deel zodat mensen zich beter kunnen informeren. Hierdoor heb je ook dat je sneller de de data eruit kan halen.</p> <p>Daarnaast kan je de data die je hebt visualiseren om te kijken of je verbanden kan vinden. Door het kleuren of anders weer te geven zie je juist verbanden die je anders niet zou zien. Speel met je eigen data.</p> <p>Vertel de waarheid en hou je datavisuals overzichtelijk.</p> <h2>Voor data visualisatie heb je nodig:</h2> <ul> <li>data die je wilt tonen</li> <li>het verhaal achter de data die je wilt vertellen/ je doel van het tonen van de data</li> <li>een design voor het tonen van de data</li> <li>het bouwen van het design</li> <li>het koppelen van de data met het design</li> </ul> <p>Zie het artikel <a href="http://www.informationisbeautiful.net/visualizations/what-makes-a-good-data-visualization/">what makes a good data visualization</a> om te zien waaruit een goede data visualisatie bestaat. Een data visualisatie gebruik je om iets uit te leggen, het is een information tool. Visualisaties worden makkelijker bekeken en gedeeld met anderen.</p> <p>Zorg er voor dat een infographic of een data visualisatie to the point is. Je moet makkelijk kunnen zien waar het over gaat.</p> <p>Information design skills zijn handig om te hebben als je data wilt omzetten in een verhaal dat je vertelt.</p> <p>Met een data visualisatie kan je getallen die je anders niks zeggen, omdat het om bijvoorbeeld hele hoge bedragen gaat, uitbeelden en in verhouding met anderen tonen waardoor het meer gaat leven. Juist het tonen van de relatie tussen de getallen is belangrijk. Zorg er voor dat je voor een datavisualisatie de juiste vraag stelt.</p> <p>Een data visualisatie kan er voor zorgen dat mensen die anders niet geinteresseerd zijn, toch de materie induiken omdat het op een visueel aantrekkelijke manier getoont wordt. Zorg er dus voor dat je visualisatie er aantrekkelijk uitziet. Dan hebben mensen ook eerder de neiging te geloven wat ze zien. Maar als kijker wees op je hoede want een aantrekkelijke visualisatie hoeft niet altijd de waarheid te zijn. De Russen gebruikten veel infographics om te laten zien hoe goed het ging, maar dit was meer propaganda.</p> <p>Een gehoorde quote op het Nederlandse Infographic congres 2016 in Zeist geeft duidelijk weer waar infograhics en data visualisaties goed in zijn; &quot;Beauty opens other people minds&quot;.</p> <h2>Story-telling</h2> <p>Data visualisatie kan een data storytelling zijn, je vertelt een verhaal aan de hand van de data die je toont. Zorg hierbij ook voor interactiviteit voor de gebruiker. Deze kan door iets aan te passen zien wat er veranderd, bijvoorbeeld in de tijd.</p> <p>Interessante voorbeelden van storytelling zijn:</p> <ul> <li><a href="http://www.nytimes.com/interactive/2015/us/year-in-interactive-storytelling.html">New York Times</a></li> <li><a href="https://medium.com/truth-labs/re-thinking-reading-on-the-web-158e789eddd7?mc_cid=4df1c7dbfd&amp;mc_eid=476f42f02a#.i6c63rfx6">Het verhaal achter de gezondheidszorg info pagina</a></li> </ul> <h2>Wie doen iets met data-visualisatie?</h2> <ul> <li>Data journalisten, zie <a href="http://www.theguardian.com/data">The Guardian</a> en <a href="https://blog.infogr.am/seven-data-journalism-blogs/">7 data journalism blogs</a> cq. kranten</li> <li>Data analisten</li> <li>Infographic designers</li> <li>Information/ data designers</li> <li>Motion designers/ animators</li> <li>Grafisch designers</li> <li>Illustrators</li> <li>Programmeurs</li> <li>Wetenschappers</li> <li>Story-tellers</li> <li>Bedrijven die statistieken bij houden zodat klanten daar weer verder mee kunnen</li> <li>Bedrijven, kan van alles zijn. Maar dan als klant die iets wil tonen.</li> </ul> <h2>Workflow beschreven door Sheila Pontis:</h2> <ol> <li>Problem understanding</li> <li>User/audience understanding</li> <li>Subject matter understanding</li> <li>Simplification</li> <li>Design proposal(s)</li> <li>Design</li> <li>Evaluation</li> <li>Refinement &amp; Implementation</li> </ol> <p>Punt 1 t/m 5 zijn het nadenk deel. Punt 6 t/m 8 zijn het doen deel.</p> <p>Zorg er voor dat je structuur en order aanbrengt aan je dataset zodat je de data kan begrijpen, pas als je de data begrijpt kan je er mee werken.</p> <p>Bij het maken van afspraken is het belangrijk dat je afspreekt: what, how, by whom, by when, result.</p> <p>Je ziet vaak gebeuren dat er eerst een idee is en dat daarna de data erbij gezocht wordt.</p> <p>Om zelf infographics te gaan designen kan het handig zijn om te gaan schetsen van alledaagse dingen. Hierdoor leer je goed kijken en kan je een infographic ook beter schetsen.</p> <p>Denk na over je eigen proces. Blijf nadenken.</p> <h3>Voorbeelden van visualisaties</h3> <ul> <li><a href="https://flic.kr/s/aHskvygEs2">Infograhic conferentie Zeist 2016</a></li> <li><a href="http://www.anychart.com/products/anychart/gallery/">AnyChart gallery</a></li> <li><a href="https://public.tableau.com/app/discover/viz-of-the-day">Viz of the day</a> van Tableau</li> </ul> <h3>Libraries</h3> <ul> <li><a href="https://developers.google.com/chart/">Google charts</a></li> <li><a href="https://github.com/chartist-js/chartist#readme">Chartist.js</a></li> <li><a href="http://www.chartjs.org/">Chart.js</a></li> <li><a href="http://threejs.org/">Three.js</a></li> <li><a href="https://www.sigmajs.org/">Sigma.js</a></li> <li><a href="https://michalsnik.github.io/aos/">Animate on scroll</a></li> <li><a href="http://scrollmagic.io/">Magic scroll interactions</a></li> <li><a href="https://mciastek.github.io/sal/">Sal.js</a></li> </ul> <h3>Tools</h3> <ul> <li><a href="http://d3js.org/">D3 js</a></li> <li><a href="https://www.r-project.org/">R</a></li> <li><a href="https://gephi.org/">Gephi</a></li> <li><a href="http://www.tableau.com/">Tableau</a></li> <li><a href="http://www.quadrigram.com/">Quadrigram</a></li> <li><a href="http://www.highcharts.com/">High Charts</a></li> <li><a href="https://www.amcharts.com/">AM Charts</a></li> <li><a href="http://quartz.github.io/Chartbuilder/">Chart builder</a></li> <li><a href="https://datawrapper.de/">Datawrapper</a></li> <li><a href="https://flourish.studio/">Flourish</a></li> <li><a href="https://infogr.am/">Infogram</a></li> <li><a href="http://www.chartblocks.com/en/">Chartblocks</a></li> <li><a href="http://www.fusioncharts.com/">Fusion Charts</a></li> <li><a href="https://www.rawgraphs.io/">RAWGraphs</a></li> <li>Adobe Illustrator en photoshop</li> <li>Excel</li> <li>Google Maps</li> </ul> <h3>Geo visualisatie tools</h3> <ul> <li><a href="https://cartodb.com/">CartoDB</a></li> <li>Google Maps</li> <li><a href="http://leafletjs.com/">Leaflet</a></li> </ul> <h3>Conferenties en studie mogelijkheden</h3> <ul> <li><a href="http://www.infographicscongres.eu/">Infographics Congres</a></li> <li><a href="http://eyeofestival.com/">Eyeo Festival</a></li> <li><a href="http://informationplusconference.com/">Information+</a></li> <li><a href="http://graphichunters.nl/">Workshops van Graphic Hunter</a></li> <li><a href="https://www.datacamp.com/">Online leren bij Datacamp</a></li> <li><a href="https://graphichuntersshow.nl/">SHOW - Play Pause Stop</a></li> </ul> <h3>Workshops, curssussen en handleidingen</h3> <ul> <li><a href="https://www.dashingd3js.com/">Dashing D3js</a></li> <li><a href="http://www.storybench.org/organize-data-various-graphs-charts/">How to organize your data for various graphs and charts</a></li> <li><a href="http://learnjsdata.com/">Learn js Data</a></li> <li><a href="https://www.smashingmagazine.com/2015/07/designing-simple-pie-charts-with-css/">Do it yourself met CSS en SVG</a></li> <li><a href="https://www.visualcinnamon.com/resources/learning-data-visualization/">Data visualisatie overzicht van verschillende handleidingen en bronnen</a></li> <li><a href="https://www.domestika.org/en/courses/3069-effective-data-visualization-transform-information-into-art/studio_terp">Effective data visualization van Sonja Kuijpers</a></li> <li><a href="https://www.domestika.org/en/courses/3705-creative-data-visualization-for-beginners">Creative data visualization for beginners</a></li> <li><a href="https://www.domestika.org/en/courses/3601-information-design-storytelling-with-data-in-illustrator/defilippovale">Informations design: storytelling with data in Illustrator</a></li> <li><a href="https://www.newline.co/fullstack-d3">Fullstack D3 and datavisualization</a></li> <li><a href="https://www.edx.org/learn/data-science">Learn data science</a></li> </ul> <h3>Boeken</h3> <ul> <li><a href="https://www.datasketch.es/">Datasketches</a></li> <li><a href="https://infodesignunbound.com/">Informatuion Design Unbound</a></li> <li><a href="https://www.bruna.nl/engelse-boeken/britannica-s-encyclopedia-infographica-9781913750459">Britannica's Encyclopedia infographica</a></li> <li><a href="http://www.storytellingwithdata.com/book/">Storytelling with data</a></li> <li><a href="http://www.informationisbeautiful.net/books/">Information is Beautiful</a></li> <li><a href="http://www.thefunctionalart.com/">The truthfull art en Functional art</a></li> <li><a href="http://www.amazon.com/Effective-Data-Visualization-Right-Chart/dp/1506303056/">Effective Data Visualization: The Right Chart for the Right Data</a></li> <li><a href="http://www.visualcinnamon.com/resources/learning-data-visualization/books">Data visualisatie boekenlijst, aanraders zijn die met 4 sterren en meer</a></li> <li><a href="https://www.bol.com/nl/nl/p/liegen-met-cijfers/9200000092087439/?bltgh=nJxkujm954nQJbzkEWdNtA.2_31.33.ProductImage">Liegen met cijfers</a></li> <li><a href="https://www.bruna.nl/engelse-boeken/communicating-with-data-visualisation-9781529743777">Communicating with data visualisation</a></li> </ul> <h3>Bedrijven</h3> <ul> <li><a href="https://sheilapontis.wordpress.com/">Sheila Pontis</a>; Interessante info</li> <li><a href="http://www.informationisbeautiful.net/">Information is Beautiful</a>; Interessante boeken en workshops</li> <li><a href="https://www.gtp.nl/">Getting the picture</a>; Nederlands bedrijf</li> </ul> <h3>Bedrijven die visuals maken</h3> <ul> <li><a href="http://www.datagraver.com/">Datagraver</a>; Nederlands bedrijf die op zoek gaat naar data</li> <li><a href="http://www.visualcinnamon.com/">Visual Cinnamon</a>; freelancer voor maken van (online) data visualisaties designs</li> <li><a href="http://johngrimwade.com/">John Grimwade</a>; information graphics</li> <li><a href="http://www.in60seconds.nl/">In 60 seconds</a>; Nederlands bedrijf, die voor o.a. nu.nl infographic filmpjes maken, voorbeeld over de zorgverzekering voor <a href="http://www.in60seconds.nl/case/onvz/">ONVZ</a></li> <li><a href="https://www.cleverfranke.com/">CleverFranke</a>; bouwt wereldwijd online visuals.</li> <li><a href="http://www.accurat.it/">Accurat</a></li> </ul> <h3>Overige</h3> <ul> <li><a href="https://www.cmd-amsterdam.nl/events/icons/icons-3">CMD Amsterdam lezing</a></li> <li><a href="http://understandinggraphics.com/visualizations/infoposters-are-not-infographics/">Infoposters Are Not Infographics: A Comparison</a></li> <li><a href="https://newslab.withgoogle.com/">Google News Lab</a></li> <li><a href="https://www.marketcafemag.com/">Market Cafe Mag</a>; een papieren magazine</li> <li><a href="https://nightingaledvs.com/">Nightingale</a>; papieren magazine</li> <li><a href="https://5jaar.pixelpillow.nl/">Het verhaal van 5 jaar Pixelpillow</a></li> <li><a href="https://learn.microsoft.com/en-us/training/educator-center/instructor-materials/day-data-rockets-nasa-stem-partnership">Day of data</a>; datavisualisatie in de klas</li> </ul> Communicatie met online webformulieren 2016-12-13T00:00:00Z https://www.kajrietberg.nl/posts/2016-12-13-Communicatie-met-online-webformulieren/ <p>Het internet is begonnen als een netwerk van computers om informatie met elkaar te delen. Hierbij was, naar mijn idee, de <code>&lt;a&gt;</code> tag het belangrijkste element. Hiermee zorgden en zorgen we nog steeds voor dat informatie aan elkaar gelinkt wordt. Zo kan je van het ene naar het andere springen. Hiermee kunnen we uren zoet zijn, zonder dat we door hebben wat we aan het doen zijn :-). We noemen dit surfen. Het toffe van het linken van informatie is dat de informatie die met elkaar te maken heeft aan elkaar gelinkt kan worden, waardoor je makkelijk kan verwijzen naar andere informatie.</p> <p>In de loop der jaren is het internet geeëvolueerd tot een medium waar niet alleen maar informatie te vinden is, maar waar je ook mee kan interacteren. We kunnen nu via webformulieren informatie verzenden en zo zijn er nog meer mogelijkheden tot interactie met een website. Aangezien mijn werkveld webformulieren behelst hou ik mij hier tot deze interactie. Doordat de interactie tussen websites/ applicaties en gebruikers steeds belangrijker geworden is, zijn onderwerpen als interactie design ook steeds belangrijker geworden.</p> <p>De interactie van de gebruiker met een webapplicatie bestaat uit wat je ziet als gebruiker en waardoor je weet hoe je de applicatie/ website kan/moet gebruiken. Dit heeft te maken met uiterlijk. Daarnaast speelt de manier hoe je interacteert met de applicatie. In het begin van het internet was dit via desktop computers met een toetsenbord en muis, de stem begon later zijn entree te maken, nog weer later kwam het touchscherm en zo is de ontwikkeling mbt communiceren met een webapplicatie steeds verder gegaan. Dit is allemaal bedoelt om de communicatie makkelijker en prettiger te maken voor de bezoeker, maar ook voor degene van wie de applicatie is, want meer gebruikers die makkelijker door je applicatie gaan betekent waarschijnlijk meer omzet.</p> <p>Jason Grigsby heeft een kort filmpje online gezet waarin hij laat zien wat er qua input mogelijkheden is veranderd, vanuit Apple oogpunt. Je ziet dat de ontwikkelingen vooral de laatste jaren heel snel gaat.</p> <iframe width="560" height="315" src="https://www.youtube.com/embed/UZFvybGp26I" frameborder="0" allowfullscreen=""></iframe> <p>De manier van interacteren wil ik opsplistsen in 2 manieren. Namelijk welke middelen gebruik je om te interacteren en de ander is hoe verloopt de interactie, dus wat is het uiterlijk en de vorm van de interactie.</p> <h2>Input middelen</h2> <p>Ik werd wakker geschud voor <a href="https://twitter.com/grigs">Jason Grigsby</a> tijdens de <a href="https://fronteers.nl/congres">Fronteers Conferentie van 2016</a>. Zijn talk ging over <a href="https://vimeo.com/194967832">Different input types</a>. Als eerste dacht ik aan verschillende soort input velden, zoals date, password, email, etc. Maar tijdens zijn talk kwam ik er achter dat het ging over middelen om input te geven aan een webapplicatie/site. De meeste manieren van interacteren met een applicatie/website kende ik al. Maar de manier waarop hij er over sprak was een eye-opener.</p> <p>Zijn conclusie was/is dat we goed moeten opletten en ons niet moeten vastleggen op een bepaalde input manier, maar er voor zorgen dat de applicatie/website met alle middelen overweg kan. Zo open en breed mogelijk. Waardoor je waarschijnlijk ook voor toekomstige manieren bouwt.</p> <p>Afgelopen jaren zijn er steeds meer input mogelijkheden bij gekomen en we weten niet wat er nog meer gaat komen. Hou daar dus rekening mee in het bouwen van je applicatie en zet het niet vast op een bepaalde invoermogelijkheid. Dit gebeurde eerder en nog steeds bij beeldschermen. We zetten de website op een vaste breedte, maar er zijn zo veel schermen dat je niet weet wat de juiste vaste breedte is. Dus beter flexibel/ adaptief bouwen.</p> <p>De manier van invoer is niet betrouwbaar te detecteren. We kunnen dat dus niet gebruiken als parameter om iets op te bouwen. Net zoals we niet kunnen uitgaan van telefoon is touch en desktop is keyboard en muis. Tegenwoordig is desktop ook touch. Vaak denken we vanuit onze eigen manier van communiceren met een applicatie. Hierop baseren we wat de prettigste of beste manier is. Dat hoeft natuurlijk niet zo te zijn.</p> <p>De les die je hier uit kan trekken is; bouw zo adaptief mogelijk zodat je applicatie toekomstig bestendig is. <a href="http://www.lukew.com/">Luke W</a> laat middels een afbeelding zien dat <a href="http://static.lukew.com/unified_device_design.png">beelschermgrootte en touch of geen touch niet met elkaar samen hangen</a>.</p> <p>Mijn opsomming van een aantal middelen waarmee je kan interacteren met een website/ applicatie met daarbij een korte uitleg en/of voorbeeld.</p> <ul> <li> <p>Toetsenbord<br /> Toetsenbord kennen we allemaal, deze kan bedraad of niet bedraad zijn. het Qwerty toetsenbord is volgens mij het meest gebruikt, maar er zijn ook <a href="https://nl.wikipedia.org/wiki/Toetsenbordindeling">andere indelingen</a>.</p> </li> <li> <p>Muis<br /> De muis komt in verschillende vormen, bedraad, draaloos, met scroll wiel met touch scrollwiel, etc.</p> </li> <li> <p>Touchscreen<br /> De iPhone kwam met een touchscreen, nu is het ingeburgerd bij zowel kleine computers (smartphones en tablets) en grotere desktop computers. In het design van je website heb je hier rekening mee te houden zoals grotere knoppen omdat je rekening houdt met vingers die klikken ipv een muis.</p> </li> <li> <p>Stem<br /> Zou toch heerlijk zijn als je vragen op een formulier niet hoeft te typen, maar in een gesprek met je computer kan beantwoorden. Heerlijk in conversatie modus. Maar hoe doe je dat met accenten, dialecten? Die moet de computer allemaal begrijpen. Dus nog een hele klus ligt er voor ons. Mooi beschreven in een voorbeeld op <a href="https://blog.prototypr.io/the-future-of-web-forms-4578485e1461#.60wu3f3eo">The future of webforms</a>. <br /> Gelukkig zijn er al beginnetjes mee. Er is een <a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API">Web Speech api</a> voor de webbrowser. In Chrome kan je op <a href="https://www.google.nl/">Google</a> met je stem een zoekopdracht geven. Verder hebben ze bij Google nog <a href="https://www.google.com/intl/en/chrome/demos/speech.html">interessante demo's</a>.</p> </li> <li> <p>Bewegingen<br /> Hierbij kan je denken bewegingen van je lichaam(sdelen) die geregistreerd worden door een camera (zie xbox). Maar ook aan bewegingen met je tablet of telefoon. Door de gyroscoop kunnen deze bewegingen geinterpreteerd worden en een actie aan verbonden worden.<br /> In de webshop <a href="https://www.kajrietberg.nl/posts/2016-12-13-Communicatie-met-online-webformulieren/warbyparker.com">Warby Parker</a> kan je een bril op het hoofd van het model beter bekijken door je telefoon te bewegen. En op de desktop gebeurd dit middels de muis.<br /> Aan een weggooi beweging zou je de actie van iets weggooien/ verwijderen kunnen verbinden. Leuk voorbeeld is de <a href="https://paperplanes.world/">Paper Planes website</a>. Hier kan je een papieren vliegtuig vouwen en met je telefoon weggooien. Hou je telefoon goed vast als je de gooi beweging maakt.</p> </li> <li> <p>Camera<br /> Een voorbeeld van gebruik van je camera is het scannen van een QR-code in bijvoorbeeld de ING-app om geld over te maken. In Azië kan je middels QR-codes te scannen boodschappen bestellen in de Metro die 's avond bij je bezorgd worden.<br /> Foto van je creditcard om gegevens er uit te halen en makkelijk op <a href="https://cloudfour.com/thinks/autofill-what-web-devs-should-know-but-dont/">te nemen in een betaal-formulier</a>.<br /> Voor Zorgweb zouden we kunnen denken aan het scannen van je verzekeringspas om je huidige verzekering te weten.</p> </li> <li> <p>Vingerafdrukken<br /> Over een paar jaar kan je misschien een zorgverzekering aanvragen via je vingerafdruk op je touchscreen. Nu kan je middels vingeafdruk je iPhone inschakelen.</p> </li> <li> <p>GPS<br /> Hebben we ingebouwd in de <a href="https://zorgzoeker.amersfoortse.nl/apps/">zorgzoeker van de Amersfoortse</a>. Die bepaalt dan waar je in de buurt bent en en neemt dat adres als uitgangspunt.</p> </li> <li> <p>Hololens<br /> Hoe lang zal het nog duren voordat mensen hun zorgverzekering aanvragen via de Hololens.</p> </li> </ul> <iframe width="560" height="315" src="https://www.youtube.com/embed/kwn9Lh0E_vU" frameborder="0" allowfullscreen=""></iframe> <h2>Nieuwe interactie vormen</h2> <p>Naast de nieuwe input mogelijkheden merken we dat veel gebruikers online de menselijke interactie missen bij een applicatie. Soms is iemand die je helpt toch erg prettig, even die menselijke interactie, die goedkeuring dat het klopt wat je denkt en doet. Langzaamaan wordt hier ook mee geeëxperimenteerd. Verschillende mensen zetten voorbeelden online waarin ze proberen om de interactie tussen mens en machine menselijker te maken. Reden hierbij is natuurlijk een prettigere beleving en meer gebruikersgemak, maar wat ook meer conversie kan betekenen.</p> <p>Voorbeelden van deze meer menselijke interactie kan je vinden op:</p> <ul> <li> <p>Conversational form<br /> Een formulier waarin het gesprek wordt aangegaan met de bezoeker <a href="https://medium.com/conversational-interfaces/introducing-the-conversational-form-c3166eb2ee2f#.nzamnvdcb">Introductie tot de conversational form</a></p> </li> <li> <p>With Jack<br /> Hier kan je in de praktijk zien wat ze beschrijven in het artikel over de Conversational form. Het aanvragen van een quote voor een verzekering kan op een menselijker manier bij <a href="https://withjack.co.uk/quote/">With Jack</a>.</p> </li> <li> <p>Independer<br /> Independer probeert dit ook. Je ziet veel foto's van werknemers van Independer die je aankijken en een bericht aan je communiceren. Ze laten zien met wie je belt. Heb je de eerste gegevens ingetypt, zie je iemand die verwijst naar een tekstje. Hierin kan je klikken op een knop zodat je via teksten op de website extra hulp krijgt. Daarnaast kan je bellen.</p> </li> <li> <p>Autofill<br /> Maak het invullen van je formulier makkelijker met <a href="https://developers.google.com/web/updates/2015/06/checkout-faster-with-autofill">autofill</a>.</p> </li> </ul> <h2>Afsluiting:</h2> <p>We gaven onze websites een vaste breedte passend bij het gemiddelde scherm van dat moment, totdat we merkten dat het niet werkbaar was toen er een explosie kwam van verschillende schermen. En moesten we onze werkwijze aanpassen.</p> <p>Met input mogelijkheden staat dit ook weer te gebeuren. We gaan uit van muis, toetsenbord en een beetje touch. Maar er zijn nog meer mogelijkheden. Houden we daar al rekening mee? Bouwen we adaptief genoeg dat we ons snel kunnen aanpassen? Wij als bouwers zijn niet degene die bepalen wat de beste input is. Wij moeten mogelijk maken dat alle gebruikers van een website makkelijk door de site heen kunnen. Test dus veel, ook met nieuwe manieren van input types en interactie vormen. Kijk wat goed werkt voor de gebruiker en bouw daar op verder.</p> <p>We zijn aangekomen bij een interessante tijd voor webapplicaties die de conversatie aangaan. Wij, die deze applicaties neerzetten, willen graag informatie van de website/applicatie bezoeker. Hoe zorgen we hiervoor? Hoe maken we het de bezoeker makkelijk? <br /> We zullen steeds meer de conversatie proberen aan te gaan met de bezoeker van de website/applicatie. We hebben hier steeds meer middelen voor, zoals de Web Speech API in de browser. Maar voordat dit echt op een goede manier ingezet kan worden kunnen we gebruik maken van foto's, persoonlijke teksten, makkelijk te doorlopen formulieren. Een belangrijke rol zal animatie en storytelling hier in krijgen. Ik verwacht dat deze middelen je zo door het proces heen loodsen zonder dat je als bezoeker in de gaten hebt dat je door een proces heen loopt. En dat je als bezoeker een goed gevoel overhoudt aan de conversatie met de website/applicatie.</p> <h2>Meer info/ bronnen:</h2> <ul> <li><a href="http://alistapart.com/article/adapting-to-input">Adapting to input</a></li> <li><a href="https://cloudfour.com/thinks/four-truths-about-input/">Four thruths about input</a></li> <li><a href="https://medium.com/conversational-interfaces/how-voice-assistants-seemingly-came-from-nowhere-33747876b91f#.3btwcxcto">How voice assistants seemingly came from nowhere</a></li> </ul> Wat is design? 2017-01-04T00:00:00Z https://www.kajrietberg.nl/posts/2017-01-04-wat-is-design/ <p>Naar mijn idee moest een designer iemand zijn die heel creatief is. Heel simpel gezegd, iemand die kunst maakt, eigenlijk gewoon iemand die mooie dingen maakt.</p> <p>Nu ik mij steeds meer verdiep in wat design is merk ik dat er veel verschillende type designers zijn. Eigenlijk is een designer een probleem oplosser, iemand die creeert en/ of zaken handiger maakt. Het hoeft niet iemand te zijn die kunst creeert, maar het kan ook iemand zijn die creatief kan denken en zo tot andere oplossingen komt, die iemand anders dan inkleurt of creeert. Misschien is het beter een designer wel een oplossingen bedenker te noemen. Een designer is iemand die oog heeft voor het probleem van iemand en hiervoor een oplossing zoekt. Ze zorgen er voor alleen of samen met anderen dat die oplossing er komt. <br /> Ben je dus niet veel meer een proces begeleider? Zoals genoemd in <a href="https://www.frankwatching.com/archive/2015/06/26/hoe-design-thinking-je-helpt-bij-het-oplossen-van-complexe-problemen/">Hoe design thinking je helpt bij het oplossen van complexe problemen</a> van Willem Plaisier. Hierin staat dat een designer organisaties uitdaagt en prikkelt om te helpen keuzes te maken in positionering en profilering. Je bent geen designer maar je designt. Designen als proces, ook wel design thinking genoemd. Dit proces is niet alleen weggelegd voor de &quot;creatieven&quot;. Iedereen kan een bijdrage leveren aan de oplossing/verbetering.</p> <p>Ik heb het idee dat een designer niet meer bestaat. Er wordt met en voor zoveel verschillende onderwerpen gewerkt en dan heb je ook nog verschillende design functies. Dit maakt het voor mij complex om te zeggen wat design is. Hierdoor is design ook weer interessant want design is niet meer het visuele deel waar ik dan aan denk, maar zo veel meer.</p> <p>Dit artikel schrijf ik om voor mijzelf de informatie die ik verzamel te ordenen. En misschien heeft iemand anders er ook wat aan. Ik onthoud beter wat ik heb opgezocht en zo heb ik een mooi verzamelpunt van interessante informatie om af en toe door te nemen en aan te vullen.</p> <h2>Design werkgebieden</h2> <p>Ik merkte in de afgelopen jaren dat design vele gebieden beslaat. Waarbij overlap is tussen de verschillende gebieden. Naar mijn idee kan ik niet spreken van een designer. Want wat doet zo'n designer dan precies? En soms wordt er gesproken over een designer en wordt iets anders bedoelt dan de luisteraar denkt omdat deze niet in het werkgebied zit.</p> <p>Hier een opsomming van de verschillende design gebieden die ik ben tegengekomen.</p> <h3>Product design</h3> <p>Terwijl ik mij aan het inlezen ben vraag ik mij af of product design niet het overkoepelende werkgebied is van design. Je maakt/ creeert altijd een product, dat is juist wat design is. Een product is een vast iets, maar kan ook een cursus of bijeenkomst zijn.</p> <p>In <a href="http://blog.invisionapp.com/behavioral-approach-product-design/">A behavioral approach to product design</a> beschrijven ze hoe ze van het gedrag van gebruikers uitgaan om in verschillende fases het gedrag te beinvloeden.</p> <h3>Service design</h3> <p>Zoals product design om producten gaat, gaat service design om diensten en ervaringen. Als je wilt dat een dienst of ervaring op een bepaalde manier plaats vindt omdat je wilt dat een gebruiker die zo behoort te krijgen. Dan moet je nadenken over die dienst en ervaring. Hiervoor heb je designers die daar in gespecialiseerd zijn.</p> <p>Het kan hierbij gaan om de ervaring die iemand heeft als deze een bepaald product koopt of contact opneemt met de helpdesk. Een term die hier bij hoort is customer journey. Je zorgt voor een klant beleving. Of een rondwandeling in een museum, hoe geef je dit vorm? Welke ervaring wil je bezoekers meegeven?</p> <p>Op de site Emerce hebben ze <a href="http://www.emerce.nl/achtergrond/service-design-opkomst-hoe-maak-concreet">een artikel</a> gewijd aan het uitleggen wat Service Design precies is. Het magazine <a href="https://www.service-design-network.org/touchpoint">Touchpoint</a> gaat over Service design. Wil je dus meer lezen is dit magazine misschien wel interessant. Er is ook een <a href="http://service-design-conference.com/">Service Design Conferentie</a>.</p> <h3>UX design</h3> <p>User Experience gaat uit van de gebruiker. Hierbij moet je denken aan of alles op de juiste plek staat, waar in de flow komt wat, staan knoppen op een handige plek, moeten er meerdere knoppen komen of niet, sluit het aan bij wat de gebruiker verwacht, etc. Een UX designer is degene die vaak de Wireframes maakt, dus schetsen van de gehele flow zodat je een eerste indruk hebt.<br /> Ziet steeds vaker dat gezegd wordt dat deze functie niet bestaat. Het is een te grote verzamel naam. Lastige is dat de één dit zegt en een ander zegt dat. Kom er als leek dan maar uit. Belangrijkste is dat de gebruiker centraal staat en van daaruit de applicatie ontworpen wordt.</p> <h4>Tools die gebruikt worden voor UX zijn o.a. wireframe tools:</h4> <ul> <li><a href="http://www.axure.com/">Axure</a></li> <li><a href="https://www.omnigroup.com/omnigraffle/">OmniGraffle</a></li> <li><a href="http://zurb.com/notable">Notable</a></li> <li><a href="https://balsamiq.com/">Balsamiq</a></li> </ul> <h4>Pagina's om meer over UX te weten te komen:</h4> <ul> <li><a href="http://uxmyths.com/">UXmyths</a></li> <li><a href="http://thehipperelement.com/post/75476711614/ux-crash-course-31-fundamentals">UX Crash course</a></li> <li><a href="https://uideo.net/">UX/UI conferentie talks</a></li> <li><a href="http://52weeksofux.com/">52 weeks of UX</a></li> </ul> <h3>Interactie design</h3> <p>Interactie design is een onderdeel van UX. En voor sommigen misschien ook wel hetzelfde. Voor mij gaat interactie design over het bedienen van het product. Kan een gebruiker er mee werken en gaat dit op een makkelijke/logische manier voor de gebruiker. Belangrijk bij UX en Interactie design is het testen van de applicatie. Is zoals het bedoelt is ook zoals de gebruiker het gebruikt?</p> <h4>Pagina's die meer vertellen over Interactie Design:</h4> <ul> <li><a href="https://www.nngroup.com/articles/ten-usability-heuristics/">Jakob Nielsen's 10 general principles for interaction design</a></li> <li><a href="http://asktog.com/atc/principles-of-interaction-design/">First Principles of Interaction Design</a></li> </ul> <h3>Brand design</h3> <p>Kijkt naar de uitstraling van een product en/of bedrijf. Hoe wilt een bedrijf gezien worden? Wat zijn de missie en visie, normen en waarden? Welke uitstraling past daar bij? En klopt die uitstraling ook met hoe het bedrijf echt is. Hier komt veel psychologie bij kijken.<br /> Brand design is er voor bedoelt om een emotionele binding te veroorzaken bij de klanten. zodat klanten niet snel zullen overstappen. Een gebied dat mij intereseert.</p> <p>Een interessante uitleg van wat <a href="https://blog.prototypr.io/a-brand-is-a-relationship-8220f47a54ba#.aokunbalq">een Brand is van David Scott</a>. Volgens hem is een Brand de relatie tussen klant en bedrijf.</p> <p>Wil je meer weten over de Huisstijl van een bedrijf is het boek <a href="https://www.bol.com/nl/p/huisstijl-de-kern-van-de-zaak/1001004001807821/">De Huisstijl</a> eentje die mij aangeraden is om te lezen.</p> <p>Een mooi voorbeeld van Brand Design is die van <a href="https://brand.uber.com/">Uber</a>. Hier staat alles precies beschreven.</p> <p>Ook vormen van Brand design zijn styleguides waarin te zien is hoe een merk er online uit wil zien. Hier is niet altijd een missie of een visie uit te halen en/of waarom daarvoor gekozen is. Voorbeelden hiervan zijn te vinden op <a href="http://saijogeorge.com/brand-style-guide-examples/">Brand guide voorbeelden</a>.</p> <p>Brand design is natuurlijk veel verder te trekken. Mailchimp laat dit zien in <a href="http://styleguide.mailchimp.com/">hun styleguide</a>. Hierin staat beschreven hoe teksten geschreven worden, welke toon wordt daarin aangeslagen. Dit is door te trekken naar hoe het bedrijf de telefoon opneemt, wat is de toon in emails, etc. Zo kan naar mijn idee Service design als verlengde van Brand design gezien worden.</p> <p>Afgelopen jaar was er een Brand design conferentie in Amsterdam. <a href="http://www.underconsideration.com/brandnewconference/">Brand New Conference</a> was voor het eerst in Europa. Een samenvatting is te vinden op <a href="http://www.underconsideration.com/brandnew/archives/2016_brand_nieuwe_conference_photos_tweets_and_videos.php#.WGJOtJL3PCA">Underconsideration</a>.</p> <p>Een interesante uitspraak over Brand Design komt uit een talk van <a href="https://vimeo.com/101281790">Thomas Marzano</a>. Waarin hij zegt: &quot;A great brand experience is not about great design skills, it's about great leadership skills&quot;. Waarmee hij bedoelt dat een leider zegt wat belangrijk is voor het bedrijf en de gebruikers. Sluit hier op aan met de producten. Zo was bij Apple (zeg gerust Steve Jobs) de leider die zei wat belangrijk was voor de klanten. Dat het makkelijk bedienbaar moest zijn, goed werken en er mooi uit zien. Eigenlijk moest het perfect zijn. Dan pas mocht het de deur uit. Hierdoor kijkt iedereen nu ook op die manier naar Apple. Dat was niet een designer die iets had bedacht, maar het was de visie van een leider die er voor zorgde dat designers ook in die richting dachten.</p> <p>Een interessante uitleg van wat <a href="https://blog.prototypr.io/a-brand-is-a-relationship-8220f47a54ba#.aokunbalq">een Brand is van David Scott</a>.</p> <p>Om tot een Brand design te komen, kan je een moodboard maken met voorbeelden van wat je vindt passen bij een design. Gebruik bijvoorbeeld foto's, typography, kleuren, etc.</p> <h3>Visual design</h3> <p>De visueel designer is de persoon waar ik vaak aan denk als het over design gaat. De persoon die het uiterlijk mooi maakt. Een visueel designer zorgt er voor dat wat een UX designer vorm geeft met de uitstraling die de brand designer heeft bedacht. Een visueel designer is bezig met kleuren, typography, vormen, verhoudingen, afbeeldingen, contrast. Het visuele gaat om communicatie. Er wordt gecommuniceerd met letters/ woorden, maar ook met kleuren, ruimte en vormen.</p> <p>Bij visual design gaat het om overbrengen van informatie. Om dit te doen probeer je mensen het beeld in te trekken. Afhankelijk van wat je toont heb je een bepaalde hoeveelheid tijd. Een logo moet direct overbrengen wat de info is, in een boek heb je veel meer tijd. Houdt rekening in je design met de tijd die iemand neemt om de informatie te interpreteren.</p> <p>Volgens mij hebben veel visual designers een Graphic Design achtergrond. Van daaruit zijn ze de webwereld ingerold.</p> <h4>Leer meer over visual design:</h4> <ul> <li><a href="http://www.designbynumbers.io/">Design by Numbers</a></li> <li><a href="https://www.amazon.com/Meggs-History-Graphic-Design-Philip/dp/0470168730/">Meggs' History of Graphic Design</a></li> <li><a href="https://www.amazon.com/Layout-Essentials-Design-Principles-Using/dp/1592537073/">Layout Essentials</a></li> </ul> <p>Een visueel designer heeft verschillende gebieden waar hij/zij meer van af moet weten. Dat zijn o.a.:</p> <h4>Kleuren</h4> <p>Kleuren zorgen voor de uitstraling: <a href="https://medium.com/help-scout/the-psychology-of-color-in-marketing-and-branding-ebb2320a2b0#.ieo4yqcvs">Kleuren in marketing en branding</a>. Uit deze tekst komen een aantal interessante tips: Doorbreek stereotypen en verwachtingen bij het gebruik van kleuren. Het hoeft niet allemaal hetzelfde te zijn. Kleur is ook afhankelijk van de emotie die mensen verwachten bij het kopen van iets. Kleur keuze moet zorgen voor contrast, niet altijd belangrijk welke kleuren je kiest, als er maar contrast is.</p> <h5>Interessante link over kleuren:</h5> <ul> <li><a href="https://css-tricks.com/nerds-guide-color-web/">A Nerd’s Guide to Color on the Web</a></li> </ul> <h4>Typography</h4> <p>Er zijn vele verschillende vormen van typography. Ze bepalen voor een belangrijk deel de uitstraling van het product dat je maakt.</p> <ul> <li><a href="http://webtypography.net/">The Elements of Typographic Style Applied to the Web</a></li> <li><a href="http://www.typogui.de/">A Pocket Guide to Master Every Day’s Typographic Adventures</a></li> </ul> <h5>Type foundry's:</h5> <ul> <li><a href="http://www.ultratypes.com/">Ultra types</a></li> <li><a href="https://fonts.google.com/">Google Fonts</a></li> </ul> <h5>Leer meer over typography:</h5> <ul> <li><a href="http://universaltypography.com/">Universal Typography</a></li> <li><a href="https://smile.amazon.com/Thinking-Type-2nd-revised-expanded/dp/1568989695?_encoding=UTF8&amp;*Version*=1&amp;*entries*=0&amp;ie=UTF8&amp;pldnNewCustomer=1&amp;ref_=smi_ge_s_cnf_smi">Thinking with Type</a></li> <li><a href="https://www.youtube.com/watch?v=DLeSPCTA9Wg">Typography Design &amp; Art Design</a></li> </ul> <h3>Motion design</h3> <p>Motion design zie ik als een aparte tak binnen design, aan de andere kant is het een onderdeel van interactie design.<br /> Motion design kijkt naar beweging de interactie tussen bezoeker/gebruiker en de applicatie kan verbeteren. Dit kan je opnemen in je styleguide, zoals <a href="https://www.lightningdesignsystem.com/guidelines/motion/">Salesforce</a> heeft gedaan.</p> <h4>Interessante link:</h4> <ul> <li><a href="http://uyi.io/">Discover and share moving interfaces</a></li> </ul> <h2>Andere design soorten</h2> <p>Ik noem het maar soorten, kan er zo geen andere woord voor bedenken. Andere gebieden die met design te maken hebben of waarin je werkzaam kan zijn:</p> <ul> <li>Food styling</li> <li>Boeken opmaak/ design</li> </ul> <h2>Design proces:</h2> <p>Om tot een design te komen ga je een proces in. Voor het beschrijven van een design proces is momenteel design thinking hot. Bij IBM hebben ze dit proces beschreven: <a href="http://www.ibm.com/design/thinking/">IBM Design Thinking</a>. Zo ook in het eerdere genoemde artikel van <a href="https://www.frankwatching.com/archive/2015/06/26/hoe-design-thinking-je-helpt-bij-het-oplossen-van-complexe-problemen/">Willem Plaisier</a> staat een heel proces beschreven. Lees dit zeker even voor tips. Dit proces kan je kopieeren of gebruiken voor het samenstellen van je eigen proces.</p> <p>Bij IBM zien ze hun IBM Design Thinking als een framework om de problemen van hun gebruikers snel op te lossen. Het zorgt er voor dat je gefocused blijft op wat belangrijk is voor je gebruikers.</p> <h3>Ze hebben hiervoor principes:</h3> <ul> <li>Focus op de uitkomst voor de gebruiker</li> <li>Gebruik zelf sturende teams opgebouwd uit diversiteit</li> <li>Kijk naar het probleem en probeer deze steeds opnieuw te verbeteren</li> </ul> <h3>Ze werken vanuit het idee van The Loop:</h3> <ul> <li>Observeer</li> <li>Reflecteer</li> <li>Maak</li> </ul> <h3>Om te zorgen dat de focus goed blijft in het proces:</h3> <ul> <li>Hills; de uikomsten voor de gebruikers</li> <li>Playbacks; momenten van feedback en verhalen vertellen met een stakeholder</li> <li>Gebruikers; die zorgen dat je in contact blijft met de behoeften van de gebruikers</li> </ul> <p>In het proces waarin uit gegaan wordt van de uiteindelijke gebruiker waarvoor het product beter, makkelijker, mooier gemaakt wordt heeft elke fase verschillende onderdelen die te gebruiken zijn.</p> <p>Zo kan je starten met schetsen: <a href="http://www.creativebloq.com/how-to/sharpen-your-sketching-skills">How to sharpen your sketching skills</a>. Als je met websites werkt kan je dit oefenen door bestaande websites na te schetsen. Ga later een website in je hoofd nemen en probeer aan iemand anders uit te leggen hoe die werkt. Schets dit.</p> <p>Belangrijk in het design proces is duidelijk hebben wat de doelgroep is. Deze doelgroep bestaat uit een heleboel mensen die anders om gaan met het product. Maar ook anders om moeten gaan omdat ze een bepaalde handicap hebben. Hiervoor is Inclusive design. Microsoft heeft beschreven hoe zij omgaan met <a href="https://www.microsoft.com/en-us/Design/inclusive#toolkit">Inclusive Design</a>.</p> <p>Interessant artikel van Google Design over <a href="https://design.google.com/articles/going-beyond-the-surface/">Design reviews</a></p> <p><a href="http://www.designbynumbers.io/">Design by Numbers</a> bedenker Mason heeft een nieuwsbrief waarin hij verteld over het designen van een website. De stappen die hij hierin beschrijft zijn:</p> <ol> <li>Research: Beantwoord in deze fase zaken als; Wat is de doelgroep? Welke inhoud heeft de site? Wat is het doel van de website?</li> <li>Concept: idee of een style waarom heen je de website bouwt. Ze zorgen er voor dat je website een verhaal worden. Zie het als een thema van een feest, het thema zorgt er voor dat verschillende onderdelen bij elkaar passen. Let bij het kiezen van je concept op de doelgroep</li> <li>Brand: zorgt voor de realtie tussen bedrijf en klant, dus voor de wesbite en de bezoeker. Wat is de persoonlijkheid van het bedrijf? Welke karaktertrekken heeft het?</li> <li>Style: Zorgt voor de sfeer van je website. Is het eenvoudig, uitdagend, druk, zwart/wit, sfeervol, etc.</li> <li>Composition: Zorgt er voor dat de aandacht uitgaat naar datgene waar het om draait op de wesbite. Deel de site op in een aantal blokken, die bij elkaar passen.</li> <li>Alignment: Zorgt voor rust en orde in je design.</li> <li>Typography: zorg er voor dat het prettig leest, let op aantal woorden/ tekens op een regel, regelafstand, letterafstand. Zorg er voor dat het type letter past bij je concept.</li> <li>Hierarchy: Zorg voor verschil tussen elementen zodat de elementen die moeten opvallen dat ook doen. Kan met grootte, kleur, hoog/laag,</li> <li>Color: Zorgt voor de versterking van je design, legt de nadruk op elementen. Kleur benadrukt je concept. Kleur wordt ook bepaald door je branding. Kleuren kan je op verschillende manieren gebruiken. Geen kleur, 1 kleur, 2 kleuren, complementaire kleuren,</li> <li>Proximity: laat de relatie tussen elementen zien. Dichtbij elkaar lijkt het bij elkaar te horen.</li> </ol> <h2>Toekomst:</h2> <p>In <a href="https://medium.com/user-defenders/the-future-of-ux-design-76b69d302ac5#.blq5ev7oh">The future of UX design</a> wordt gesproken over de plek die UX designers moeten innemen in een bedrijf. Iets wat ze beschrijven en je nu al meer ziet en steeds meer gebeurt is dat designers een belangrijke rol hebben in de ontwikkeling van producten en dus strategische beslissingen nemen.</p> <h2>Design leren</h2> <p>En hoe nu verder? Ik heb heel wat uitgezocht en merkte hierdoor dat ik mij zelfverzekerder voelde over het leren van design. Ik had altijd het idee dat het niet voor mij was weggelegd, dat heb ik nu niet meer. Komende tijd ga ik meer tijd besteden aan visual design. Ik heb mij ingeschreven voor de nieuwsbrief van Design by Numbers. Die ga ik eerst volgen.</p> <p>Ben je developer dan is een goede eerste stap het lezen van dit artikel: <a href="https://www.smashingmagazine.com/2016/12/mistakes-developers-make-when-learning-design/">Mistakes Developers Make When Learning Design</a>. De schrijver Mason maakt hierin op een prettig leesbare manier duidelijk hoe je als developer het beste kan starten met het leren van design. Hij zegt hierin dat je het beste een eerste keuze kan maken tussen UX en visual design. Dat maakt het leergebied al een stuk kleiner. En kies je bijvoorbeeld voor visual design, richt je dan niet op de tools en laat je niet imponeren door de toffe ontwerpen op Dribble. Maar richt je op de zaken waar het echt omgaat in visual design: lettertype, kleur, style, hierarchie, compositie, concept, uitlijning, plaatsing.</p> <h3>Opleidingen/ cursussen:</h3> <ul> <li><a href="http://futurelondonacademy.co.uk/en/">Future London Acadamy</a></li> <li><a href="http://graphichunters.nl/designing-user-centered-visualisations/">Designing User-Centered Visualisations</a></li> <li><a href="http://www.designbynumbers.io/">Design by Numbers</a>, online</li> <li><a href="http://www.ideou.com/">Ideou, online</a></li> </ul> <h3>Interesante video's:</h3> <ul> <li><a href="http://screenings.io/">Screenings</a></li> </ul> <h3>Tools:</h3> <ul> <li><a href="https://designcode.io/sketch">Sketch</a></li> </ul> <h3>Conferenties:</h3> <ul> <li><a href="https://hybridconf.net/">Hybridconf</a></li> <li><a href="http://www.generateconf.com/">Generateconf</a></li> <li><a href="https://reasons.to/">Reasons.to</a></li> <li><a href="http://mobxcon.com/">MobUX</a></li> <li><a href="http://www.uxcampeurope.org/">Europe UXcamp</a></li> <li><a href="http://uxlondon.com/">UX London</a></li> <li><a href="http://service-design-conference.com/">Service Design</a></li> <li><a href="http://emerce.nl/dare/">Digital Creative Conference</a></li> <li><a href="https://litmus.com/conference">Email Design Conference</a></li> </ul> <h2>Design jobs</h2> <ul> <li><a href="https://design.google.com/jobs/">Google Design</a></li> <li><a href="http://fontanel.nl/jobs">Fontanel jobs</a></li> <li><a href="https://designthinking.ideo.com/?p=1386">5 New Design Careers for the 21st Century</a></li> </ul> <h2>Bronnen/ interessante artikelen:</h2> <ul> <li><a href="https://www.edenspiekermann.com/magazine/beauty-facts-truth/">Beauty + Facts = Truth?</a></li> <li><a href="https://www.davidairey.com/books/">A few good books door David Airey</a></li> <li><a href="https://www.davidairey.com/design-blogs/">Design blogs I subscribe to door David Airey</a></li> <li></li> </ul> <h2>Interessante sites:</h2> <ul> <li><a href="http://fontanel.nl/">Fontanel</a></li> <li><a href="https://material.io/">Material Design</a></li> <li><a href="http://getmwf.com/">Microsoft Web Framework</a></li> <li><a href="https://design.google.com/">Google Design</a></li> <li><a href="http://webdesignrepo.com/">Webdesign Repo</a></li> </ul> Waar ik sta als front-end ontwikkelaar (2018) 2018-01-01T00:00:00Z https://www.kajrietberg.nl/posts/2018-01-01-waar-ik-sta-als-front-end-ontwikkelaar-2018/ <p class="lead">Afgelopen jaar stond ik op een kruising. En ik weet nu dat ik rechtdoor wil. Verder gaan met front-end technieken en een betere front-end ontwikkelaar worden. Dat betekent geleerde technieken nog beter leren toepassen, nieuwe technieken leren en de wereld achter front-end, zoals standaarden en webbrowsers, beter leren begrijpen. Af en toe zat ik te twijfelen, wil ik hier mee verder en hoe dan, sla ik links of rechtsaf. Ik merkte dat ik buiten mijn werk meer dingen ging oppakken. Werk werd te eentonig. Ik zocht uitdaging en ging dit zoeken op een andere plek.</p> <h2>Wat heb ik geleerd?</h2> <p>Afgelopen jaar heb ik geleerd dat het belangrijk is om verder te leren en niet te blijven hangen. En dat je niet van baan hoeft te wisselen om weer nieuwe technieken te leren. Maak het bespreekbaar en dan kan je met je werkgever kijken wat er mogelijk is.</p> <p>Afgelopen jaar mij o.a. beziggehouden met <a href="http://www.kajrietberg.nl/2017/12/responsive-afbeeldingen.html">Responsive afbeeldingen</a> en <a href="http://www.kajrietberg.nl/2017/01/wat-is-design.html">Wat design is</a>. Afgelopen jaar gestart met de theorie van JavaScript; waar komt het vandaan, waaruit bestaat het, wat is ECMAScript, etc. Erg interessant om te weten en ook belangrijk om mijn begrip van wat JS doet te vergroten.</p> <h2>Wat vind ik van front-end?</h2> <p>Het blijft een intrigerend vakgebied. Er zijn zoveel ontwikkelingen, te veel om te volgen. Specialiseren in een aantal technieken wordt steeds belangrijker. Je kan niet alles even goed en overal evenveel kennis van hebben.</p> <p>De ontwikkelingen op het gebied van CSS vind ik bijzonder. CSS is een taal waarmee je kan beschrijven hoe iets er uit moet zien. Ik vind het vrij makkelijk werken. Maar merk wel dat als een site of applicatie meer onderdelen bevat en daardoor meer CSS het lastig is om een goede architectuur neer te zetten. Dit blijft een mooie en leuke uitdaging.</p> <h2>Hoe nu verder?</h2> <p>Nieuwe technieken die ik voor komend jaar op het programma heb staan is JavaScript in samenhang met data-visualisaties en animeren. In eerdere berichten lees je ook steeds dat ik JavaScript wil leren. Maar het was nog niet echt gelukt. Het lastige was dat ik er geen praktische opdrachten voor had binnen mijn werkzaamheden. Dat is nu gelukkig wel zo. Komend jaar ga ik 2 dashboards bouwen waarbij ik data uit een JSON bestand moet halen, berekeningen mee ga maken en weer in het dashboard toevoeg. Hiervoor ga ik JS gebruiken. Daarnaast ga ik het logo van Zorgweb animeren.</p> <p>Bovenstaande doelen heb ik als jaardoelen en heb ik opgesplitst in kwartaal doelen en die weer in week doelen. Om mijn doelen te behalen word ik gesteund door Tanja de Bie van <a href="http://ihavesomanyideas.com/">I have so many ideas</a>. Ze is mijn cheerleader die positieve energie gaat geven om hier mee aan de slag te gaan. Ze gaat er samen met mij voor zorgen dat ik niet te veel wil en op koers blijf. Aan mezelf merk ik dat het doel JavaScript leren erg belangrijk is. Ik wil het heel graag. Ik wil dat magische gevoel hebben websites te kunnen manipuleren met JS. Dit vind ik ook heel eng. Het roept ook vragen op: want kan ik het wel leren, kan ik wel analytisch genoeg denken. En daarnaast ben ik ook bang dat de magie van wat JS allemaal kan af gaat. Ik zal het leren begrijpen en langzaam aan zal de uitdaging wegebben en waar ga ik daarna opzoek en waar blijft die magie dan.</p> <p>De webbrowser blijft mij boeien, wat er allemaal mee kan is ongelooflijk. Hoe ik mij hiermee ga bezighouden weet ik nog niet precies. Ik zit te denken om me bezig te houden voor <a href="https://webcompat.com/">Webcompat</a>.</p> <p>Komend jaar ga ik mij specialiseren in Data-visualisatie en Animatie met HTML, CSS en JS. Ik ga meer tijd besteden aan front-end. Volgens mij gaat dit een top jaar worden.</p> Mijn interpretatie van de Basis van JavaScript 2018-01-05T00:00:00Z https://www.kajrietberg.nl/posts/2018-01-05-basis-van-javascript/ <p class="lead">Afgelopen jaar heb ik de tijd genomen om mij te verdiepen in de theorie achter JavaScript. De reden hiervoor is dat ik JavaScript wil leren gebruiken en dus snappen wat ik doe. Hiervoor verschillende video's bekeken, artikelen gelezen, <a href="https://twitter.com/paul_v_m">Paul Verbeek-Mast</a> heeft mijn vele vragen beantwoord, geoefend met de console. Het eerste stapje is gezet.<br /> Hier staan mijn aantekeningen over de basis van JavaScript. Ik vul ze steeds aan. De reden dat ik ze nu al online zet is om feedback te krijgen van anderen waardoor ik weer leer. Heb je aanvullingen of denk je dat ik het verkeerd heb geinterpreteerd, geef het aan mij door. Mijn twitter-handle en mailadres staan onderaan de pagina.</p> <h2>Wat is JavaScript?</h2> <p>JavaScript is een programmeertaal. Het is een taal bedoelt voor het web en vooral voor de webbrowser. Het maakt de laatste jaren een flinke opmars omdat het ook gebruikt wordt als back-end taal met Node.js. Brendan Eich heeft de naam JavaScript bedacht, het was de bedoeling om HTML te koppelen aan Java-applets. Maar JavaScript heeft als programmeertaal niks te maken met de programmeertaal Java. Microsoft kwam in het begin met hun eigen versie van JS, genaamd JScript. Brendan Eich wilde voorkomen dat er meerdere versies van JS zouden ontstaan en heeft daarom Ecma gevraagd het te standariseren. Hierop is <a href="http://www.ecma-international.org/ecma-262/">EcmaScript</a> ontstaan. EcmaScript is de specificatie van JavaScript. Hierin staat beschreven aan welke regels het moet voldoen, welke onderdelen er in horen en hoe de opbouw van een regel is. Ik zie dit als de grammatica van de programmeertaal. Naast JS is o.a. ActionScript een implementatie van EcmaScript.</p> <iframe width="560" height="315" src="https://www.youtube.com/embed/xfATDpVubK4?rel=0" frameborder="0" gesture="media" allow="encrypted-media" allowfullscreen=""></iframe> <p>De JavaScript die je schrijft moet geinterpreteerd worden. Hiervoor is in de webbrowser een JS-engine die compileert de taal. Deze doet dit net voor het uitvoeren of zelfs tegelijkertijd met uitvoeren van de code (bron: <a href="https://github.com/getify/You-Dont-Know-JS">You don't know JavaScript</a>). Elke browser heeft een eigen JavaScript-Engine. En elke browser vendor bepaald welke onderdelen van EcmaScript in de browser worden ingebouwd. Hierdoor werkt niet alle JS in elke browser.</p> <h2>Wat is programmeren?</h2> <p>Hierboven heb ik het over een programmeertaal. Maar wat is programmeren eigenlijk?<br /> Als mensen snappen we wat we zien. Een computer heeft er geen idee van en heeft uitleg nodig om iets te snappen en ook een stappenplan om iets uit te voeren. Dat stappenplan is programmeren.</p> <p>Om de werkelijkheid begrijpbaar te maken voor computers zijn dingen als objecten te duiden. Elk object heeft:</p> <ul> <li>properties: karakteristieken. Elke property heeft een naam (name) en een waarde (value). Elke property zegt iets over het object. Aan deze property's is het object te herkennen.</li> <li>events: interacties met objecten. Bij het programmeren kijk je naar welke events wat moeten triggeren. Voorbeelden van events zijn muisklikken,</li> <li>methods: is een manier van communiceren met een object waardoor je een bepaalde waarde terugkrijgt van het object of juist gedaan krijgt bij het object. Het is een taak die uitgevoerd wordt. Deze taak kan uit allemaal kleine taakjes bestaan, maar hoe die worden uitgevoerd hoef je niet te weten.</li> </ul> <h2>Onderdelen van JavaScript</h2> <h3>Variabelen</h3> <p><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var">MDN over variabelen</a>. Variabelen maak je door te beginnen met var en daarna een variable naam, dit mag haast alles zijn. Een variabele kan verschillende <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures">data types</a> hebben:</p> <ul> <li> <p>String; een String heeft ook Properties en <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String#Methods_2">Methods</a> waardoor je verschillende acties op een string kan loslaten.</p> </li> <li> <p><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number">Number</a>; Integers (hele getallen), Floating points (decimale getallen) en Positive en Negative Infinity. Je hebt verschillende functies die je kan gebruiken om acties los te laten op Numbers. Zoals:</p> <ul> <li>parseInt() maakt van een string een integer;</li> <li>parseFloat() maakt van een string een decimaal;</li> <li>toFixed(x) maakt van een decimaal getal een string met x-aantal decimalen;</li> <li>toString maakt van een getal een string.</li> <li>Met de <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math">Math Object</a> kan je rekenen met Numbers.</li> </ul> </li> </ul> <p>Je hebt ook <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN">NaN</a>, dit staat voor Not a Number. Duidt vaak op een error;</p> <ul> <li>Boolean; geeft een true of false terug.</li> <li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array">Array</a>; een collectie van waarden. Kan verschillende data-types hebben, zelfs met meerdere objecten, elke waarde is gescheiden met een komma. De index van een array is de positie van de waarde, start met 0. Je kan o.a. arrays samenvoegen, je kan het aantal waardes in een array krijgen, je kan ze sorteren. Met <code>.push()</code> voeg je items toe aan je array en met <code>.pop()</code> haal je de laatste weg. Met <code>.length</code> kan je zien hoeveel items er in de array zitten. Zo zijn er meer acties die je kan toepassen op een array.</li> <li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">Object</a>; Je kan je eigen objecten maken en koppelen aan een variabele. In dit object kan je properties toevoegen (deze zeggen iets over het object).<br /> <code>var post = { id: 2, title: 'Hello JavaScript' }; post.title = 'Hello JavaScript!'; post.slug = 'hello-javascript'; console.log( post );</code></li> </ul> <p>De <code>.title</code> na de variabele naam/object heeft de dotnotation.</p> <ul> <li><a href="https://hacks.mozilla.org/2015/06/es6-in-depth-symbols/">Symbol</a>; zorgt er voor dat je objecten niet conflicteren als een andere ontwikkelaar dezelfde object naam zou nemen. Symbols mogen dezelfde naam hebben en conflicteren dan niet.</li> </ul> <p>Een variabele is niet zijn waarde maar zijn containers voor hun waarde. Een variabele krijgt een inhoud die weer kan veranderen tijdens het lopen van het programma. De Constants heeft een vaste waarde, deze waarde kan je wel aanpassen als het programma gelopen heeft. Voor een variabele zet je <code>var</code> en voor een Constants zet je <code>const</code>. En je kan <code>let</code> gebruiken. Dit is ook een manier om een variabele te maken. Maar deze maakt zijn eigen scope en is bijvoorbeeld buiten een if-statement niet te gebruiken. En de <code>let</code> is pas bruikbaar vanaf het moment dat je die gedeclareerd hebt.</p> <p>var voorbeeld; hiermee heb je de variabele 'voorbeeld' gedeclareerd (declared) en met var voorbeeld =&quot;een voorbeeld&quot;; is die gedefineerd (defined).</p> <p>Volgens Zac Gordon is het handigste de variabelen aan de top te declareren en ze met een komma te scheiden.<br /> <code>var titel = 'Leer JS', content = 'Zet er maar wat neer', post; //Deze laatste wordt hier alleen maar gedeclareert en pas later gevuld met een waarde, als je deze later vult hoef je niet het woordtje var er voor te zetten.</code></p> <p>JS is een <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof">weakly of loose Typed Language</a>. Je hoeft niet te zeggen welk data-type een variabele is. In Java is dat wel zo. Een variabele benoemt in het js bestand is een global variabele, deze is ook bereikbaar door andere functies in je JS. Een variabele benoemt in een functie is een local variabele, deze heeft lexical scoping. Een variabele gemaakt met let of const in een functie is een variabele met Block Scoping. Let er dus goed op waar je een variabele definieert.</p> <h3>This</h3> <p>Zie: <a href="https://zellwk.com/blog/this/">https://zellwk.com/blog/this/</a></p> <h3>Comments</h3> <p>Voor een heel stuk zelfde als in CSS <code>/* */</code> of voor 1 regel met <code>//</code></p> <h3>Operators</h3> <p>De hele lijst van <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators">Operators staat op MDN</a>.</p> <p><code>+ , -, *, /, =, ===, !, !==, ++, &gt;, &lt;, =&gt;, =&lt; +=, -=</code></p> <p>assignment (=), loose equality (==) deze kan implicit type coercion veroorzaken en strict equality (===)</p> <ul> <li> <p>Logical:</p> <ul> <li><code>&amp;&amp;</code> = AND</li> <li><code>||</code> = OR</li> <li><code>!</code> = NOT</li> </ul> </li> <li> <p>String Operators: + voor samenvoegen Strings. De + kan je gebruiken om getallen op te tellen, maar ook Strings samen te voegen. Voeg je een Number en een getal als string samen, wordt het een String.</p> </li> <li> <p>Conditional Operators: werkt met ( ) ? true: false</p> </li> </ul> <h3>Math</h3> <p>Met de modulus kan je de overgebleven getallen zien bij een deling. Dus 365 % 27 geeft 14. Dat zijn het aantal dagen die overblijven na het delen van 365 door 27.</p> <ul> <li><code>Math.random();</code> geeft een random getal van 0 tot 1.</li> <li><code>Math.floor();</code> maakt van een decimaal getal een rond getal. Rond af naar beneden.</li> </ul> <h3>Conditionals:</h3> <p>Onder deze conditie moet je dit doen en anders dat. if (...) doe dan dit ... else doe dan dat.... Wat na de if tussen de ( ) staat heet een <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements#Iterations">expression</a>.</p> <p><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch">Switch</a> ( ) ... case ....: doet iets break; (Break is nodig na elke case, anders blijft het door gaan).</p> <p>Verschil tussen Switch en Else if: bij Switch test je 1 conditie en is dan sneller als Else if. Switch gebruikt altijd ===, niet de lossere variant ==. Het verschil tussen == en === is dat bij === moet waarde en type precies gelijk zijn. Bij == is de waarde gelijk, maar mag het type anders zijn.</p> <h3>Functions:</h3> <p>In <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions">functies</a> zet je functionaliteiten die je graag weer wilt hergebruiken. Een functie is vaak een naam met brackets --( )-- er achter. Een functie heeft vaak arguments nodig, stukjes data, om hun werk te doen. De webbrowser heeft functies ingebouwd, maar je kan ook zelf functies samenstellen. Binnen een function heb je de return-statement die er voor zorgt dat het resultaat van de functie ook buiten de functie beschikbaar is. Dan kan de uitkomst pas gebruikt worden. De variabelen die binnen een functie worden gedefinieerd, zijn ook alleen daar bruikbaar, dit heet scoping. Een functie doet niks, pas op het moment dat deze aangeroepen wordt gebeurt er iets.</p> <p>Een functie ziet er zo uit:</p> <p><code>//Function declaration var addTwoNumbers = function(numberOne, numberTwo (dit zijn parameters)) { var numberOne; (door dat deze nu in de functie zitten, mogen deze eerste 2 variabelen weg) var numberTwo; var (hier betekent var dat deze variabele die er aan komt dat deze alleen in deze functie mag bestaan) sum = numberOne + numberTwo; return sum; (return geeft het antwoord terug, zonder dit stel je alleen de vraag en krijg je undefined) } addTwoNumbers(2, 5); //Function call</code></p> <p>Een functie gebruik je als je een taak vaker in je code wilt gebruiken. Zo kan je deze functie steeds opnieuw aanroepen.</p> <p>Anonieme functie = een functie zonder naam. Deze kan gekoppeld zijn aan een variabele. Zo'n functie hoeft maar 1x gebruikt te worden. Maar de waarde daarvan misschien wel vaker. Dan zet je de functie in een variabele.<br /> Functie expression = Als je een functie op de plek zet waar de interpreter een expression zou verwachten. Hierdoor kan je er voor zorgen dat variabelen-namen niet met elkaar conflicteren. Deze moet je altijd afsluiten met een ;</p> <p>Een <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions">method</a> is een functie gekoppeld aan een object.</p> <p>Function call = functieNaam();<br /> Function reference = functieNaam; Function Expression = een functie die () om de hele functie heen heeft zodat ook de naam van de functie niet in je Global deel gebruikt kan worden, dit zorgt voor minder vervuiling van je code. <br /> Achter een function expression kan je (); zetten zodat de functie ook gelijk uitgevoerd wordt. Dit heet een IIFE (Immediately Invoked Function Expression).</p> <h3>Events:</h3> <p><a href="https://developer.mozilla.org/en-US/docs/Web/Events">Gebeurtenissen zoals klikken met een muis of een toetsenbord aanslag</a>. Datgene wat luistert naar het event heet event listeners. De code die wordt uitgevoerd na dat het event is uitgevoerd heet event handlers.</p> <h3>Loops</h3> <p>Met <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Loops_and_iteration">een loop</a> kan je door een functie blijven gaan tot dat de conditional false aanduidt. Dan is het klaar, zo ga je door een lijst heen, do...., while...., do..while... of een for... loop (For in en For of).</p> <p>Infinite loop is een loop die niet stopt omdat je niet aan je conditionals komt.</p> <p>De For ... in loop gebruik je voor properties in object.</p> <p>De For...of loop gebruik je in een collectie zoals een array.</p> <p>Een Do.. While.. loop voert eerst iets uit en checkt daarna pas waar het aan moet voldoen.</p> <p>De <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/break">break-statement</a> zorgt er voor dat je uit een loop gaat omdat voldoen is aan de conditie.</p> <p>De <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/continue">continue-statement</a> zorgt er voor dat je door gaat in de loop, maar slaat die conditie over.</p> <p>Er zijn nieuwe manieren om een loop te doen, zoals map, reduce, filter en find. In het artikel van Flavio Copes <a href="https://flaviocopes.com/javascript-loops-map-filter-reduce-find/">An alternative approach to loops using map, filter, reduce and find</a> staan deze manieren beschreven.</p> <h3>Object</h3> <p>Een object bestaat uit variabelen en functies. Deze variabelen worden properties genoemd en die functies worden methods genoemd.</p> <p>Object.isMethod hiermee kan je via de isMethod functie iets doen met het object. Het object kan een Number of String zijn. De isMethod kan je in je DevTools terug vinden. Dit zijn dan degene waar je webbrowser mee overweg kan. Deze lijken op die in jQuery worden gebruikt. jQuery heeft zichzelf overbodig gemaakt, in JS zijn nu verschillende methods die hetzelfde doen als wat jQuery doet/ deed.</p> <p>Build-in object van JS zijn o.a. String, Number, Math en Date. Hiermee kan je spelen door de properties en methods die ze hebben.</p> <h2>Overig</h2> <p>Met console.log(); kan je een bepaalde variabele uitlezen. Hierdoor kan je o.a. debuggen om te kijken waar een fout zit als je deze hebt.</p> <p>Een statement is een individuele instructie of een stap afgesloten met een ; of tussen {...}. <br /> Expressions zijn vaak delen van een statement en zijn stukjes code die een waarde krijgen. <br /> <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords">Keywords</a> hebben een functionaliteit in JS, zoals var en function.</p> <ul> <li>undefined = nog niet gedefineerd, heeft nog geen waarde, maar bestaat wel.</li> <li>null = niks, echt helemaal niks.</li> <li>block = statements die bij elkaar horen. Hebben {} om zich heen. Alleen maar een block kom je niet snel tegen. Vaak is het gekoppeld aan een andere statement, zoals een if.</li> <li>scope = de reikwijdte van een functie. Variabelen die in een functie staan, staan in de scope van die functie.</li> <li>this = verwijst naar het object waaraan het gekoppeld is.</li> </ul> <h2>JSON</h2> <p><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON">JavaScript Object Notation</a>; een handige manier om informatie middels tekst door te geven. Het is makkelijk te lezen en te schrijven. Altijd double quotes gebruiken &quot; &quot; voor Strings. Je hebt een key met een value.</p> <p>In JS is er de JSON object. Deze heeft 2 methods; nl. JSON.parse() hiermee kan je een JSON object omzetten naar een native JS object en JSON.stringify() deze maakt van een JS object een JSON string of object. Gebruik geen eval() voor het parsen van JSON.</p> <p>Een JSON validator <a href="https://jsonlint.com/">JSONLint</a>.</p> <h2>Lastige termen</h2> <ul> <li>interpolation: een variabele in een string zetten.</li> <li>hoisting: er uit halen/ optillen. Doordat een js-bestand eerst soort van gecompiled wordt worden bepaalde variabelen en functies in een bepaalde volgorde gezet waardoor ze daarna door de interpreter goed gelezen worden.</li> <li><a href="https://medium.freecodecamp.org/js-type-coercion-explained-27ba3d9a2839">coercion</a>: Hierbij veranderd JS een waarde in een ander type zodat wat er gebeuren moet wel kan gebeuren. Als je een getal als string hebt wordt deze omgezet naar een number als je een berekening maakt met een number.</li> <li>scope: het bereik van een variable of een functie; lexical scope in die functie of die genest zijn. Of een global scope, bereikbaar voor alle functies, meestal zijn deze boven in het bestand gedefineerd.</li> <li>scope chain: de ketting van het bereik van een variabele of een functie, deze gaat van binnen naar buiten/ of van beneden naar boven.</li> <li>closures: als een geneste functie gebruik maakt van een variabele in een parent functie dan doet deze aan een Close over. Dit noemen we een closure.</li> <li><a href="https://developer.mozilla.org/nl/docs/Web/JavaScript/Memory_Management#Garbage_collection">garbage collection</a></li> </ul> <h2>JS Reference</h2> <ul> <li><a href="https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics">JavaScript de basis</a></li> <li><a href="https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference">Overzicht van alle onderdelen</a></li> <li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide">Hoe gebruik je JS</a></li> <li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators">Expressions and operators</a></li> <li><a href="http://eloquentjavascript.net/">Eloquent JavaScript</a></li> <li><a href="https://github.com/getify/You-Dont-Know-JS">You don't know JavaScript</a></li> <li><a href="http://www.javascriptbook.com/">JavaScript Book</a></li> </ul> De DOM en JavaScript 2018-01-08T00:00:00Z https://www.kajrietberg.nl/posts/2018-01-08-dom-en-javascript/ <p class="lead">Na mijn <a href="https://www.kajrietberg.nl/2018/01/basis-van-javascript.html">Mijn interpretatie van de Basis van JavaScript artikel</a> is dit mijn volgende artikel/ blad met aantekeningen over mijn JS leertocht. Deze keer zijn dit aantekeningen over wat de DOM is en hoe die zich verhoudt tot JavaScript. Ik krijg graag jullie feedback. Hier kan ik weer van leren.<br />Mijn twitter-handle en mailadres staan onderaan de pagina.</p> <p><a href="https://javascriptforwp.com/introduction-to-document-object-model/">De DOM</a> is een representatie van de webpagina, maar is er ook voor bedoeld om te communiceren met de webpagina.<br /> <a href="https://css-tricks.com/dom/">De DOM</a> is een object met properties en methods. Naast de DOM heb je ook het scherm dat een object is met zijn eigen properties en methods. En elke node is een object met methods en properties.<br /> <a href="https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Mode">De DOM is ook een API</a>. Het is een API voor HTML (XML, SVG) die een webpagina aanbiedt als een boom met vertakkingen van objecten. Browser vendors gebruiken de DOM specificatie om te komen tot het weergeven van webpagina's. Een webbrowser zet de HTML om naar de DOM. En de DOM is waar de JS mee kan praten.<br /> De DOM is opgebouwd uit Nodes. Nodes zijn objecten in een boomstructuur. Nodes hebben properties en methods. Methods die je kan gebruiken staan op <a href="https://developer.mozilla.org/en-US/docs/Web/API/Document">https://developer.mozilla.org/en-US/docs/Web/API/Document</a> en op <a href="https://developer.mozilla.org/en-US/docs/Web/API/Node">https://developer.mozilla.org/en-US/docs/Web/API/Node</a>.</p> <p>Verschillende <a href="https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType">Node types</a>:</p> <ul> <li>Document [ 9 ] = HTML document</li> <li>DocumentType [ 10 ] = de doctype</li> <li>Element [ 1 ] = alle HTML elementen op een pagina</li> <li>Text [ 3 ] = tekst- waardes vaak gevonden in Element-nodes</li> <li>Comments [ 8 ] = HTML comments</li> <li>DocumentFragments [ 11 ] = een collectie van Nodes om meerdere elementen in te stoppen</li> </ul> <p>Met JS pas je de DOM tree aan en niet de originele HTML bestanden.</p> <p>Het werken met de DOM behelst 2 stappen:</p> <ul> <li>Ga naar de node(s) waarmee je wilt werken.</li> <li>Werk aan de node(s), voeg iets toe, pas het aan, etc.</li> </ul> <h2>Nodes selecteren in je webpagina</h2> <p>Om een Node te selecteren in je pagina kan je typen: <code>document.children</code>. Dan krijg je een array van elementen. Zo kan je [ 0 ] er achter zetten en krijg je de eerste waarde uit je array. Daar kan je weer achterzetten children[ 1 ] en zo kan je doorgaan totdat je het element hebt dat je wilt hebben. Dit is erg omslachtig. Om het makkelijker te maken voor ons ontwikkelaars kan je methodes gebruiken. Zo heb je:</p> <ul> <li><code>document.getElementById()</code></li> <li><code>document.getElementsByTagName()</code></li> <li><code>document.getElementsByClassName();</code> hiermee krijg je alle elementen met deze class-naam terug in een array, ook als er maar 1 element is krijg je die in een array.</li> <li><code>document.querySelector();</code> hiermee kan je zoeken op alle CSS selectors. Zoals een class-naam op dezelfde manier als je het in CSS zet dus met de . er voor. Je krijgt dan het eerste element terug met die class-naam. Of <code>document.querySelector('form input[type=&quot;email&quot;]')</code> kan ook.</li> <li><code>document.querySelectorAll();</code> Hiermee doe je hetzelfde als bovenstaande maar dan krijg je alle elementen terug met die specifieke class-naam in een array.</li> </ul> <p>Het kan zijn dat <code>getElementById()</code> en <code>getElementsByTagName()</code> sneller werken dan de querySelector.</p> <h2>Dom Traversal</h2> <p>Het reizen van en naar andere onderdelen.</p> <ul> <li><code>.parentElement</code></li> <li><code>.parentNode</code></li> </ul> <p>Bovenstaande zijn vaak het zelfde, maar niet elke node is een element.</p> <p>Bij elk Node type:</p> <ul> <li><code>.childNodes</code></li> <li><code>.firstChild</code></li> <li><code>.lastChild</code></li> </ul> <p>Bij Element Nodes → dit is nieuwer:</p> <ul> <li><code>.children</code></li> <li><code>.firstElementChild</code></li> <li><code>lastElementChild</code></li> <li><code>childElementCount</code></li> </ul> <p>White Space (witruimte) is ook een Node. Door .childNodes op te vragen krijg je ook de witruimte/regels terug. Maar de witruimte/regel is geen Element.</p> <p>Buren bezoeken:</p> <p>Bij elk Node type:</p> <ul> <li><code>.nextSibling</code></li> <li><code>.previousSibling</code></li> </ul> <p>Bij Element Nodes → dit is nieuwer:</p> <ul> <li><code>.nextElementSibling</code></li> <li><code>.previousElementSibling</code></li> </ul> <p>Meest voorkomende Nodes zijn de Element en Text nodes.</p> <p>Een interessant en handig artikel over het selecteren van elementen in de DOM komt van Zell Liew, <a href="https://zellwk.com/blog/dom-traversals/">Traversing the DOM with JavaScript</a>.</p> <h2>waardes in en uit Element Nodes te krijgen</h2> <ul> <li><code>.innerHTML</code>: geeft alle html in het element</li> <li><code>.innerText</code>: geeft alle tekst zoals je het ook in de browser ziet</li> <li><code>.textContent</code>: geeft alle tekst ook die met CSS op display none is gezet en zoals de tekst precies in je html bestand is gezet.</li> <li><code>.outerHTML</code>: Geeft je element en ook de binnenste html</li> <li><code>.outerText</code>:</li> </ul> <p>Om nieuwe HTML of text in een element te plaatsen gebruik je <code>.innerHTML = '&lt;h2&gt; &lt;/h2&gt;'</code>. Dit zet de nieuwe html. Met <code>.innertext = kkkkkskjsjj</code> doe je hetzelfde maar dan voor tekst.</p> <p>Om de waardes in en vanuit Text Nodes te krijgen gebruik:</p> <ul> <li><code>.data</code> (hiermee kan je geen teksten uit attributes krijgen, dan moet je onderstaande gebruiken)</li> <li><code>.nodeValue</code></li> </ul> <h2>Nodes aanmaken</h2> <ul> <li><code>.createTextNode( ' ' );</code></li> <li><code>.creatElement( ' ' );</code></li> <li><code>.appendChild( childNode );</code> Hiermee zet je een child in een element.</li> <li><code>.createDocumentFragment( ' ' );</code> Om meerdere Nodes in te zetten om later als 1 element neer te zetten in een element. Een Document Fragment is een container voor Nodes.</li> </ul> <h2>Nodes toevoegen aan de DOM</h2> <ul> <li><code>ParentElement.insertBefore (Nieuwe node, waarvoor je het wil plaatsen);</code></li> <li><code>insertAfter</code> bestaat niet, gebruik dan <code>.nextSibling</code> op het element waarna je het wil plaatsen.</li> <li><code>replaceChild( nieuw element, element om te vervangen);</code></li> </ul> <h2>Kopiëren van Nodes</h2> <ul> <li><code>cloneNode( true );</code> met true wordt het element met alle children gekopieerd. Let er op dat bij Clonen dat attributen zoals id wel de juiste waardes krijgen.</li> </ul> <h2>Verwijder Nodes van de DOM</h2> <ul> <li><code>element.remove();</code></li> <li><code>parentEl.removeChild( );</code> deze is handiger, je kan dan het element bewaren en weer oproepen.</li> </ul> <p>Style aanpassen van Nodes</p> <ul> <li>met <code>window.getComputedStyle( el).propToChange;</code> (hiermee krijg je de inhoud van de propToChange)</li> <li><code>el.style.propToChange = &quot;destyle&quot;;</code> hiermee zet je inline styling.</li> <li><code>document.styleSheets;</code> hiermee krijg je een array van de stylesheets die opgeroepen worden.</li> <li><code>styleSheet.insertRule( selector, rule, index );</code> als je een stylerule wilt aanpassen in een stylesheet.</li> </ul> <h2>Attributes</h2> <p>Om met de attributes te spelen gebruik je de propertie <code>.attributes</code>. Je krijgt dan een array van informatie terug.</p> <p>Om de informatie van de attribute te krijgen gebruik je:</p> <ul> <li><code>.nodeName</code></li> <li><code>.nodeValue</code></li> </ul> <p>Om de waardes van attributes aan te passen:</p> <ul> <li><code>.getAttribute()</code></li> <li><code>.setAttribute()</code></li> </ul> <p>Om Class attributes te krijgen:</p> <ul> <li><code>.getAttribute('class')</code></li> <li><code>.className</code></li> <li><code>.classList</code> → is nieuwer</li> </ul> <p>Om Data attributes te krijgen:</p> <ul> <li><code>.getAttribute('data-attr')</code></li> <li><code>.dataset</code> → je krijgt een DOMStringMap; hierin staan de data attributes van een element.</li> </ul> <p>Er zijn betere manieren om data op te slaan ipv in je markup. Liever niet in je HTML opslaan.</p> <h2>Formulier elementen</h2> <p>Bij formulier elementen om deze te laten werken zet de <code>&lt;form&gt;</code> tag er om heen. Deze heeft een attribute method. De method attribute kan de waardes hebben GET of POST. Als je GET doet zie je de waardes van de invulvelden in de url terugkomen. Bij POST niet. Dit laatste moet je officieel doen zodat alles verborgen blijft, maar de GET methode is handig voor testen. De id attribute is handig voor referentie zodat je vanuit je JS aan het formulier kan referen. De name attribute is belangrijk voor het doorgeven van de info zodat je weet welke info bij de form met die naam hoort.</p> <p>De attributes van form elementen kan je makkelijk met JS aanpassen.</p> <p>De value attribute is de waarde die je bij een inputveld invult. Deze kan je ook voorinvullen, dan zie je bij het komen op een website dat er al iets in de inputvelden staat. Dat kan zijn als je al iets weet zoals postcode of andere adres gegevens.</p> <p>Om formulier elementen aan te spreken kan je gebruik maken van:</p> <ul> <li><code>document.forms</code></li> <li><code>document.getElementById</code></li> <li><code>document.getElementsByName</code></li> </ul> <p>Selecteer een onderdeel van een form. Gebruik:</p> <ul> <li>Door de elementen heen lopen</li> <li>Selecteer specifieke elementen</li> </ul> <p>Om te werken met radio, checkbox en option voor te checken op checked of ze daarop te zetten:</p> <ul> <li><code>radio.checked = true;</code></li> <li><code>checkbox.checked = true;</code></li> <li><code>option.selected = true;</code></li> </ul> <h2>Events</h2> <p><a href="https://developer.mozilla.org/en-US/docs/Web/Events">Events</a> zijn technisch gezien een onderdeel van de DOM.</p> <p>Selecteer het element waarop iets moet gebeuren. Zeg welk event moet plaats vinden om een bepaalde functie te activeren.</p> <p>Te veel eventlisteners kunnen de performance verslechteren. Soms kan het beter zijn op een parent element een eventlistener te zetten.</p> <p>Type:</p> <ul> <li>mouse events</li> <li>keyboard events</li> <li>form events</li> <li>media events</li> <li>drag en drop events</li> <li>window events (scrolling, browser die veranderd van grootte)</li> <li>Etc...en nog meer</li> </ul> <p>Kan het inline zetten, dus in de HTML, bijvoorbeeld met onclick=&quot; &quot;. Denk er aan dit is niet Best Practice, dus alleen in noodsituaties gebruiken.</p> <p>Bij <a href="https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Event_handlers">Global Event Handlers</a> gebruik je bijvoorbeeld een onclick, maar dan in het JS bestand. Je kan de onclick koppelen aan een element. Hierbij moet je altijd de functie voor de Global event handler zetten. Je gebruikt een function reference.</p> <p>Event Listeners is de meest gebruikte en de beste manier om Events te gebruiken; <a href="https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener">addEventListener()</a>.</p> <p>Weghalen gaat met: <a href="https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener">removeEventListener();</a></p> <p>Gebruik geen anonieme functies met Event Listeners, want je kan de removeEventListener niet gebruiken bij een anonieme functie.</p> <p><a href="https://developer.mozilla.org/en-US/docs/Web/API/Event/eventPhase">Event Propagation</a> gaat over :</p> <ul> <li>capturing; fase 1 naar het element toe vanaf Window</li> <li>Target: fase 2 het terecht komen bij het element</li> <li>Bubbling: fase 3 het weer terug gaan naar de Window</li> </ul> <p>Een Event Listener kan inhaken op de Capturing of Bubbling fase. Wat kan je hier mee? Het kan zijn dat je wilt dat een parent element weet wat er gebeurt in een child element en of dit er voor of er na moet gebeuren.</p> <p>Event Object: heeft properties met informatie over het Event dat net gebeurd. Middels functies is deze info te verkrijgen.</p> Animatie op het web 2018-03-01T00:00:00Z https://www.kajrietberg.nl/posts/2018-03-01-animatie-op-het-web/ <p>In dit artikel (opsomming) over animatie staan mijn verzamelde bronnen en opmerkingen die naar mijn idee belangrijk of handig zijn om meer te weten te komen over animatie op het web. Als ik nieuwe bronnen vind plaats ik deze hier. Mocht jij een interessante bron hebben meld het mij, mijn contactgegevens staan onderaan de pagina. Dit artikel heb ik geschreven in 2018 en aangevuld in juli 2023. De artikelen die genoemd worden zijn van voor 2018, maar volgens mij wel relevant. De tools die je gebruikt willen in de webwereld snel veranderen, zo ook CSS, Canvas en WebGL en wat daarbij mogelijk is. Maar degene die ik noem in dit artikel bestaan in 2023 nog steeds. De artikelen beschrijven meer de basis van bewegen en het gebruiksgemak. Dat zijn principes die nog steeds overeind staan.</p> <p>Het is geen perfect geschreven artikel maar een naslagwerk voor mijzelf en hopelijk heeft iemand anders er ook nog baat bij.</p> <h2>Animatie of motion design is...</h2> <p>Animatie is dat iets veranderd naar een andere toestand. Kan een beweging zijn of een andere vorm of een andere kleur. <br /> Motion is beweging, iets zie je bewegen. Het verschil tussen motion en animatie is dat bij een animatie iets kan veranderen, maar dat hoeft geen beweging te zijn. Denk daar maar eens over na. <br /> Tegenwoordig is Motion Designer een apart vak geworden. Er zijn bedrijven die Motion designers in dienst hebben, zoals Google.</p> <p>Animatie en motion op het web bestaan naar mijn optiek uit 3 verschillende vaardigheden.</p> <ul> <li>De vaardigheid van het animeren/laten bewegen. Wat is een goede animatie/beweging? De rol van motion designer.</li> <li>Op welke manier helpt het de gebruiker, dus user experience. De rol van UX-er.</li> <li>Hoe laat je het bewegen op de webpagina, dus welke tools gebruik je. De rol van developer.</li> </ul> <p>Hoe beweging en/of animatie goed overkomen staat beschreven in <a href="https://www.creativebloq.com/advice/understand-the-12-principles-of-animation">The 12 Principles of Animation</a>.</p> <h3>Wat doet beweging?</h3> <p>Het neemt de bezoeker mee in de actie die het net deed en zorgt voor focus en orientatie waar je bent. De bezoeker heeft het gevoel dat het interacteert met echte elementen i.p.v. met een scherm. Schermen met beweging voelen meer levend en menselijk waardoor digitale producten tot leven komen. Bedenk daarbij wel dat levendigheid voor kinderen en jongeren anders is dan voor ouderen. <br /> Beweging vertelt een verhaal. Het zorgt er voor dat een interactie niet uit losse onderdelen bestaat.</p> <p>Meer hierover in het artikel van <a href="https://uxplanet.org/motion-in-ux-design-90f6da5c32fe#.49bacsb9l">UX Planet; Motion in UX Design</a> en <a href="https://design.google/library/making-motion-meaningful">Google Design; Making Motion Meaningful</a>.</p> <h2>Waarom beweging gebruiken?</h2> <p>Beweging is bedoeld om het gebruiksgemak te verbeteren. Overgangen verlopen soepeler. Het zorgt ervoor dat het natuurlijker overkomt. <br /> Kijk welke vragen een bezoeker zich kan stellen op je pagina en laat daar beweging op aansluiten. Voorbeelden van deze vragen zijn:</p> <ul> <li>Wat moet ik hierna doen? De animatie neemt je mee in het proces van wat er moet gebeuren.</li> <li>Hoe weet ik of het formulier juist ingevuld is?</li> </ul> <h2>Motion in webforms</h2> <p>We weten nu wat motion is en hoe we dit online kunnen gebruiken. In mijn oude werkveld van zorgverzekeringen aanvragen zijn webformulieren belangrijk. Je vraagt een zorgverzekering aan en daarvoor moet je verschillende vragen beantwoorden middels een webform. Mijn vraag hierbij is: &quot;Hoe kunnen we een webformulier gebruiksvriendelijker maken, prettiger om in te vullen?&quot;. Ik denk dat Motion hierbij een rol kan spelen. Bewegingen kunnen een webformulier levendiger maken, het natuurlijker laten aanvoelen, de menselijke interactie meer in verwerken dan statische webformulieren doen.</p> <p>Hoe doen we dit dan? Val Head laat in <a href="http://valhead.com/2015/02/02/screencast-ui-animation-reviews-web-forms/">een screencast</a> zien hoe je dit kan toepassen.</p> <h2>Hoe zet je beweging in een design zodat een front-end developer het weet?</h2> <ul> <li>Zet erbij welke waarden veranderen en met welke eenheden. Denk daarbij aan: easing, timing, properties (de wat). Bij tijd zijn er zelfs al onderzoeken gedaan welke tijd het beste gebruikt kan worden voor welke onderdelen.</li> <li><a href="http://valhead.com/2016/12/08/sketching-interface-animations-an-interview-with-eva-lotta-lamm/">Schets wat er moet bewegen en hoe</a><br /> In dit interview beschrijft Eva-Lot hoe ze animaties schets. Ze vertelt over een trigger die zorgt voor de animatie, de actie die daarna komt en als laatste de kwaliteit die laat zien hoe het gebeurd. Elk van deze heeft andere schets onderdelen en kan je op een bepalde manier aanduiden zodat het geheel uiteindelijk duidelijk wordt wat je als designer precies bedoelt.<br /> Schetsen is ook handig om eerste ideeen te bedenken en te bespreken met anderen.</li> <li>Gebruik storyboards <a href="https://s3.amazonaws.com/stash.rachelnabors.com/downloads/storyboard.pdf">Storyboard pdf van Rachel Nabors om te gebruiken</a></li> <li>Of probeer een gif van de beweging/animatie te maken. En zet de waarden er wel bij.</li> </ul> <p>Meer hierover staat in het artikel van Rachel Nabors <a href="https://alistapart.com/article/communicating-animation/">Communicating Animation</a>.</p> <h2>De tools</h2> <p>Bovenstaand gaat meer over het bedenken en het ontwerpen van animatie voor een webpagina. Als je dit bedacht hebt en in een design verwerkt komt het volgende onderdeel en dat is de animatie bouwen. Je kan dit met CSS doen met daarnaast JavaScript libaries. Het is niet dat het ene de ander bijt. Er zijn verschillende JavaScript libraries die je kan gebruiken.</p> <h3>CSS</h3> <p>Bij CSS werk je met de <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_transitions/Using_CSS_transitions">transition</a> property en/of de <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animations/Using_CSS_animations">animation property</a> (en de sub-properties) waarbij de @keyframes belangrijk is.</p> <h3>CSS of JavaScript</h3> <ul> <li>CSS Tricks; <a href="https://css-tricks.com/myth-busting-css-animations-vs-javascript/">Myth Busting: CSS Animations vs. JavaScript</a></li> <li><a href="https://medium.com/helabs/alien-invasions-svgs-and-css-animations-d56c4d757209">Alien Invasions, SVGs and CSS Animations</a></li> </ul> <h3>JS libraries</h3> <ul> <li><a href="https://greensock.com/">GSAP</a></li> <li><a href="http://animejs.com/">animejs</a></li> <li><a href="http://mojs.io/">Motion for the web</a></li> <li><a href="https://threejs.org/">three.js</a></li> </ul> <h2>Voorbeelden:</h2> <ul> <li><a href="http://tobiasahlin.com/moving-letters/">Tobias Ahlin; moving letters</a></li> <li><a href="https://www.smashingmagazine.com/2016/07/an-svg-animation-case-study/">The Illusion Of Life: An SVG Animation Case Study</a></li> <li><a href="https://developer.telerik.com/featured/guide-browser-scroll-animations/">A Guide to Browser Scroll Animations</a></li> </ul> <h2>Performance van web animaties</h2> <p><a href="https://www.smashingmagazine.com/2016/12/gpu-animation-doing-it-right/">CSS GPU Animation: Doing It Right</a>. Als je animaties gaat gebruiken op een website vraag je meer van de rekenkracht van de webbrowser en de computer. Denk er dus goed overna of het handig is wat je doet of dat het op een manier kan die minder rekenkracht nodig heeft.</p> <h2>Skills:</h2> <ul> <li>Kennis van animatie design</li> <li><a href="https://lawsofux.com/">UX</a>: wanneer gebruik je wel en niet animatie.</li> <li>CSS</li> <li>JavaScript</li> <li><a href="https://www.kajrietberg.nl/posts/2019-02-26-meer-over-svg/">SVG</a>: svg afbeeldingen kan je heel goed animeren.</li> <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API">Webanimation API</a>: animeren met JavaScript en in de webbrowser ingebouwde elementen</li> <li><a href="https://css-tricks.com/accessible-web-animation-the-wcag-on-animation-explained/">Toegankelijkheid van web animaties</a>: hierdoor maak je een animatie toegankelijk voor mensen die bijvoorbeeld blind zijn, zij willen ook wel de eravring van een animatie ondergaan.</li> </ul> <h2>Tools</h2> <p>Een kleine opsomming van tools.</p> <ul> <li>Webdeveloper tools in Firefox en Chrome hebben animatie tools (Safari en Opera bekijken) <a href="https://hacks.mozilla.org/2016/11/visualize-animations-easing-in-devtools/">Visualize easing in devtools</a></li> <li><a href="https://hacks.mozilla.org/2016/08/animating-like-you-just-dont-care-with-element-animate/">Web animatie API</a>, uitgelegd door Rachel Nabors <a href="https://vimeo.com/163510676">Rachel Nabors Smashing Conf</a></li> <li><a href="http://sparkbox.github.io/bouncy-ball/">Vergelijk webanimatie technieken/tools</a></li> <li>Adobe Illustrator en After Effects</li> <li>HTML <a href="https://caniuse.com/canvas">canvas</a> element</li> <li>WebGL: <a href="https://webglfundamentals.org/webgl/lessons/webgl-animation.html">WebGL and animation</a></li> <li><a href="http://www.pixijs.com/">pixi.js</a></li> <li><a href="https://aescripts.com/bodymovin/">Bodymovin</a>, After Effect plugin voor exporteren van animaties</li> <li><a href="https://spiritapp.io/">Spiritjs</a></li> </ul> <p>Een al oudere beschrijving van technieken/tools van Sarah Drasner: <a href="https://css-tricks.com/comparison-animation-technologies/">A Comparison of Animation Technologies</a>.</p> <h2>Boeken</h2> <p>De hier genoemde boeken zijn al wel ouder, maar volgens mij nog wel relevant.</p> <ul> <li><a href="http://valhead.com/2016/07/26/designing-interface-animation-is-now-available/">Val Head, Designing Interface Animation</a></li> <li><a href="http://shop.oreilly.com/product/0636920045335.do?intcmp=il-web-books-videos-product-na_new_site_introduction_to_svg_animation_body_text_cta">Sarah Drasner, SVG Animations</a></li> <li><a href="https://abookapart.com/products/animation-at-work">Rachel Nabors, animation at work</a>, een stuk uit dit boek: <a href="https://alistapart.com/article/patterns-and-purpose">A List Apart; Patterns and Purpose, an Excerpt from Animation at Work</a></li> </ul> <h2>Conferentie talks:</h2> <ul> <li></li> <li><a href="https://www.youtube.com/watch?v=jX_TWlDe-Is&amp;feature=youtu.be&amp;list=PLBevk0eXLOGdZ4yHChA-JW69DCBe7uGkJ">Rachel Nabors The web in motion at Front-Trends 2016</a></li> <li><a href="https://vimeo.com/194963386">Sarah Drasner Fronteers conf 2016</a> en de <a href="http://slides.com/sdrasner/functional-fronteers#/">slides</a></li> <li><a href="https://vimeo.com/240478145">Val Head: “Choose Your Animation Adventure” at Fronteers Conference 2017</a></li> </ul> <h2>Mensen om te volgen</h2> <ul> <li><a href="https://sarahdrasnerdesign.com/">Sarah Drasner</a></li> <li><a href="https://gannon.tv/">Chris Gannon</a></li> <li><a href="https://valhead.com/">Val Head</a></li> </ul> <h2>Nieuwsbrieven</h2> <ul> <li>Val Head's <a href="http://uianimationnewsletter.com/">The UI Animation Newsletter</a></li> </ul> <h2>Design bureau’s die werken met animatie/motion in de webbrowser:</h2> <ul> <li><a href="https://clarify.nl/">Clarify</a></li> <li><a href="https://www.pixelpillow.nl/">Pixelpillow</a></li> </ul> Data, tabellen en grafieken types 2018-04-01T00:00:00Z https://www.kajrietberg.nl/posts/2018-04-01-data-tabellen-grafieken/ <p>Bij deze weer een aantekeningen artikel. Deze keer over grafieken en tabellen.</p> <p>Als je omgaat met getallen en grafieken is een beetje kennis van statistiek handig, hierdoor kan je de kwaliteit van je getallen en dus de grafieken verbeteren. In het boek &quot;Show me the numbers&quot; van Stephen Few is 1 van de eerste hoofdstukken gewijd aan een stukje theoretische kennis van statistiek. Erg handig om weer je verouderde kennis op te halen.</p> <p>Met grafieken laat je data zien, door een beter inzicht in data kunnen beslissingen beter genomen worden. Datavisualisaties en dus grafieken zorgen hier dus voor.</p> <h4>Tabellen en grafieken van kwantitatieve business informatie kan gebruikt worden voor:</h4> <ul> <li>analyse: te ontdekken naar het verhaal in je data</li> <li>communicatie: het vertellen van het verhaal van je data</li> <li>monitoring: het monitoren van je data, kijk je naar snelheid of de kwaliteit of de hoeveelheid.</li> <li>plannen: als je de data gebruikt om te voorspellen naar de toekomst toe.</li> </ul> <p>Grafieken tonen verbanden, trends en data op een visuele manier. Een tabel toont data als taal en om met elkaar te kunnen vergelijken.</p> <p>Quantitatieve verhalen bestaat uit quantitatieve data (een getal) en uit categorie data (bijvoorbeeld tijd). Ze zijn gebaseerd op statistieken. Gebruik de juiste getallen zodat het verhaal dat je toont ook klopt. Verdiep je dus in bepaalde termen zoals gemiddelden, meridiaan, mediaan, etc. Zodat je weet waar je over praat.</p> <h4>Quantitatieve data relaties:</h4> <ul> <li>nominaal</li> <li>ordinaal</li> <li>interval</li> <li>hierarchies</li> </ul> <p>Uitleg over deze relaties staat op <a href="https://wetenschap.infonu.nl/onderzoek/110039-meetniveaus-nominaal-ordinaal-interval-en-ratio.html">Meetniveaus: Nominaal, Ordinaal, Interval en Ratio</a>.</p> <h4>Categorie waarden relaties:</h4> <ul> <li>ranking</li> <li>ratio</li> <li>correlatie</li> </ul> <h4>Grafieken heb je in verschillende vormen:</h4> <ul> <li>categoriaal</li> <li>hierarchiaal</li> <li>relationeel</li> <li>in de tijd wegzetten</li> <li>Ruimtelijke patronen (spatial patterns); zijn vaak meer kaarten.</li> </ul> <p>Bij de keuze van het presenteren van je data moet je kijken naar de behoeftes van je doelgroep, wat willen of moeten ze weten. En ook de tijd die ze hebben om de data door te nemen. Wil de doelgroep een bepaalde waarde opzoeken of meerdere individuele waardes, dan is een tabel een goede manier van presenteren van je data. Wil je trends of patronen bekijken, dan is een grafiek een betere manier van presenteren.</p> <p>Hou bij het designen rekening met hoe de mensen visuele informatie waarnemen en verwerken in de hersenen. Voor het designen van tabellen en grafieken is het belangrijk dat je meteen de aandacht grijpt zodat mensen geïnteresseerd zijn in je informatie. Je doet vooral aanspraak op het eerste type geheugen, het visueel sensorische geheugen (ook wel het iconische geheugen of beeldgeheugen genoemd). <a href="https://wetenschap.infonu.nl/diversen/108200-hoe-werkt-het-geheugen-bekeken-vanuit-psychologisch-oogpunt.html">Hoe werkt het geheugen?</a></p> <p>Maak bij het designen gebruik van visuele zaken waar je hersenen mee kunnen werken; een cirkel dat groter is begrijpen we beter dat het bij een groter gebied of land of een groter bedrag hoort dan dat je verschillende kleuren gebruikt of een lichtere kleur. We halen informatie uit onze waarneming door relaties tussen elementen te bekijken. De context is belangrijk, denk hierbij aan een lichtere of donkere achtergrond. Maak geen gebruik van te veel verschillende visuele attributes.</p> <p>Belangrijk bij het design van tabelen en grafieken is de boodschap die je overbrengt. Hou je doel in de gaten en presenteer dat zo duidelijk mogelijk waardoor de bezoeker zonder poespas het verhaal tot zich kan nemen of misschien zijn/haar eigen verhaal kan maken. Denk dus na in welke vorm je de data aanbiedt, een tabel of grafiek of meerdere grafieken. En welk type grafiek. Bij tabellen en grafieken heb je data inkt en non-data inkt. Probeer zoveel mogelijk non-data inkt te vermijden. Om het verhaal te verduidelijken gebruik hiervoor elementen van een tabel of grafiek en maak deze ondersteunend aan je verhaal.</p> <h4>Zaken waarbij je hier aan moet denken zijn:</h4> <ul> <li>x- en y-as (en labels er bij)</li> <li>legenda</li> <li>grid-lijnen (hulp-lijnen in je grafiek)</li> <li>verhaaltje voor wat uitleg van punten in je grafiek of een verhaal hoe de grafiek gelezen moet worden</li> <li>maak elementen duidelijk door een achtergrond kleur, lijnen er om heen, dikke of dunnere lijnen, wit ruimte</li> <li>groepeer elementen die bij elkaar horen</li> <li>grote van je elementen, grote bollen, etc.</li> <li>Gebruik kleuren om verschil te laten zien</li> </ul> <p>Dashboard design: Dashboard is een exploratory manier van datavisualisatie. Er is data om door heen te gaan en te kijken wat deze zegt of zou kunnen zeggen.</p> <p>Krijg duidelijk welke data de bezoeker van het dashborad nodig heeft. Kijk hoe je deze data op een zo effectieve, maar simpele manier kan tonen. Als je extacte data nodig hebt, geef deze dan ook. Laat getallen zien. Is de data bedoelt voor meer vergelijken zet het dan in een grafiek. Laat de belangrijkste data eerst zien, uitleg van de data (details) kan je later (verder naar beneden tonen) Gebruik goede titels en labels bij een grafiek om duidelijk te maken wat er getoond wordt. Laat belangrijke data er uit springen door bijvoorbeeld een lijn of blok dikker te maken of op te lichten. Hou het overzichtelijk.</p> <p>Je kan een stap verder gaan en proberen een dashboard meer te personaliseren. Dat een bezoeker kan schuiven met de grafieken. Bepaal dus zelf hoe je dashboard opgebouwd is.</p> <h4>Interessante linkjes over Dashboard design:</h4> <ul> <li><a href="https://www.sisense.com/blog/4-design-principles-creating-better-dashboards/">Dashboard Design Best Practices – 4 Key Principles</a></li> <li><a href="http://www.susielu.com/data-viz/storytelling-in-dashboards">Storytelling in Dashboards</a></li> </ul> <h4>Handige tools:</h4> <ul> <li><a href="http://chartmaker.visualisingdata.com/">The Chartmaker Directory</a>: handige hulp voor het kiezen van welke type grafiek je kan gebruiken</li> <li><a href="https://www.highcharts.com/">Highcharts</a>: JavaScript library om data te koppelen aan grafieken</li> </ul> Datavisualisatie met kaarten 2018-04-12T00:00:00Z https://www.kajrietberg.nl/posts/2018-04-12-datavisualisatie-met-kaarten/ <p>Datavisualisatie kan middels grafieken, maar je kan ook gebruik maken van kaarten. Het laat middels een kaart zien waar het te visualiseren onderwerp te zien is of welk gebied het over gaat. Dit kan veel duidelijk maken over de spreiding in een gebied, land, werelddeel. Er zijn verschillende type kaarten, om meer te weten te komen over kaarten kan je het artikel van <a href="https://mapschool.io/index.nl.html">Map School</a> lezen.</p> <p>Voor het werken met datavisualisaties en kaarten zijn er meerdere tools beschikbaar. Ik heb LeafLet en D3 een beetje getest waarbij ik D3 heb gebruikt voor een kaart in het dashboard dat ik voor de VoorzieningenWijzer aan het bouwen was. Ik schrijf hier kort over beide tools en heb een opsomming met interessante links over het onderwerp datavisualisatie en kaarten.</p> <h2>LeafLet</h2> <p>LeafLet is een javascript library waarmee je kaarten en data online kan zetten. Deze tool is puur gebouwd om alleen dit te doen, dit in tegenstelling tot het hierna genoemde D3. LeafLet heeft al verschillende functies uitgedacht zodat je dit zelf niet hoeft te doen. Met deze functies kan je kaarten online tonen, data op de kaarten tonen, popups plaatsen, markers plaatsen, cirkels en polygonen en lijnen plaatsen.</p> <p>Met LeafLet kan je goed dynamische kaarten tonen. Het idee achter deze library is een lichtgewicht library te bouwen, waardoor deze makkelijk te gebruiken moet zijn doordat er niet te veel toeters en bellen bij komen kijken. Extra functionaliteiten kunnen toegevoegd worden middels plugins.</p> <p>Je zal verschillende websites tegenkomen die LeafLet gebruiken, zoals de website van de ANWB Camping zoek website.</p> <h2>D3</h2> <p>D3 is de tool voor het bouwen van custom datavisualisaties. Je kan D3 ook gebruiken voor een datavisualisatie met kaarten en dan vooral statische kaarten. Hoeft er vanuit de gebruiker geen interactie plaats te vinden, is D3 een goede optie om te gebruiken. D3 heeft verschillende functies ingebouwd die je kan gebruiken: <a href="https://github.com/d3/d3/blob/master/API.md">D3 API</a>.</p> <h2>Interessante bronnen</h2> <h3>Tools:</h3> <ul> <li><a href="http://leafletjs.com/">Leaflet</a></li> <li><a href="https://d3js.org/d3-geo">D3 geo</a></li> <li><a href="https://www.mapbox.com/">Mapbox</a></li> <li><a href="https://developers.google.com/maps/documentation/javascript/">Google Maps</a></li> <li><a href="https://developer.here.com/develop/javascript-api">HERE Maps</a></li> <li><a href="https://openlayers.org/">OpenLayers</a></li> <li><a href="https://beta.observablehq.com/collection/maps">Obervable</a></li> <li><a href="https://www.doogal.co.uk/BatchGeocoding.php">Batch geocoding</a></li> <li><a href="http://mapshaper.org/">Mapshaper</a></li> <li><a href="https://www.latlong.net/">Get Latitude and Longitude</a></li> </ul> <h3>Meetups:</h3> <ul> <li><a href="https://www.meetup.com/nl-NL/Maptime-AMS/">Maptime Amsterdam</a></li> </ul> <h3>Workshops/tutorials:</h3> <ul> <li><a href="https://github.com/NieneB/Webmapping_for_beginners/wiki">Webmapping for beginners</a></li> <li><a href="http://leafletjs.com/examples.html">Leaflet tutorials</a></li> </ul> <h3>Bedrijven:</h3> <ul> <li><a href="http://webmapper.net/">Webmapper</a></li> <li><a href="https://wolfmaps.nl/">Wolfmaps: maak interactieve kaarten die overal werken</a></li> </ul> <h3>Kaarten:</h3> <ul> <li><a href="https://www.cbs.nl/nl-nl/dossier/nederland-regionaal/geografische-data">Kaart van gemeenten in Nederland</a></li> <li><a href="https://www.pdok.nl/">Publieke Dienstverlening Op de Kaart (PDOK)</a></li> <li><a href="https://leaflet-extras.github.io/leaflet-providers/preview/">Leaflet kaarten</a></li> </ul> Fronteersconf 2018 2018-10-12T00:00:00Z https://www.kajrietberg.nl/posts/2018-10-12-fronteers-2018/ <p>Fronteersconf 2018 was een kwalitatief goede conferentie. Alles is altijd goed geregeld, sprekers zijn altijd goed. Maar wat dit jaar wel bijzonder maakte is dat er voor mij weinig bekende namen stonden, maar deze poersonen zetten goede talks neer. Misschien juist doordat ze onbekender zijn verwacht je minder, maar is het juist ook weer interessanter om naar ze te luisteren.</p> <p>Zaken die er uitsprongen waren: sterke presentaties (niet allemaal even interessant voor mij, maar presentatoren deden het goed), presentaties met verhalen zijn fantastische presentaties (je wordt meegezogen in het verhaal en wilt aleen maar meer horen), storytelling wordt steeds groter en belangrijker.</p> <h2>Leerpunten</h2> <p>Hier een opsomming van punten die ik interessant, belangrijk, wetenswaardig of wat dan maar vond van Fronteersconf 2018.</p> <h3>Keynote (The Secret Life of Comedy)</h3> <p>Dit jaar startte <a href="https://twitter.com/ebrunborg">Espen Brunborg</a> Fronteers 2018. Dit was vooral een inspirerende talk. De wijze les hierbij is dat het belangrijk is naast standaard dingen te doen ook eens te verrassen in designs. Ga niet uit van een bepaalde stroming, maar meng zaken van verschillende stromingen met elkaar.</p> <p>Stop wat comedy in je design/ website. Wees creatief, meng verschillende vormen.</p> <h3>Persuasion (I put a spell on you)</h3> <p>Een talk van <a href="https://twitter.com/ChiaraAliotta">Chiara Aliotta</a>. Ze maakt met hele fijne lijnen hele mooie tekeningen (o.a. van Smashing Book 6 heeft zij alle afbeeldingen gemaakt). In haar talk ging ze in op het overtuigen en verleiden van mensen met je website.</p> <p>Als designer heb je veel macht, het overtuigen/ verleiden van bezoekers op een website kan je doen met goede bedoelingen, maar ook met kwade bedoelingen. Je kan mensen verleiden tot aankopen die ze niet nodig zijn of ze zaken voorschotelen die niet waar zijn, maar dat wel lijken. Het overtuigen van mensen dat jouw product de beste is of een goede aanvulling op hun leven kan geen kwaad als het een goed en eerlijk product is. Zorg als designer er voor dat je ethische keuzes maakt.</p> <p>Ze verwees naar het boek van Cialdini, hij spreekt van <a href="https://www.influenceatwork.com/principles-of-persuasion/">6 principles of persuasion</a>.</p> <p>Het mooie van haar presentatie vond ik de manier waarop ze theorie verweefde met praktijk voorbeelden waarbij ze ook weer kort de theorie herhaalde in de afbeelding.</p> <h4>Slides</h4> <iframe src="https://www.slideshare.net/slideshow/embed_code/key/MeXVppbUzFFdFK" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen=""> </iframe> <div style="margin-bottom:5px"> <strong> <a href="https://www.slideshare.net/chiaraaliotta7/i-put-a-spell-on-you-118545806" title="I put a spell on you" target="_blank">I put a spell on you</a> </strong> from <strong><a href="https://www.slideshare.net/chiaraaliotta7" target="_blank">Chiara Aliotta</a></strong> </div> <h3>Accessibility (But my site looks fine! en Get Your Priorities Straight en The “C” is for Accessibility)</h3> <p><a href="https://twitter.com/lc512k">Laura Carvajal</a> is Principal Engineer bij The Financial Times. Eerder was ze accesibility lead van de online versie. Hiermee heeft ze ervaring opgedaan om ons te helpen het beter te doen voor mensen die dit nodig zijn. De talk van Heydon Pickering was gericht op inclusifiteit en die van <a href="https://twitter.com/evaferreira92">Eva Ferreira</a>.</p> <p>Gebruik <code>:focus-visible</code> en anders de <a href="https://github.com/WICG/focus-visible">polyfill</a>. Zorg er voor dat toetsenbord gebruikers kunnen zien waar ze zijn. Test je website zonder muis. Dit is iets wat ik meer moet doen. Bij sommige websites kan je switchen naar een andere browser. Maar wat als je door je handicap dit niet kan. Zorg er voor dat het in verschillende browsers werkt. Zet altijd een <code>href</code> in een link. Denk aan <code>prefers-reduced-motion</code> te gebruiken. Er kunnen mensen zijn die niet goed tegen beweging kunnen. Denk aan kleurenblinden door een goed contract te gebruiken. Het taal niveau is niet voor iedereen gelijk. Gebruik dus niet te lange zinnen en moeilijke woorden. Geldt voor mensen die de taal niet als moedertaal hebben, maar zeker ook voor mensen die dit wel hebben.</p> <p>Belangrijke punten die ik uit deze preso's haalde: Als ontwikkelaar hoef je maar op een paar punten te letten, doe dat dan ook. (Geldt ook voor mijzelf). Haal de outline niet weg, behalve als je die vervangt en maak er dan iets moois van. Pas op met flex &amp; order, bij tabben door een pagina werkt dat niet en is volgorde anders. Zorg er voor dat het toegankelijk is, wie zit er te wachten op super subtiele design elementjes. Heydon sprak hierover en zorgt weer even voor de relativering. Ook in wat je als front-end ontwikkelaar allemaal moet kunnen. Zorg er eerst voor dat je de basis kent.</p> <blockquote class="twitter-tweet" data-lang="nl"><p lang="en" dir="ltr">&quot;Sort your priorities&quot; - <a href="https://twitter.com/heydonworks?ref_src=twsrc%5Etfw">@heydonworks</a> <a href="https://twitter.com/hashtag/fronteers?src=hash&amp;ref_src=twsrc%5Etfw">#fronteers</a> <a href="https://t.co/vLCCnpUQBz">pic.twitter.com/vLCCnpUQBz</a></p>&mdash; Eva Ferreira 💚 (@evaferreira92) <a href="https://twitter.com/evaferreira92/status/1047847799734378498?ref_src=twsrc%5Etfw">4 oktober 2018</a></blockquote> <script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> <h3>Fonts Fonts Fonts</h3> <p>Interessante talk van <a href="https://twitter.com/svgeesus">Chris Lilley</a>. In een @font-face aanroep kan je de unicode-range aangeven. Hierdoor worden alleen die uncicode types in dat font weer gegeven. We hebben nu fonts die in 1 betsand bestaan. Hierdoor hoef je minder fonts in te laden en alle styling mogelijkheden zitten in het font. een <code>font-weight: 123;</code> is gewoon mogelijk, eerder was dat hele honderdtallen.</p> <h2>Algemene leerpunten</h2> <ul> <li>Stop in je portfolio alleen zaken waar je met passie aan hebt gewerkt. Dat zorgt er voor dat je hierop gekozen wordt en dat je doet wat jij wilt.</li> <li>Het web kan je gebruiken voor alles. Ook A/V artists.</li> <li>Storytelling is de big thing.</li> <li>Wat doe je als ontwikkelaar als je iets moet schrijven of stylen waar je niet achter staat?</li> </ul> <h2>Interessante boeken:</h2> <ul> <li><a href="https://www.bol.com/nl/f/webs-of-influence/9200000002859627/">Webs of Influence - The Psychology of Online Persuasion (2nd Edition)</a></li> <li><a href="https://evilbydesign.info/">Evil by design</a></li> <li><a href="https://www.influenceatwork.com/">Boeken van Cialdini</a></li> </ul> <h2>Tools</h2> <ul> <li><a href="https://twitter.com/pa11yorg">Pa11y</a></li> <li><a href="https://airbnb.design/lottie/">Lottie</a> voor animeren, vanuit After Effect Lottie gebruiken voor het animeren</li> <li><a href="https://wakamaifondue.com/">Wakamai Fondue</a>What can a font do?</li> </ul> <h2>Interessant links:</h2> <ul> <li><a href="https://inclusive-components.design/">Inclusive Components</a></li> <li><a href="https://twitter.com/i/moments/1049300181647282178">Sketch notes van Anke</a></li> </ul> JAMstack en Netlify 2019-01-28T00:00:00Z https://www.kajrietberg.nl/posts/2019-01-28-jamstack/ <p>JAMstack websites zijn hip. Mijn eigen website heb ik op deze manier opgebouwd. Ik gebruik <s>Jekyll</s> Eleventy, Github en Netlify. Voor mij werkt het erg fijn. Voordeel van pushen naar Github is dat ik een back-up heb van mijn site. Volgens <a href="https://twitter.com/philhawksworth">Phil Hawksworth</a> zijn git based deployments de toekomst.<br /> Maar voor de duidelijkheid zal ik uitleggen waar JAMStack voor staat, namelijk JavaScript, API's, Markup.</p> <p>Voordeel van JAMstack websites is dat de rendering van de site/pagina geen tijd in beslag neemt, dit gebeurt door een build proces voor die tijd. Het opvragen van een website kost veel minder tijd. In de 'oude' manier gebeurt het builden van de site op het moment dat je via de webbrowser de website aanvraagt, dan wordt er gekeken wat je nodig hebt en wordt dat geserveerd. Bij een JAMstack website gaat het om client-render en pre-render.<br /> Een website in de JAMStack wordt een Static site genoemd, maar een betere naam is Pre-rendered website. Dit verwoordt namelijk het proces.</p> <p>Een ander voordeel van een JAMstack website is dat deze makkelijker te beveiligen is, omdat je alleen te maken hebt met een server voor static-bestanden hoef je alleen deze te beveiligen.</p> <p>Vrijdag 25 januari ben ik bij de <a href="https://fronteers.nl/workshops/workshop-netlify-static-site-generators">JAMStack and Netlify workshop</a> georganiseerd door Fronteers en <a href="https://twitter.com/philhawksworth">Phil Hawksworth</a> als workshop leider geweest. Interessante dag. Meer inzicht gekregen wat JAMStack is en welke rol Netlify hier in heeft en wat er kan met Netlify.</p> <h2>Netlify</h2> <p>Voor JAMstack websites is een hosting oplossing zoals <a href="https://www.netlify.com/">Netlify</a> erg makkelijk. Netlify haalt de code uit Github en verzorgt dan een build proces om de website daarna op een Netlify url live te zetten. Elk build proces wordt gestimuleerd door een push naar Github. Elke build blijft staan in het Netlify dashboard en is weer terug te zetten als de live website.</p> <p>Met Netlify kan je ook een eigen domein koppelen aan je website, met de mogelijkheid van gratis https. En dat werkt makkelijk.</p> <h3>API's</h3> <p>API keys die verborgen moeten blijven voor de buitenwereld kan je installeren in Netlify. Ze kunnen dan door elke site die in je Netlify account staat gebruikt worden.</p> <h3>Forms</h3> <p>Via het dashboard van Netlify kan je een webformulier aanmaken en die gebruiken in je website. Hierdoor kan je een contactformulier op je website zetten. Hiervoor heb je anders bijvoorbeeld PHP nodig die het versturen van de ingevulde data voor je regelt. Zo'n formulier kan je ook gebruiken als comment formulier. Door deze te koppelen met webhooks in je Dashboard van Netlify wordt er een build getriggerd en kan je de comment bekijken op de website. Of een inlogformulier maken voor een website met inlog mogelijkheden zoals een webwinkel. Hiervoor kan je Identity in het dashboard van Netlify gebruiken. Met Identity kan je rollen aanmaken of een welkomsmail genereren.</p> <h3>Redirect</h3> <p>Via een netlify.toml bestand kan je redirects in je website aanbrengen. Zo kan verwijzen naar een andere url of een 404 pagina aanmaken.</p> <h2>Serverless</h2> <p>Een term die samenhangt met JAMstack is serverless. Serverless is gelijk aan functions as a service. Je kan deze functies gebruiken in of met je Pre-rendered website. Serverless en JAMStack vullen elkaar goed aan.</p> <h2>Meer info kan je vinden op:</h2> <ul> <li>Meer over <a href="https://www.netlify.com/blog/">JAMstack en Netlify</a></li> <li><a href="https://jamstack.org/">jamstack.org</a></li> <li><a href="https://thepowerofserverless.info/">The Power of Serverless for Front-End Developers</a></li> </ul> <h2>Interessante artikelen</h2> <ul> <li><a href="https://blog.logrocket.com/why-you-should-be-using-jamstack/">Why you should be using JAMstack</a></li> <li><a href="https://css-tricks.com/netlify-functions-for-sending-emails/">Netlify Functions for Sending Emails</a></li> <li><a href="https://snipcart.com/blog/choose-best-static-site-generator">How to Choose the Best Static Site Generator for Your 2019 Project</a></li> </ul> <h2>Conferenties</h2> <ul> <li><a href="https://jamstackconf.com/">JAMstack conf</a></li> </ul> <h2>Handige links</h2> <ul> <li><a href="https://eleventyone.netlify.com/">EleventyOne - Eleventy starter template van Phil Hawksworth</a></li> <li><a href="https://www.staticgen.com/">A List of Static Site Generators for JAMstack Sites</a></li> <li><a href="https://headlesscms.org/">A List of Content Management Systems for JAMstack Sites</a></li> <li><a href="https://www.netlify.com/case-studies/smashing/">Case studie over Smashing Magazine's overgang naar de JAMstack</a></li> </ul> <h2>Handige video's</h2> <ul> <li><a href="https://www.smashingmagazine.com/2019/06/jamstack-fundamentals-what-what-how/">JAMstack Fundamentals: What, What And How</a></li> </ul> Wat is SVG? 2019-02-26T00:00:00Z https://www.kajrietberg.nl/posts/2019-02-26-meer-over-svg/ <h2>Wat is een SVG?</h2> <p>SVG is een mark-up taal net zoals HTML. SVG bestaat uit XML. Het beschrijft aan de browser wat deze moet tonen. Verschil tussen HTML en XML is dat XML structuur aangeeft en HTML meer beschrijft hoe de informatie getoond moet worden. Je kan makkelijk in je developer text-editor aanpassingen doen aan een SVG. Een SVG is een vector afbeelding wat er voor zorgt dat hoe groot je deze ook maakt het is altijd scherp wat je ziet. Dat is het grote voordeel van SVG. Hierdoor weet je dat op elk type beeldscherm je afbeelding scherp getoond wordt.</p> <p>SVG is perfect te gebruiken voor iconen, logo's, kaarten, lijntekeningen, etc. Let hierbij op of de SVG niet zwaarder is dan een jpg of png variant. Voordeel van SVG is dat deze via CSS, een style-tag in de svg of inline styling makkelijk aan te passen is.</p> <p>SVG's kan je inline in je HTML document zetten o.a. middels object-, img-, svg-tags of verder als achtergrond afbeelding. Als achtergrond afbeelding kan je ze als data url invoegen waardoor je geen extra http request maakt. Omdat het vaak om een extra design element gaat niet erg dat het in de CSS staat.</p> <p>SVG's zijn vrij toegangelijk voor screen readers. Je kan er teksten in verwerken, maar ook een titel of een omschrijving toevoegen. Verder op in dit artikel beschrijf ik waar je hierbij op moet letten.</p> <p>Het coordinaten-systeem binnen je svg blijft bestaan, ook als je breedte of hoogte aanpast, dat is een groot voordeel.</p> <p>Een SVG kan bestaan uit: <code>&lt;line&gt; &lt;rect&gt; &lt;circle&gt; &lt;ellipse&gt; &lt;polygon&gt; &lt;polyline&gt; &lt;path&gt;</code>. Attributes kunnen zijn: <code>fill</code> voor de kleurvulling, <code>stroke</code> voor de kleur van de border, <code>stroke-width</code> voor de dikte van de border. Hiermee kan je dus inline een svg kleuren, maar je kan deze attributes ook in de CSS zetten en zo de svg kleuren, hiervoor moet de SVG wel inline in je HTML zijn opgenomen.</p> <h2>Maken</h2> <p>SVG's kan je makkelijk maken via Sketch of Adobe Illustrator. Afbeelding als SVG opslaan. Volgens Sara Soueidan kan je het beste svg's exporteren vanuit Illustrator, die doet dit op moment van schrijven beter dan Sketch.</p> <h2>Workflow: gebruik op het web</h2> <p>Voor gebruik op het web is het aan te raden de SVG eerst te optimaliseren via bijvoorbeeld: <a href="https://jakearchibald.github.io/svgomg/">SVGomg</a>. Je kan hiervoor ook een Grunt plugin gebruiken als dit beter past in je work-flow. Voor het plaatsen in je website als achtergrond afbeelding is <a href="http://www.grumpicon.com/">GrumpIcon</a> perfect te gebruiken. Het maakt png afbeeldingen voor fallback en zet de svg als data url om. Hiervan is ook een Grunt plugin.</p> <h2>Hoe werkt een SVG?</h2> <p>Je kan tekst toevoegen aan een svg middels een text-tag. <code>&lt;text&gt;&lt;/text&gt;</code></p> <p>Een SVG bestaat uit de elementen:</p> <ul> <li><code>&lt;svg&gt;</code>: De svg-tag waardoor de browser weet dat het om svg gaat. In deze tag staat vaak benoemt de hoogte en breedte van de svg, verder de viewbox.</li> <li><code>&lt;symbols&gt;</code>: de symbol-tag symboliseert een afbeelding welke je nog niet ziet. Door later in je HTML de use-tag (deze is onderdeel van een shadow-dom) te gebruiken roep je een bepaald symbol aan om te tonen in de HTML. Zo kan je bepaalde afbeeldingen makkelijk op verschillende plekken gebruiken zonder de hele code van die afbeelding in je HTML te plakken. Voorbeeld is een svg spritesheet met bijvoorbeeld icons.</li> <li><code>&lt;polygon&gt; &lt;circle&gt; &lt;rect&gt; &lt;clipPath&gt; &lt;g&gt;</code>: dit zijn elementen van je afbeelding. De g-tag groepeert bij elkaar horende elementen binnen een svg.</li> <li><code>&lt;defs&gt;</code>: Definieert elementen en deze elementen kan je tonen in je website via <code>&lt;use&gt;</code>.</li> <li>Elk element kan een <code>&lt;title&gt;</code> en <code>&lt;desc&gt;</code> hebben.</li> <li><code>path</code> geeft aan welk pad getoont moet worden door de browser. Hierin is de <code>d</code> de afkorting van data.</li> </ul> <p>Inline svg met styling geven dit door aan de andere svg's die inline staan.</p> <p>Om een svg te kleuren die in een <code>&lt;use&gt;</code> zit gebruik je css variabelen, met <code>fill=currentColor</code> kan je 2 elementen kleuren. En anders gebruik custom properties <code>var(--primaty-light)</code>. Gebruik een sprite en use om zelfde svg's vaker weer te geven en als ze verschillende kleuren nodig hebben, gebruik custom propeties.</p> <pre><code> &lt;svg&gt; &lt;use xlink:href=&quot;path/to/sprite.svg#twitter&quot;&gt; &lt;/svg&gt; </code></pre> <h3>SVG sprite</h3> <p>Een svg-sprite krijgt standaard een 300px bij 150px van browsers. Zet er dus een height en width van 0 op en een visibility: hidden;. Een display: none; zorgt er voor dat in sommige browsers de icon niet getoond wordt.</p> <p>Met een <code>&lt;img&gt;</code> tag kan je de sprite afbeeldingen tonen met <code>&lt;view&gt;</code> of <code>viewBox()</code>.</p> <h3>Viewbox/preserveAspectRatio</h3> <p>The viewport is de voorste laag --&gt; de browser window of de svg tag The viewbox is de 2de laag --&gt; de svg afbeelding --&gt; alles binnen de svg tags.</p> <p>Om witruimte om de svg te krijgen maak de viewbox --&gt; -1 -1 802 602 (omdat je -1 doet moet je bij width en height er een extra bij optellen), letterlijk zoom je in en uit.</p> <p>Om de aspect ratio te behouden van een svg gebruik dan <code>&lt;svg preserveAspectRatio=&quot;xMaxYMax&quot; meet of slice&gt;</code> Waarby xMax ook xMin of xMid kan zijn, zelfde geldt voor de yMax. Daarnaast kan je nog <code>meet</code> erbij zetten (meet de sides of the viewport) dan blijft de svg helemaal zichtbaar en zet je er <code>slice</code> bij wordt deze zo groot als de inhoud van de afbeelding (vul het geheel). Je kan het vergelijken met background-size en de background-position in CSS.</p> <h2>SVG gebruiken in je website</h2> <p>Verschillende manieren staan hier boven al beschreven. Verder kan je op <a href="https://css-tricks.com/using-svg/">CSS-Tricks: Using SVG</a> de verschillende manieren zien. Voordeel van SVG is dat je geen extra http-request hebt omdat je het inline kan plaatsen. Een SVG is net zoals HTML opgebouwd uit verschillende onderdelen die met JS te bereiken zijn en dus te manipuleren.</p> <h3>Clip-path</h3> <p>Hiermee kan je een stuk uitsnijden en dan wel of niet tonen. Gebruik hiervoor bijvoorbeeld circle(); of polygon(); Je kan beter svg clip-path gebruiken ipv <a href="https://caniuse.com/#feat=css-clip-path">CSS clip-path</a>.</p> <h3>Mask</h3> <p>Browsersupport is slecht bij <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/mask">CSS mask</a>, je kan beter svg masking gebruiken.</p> <h2>Hoe is browser-support?</h2> <p>Zie <a href="https://caniuse.com/#feat=svg">Can I Use</a>. Uit eigen ervaring merkte ik dat je de hoogte en breedte moet benoemen in de svg zelf voor IE. Anders is de svg erg klein. Kijk je op Can I Use zie je deze opmerking ook.</p> <h2>Hoe animeer je SVG met CSS?</h2> <p>Als je gaat animeren, zorg er voor dat je van te voren de svg optimaliseert. Doe dat niet na die tijd. Een svg heeft een navigeerbare DOM, je kan dus elk element bereiken met JavaScript en CSS.</p> <p>https://www.august.com.au/blog/svg-animation-with-greensock/ https://www.smashingmagazine.com/2014/11/styling-and-animating-svgs-with-css/</p> <p>Animeren van SVG kan via SMIL, CSS en JS. SMIL wordt afgeraden omdat o.a. Chrome het niet meer zou ondersteunen. Kijk je op Can I Use of op <a href="https://developer.mozilla.org/en-US/docs/Web/SVG/SVG_animation_with_SMIL">MDN docs over SMIL</a> dan kan je zien dat Chome het toch nog ondersteunt. Met CSS is (nog) niet heel goed te animeren, maar bepaalde zaken wel. Dan is de verschijningsvorm verschillend in de verschillende browsers. Goed kijken wat lukt. Het beste is JS te gebruiken. Je kan gebruik maken van verschillende library's.</p> <p>Top 3:</p> <ul> <li>GreenSock (voor de meer moeilijkere animaties)</li> <li>snap.svg (jQuery van animatie)</li> <li>anime.js (in opkomst, maar je gebruikt meer code dan GreenSock)</li> </ul> <p>Animaties kan je met de <a href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Work_with_animations">Inspector Tools van Firefox</a> in de browser bekijken en aanpassen. Onder de regels staan ook de instellingen van @keyframes zodat je die kan aanpassen via de developer tools, je moet hiervoor wel iets naar beneden scrollen. Ook zijn de timing functies van je animatie aan te passen via de developer tools.</p> <h3>Wanneer animeren met CSS of JS?</h3> <p>In <a href="https://us2.campaign-archive.com/?u=6fbaddc8c1fce7588d1a35cb2&amp;id=6a31c014a2">The Animation Newsletter</a> beschrijft Val Head hoe ze kiest tussen CSS of JS. Ze gebruikt hiervoor 3 verschillende regels. Hierin beschrijft ze dat ze SVG's voornamelijk animeert met JS en dan met Greensock. En komt het neer als de animatie complexer wordt of meerdere animaties bevat dan is het gebruik van JS handiger. Een beschrijving van wanneer JS of CSS te gebruiken geeft Zell Liew in zijn artikel <a href="https://www.heartinternet.uk/blog/should-you-use-css-or-javascript-for-web-animations/">Should you use CSS or JavaScript for web animations?</a>. Deze beschrijving is wat uitgebreider dan die Val Head, maar komt overeen met wat zij beschrijft.</p> <blockquote> For simple two-state animations, I recommend you use CSS transitions. For more complicated animations, I recommend you use CSS animations or JavaScript. At the time of writing, the Web Animations API is still not well supported yet, so the best possible way to animate is with GSAP, which is an amazing library. Make sure you provide a non-animated, but workable version of your site for people who don’t have JavaScript enabled. They should still be able to use your website even when it’s not animated. </blockquote> Quote van Zell Liew <p>De eenvoudigste manier van animeren kan je met CSS transitions doen. In Zell Liew's artikel <a href="https://zellwk.com/blog/css-transitions/">CSS Transitions explained</a> uitgelegd hoe die werken. Iets lastiger wordt het met CSS animations, maar gelukkig legt Zell Liew dit weer uit in zijn artikel <a href="https://zellwk.com/blog/css-animations/">CSS Animations explained</a>. Bij CSS animations kan je de tijdlijn beinvloeden zo kan je er voor zorgen dat er meerdere states worden bereikt.</p> <p>Voor SVG's is het dus het handigste om gebruik te maken van JavaScript en de library Greensock is het handigste. Bekijk Sarah Drasner haar video over <a href="https://www.youtube.com/watch?v=ZNukcHhpSXg">SVG en animeren</a>.</p> <h3>De performance van animaties</h3> <p>Het animeren van elementen in je website heeft invloed op de performance van je website. Bij sommige onderdelen moet de hele pagina weer opgebouwd worden. Meer informatie over animeren en performance kan je vinden in het artikel <a href="https://www.html5rocks.com/en/tutorials/speed/high-performance-animations/">High Performance Animations</a></p> <h2>Accessible SVG's</h2> <p>Een svg afbeelding kan net als een andere afbeelding een alt-tekst nodig hebben voor mensen die de tekst laten voorlezen. Als er al tekst om de afbeelding heen staat die uitlegt wat je ook op de afbeelding ziet heb je geen alt-tekst nodig, voeg dan aan de svg-tag toe: aria-hidden=&quot;true&quot;. Kan zijn dat in de <code>&lt;figcaption&gt;</code> al een beschrijving staat.</p> <p>Om echt gebruik te maken van een toegankelijke SVG afbeelding moet je deze inline zetten. Zet bij een inline SVG in de title tag een beschrijving van de afbeelding. Is ook een tooltip als de muis er overheen gaat. Door bugs in Chrome en Firefox voeg je toe aan de title-tag: id=&quot;title&quot; en aan de desc-tag: id=&quot;desc&quot;.</p> <p>Voeg aan de svg-tag toe: role=&quot;img&quot; en aria-labelledby=&quot;title desc&quot;. Voeg aan de svg-tag van grote/complexe svg's toe: role=&quot;group&quot;. Hierdoor weet een browser en screenreader dat het bij elkaar hoort. Bij complexere afbeelding voeg role=&quot;presentation&quot; toe aan onderdelen die niet voorgelezen hoeven te worden, maar alleen voor de sier zijn.</p> <h2>Tekst in SVG</h2> <p>Met <code>&lt;text&gt;</code> kan je tekst toevoegen aan een SVG waardoor de tekst toegankelijk, vindbaar en selecteerbaar is. De tekst kan je stylen via <code>svg text {}</code>. Zie <a href="https://www.sarasoueidan.com/blog/optimizing-svg-delivery-with-svg/">Optimizing SVG Text &amp; Image Delivery with Inline SVG</a>.</p> <h2>SVG en datavisualisatie</h2> <p>Datavisualisaties zijn perfecte uitingen om svg te gebruiken. Het zijn vaak lijnen. Door SVG te gebruiken zijn ze mooi scherp op elk beeldscherm en in elke grootte. De library D3 zorgt er voor dat data wordt gekoppeld aan een SVG element.</p> <h2>SVG filters</h2> <p>In CSS hebben we filter mogelijkheden. Maar dit zijn eigenlijk versimpelde SVG Filter mogelijkheden. Met de SVG Filters kan je meer en daarom zegt Sara Soueidan in haar serie artikelen over SVG Filters, <a href="https://tympanus.net/codrops/2019/01/15/svg-filters-101/">SVG Filters 101</a>, op Codrops dat je beter SVG Filters kan gebruiken. Zij is een meester als het om SVG's gaat, dus lees vooral haar artikelen over SVG Filters.</p> <h3>Interessante links:</h3> <ul> <li><a href="https://css-tricks.com/accessible-svgs/">Accessible SVG's</a> (Zie voor meer ingewikkelde svg's het artikel)</li> <li><a href="https://developer.mozilla.org/en-US/docs/Web/SVG">SVG op MDN</a></li> <li><a href="https://codepen.io/noahblon/post/coloring-svgs-in-css-background-images">SVG als background-image gebruiken</a></li> <li><a href="https://www.sarasoueidan.com/workshops/svg-coffee-cup/">Wat je moet weten over SVG</a> door Sara Soueidan</li> <li><a href="https://css-tricks.com/mega-list-svg-information/">CSS Tricks mega list svg information</a></li> <li><a href="https://webdesign.tutsplus.com/tutorials/how-to-hand-code-svg--cms-30368">How to handcode a svg</a>: heeft een handige opsomming met beschrijving van de elementen in een svg. Geeft een goed inzicht hoe simpele elementen zoals een lijn of een cirkel in SVG zijn opgebouwd.</li> <li><a href="https://alistapart.com/article/practical-svg">Practical SVG</a> van A List Apart</li> <li><a href="http://mediatemple.net/blog/tips/an-svg-that-isnt-all-svg/">Praktische tips over svg</a></li> <li><a href="https://medium.com/sketch-app-sources/preparing-and-exporting-svg-icons-in-sketch-1a3d65b239bb">Handige tips mbt Sketch en svg</a></li> <li><a href="https://www.heartinternet.uk/blog/integrating-svg-site/">Integrating SVG into your site</a></li> </ul> <h3>Interessante links animaties:</h3> <ul> <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Work_with_animations">MDN - Work with animation</a></li> <li><a href="https://www.smashingmagazine.com/2019/01/html5-svg-fill-animation-css3-vanilla-javascript/">Smashing Magazine - HTML5 SVG Fill Animation With CSS3 And Vanilla JavaScript</a></li> <li><a href="https://snipcart.com/blog/vuejs-transitions-animations">Snipcart website - Creating Vue.js Transitions &amp; Animation: Live Examples</a></li> </ul> <h3>Voorbeelden</h3> <ul> <li><a href="https://codepen.io/SaraSoueidan/#">Sara Soueidan's Codepen's</a></li> <li><a href="https://codepen.io/SaraSoueidan/pen/RJRjvN">Angled background sections met clip-path</a></li> </ul> <h3>Boeken:</h3> <ul> <li>Smashing Magazine Book 5; hoofdstuk over SVG</li> <li><a href="http://shop.oreilly.com/product/0636920032335.do">SVG Essentials</a></li> </ul> <h3>Video's</h3> <ul> <li><a href="https://www.youtube.com/watch?v=ADXX4fmWHbo">Sarah Drasner - SVG can do that?! in 2017</a></li> <li><a href="https://www.youtube.com/watch?v=tsGa-gcckwY">Chris Coyier - The Wonderful World of SVG in 2015</a></li> </ul> <h3>Mensen om te volgen</h3> <ul> <li><a href="http://sarasoueidan.com/">Sara Soueidan</a></li> <li><a href="http://sarahdrasnerdesign.com/">Sarah Drasner</a></li> </ul> <h3>Handige tools:</h3> <ul> <li><a href="https://jakearchibald.github.io/svgomg/">SVGOMG</a> maakt SVG's lichter door overbodige zaken er uit te halen</li> <li><a href="http://www.grumpicon.com/">Grumpicon</a> voor inline maken van svg voor gebruik in CSS</li> <li><a href="https://boxy-svg.com/">Boxy svg</a>: online SVG editor of met een app</li> <li><a href="https://bennettfeely.com/clippy/">CSS clip-path maker</a></li> <li><a href="https://www.sarasoueidan.com/demos/interactive-svg-coordinate-system/">SVG Coordinate system</a></li> </ul> <h3>Plugins:</h3> <ul> <li><a href="https://github.com/jonathantneal/postcss-write-svg">PostCSS plugin; Write SVGs directly in CSS</a></li> </ul> <h3>Workshops</h3> <ul> <li><a href="https://www.sarasoueidan.com/workshops/">SVG workshops van Sara Soueidan</a></li> </ul> Mijn beeld van het JavaScript framework Vue 2019-03-01T00:00:00Z https://www.kajrietberg.nl/posts/2019-03-01-vuejs/ <p>Een Vue instance is de root van de applicatie. Deze wordt gemaakt door een opties object er aan te koppelen. Hierdoor heeft de instance verschillende mogelijkheden om data te tonen en acties te ondergaan. Middels de <code>el</code> optie koppel je de instance aan een HTML element. De <code>el</code> krijgt het id of class van het HTML element.</p> <p>Een van de opties van de instance is de data property. Dit is de data die je wilt tonen in je HTML. Dit kan data zijn die jezelf toevoegt in de data property of die je ophaalt vanuit een API. Middels een JavaScript expression kan je de data tonen in de HTML. DE data bevat dus de variabele waarden die je wilt tonen in je HTML template.</p> <p>Aan de Vue instance kan je ook een methods property toevoegen waarin je JavaScript methods kan toevoegen die bijvoorbeeld op een v-on:click uitgevoerd wordt. Dit zorgt dus voor het dynamisch maken van je website.</p> <p>Daarnaast is er nog een computed property waarmee je bijvoorbeeld verschillende onderdelen kan samenvoegen tot 1 titel. Voordeel van computed properties is dat ze gecached worden.</p> <p>Bij componenten heb je ook nog props, deze zorgen er voor dat het component weet welke data vanuit een hoger gelegen component doorgegeven worden.</p> <h2>Vue directives</h2> <ul> <li>v-bind plakt een attribute, zoals src, aan een expression. Zo kan je dit ook doen voor class, title, href, alt, etc. Bij src kan je gebruiken <code>v-bind:src=</code>. Dat kan je afkorten naar <code>:src=</code>.</li> <li>v-if reageert er op of iets true is en anders wordt de v-else-if of uiteindelijk de v-else getoond.</li> <li>v-show toont de data als het true is en anders komt er een <code>display: none;</code> op.</li> <li>v-for toont data uit een array om er een lijst van te maken. Het is dan wel handig om een v-bind:key te doen zodat de applicatie weet om welke het gaat.</li> <li>v-on:naarwathierstaat luistert naar wat achter de : staat. Bijvoorbeeld v-on:click.</li> <li>Data kan je ook binden aan een class of een style attribute</li> <li>v-model zorgt voor een 2-wegs data binding. Hierdoor kan data gekoppeld worden aan een template en andersom.</li> </ul> <h2>Components</h2> <p>Componenten bouw je om te hergebruiken. Zo maak je iets 1x en kan je het op meerdere plekken in je applicatie aanroepen. In een component is de data property een functie, hierdoor blijft de data binnen het component, het data object wordt ge-returned. Via props wordt data vanuit de parent naar het child (component) gebracht. De props worden benoemd in het component zodat deze weet wat die kan verwachten.</p> <h2>Vue project</h2> <p>Om een Vue project te starten kan je gebruik maken van de Vue CLI of de Vue UI tools. De laatste is een UI getoont via de webbrowser die je een project laat maken met daarbij de functionaliteiten die je graag wilt hebben. Deze kan in het Nederlands.</p> <p>Naast het opstarten van een project met bovenstaande kan je ook Vue aanroepen in je HTML pagina en kan je werken met Vue.</p> <h2>Vue router</h2> <p>Vue router zorgt er voor dat je de juiste pagina kan bezoeken in een Vue web applicatie.</p> <h2>Virtual DOM</h2> <p>Virtual DOM is een beschrijving van alles wat op dit moment in de DOM zichtbaar zou moeten zijn. In applicaties die erg veel DOM wijzigingen doen is dat handig omdat niet alles telkens opnieuw gerenderd hoeft te worden in je DOM. De virtual DOM wordt telkens bijgehouden bij data wijzigingen en dan wordt gekeken of de echte DOM verschillen heeft met de virtual DOM die de echte DOM beschrijft. En die verschillen worden dan bijgewerkt in de echte DOM. Met dank aan <a href="https://twitter.com/PM5544">Joel Kuijten</a> voor de omschrijving.</p> <p>Vue werkt met een Virtual DOM omdat het naar het idee van de makers sneller is dan manipulaties direct op de DOM.</p> <h2>Vue en Accessibility</h2> <p>Vue bestaat voor een groot deel uit HTML elementen, dus gebruik de juiste semantische HTML tags. Gebruik je webdev tools om te kijken of de accessibility van je website klopt. Daar test je site met een screenreader en ga er door heen met toetsenbord zodat je zeker weet of je het goed gedaan hebt.</p> <h2>Vue en SEO</h2> <p>Search Engine Optimization wordt gebruikt om een web-app of website hoog in de hoogmachine te laten eindigen. Hierdoor vinden mensen de app of site makkelijker. Een search bot van de zoekmachine scant een site en slaat deze informatie op in een database van de zoekmachine. Om er voor te zorgen dat een bot dit zo doet zodat dit het beste bij jouw site past en je de juiste bezoekers krijgt zijn er een aantal regels te volgen. Ik ga niet in op deze regels, hierover is meer dan genoeg geschreven o.a. kort bij <a href="https://snipcart.com/blog/vue-js-seo-prerender-example">Snipcart</a>. Maar belangrijk bij het gebruik van een framework als Vue is dat je er aandacht voor hebt omdat het kan dat er nog geen html op je pagina te vinden is op het moment dat de bot op de site komt en dan wordt er geen info opgeslagen over jouw website.</p> <p>Je kan er voor kiezen om gebruik te maken van <a href="https://ssr.vuejs.org/">Server Side Rendering</a> waardoor de HTMl al klaar staat als de bot er over heen gaat. Ipv Server Side Rendering kan je ook gebruik maken van Pre-rendering. Maak je gebruik van webpack dan kan je de <a href="https://github.com/chrisvfritz/prerender-spa-plugin">Prerendering SPA Plugin</a> gebruiken. Daarnaast kan je ook gebruik maken van bijvoorbeeld een Vue framework als <a href="https://nuxtjs.org/">Nuxt JS</a>. Deze heeft ingebouwd dat je de regels voor een goede <a href="https://nuxtjs.org/examples/seo-html-head/">SEO makkelijk kan implementeren</a>, je kan het doen middels <a href="https://nuxtjs.org/guide/commands">Server Side Rendering of Pre-rendering</a>.</p> <h2>Links</h2> <ul> <li><a href="https://vuejs.org/">Vue: The Progressive JavaScript Framework</a></li> <li><a href="https://dev.to/aspittel/a-complete-beginners-guide-to-vue-422n">A Complete Beginner's Guide to Vue </a></li> <li><a href="https://css-tricks.com/intro-to-vue-1-rendering-directives-events/">Intro to Vue.js</a></li> <li><a href="https://github.com/vuejs/awesome-vue">Heel veel Vue info verzamelt</a></li> <li><a href="https://medium.com/js-dojo/whats-the-deal-with-vue-s-virtual-dom-3ed4fc0dbb20">What’s The Deal With Vue’s Virtual DOM?</a></li> <li><a href="https://codingexplained.com/coding/front-end/vue-js/understanding-virtual-dom">Understanding the Virtual DOM</a></li> <li><a href="https://medium.com/js-dojo/is-my-single-page-app-seo-friendly-be2c827f1c38">Is My Single-Page App SEO Friendly?</a></li> <li><a href="https://medium.com/binarcode/make-your-vue-js-application-seo-friendly-dea3d004a58c">Make your Vue.js application SEO friendly</a></li> <li><a href="https://medium.com/vue-mastery/best-practices-for-nuxt-js-seo-32399c49b2e5">Best Practices for Nuxt.js SEO</a></li> <li><a href="https://www.vuemastery.com/conferences/vueconf-us-2019/web-accessibility-with-vue-js">Accessibility with Vue</a></li> <li><a href="https://medium.com/@emilymears/getting-started-with-web-accessibility-in-vue-17e2c4ea0842">Getting Started with Web Accessibility in Vue</a></li> <li>Tool: <a href="https://vue-axe.surge.sh/">Accessibility auditing for Vue.js applications</a></li> </ul> Beyond Tellerrand 2019 2019-05-15T00:00:00Z https://www.kajrietberg.nl/posts/2019-05-15-beyond-tellerrand/ <p>Dit jaar voor het eerst bij <a href="https://beyondtellerrand.com/events/duesseldorf-2019/speakers">Beyond Tellerrand</a> geweest. Een conferentie waar ik graag heen wilde om hier de sfeer te proeven maar vooral vanwege de meer op design gerichte talks. Ik had goede verhalen gehoord over dit event van Marc Thiele.</p> <p>Hier mijn aantekeningen, ideeën en opmerkingen van dit event. Ik heb niet van elke spreker aantekeningen. Soms was het ook gewoon mooi om te zien wat ze toonden. Anderen die ook aantekeningen hebben gemaakt:</p> <ul> <li>Charlie Owen - <a href="https://www.sonniesedge.net/posts/beyond-tellerrand-dusseldorf-2019">Beyond Tellerrand Düsseldorf 2019</a></li> <li>Niklas Barning - <a href="https://niklasbarning.de/2019/05/14/gedanken-zur-beyond-tellerrand/">Gedanken zur Beyond Tellerrand</a></li> </ul> <h2>Charlie Owen; All constraints are beautiful</h2> <p>Charlie vertelde over het nut van beperkingen. Hierdoor wordt je uitgedaagd en wordt je creatiever. Als je moet werken met een bepaalde techniek of op een bepaalde manier dan kunnen het beperkingen zijn of je kan ze zien als gegevens waar je mee t e dealen hebt. Hierdoor wordt je soms ook cretiever in je oplossingen. Je wilt dan toch bepaalde zaken gedaan krijgen en als het dan lukt is de kick wel groot. Dit is wat mijn ervaring is met Constraints.</p> <h2>Carolyn Stransky; Humanising your documentation</h2> <p>Let op je taal gebruik. Zorg er voor dat de minst geletterde het kan lezen, want dan kan iedereen het lezen. Je schrijft documentatie voor de gebruiker van de documentatie. Het is vaak beter om de oplossing van een probleem te beschrijven, dan te beschrijven hoe de tool werkt. Voor Engels taalgebruik kan je de app <a href="http://hemingwayapp.com/">http://hemingwayapp.com/</a> gebruiken om het taalniveau te bekijken. Slides van haar talk staan op: <a href="https://speakerdeck.com/carolstran/humanizing-your-documentation-full-talk">https://speakerdeck.com/carolstran/humanizing-your-documentation-full-talk</a>.</p> <h2>Mike Hill; The power of metaphor</h2> <p>Goede verhalen hebben een vast patroon die onze geest beïnvloeden waardoor wij fijne gevoelens krijgen of ons kunnen inleven in verschillende situaties. Als verhalenverteller is het belangrijk je hiervan bewust te zijn, hierdoor kan je namelijk mensen tengoede of en slechte beinvloeden.</p> <h2>David Carson; Never snap to guides</h2> <p>Kregen David zijn eigenwijze portfolio te zien. Gaaf werk. Ik kreeg gedurende het verhaal meer respect voor zijn werk. Een opmerking van hem die me bij blijft: &quot;Als iets goed lijkt, kijk dan nog eens misschien is er nog een betere plek.&quot; Wat David laat zien is dat je met eigenzinnig design en door te doen wat anderen niet verwachten zorg je voor aandacht. Geef niet toe aan desig guides. Maar doe je eigen ding.</p> <h2>Stephen Hay; I Don't Care What Airbnb is Doing</h2> <p>Stephen zijn talk had ik bij Refreshconf al gezien, maar was weer leuk om te zien. Mooi hoe hij de talks van de vorige dag had verwerkt in zijn praatje. Wat bij Stephen zijn talk net als bij David Carson naar voren kwam is dat het belangrijk is om je eigen ding te doen. Kijk niet naar wat anderen doen want dan ben je niet bijzonder en val je niet op. En grote kans dat je daarmee niet je eigen probleem oplost. Wat je doet is de oplossing van een ander projecteren op jouw probleem en daarop in te passen. Denk goed na over wat jopuw probleem is en welke oplossing daar bij past.</p> <p>Door conventies niet voor lief te nemen, maar kritisch over na te denken zal je nieuwe dingen leren en groeien op je vakgebied.</p> <h2>Dorobot; Napworking</h2> <p>Slapen of eigenlijk nog meer het moment dat je in slaap gaat vallen gebruiken om tot ideeen te komen. Dit is wat Dorobot gebruikt in haar proces. Zij vindt geen enkel idee te stom. Ze schrijft alles op in haar Idea Management Service, dit zijn kaartje in een kaartenbak die ze dan er bij pakt om op ideeen te komen.</p> <h2>Heydon Pickering; Flexbox Holy Albatross</h2> <p>Interessante manier van opbouwen van een responsive design is de Fab Four techniek van Remi Parmentier. Dit is een manier zonder mediaqueries, want volgens Heydon zijn mediaqueries een hack.</p> <h2>Tantek Çelik; Take back your web</h2> <p>Maak gebruik van je eigen website. Andere diensten zijn niet altijd betrouwbaar. Medium moest je voor betalen opeens, Facebook gebruikt je data. Je kan ook op je eigen website makkelijk artikelen plaatsen, maar ook likes krijgen als je dat belangrijk vindt. Dat kan met <a href="https://webmention.io/">webmentions</a> en <a href="http://microformats.org/">Microformats</a>. Voordeel van plaatsen op je eigen website is dat je niet afhankelijk bent van het tijdlijn algoritme van de applicatie. Kijk eens op de website <a href="https://indieweb.org/">Indieweb</a>.</p> <p>Een interessant artikel die goed verwoord wat Tantek vertelde is van Matthias Ott - <a href="https://matthiasott.com/articles/into-the-personal-website-verse">Into the personal-website-verse</a>.</p> Mijn Front-end leven, een evaluatie (2020) 2020-05-26T00:00:00Z https://www.kajrietberg.nl/posts/2020-05-26-mijn-frontend-leven/ <p>Afgelopen 6 jaar was ik aan het werk als Front-end ontwikkelaar. Om precies te zijn vanaf 14 april 2014. Een belangrijke dag voor mij. Ik had sinds 1 maart een uitkering en was de maanden er voor hard aan het werk geweest om mijzelf om te scholen tot Front-end ontwikkelaar. En nu was ik echt Front-end ontwikkelaar. Bij Zorgweb zagen ze het zitten met mij, er waren wel wat bedenkingen. Ik had geen opleiding als Front-end ontwikkelaar, ik was leraar in het speciaal onderwijs geweest, en was 'al' 40 (ik was het oudje van Zorgweb :-)). Zeker in de webwereld al iemand op leeftijd. Maar ze durfden de gok aan. Daar ben ik ze dankbaar voor. Hierdoor heb ik in ieder geval 6 jaar van mijn werkende leeftijd dat kunnen doen wat ik al jaren geleden had gewild. Iets met computers. Iets waarvoor ik de HEAO in Groningen ooit was gestart, maar uiteindelijk niet had afgemaakt.</p> <p>Ik sta op het moment weer op een splitsing, daarom ook deze evaluatie. Per 1 juli zoek ik een nieuwe uitdaging. Mijn functie komt te vervallen. Iets wat ik jammer vind, want ik had zekerheid en ik hoopte nog verder Vuejs te leren. Maar ik zie het ook als mogelijkheid een nieuwe uitdagingen aan te gaan. En daar was ik ook aan toe. Soms maak je zelf die keuze en soms wordt die voor je gemaakt.</p> <p>Als je het hebt over ontwikkelen en nieuwe dingen leren ben je bij Front-end aan het goede adres. Afgelopen jaren ben ik constant bezig geweest mijzelf te blijven ontwikkelen en zorgen dat ik op de hoogte was van de laatste trends. Hiervoor bezocht ik meetups, conferenties, workshops en las ik veel artikelen, nieuwsbrieven en boeken. Ik moest inhalen wat anderen al wisten en zorgen dat ik op de hoogte was van de laatste ontwikkelingen. Ik vond het heerlijk. Soms besteedde ik wel een paar uur per week om Front-end nieuws te lezen.</p> <p>In de loop der jaren ben ik sterk verbeterd in het toepassen van HTML en CSS, maar juist ook in JavaScript en heb ik leren programmeren. Verschillende tools zoals GIT, Sketch, PhotoShop heb ik onder de knie gekregen. Maar ook het toegankelijk bouwen van websites heb ik toegepast en ben ik in verbeterd. Al met al heb ik een betere kijk gekregen in de webwereld en de wereld van software ontwikkeling. Ik heb gewerkt in een Scrum team, ben in aanraking gekomen met OTAP, de watervalmethode, met termen als Agile en Lean.</p> <p>In de loop der jaren heb ik fijne en bijzondere mensen ontmoet. De front-end community is een wereld van laten zien wat je weet, het beter weten en vooral anderen helpen. Het is een fijne community.</p> <p>Zoals je kan lezen schrijf ik in de verleden tijd, alsof het niet meer gaat komen. En tja, dat weet ik nu nog niet zeker. Wat ik wel weet is dat ik het werken met mensen heb gemist de afgelopen jaren. Ik ben een empatisch mens en deze kwaliteit kon ik als Front-end onwtikkelaar hier niet kwijt.</p> <p>Afgelopen tijd de laatste 6 jaar geevalueerd en gekeken wat ik graag wil. Het liefste wil ik werken met mensen en computers (webontwikkeling). Wil ik graag mensen helpen, blij maken, coachen, informeren en wil ik graag processen optimaliseren. Een plek waar ik mij kan ontwikkelen en niet alleen in front-end/software technieken, maar ook mijn intermenselijke skills.</p> <p>Ik ben benieuwd naar waar ik mij de komende tijd heen beweeg.</p> Welke baan is geschikt voor mij? (2020) 2020-06-15T00:00:00Z https://www.kajrietberg.nl/posts/2020-06-15-geschikte-banen/ <p>Vanuit Loopbaan Coaching heb ik gekeken naar mijn eigenschappen en welke banen/functies daar bij passen. Even een opmerking tussendoor, voor loopbaancoaching kan ik je <a href="https://www.karenpullen.nl/">Karen Pullen</a> adviseren. Tijdens de loopbaancoaching heb ik o.a. een sterkte test gedaan (en natuurlijk nog veel meer) en deze sterkte test liet zien dat mijn eigenschappen sterk gericht zijn op contact met anderen. Eigenschappen die bij mij voorop stonden waren probleem oplosser, concensus zoeker, positief zijn en empatisch. Dit zijn dus vooral eigenschappen die belangrijk zijn bij de omgang met mensen. Aangezien ik het werkveld software/webontwikkeling interessant vind ben ik met deze kennis gaan zoeken op het snijvlak van IT en mensen.</p> <p>Mijn passie is fietsen hier ook gekeken of er een mogelijkheid is om een baan te vinden die hier op aansluit. Waarbij ik kijk of het een bedrijf in de fietsbusiness is, maar een sportieve werkomgeving zou ook tof zijn. In de fietsenbusiness zouden banen als Customer Care of Account manager het beste passen. Die zijn in dat werkgebied het meest voorkomende voor wat passend is voor mij. Wel minder gericht op software/webontwikkeling.</p> <p>Als ik naar de software/webontwikkelingswereld kijk dan kom ik uit op banen als: Account manager, Business development manager, docent informatica, Product Owner, Project manager, Scrum master, UX designer.</p> <p>De rode draad bij de verschillende functies zijn de persoonlijke eigenschappen die je moet hebben voor deze functies. Hierbij gaat het om empathie (je inleven in de gebruiker), luisteren (tussen de regels door luisteren en begrijpen wat iemand wil zodat je daar op kan inspelen), probleem oplosser (leuk vinden te puzzelen na te denken over problemen). Deze eigenschappen noem ik ook wel de soft skills die je moet hebben. Per functie ligt de nadruk op die soft skills wel verschillend.</p> <p>Daarnaast heb je meer specifieke kennis en kunde nodig voor een functie. Dit zijn zaken die je kan of zelfs moet leren. Dat zijn tools en technieken waar je mee werkt, productkennis van het bedrijf waar je voor werkt, coachingstechnieken, etc.</p> <p>Wat ik heb gemerkt en hoor van verschillende mensen is dat elke functie door een bedrijf anders wordt ingevuld, de nadruk ligt net ergens anders op of heeft overlap met een andere functie. Hierom lees ik de vactures goed en vraag ik in een sollicitatiegesprek naar de preciese invulling van de functie.</p> <p>Naast het vinden van de juiste baan vind ik belangrijk het gevoel te hebben zinvol bezig te zijn. Door andere mensen te helpen en blij te maken kan dat al snel, maar daarbij let ik wel op waarmee ik ze blij maak. Daarbij vind ik het belangrijk dat het bedrijf ook bij mij past. Belangrijk daarbij zijn vragen als: wat de visie van het bedrijf is op wat ze doen, hoe doen ze dat en wat is de drijfveer van het bedrijf? Is hun doel winst maken of willen ze zinvol bezig zijn (en daar dan winst op maken om te kunnen blijven bestaan). Dat maakt verschil in hoe ze omgaan met hun product of dienst.</p> Terug in de webwereld 2023-11-11T00:00:00Z https://www.kajrietberg.nl/posts/2023-11-11-terug-zijn/ <p>Zo voelt het echt, terug zijn. Afgelopen zaterdag stond ik bij de open dag van het Cibap om aankomende studenten te vertellen over Media Vormgeving en dit was leuk! Nu zul je zeggen, je bent toch docent rekenen en dat klopt. Maar veel studenten van jaar 2 en 3 van Ontwerp &amp; Media geef ik rekenles. En voordat ik weer het onderwijs in ging was ik 6 jaar front-end/ UX / CSS ontwikkelaar. Hierdoor kan ik veel vertellen over het toekomstige beroep. En ik vraag altijd aan de studenten waar ze tijdens andere lessen mee bezig zijn. Leuk om te zien wat voor toffe dingen ze maken en ik probeer altijd te zoeken naar raakvlakken tussen rekenen en de andere vakken. Om mijn collega's te helpen en omdat ik ze beter wil leren kennen had ik aangeboden om bij Ontwerp &amp; Media te helpen. Gelukkig waren er studenten aanwezig die ik kon inroepen als vragen iets meer de diepte ingingen.</p> <p>Ik heb het gevoel op de perfecte werkplek te zijn beland, ik werk op een creatieve plek waar ik hele lieve studenten mag lesgeven, met ze contact heb en kan tijdens de rekenlessen nog wel eens gebruik maken van mijn kennis van hun werkveld. En kan leuke cursussen volgen, die ik altijd al eens wilde doen.</p> <p>In afgelopen 2 weken kon ik de training <a href="https://www.cibapnext.nl/aanbod/adobe-illustrator-training/" title="Link de cursus Adobe Illistrator van Cibap Next">Adobe Illustrator bij Cibap Next</a> volgen. Dit was een cursus van 2 dagen, nu kon ik eindelijk ook Adobe Illustrator beter leren kennen. Vooral het anders kijken naar afbeeldingen zal mij bijblijven en dan gaat het om het zien van basisfiguren, driehoek, vierkant, rechthoek, etc., in de opbouw van figuren in een tekening.</p> <p>Misschien zie je hier meteen de connectie van rekenen en design, die basisfiguren zijn ook een onderdeel van rekenen. Dus mijn hoofd begon gelijk te werken en na te denken over het gebruiken van Illustrator in een les. Rekenen toegepast in de directe praktijk van de studenten. Volgens mij kan je het qua onderwijs niet beter krijgen.</p> <p>Onderstaande gemaakt tijdens de cursus, spelen met letters en wat omlijning. Dat geeft leuke effecten. Met een paar simpele stappen, snel resultaat. Daar hou ik van.</p> <img class="u-photo" rel="me" src="https://www.kajrietberg.nl/assets/img/kaj.svg" />