Terug naar de command line!

ms word screenshotMijn echte fans weten het al, ik ben zelfverklaard lid van de Kerk van de Penguïn en aspirant Command Line Ridder. De command line (CLI) is misschien niet de meest vanzelfsprekende user interface, maar het is schier onmogelijk om de ongelofelijke kracht van taal (want daar gaat het op de command line over) om te zetten in een visuele representatie. En het lijkt erop dat taal als ‘aanstuurmechanisme’ aan een comeback toe is!
De kracht van taal
Is het toeval dat de bekendste internet-applicatie (Google eh pippo, niet Second Life) puur op basis van taal werkt? Waarom is desktop search één van de belangrijkste functionaliteiten in Windows Vista (en daarvoor al in Mac OS X Spotlight en in Google Desktop)? Omdat taal een ongelofelijk krachtige manier is om software aan te sturen. Een meer traditioneel CLI voorbeeld misschien nog; om de hostnames van alle unieke bezoekers van deze blog te vinden die mijn babelfish-vertaling-hack gebruiken (en dat zijn er niet bijster veel, waar zijt ge eigenlijk mee bezig Goossens?), plak ik de in- en output van enkele commando’s met een paar pipes aan elkaar tot ik iets als dit heb:

grep babel wwwlogs/e-cafe.be | grep 302 | cut -f 1 -d ” ” | sort | uniq | nslookup – | grep “name = “

Et voila, daar staan ze alle twee. Dat kan natuurlijk ook in een grafische gebruikers omgeving (een GUI), met pakweg MS Excel. Maar daar ben je dan wel echt net iets langer mee bezig (ik tel een 10-tal stappen, van het openen van Excel over het importeren van de data met de wizard en het toepassen van 3 filters tot het scripten van de nslookup).
GUI vs CLI
Maar dit is niet de zoveelste anti-MS blogpost, in Mac OS X en zelfs in al die Linuxen is de grafische user interface ook de de facto omgeving. Shell-scripten (bat-files! cmd.exe!) kan ook in Windows en wat meer is, Microsoft heeft onlangs PowerShell uitgebracht (gratis te downloaden) waarmee ze -in eerste instantie voor sysadmin-taken- volop voor de kracht van de CLI gaan. Nee, het gaat me hier eigenlijk over het feit dat een grafische interface, met die mooie icoontjes en geneste menu’s, in bepaalde gevallen eigenlijk minder gebruiksvriendelijk en productief is. Zoals een niet-grafische interface voor bepaalde taken (bv. het bewerken van foto’s) ook minder geschikt is. En -hier komt mijn langverwachte pointe- dat een hybride vorm van een GUI en een CLI ons op dat vlak misschien de toekomst is.
Best of both worlds
Enter Humanized. Dit klein Amerikaans bedrijf werkt verder op basis van de concepten van de inmiddels overleden Jef Raskin. Raskin was het brein achter de Macintosh en besteedde de laatste jaren van zijn leven o.a. aan Archy, een radicaal andere user interface. Eén van de eerste producten van Humanized, Enso Launcher, brengt een paar van de concepten van Archy nu naar Windows. And I love it!
enso learn as screenshot (from the humanized site)Eenmaal de “30-days free trial version” van Enso Launcher geïnstalleerd, is je shift-lock (ofte caps-lock) weggekaapt door de software (good riddance). Met die toets activeer je vanaf nu Enso om alle software op je computer op te starten door ‘open <programmanaam>’ in te tikken. Enso kent al je software al en zal, aan de hand van de letters die je invult, suggesties doen die je met de cursor-toetsen kunt selecteren (beetje zoals Google Suggest). Maar er is meer; je kunt Enso nieuwe commando’s leren (ik moet bv. enkel “open wr” typen en “write blog” te selecteren om hier te komen schrijven, of “open kcrw” om naar het fantastische kcrw te luisteren), je kunt via Enso een window (of tab in een browservenster) naar voor halen, Enso kan rekenen maken (klinkt stom, maar is eigenlijk best handig), geselecteerde tekst omzetten in lower- of uppercase, copy/pasten, googlen, …
Dat de Launcher maar het tipje van de Enso-ijsberg is, blijkt uit de presentatie die Asa Raskin op de Google campus gaf onder de titel “Death of the desktop”. Wie tijd heeft (het duurt algauw toch een uur en half, maar ) kan die hier bekijken.
Browsers?
mockup of bookmarks and search (from the google labs blog) Wie op de tags bij dit artikel let, heeft misschien al gezien dat ik dit ook onder ‘browser’ heb gecatalogeerd. Waarom? Wel, ik las op de Firefox Labs blog dat men daar overweegt om bijvoorbeeld de search-box op die manier te ontsluiten en om tekst-gebaseerde bookmarking te introduceren. Als ik kijk naar de chaos in mijn diep geneste bookmarks-folder, dan kan ik me het voordeel levendig inbeelden. Dit wordt ongetwijfeld vervolgd!

