Free Software, Free Society!
Ideeën uit de FSFE-gemeenschap

Tuesday, 08 December 2020

Nederlandse Public Money? Public Code! video uitgebracht!

In mijn vorige blogpost schreef ik over hoe we een Nederlandse videovertaling van de Public Money? Public Code! campagnevideo maakten. Nu kan je deze zelf bekijken, want de video is gepubliceerd! Op 25 november hielden we onze Nederlandse online get-together waar we een voorvertoning hebben gehouden. Bij deze bijeenkomst haakte Matthias ook aan om ons te feliciteren met het resultaat en ons te bedanken voor onze inzet. Dit was een welkome verassing. Onze volgende online get-together wordt gehouden op 23 December, voel je vrij om deel te nemen om bij te praten.

Monday, 02 November 2020

Opnemen van een Public Money? Public Code! videovertaling

Een Nederlandse vertaling van de Public Money? Public Code! campagnevideo is in de maak en wordt bijna uitgebracht. De video is initieel uitgebracht in het Engels en is al naar vele talen vertaald: Duits, Frans, Italiaans, Pools en Russisch. En er is nog een groter aantal ondertitels beschikbaar. Het krijgen van een voice-over-vertaling voor deze video was een van de jaarlijkse doelen voor de Nederlands local group, om ons te helpen bij belangenbehartiging. De productie van een voice-over-vertaling kan meer moeite kosten dan een tekstuele vertaling en daarom wil ik graag delen hoe we dit hebben gedaan. En door dit te tonen aan anderen komen er hopelijk meer audiovertalingen in de toekomst.

Kwaliteit krijgen

Wat maakt een goede voice-over-vertaling? Het zou duidelijk gesproken moeten zijn, comfortabel moeten zijn om naar te luisteren, een correcte vertaling zijn, een timing hebben die aansluit bij de geluidseffecten en het beeldmateriaal, heeft een variërende toon die past bij het bericht, en een ritme hanteren om de aandacht vast te houden. Zoals je kan zien zijn er verschillende factoren die gebalanceerd moeten worden, wat een iteratief proces vereist. Een goede vertaling moet worden aangepast als het niet werkt voor de vereiste timing, en de beste manier om de timing te controleren is door een complete video met geluidseffecten te renderren. En daarom moet men in staat zijn om in het moment aanpassingen te maken. In het bijzonder omdat het organiseren van een stemacteur en een opnameopzet moelijk en duur kan zijn. Je moet in staat zijn het in ongeveer 5 tot 10 takes op te nemen. Dus je hebt behoefte aan een goede voorbereiding en de flexibiliteit om aanpassingen te maken.

Procesoverzicht

Laat me de aanpak opsommen die we in Nederland hebben toegepast:

  1. Vertaling ondertitels: Vertalen van de Engelse ondertitels naar het Nederlands. Werken met deze .srt ondertitelbestanden heeft het voordeel dat het de timing bevat. Dit voordeel zal straks aan bod komen.
  2. Aanpassen van de vertalingen voor een voice-over: Uitspreken van de vertaalde ondertitels op de video om gevoel te krijgen voor de vertaling. Hierbij in het bijzonder letten op de lange zinnen. De zinnen waar je moet versnellen. Die zouden moeten worden ingekort om stiltes en een langzamer tempo mogelijk te maken, voor een duidelijke articulatie.
  3. Opnemen van een demo ter validatie: Net als een zanger hebben we een ‘demo’ opgenomen. We hebben de aangepaste vertaling van het ondertitelbestand in een ondertitelbewerker geladen om een consistente timing te hebben (hierover later meer) en hebben een stemopname gemaakt. Geen bijzondere apparatuur, gewoon de microfoon van een headset en Audacity opnamesoftware. Er waren nog steeds enkele versprekingen en verkeerde timing, maar dit was goed genoeg. De demo stelde ons in staat om de vertaling te valideren in het team, om er zeker van te zijn dat we klaar waren voor de opname. We hebben deze ook laten zien aan de stemacteur zodat die wist wat te verwachten.
  4. Organiseren van de opname: We hebben een bevriend stel benaderd voor de opname. Zij heeft een goede stem, hij heeft de technische kennis en apparatuur voor een opname. We hadden een backup-plan zoals het huren van apparatuur, benaderen van een lokaal radiostation of door een professional het voor ons te laten doen.
  5. De opname: Dit was het meest kritieke, maar ook meest leuke deel van het proces. Zien dat de voorbereiding zich terugbetaalt en het krijgen van een kwalitatieve opname. Meer over de technische kant van de opname verderop in dit artikel.
  6. Mixen: Omdat de twee typen microfoons gebruikten voor een stereo-effect moesten deze worden gebalanceerd en gemixt om een goed geluid te krijgen. Dit was voornamelijk gedaan gedurende de opname. Ook zijn een gate en compressor toegepast om de ruis gedurende stiltes te reduceren en een constant volume te houden.
  7. Bewerken: Ondanks het praktisch hebben van een auto-cue van de ondertiteling duurde het nog een paar uur nabewerking om de timing goed te krijgen. Ik gebruikte de Engelse opname, het geluidseffecten-spoor en de de video om de timing te controleren. Voornamelijk moesten zinnen een of twee seconden worden verplaatst in hun timing. Maar sommige delen vereisten het opbreken van zinnen om meer ruimte te laten tussen woorden om de snelheid van het ritme te reduceren. Hoewel het grootste deel van de opname voortkwam uit de laatste take, zijn sommige delen ‘gerepareerd’ met delen van eedere takes.
  8. Mastering: De PMPC video heeft een sterk spoor met geluidseffecten. Dit vereist dat de stem daar doorheen weet te breken zodat het publiek het goed kan horen. Ik moest meer compressie op de stem toepassen om het volume te vergroten, en had EQ nodig om de vrouwelijke stem te versterken op de aanbevelen punten van 400Hz en 4kHz. Nu kunnen beide sporen worden gecombineerd in een enkele om toe te voegen aan de video.
  9. Uitbrengen: Toevoegen van de audio aan de video om het daadwerkelijk te kunnen publiceren.

In dit geval was ik betrokken bij het opnemen, mixen, bewreken en masteren. Een professional zou waarschijnlijk ook het mixen doen naast de opname, maar dat weet ik niet voor het bewerken en masteren. Kijk daar alstublieft naar als je dit wilt doen.

Autocue

Al vroeg realiseerde ik me dat het lezen van vertalingen van papier niet goed werkte. De timing moet goed zijn, ondanks dat er nog aanpassingen gedaan kunnen worden bij de nabewerking. Een getimede tekst helpt je om het juiste tempo aan te houden en vergemakkelijkt de nabewerking.

Eerst probeerde ik te lezen van de ondertitels. Hoewel dit de timing wordt je elke keer verrast door de inhoud die op het scherm verschijnt waarmee de zin moet opbouwen. Er is geen manier om de volgende regel van de vertalingen te zien, dus je moet pauzeren tot de volgende regel verschijnt. Dit resulteert in een stop-and-go opname met een slecht ritme.

Als een alternatief heb ik gekeken naar autocue software en apps, maar kon niets vinden dat aansloot bij mijn behoefte. De meeste waren gemaakt voor voordrachten waar er geen eis is voor de timing. Het doet dan een vast aantal woorden per minuut. Maar deze use-case vereist een exacte timing.

Toen vond ik ondertitelbewerkers. De meesten hebben een voorbeeld waar je een overzicht van de tekst kan zien naast de video. Dit werkt behoorlijk goed. De beste die ik vond is Subtitle Composer van de KDE verzameling van applicaties. Subtitle Composer heeft één voorname mogelijkheid voor deze toepassing: een automatisch scrollende golfvorm.

