Podcasting deeltje 4

Keek op een bewogen week…

Vandaag komt de De Zoldercast met de discussie tussen enkele opponenenten en mij naar aanleiding van mijn eerste verhaal over podcasting in Nederland. Dat lijkt mij een mooi moment om de balans op te maken over de stofwolken die afgelopen week zijn ontstaan.

Laat ik eerst uitleggen waarom ik het verhaal heb geschreven.

Enkele weken geleden zat ik met Roelf en Andrea Sluman te eten in Apeldoorn. Roelf vertelde vol enthousiasme over podcasting en voorspelde dat die nieuwe toepassing van Internet het einde van de radio in Nederland betekent en dat het op korte termijn de adverteerders van de radio zal wegtrekken.

Daarop maakte ik een rondje langs de velden door een aantal podcasts te beluisteren. Toen ik dat allemaal hoorde, begreep ik helemaal niets van het enthousiasme van Roelf. Ik werd er helemaal niet vrolijk van en besloot er maar een verhaaltje op mijn weblog aan te besteden.

Omdat Roelf veel aandacht besteedde aan mijn verhaal ging een aantal podcasters er aandacht aan besteden. Zo ontstond een voor mij geheel onverwachte kortstondige, maar heftige discussie. Daar waar ik wist dat er iets over mijn verhaal werd gezegd of geschreven, mengde ik mij in de discussie. Dit geheel in lijn met het oud Nederlandse spreekwoord: wie de bal kaatst, kan hem terug verwachten én moet ook meespelen.

Hoe kijk ik terug op de discussie?
Wat ik betreur is dat ik blijkbaar onvoldoende duidelijk heb gemaakt dat het verhaal uitsluitend een reactie was op de hierboven genoemde voorspellingen van Roelf was. Het ging feitelijk uitsluitend over de commerciële kansen van podcasting.

Wat ik ook betreur is dat mijn toon en harde veroordelingen – waar ik overigens nog steeds achter sta – zoveel ruis veroorzaakten, dat de discussie is vertroebeld. De reacties spitsen zich helaas helemaal toe op mijn kwalificaties ‘bagger’ en ‘niet om aan te horen’. Tot op heden is het niet gekomen tot een inhoudelijke discussie over de commerciële mogelijkheden van podcasting. Dat is jammer, want juist in dit vroege stadium van het fenomeen is het zeer interessant om te discussiëren over de commerciële kansen ervan. Bedoel ik daarmee te zeggen dat alle podcasts commercieel moeten worden? Welnee… juist de niet commerciële podcasts zullen vaak de meest vernieuwende en interessante blijken te zijn. Dat is al vaak op heel veel andere terreinen binnen het medialandschap bewezen. De experimenten vinden vaak niet in het commerciële circuit plaats.

Wat ik niet begrijp is het verwijt van enkele podcasters dat ik het fenomeen podcasting niet begrijp (al dan niet in combinatie met het argumentdat ik zelf geen podcast heb gemaakt: alsof je taart moet kunnen bakken om te kunnen proeven of een taart lekker is). Die stelling is op basis van mijn verhaal toch niet serieus staande te houden? Zeker niet als je mijn suggestie leest om de verschillende thema’s binnen programma’s op te knippen en die – naast het volledige programma - ook apart aan te bieden. Dan kan de luisteraar veel sneller bij de voor hem interessante delen komen zonder zich een weg door de voor hem oninteressante delen te moeten ploegen. Dat is volgens mij één van de krachtige eigenschappen waar nu nog weinig of niets mee wordt gedaan. En het wordt volgens mij nog interessanter als er zoekmachines en catchingprogramma’s komen waarmee we kunnen zoeken op trefwoorden binnen audiofiles (of een soort metatags aan die files). Overigens is dit ook niet nieuw, want wie op de site van Twee Vandaag bijvoorbeeld de reportage over podcasting terug wil zien, hoeft zich niet door het hele programma heen te worstelen, maar kan direct het betreffende item bekijken.

En tot slot... waar ik helemaal geen begrip voor heb, is de kritiek dat ik een vast format van podcasting zou bepleiten (een podcaster noemde mij zelfs de stramienpolitie). Dat heb ik nooit bepleit en die suggestie is ook nergens in het verhaal terug te vinden. Ook hoorde ik een andere podcaster via skype bij een collega in de show zeggen, dat ik zou vinden dat de Nederlandse podcasters allemaal een te groot ego hebben. Ook dat heb ik nergens geschreven of gezegd. Discussiëren is leuk, maar je moet me geen dingen in de mond leggen die ik niet heb gezegd.