De volgende web (r)evolutie is hier (bijna)!

some logo, not telling you what it’s from though :-pWeb 2.0: been there, done that? En wat nu? Wel, Tim Berners-Lee en andere visionairen beweren dat de toekomst van het web semantisch zal zijn. Waarmee ze bedoelen dat informatie op het web betekenis moet krijgen voor machines (software), zodat die zelf verbanden kunnen leggen om die verzamelde data dan aan de gebruiker te presenteren. Het idee van Tim Berners-Lee is ondertussen al meer dan 5 jaar oud en er is in de praktijk eigenlijk nog niet veel gebeurd op het vlak van het semantische web. Maar nu lijkt er een doorbraak op til met een elegante en betrekkelijk eenvoudige oplossing om web-data te structureren.
microformats logo De volgende web (r)evolutie zou dan ook wel eens kunnen worden ontketend door microformats. Dat is informatie in gewone web-pagina’s die in de html-code extra getagged wordt, om diezelfde pagina ook voor machines en software bruikbaar te maken. Een heel eenvoudig voorbeeld met een gewone link:

<a href=”http://e-cafe.be/frank/”>frank goossens</a>

een beetje aanpassen naar

<div class=”vcard”><a href=”http://e-cafe.be/frank/” class=”url fn”>frank goossens</a></div>

en mijn naam en de url van mijn (shabby) homepage zijn ontsloten middels de hcard-microformat en daarmee ook “machine-readable”! Voor hcard zijn er nog veel andere attributen (adres, geboortedatum, nickname, foto, …) en daarnaast zijn er ook microformats voor bv. kalenderinformatie (hcalendar), recensies en tags. In die laatste incarnatie worden microformats overigens nu al ondersteund door zowat alle blogsoftware.
Ja, en dan?
En wat kunt ge daar dan mee Goossens? Awel; de gestructureerde informatie in microcards kan in principe gelezen worden door je browser, door zoekmachines of door andere gespecialiseerde software. En daar kan die data aangevuld worden met andere gestructureerde informatie om al dat moois dan voor uw en mijn gebruiksgemak te presenteren. Het valt bijvoorbeeld te verwachten dat zoekrobotten (technorati heeft dit al in de keuken staan) microformat-informatie zullen verwerken en gebruiken om zoeken op iets als “alle events in Gent van 14 tot 23 juli” in kalender-formaat mogelijk te maken. Of dat je browser microformats herkend en je die rechtstreeks in je contact-, kalender-applicatie of in google earth/ maps kunt binnenhalen (spoiler: dat kan nu al, lees vooral verder).
Veel beter uitgelegd
Vorige maand hield FF-user experience designer Alex Faaborg een presentatie over microformats die in dit kader zeker mag gezien worden (link naar slideshare-presentatie).
De doorbraak
operator screenshotMicroformats bestaan ondertussen 2 jaar, maar er zijn een paar stevige redenen waarom de doorbraak er in 2008 zit aan te komen; ze zitten dus in Firefox 3 en Internet Explorer 8 zal die vermoedelijk ook ondersteunen (Gates gaf zijn zegen in 2006). Er is overigens nu al een microformats extensie beschikbaar voor Firefox 2; Operator, ontwikkeld door een IBM-developer, dat kan ook al tellen als geloofsbrief. Operator vormt overigens de basis van de microformats-ondersteuning in FF3.
Anderzijds lijkt er ook aan de kant van websites ook wat te bewegen: sites als upcoming.org, plaxo, salesforce en linkedin bieden hun info nu al via microformats aan. Aan de kant van “website beheer software” zijn ontwikkelaars van open source systemen als Drupal, MediaWiki en WordPress microformats aan het integreren. Het lijkt me niet meer dan logisch dat dit een selectiecriterium voor keuze van corporate webcms’en zal worden (waarbij CMS’en die op basis van contenttypes werken, duidelijk in het voordeel zijn).
Hoort U het ook?
Wat ajax gedaan heeft voor web 2.0, zullen microformats voor <insert buzzword here> doen; met betrekkelijk eenvoudige technologie de basis leggen van ontwikkelingen die het web naar een volgend niveau kunnen tillen. Wie een site beheert waar contact-gegevens of gebeurtenissen op gepubliceerd worden, heeft de klok horen luiden, ga nu uw klepel zoeken!
Meer info:

5 tips voor succes op het web

Ik ben voor mijn werk aan een presentatie over functionele en technologische keuzes voor websites bezig. Als basis voor die keuzes, stel ik, moeten de redenen van het succes van het internet genomen worden, want die gelden even goed ook voor individuele websites. Zo voor de vuist weg (niet echt, ik ben hier al een tijdje over aan het prakkiseren) kan ik er een 5-tal bedenken:

  1. Geef de mensen informatie!
  2. Daar draait het op het web immers om, informatie. Dus niet over hoe leuk het er allemaal uit ziet (al is dat altijd mooi meegenomen), niet over een promootje op je webshop en ook niet over CPC van je Google Adwords campagne. Nee, het draait in eerste instantie echt gewoon over ‘kwalitatieve content’, over ‘inhoud’. De mensen willen internet om dezelfde redenen als waarom onze verre voorouders vroeger encyclopedieën kochten; omwille van de belofte dat je, als je dat wilt, informatie onmiddellijk ter beschikking hebt.
    tip 1: Zorg voor kwalitatieve informatie waar je doelgroep iets aan heeft.

  3. Gratis is nooit te duur
  4. Inhoud is koning, keizer, admiraal, maar verwacht niet dat gebruikers voor ‘gewone informatie’ zomaar geld zullen neertellen. De grote succesverhalen op het web zijn niet toevallig geheel of gedeeltelijk gratis. Google, Youtube, Wikipedia, die duizenden internet-fora … allemaal gratis inhoud.
    De truc voor wie toch geld wilt vragen voor zijn “content”, is een evenwicht te vinden tussen je gratis en je betalend aanbod. LinkedIn is een goed voorbeeld; iedereen kan zonder een eurocent uit te moeten geven lid worden en je kunt met zo’n gratis account perfect online netwerken. Maar terwijl je, blij als een kind met deze toffe gratis dienst, je online netwerk beetje bij beetje verder uitbouwt, voeg je zelf ook informatie (en nieuwe gebruikers) toe. Eenmaal je goed en wel op weg bent, schrijf je misschien ook een aanbeveling of beantwoord je vragen in de ‘answers’ sectie. Gratis informatie geven en nemen, in ieders voordeel. Alleen voor een klein een deel van de meest sexy functionaliteit tenslotte (de volledige lijst van wie je profiel bekeken heeft bv.), moet je wel betalend lid zijn. Online uitgevers zoals De Standaard en de muziek- en filmindustrie lijken overigens nog te worstelen met het vinden van de juiste verhouding tussen gratis en betalend.
    tip 2: Geef je bezoekers die informatie ten minste gedeeltelijk gratis.

  5. “Wie doet er mee, internetteke?”
  6. Internet drijft dus op gratis inhoud, maar wat meer is: iedereen mag meedoen! Wie toegang tot internet en een browser heeft, kan mee zoeken en lezen, maar kan vooral ook mee schrijven en linken. Het internet is op die manier vanzelf viraal; je leest, je reageert, je schrijft zelf, je stuurt linken door, … Het succes van internet en van succesverhalen als Youtube, Wikipedia, Facebook en dichter bij huis van bv. de Telenet Games-fora (nu geïntegreerd in 9lives.be) is dan ook mee te danken aan het feit dat iedereen mag meekijken, meespelen en mee promoten. Het internet, dat zijn de mensen. Vergeet die hippe marketeers en trendwatchers dus maar; het internet is vanaf de allereerste site (van Tim Berners-Lee aan de CERN in Genève, zie zijn oproep om zelf content te publiceren of software te schrijven in ‘How can I help‘) altijd al een viraal en sociaal medium geweest!
    Dat iedereen mag meedoen, gaat inderdaad verder dan het puur inhoudelijke: ge kunt, als ge na het lezen van dit artikel een geweldig idee hebt, onmiddellijk beginnen om nieuwe spannende software voor het web te schrijven. Internet en het www zijn immers gebaseerd op open, gestandaardiseerde technologie (tcp/ip, smtp, http, html, …) waar geen rechten op betaald moeten worden. Daarnaast heeft ook het succes van het open source ontwikkelmodel sterk bijgedragen tot de grote hoeveelheid beschikbare kwalitatieve software voor het internet (denk aan Bittorrent, Firefox, Apache, WordPress, Drupal, Mediawiki, …) en op die manier voor het succes van het web in zijn geheel.
    Voeg het idee van open communicatie en open software development tenslotte samen en “shake firmly” tot je een mashup hebt; web-applicaties (zoals Amazon en Google Maps), social-networking-sites (zoals het al vermeldde Facebook en binnenkort ook Linkedin) en andere web2.0-software projecten (opnieuw; Drupal, WordPress, Mediawiki, Joomla, …) laten ontwikkelaars toe om met behulp van een API (application programming interface) widgets, extensions en plugins te schrijven die extra functionaliteit in hun sites integreren of die informatie van hun site halen om ze in een andere context (bv. iGoogle of live.com of rechtstreeks in je browser) te publiceren. Het resultaat: gratis extra functionaliteit voor je bezoekers!
    tip 3: zet je website “wijd open”; een standaard browser moet voldoende zijn, moedig het linken naar je content en gebruik van je rss-feeds aan, bevorder communicatie op en/of over je site en overweeg de mogelijkheid van het openstellen van je applicaties voor “amateur-ontwikkelaars”.

  7. Uw grootmoeder kan het!
  8. Een oppervlakkige kennis van computers is voldoende om het internet op te trekken. Computer opstarten, icoontje van je browser klikken, naar Google, zoekterm intikken, à volonté op al die hyperlinks klikken, ge moet daar niet voor gestudeerd hebben mijnheer! Verkeerde pagina? Eén klik op de back-knop en je zit terug in je zoekresultaten (het web is sequentieel, ge gaat van pagina A naar B naar C terug naar B naar D, …) en als je een toffe pagina hebt gevonden; in de bookmarks ermee! Dat is het. Indien surfen niet zo eenvoudig zou zijn, hadden de webbouwers en -marketeers onder ons nu niet zo een fijne job.
    Om die drempel zo laag te houden, moeten sitebouwers zich wel een beetje aan de standaarden (html, css, …) en conventies (links zijn onderlijnd, elke pagina heeft zijn unieke URL zodat er kan gebookmarket en gelinkt worden, back-toets werkt, goeie navigatie en interne search …) houden. Wijk nooit af van webstandaarden en -conventies, zelfs niet als het nifty UI-alternatief van dat flashy webagency voor jou, doorwinterd webexpert die je bent, best eenvoudiger en vooral zo veel leuker lijkt.

    tip 4: laat je website volgens de regels van de kunst maken en hou het eenvoudig. Consistentie, eenvoud, usability, accessibility. Geloof me, ge kunt niet zonder en uw grootmoeder al zeker niet!

  9. Wie zoekt die surft (en surft en surft en …)
  10. Met die schier oneindige hoeveelheid aan gratis informatie zouden we niet veel zijn zonder tools om al die pagina’s makkelijk terug te vinden. Van Webcrawler en Lycos mid jaren ’90 over Altavista tot Google; search engines zijn de alfa en de omega van zowat elk internet-bezoek (bij hoeveel mensen zou een search-engine de homepage zijn?).
    Indien je wilt dat je site makkelijk te vinden is, zul je ervoor moeten zorgen dat de zoekrobotten van bv. Google je site makkelijk kunnen vinden en indexeren. En om goed geïndexeerd te kunnen worden, zul je ervoor moeten zorgen dat je site web-standaarden en -conventies volgt (zelfs niet als dat flashy webagency … ge weet wel).
    tip 5: Consistentie, eenvoud, usability, accessibility; ge kunt niet zonder en de Googles out there zeker niet! wees vriendelijk voor Google en de bezoekers zullen tot U komen.

