Wikileaks schiet zijn doel nu ver voorbij

Ben ik als journalistiek professional heel afvallig als ik meen dat Wikileaks zijn doel voorbij is geschoten?

Zolang deze klokkenluiderssite documenten publiceert over martelingen of andere misstanden in onze westerse democratieën, vind ik dat ze fantastisch werk doet. Maar welk belang is gediend bij publicatie van de mening van de Amerikaanse ambassadeur over Berlusconi? Hoe dient het de democratie dat we weten dat de Italiaanse regeringsleider een ijdeltuit is, en het Angela Merkel ontbreekt aan creativiteit?

Natuurlijk kun je publicatie hiervan verdedigen door te zeggen dat volledige transparantie onze overheden uiteindelijk beter zal maken. Maar daarin geloof ik niet. Integendeel. Als individu ben ik gesteld op een zekere mate van privacy. De meeste bedrijven zijn dat ook, en om goede redenen: als alle interne documenten op straat komen te liggen, is concurrentie feitelijk onmogelijk. Natuurlijk hoeft een overheid niet te concurreren. Maar daar spelen hele andere belangen.

Als een overheidsdienst niet meer in vertrouwen kan communiceren met andere onderdelen uit zijn bureaucratie, is het gevaar levensgroot dat cruciale informatie helemaal niet meer wordt gedeeld. De ambassades zullen voortaan twee keer nadenken voordat ze hun beoordelingen van nationale politici in de landen waar ze werken naar Washington versturen. Hun boodschappen zullen voortaan gedrenkt zijn in risicoloze beschrijvingen die we kennen als diplomatieke communiques. Als instrument voor beleid worden ze dan waardeloos.

Ook in deze berg van documenten die Wikileaks nu heeft gepubliceerd, schuilen sappige onthullingen. Het is wel van belang, denk ik, om te weten dat Saoedi-Arabië heeft gevraagd om een aanval op Iran: dat werpt een aardig licht op de verhoudingen in het Midden-Oosten. Maar neem de verdenking, niet hard gemaakt, dat de Russische leider Poetin banden zou hebben met de georganiseerde misdaad? De man is er nooit voor aangeklaagd, laat staan veroordeeld – en zolang dat niet het geval is en hij een prominente rol speelt in Rusland, moeten we het met hem doen. Onze houding, ons beleid tegenover de Russische regering wijzigt er geen sikkepit door.

Mijn vraag is: zijn alle onthullingen die we dezer dagen te horen krijgen (en er komen vast nog heel spectaculaire aan) van even grote waarde? En als we die vraag ontkennend beantwoorden – schiet Wikileaks dan niet zijn doel voorbij door zich kwetsbaar te maken voor verwijten van effectbejag en goedkope publiciteitsdrang?

Dat zou heel erg jammer zijn, want ik meen oprecht dat Wikileaks tot dusver een belangrijke maatschappelijke rol heeft vervuld met zijn onthullingen over de oorlogen in Irak en Afghanistan, over Icesave en andere schandalen. Ik verafschuw de campagne die nu onder leiding van de Amerikaanse overheid tegen Wikileaks wordt gevoerd. Maar ik ben bang dat de huidige publicatiegolf de vijanden eerder helpt dan schade toebrengt.

Formulieren en gegevensverwerking

Dit is het zevende deel van een serie over de bouw van een nieuwe website op basis van Zend Framework. Kijk in de zijbalk voor de linkjes naar de eerste delen.

Een van de meer gecompliceerde componenten van het Zend Framework is Zend_Form. Het duurt even voordat je doorhebt hoe de verschillende onderdelen van Zend_Form met elkaar samenwerken om het de developer uiteindelijk gemakkelijk te maken. Maar als je eenmaal die steile leercurve hebt doorlopen, zul  je merken dat je inspanningen niet voor niets zijn geweest.

Wat Zend_Form gecompliceerd maakt, is de veelheid van verschillende taken die eraan worden toegekend:

  • Het moet op eenduidige wijze formulieren weergeven in de pagina’s
  • Het moet gebruikersinput filteren en valideren
  • Het moet kunnen omgaan met de verschillende formulierelementen die in de verschillende HTML-specificaties zijn opgenomen.

Voor de weergave van formulieren worden decorators gebruikt; voor filtering en validatie filters en validators; en voor de verschillende elementen een deelcomponent die Zend_Form_Element wordt genoemd.

Zend_Form nader bekeken