Je laadt de de Subtitle Composer met de vertaling en het PMPC videobestand en drukt simpelweg op de afspeelknop. De ondertitels zullen verschijnen op de video maar ook aan de zijkant bij de scrollende golfvorm. De scrollende golfvorm heeft het voordeel dat het een lijn toont die de huidige tijd aangeeft, die zich voortbeweegt door de afgekaderde ondertitels. Dit helpt om je een gevoel te geven of je voor- of juist achterloopt, en hoeveel tijd er is gereserveerd voor een zin. Het werkt vergelijkbaar met de gebruikersinterface van spelen zoals Dance Dance Revolution of Guitar Hero, die ook het probleem van timing op deze manier oplossen.

Nu ik erover nadenken had ik ook naar karaoke software kunnen kijken omdat ook daar de timing cruciaal is. Ik ben er niet zeker van of dat een vergelijkbare optie biedt om vooruit te kunnen kijken naar aanstaande regels van tekst

Ik heb twee aanpassingen gemaakt aan de instellingen van Subtitle Composer om de gebruikservaring van de automatisch scrollende golfvorm te maken:

  • Auto Scroll Padding: ingesteld op het maximum om te voorkomen dat de golfvorm per pagina verspringt, waardoor de stemacrtice haar positie verlies. Met de maximale afstand scrollt het continu.
  • Subtitle text font size: De normale tekstgrootte van het lettertype is behoorlijk klein. Ik heb het vergroot om de leesbaarheid te vergroten. De golfvorm veranderd van gedaante naar een horizontale golfvorm als het paneel verder wordt uitgerekt dan ongeveer de helft van de schermgrootte. In deze horizontale vorm wordt het onbruikbaar voor dit doel, dus de golvormgrootte is beperkt tot ongeveer de helft van het scherm. Ik vond dat een grootte van 14pt het grootst was dat ik kon gaan voordat woorden naast het golfvormscherm belandden.

Subtitle Composer is ontworpen om ondertitels te bewerken. Gebruik deze mogelijkheid als je vindt dat de huidige vertaling niet werkt ovor je doel. Voor de Nederlandse vertaling hadden we nog een spelfout in de de vertaling, hadden we enkele komma’s die verwarrend waren voor de stemactrice en ze gaf had de voorkom om de volgorde van enkele zinnen te veranderen. We hebben deze punten direct aangepast zodra we ze vonden, zodat dit goed ging in de volgende take. Dit maakte het mogelijk om snel te itereren. Vanwege deze aanpassingen is de laatste opname als basis gebruikt, omdat het de laatste versie van de tekst had.

Opname

Geluidsisolatie

Zoals een ingenieur je zal vertellen: troep in, troep uit. Als je begint met lage kwaliteit, verwacht dan niet om te eindigen met iets veel beters. Laten we beginnen met acoustiek. We hebben het opgenomen in de studeerkamer van mijn vrienden. De ruimte is doosvormig met twee bureaus en een paar kasten. Het heeft een laminaten vloer en een groot raam aan de zijkant. Dus behoorlijk wat oppervlakken om geluid te reflecteren en weinig om het te verspreiden of te dempen. We hebben wat geluidsisolatie toegepast:

  • Een deken gehangen op de muur achter de stemactrice
  • Gordijnen gesloten voor het raam
  • Panelen van geluiddempend schuim gebruikt om een doos te bouwen om de microfoon met een opening naar de stemactrice

We hebbe ndit gedaan met spullen die al ter beschikking waren in het huis en dit maakte een enorm verschil voor de geluidskwaliteit. Het reduceerde de echo in de kamer en blokkeerde de ruis van ons bewegend op de stoelen en de draaiende computerventilatoren.

Microfonen

Misschien hebben we dit deel iets over-engineered. We hebben een Sure SM58 als de voornaamste stemmicrofoon gebruikt, gecombineerd met een gepaarde set  RØDE M5 microfoons om het stereo-effect van bepaalde klanken op te pakken. Dit ging allemaal in een M-Audio interface verbonden met de opnamecomputer. We gebruiken de niet-vrije Reaper software op Windows, omdat mijn vriend al gewend was dit te gebruiken en alles al had ingesteld, klaar om te gebruiken. Ik denk dat we net zo goed Ardour hadden kunnen gebruiken, dat ik ook heb gebruikt voor het nabewerken en masteren. Misschien iets voor een toekomstige opname. (Ik ontving de WAV bestanden van de opnames en de afgemixte opnames, dus ik kan het altijd opnieuw creëren als ik zou moeten).

De Sure SM58 heeft een ingebouwd pop-filter om de hoeveelheid lucht te beperken dat over de microfoon wordt geblazen bij klanken als P, B, S, T en F worden gesproken. Deze geblazen lucht resulteert een hard gerommel dat moeilijk te verwijderen is in de nabewerking. Het woord ‘PoPriëTaire SoFTware’ vraagt echt om een pop-filter. Achteraf gezien hadden we beter een extra pop-filter kunnen gebruiken om op de microfoon te monteren, om de pops nog verder te reduceren. Toch vind ik het eindresultaat prima bruikbaar, maar ik zou je aanbevelen om hiervoor te zorgen als je zelf je apparatuur regelt.

We hebben opgenomen in 48.000 Hz net als de audio in de video en in 24bit om voldoende detail te behouden.

Notities bijhouden

Een andere tip is om notities bij te houden gedurende het proces. Als je hoort dat een woord verkeerd wordt uitgesproken, dat er een onbedoeld geluid te horen is, of als er iets mis is met de intonatie, schrijf het op. Ik heb de tekst uitgeprint voor de opname en heb het bij de hand gehouden tijdens de opname, nabewerking en mastering. Zoals je kunt zien heb ik er behoorlijk gebruik van gemaakt.

Terugluisteren

Gedurende de opname hadden we de video en het geluidseffectenspoor klaar om af te spelen, om de timing te controleren. Toegegeven, veel kan worden gedaan ‘in post’, maar het is prettig om er zeker van te zijn dat je alles hebt wat je nodig hebt, voordat je de studio opbreekt. Misschien was er de mogelijkheid om een video te synchroniseren met met het afspelen van de opname, maar we hebben gewoonweg de afspeelknoppen van de audio en video tegelijkertijd ingedrukt. Ik houd me vast aan de gedachte dat het tussentijds terugluisteren de stamactrice heeft geholpen om de betekening en de timing van de woorden beter te begrijpen, wat leidde tot een beter resultaat.

Nabewerken en mastering

Ik gebruikte Audacity voor het nabewerken van opnames. maar in dit geval moest ik werken met meerdere sporen en moest ik wat effecten toepassen. Ik doe dit bij voorkeur in een non-destructieve manier zodat ik meer flexibiliteit heb bij het bewerken. Zover ik weet kan Audacity dit niet doen, dus dat was een mooie kans voor mij om bekend te raken met Ardour. Ik had enkele problemen in het begin om Ardour uit te voeren, omdat ik het niet de juiste rechten had om realtime prioriteiten voor JACK in te stellen. Op Debian kunnen deze rechten worden gegeven tijdens installatie of achteraf, zoals beschreven in de Debian JACK documentation. Ik was verrast dat het beter presteerde dan Audacity op mijn computer hoewel het meer mogelijkheden had.

Ik heb vier sporen gebruikt voor het nabewerken van de opname:

  1. De laatste take, gebruikt als de basis
  2. Een spoor met delen van andere takes om bepaalde delen te ‘repareren’
  3. Het Engelse audiospoor van de video, inclusief geluidseffecten, om de timing van de tekst te vergelijken
  4. De geluidseffecten om de timing te controleren en om tot een enkel bestand te kunnen masteren

De golfvorm van het Engelse spoor hielp me te bepalen waar bepaalde delen van de audio moesten beginnen.

Zoals je kunt zien zijn sommige zinnen echt in delen geknipt om de duur van de stiltes te vergroten. Dit zijn de kleine details die het prettiger maken om naar te luisteren.

Naast het corrigeren van de timing en het repareren van de tekst, heb ik ook wat ruis verwijderd zoals diep inademen op het schrapen van de keel tussen zinnen.

Let op de eindmarkering in Ardour, omdat dit de lengte van de geëxporteerde audio zal bepalen. Ik heb dit gezet op de lengte van het geluidseffectenspoor.

