Google Green: The story of send
Interessante visual tour van Google die de reis van een verzonden e-mail laat zien. Check vooral ook de afbeeldingen en video's die je onderweg aan kunt klikken.
Node.js
Idreams en node.js
Bij Idreams hebben we de opdracht gekregen om een simpele chat applicatie op te zetten binnen een canvas instantie. Na wat speurwerk en brainstormen hebben we gekozen voor een node.js oplossing. Node i.c.m. met de socket.io module maakt realtime apps een piece of cake!
Wat is node.js?
Node.js een library geschreven op de V8 javascript engine van Google. Node maakt "event based" programmeren makkelijk en kan meerdere duizenden requests per seconde aan; in tegenstelling tot een "threaded" webserver die relatief tot het aantal vrije "threads/processen" kan serveren. In node kan ook nog steeds "blocking" code geschreven worden, dit is natuurlijk wel een bad practice.
Evented I/O
Traditionele webservers zijn "threaded", dit betekend dat voor elke connectie er een systeemproces wordt opgestart. Deze processen zijn schaars en kunnen in geval van een drukke website ook een zwakke schakel zijn. Onder andere file-upload en asynchrome verzoeken kunnen ervoor zorgen dat een "thread" lang in gebruik blijft door de webserver.
Event based programmeren haalt zijn voordeel uit het feit dat netwerk servers de meeste tijd aan het wachten zijn totdat de Input/Output operaties gedaan zijn. Operaties naar het geheugen zijn nu eenmaal razendsnel, maar alles wat met het filesystem of over een netwerk praat moet uiteindelijk wachten een "response".
Twisted, EventMachine (een tweetal tegenhangers) en Node.js werken volgens hetzelfde principe. De oplossing ligt in het vermelden van de I/O operaties in combinatie met "callbacks". Één enkele "event loop" schakelt snel binnen een lijst van taken en verstuurd I/O opdrachten om vervolgens een volgend verzoek te serveren. Wanneer er resultaat van een I/O opdracht terug komt wordt dat specifieke verzoek weer verder opgepakt.
Zie ook deze slideshare presentatie die het concept op een leuke manier probeert uit te leggen (waarschijnlijk ook nog beter te begrijpen dan mijn "wall of text").
Waarom node.js?
Javascript blijkt een perfecte kandidaat voor een backend programmeertaal. Frontend developers schrijven al jaren op een "event based" manier en ook in node is er goede support voor anonymous functions en clojures.
NPM. Node Package Manager. Waarschijnlijk een van de beste package managers die ik heb gezien. NPM komt standaard met een verse installatie van Node.js.
Node.js; klein maar krachting. De documentatie heb je ongeveer binnen ~30 minuten gelezen.
Node.js is open source en heeft een grote community.
Node.js is snel! Als implementatie op de V8 engine en event-based schaalt node.js een stuk beter dan "threaded" webservers.
Waarom zou je geen node.js willen gebruiken?
Node.js is nog in een alpha fase.
Javascript heeft geen standaard bibliotheek zoals .NET de BCL en FCL heeft. Dit is zowel een goede eigenschap als een slechte eigenschap. Persoonlijk vind ik het niet erg om functionaliteit vanuit NPM binnen te halen en als het niet naar behoeven werkt een andere te kiezen (forceert snelle ontwikkeling van de makers), toch voelt het raar om voor redelijke "basis programmeer taken" een functionaliteit in te moeten laden.
Het schrijven van asynchrome code is een stuk complexer dan het schrijven van "blocking" code voor programmeurs zonder kennis van event based programmeren.
Het in productie nemen van een node applicatie is een stuk lastiger dan een CGI variant zoals Apache+PHP/Perl/Ruby/etc. "Unhandled exceptions" zullen namelijk het hele proces naar beneden halen. Modules (lees; packages) met buggy code kunnen dus het proces crashen.
Tot dusver de beknopte samenvatting van wat node.js nou eigenlijk is en in welke situaties idreams gebruik maakt van haar evented I/O.
Zie ook:
http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/
http://stackoverflow.com/questions/1884724/what-is-node-js
http://simonwillison.net/2009/Nov/23/node/
https://github.com/LearnBoost/socket.io
https://github.com/LearnBoost/socket.io/blob/master/examples/chat/app.js
De techniek achter Facebook
Een tijdje terug vroeg ik me af hoe het toch kan dat de drukst bezochte website (Facebook.com) ook één van de best draaiende sites is (denk aan uptime, transactiesnelheden enz). Welke technieken zouden daar achter zitten? Hoe zorgen ze ervoor dat wijzigingen, likes, vriendschapsverzoeken enz direct worden doorgevoerd in de backend en zichtbaar zijn in het hele Facebook netwerk?
Na wat zoeken kwam ik een presentatie van Stanford University tegen getiteld 'Petabyte Scale Data at Facebook' (pdf).
Enkele interessante feitjes:
- De achterliggende technieken zijn HBase en HDFS (Facebook messages), Haystack (foto's), Hive en Hadoop (Data warehouse) en Claspin (caching).
- Tussen de webservers en de MySQL storage databases zit een TAO Storage Cache (dit zorgt voor de snelle transactietijd).
- Per dag worden 6 miljard Facebook messages verstuurd.
- Er vinden per dag gemiddeld 74 miljard operaties plaats binnen Facebook (denk aan likes, shares, comments enz).
- Op piek momenten zijn er 1,5 miljoen operaties per seconde.
- 55% van deze operaties is read, 45% is write.
- Alle data wordt met lzo gecomprimeerd (volgens de lzo spec is deze extreem snel bij decompressie en al sinds 1996 bugvrij, best knap).
- Per dag komt er aan data bij:
- 8TB aan Facebook Messages (totaal is dit nu tegen de 20PB aan data).
- 30TB aan fotomateriaal (= 300 miljoen afbeeldingen) (totaal is dit nu tegen de 100PB aan data).
- Qua opslag bevat de datawarehouse (links, likes, verbanden, groepen, selecties) de meeste gegevens, namelijk honderden petabytes aan data.
- Per seconde worden er ongeveer 5 miljoen foto's bekeken.
- Om de distributie van het verkeer te verbeteren wordt gebruik gemaakt van de Akamai CDN (content delivery network). Omdat Akamai wereldwijd bijna 100.000 servers heeft staan (verdeeld over een duizendtal POPs) is de latency van een request vrij laag, aangezien het wordt opgehaald bij de dichtsbijzijnde Akamai POP (point-of-presence).
Voor de toekomst is Facebook druk bezig met 'cold storage'. Denk daarbij aan foto's van enkele jaren oud die niet vaak meer worden bekeken, maar wel bewaard moeten blijven. Er wordt onderscheid gemaakt tussen 'hot data' (bijvoorbeeld nieuwe messages, de timeline enz), 'cold data' (bijvoorbeeld oudere foto's) en 'frozen data' (bijvoorbeeld oude statistieken).
Een concreet idee is om harddisks met cold data op een lagere spinsnelheid te laten draaien. Hot data harddisks draaien op volle snelheid (vaak 7200 rpm), cold data
disks draaien op 3000 - 3600 rpm en frozen data harddisks kunnen zelfs
helemaal stil staan. Als alternatief (bij hele grote opslag behoeften)
kan ook voor een tape library worden gekozen, met name als de access time van de data van ondergeschikt belang is.
Facebook heeft een dusdanige hoeveelheid harddisks dat dit een besparing tot 1 MegaWatt kan opleveren. Dat is nog eens wat anders dan de server airco naar 27 graden Celcius zetten (dit gebeurt in steeds meer datacentra om energie te besparen; in het Google datacentre Ghislain (België) is het nu al standaard 35 graden).
Een ander interessant topic: wat kost het om een service als Facebook draaiende te houden? Denk daarbij aan kosten voor storage en data traffic. Voor Youtube heeft een blogger dat recent (uitgebreid) uitgerekend, waarbij hij uitkwam op een totaalbedrag van $100 miljoen Dollar per jaar. Check zijn uitgebreide berekeningen.
Het blijft interessant om in de (technische) keuken van de grote online merken te kijken :-).
Dark social
Door de grote opkomst van social media wordt daar bij het ontwikkelen van een website steeds meer de nadruk op gelegd. Share buttons verschijnen overal, Open Graph tags zitten standaard in de pagina's en de analytics tools laten duidelijk zien welke bezoeker via welk kanaal binnen komt (referer).
Maar zou het misschien kunnen dat sommige bezoekers op een hele andere manier aan hun informatie komen? Je zou bijna vergeten dat dit ook buiten social media om kan. Denk aan gemailde links, linkjes die tijdens het chatten worden uitgewisseld, bookmarks, het handmatig intypen van een URL (ja het bestaat nog, ben er zelf zo een :)) enz.
Alexis Madrigal onderzocht dit met zijn analytics tool en kwam tot de verrassende conclusie dat tot wel 69% van de site referals 'dark' zijn; ruim 2,5x zoveel bezoek als Facebook (als heel platform) genereert aan inkomend verkeer.
Welke conclusie je hier aan kunt verbinden hangt af van je doelstellingen. De belangrijkste is misschien wel dat er nog steeds een hele grote groep mensen is die niet aan social media doet, of dit niet gebruikt voor commercieel outbound verkeer (richting websites). Goede vindbaarheid in de zoekmachines, SEO en een goede sematische website zijn dus nog steeds geen overbodige luxe.
How to create your first iPhone app (2012 Edition)
Ben je van plan een (iPhone) app te maken? Dan heeft Jen Gordon, schrijfster op smashing magazine een aantal tips voor je. Het originele artikel is geschreven in 2009, maar omdat er ondertussen al zoveel veranderd is, heeft ze het artikel herzien en wat punten aangepast voor een 2012 versie.
onderwerpen:
- Wat is je doel?
- Wat zijn je verwachtingen?
- Waar moet je beginnen?
- Stap 1: Ontwikkel een Plan van de aanpak en een Marketingplan
- Stap 2: Maak een developers account aan
- Stap 3: Schets je app
- Stap 4: Bepaal welke werkzaamheden uitbesteed moeten worden.
- Stap 5: Stel je team samen
- Conclusie
http://mobile.smashingmagazine.com/2009/08/11/how-to-create-your-first-iphone-application/
Old meets new
In Duitsland hoef je je in elk geval niet te vervelen bij een druk verkeerspunt. Wanneer het wat langer duurt voordat het verkeerslicht op groen springt, kun je daar een spelletje 'Pong' spelen. En het aardige is dat je dan speelt tegen iemand aan de andere kant van de straat.
Leuke manier om het wachten te verlichten.. of zoals de makers het noemen: een 'social interaction experiment'.
Uitbreiding binnen idreams
Het Dreamteam heeft weer een welkome uitbreiding gekregen! Deze week zijn twee nieuwe collega’s aan de slag gegaan. Op de bovenstaande foto van links naar rechts: Karlijn van Mier en Anouk Wouters. Beiden komen vanuit de grafische opleiding van Sint Lucas en komen een half jaartje snuffelen bij idreams als stage.
Karlijn versterkt het design team en Anouk richt zich op de dromen en denken fasen. Ook zal Anouk de projectmanagers de nodige ondersteuning bieden.
Redesign door buitenstaanders
Het fenomeen dat buitenstaanders hun creativiteit loslaten op het design van een ander kennen we vooral van de iPhone en iOS. Vaak in de periode voor een (verwachte) grote aankondiging duiken mock-ups en screenshots op waarin professionals hun visie of wensen uiten, waaraan het product nu nog niet voldoet.
Deze trend lijkt zich te hebben doorgezet naar websites. Twee partijen hebben hun visie en creativiteit losgelaten op twee zaken die we ondertussen gewend zijn: Wikipedia en E-mail. Aan het onderliggende concept veranderen ze weinig, maar juist aan de visuele presentatie wordt veel toegevoegd, veranderd of juist weggehaald.
Het resultaat mag er zijn en geeft maar weer eens aan welke impact een goed design heeft op de usability van een site, product of dienst.
Wikipedia Redefined:
http://www.wikipediaredefined.com/
Google als marktveroveraar
Google gaat Internettoegang aanbieden, zoals in Nederland KPN, Ziggo en IPC dat ook doen.. maar dan wel op de Google manier! Ze gaan namelijk snelheden bieden van 1.000 Mb per seconde voor 70 dollar per maand. Dat is 100 keer sneller dan de huidige abonnementen. 100 keer! Mocht die 70 dollar per maand voor deze supersnelheden toch te veel zijn, kun je ook een Internetabonnement nemen met 'normale' snelheden. De kosten zijn in dat geval 0 dollar.. gratis dus! Momenteel nog alleen in de US, maar ongetwijfeld breidt Google dat snel uit.
Uiteraard biedt Google Fiber ook Google TV om ook daar een slag in te maken. Met dit soort snelheden kun je tot 8 programma's tegelijkertijd opnemen, in Full HD. Ruimte om dit soort hoeveelheden op te slaan krijg je overigens ook genoeg: 2 Terrabyte, oftewel zo'n 2.000 Gb. Het klinkt allemaal fantastisch.
Enkele jaren geleden brak Google de markt van webbased email open. Hotmail was de grote speler met zo'n 10 Mb opslagcapaciteit. Google's Gmail kwam de markt binnen met een opslagcapaciteit van 2 Gb en veroverde daarmee snel een groot marktaandeel. Nu krijg je als consument overal bijna onbeperkte opslag voor je email. Hotmail maakte vandaag bekend dat Hotmail.com wordt vervangen door een nieuwe dienst (Outlook.com), om zo de markt terug te verovereren van Gmail.
Met Google Fiber gaat Google opnieuw grote veranderingen aanbrengen in de business modellen, in dit geval van de Internet access providers. Het betekent dat zij namelijk vergelijkbare abonnementen (moeten) gaan aanbieden om bij te blijven, of andere innovatieve diensten moeten gaan ontwikkelen. De markt van Internet toegang gaat de komende tijd dus flink veranderen. En als consument lijken wij daar ons voordeel mee te kunnen gaan doen.
Time maps
Door de goede infrastructuur in Nederland wordt het steeds moeilijker om te bepalen hoe lang een reis zal duren. In feite klopt de kaart van Nederland niet meer.
Time maps heeft daarom een interactieve kaart van Nederland gemaakt. Klik je huidige locatie aan (of laat deze direct uitlezen via je browser) en krijg direct te zien hoe lang de reistijd is vanaf je beginpunt.