Het belangrijkste dat je moet weten van Zend_Form is dat je deze component nooit rechtstreeks benadert. Je ontwerpt je eigen formulierklassen die een child vormen van Zend_Form. Binnen je formulierklasse hoef je geen aparte constructor te maken; sterker, het is aan te bevelen om dat niet te doen, omdat je dan een aantal standaardinstellingen van Zend_Form kunt overschrijven.

Zend_Form levert een hook, een lege methode die vanuit de constructor wordt aangeroepen, die je kunt gebruiken om je formulier te initialiseren. Die methode wordt, heel toepasselijk, ‘init’ genoemd. Je standaard formulier zal dus meestal zo’n opbouw kennen: Continue reading →

Geld verdienen met digitaal uitgeven

Update 25-11: Inmiddels hebben ook Peter Luit en De Nieuwe Reporter een verslag gepubliceerd over deze bijeenkomst.

Vanmiddag interessante sessie gehad bij Daily Digital Design (3D) over de stand van innovatie bij Nederlandse uitgevers. 3D is een samenwerkingsverband van een paar hogescholen en TNO en wordt financieel ondersteund door het Bedrijfsfonds voor de Pers. Opzienbarendste les, wat mij betreft: de consument is in toenemende mate bereid te betalen voor digitaal nieuws. Dat laatste blijkt uit recent beschikbaar gekomen onderzoek van PricewaterhouseCoopers dat inmiddels ook online staat.

22 Procent van de 7000 ondervraagde consumenten is bereid te betalen voor online nieuws. Dat is een enorme breuk met eerder onderzoek, vertelde Marieke van der Donk, een van de onderzoekers. ‘We waren gewend aan kleine percentages, niet aan deze getallen’, zegt ze.  Voorwaarde is wel dat ditzelfde nieuws niet elders gratis verkrijgbaar is. Uitgevers doen er dus verstandig aan zich te concentreren op het produceren van unieke content. Het ANP doorplaatsen kan iedereen, en daarvoor kun je geen geld vragen. Maar nieuws uit de regio bijvoorbeeld, of gespecialiseerd financieel nieuws, of berichten uit de sportwereld: dat zijn zaken die geld kunnen opleveren. Iets wat elders niet te vinden is.

Er ligt hier nog een kans voor de uitgevers: 14 procent van de consumenten is ook bereid te betalen voor gerelateerde producten die de uitgever bij deze artikelen gaat verkopen. Bij regionaal nieuws zouden dat bijvoorbeeld tickets voor regionale evenementen kunnen zijn.

Een ander opzienbarend getal: 61 procent van de nieuwsconsumenten heeft een voorkeur voor korte artikelen die per stuk afgerekend kunnen worden. Dat opent de poort naar strippenkaart-systemen.

PwC heeft ook gevraagd naar de reden waarom mensen bereid zijn te betalen voor online nieuws. Meer diepgang, was het voor mij onverwachte antwoord van 30 procent. Toegang tot extra diensten en producten, zei 20 procent. Contact met journalisten staat tamelijk onderaan het verlanglijstje: 11 procent stelt daarop prijs.

Meer dan de helft van de ondervraagde mensen zegt de printeditie niet te willen opzeggen als ze gaan betalen voor digitaal nieuws. Dat biedt perspectieven, zegt Van der Donk, voor gebundelde aanbiedingen: de krant op papier, inclusief alle dikke bijlagen, in het weekend bijvoorbeeld, en de rest van de week digitaal. Dat is natuurlijk een bundel die op kleine schaal al door Nederlandse uitgevers wordt aangeboden. Eigenlijk, stelt ze, zouden de uitgevers moeten streven naar eenzelfde soort omzetgroei als de traditionele telecombedrijven de afgelopen twintig jaar hebben gerealiseerd. Besteedde een consument twintig jaar geleden nog ongeveer 150 euro per jaar aan telecom, dat is nu 1500 euro; vooral door de bundeling van vaste telefonie met mobiele lijnen, internettoegang, tot digitale televisie aan toe.

Van der Donk onderscheidt vier kritische succesfactoren voor digitale verdienmodellen:

  • nieuwe technische functionaliteiten benutten
  • innovatieve definiëring van je producten en de juiste prijsstelling daarbij bedenken
  • het vergroten van je onderscheidend vermogen: doe wat anders dan je concurrent
  • zoek samenwerking met belangrijke strategische partners

Veel uitgevers proberen de laatste jaren hun omzet op peil te houden door abonnementsprijzen te verhogen. Teruglopende inkomsten uit advertenties en lagere oplages worden op die manier nog een beetje gecompenseerd. Maar hoe lang hou je dat vol, vraagt hoogleraar Piet Bakker zich af. In Denemarken, zegt hij, kost een abonnement tegenwoordig al 600 euro per jaar; tot op zekere hoogte is de prijs van een krantenabonnement inelastisch: een hogere prijs betekent niet een lagere afzet. Maar dat is natuurlijk geen oneindig proces.