Voor de mastering heb ik een equalizer toegevoegd om de 400Hz en 4kHz te versterken en de VocalLeveller modus van de compressor om het volume te vergroten. het geluidseffectenspoor is gemastered op nul dB geluidsdruk, dat wordt bereikt bij het typegeluid aan het einde van de video. De Engelse stem lijkt ook gemastered op nul dB, dus dat heb ik ook gedaan.

Uitbrengen

Het masteren resulteerde in een enkel .wav bestand dat aan de video moet worden toegevoegd. Het had al de juiste lengte omdat de eindmarkering op de lengte van het geluidseffectenspoor gezet was.

Ik heb initieel het geluid aan de video toegevoegd met OpenShot. Hoewel dit werkte, resulteerde het in een stotterende video die niet prettig was om te bekijken. Misschien had dit iets te doen met mijn proces of setup. Hoe dan ook, ik heb uiteindelijk een andere oplossing gekozen: gebruik makend van de kracht van ffmpeg om de audio te vervangen maar de video te behouden. Dit was ook een stuk sneller. Ik heb de instructies gebruikt van deze behulpzame blogpost. Dit resulteerde in de volgende opdracht die gebruik maakt van ‘pmpc_desktop.mp4’ voor video ‘pmpc-nl-mastered.wav’ voor audio, en resulteert in ‘pmpc_desktop_nl.mp4’:

ffmpeg -i pmpc_desktop.mp4 -i pmpc-nl-mastered.wav -map 0:0 -map 1:0 -shortest -c:v copy -c:a aac -b:a 256k pmpc_desktop_nl.mp4

Wetende dat alle gemasterde sporen van de video worden bewaard bij de FSFE, heeft het core team waarschijnlijk ook een methode om de audio toe te voegen.

Laatste woorden

Ik wil mijn vrienden bedanken voor hun hulp. De video staat op het punt om uitgebracht te worden. Nog een paar controles en dan zouden we het moeten kunnen publiceren.

Ik heb genoten van het maken van de video en van het eindresultaat. Het kostte meer tijd dan ik oospronkelijk had gedacht, voornamelijk omdat ik ook moest bedenken hoe ik dit aan moet pakken. Dat is waarom ik deze blogpost heb geschreven, om je aan te moedigen het ook te doen en je tijd te besparen door een methodiek voor te stellen. In het proces heb ik wat nieuwe vaardigheden geleerd en heb ik wat vrije software gebruikt die nieuw voor me was.

We zullen doorgaan met de Public Money? Public Code! campagne in Nederland en de video zal ons helpen. En als een herinnering, als je dat nog niet hebt gedaan, taken alstublieft de open brief als je het eens bent met de inhoud.

Saturday, 15 February 2020

I Love Free Software mobiel: het Replicant besturingssysteem in de praktijk

Op I Love Free Software Day 2020 zou ik graag aandacht willen besteden aan het Replicant besturingssysteem en haar willen bedanken. Replicant wordt actief ontwikkeld en stelt gebruikers in staat om mobiel Vrije Software te gebruiken. Als gebruiker met een niet-technische achtergrond was het voor mij een eer en een privilege om deel te nemen...

The post I Love Free Software mobiel: het Replicant besturingssysteem in de praktijk first appeared on André Ockers over Vrije Software.

Sunday, 27 October 2019

Mijn deelname aan de FSFE 2019 GA-ontmoeting in Essen

Uitzicht op de Ruhr bij de ontmoetingsplaats. Dankbaar om mij onder de gasten te bevinden die de FSFE GA (“Algemene Vergadering”) had uitgenodigd om deel te nemen aan hun ontmoeting, ging ik op 11 oktober 2019 naar Linuxhotel “Villa Vogelsang” in Essen. Helaas was het niet mogelijk om op de website van Deutsche Bahn een...

The post Mijn deelname aan de FSFE 2019 GA-ontmoeting in Essen first appeared on André Ockers over Vrije Software.

Monday, 26 February 2018

Voorbeeldvragen voor ‘Vraag het uw kandidaten’, Nederlandse gemeenteraadsverkiezingen 2018

Op 21 maart aanstaande vinden er in Nederland weer gemeenteraadsverkiezingen plaats. Het uitdagen van lokale  politici over hun positie over Vrije Software is een erg belangrijke activiteit. Vooral voorafgaand aan verkiezingen kan het stellen van vragen over software aan kandidaten en partijen een grote impact hebben. Het is dus tijd voor de FSFE-campagne ‘Vraag het...

The post Voorbeeldvragen voor ‘Vraag het uw kandidaten’, Nederlandse gemeenteraadsverkiezingen 2018 first appeared on André Ockers over Vrije Software.

Saturday, 28 October 2017

Nederlands regeerakkoord: waar is het vertrouwen in Vrije Software?

De nieuwe Nederlandse regering, bestaande uit liberaal-conservatieven (VVD), christen-democraten (CDA), democraten (D66) en orthodoxe protestanten (CU), publiceerde het nieuwe regeerakkoord: “Vertrouwen in de toekomst”. Ik zocht in alle onderdelen van dit document op het woord “software”. Volgens de nieuwe regering is software een zaak voor het ministerie van justitie. Software wordt niet genoemd in welke...

The post Nederlands regeerakkoord: waar is het vertrouwen in Vrije Software? first appeared on André Ockers over Vrije Software.

Tuesday, 14 February 2017

#ILoveFS 2017: Vrije Software Lied

Ter gelegenheid van #ILoveFS 2017 een (niet officiële!) vertaling van The Free Software Song. Het is geen letterlijke vertaling, maar het aantal lettergrepen per regel komt overeen met het origineel. Vrije Software Lied Doe maar mee en deel de software; Maak je vrij, hackers, maak je vrij. Doe maar mee en deel de software; Maak...

The post #ILoveFS 2017: Vrije Software Lied first appeared on André Ockers over Vrije Software.

Thursday, 20 October 2016

Mijn deelname aan de eerste FSFE-Top en de viering van de 15de verjaardag

Van 2 tot 4 september ben ik in het vrije Berlijn geweest om deel te nemen aan de eerste FSFE-Top en de 15de verjaardagsviering. Dankzij de FSFE ontmoette ik interessante mensen, ontdekte ik verrassende technologieën en hoorde ik inspirerende voordrachten van mensen uit de hele samenleving. Het was een eer om te spreken over vertalen...

The post Mijn deelname aan de eerste FSFE-Top en de viering van de 15de verjaardag first appeared on André Ockers over Vrije Software.

Monday, 15 August 2016

Vrije Software PDF-campagne: Het is pas voorbij als het voorbij is

Nadat FSFE besloot om de PDF-campagne officieel te beëindigen vroeg de situatie in Nederland nog steeds om actie. Na het Vrije Software PDF-lezers-verhaal in het Nederlands te hebben vertaald, trof ik onlangs een advertentie aan voor PDF-software onder gedeponeerd handelsmerk op Digid.nl. Dit is een website van de Nederlandse overheid, waarvan de technologie wordt gebruikt...

The post Vrije Software PDF-campagne: Het is pas voorbij als het voorbij is first appeared on André Ockers over Vrije Software.

Thursday, 31 December 2015

2015 – Terugblik

Hoogtepunten: FSF30 satellietfeest in Berlijn Migratie naar Trisquel Thinkpad T60p en T500 Tijdens het hele jaar: vertalen van FSFE nieuwsbrieven, nieuws, evenementen en andere PR in het Nederlands Terugblik Januari Bekeek 31C3 over SS7, leerde dat mijn mobiele telefoon niet veilig gemaakt kan worden. Bestelde een VOIP-lijn om de mobiele telefoon te vervangen. Februari Beëindigde...

The post 2015 – Terugblik first appeared on André Ockers over Vrije Software.

Saturday, 26 September 2015

Waarom we een Nederlands overheidsagentschap ervan overtuigden om een open documentformaat te gebruiken

