dreamyourweblog

Waar we het hebben over alles wat ons interesseert

Het juiste gereedschap voor het karwei

door Bram den Teuling | 2 reacties

Is een bepaalde database, framework of programmeertaal beter? Dit is een discussie die vaak gevoerd wordt. Laatst ook weer. Een organisatie was van mening dat al diens software met dezelfde programmeertaal geschreven dient te worden en met dezelfde database dient te werken, omdat dit gemakkelijker is in het onderhoud ervan. Dit klinkt als een logische redenering, echter wij hebben een aantal redenen om hier anders over te denken. Stel je gaat een huis bouwen: neem je dan alleen een hamer mee?

Het principe van de hamer

Abraham Maslov - de psycholoog, ook wel bekend van de Maslov piramide - zei in 1966: “I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail.” Als je jezelf beperkt tot één enkele programmeertaal of database is dit natuurlijk het geval. Je gebruikt geen tool die op het probleem is toegespitst. Is het probleem voorhanden een gigantische berg data, die efficiënt opgeslagen moet worden en waarmee slim gerekend dient te worden over meerdere distributies? Gebruik dan Cassandra of Mongodb als database en Hadoop als programmeertaal. Heb je een innovatief project, waarbij nog veel onduidelijk is en veel veranderd gaat worden, gebruik dan bijvoorbeeld Ruby als programmeertaal. Om snel inzicht te krijgen in data, gebruik je Matlab... etcetera.

Er bestaat vaak een drempel om nieuwe tools aan te leren. Als ik in Frankrijk ben is de beste communicatie-tool natuurlijk Frans. Het kost me alleen zoveel moeite om Frans te leren, dat ik me telkens weer met Engels en wat handen- en voetenwerk probeer te redden. Engels voldoet in dit geval als soort general purpose taal. Je moet jezelf afvragen of het leren van Frans de investering waard is en in hoeverre een general purpose taal ook voldoet. Iedere techneut heeft een eigen voorkeur voor een bepaalde tool. Iedere programmeur heeft een duidelijke eerste keus voor een bepaalde programmeertaal, maar het risico is dat hij of zij daarmee ieder probleem zal proberen om te buigen naar een probleem in zijn taal. Met mijn hamer lijkt inderdaad alles een spijker.

Onderhoud

Een nieuwe tool aanleren kost dus moeite en is daarom niet altijd nuttig. Echter wat onze klant aangaf is dat het ook op termijn onderhouden dient te worden. Het is wel mogelijk om een goed onderhoudbaar systeem op te zetten. Om te starten dien je je systeem modulair op te zetten. Iedere module lost een duidelijk afgebakend probleem op. Je bent dan vrij om per module de perfecte tool te kiezen. Integratie tussen talen gebeurt dan via een zogenaamde Application Programming Interface (API) met een bepaald protocol. De modulaire architectuur stelt je in staat om te kiezen wat voor tool je gebruikt voor een bepaald probleem.

Deze vrijheid is niet genoeg om het onderhoudsprobleem op te lossen. In termen van onderhoud kan het niet de bedoeling zijn, om veel verschillende specialisten - met kennis van verschillende programmeertalen en databases - in dienst te hebben voor ieder deelprobleem of module. Er moeten dus keuzes gemaakt worden: Welke talen wil je leren spreken. Als organisatie wil je jezelf zeker niet vastleggen op een bepaalde tool, maar dien je wel huiverig te zijn voor nieuwe tools. Er moet dus een gezonde afweging worden gemaakt welk gereedschap je wel en niet in je gereedschapkist opneemt. Enkel een hamer in je kist is als organisatie heel ongezond, maar een reusachtig assortiment met allerlei specialistische tools in huis halen is misschien ook wel erg overdreven.

De afweging

Het is het eeuwen oude dilemma van ontdekken (exploratie) versus uitbuiten (exploitatie) dilemma. Keer op keer dient hier een overweging in gemaakt te worden. Hoe veel extra tijd kost het leren van deze nieuwe tool en moet ik deze tool als organisatie in mijn gereedschapkist hebben? Of kan ik het wel af met mijn hamer...