En het grote bezwaar is dat een hogere prijs betekent dat de instapdrempel voor nieuwe abonnees steeds hoger wordt. En dat is wat de meeste uitgevers ook zien: het abonneeverlies komt niet in eerste instantie doordat er abonnees weglopen, maar veel meer doordat de instroom van onderop, jongeren en studenten, volledig tot stilstand is gekomen. Wat dus betekent dat uitgevers meer dan voorheen moeten innoveren en harder moeten werken aan nieuwe verdienmodellen.


Compliment voor DirectVPS

Mag ik een warm applaus voor Larry Kos, de man achter DirectVPS?

Bij hem host ik deze en een aantal andere sites op een zogeheten Virtual Private Server. En aangezien serverbeheer niet mijn sterkste kant is, kom ik soms wel eens in de problemen. Een enkele mail is genoeg: Larry lost het op. Dus: zoek je nog een provider, zoek niet langer.

De database in Zend Framework

Dit is het zesde deel van een serie over de bouw van een nieuwe website op basis van Zend Framework. Kijk in de zijbalk voor de linkjes naar de eerste delen.

De kern van de meeste applicaties wordt gevormd door de aanwezige data. Die kunnen op veel verschillende manieren worden opgeslagen, maar bij meer complexe toepassingen zal er vrijwel altijd sprake zijn van een database. ZF zou natuurlijk onvolledig zijn als er niet een uitgebreide serie componenten beschikbaar was om toegang te bieden tot de database, zijn tabellen en gegevens.

Twee klassen zijn met name van belang: Zend_Db_Table_Abstract, en Zend_Db_Table_Row_Abstract. De eerste biedt een aantal methoden om toegang te krijgen tot de rijen gegevens in een tabel; de tweede tot de eigenschappen (de kolommen) van een afzonderlijke rij.

Opbouw van de database

Voordat we ons gaan richten op de interactie tussen de elesio en de database, moeten we eerst de juiste tabellen inrichten. Dat doen we op basis van de beschrijving in hoofdstuk 2, ‘Uitwerking van het concept’. In Mysql Workbench, het freeware GUI programma van Mysql, heb ik dit schema gemaakt:

Database schema van Elesio

Klik op de afbeelding om haar in groter formaat te zien.

Centraal in het schema staan twee tabellen, products en articles.

  1. Products is de moeder van twee afgeleide tabellen, books en gadgets. Boeken en apparaten worden beschouwd als de twee concrete producttypes die besproken kunnen worden op onze website. Die delen een aantal eigenschappen die in de moedertabel worden opgeslagen: het ean (een uniek productnummer, vergelijkbaar met het vroegere ISBN; maar dan algemener), de prijs, de invoerdatum, een herzieningsdatum, en een gemiddelde waardering van de gebruiker. Books en gadgets voeren daar nog hun specifieke eigenschappen aan toe, zoals titel, auteur, producent enzovoorts. Via de index products_id wordt de relatie gelegd met products tabel. De relatie tussen books en gadgets enerzijds en products anderzijds is één op één.
  2. In articles wordt alle content opgeslagen. Over elk product kunnen meerdere artikelen worden geschreven. Die relatie wordt belichaamd door de vreemde sleutel products_id in articles. Bovendien kan een artikel alleen worden geschreven door een geregistreerde gebruiker. Deze bevindt zich in de users tabel, en komt terug in de article tabel door de vreemde sleutel users_id.
  3. Er zijn voor de users vier verschillende rollen gedefinieerd: unconfirmed, registered, writer, admin. Wie zich registreert, is in eerste instantie een nieuwe, unconfirmed gebruiker. Zodra hij op de link in een bevestigingsmail klikt, wordt hij registered. Daarna is het aan de admin om een registered user te promoveren tot writer of zelfs tot admin. We hebben nog niet de exacte verschillen tussen deze rollen gedefinieerd, maar we willen onze applicatie toekomstbestendig maken; daarom is het handig om onze database daarop nu al in te richten. Wachtwoorden in onze applicatie worden versleuteld opgeslagen (sha1). Continue reading →

Waar komt innovatie vandaan?

Ben met de laatste bladzijden bezig in Steven Johnson’s ‘Where good ideas come from’. Ik ben een fan van dit soort boeken; Clay Shirky (waar ik kort geleden al over schreef), Kevin Kelly, Charles Leadbeater, Chris Anderson – het zijn allemaal auteurs die publiceren over de manieren waarop nieuwe technologie in het algemeen en het internet in het bijzonder onze maatschappij beïnvloeden. Ik heb laatst een keer geblogd over het stapeltje boeken op mijn leeslijstje, en ik word geïnspireerd door de ideeën die ik erin tegenkom.