Wanneer het gaat om het gebruik van open documentformaten binnen de Nederlandse overheid is er geen wet. Er is de “pas toe of leg uit”-regel die onder andere betekent dat een overheid open standaarden moet gebruiken tenzij zij specifiek uitlegt waarom zij dat niet kan. Omdat dit een tandeloze wet is kan je alleen maar...

The post Waarom we een Nederlands overheidsagentschap ervan overtuigden om een open documentformaat te gebruiken first appeared on André Ockers over Vrije Software.

Friday, 29 May 2015

Hoe ik aan een Thinkpad T60p coreboot GNU Linux-libre Trisquel laptop kwam

  Onlangs ging er iets mis met mijn laptop en was ik meerdere dagen niet in staat om online te gaan. Er was hiervoor geen snelle oplossing. Dit betekende dat mijn behoeften veranderden en ik besloot om voor een tweede laptop te gaan zodat ik er een als back-up achter de hand kon houden. Als...

The post Hoe ik aan een Thinkpad T60p coreboot GNU Linux-libre Trisquel laptop kwam first appeared on André Ockers over Vrije Software.

Monday, 26 January 2015

FSFE Nederland in 2014

Nu 2015 in volle gang is, is hier een terugblik op wat er in Nederland gebeurd is in 2014; en een vooruitblik op wat er gaat komen in 2015.

fellows

Veranderingen in 2014

Regelmatige bijeenkomsten

Doordat er een aantal fellows in (de buurt van) Nijmegen wonen, hebben we nu regelmatige bijeenkomsten bij Linux Nijmegen.

Nederlands Team

We hebben nu een Nederlands Team! Bestaande uit André, Jeroen, Kevin, Maurice, Nico, Roel, Willem, en mijzelf. We zijn te bereiken via netherlands@fsfeurope.org.

Nederlandse vertalingen

Dankzij André & Nico gaat het hard met de Nederlandse vertalingen en het proeflezen. Bedankt!

Privacy Café

Ik ben nu “stamgast” bij het Privacy Café van Bits of Freedom (waar ik bezoekers ook probeer te vertellen over het belang van Vrije Software en FSFE folders uitdeel).


Events in 2014

CryptoParty

We begonnen het jaar met een CryptoParty bij Linux Nijmegen op 14 januari.

Düsseldorf

Maurice en ik waren in 2014 een aantal keer op bezoek bij onze naburige fellowshipgroep in Düsseldorf.

FOSDEM

Er was een Benelux Fellowshipmeeting bij FOSDEM 2014.

EPFSUG

Ik was bij EPFSUG‘s “Trust your friends” event in het Europees Parlement, met onder andere de officiële lancering van DebianParl.

Free Software Pact

We hebben Nederlandse kandidaten in de Europese verkiezingen gevraagd het Free Software Pact te ondertekenen; een aantal deden dat en sommigen zijn zelfs gekozen!

Het belang van Vrije Software

I schreef over Het belang van Vrije Software.

Privacy Café Utrecht

Ik hield een lightning talk over het belang van Vrije Software bij een Privacy Café in Utrecht.

Fellowshipmeeting in Utrecht

Er was een Nederlandse Fellowshipmeeting in Utrecht op 24 mei bij de tweemaandelijkse bijeenkomst van de NLLGG.

Germanophone Team Meeting

Maurice en ik waren bij FSFE’s Germanophone Team Meeting 2014. I hield een workshop over Privacy en Vrije Software.

T-DOSE

Maurice, Kevin en ik spraken op T-DOSE. We waren er met heel wat fellows, en natuurlijk met de FSFE stand.

OpenRheinRuhr

André, Maurice, Willem en ik bezochten onze buren bij OpenRheinRuhr. Ik heb zelfs nog wat T-shirts verkocht bij de FSFE stand.

Fondsenwerving

We zijn begonnen contact op te nemen met Nederlandse bedrijven en organisaties om geld op te halen voor het werk van de FSFE in 2015.

31C3

Maurice en ik waren op het 31ste Chaos Communication Congress en bezochten ook de FSFE assembly.


2015

Privacy Café Nijmegen

I heb het eerste Privacy Café in Nijmegen georganiseerd.

Fellowshipverkiezing

Nicolas Dietrich, Max Mehl en ik zijn kandidaten in de Fellowshipverkiezing 2015.

FOSDEM

Tot ziens op FOSDEM 2015! Ik zal vermoedelijk regelmatig achter of bij de FSFE stand te vinden zijn. Er komt ook weer een Benelux Fellowshipmeeting.

… en meer

We hebben de ambitie om nog meer te doen in 2015 (nu we een groter Nederlands Team hebben) en we zijn nog op zoek naar ideeën (en we kunnen jouw hulp gebruiken).

Als je ideeën of suggesties hebt voor ons werk in 2015, ons een vraag wil stellen, of als je gewoon hallo wilt zeggen, kun je contact met ons opnemen via netherlands@fsfeurope.org of via de (publieke) Benelux mailing list (waar ook discussies en aankondigen te vinden zijn).


Dat was het voor nu. Ik ben enthousiast om nog meer te doen in 2015. Bedankt allemaal!

– Felix

Sunday, 25 January 2015

Privacy Café Nijmegen

Ondanks de sneeuw was het eerste Privacy Café in Nijmegen een succes!

Met (maar) vier vrijwilligers (van Bits of Freedom en de Free Software Foundation Europe) hebben we zo’n 60 tot 80 mensen kunnen helpen hun privacy beter te beschermen.

Een paar mensen van Linux Nijmegen kwamen ook nog even langs.

De menukaart staat hier (pdf) en de presentatie hier.

Alle vrijwilligers en bezoekers bedankt! Tot de volgende keer.

– Felix

Sunday, 09 November 2014

T-DOSE

T-DOSE 2014 is alweer voorbij. We waren er met heel wat fellows, en natuurlijk met de FSFE stand.

fellows

Zaterdag sprak ik over het “Internet of Things” en Kevin Keijzer over Discriminatie van vrije software(gebruikers) in het onderwijs; Maurice sprak zondag over “Digital Sovereignty For Europe” (youtube).

Ook hielp ik als vrijwilliger bij het Privacy Café.

– Felix

Sunday, 18 May 2014

Privacy Café in Utrecht

Het Privacy Café in Utrecht was aflopen zaterdag een groot succes. Ik was erbij als vrijwilliger en hield ook nog een lightning talk over het belang van Vrije Software (voor privacy). De FSFE folders die ik had meegenomen waren na afloop op!

– Felix

Wednesday, 07 May 2014

Het belang van Vrije Software

Computers zijn niet meer weg te denken uit ons dagelijks leven, dat zich in steeds grotere mate online afspeelt. Die computers, smartphones en andere apparaten worden bestuurd door software. We moeten onszelf afvragen: “wie heeft de controle over die software?” Want als wij niet de controle hebben over de software die we gebruiken, heeft het de controle over ons. En diegene die de controle heeft over de software, heeft dus ook de controle over ons.

Vrije Software verleent u (en anderen) deze vier essentiële vrijheden:

  • vrij te gebruiken, voor elk doel
  • te bestuderen en aan te passen aan uw behoeftes
  • te delen, zodat u anderen kunt helpen
  • verbeteringen te delen, zodat iedereen er voordeel van heeft

Het:

  • Zorgt voor fundamentele digitale vrijheden in het digitale tijdperk.
  • Helpt de “digitale kloof” te overbruggen (door beschikbaar te zijn voor iedereen).
  • Is niet afhankelijk is van één partij; in plaats daarvan legt het de controle in handen van zijn gebruikers.
  • Stelt ons (en anderen) in staat te verifiëren dat het doet wat wij willen en geen kwaadaardige functies of verborgen gebreken bevat (wat betekent dat we niet bang hoeven te zijn dat onze computers, televisies en andere apparaten ons bespioneren).
  • Is te vertrouwen (in tegenstelling tot software waarvan niemand mag weten hoe het werkt).
  • Laat ons onze bestanden jaren later nog steeds openen, dankzij Open Standaarden (zodat we niet steeds nieuwe versies van software hoeven te kopen wegens incompatibiliteit met oudere versies of geplande veroudering).

