FiViKASKA.be is al twee dagen down en ik weet niet waarom, en ik kan het ook niet zelf uitvissen.

Update: Dit is het probleem. Of dat ik meen ik toch te mogen opmaken uit:

Je account is afgesloten omdat je een script draaide die heel veel van de processorkracht in beslag nam. Weet je waar dit door veroorzaakt wordt en hoe wil je dit gaan oplossen?

Lekker vaag allemaal. FiViKASKA.be draait op een vrij standaard WordPress install. De site is op mijn testcomputer net een seconde trager dan standaard WordPress 2.5 (op ± 10 sec).

Update 2: Gemaakt, laat ons hopen. De boosdoener was Smart Archives, naar ik vermoed. 80 queries voor 26 berichten is misschien wel wat overdreven…

Het lijkt wel alsof iemand het nodig vond om mijn vorige bericht nog eens te illustreren. Microsoft heeft vandaag aangekondigd dat de MSN Music License servers voor hun ondertussen ter ziele gegane MSN Music Store — vervangen door de Zune Marketplace — op het einde van de zomer zullen afgezet worden. Dat wil zeggen dat vanaf dan muziek die je legaal via de MSN Music Store aankocht niet meer naar een nieuwe computer kan verplaatst worden. Meer info hier.

De laatste weken is er in Knack heel wat te doen omtrent Younison. Eerst was er een artikel in Focus Knack en de week nadien nog een dubbelinterview/debat in Knack tussen Kelvin Smits, oprichter van Younison, en Johan Verminnen (SABAM). Om even kort te schetsen, Younison is opgericht als belangenvereniging en drukkingsgroep voor Europese muzikanten. Zij zetten zich af tegen de starheid van SABAM (‘Sabam is pure Kafka’) en willen een transparantere en eerlijker verdeling van geïnde auteursrechten. U kan de rest zelf lezen in de artikels in kwestie (op de site van Younison).

Tot daar ben ik mee. Er valt inderdaad heel wat op te merken over SABAM: het is een starre bureaucratische organisatie, de verdeling is niet transparant, het bestuur is een ons-kent-ons kringetje en ze hebben een spuuglelijke website (met Flash-intro!) en een al even lelijk ledenboekje. Qua internet zitten ze in de middeleeuwen: tot voor een jaar was hun eigen website alleen maar toegankelijk met Internet Explorer en dingen als rechtenvrije muziek blijken moeilijk met de politieagentfunctie van SABAM te combineren. SABAM leden mochten tot voor kort zelfs geen Creative Commons licentie gebruiken. Als daar een jonge rebelse groep muzikanten tegenin gaat kan ik alleen maar goedkeurend knikken.

Spijtig genoeg is Younison geen jonge rebelse groep muzikanten maar een vrij doorzichtige poging van Microsoft om meer vat te krijgen op de Europese muziekmarkt. Maar ik loop vooruit op mijn verhaal…

Younison’s magische wapen om alle kopiëerproblemen tegen te gaan is Digital Rights Management, of kort DRM. Met DRM kan je inderdaad beperkingen opleggen aan het gebruik van digitale bestanden. Je kan vastleggen dat een bestand slechts op één computer afgespeeld mag worden, mogelijks gedurende een beperkte tijdspanne. Je zou ook met verplichte licentieservers kunnen werken voor radiostations zodat elk gespeeld nummer onmiddelijk in een centrale database gemarkeerd wordt. Er zijn drie grote problemen met DRM in dit verband: ten eerste werkt het niet (het zogezegd onfeilbare beveiligingsysteem van HD DVD was na een paar maanden al gekraakt), ten tweede is er het probleem van de interoperabiliteit — je muziek werkt wel op je PC maar niet op je mp3-speler, GSM of autoradio — en ten derde is er geen enkele garantie dat DRM de transparantie bij het verdelen van auteursrechten zal bevorderen: volgens mij staat de wet op de privacy een heleboel wensen van Younison in de weg.