Geleerde lessen:

  • ieder probleem heeft een beste tool-for-the-job
  • het kost moeite om een nieuwe tool te leren
  • iedere tool brengt onderhoud met zich mee
  • kijk uit dat je niet vanuit jouw tool denkt en alles ziet alles een spijker
  • er is een degelijke afweging nodig tussen het uitbuiten van tools die je al kent en het ontdekken en gebruiken van een tool die perfect geschikt is voor een bepaald karwei

Verder lezen:

Ondernemers hebben nooit geluk

door Luc Vandewall | 1 reacties

Onlangs heb ik het boek ondernemers hebben nooit geluk van Ali Niknam gelezen. Het boek beschrijft de lessen die Ali Niknam tijdens zijn toch redelijk jonge carriere geleerd heeft.

In deze blog heb ik een vijftal punten opgepikt waarop Ali Niknam mij aan het denken heeft gezet en hoe ik deze punten ga integreren binnen dreamyourweb (uiteraard met de hulp van de overige partners van dreamyourweb).

Richt een non-profit bedrijf ernaast op

Geld verdienen is één maar iets goeds doen voor de gemeenschap is twee. Ik volg Ali Niknam’s gedachtegang om naast een bedrijf een tweede bedrijf op te richten dat goed doet voor de gemeenschap en de samenleving. Stiekem heb ik dit al eens gezien bij mijn held Richard Branson die in zijn begindagen al dit principe toepaste door bijvoorbeeld een hulplijn voor vrouwen aan te bieden die ongewenst zwanger waren geworden (let op: rond die tijd heerste er nog een taboe op abortus in het Verenigd Koninkrijk). Ik realiseer me dat we dit ook al hebben gedaan door dreamyourworld op te richten; het platform waarop mensen hun plannen kunnen presenteren en daarbij geholpen worden bij het genereren van nieuwe ideeen, de uitwerking van een business model canvas of het bedenken van testen om hun plannen te valideren.

Neem geen belangrijke beslissingen met zijn allen

Ali Niknam’s schets een situatie waarbij een beslissing vanuit de organisatie wordt gemaakt met zijn allen middels een reeks van langdurige vergaderingen en gesteggel onderling. De beslissing die uiteindelijk genomen wordt blijkt verkeerd uit te pakken en de beslissing dient terug gedraaid te worden. De organisatie heeft hierdoor best veel onder geleden. Niet alleen hebben de vergaderingen gezorgd voor veel verlies van productiviteit; ook heeft het gesteggeld een negatieve impact gehad op het moraal binnen het bedrijf. Ali’s gouden tip is daarom ook om dergelijke belangrijke beslissingen te laten nemen door een (3-koppige) commissie en niet in een vergadering. Vergaderingen kunnen nog altijd maar dan alleen om de meningen, ideeen en de politieke belangen in de organisatie te peilen. Deze tip wordt op micro-niveau al uitgevoerd binnen dreamyourweb (bijvoorbeeld bij de aanschaf van bepaalde zaken) maar het blijft een uitdaging om dit beslismodel die Ali beschrijft erin te houden naarmate dreamyourweb groter wordt.

Het belang van vooruitkijken

Ondernemen is vooruitkijken. Ali Niknam geeft een aantal situaties waarin blijkt dat door zijn vooruitdenkend vermogen zijn bedrijf door een aantal cruciale ontwikkelingen heeft kunnen leiden waardoor het bedrijf zo groot even kunnen groeien dat het nu is. Deze ontwikkelingen heeft me doen realiseren dat we binnen dreamyourweb nog meer moeten vooruitdenken naar waar de kansen in de markt zullen ontstaan en hoe dreamyourweb zich daar invulling aan gaat geven. Een uitdaging daarbij zal zijn hoe we invulling hieraan gaan geven aangezien we met 5 personen zijn. We zullen dus vooral met zijn 5en eruit moeten komen waar we het bedrijf willen hebben en hoe we daar persoonlijk invulling aan gaan geven.