En:

  • Is een publiek goed waar iedereen (inclusief individuen, bedrijven, NGO’s en overheden) aan kan bijdragen en van kan profiteren.
  • Bevordert een cultuur van het maken van nieuwe technologieën in plaats van ze alleen te gebruiken.
  • Respecteert de vrijheid van gebruikers en stimuleert solidariteit en samenwerking in digitale gemeenschappen.
  • Is een generatieve technologiedie:
    • De verspreiding van kennis bevordert.
    • Het MKB, non-profitorganisaties, studenten en individuen in staat stelt om nieuwe en verbeterde technologieën te creëren.
    • Economische groei en wetenschappelijke en technologische vooruitgang stimuleert.
  • Bevordert een eerlijk speelveld in een onafhankelijke, op diensten georiënteerde economie.
  • Is van strategisch belang als een manier om soevereiniteit te garanderen, openbare uitgaven te beheersen, en duurzame ontwikkeling te bereiken.

Vrije Software heeft miljoenen gebruikers. De infrastructuur van het internet is er op gebaseerd, net als de servers van grote en kleine bedrijven. Zonder Vrije Software zou het internet zoals we het nu kennen niet bestaan. Voorbeelden van veelgebruikte Vrije Software zijn: GNU/Linux, Firefox, LibreOffice en VLC. En er zijn er veel meer.

Het gebruik van (uitsluitend) Vrije Software geeft u de volledige controle en is de enige manier om privacy, veiligheid en autonomie te garanderen.

Het belang van Vrije Software is niet beperkt tot persoonlijke computers. We moeten ook de software die (publieke) diensten, (vitale) infrastructuur, stemmachines, de computers van volksvertegenwoordigers, etc. bestuurt kunnen vertrouwen.

Wegens het belang van Vrije Software:

  • Moeten openbare diensten beschikbaar zijn voor alle burgers, inclusief de gebruikers van Vrije Software.
  • Zou software die ontwikkeld is met gemeenschapsgeld of gebruikt wordt door openbare diensten Vrije Software moeten zijn.
  • Moeten we ernaar streven om bedreigingen voor onze digitale vrijheid te elimineren, zoals:
    • Koppelverkoop, leveranciersafhankelijkheid en gesloten formaten.
    • Softwarepatenten (die innovatie en eerlijke concurrentie belemmeren).
    • Digital Restrictions Management (dat computers en apparaten tegen hun eigenaren gebruikt).
    • “Trusted Computing” (“Treacherous Computing”) (dat, tenzij zodanig toegepast dat het onder de contole van de gebruiker staat, ons de controle over onze computers ontneemt en op oneerlijke wijze concurrentie en interoperabiliteit beperkt).

– Felix

Vrijheid: wat hebben Vrije Software en gereedschap gemeen? (FSFE folder)

Friday, 17 January 2014

Zaken doen met vrije software

Ik heb in 2013 een stuk geschreven voor Linux Magazine waarin ik beschreef hoe je geld kunt verdienen aan vrije en open source software.
De pdf kun je hier downloaden.

Zaken doen met vrije software

 Alhoewel vrije software meestal gratis verspreid wordt, kun je er prima geld mee verdienen. En in tegenstelling tot bedrijven als Red Hat hoef je ook geen miljoenenomzet te draaien om hier een levensvatbaar businessmodel van te maken.

Eerst wat geschiedenis. In 1969 koppelde IBM de verkochte hardware nadrukkelijk los van de software en gaf zo ruimte aan wat nu een miljardenindustrie is. Voor die tijd werd programmatuur bij de dure mainframes geleverd en programmeurs konden deze vrijelijk aanpassen en uitbreiden. Niet iedereen was in zijn nopjes met deze ontwikkeling. Richard Stallman starte begin jaren tachtig de vrije software beweging en zette zijn gedachtes in 1985 uiteen in het GNU Manifesto. In dit manifest beschreef hij niet alleen de ideologie achter softwarevrijheid, maar ook de mogelijkheden om hier geld mee te verdienen. Hij verwierp de gedachte dat dit programmeurs tot de bedelstaf zou veroordelen en nam nadrukkelijk de ruimte om aan te geven dat hij de ‘free’ in free software bedoelde als in ‘free speech’, niet als in: ‘free beer’.

Stallman bracht gelijk een businessmodel in de praktijk. Hij verkocht de broncode van de teksteditor GNU Emacs. Deze deed hij voor 150 dollar op de post, waarna de ontvanger een tape thuiskreeg. Maar het duurde nog even voordat de commercialisatie van vrije software een vlucht nam. Dit gebeurde in 1989 toen het Amerikaanse Cygnus Solutions opgericht werd. Michael Tiemann, John Gilmore en David Henkel-Wallace boden hiermee commerciële ondersteuning voor vrije software en wisten een succesvol bedrijf op te zetten rond de support en ontwikkeling van de GNU tools voor programmeurs.

In de jaren negentig groeide het aantal bedrijven dat hun diensten aanbood rond open source. Met name het succes van de Linux kernel, gecombineerd met de webserver Apache en het GNU besturingssysteem speelden hier een grote rol in. Het stelde mensen in staat om veel goedkoper een webserver te kunnen neerzetten dan voorheen.

In 1998 werd de term “open source” gemunt om de aandacht wat af te leiden van de meer ideologische aspecten van vrije software en meer te richten op de praktische kant ervan. Dit zette de deuren open naar brede vermarkting van vrije software. Red Hat, een bedrijf met zijn eigen GNU/Linux distributie, ging in 1999 uiterst succesvol naar de beurs, gevolgd door de recordbrekende beursgang van VA Linux Systems dat voorgeïnstalleerde Linux computers verkocht. Ondanks het barsten van de internetbel bleef het aandeel van open source en vrije software in de jaren hierna stijgen. Met deze ontwikkeling zijn er ook een overvloed aan businessmodellen ontstaan.

Voor freelancers of directeurs van softwarebedrijfjes die de open source richting in willen slaan zet ik de voordelen en valkuilen van de verschillende bussinesmodellen uiteen.

Het belangrijkste om je te realiseren is dat je – in verhouding tot de traditionele softwareverkopers – het accent van je arbeid verplaatst. In plaats van het product komt de gebruiker en haar beleving en wensen centraal te staan.

De klassieke manier om geld te verdienen met open source is door support te verkopen. Deze support kun je bieden rond producten die je niet zelf hebt ontwikkeld. Dit is een uitstekende manier om je geld te verdienen. Je kunt eenvoudig een contentbeheersysteem als WordPress, Drupal of Joomla gebruiken. Dit vormt dan de basis voor het inrichten van de websites van je klanten. De support die je dan levert is het tweaken naar de smaak van je opdrachtgever en het passend maken in de huisstijl. Deze aanpak komt erg veel voor en is vaak zo vanzelfsprekend dat gebruikers ervan niet eens doorhebben dat ze feitelijk een 100% open source bedrijfje runnen.

Het is voelt als programmeur ook vrij logisch om uit te gaan van bestaande code, hoef je minder zelf te programmeren en aan het eind van de streep ook minder door te berekenen aan je klanten. Ook zit je klant niet aan jou vast als ontwikkelaar.

Je kunt support verkopen rond een bestaand product, maar je kunt er ook een zelf ontwikkelen. Red Hat doet dit bijvoorbeeld met hun eigen Red Hat Enterprise Linux. De broncode van RHEL kun je vrijelijk downloaden en verspreiden. Deze programmatuur staat echter niet zozeer centraal. Red Hart verdient zijn geld met de handholding, support en updates. Deze kun je krijgen door een abonnement bij hen af te sluiten en een deel van de inkomsten hiervan worden vervolgens weer gestoken in het doorontwikkelen van hun portefeuille aan open source projecten die zich voornamelijk richten op de enterprisemarkt.