Het allergrootste probleem is dat je het probleem van de vraag niet oplost. Er is op internet een enorme vraag naar muziek in het handige mp3 formaat, maar de muziekwereld heeft zo’n heilige schrik van kopiëren dat ze liever de PC’s van hun klanten infecteren met defecte CD’s dan een handige muziekwinkel uit te bouwen. Het is al sinds Napster zo dat het gemakkelijker is om illegaal een nummer te pakken te krijgen dan legaal. Dit heeft niet alleen met de top van de muziekbusiness te maken: de muzikanten zelf zijn hier even goed schuldig aan. Neem de proef op de som en probeer maar eens een mp3 te kopen op de website van dEUS, Monza of Mintzkov (één van de drie is meer bij de tijd, maar je moet goed zoeken…)

Het heeft geduurd tot Apple iTunes Music Store uit de grond stampte voor men besefte dat er ook geld met muziek op het internet te verdienen valt. Ondertussen is iTunes de grootste muziekwinkel van de Verenigde Staten. Toegegeven, iTunes gebruikt een milde vorm van DRM — die gemakkelijk te omzeilen is door aangekochte muziek op audio CD te branden en terug te rippen — maar de grote baas van Apple heeft duidelijk gesteld dat hij daar liever nu dan morgen vanaf zou zijn (‘…DRM [system]s haven’t worked, and may never work, to halt music piracy.’) Amazon’s MP3 Store doet zelfs de moeite niet meer: zij verkopen plain old mp3’s zonder enige beveiliging. Ondertussen is ook iTunes deels naar onbeveiligde mp3 overgestapt. Als Kelvin Smits dan met grote stelligheid beweert dat DRM het probleem zal oplossen en in één adem vermeld dat ‘peer-to-peer uitwisseling van mp3 bestanden maar marginaal is, de massale verspreiding van illegale muziek gebeurt door grote internetproviders…’ dan kan ik alleen maar denken arm Vlaanderen. Kijk eens op The Pirate Bay, meneer Smits. 

Wat komt Microsoft nu in dit verhaal doen? Wel, zij komen niet in het voorgaande verhaal voor, en dat is juist het grote probleem: Microsoft betekent quasi-niets in de online muziekwereld. Maar zij zijn wel de enige softwarefabrikant ter wereld die een sluitend DRM-systeem kunnen voorleggen. Binnen een DRM-systeem is de fabrikant van je operating system van wezenlijk belang. Een beveiligd nummer blijft immers boven alles een verzameling nullen en eentjes, en als daar muziek in zit zal er ook wel iemand de moeite doen om die muziek eruit te halen, zoals al meermaals is bewezen. Daarom is het van wezenlijk belang dat het operating system van je computer er als een politieagent over waakt dat niemand probeert de bestanden op de “verkeerde” manier te openen. Om het systeem waterdicht te doen werken heb je hardware en software support nodig en Microsoft is de enige mainstream softwarefabrikant die die combinatie kan en wil aanbieden. (Voor de goede orde: Apple heeft zijn FairPlay DRM-systeem maar weigert dat aan derde partijen te licentiëren, heeft geen zin in DRM en oude G4’s en G5’en hebben niet de vereiste TPM-chip om een sluitend systeem te vormen.)

Kort gesteld, in de race om de portefeuille van de online muziekliefhebber is Microsoft grandioos aan het verliezen en daarom gooien zij hun technologische wapens in de strijd. 

Wat heeft Younison nu met Microsoft te maken? Kelvin Smits geeft in Knack toe dat hij gesponsord wordt door de Business Software Alliance. Deze privé-organisatie houdt zich bezig met het controleren van bedrijven op zoek naar illegale software. De leden zijn een twintigtal grote software bedrijven, waaronder IBM, Dell, Apple en Microsoft (en niet alleen Apple, zoals Knack laat uitschijnen). De praktijken van BSA zijn omstreden en sommigen beweren zelfs dat BSA een front-end organisatie is voor louter en alleen Microsoft. Microsoft is in ieder geval het BSA-lid dat het meeste te winnen heeft bij wijdverspreide DRM-systemen.

Ik ga hierbij niet beweren dat Younison uit kwade trouw handelt — ik houd het voorlopig op muzikantennaïviteit — maar het blijft een feit dat wat Younison voorstelt slechts één firma ten goede komt.

Om samen te vatten:

  1. Er is een grote vraag naar muziek op Internet. De kwestie is er op een klantvriendelijke manier aan te voldoen.
  2. Er is geen vraag naar DRM op Internet. Meer DRM zorgt voor meer piraterij, of het nu van Microsoft, Apple of Real komt.
  3. Younison heeft meer te bieden voor Microsoft dan voor de muzikant: het is een pro-DRM lobby groep.
  4. Door je aan te sluiten bij Younison steun je hun vraag naar DRM op alle muziek: het staat in de voorwaarden die je moet goedkeuren voor je de site kan gebruiken.