Johnson onderzoekt hoe innovatie tot stand komt, en in nog geen 250 pagina’s neemt hij de lezer mee van de oudheid tot nu, van de allerkleinste schaal (het afvuren van neuronen in ons brein) tot de schaal van steden, landen en continenten. Mocht je uit voorgaande zin de indruk krijgen dat het dus wel een oppervlakkig werkje zal zijn – dan moet ik je tegenspreken. Natuurlijk zal een neuroloog, een evolutionair bioloog of een stedelijk antropoloog weinig nieuws vinden in zijn vakgebied. Maar de kracht zit hem vooral de verbindingen die Johnson legt tussen deze verschillende disciplines.

Centraal in Johnsons these is de notie van ‘the adjacent possible’, het nabij gelegen mogelijke. Innovaties komen zelden tot stand, zegt-ie, met het soort van eureka-gevoel dat vaak geassocieerd wordt met grote uitvindingen. De analogie is die van het gebouw dat ontdekt moet worden; het openen van een deur leidt naar de volgende ruimte, maar niet naar een kamer op een andere verdieping of in een andere vleugel. Dat betekent dat de tijd rijp moet zijn voor een werkelijke vernieuwing; Charles Babbage vond ergens halverwege de 18e eeuw al het principe van de computer uit, maar hij was zijn tijd (te) ver vooruit.  Pas een eeuw later konden zijn ideeën uitgevoerd worden; er waren voldoende ’tussenliggende kamers’ ontdekt.

Johnson definieert een aantal omstandigheden waaronder de innovatieve capaciteit van elke organisatie vergroot kan worden.

  • er moet een ‘liquide netwerk’ zijn. In een gas bewegen moleculen volledig vrij, heerst de chaos van de willekeur, en vervliegen goede ideeën zo snel als ze ontstaan. In een vaste stof liggen de moleculen vast, maar is er geen ruimte voor het betreden van nieuwe paden. Pas in een vloeistof heb je de juiste balans tussen organisatie enerzijds en vrijheid anderzijds; er is voldoende interactie tussen de actoren (moleculen of mensen) om uitwisseling van ideeën te stimuleren, maar anderzijds niet zoveel dat het systeem aan overvloed ten onder gaat.
  • de ‘slow hunch’ moet gevoed worden. Een goed idee heeft vaak tijd, soms tientallen jaren, nodig om te rijpen. Dat rijpingsproces moet geholpen worden, door actief te blijven in je netwerk en door te zorgen dat je regelmatig met nieuwe ideeën in contact komt
  • help het toeval een handje. Serendipiteit, de kunst van de ontdekking van het ongezochte (je vindt wat je niet zoekt) is niet dood met de komst van het internet, integendeel; het aantal en de diversiteit van de informatiebronnen tot onze beschikking is met internet exponentieel toegenomen. Vaak kun je een slow hunch concreter maken door een toevallige ontdekking op een heel ander terrein
  • wees niet bang om fouten te maken. Innovatie is veel vaker een gevolg van mislukte pogingen dan uitgestippelde projectplannen. Maak ruimte voor fouten, en reken er anderen (en jezelf) niet meteen op af
  • exaptatie. Een term van evolutiebioloog Stephen Jay Gould, die ermee bedoelde dat veel organen en ledematen oorspronkelijk voor iets anders zijn ontwikkeld dan waarvoor ze uiteindelijk worden gebruikt. Voorbeeld: het verenpak van vogels beschermde ze in eerste instantie vooral tegen de kou. Het was een uitstekend isolatiepakket. Pas later bleek de isolatiewaarde van een laag veren impliceerde dat ze ook uitstekend geschikt waren om een gewicht door de lucht te laten zweven. Wees niet bang om bestaande producten te veranderen om ze geschikt te maken voor nieuwe toepassingen
  • platforms. Je hebt een geschikte, stimulerende omgeving nodig om tot innovatie te komen. Een organisatie die wil innoveren, moet ruimte creëren waar innovatie tot stand kan komen.

Johnsons boek zou eigenlijk gelezen moeten worden door elke CEO en manager die denkt dat je innovatie op afroep kunt bestellen, zegt Cory Doctorow. Klopt.