Red Hats aanpak is enorm succesvol en haalde als eerste opensourcebedrijf een jaaromzet van een miljard dollar. Dit neemt echter niet weg dat je dit bussinesmodel ook prima kunt gebruiken als klein softwarebedrijfje of freelancer. Het grote voordeel hiervan is dat je zelf de ontwikkeling van het product kunt sturen en gebruik kunt maken van bugfixes en code van mensen buitenaf. Als je het goed doet is het mogelijk om een gemeenschap rond jouw project te creeëren. Deze enthousiaste gebruikers leveren jou dan weer klanten op die aankloppen voor support.

Wat je je wel moet realiseren is dat het vrij veel tijd kan kosten om zo’n open source project te ontwikkelen. Als je slim bent zoek je klanten die dit mee kunnen financieren. De core developers achter het Erlang webframework Zotonic doen dit bijvoorbeeld handig. Zij maken als verschillende kleine bedrijfjes gebruik van het pakket en breiden het uit aan de hand van de wensen van hun klanten. De code die dit oplevert stroomt regelmatig weer terug in Zotonic. Je kunt er echter niet van uit gaan dat je gelijk al klanten bij je project zal hebben en niet alle open source projecten zijn levensvatbaar. Dit kan dus betekenen dat je weekenden en avonden in een project moet steken, zonder direct uitzicht op geld. Je kunt er dan maar het best een echte passie voor hebben, want anders kun je je beter richten op bestaande systemen.

Als je toch wel gehecht bent aan het traditionele beeld van de softwareverkoper dan zijn er ook mogelijkheden om direct geld te verdienen aan je programmatuur. Ik kom regelmatig thema’s en plugins voor WordPress tegen waarvoor betaald moet worden. Dit lijkt in eerste instantie wat merkwaardig, want de licentie van WordPress vereist dat de daaraan gekoppelde software ook open source is. Dit neemt echter niet weg dat je in navolging van Stallman met GNU Emacs geld kunt vragen. Je biedt je extensie dan aan via een webshop, waar de klant kan afrekenen met bijvoorbeeld PayPal en er zelf mee aan de slag kan. Dat laatste is natuurlijk een vrees van menig traditionele softwareverkoper. Ze zijn bang dat anderen met hun pakket aan de haal gaan en er over hun rug geld mee verdienen. In de praktijk blijkt dit niet zo vaak te gebeuren, want het is vrij veel werk om zo’n pakket te voorzien van het nodige onderhoud. De extensies en thema’s zijn vaak ook dusdanig klein dat het voor andere programmeurs al gauw makkelijker is om hun eigen systeem te programmeren. Deze methode van programmatuur verkopen kom je veel tegen bij onder andere WordPress, Magento, OpenCart, en Joomla.

Je kunt ook je software aanbieden onder twee verschillende licenties. Deze techniek wordt dual licensing genoemd en houdt in dat je enerzijds je pakket beschikbaar maakt onder een vrije licentie, maar anderzijds ook een commerciële gesloten licentie hanteert. Je zorgt er dan voor dat de open source zijde gebruik maakt van copyleft. Dit betekent dat als mensen wijzigingen aanbrengen in de broncode en het pakket verder distribueren, deze wijzigingen ook weer vrijelijk beschikbaar moeten komen onder dezelfde voorwaarden. Bedrijven die hier dan niet veel voor voelen kunnen verkiezen de gesloten licentie aan te schaffen en zodoende hun wijzigingen voor zich te houden. Voor MySQL en Qt wordt zo’n soort systeem gehanteerd en financieel gezien is dit interessant. Een nadeel van dual licensing is wel dat je er waarschijnlijk de wrok van menig vrije software zeloot mee op de hals haalt. Zij zien het verkopen van vrije software in een gesloten pakket als een misdaad en zodra je deze route inslaat is het handig om voorbereid zijn op een mailbox vol kritische berichten. Als je daar tegen kunt en niet zo’n ideologisch aanhanger bent van softwarevrijheid, maar het voornamelijk bekijkt vanuit het praktische nut dan is dit wel een levensvatbaar model om je bedrijf op te baseren.

Er kleeft echter ook voor de pragmatischer medemens een belangrijk nadeel aan dual licensing en dat is het feit dat je alle auteursrechten of toestemming van de programmeurs moet hebben om de software te mogen verkopen onder een andere licentie. Dit zorgt ervoor dat je niet kunt profiteren van bugfixes en code uit de gemeenschap zonder hen ook te vragen om jou het auteursrecht toe te kennen. Ook minder die-hard open source liefhebbers beschouwen dit als onkies. Dus moet je er rekening mee houden dat je voor de ontwikkeling van het project op jezelf bent aangewezen. Dit model is dan ook niet voor een freelancer weggelegd.

Een bepaald smaakje van dual licensing dat de afgelopen jaren sterk is gegroeid wordt ook wel “open core” genoemd. Dit betekent dat je niet alleen meerdere licenties hanteert, maar ook nog bepaalde features ontwikkelt die specifiek bedoeld zijn voor de betaalvariant van je pakket. Zarafa, SugarCRM en Puppet Labs gebruiken dit onder andere. Net als bij het verkopen van gesloten software kan dit financieel gunstig uitpakken, maar naast de algemene kritiek op dual licensing worden deze pakketen vaak als crippleware bestempeld. Deze term stamt nog uit de DOS-tijd waarin je goedkoop floppies kon krijgen met shareware programma’s of spelletjes die maar een klein deel van de functionaliteit hadden. Net genoeg om je naar de gehele software te doen zou verlangen. Het is de vraag of zo’n stempel altijd terecht is, maar wie voor deze route kiest moet daar wel mee kunnen leven.

Er zijn nog meer – creatievere – manieren om geld te verdienen met vrije software. Je kunt donaties vragen voor je project, maar je kunt ook geld proberen te verdienen aan de wens tot gemak van je gebruikers. Het downloaden van een pakketje met broncode, dit compilen en vervolgens aan de gang krijgen kost tijd en met name als het een groot pakket is dat weer afhankelijk is van veel andere paketten dan kan dit snel een dagdeel in beslag nemen. Daarom kun je net als Paul Davis van het digitale audiomontagesysteem Ardour de voorgecompilede pakketjes gaan verkopen. Hier vraag je dan een vriendelijk bedrag voor. Davis vraagt kopers zelf een bedrag in te vullen vanaf 1 dollar. Ook is het mogelijk een financieel evenzeer vriendelijk abonnement af te sluiten. In het geval van Ardour werkt dit vrij aardig. Het project zit in een kleine niche, maar Paul Davis kan er toch van leven. En in tegenstelling tot wat je zou verwachten kiest niet iedereen er voor om het minimumbedrag te betalen. Zijn aanpak leverde Ardour veel sympathie op bij bij de gebruikers en hij heeft nu 276 abonnementhouders die goed zijn voor een bedrag van 1777 dollar per maand.

Je kunt ook geld ophalen via een crowdfunding actie. Dit is erg handig als je een startkapitaal nodig hebt en niet naar de bank wilt. MediaGoblin haalde hiermee 42.000 dollar op. De hoofdontwikkelaar van dit mediapubliceerplatform kan er zo zonder financiële zorgen een jaar aan werken. Dit geeft hem de tijd om een bussinesmodel voor de tijd daarna uit te vogelen. Hij zou hierna de route van WordPress kunnen kiezen en net als WordPress.com een gehoste variant van het pakket kunnen aanbieden.

Zoals je ziet zijn er veel verschillende manier om zaken te doen met vrije software. Of je nu als freelancer support wil leveren voor externe systemen, met een gewaagd project geld van de eindgebruiker vraagt, of je eigen bedrijf wilt oprichten met een eigen product, de gebruiker staat binnen vrije software altijd centraal en zal uiteindelijk jouw succes bepalen. De meest geslaagde open source projecten vormen een eenheid met die gebruikers. Zij leveren bugfixes, vertalingen, suggesties voor verbeteringen en wellicht zelfs hele stukken code. Misschien willen ze het ook zakelijk gebruiken en kun je zo je krachten bundelen. In plaats van een eenzijdig verkoopkanaal ontstaat er een levendige gemeenschap van mensen die een project niet alleen downloaden en installeren, maar ook verbeteren en er zelf deel van uitmaken.

 