Om punt 2 te illustreren wil ik nog het volgende vermelden: sinds 2004 biedt Microsoft het PlaysForSure DRM-systeem aan. Verschillende fabrikanten van mp3-spelers ondersteunen PlaysForSure, en onder andere Yahoo! Music en MTV Urge (ondertussen opgedoekt) verkopen muziek die met PlaysForSure beschermd was.

In 2006 brengt Microsoft de Zune mp3 speler uit, bedoeld als concurrent van Apple’s iPod. Zune ondersteund PlaysForSure niet, maar een ander incompatibel DRM-systeem dat alleen met de Zune werkt. M.a.w. je kan je legaal aangekochte muziek niet meer afspelen op je nieuwe Zune, maar illegaal gedownloade muziek blijft perfect afspeelbaar. 

Voor alle duidelijkheid: je hebt net hetzelfde voor als je muziek van de iTunes Store op iets anders dan een iPod wil zetten, maar bij de Zune gaat het om twee DRM-systemen van dezelfde fabrikant. Aan zulk bedrijf wil je toch niet al je muziek toevertrouwen?

Nu mijn oude server weer bij de pinken is, wou ik een versie van deze site lokaal zetten om er in alle rust aan te kunnen prutsen. Valt tegen: respons-tijden van 10 tot 20 seconden per pagina en Apache gebruikt meer dan 50% CPU. OK, het is maar een Pentium II, maar toch…

Zoals steeds moet er als je het heel druk hebt nog iets bijkomen. Deze keer is mijn oude server — waar ik 2,5 jaar geleden al over schreef — gecrashed. Deze keer was het serieus: van mijn RAID-5 array waren 2 van de 3 schijven kapot. Met een hoop trucken heb ik de array kunnen recreëren door de superblock te overschrijven d.mv. zoiets als mdadm --create --assume-clean --raid-devices 3 missing /dev/goede_schijf /dev/minst_slechte_schijf. Wonder boven wonder heeft de array het gedurende 1 run van ddrescue uitgehouden. Het strafste vond ik wel e2fsck: hij heeft alleen de journal gereplayed en voor de rest was alles in orde.

Nu draait hij ook CentOS i.p.v. RedHat 7.3. ‘k Wou eigenlijk Ubuntu proberen maar daarvoor had mijn oude bakbeest te weinig geheugen, en Ubuntu vond de nieuwe schijf ook niet. Wel grappig zo’n toestel waar je niet naar omkijkt: blijkbaar had ik nog quasi-dagelijkse backups teruggaand tot 2003…

Na een paar serieuze programmeersessies staan er eindelijk films op de website van mijn school, FiViKASKA.be. Allen daarheen dus.

‘t Heeft wel wat zweet gekost en ik ben ook niet zo zeker meer of de volgende iteratie van benderydt.com nog wel op WordPress zal draaien, maar dat zijn zorgen voor later. Als Django nu eens op shared webhosts zou draaien…