Het was al met al een leuke discussie. Zullen we het toch allemaal maar een beetje relativeren? Als ik de reacties op de verschillende sites bekijk, zie ik telkens dezelfde namen terugkeren. Na een kleine veertien dagen in podcastland te hebben rondgezworven, heb ik dezelfde indruk als Elger van de E-cast: podcasters zijn toch wel erg met zichzelf in de weer zijn en ik merk nog maar heel weinig belangstelling bij een groter publiek. Of misschien zijn die bezoekers wel heel verstandig en relativeren ze mijn verhaal en/of de discussie.

Gaat podcasting de radio verdringen?
Waar ik het in mijn eerste verhaal nog niet over heb gehad, is Roelfs voorspelling dat podcasting het einde betekent van de radio. Ook daar ga ik niet met hem mee. Ik wil mijn verwachting illustreren aan de hand van een vorm van radio waar podcasting geen antwoord op heeft: actualiteitenprogramma’s. Wie het nieuws wil horen, wil dat bij voorkeur live binnenkrijgen. Podcasting is vanuit zijn aard (opnemen, online plaatsen en afspelen wanneer de ontvanger dat wil) niet het medium om dat te doen. Ik wil wel opmerken dat Roelf zijn mening op dit punt nuanceerde toen ik hem dit voorbeeld voorhield.

Blijft de radio daarom altijd bestaan? Dat geloof ik niet in. Door het integreren van computertechnologie met umts-achtige toepassingen, zal de radio op termijn ook overbodig kunnen worden. De (auto)radio kan dan worden vervangen door een soort computer, waarmee ook nieuwsuitzendingen worden ontvangen(al dan niet met beeld). Maar dat is dan geen podcasting zoals wij nu kennen. Het zal veel meer lijken op live-streaming (al dan niet met beeld).

Toekomst van podcasting
Je hoeft geen ziener te zijn om te voorspellen dat podcasting nog veel ontwikkelingen gaat doorlopen. Zowel de techniek als de content zullen grote veranderingen ondergaan. Om podcasting bij het grote publiek te krijgen, moet de ‘ontvangst’ worden verbeterd en gaat men zonder twijfel zoekmachines ontwikkelen waarmee het grote aanbod kan worden ontsloten. Op het terrein van de content zullen de gevestigde media zich op korte termijn gaan storten op podcasting. Ik denk/vrees dat zij met het grote publiek aan de haal gaan. Dat zullen dan wel de best beluisterde, maar zeker niet de meest interessante programma’s worden. Daarnaast zie ik kansen voor het bedrijfsleven om middels eigen programma’s voorlichting te geven en zullen allerlei organisaties en individuen themaprogramma’s gaan aanbieden. Het meest interessante deel van de podcasts zal echter worden gemaakt door experimenterende amateurs. De beste daarvan zullen boven komen drijven en wellicht door de commerciële podcasts worden opgenomen. Anderen blijven lekker hun ding doen. En zo biedt podcasting voor elk wat wils.



Ook over dit onderwerp:
- Podcasting. Nieuwe toepassing van het Internet

- Podcasting deeltje 2. Het vervolg

- Podcasting deeltje 3. Het lang verwachte Zoldergevecht.

- Podcasting een jaar later. Optimisme verdampt.