Minitel hacken

In 2013 heb ik voor Linux Magazine een stuk geschreven waarin ik uitleg hoe ik met een Raspberry Pi een Minitel ombouwde tot een volwaardige GNU/Linux computer.
Download hier de pdf.

Voor aanvullende informatie, aantekeningen en foto’s kun je dit bestand downloaden: http://www.jellehermsen.nl/linuxmagazine/minitel.tar.gz (54mb).

Thursday, 22 August 2013

Carmack over functioneel programmeren

Ik ben dol op de jaarlijkse QuakeCon keynote van John Carmack. Ik volg met name zijn stappen op het gebied van functioneel programmeren met grote interesse.

Als je Carmack op Twitter volgt dan weet je dat hij afgelopen jaar veel met FP geëxperimenteerd heeft. Hij heeft Wolfenstein 3d deels nagebouwd in Haskell en ook veel geprogrammeerd in Scheme via de iOS app “Lisping”. Maar het blijft niet bij experimenten, want hij komt nu voor het eerst met concrete ideeën hoe hij functioneel programmeren in zijn dagelijkse werk bij ID Software kan toepassing in C++. Een switch naar bijvoorbeeld Haskell zullen ze daar niet snel maken, maar dit laat onverlet dat je dezelfde principes ook in een object georiënteerde of procedurele taal kunt gebruiken.

Bijzonder fascinerend, een echte aanrader om te kijken, natuurlijk ook vanwege zijn geweldige toekomstvisie op het gebied van 3D en virtual reality headsets.

Sunday, 14 July 2013

Haskell buiten de universiteitsmuren

Dit is een inspirerend praatje van Bryan O’Sullivan, mede-auteur van Real World Haskell. Hij vertelt hoe hij Haskell gebruikt in zijn eigen startup.

Wie deze functionele programmeertaal de laatste jaren gevolgd heeft, zal het zijn opgevallen dat het langzaam de academische niche aan het uitklimmen is. Het succes van zowel O’Sullivans boek als Learn You A Haskell For Great Good en de relatieve hipheid van Rails/Django-achtig webframework Yesod onderstrepen dit.

Ik ben zelf een enorme fan van functioneel programmeren. Het is, sinds dat ik Miranda/Amanda kreeg op de universiteit mijn favoriete paradigma. Maar deze overtuiging heeft vreemd genoeg mijn dagelijkse werkzaamheden nooit kunnen infiltreren, waar het tot op vandaag OOP is dat de klok slaat.

O’Sullivan legt uit hoe hij Haskell gebruikt en geeft handige tips of het voor jou ook een goede optie is. Tevens beantwoordt hij de zorgen dat de Haskellprogrammeurs niet bepaald aan de boom groeien. Naar mijn tevredenheid moet ik zeggen. Ik ga serieus overwegen om Haskell in mijn werk te gaan gebruiken en anderen hierin ook aan te moedigen.

Nog een klein dingetje dat ik graag uit het filmpje wil lichten is “property based testing”. Als je programmeert dan maak je waarschijnlijk gebruik van unit-tests om te checken of je code zich naar behoren gedraagt. De toepasbaarheid van de unit-test is echter beperkt tot de fantasie van de programmeur, en eerlijk gezegd ook uithoudingsvermogen, want bijzonder inspirerend werk is het geenszins. Met property based testing wordt je code automatisch getest aan de hand van een assertion die je zelf invoert. Je code krijgen zo een heel batterij aan vreemde, ongebruikelijke input te verduren. Dit alles om je programma via deze edge-cases op de knieën te krijgen. Extreem nuttig en niet alleen beschikbaar in Haskell.

Saturday, 13 July 2013

Waarom mobiele web apps traag zijn

Mobiele web apps zijn traag, dat is een feit. Nu ik zelf steeds minder native apps bouw en diezelfde apps vaker in HTML5 en Javascript ontwikkel word ik hier bijna dagelijks mee geconfronteerd.
Dit neemt niet weg dat mobiele web apps extreem handig zijn en voor eenvoudige toepassingen de beste “bang for the buck” leveren aan mijn klanten.

Zoals deze uiterst grondige analyse van Drew Crawford goed uitlegt, ligt de waargenomen snelheid van deze apps aan je invalshoek. Vergeleken met c/c++ en zelfs met Java/Python/Ruby zijn ze ranzig traag, maar als je verwachtingspatroon is afgestemd op websites dan valt het allemaal mee.

Het stuk is echt een aanrader, maar je moet er wel wat tijd voor inruimen, want het is bijzonder uitgebreid. Het deel over garbage collection en het complete gebrek aan controleerbare memory management in Javascript slaat de spijker feilloos op z’n kop.

Al met al is het niet de meest vrolijke boodschap voor de minnaars van de mobiele webtechnieken. Voor deze groep is er gelukkig ook een optimischer kijk voorhanden:
http://danbricklin.com/log/2013_06_19.htm#jsspeed

Monday, 01 July 2013

Dart en de Javascriptsoep

De afgelopen dagen heb ik even goed gekeken naar Dart. Deze taal moet als het aan Google ligt in de komende jaren Javascript gaan vervangen als dominante clienttaal voor het web.

Webdevelopers zijn veelpotige wezens. Voor een gemiddeld project maak ik al gauw gebruik van een halfdozijn talen. Html en CSS voor de clientweergave. Javascript (en tegenwoordig vaak Coffeescript) voor rijke webapplicaties. Aan de serverzijde gebruik ik veel PHP (soms Java) met regelmatig een extra taal voor templating, zoals Smarty, of (in het geval van Typo3) Typoscript. Voor de database gebruik ik daar boven op uiteraard SQL en soms PL/pgSQL voor stored procedured.

Zonder talenknobbel kom je niet ver als webprogrammeur en om eerlijk te zijn kijk ik wel eens met milde jaloezie naar collegaprogrammeurs die hun dagen in een wereldje van puur Java of C++ doorbrengen. Maar ik ben ook wel dol op de razendsnelle iteratie van technologie van het web. Bovendien maak ik tegenwoordig steeds meer mobiele apps ook met webtechnieken (dankzij Cordova/Phonegap en goede ondersteuning voor CSS3/HTML5 in webkit). Wat ik erg graag wil is een taal die client en serverside met elkaar verbindt, waardoor het mogelijk is om iets meer analoog aan de prototypische J2EE-developer binnen één taal en programmeeromgeving te leven.

Dankzij recente ontwikkelingen is het vrij onvermijdelijk dat ik over een paar jaar aan server- en clientside dezelfde taal gebruik. Node.js is extreem hip (Javascript op server), in de Haskell hoek gebeuren er allerhande interessante dingen (Yesod/Fay/Happstack) en ook talen als Opa krijgen volop aandacht.

Het probleem met de enorme wirwar aan nieuwe webtalen is dat het moeilijk in te schatten is wat uiteindelijk succesvol gaat worden. Hoe waanzinnig mooi de ontwikkeling van nieuwe talen ook altijd zijn, uiteindelijk draait het om adoptie daarvan.
Haskell is bijvoorbeeld erg academisch en in tegenstelling tot wat veel Haskellfans je zullen zeggen, tamelijk moeilijk te leren. Er is een enorme lijst van talen die gefundeerd zijn op Javascript, maar denk je serieus dat iedereen over een paar jaar Opa, of Objective-J gebruikt? De adoptie van zulke talen is moeilijk en gefragmenteerd. Coffeescript is succesvol, omdat je het razendsnel oppikt en feitelijk niet meer is dan een mooi gepolijst syntaxlaagje. Alsof je hebt besloten slagroom op je appeltaart te nemen, het blijft uiteindelijk appeltaart.
Begrijp me niet verkeerd, ik vind Coffeescript prettig, maar het neemt niet het javascript probleem weg, namelijk dat de taal een rommeltje is. Tot 10.000 regels code zit ik daar niet zo mee, maar op het moment dat het echt heel groot wordt en moet schalen, dan wordt het lastig te managen. Natuurlijk zijn hier allerhande oplossingen voor zoals AngularJS, maar liever switch ik dan naar een andere taal.