Balans van de ondernemer zelf

Een deel van het boek gaat over hoe Ali op een bepaald moment zichzelf niet meer lijkt te zijn op mentaal vlak. Door de velen uren die hij maakt voor zijn bedrijf en de opgehoopte stress leidt hij zijn leven op de automatisch piloot. Uiteindelijk volgt hij een advies op om een mental coach in de arm te nemen; iets wat hij nooit zelf gedacht had nodig te hebben. Met de mental coach lukt het Ali om beter om te gaan met bepaalde uitdagingen van het ondernemerschap. Een daarvan is om vooral prive dingen te doen die bijdragen aan de productiviteit en creativiteit van de hemzelf. Veel van wat hij in privéleven doet (sport, eten, drinken, boeken lezen) dragen bij aan het ondernemen.

Internationale ambities? Weef het nu in het DNA

Mocht je als bedrijf zijnde de ambitie te hebben om over de grens te gaan kijken. Dan kun je niet vroeg genoeg beginnen met het verweven van bepaalde standaarden, protocollen en cultuur dingen binnen je bedrijf. Dit is cruciaal om deze stap te kunnen zetten.Binnen dreamyourweb wordt stiekem ook geflirt naar de overstap om overal in het land te kunnen werken. Momenteel worden al een aantal dingen uitgezocht om bijvoorbeeld het projectboard, in ons geval een kanbanbord, om die digitaal te krijgen. Met een beetje geluk kan Bram een gekoesterde wens in vervulling laten gaan door over 3 maanden in Amsterdam te gaan wonen en is het zeker niet ondenkbaar dat ik binnen nu en 12 maanden wellicht een tijd in Berlijn ga wonen en ondernemen.

Conclusie