Ik moet nu beginnen aan het laatste hoofdstuk. De zin die ik zojuist heb gelezen, luidt: ‘you think you’re fighting the Cold War, and it turns out you’re actually helping people figure out where to have lunch’. Dit gaat over de uitvinding van GPS; maar is dit geen fantastische, zelfs opwekkende gedachte, die je weer vertrouwen kan geven in de toekomst van de mensheid?

Weg met de muziekindustrie, Brein en Buma-Stemra

Net een nieuwe column gepubliceerd op de opiniesite van de Volkskrant. Laat me daarin nog redelijk mild uit over het artikel van Wouter Keuning in de Volkskrant van vorige week zaterdag (helaas niet online) over de aanpak van de ‘piraterij’ door de muziekindustrie. Wat een slecht verhaal was dat! Zo goed als kritiekloos kwamen daarin de advocaten van Brein en Buma/Stemra aan het woord – en geen woord over de gedachte dat de muziekindustrie vooral zichzelf vertegenwoordigt, en niet de artiesten.

Enfin, hoop met de column nog iets recht te hebben gezet. Helaas geen ruimte in de papieren krant.

Wil ook de gelegenheid aangrijpen om nog een kleine opmerking toe te voegen: als we allemaal een paar centen extra betalen op onze maandelijkse rekening van de internet provider, in ruil waarvoor we vrijelijk kunnen beschikken over artistieke creaties, zou dit een enorme stimulans zijn voor maatschappelijke groei en innovatie. Denk aan alle mashups die er op Youtube staan van bekende videoclips en films, de fan-industrie rondom de Harry Potter boeken en de Star Wars films – het is niet allemaal even hoogstaand, maar mensen zijn aan het creëren, aan het fantaseren, aan het bedenken en aan het maken, in plaats van avond aan avond als een zombie voor de buis te hangen.

Dat is nou eens een maatschappelijke norm en waarde waarover het CDA zich druk zou moeten maken. Maar ik zal wel te veel verlangen….

P.S. Het vrijelijk kopiëren en mixen van dit stuk is toegestaan!

Controllers, Models en Views

Dit is het vijfde deel van een serie over de bouw van een nieuwe website op basis van Zend Framework. Kijk in de zijbalk voor de linkjes naar de eerste delen.

Zoals we al eerder hebben gezegd, vormen controllers de tussenlaag tussen het model (waar de logica van de applicatie wordt uitgevoerd) en de views (waar zich de presentatie naar de buitenwereld afspeelt). Er heerst de laatste jaren een consensus in kringen van software architecten dat het het best is om te streven naar skinny controllers and fat models: houd de controllers klein en overzichtelijk, en verplaats zoveel mogelijk code naar de models.

Een nieuwe pagina maken

We wijken even af van onze elesio-applicatie om met een simpel voorbeeld aan te tonen hoe we een nieuwe pagina maken in onze website. Open application/views/scripts/index/index.phtml en plaats onder je bestaande code een linkje:

[codesyntax lang=”html4strict” title=”application/views/scripts/index/index.phtml”]

<p><a href='/index/calculate'>Voer een berekening uit</a></p>

[/codesyntax]

Klik je daar nu op, dan zul je een foutmelding te zien krijgen. Dat gaan we snel verhelpen. Open een command-prompt, navigeer naar je projectmap, en geef dit commando op:

[codesyntax lang=”bash” title=”Command Line”]

php bin/zf.php create action calculate

[/codesyntax]

Als het goed is, zul je de boodschap terugkrijgen dat er code is toegevoegd aan je indexcontroller, en dat er een view script is aangemaakt. Open nu /application/controllers/IndexController.php: daar zie je dat de methode CalculateAction is toegevoegd aan de klasse. En in de map /application/views/scripts/index is een nieuw bestand aangemaakt: calculate.phtml.

Continue reading →

Test met contribute

Ik ben vandaag tot de ontdekking gekomen waar Adobe Contribute eigenlijk voor dient. Niet handig dat ik dit nu zit te doen; moet eigenlijk presentatie User Generated Content voor morgen voorbereiden; maar het bloed kruipt waar het niet gaan kan.

OK, het idee is dus dat ik vanaf mijn desktop een nieuwe entry op mijn blog kan aanmaken. Ik zie nog niet direct het voordeel daarvan; mogelijk zit ‘m dat in offline kunnen werken, maar dat komt eigenlijk nooit voor. De wordpress-admin interface is naar mijn al bijna een desktop-applicatie, zeker voor wat betreft de mogelijkheden en responsiviteit.

Update: het werkt, het wordt gepost, maar de tijd (publicatietijdstip) klopt niet, en de tags worden niet doorgeplaatst. Leuk experiment, maar ik denk dat het hierbij blijft.