Dart is een goede kandidaat. Op het eerste gezicht lijkt het erg op Java, niet erg sexy. Het is sterk gericht op object georiënteerd programmeren, maar heeft in tegenstelling tot Java wel de mogelijkheid om top-level functies toe te voegen. Harige zaken zoals multiple inheritance zijn vermeden en het heeft optionele static typing (nu al “feeble typing” gedoopt). Google is duidelijk erg pragmatisch te werk gegaan en heeft zoveel mogelijk geprobeerd een allemansvriend te maken. Je kunt dus wel raden wat voor een pissige reviews er zijn geweest, want er zijn weinig dingen die zoveel programmeurpedanterie kunnen veroorzaken als een nieuwe taal.

Ik ben zelf niet van het “code is poëzie kamp”. Zelfs de prachtigste stukken Scheme of Erlang zijn nog geen Leo Vroman en hoe elegant je ook functiecompositie kunt toepassen in Scala, het redt het niet bij de verzen van Vasalis.

Ik drijf af. Wat ik bedoel is dat je een programmeertaal een functioneel nut heeft, als een strijkijzer, en uiteindelijk niet te veel in de weg moet zitten. Het is handig als het snel op te pikken is en lijkt op reeds bekende programmeertalen. Het is mooi als de taal probeert te voorkomen dat de programmeur zichzelf of een ander makkelijk in de voet schiet en niet als een vervelende drill sergeant je dwingt regel na regel aan vervelende boilerplate code uit te poepen.
Dart voldoet hier aan. Je kunt er met grote teams mee werken, het moedigt een pragmatische en heldere stijl aan en het heeft een paar features die het leven van een webdev een stuk aangenamer maken.

Die belangrijkste features die mij zo in het oog springen zijn isolates en futures. Isolates zijn een Erlang-achtige elementen om concurrency te regelen aan de hand van afgezonderde beestjes die communiceren aan de hand van boodschappen. Isolates zijn zoals de naam al zegt geïsoleerd en delen dus geen thread. Als je Dart naar Javascript compiled dan worden ze geïmplementeerd aan de hand van web workers.
Futures zijn een handige manier om de enorme callbackkluwen een beetje te handelen.

Al met al ziet Dart er gewoon vrij goed uit. Het is een beetje de “Gilmore Girls” van de nieuwe webtalen, maar dat is expres en zou wel eens goed kunnen zijn voor de populairiteit. Ik zou er weinig bezwaar tegen hebben als ik over een paar jaar voornamelijk programmeer in deze taal, maar mijn milde mening is niet bepaald het ontvangst dat Google heeft gekregen.

Veel programmeurs zijn bang voor een ActiveX-achtig scenario. Dart zal vanwege de VM die Google in Chrome zal stoppen daar een eersteklas burger zijn en voorlopig op de andere browsers omgezet worden naar Javascript. Het lijkt me onrealistisch om te verwachten dat andere browserbakkers, hoe prettig de open source licentie van de VM dan ook is, dit zullen overnemen. Bovendien was de manier waarop Google destijds Dart (toen nog Dash genoemd) aankondigde niet de meest subtiele. Het zou een nieuwe standaard moeten worden en Javascript gaan vervangen.

Ik zie zelf weinig problemen in Javascript an sich. Het is geen mooie taal, maar het heeft nu de status bereikt van de bytecode van het web. Ik denk dat de push voor Dart als nieuwe taal een stuk eenvoudiger zou zijn als Google dat volledig had gerespecteerd. Maar goed, als ze maar voldoende programmeurs achter zich krijgen dan kunnen ze Dart natuurlijk tot nieuwe standaard máken. Dit is echter wel een staaltje powerplay dat de reus uit Redmond ondertussen niet meer aandurft. We zullen zien of deze hoogmoed Dart ten val brengt, of juist als nieuwe top dog boven op de webstack parkeert.

Friday, 28 June 2013

Moddergooien met Bush

Bush was een scriptingtaal gebaseerd op Ada 95, maar Bush is niet meer. Deze BUsiness SHell heeft de sprankelijke naam SparForte gekregen (let op de CamelCase).

Erg jammer, want een opstootje met een politiek bijsmaakje is altijd amusant in het vaak zo correcte codewereldje. Meestal blijft de politiek echter beperkt tot digitaal vuistvechten over licenties (gaap).

Maar laten we wel wezen, in verhouding tot het moddergooien zoals dat in de Amerikaanse presidentsverkiezingen gebruikelijk is, lijken veel conflicten tussen programmeerbaarden (m/v) erg veel op peuterspeelzaalonvrede over speelgoed.

Bush, zoals de taal op de site meestal nog genoemd wordt, maakt dit echter meer dan goed in hun vergelijking met andere talen. Dit stukje is overduidelijk getypt zonder handschoenen aan, want de minachting voor elke taal anders dan de eigen en lingua mater Ada wordt niet verhuld.

Python wordt weggezet als lullig scriptingtaaltje. Perl wordt hard aangepakt vanwege zijn acroniem (die overigens niet bestaat, maar laten we de pret niet bederven). Ruby maakt gebruik van “the principle of least surprise” en dat is uiteraard fout. Bush is namelijk het programmeerequivalent van de extreem spontane party favorite. Java heeft een “awkward syntax” en last but not least is QBasic heus niet beter, want kijk: Bush heeft ook een crappy textgebaseerde programmeeromgeving met een blauwe achtergrond.

Heerlijk. Ik mag dat moddergooien wel, hoe onzinnig het ook is. De makers van Bush/SparForte kunnen echter nog wel wat leren. Allereerst zou ik een voorbeeld nemen aan de trots waarmee de “brutally optimizing Scheme compiler” Stalin haar politiek niet bepaald kleurloze naam draagt en voor de verbale vuigheden goed luisteren naar David Heinemeier Hansson.

Thursday, 27 June 2013

Leer Lua in 15 minuten

Via deze tutorial krijg je in 15 minuten een vogelvlucht beeld van Lua.

Lua is een schattige dynamische scriptingtaal die perfect is om te embedden in een groter project. Geliefd onder game-makers, tref je dit beestje aan in menig computerspel. Denk hierbij aan niet mis te verstane namen als World of Warcraft, Civilization V en Painkiller.

Lua is makkelijk te porten (20k regels ansi C), werkt lekker vlot en is ook snel op te pikken. Boeken en tutorials die beloven dat je X in Y minuten kunt leren doorstaan meestal niet een keiharde stopwatchtest, maar deze tutorial geef ik een goeie kans. Het is feitelijk één groot Lua-bestand dat je zo door de interpreter kunt halen. De schrijver laat je alle highlights van de taal zien.

Mijn persoonlijke favorieten: Modula-achtige syntax, functies als eerste klas burgers en de tabel als standaard datastructuur. Ongeacht de syntax doet Lua denken aan Scheme en dat blijkt niet toevallig.

Er is ook een soortgelijke tutorial voor Clojure.

Friday, 15 February 2013

Nederlandstalige Planet

Vanaf heden is er ook een Nederlandstalige Planet Fellowship. Ik wil hier zelf in deze kikkertaal gaan posten over vrije software en de FSFE en hoop dat anderen dit voorbeeld volgen. Ik zie met name uit naar het overmatig gebruik maken van de lange samentrekkingen die de spraak in de lage landen rijk is.

Je kunt op je Fellowship blog je posts indelen onder de categorie “Dutch” om ze op deze planet terug te zien. Je moet natuurlijk wel eerst je blog aanmelden aan de planet.

Hasta luego.