Persoonlijk was ik aangenaam verrast door de hoeveelheid concrete tips hij gaf en de redelijk filosofische diepgang dat het boek bood (zonder daarbij langdradig of warrig te worden). Vooral dat laatste vond ik verrassend aangezien ik al redelijk wat boeken van ondernemers heb gelezen die vooral over zichzelf aan het praten waren zonder daarbij echt me aan het denken te zetten. Kortom een aanrader voor iedere ondernemer. Disclaimer: dreamyourweb maakt geen gebruik van de diensten en producten van TransIP (het bedrijf van Ali Niknam noch heeft het contact met hem gehad.

Het leed dat een website heet

door Luc Vandewall | Reageer

Met de alsmaar groeiende professionaliteit en add-ons die voor CMS-en als WordPress, Concrete5 en Drupal te vinden zijn groeit ook het aantal mensen dat een website het wereldwijde web in slingert. Niks mis mee natuurlijk, alleen een beetje lastig voor ons website developers aangezien iemand met een beetje gevoel voor techniek en computers zelf tegen minimale kosten een website kan bouwen.

Probleem is echter doordat iedereen zo maar in website kan bouwen ook denkt dat hij/zij daar ook even gemakkelijk geld mee gaat verdienen. Dit komt echter in de praktijk bedrogen uit. De hoeveelheid tijd die moet gestoken worden om juist eruit de springen groeit gestaagd. Optimalisatie voor een zoekmachine is op een vakgebied geworden maar tegenwoordig ook al niet genoeg om boven het maaiveld uit te steken. Bloggen en personal branding moet op continue basis gebeuren en men dient er een lange adem voor te hebben; kortom iets wat men ook niet moet onderschatten. Doe dit alles en dan nog zal een website soms niet het gewenste resultaat leveren wat men van te voren voor ogen had.

Business model Canvas

Voor al deze mensen die een dergelijke spagaat zitten roep ik op een keer een business model canvas in te vullen. Het eBook (preview | canvas) leidt je aan het hand van het canvas door alle facetten die te maken hebben bij een business model. Door alle 9 vakken in te vullen kom je er al snel achter dat er wellicht bepaalde aannames in je business model (de website) zijn gemaakt die helemaal niet voor zich spreken. Door vervolgens in te zoomen op de aannames (en deze te testen) kun je er achter komen waarom je website achter blijft bij je verwachtingen en wat je er ventueel aan zou kunnen doen om dit te verbeteren.

Typografie op het web

door Andres Lamont | Reageer

Een van de zwakke punten van het web op gebied van design is altijd typografie geweest. Hoewel er verschillende methoden zijn om je eigen lettertypen te gebruiken heeft elke techniek zo zijn nadelen. In grote lijnen zijn er twee verschillende manieren om je eigen lettertypen te gebruiken: Font replacement en font embedding.

Font replacement maakt gebruik van vector of bitmap plaatjes om de tekst te renderen waar bij het embedden van het lettertype het renderen wordt gedaan door de standaard fontrenderingfaciliteiten in de browser of het OS.

Technieken

Er zijn in grote lijnen twee verschillende methoden om eigen lettertypes te gebruiken op het web. Font replacement vervangt tekst door een Flash object of vector of bitmap plaatje. De andere methode is font embedding met @font-face. Hierbij wordt het lettertype opgehaald door de browser en gerendered zoals elke andere standaard lettertype. Ik zal hier een aantal technieken uitlichten:

sIFR

sIFR (Scalable Inman Flash Replacement) is een opensource JavaScript en Flash implementatie voor webfonts. sIFR vervangt met behulp van JavaScript text met een stukje embedded Flash waar het lettertype in geembet is. Hoewel deze methode prima werkt kleven er wat nadelen aan. Zo werkt sIFR alleen op platformen waar Flash is geinstalleerd. Dit maakt het onmogelijk om sIFR op iOS devices te gebruiken. Een ander nadeel is dat font renderen in Flash, hoewel mooi, niet efficient is en flink wat resources gebruikt en lange laadtijden heeft. Daarom, en om andere accessibility problemen is sIFR in de praktijk alleen geschik om kopjes mee stijlen.

Het grote voordeel van sIFR, wat alleen FLIR deelt, is dat het mogelijk is om commerciele fonts zonder peperdure distributie licentie te gebruiken omdat de eindgebruiker onmogelijk het orginele lettertype eruit kan halen.

Cufon

Cufon werkt in grote lijnen het zelfde als sIFR met als grootste verschil dat inplaats van Flash, SVG objecten worden gebruikt om de tekst te renderen er gebruikt wordt gemaakt van SVG op een canvas (of VML in het geval van Internet Explorer. vanaf IE9 wordt het canvas ook ondersteund maar VML ine IE is super snel.). Cufon is redelijk snel maar doordat het niet mogelijk is om de tekst te slecteren is het wederom alleen geschikt voor kopjes.

Typeface.js

Typeface.js is bijna het zelfde als Cufon. Het voordeel boven Cufon is dat de tekst selecteerbaar is. Toch is het niet aan te raden typeface.js (of Cufon) te gebruiken voor grote tekstvlakken. Vector graphics renderen is vrij zwaar en alleen Internet Explorer kan die met een echt goede performance renderen.

FLIR

FLIR (Facelift Image Replacement) is iets anders dan de bovenstaande font replacement technieken. FLIR werkt ook met JavaScript door koppen (of teksten) die gestijld moeten worden te vervangen door een PNGtje met de juiste tekst in het juiste lettertype. Hiervoor moet de website wel op PHP met een aantal extensies (GD) draaien. De JavaScript stuurt een asynchrone request naar de webserver om een plaatje te renderen van de tekst die vervolgens meteen wordt terug gestuurd.

Het voordeel boven de vector aanpak van de bovenstaande methoden is dat de performance heel hoog is als de plaatje eenmaal zijn gecached. Daarbij werkt het op elk platform met JS. Omdat het originele lettertype bestand alleen voor de server toegankelijk is, is het mogelijk om commerciele font te gebruiken.

Nadelen zijn dat de tekst niet selecteerbaar is. Ook voor grote vlakken is het niet geschikt omdat deze grote PNG bestanden zullen opleveren wat de performance niet ten goede komt.

@font-face

Dan komen we aan bij @font-face. Deze methode is technisch veruit de mooiste. Helaas zitten hier ook wat haken en ogen aan. @font-face maakt het vanaf CSS2.1 mogelijk om je eigen lettertypes te definieren in CSS aan de hand van een lettertypebestandje. Als dit eenmaal gedaan is kun je dat lettertype gebruiken zoals elk ander standard lettertype.

Helaas is het niet allemaal rozengeur en maneschijn. Ten eerste is de implementatie in alle browsers verschillend. Zo accepteert IE bijvoorbeeld aleen EOT (Embedded OpenType) en WOFF (Web Open Font Format) bestanden en FireFox ondersteund alleen TTF (TrueType) en OTF (OpenType). Gelukkig hebben andere mensen dit probleem al voor ons opgelost. Op het web zijn verscheidene gratis diensten te vinden die een willekeurig lettertypeformaat kunnen converteren naar alle gangbare formaten voor @font-face. Font squirrel is een van de bekenste en genereert een pakket waar alle bestanden in zitten die je nodig hebt om @font-face op elke (ondersteunde) browser werkend te krijgen. Omdat het renderen van de tekst met @font-face wordt afgehandeld door besturingssysteem zal de tekst er op verschillende platformen er ook niet precies het zelfde uitzien.

print vs. screen

De resolutie van de meeste beeldschermen is veel lager dan die van drukwerk. Dit heeft grote gevolgen voor tekst op kleine lettergroottes. Door het weinigeaantal pixels worden de letters wazig of korrelig. Om lettertypes toch mooi engoed leesbaar te maken op deze lage resoluties wordt gebruik gemaakt van fonthinting. Font hinting zorgt er voor dat de lijnen van de letters betersamenvallen met het pixel raster van het scherm. Dit heeft tot gevolg dat hetlettertype een beetje van zijn authenticiteit verliest maar is een wereld vanverschil voor de leesbaarheid en scherpte van de tekst. Hier onder staan tweeversies van Helvetica Neue. De bovenste is geoptimaliseerd voor het gebruik inprint en de onderste voor schermen. Het is heel duidelijk te zien dat debovenste tekst veel korreliger en lelijker is dan de onderste tekst.Helvetica Neue Print Helvetica Neue Screen

Let dus goed op bij het embedden van lettertypen dat het lettertype ook goed werkt op het scherm. De mate van vervorming van de letters hang overigens af van demethode van fonts renderen (font replacement vs. font embedden) en het plaform.

Met de komst van hDPI schermen zoals de retina displays en toekomstige high-end windows 8 en android devices zal optimalisatie voor lage resoluties in de toekomst steeds minder belangrijk worden, maar vooralsnog is helaas de meest populaire resolutie slechts 1366x768 pixels.

Tijd en Tomaten: een productieve combi

door Bram den Teuling | 1 reacties

Altijd bekijk ik weer mijn email. Of laat ik me afleiden door een gesprek van mijn buurman. Dan stelt iemand me een vraag en zoef, word ik weggezogen uit het probleem dat ik probeerde op te lossen. Met mijn handen in mijn haar vraag ik me af: Hoe manage je nu eigenlijk je tijd als je echt iets voor elkaar moet krijgen? En hoe houd je balans tussen samenwerken en ergens in duiken?

Pomodoro

Zelf ben ik nogal gecharmeerd van de pomodoro time management techniek. Je werkt dan in blokken van 25 minuten. In deze blokken kun je echt iets gedaan krijgen, door een combinatie van focus en concentratie. Je wordt er niet alleen productief van, maar ook bewust van hoe je met je tijd om gaat. Waarom ik met name fan ben is, doordat het ook nog eens super simpel is.

Wat heb je nodig?
  • een stopwatch, ik gebruik mijn iPhone met het programma MyPomodoro Lite
  • een papier, waarop je je ToDo’s kunt schrijven
  • een pen, ‘let me guess...’

‘s Ochtends bespreken we met dreamyourweb wat we die dag gedaan willen hebben. Ik verzamel dan meteen wat ik zelf die dag moet doen: mijn ToDo puntjes. Deze ToDo's schrijf ik op het papier met de hoogste prioriteiten bovenaan. Na de bespreking zet ik mijn stopwatch op 25 minuten en begin bovenaan het lijstje met ToDo's. Als een blok van 25 minuten is afgelopen zet ik een kruisje achter het ToDo punt waar ik mee bezig ben. Iedere 25 minuten neem ik 3 minuten pauze en na 3 blokken een wat langere pauze van een half uur tot een uur. So far so good en niets revolutionairs.

Interrupties

Nu komt het geniale van het werken met de tomaten techniek. Mijn probleem is dat ik altijd word afgeleid. Onderbrekingen komen er in twee soorten. Interne interrupties en externe interrupties. Interne interrupties komen vooral, doordat je zelf afgeleid raakt door interne instincten of onderbewuste processen. Ik droom vaak een beetje weg en bedenk me dan ineens iets anders: “oh ja, die moet ik nog bellen” en dan bel ik ze snel, voordat ik het vergeet. Externe interrupties komen van buiten. Je krijgt een telefoontje of een collega heeft je hulp nodig. De pomodoro techniek heeft een manier om met beide interrupties om te gaan, zodat we niet constant dingen doen die eigenlijk geen prioriteit hebben.

Een typische pomodoro voor mij ziet er als volgt uit. Ik stel mijn klok in, begin aan mijn taak. Dan bedenk ik dat ik honger heb en dat ik die man van gisteren ben vergeten terug te bellen. Oh en wat is er op Twitter te doen vandaag? En ik moet mijn mail nog lezen en meteen even reageren. Het is natuurlijk niet handig als ik gedurende mijn gehele pomodoro mijn mail heb bekeken, dan is die taak die ik prioriteit heb gegeven nog steeds niet gedaan. Daarom reserveer ik onderaan mijn blad een ruimte voor spontane taken, onder het kopje Voorraad. Alles wat ik ondertussen bedenk schrijf ik op en zo hoef ik er niet meer aan te denken. Aan het eind van mijn 25 minuten tomaten tijd kijk ik even of deze spontane taak echt zo’n noodzaak heeft om nu uit te voeren. Zo ja, dan schrijf ik hem bovenaan mijn ToDo punten en dan begin ik er mee in mijn volgende pomodoro. Zo accepteer je de afleiding, maar laat je hem niet je focus op prioriteiten beinvloeden.

Voor externe interrupties is ligt de afleiding managen ietsje gevoeliger. Als mensen je aantikken of je even aan iets mee wil denken is het heel verleidelijk om ze meteen te helpen. Ook hier kun je echter dezelfde tactiek gebruiken. Als het echt belangrijk is zeg je gewoon dat je over 10 minuten bij ze terug komt, omdat je ergens midden in zit. Is het minder belangrijk, dan kun je de taak in je voorraad opnemen en er later tijd voor inplannen als het prioriteit heeft. Er is wat assertiviteit en impuls controle nodig, maar dan manage je wel je tijd.

Balans

Om echt iets voor elkaar te krijgen is er een strategie nodig om niet constant afgeleid te raken. Je kunt je opsluiten in de bibliotheek, maar in een organisatie is dit niet altijd mogelijk en wenselijk. Een andere manier is een tijd afspreken om elkaar niet te storen, bijvoorbeeld de hele ochtend gaan we elkaar niet afleiden, ook dit is niet altijd haalbaar. Deze blogpost, oppert tijd management door middel van de pomodoro techniek. Persoonlijk zijn tomaten en tijd voor mij nu een explosieve combi in termen van productiviteit. Tomaten helpen mij om een balans te krijgen tussen samen en individueel taken gedaan te krijgen. Het is een manier om heel simpel, meer uit je tijd te halen. Ik zou zeggen: probeer het eens!

Geleerde lessen:

  • In een team heb je een techniek nodig om afleiding te managen
  • Een combinatie van focus en prioriteit is key to succes
  • Een concentratie ritme, bestaande uit blokken van 25 minuten, werkt
  • Tomaten zijn cool

Verder lezen:

Pomodoro Techniek