Natuurlijk is dit lijstje niet volledig en vanzelfsprekend is er heel wat meer nodig om succesvol op het internet te ondernemen (een goed business-plan helpt). Maar als het op rauwe trafiek aankomt: zet gratis kwalitatieve informatie open en bloot voor iedereen online, zorg ervoor dat die volgens de standaarden en conventies ontsloten wordt en verwelkom search-engines met open armen. Hoe het geld dan moet binnenrollen, dat mag U zelf uitvissen.
Interessante links en inspiratie:

Stoute wordpress upgrade maakt posts van pages?

Outro_Spective had gisteren een probleempje met zijn upgrade naar de laatste versie van WordPress op animobrugge.be; alle pages waren plots posts.


De oplossing bleek gelukkig betrekkelijk eenvoudig: posts en pages worden beiden in de ‘wp_post’ tabel bijgehouden in de wordpress database. Als je van de verdwenen pages in kwestie het ‘post_type’ van ‘post’ naar ‘page’ verandert, is alles terug in orde. Volgend sql-statement doet dat in 1 klap:

UPDATE wp_posts SET post_type = ‘page’ WHERE ID IN (x,y,z)

met in de plaats van x,y en z de id`s (het nummer na p= of page_id= parameter in de url van je posts/ pages) van de posts die terug page moeten worden

Waarmee dat Jong Links Brugs geweld terug foutloos online staat en ze zich nu terug volop met de politiek kunnen bezighouden 🙂

Vechten met informatie

kickboxer takes a hitWerken is altijd een beetje verzuipen in informatie, zeker als je zoals ik nog maar net in een groot telco-bedrijf met tal van slimme collega’s, langlopende projecten en complexe processen begonnen bent. Het ontbreken van een bedrijfs-kennisdatabank (knowledgebase) en van een document management systeem (DMS) dragen niet echt bij tot het vlot opslaan of terugvinden van relevante info. Fileservers zijn wel goed ingeburgerd, maar er wordt van uit gegaan dat iedereen daar op 1 of andere manier zijn weg wel op zal vinden. Very 90’s indeed! Futtta dus op zoek naar een oplossing …

Read more

Safari3 for Windows still sucks, but getting better at it

catching safari bugsOmdat ik in het diepst van mijn gedachten een Steve Jobs-fanboy ben en omdat ik zo graag met browsers speel, heb ik na mijn rant van vorige week vlijtig verder geëxperimenteerd met Safari3 voor Windows en speurde ik het wilde wereld web verder af naar informatie over mijn kleine probleempjes. En ik mag misschien nog niet jubelen, maar ik kan wel al aankondigen dat er toch al enige vooruitgang is:

Read more

futtta vist nu ook in het engels

big babelfishGe hebt het misschien al gezien (behalve de feedreader-crowd dan, maar die lezen het nu dus); ik heb een link toegevoegd om deze pagina’s op eenvoudig muisklik-verzoek automatisch in het Engels te laten vertalen. Akkoord, die vertalingen geven meestal maar een vage -en niet zelden humoristische- benadering van de originele tekst, maar die paar internationale bezoekers op zoek naar een poging tot howto’s kunnen er hun voordeel maar bij doen, niet?
Aangezien Altavista Babelfish (Ave Digital) de moeder van alle online vertalingstools is en omdat Google Translate voorlopig niet in de buurt komt qua aangeboden talenparen, gebruiken we de Vis voor onze verovering van de wereld.
Hoe van deze wordpress.com-blog naadloos naar Babelfish switchen? Wel, normalerwijze zou een klein stukje javascript kunnen volstaan, iets als het volgende bijvoorbeeld:

<a href=”javascript:orig_url=document.location; target_url=’http://babelfish.altavista.com/babelfish/tr?’+orig_url+’&lp=nl_en&btnrUrl=Translate’; document.location=target_url;”>vertaal me</a>

Maar op wordpress.com kunt ge zelf geen javascript invoeren (wat niet slecht is, voor ge het weet zit uw favoriete blogplatform met cross-site-scripting issues), dus dan moet een mens zijn plan trekken met gewone html.
De uiteindelijke oplossing is bijzonder eenvoudig: de translate-link gaat naar een php-scriptje op mijn linux-serverke. Dat script pikt de referer uit de $_server variabele, test of die in de lijst met toegestane domeinen zit (*) en doet, als dat domein snor zit, een redirect naar Babelfish waar de vertaalvisjes onmiddelijk aan het werk gaan. Met dank aan Systran, het Franse bedrijf dat instaat voor de eigenlijk vertaalsoftware, overigens.
(*) Ik heb vooralsnog geen ambitie om vertalings-gateway worden voor Jan, Pier en Pol. Pas op, als die jongens ergens een php-scriptje kwijt kunnen, wil ik hun dat wel bezorgen. En als ze het echt heel vriendelijk vragen (ik drink graag Trappistenbier, Chimay Triple valt tegenwoordig heel goed in de smaak), zou ik hen zelfs kunnen toevoegen aan dat lijstje toegestane domeinen.

The Reference joins Emakina

ref-logoHet gaat goed daar in Gent; Emakina koopt alle aandelen van The Reference over (van onder andere Beluga en een aantal privé-aandeelhouders als ik me niet vergis). Alexander heeft het hem toch maar geflikt. Voor John is het een weerzien met het bedrijf dat hij in de gouden jaren (pré bubble 1.0) mee heeft helpen uitbouwen. Voor de reffers die al jaren keihard mee aan de kar getrokken hebben (ge weet wie ge zijt); wreed gefeliciteerd gasten! En Anja; bloggen eh meiske 😉

Safari ate my wiki! (updated)

unknown error en geen toegang tot proxy instellingenSafari Beta3 voor Windows is uit, dit kon U al uitgebreid lezen in de pers en natuurlijk ook in blogland. Als wannebe-mac-user met een boontje voor alles wat niet MSIE6 (yuck) is, ben ik verplicht Safari te downloaden, installeren en testen.
En ik zal maar direct met de deur in huis vallen: blijf er zo ver mogelijk van weg, Safari3 beta voor Windows is een slecht vermomde alpha release!

Read more

Onclick event handler in A HREF’s?

De collega’s van marketing willen bij sommige URL’s onclick event handlers laten toevoegen die elke klik loggen bij een web analytics aanbieder. De Onclick-javascript functie haalt wat gegevens op en voegt die toe aan een request voor een -onzichtbare- image.
Mijn eerste gedacht; niet doen, de onclick wordt eerst uitgevoerd en als de request voor die image te lang duurt (op basis van onze ervaring gingen we uit van ongeveer 0,6 seconden) moet de gebruiker ook extra lang wachten op de pagina die hij/zij opvroeg (want eerst onclick en dan pas request voor de feitelijke pagina in de href). Ik leek hier ook bevestiging voor te vinden op quirksmode dus niet doen?
Dit weekend begon ik me echter af te vragen of dit wel kon kloppen; alle wordpress-blogs bijvoorbeeld, houden klikgedrag op ongeveer die manier (wel niet de traditionele onclick, maar met echte events) bij. En die web analytics aanbieder, zouden die zoiets in productie zetten als dat een probleem zou zijn? Een testje dan maar, met volgende code:

<html>
<head>
<script>
function exec_me() {
//bust cache
rnd=Math.floor(Math.random()*1000000);
url=’http://florentsmet.be/distel.jpg?n=’ + rnd;
//wait a few seconds and then fetch image
setTimeout(“loadimg(url)”,192);
}
function loadimg(url) {
//declare image
var i=new Image(1,1);
//load image
i.src=url;
}
</script>
</head>
<body>
<a href=”http://www.google.com/” onClick=”exec_me();”>gogoogle</a>
</body>
</html>

Ik ga dan in de logs van florentsmet.be (site van mijn vrouwken over haar overleden grootvader die kunstschilder was) kijken en zie dat die image in FF perfect geladen wordt als die timeout op een laag cijfer staat (onder de 190 milliseconden) en nooit als die boven die 195 ms. In MSIE lijkt 215 zo een beetje het punt tot waar dat werkt.
Is dat nu een race-condition? En hangt die dan af met welke browser je werkt? Heeft iemand hier ervaring mee, of een paar goeie links waarin dit beschreven wordt? En vooral, op basis van deze tests zou ik besluiten dat die onclick-logging van geklikte links geen probleem is. Iedereen akkoord daarmee dan?