Kort gesteld ben ik de volgende vervelende zaken tegengekomen:

  1. Het is veel te moeilijk om WordPress’ admin scherm uit te breiden om een nieuw gegevenstype aan te maken. Ondanks alle hooks en filters kan je bijna niets veranderen aan wordpress/wp-admin/post.php, de plaats waar je nieuwe berichten ingeeft. Ik heb bijna de hele post.php-interface moeten dupliceren om daar een hoop dingen aan te kunnen toevoegen.
  2. Niets nieuws onder de zon, maar PHP is af en toe echt wel braindead. Kijk bijvoorbeeld naar deze tabel en probeer eens op één, twee, drie te bedenken hoe je test of er iets in een stringvariabele zit. if ($string)? Nope, dit faalt wanneer de string de waarde "0" bevat. if (isset($string))? Nee, want een lege string geeft ook TRUE bij isset. if (! empty($string))? Zelfde verhaal als bij if ($string), "0" geeft een vals negatief. De oplossing is if (strlen($string)) of if ($string !== ''). Intuïtief, nietwaar?
  3. WordPress heeft de abjecte en bijna misdadige gewoonte om bij aanvang van een request alle POST en GET variabelen te quoten zodat ze veilig in de databank kunnen weggeschreven worden. Abject omdat je telkens je iets met die variabelen wil doen ze moet ont-quoten om ze daarna terug te quoten. Bijna misdadig omdat core WordPress-functies als wp_insert_post niet meer checken of de input nog ge-quote-d moet worden, maar blindelings alles in de database dumpen, zelfs zonder foutboodschappen te checken (#6227). Dit wil zeggen dat eender welke plugin die deze functie(s) gebruikt zonder de input te quoten, een rechtstreekse input naar de database geeft. Denk aan input als hallo '; DROP DATABASE; en je database is weg. (WordPress core is OK omdat ze alles quoten.)

Daar staat tegenover dat, als het werkt, de admin-schermen van WordPress ook voor een leek bruikbaar zijn, en daar was het tenslotte allemaal om begonnen.

While developing a WordPress plugin I stumbled upon the following annoying problem:

My plugin consists of several interlinked pages with forms on them, like a wizzard. They’re integrated into the WordPress admin environment by means of the handy add_menu_page and add_submenu_page-functions. I want to check the result of the forms and advance the user to the next page using wp_redirect whenever I have sufficient input. Pretty easy for a standalone php webpage: check the $_POST-array, do whatever you have to do and redirect the browser to the next page when you’re satisfied before outputting any html (not even a space or carriage return).

However, my pages are never called directly. They exist inside WordPress’ admin.php page, and admin.php outputs the top part of the page before my code is even called. This means that the HTTP-redirect will always fail. You simply cannot send HTTP-Headers somewhere in the middle of the HTTP-body (i.e. the actual html).

Thinking about it, I thought I had two options:

  1. hook into WordPress’ init or send_headers hooks. These are called before any html-output.
  2. call my php-files directly in the forms action and replicate all admin.php-code inside them.

I didn’t like the first option ’cause init or send_headers are called for every pageview, and I’d have to find out whether the request originated from one of my forms. Plus I’d have to seperate all application logic in one central place, away from the actual pages. I didn’t like the second option ’cause I’d have to track the WordPress core pretty tightly to make sure none of my replicated code contained any newfound WordPress bugs. However, upon inspecting admin.php, I found a third option.

admin.php won’t output anything if you call your plugin page with an optional &noheader GET argument, but it will setup the whole WordPress environment for you. I’m quite happy: all I have to do is change my forms action from this

<form method="post" action="admin.php?page=your_plugin_page.php">

to this

<form method="post" action="admin.php?page=your_plugin_page.php&noheader">

and I can redirect to my hearts content. You can make it draw the menu with this bit of code:

/* this strange thing makes WordPress output the admin header whenever we need it 
   we turn the header off with "&noheader" so we can redirect with WP_Redirect
*/
if (isset($_GET['noheader']))
	require_once(ABSPATH . 'wp-admin/admin-header.php');

after you’ve done your validation and possible redirection.

Onze schatjes zijn er nog eens in geslaagd om op het laatste moment een heroïsch effort te doen zodat het toneelstuk toch nog op zijn poten kwam. ‘t Was nodig want de nacht na de generale heb ik niet geslapen. Gelukkig waren de voorstellingen veel beter en het publiek was goed mee. Een pluim voor de strontvliegen en een welgemeende dankuwel voor alle aanwezigen.

adb cantorSpijtig genoeg zijn we tijdens de voorstelling van zaterdag nog eens geplaagd door de ADB Cantor-ziekte. Voor de leken onder U, de ADB Cantor is een kleine lichttafel die door heel veel theaters en culturele centra in België gebruikt wordt. Wij gebruiken ze nu al voor de 5de keer en keer op keer hebben we problemen met de tafel. Onze problemen zijn telkens weer op hetzelfde terug te brengen: de tafel is niet gebruiksvriendelijk voor mensen die niet dag in dag uit met belichting bezig zijn, en zonder manual is ze niet bruikbaar. Probeer bv. maar eens zonder manual te vinden hoe je de tafel weer naar maagdelijke toestand moet resetten.

Het probleem van zaterdagavond was simpelweg terug te brengen tot een ontbrekende cancel-knop. Tijdens de eerste scene na de pauze stond opeens de LIMIT-knop te pinken (waarschijnlijk heeft één of andere snodaard tijdens de pauze op wat toetsen gedrukt). Deze LIMIT-knop dient om kanalen te limiteren naar een bepaalde lichtsterkte, om bijvoorbeeld in alle lichtstanden een meer uitgebalanceerde belichting te bekomen. Het effect van de LIMIT-knop is dat hij de lampen limiteert op de lichtsterkte van de ingeschakelde lampen op dat moment, in ons geval dus de lichtstand van de eerste setting na de pauze. Concreet wou dit zeggen dat we van de 21 kanalen er maar 12 meer ter beschikking hadden (de rest was gelimiteerd op nul) en dat het tweede deel van het toneelstuk qua belichting op zijn minst mager was.

Dit probleem zou snel opgelost geweest zijn moesten we de LIMIT-actie hebben kunnen cancelen, maar de enige manier om van die LIMIT-toestand vanaf te raken is blijkbaar alle lampen op volle sterkte aan te zetten. Ten eerste is dit niet echt wat je wil in een live-theater productie en ten tweede hebben we dat pas nadien in de manual terug gevonden. Ik weet wel, veel valt terug te brengen op onze onwetendheid (ik weet bijvoorbeeld niet waarom we juist die tafel gebruiken), maar toch kan ik niet nalaten volgende opmerkingen te maken:

  1. Waarom is er geen grote cancel-knop om destructieve acties teniet te doen?
  2. Waarom kan de tafel niet in 2 modi werken, een setup-modus om te programmeren en een live-modus waar je niks aan de programmatie kan veranderen? Het zou de helft van onze problemen oplossen. Ik zie niet bijvoorbeeld in waarom je tijdens een productie ten alle tijde moet kunnen patchen (kanalen hernummeren) of kanalen limiteren.
  3. Waarom kan je niet de delen van de tafel afzetten die je niet nodig hebt? Bv. looplichten / automatische lichtscene wissels?

Afin, volgende keer heb ik de manual wel gelezen. Of misschien een andere lichttafel. Voor alle duidelijkheid, ik ben niet de lichtman, Bob kan dat veel beter (Hai Bob!).

flyer middernachtzonZoals eerder vermeld heb ik mij samen met Ilse weer aan een regie voor onze allerliefste Strontvliegen gewaagd. De tekst is ondertussen af, er zal een decor en licht zijn, schmink is nog een probleem (komt in orde, hopen we), kortom de traditionele stress voor de voorstelling begint te gieren.

We hebben het ons deze keer lekker moeilijk gemaakt door ons op Shakespeare te storten, Midzomernachtdroom meerbepaald. Midzomernachtdroom is een doldwaze komedie over de liefde waarin twee verliefde koppels, een elfenvolk en een bende amateurtoneelspelers allemaal in dezelfde nacht in hetzelfde bos ronddwalen. Mits wat toverdrank en andere betoveringen loopt er vanalles mis en worden er de meest onwaarschijnlijke koppels gevormd, maar uiteindelijk komt alles toch min of meer in orde.

Midzomernachtdroom is met recht en reden een klassieker, maar daarom is het nog niet eenvoudig te spelen met jongeren. Aan de hand van de originele tekst van Shakespeare hebben we samen met de jongeren een nieuwe bewerking in gemaakt. Dit heeft veel tijd, moeite en geduld van de jongeren gekost maar we zijn blij met het eindresultaat. ‘t Is maar om te zeggen dat het ook tof zal zijn voor diegenen die Midzomernachtdroom al tientallen malen gezien heeft.

‘t Is bedoeld voor vroegrijpe tot volgroeide jeugd. Krimpende mensen zijn ook welkom en mensen die voornamelijk in onze eigenaardige naam zijn geïnteresseerd komen ook aan hun trekken.

Middernachtzon
Een eigenzinnige bewerking van Shakespeare’s Midzomernachtdroom door jeugdtoneelgroep De Strontvliegen
Kessel, Gemeenschapscentrum ‘t Dorp, Berlaarsesteenweg.
Vrij 29 feb 20u / Za 1 ma 20u / Zo 2 ma 15u
Kaarten: 03/489.08.34 – 03/480.89.15 – 8 € / 6€ min 18 jaar

Over de affiche
‘t Was echt wel nipt dit jaar: ‘k heb zelfs geen tijd noch materiaal gehad om de foto’s te nemen die ik wou voor de affiche. Gelukkig kwam Creative Commons to the rescue. Thanks Jill Greenseth en deep_scismic for your kind permission! Originele foto’s hier en hier.

Gisteren heb ik het plezier gehad om nog eens met Linux te spelen, de laatste versie van Ubuntu meerbepaald. Voor diegene die mij niet kennen, ik ben een hele tijd lang een fervente Linux-supporter geweest en heb zelfs een aantal jaar alleen Linux gedraaid. Tot ik besefte dat ik liever iets creatief maak met een computer dan dat ik er op zit te babysitten. Ik heb toen een Mac gekocht en dat heb ik me eerlijk gezegd nog niet beklaagd.

In ieder geval, op school was Tim Vets bezig met op 3 PC’s Ubuntu te installeren. Het lukte niet echt, dus heb ik maar een handje bijgestoken. Om een lang verhaal kort te maken, het was heel laat vannacht en er is maar 1 PC in orde. Het ziet er nu wel allemaal mooier uit dan pakweg 5 jaar geleden, maar onderhuids blijven dezelfde problemen.

Probleem 1: BIOS. Oude computers kunnen niet booten van ergens pakweg midden in de schijf, dus moet je een aparte /boot-partitie maken vooraan de schijf. Het leuke is dat de installer van Ubuntu dat niet vanzelf doet en dat je het probleem pas merkt als de vers geïnstalleerde computer opstart. Je moet dus helemaal terug beginnen om het goed te krijgen. Dit probleem is niet nieuw en de oplossing is heel simpel: installeer Grub aan het begin van de installatie, check of het werkt en zo niet, maak een aparte /boot-partitie.

Probleem 2: gparted. Als je niet zomaar wil herinstalleren om het vorige probleem op te lossen kan je proberen met gparted om de partitie te resizen en een kleine partitie vooraan bij te maken. Het lukt allemaal heel goed, alleen doet gparted eerst alles read-only om dan pas aan het echte werk te beginnen. Waarvoor dit goed is weet ik niet, als ik een partitie wil resizen wil ik dat nu en wil ik geen half uur op een test wachten om dan nog eens een half uur op het eindresultaat te moeten wachten. Het boezemt ook geen vertrouwen in dat gparted een aantal keer gecrashed is.

Probleem 3: partities. Ubuntu gebruikt UUID’s om naar de partities te verwijzen. Op zich is dit een goed idee om problemen met veranderende disk-namen tegen te gaan. Maar waarom kan je die UUID’s niet zien in gparted, fdisk of grub? En waarom moet grub nog eens zoiets als (hd0,0) gebruiken i.p.v. die oude getrouwe /dev/sda? Daarenboven zijn die disk-namen blijkbaar echt niet meer stabiel: bij herstarten van CD is de goede schijf van /dev/sda naar /dev/sdb verhuist en de te copiëren schijf van /dev/sdb naar /dev/sda. Ik heb dit pas gemerkt nadat ik de slechte schijf over de goede gecopiëerd had…

Probleem 4: grub. Het is tof dat je grafisch kan opstarten, maar het is veel minder tof dat Grub daarvoor bestanden op de harde schijf nodig heeft. Bij de oude getrouwe LILO moest je hem in de Master Boot Sector installeren en dat was dat. Grub installeert zich ook in de MBR maar refereert naar bestanden in /boot, waardoor je eerst /boot moet gemount hebben om Grub te kunnen installeren. Het probleem van de kip en het ei dus. Ik vraag me ook af of Grub dat oude BIOS probleem niet kan dedecteren bij installatie i.p.v. bij het opstarten.

Probleem 5: rescue mode. Het heeft veel te lang geduurd voor ik doorhad dat Ubuntu na opstarten van de kernel virtuele terminals opstart op Alt+F2, Alt+F3,…. Kon dat nu niet op het opstartscherm gemeld worden? Telkens weer wachten tot de grafische omgeving van CD opgestart is werkt al snel op de zenuwen.

Ik weet het wel, het waren oude krellen van computers, maar zonder mijn hulp was er geen enkele geïnstalleerd geraakt. En het is toch juist de kracht van Linux dat je die oude dingen nog voor iets nuttig kunt gebruiken?