© Harold Makaske 17 april 2005 to allow skipping count when used in template (ie to not count on click in main page) V1.4 - Fixed ignoe same IP count problem V1.5 - Added views_log table and changed plugin performance to check for unique visits by IP address. [gRegor] - Added option to set the length of time before re-counting hits from the same IP address (default: 2 hours) [gRegor] V1.6 - Added plugin menu to display all view count, w/ counter reset function - Delete view counter and log for deleted item V1.7 - use sql_query V1.8 - Admin page enhancement to preserve order and sort info v1.9 - Added item title in admin menu v1.9.1 - ignore draft in admin menu */ class NP_Views extends NucleusPlugin { // Note: I never run this plugin on 2.0 and have no idea whether it // wil work on <2.5. A user can simply chnage it to return // '200' and see if it works (likely will). I will gladly // change the min version to 2.0 and add the sql_table fix // upon such report. 8) function getMinNucleusVersion() { return '250'; } function getName() { return 'Views'; } function getAuthor() { return 'Rodrigo Moraes | Edmond Hui (admun) | gRegor Morrill'; } function getURL() { return 'http://www.tipos.com.br'; } function getVersion() { return '1.9.1'; } function getDescription() { return 'This plugin counts how many times an entry has been displayed.'; } function getEventList() { return array('PostAddItem', 'QuickMenu', 'PostDeleteItem'); } function supportsFeature($what) { switch($what) { case 'SqlTablePrefix': return 1; default: return 0; } } function getTableList() { return array( sql_table('plugin_views'), sql_table('plugin_views_log') ); } function install() { sql_query('CREATE TABLE IF NOT EXISTS ' . sql_table('plugin_views') . ' (id int(11) NOT NULL default "0", views int(15) NOT NULL default "0")'); sql_query('CREATE TABLE IF NOT EXISTS ' . sql_table('plugin_views_log') . ' (id int(11) NOT NULL auto_increment, ip varchar(20) NOT NULL default "", itemid int(11) NOT NULL default "0", viewtime varchar(32) NOT NULL default "", PRIMARY KEY (id) )'); $this->createOption('silent','Silent mode - No #Display shown in Item (still need to add the skinVar, for use with MostViewed)','yesno','no'); $this->createOption('deletetables','Delete this plugin\'s table and data when uninstalling?','yesno','yes'); $this->createOption('timespan', 'Hours to wait before re-counting visitors', 'text', '2'); } function unInstall() { if ($this->getOption('deletetables') == 'yes') { sql_query('DROP TABLE ' . sql_table('plugin_views') ); sql_query('DROP TABLE ' . sql_table('plugin_views_log') ); } } function hasAdminArea() { return 1; } /** * Adds an entry to the 'Quick Menu' on the Nucleus administration pages. * The entry will link to the commentcontrol admin page */ function event_QuickMenu(&$data) { global $member; if (!($member->isLoggedIn() && $member->isAdmin())) return; array_push( $data['options'], array( 'title' => 'View Counts', 'url' => $this->getAdminURL(), 'tooltip' => 'See the view count of all items' ) ); } function doTemplateVar(&$item, $input) { $itemid = $item->itemid; $remote_ip = ServerVar('REMOTE_ADDR'); $timespan = $this->getOption('timespan') * 3600; $now = time(); // get the current Views count $query = "SELECT views FROM " . sql_table('plugin_views') . " WHERE id=" . $itemid; $result = sql_query($query); $row = mysql_fetch_object($result); $views = intval($row->views); // Only do count updates if "skipcount" is not set if ($input != 'skipcount') { // This takes care of previous items if (mysql_num_rows($result) == 0) { $query = "INSERT INTO " . sql_table('plugin_views') . " (id, views) VALUES('$itemid', '1')"; sql_query($query); //$views = 0; } // end if // Check the views_log table to see if this IP has a viewtime for this item $query = "SELECT viewtime FROM " . sql_table('plugin_views_log') . " WHERE ip='" . $remote_ip . "' AND itemid=" . $itemid; $result = sql_query($query); // No views from this IP in the past X hours, so update the Views count if (mysql_num_rows($result) == 0) { $views++; $this->_updateViewsCount($itemid, $views); $this->_addViewsLog($itemid, $remote_ip, $now); } // end if else { $viewtime = mysql_result($result, 0, 'viewtime'); // It's been longer than X hours, so recount if (($now - $timespan) > $viewtime) { $views++; $this->_updateViewsCount($itemid, $views); $this->_updateViewsLog($itemid, $remote_ip, $now); } } // end else } // end if // Clear logs that are more than X hours old $time = $now - $timespan; $query = "DELETE FROM " . sql_table('plugin_views_log') . " WHERE (viewtime < $time)"; sql_query($query); if ($this->getOption('silent') == 'no') { echo $views; } // end if } function event_PostAddItem($data) { $itemid = $data['itemid']; $query = "INSERT INTO " . sql_table('plugin_views') . " (id, views) VALUES('$itemid', '0')"; sql_query($query); } function event_PostDeleteItem($data) { $itemid = $data['itemid']; $query = "DELETE FROM " . sql_table('plugin_views') . " WHERE id=". $itemid; sql_query($query); $query = "DELETE FROM " . sql_table('plugin_views_log') . " WHERE itemid=". $itemid; sql_query($query); } function _updateViewsCount($itemid, $views) { // update the Views table with the new count $query = "UPDATE " . sql_table('plugin_views') . " SET views='$views' WHERE id=$itemid"; sql_query($query); } function _addViewsLog($itemid, $ip, $time) { // add IP and itemid to views_log table so it won't be recounted for X hours $query = "INSERT INTO " . sql_table('plugin_views_log') . " (ip, itemid, viewtime) VALUES ('$ip', '$itemid', '$time')"; sql_query($query); } function _updateViewsLog($itemid, $ip, $time) { // update the views_log viewtime so it won't be recounted for X hours $query = "UPDATE " . sql_table('plugin_views_log') . " SET viewtime='$time' WHERE ip='$ip'"; sql_query($query); } function doAction($actionType) { global $CONF, $member; if (!($member->isLoggedIn() && $member->isAdmin())) return 'Sorry. not allowed'; if ($actionType == 'resetview'){ $id = requestVar('id'); $query = "UPDATE " . sql_table('plugin_views') . " SET views=0 WHERE id=$id"; sql_query($query); } else if ($actionType == 'resetallview') { $query = "UPDATE " . sql_table('plugin_views') . " SET views=0"; sql_query($query); } $order = requestVar('order'); $sort = requestVar('sort'); header('Location: ' . $CONF['PluginURL'] . 'views/index.php?sort=' . $sort . '&order='.$order); } } ?> - Hoofdstuk: 5. Losse gedachten