mee haar op

Hoe zit dat nu eigenlijk in ’t Frans? Destijds heb ik geleerd dat er regels zijn die bepalen wanneer je mag tutoyeren, waarbij je er meteen mag van uitgaan dat je default maar beter vous voor alles en iedereen gebruikt.

(Ik meen mij te herinneren tijdens een poging, mijn onkunde van de gesproken Franse taal aan te tonen, de meest platte aanspreekvorm tegen een volslagen onbekende te hebben gebruikt. Iets in de zin van T’as plus de papier pour la machine?. Achteraf terechtgewezen, heb ik mijzelf bezweerd nooit meer te tutoyeren tenzij daar expliciet toe uitgenodigd.)

Edoch die halve inleiding voor de volgende vraag: ik kwam toevallig op Freyaweb terecht (Freya Van den Bossche zwanger –DS 06/01/2005 07/01/2005 08/01/2005 10/01/2005), en daar kon ik het volgende lezen:

Tu aimerais bien savoir un peu plus sur Freya mais tu préfères lire en français? D’ici peu, ce sera possible.
Le site web de langue française n’existe pas encore et nous nous en excusons. Nous nous efforçons actuellement d’achever au plus vite la version française du site web.

Behalve het rommelige schoolfrans (zo komt het toch over), wordt de bezoeker meteen met tu aangesproken. Is dat progressief-jong en correct, typisch Belgisch en in ’t echt Frans zou dat niet gebeuren, of eigenlijk nog steeds helemaal beter te vermijden?

(’t Zal wel ergens op ’t internet staan zeker? Is er een franstalig equivalent van het Taaluniversum? Tips voor goede franstalige sites zijn overigens welkom.)

potten

Potten en ketels, that is, die van dat spreekwoord. De Vlaamsche kwaliteitskrant drukt vandaag de nieuwsbrief van het communicatiebureau reflex af, meer bijzonder het stukje over Het brilletje van Verhofstadt.

Woah! Cornelis waant zich waarschijnlijk nog in de 19e eeuw. Of hij is jaloers dat hij geen woordvoerder meer is voor de VLD, dat kan natuurlijk ook.

Of de bril van Verhofstadt nu passend is of niet doet eigenlijk niet terzake, maar de manier waarop Cornelis op het neusornament reageert, getuigt van een kleinburgerlijkheid en vastgeroestheid die zijn gelijke niet kent.

Wat ik nu op de neus van premier Guy Verhofstadt te zien kreeg, moet voor de liberale partij als een donderslag bij heldere hemel zijn overgekomen. Had de oprichter van de VLD, de schrijver van de Burgermanifesten nu zijn laatste intellectuele handelsmerk overboord gegooid? Wat ik zag was iets wat ik op de neus van auteur Tom Lanoye of Geert Lambert, de voorzitter van Spirit verwachtte. Leuke modieuze boys, lekker progressief, ja een beetje snob en oh zo ijdel. Maar toch niet op de neus van de premier?

Dat houd je toch niet voor mogelijk?!
Niet dat Cornelis ook maar één woord meent van wat hij schrijft. hij zit immers zelf in de wereld van trends en uiterlijk. Natuurlijk hoopt hij dat er straks een mode-opbod losbarst over wat nu de mooiste jurk zou zijn voor de zwangere Freya Van Den Bossche. Natuurlijk hoopt hij dat iedereen zijn nieuwsbrief met veel consternatie en ontzetting leest. Het communicatiebureau van Cornelis kon immers best wat reclame gebruiken. En geen reclame zo makkelijk als wat controverse. Reflex is tenslotte een communicatiebureau; Cornelis kent het reilen en zeilen van de branche. De ziel van de politicus, my ass. Die ziel van de politicus, is, net zoals die van de medewerkers van de communicatiebureaus, reeds lang te vondeling gelegd.

mediatheek (2)

We beschikken ondertussen over een database, die we gepopuleerd hebben met items, auteurs, etc. Nu dienen we de gegevens uit de database te ontsluiten.

Personen, items, series, zijn allemaal gelijkaardig opgebouwd. Ze bestaan minstens uit een hoofbestand zonder extensie, waarvoor er in een .htaccess bestand een ForceType directive wordt meegegeven:

ForceType application/x-httpd-php

Deel 2: de personen

people
‘people’ is het hoofdbestand. Het gebruikt een aantal bestanden waarin functies gegroepeerd zitten, stelt de SQL queries op, en toont de gegevens.
inc.php
Bevat twee functies die op elke pagina worden gebruikt.
alphaNav ($link,$vet = '') dat het alfabetisch submenu (links) opstelt, en eventueel een letter ‘ontlinkt’ en vet maakt
function fncParams ($welke = 1) dat de parameters aan het einde van de URL inleest (bvb de ‘m’ op het einde van http://www.volume12.net/library/people/m)
people.php
Twee functies die worden aangewend om de gegevens te tonen.
getAuthors($skwel = '', $alphaid = ''): krijgt de SQL query mee die in het hoofdbestand wordt bepaald, en roept de tweede functie op, als er een letter werd gekozen (zoals de ‘m’ hierboven); is er geen letter gekozen, wordt er enkel een alfabetisch geordende lijst van ‘auteurs’ getoond.
getWorks($recid = 0,$wat='',$detail='short') is de functie die in de eerste functie wordt opgeroepen om de werken, geassocierd met een gegeven ‘auteur’ te tonen.
elders
Elders staat ook nog ergens de functie connection($query) verborgen, waarin de connectie naar de database wordt gedefinieerd.

Verder uitgediept en uitgeschreven (zonder de meeste HTML opmaak) geeft dat dan:

people
require_once ("inc.php");
require_once ("people.php");
» roept de twee bestanden met functies op
$alphaid = fncParams(1);
» haalt de eerste parameter aan het einde van de URL op
if ($alphaid == '0-9')
{
$skweltoo = 'FROM lib_author WHERE liba_lname RLIKE "^[' . $alphaid . ']"';
} else {
$alphaid = $alphaid{0};
$skweltoo = 'FROM lib_author WHERE liba_lname LIKE "' . $alphaid . '%"';
}
» hier sluiten we meteen uit dat er ‘gevaarlijke code’ kan worden meegegeven in de URL: er wordt enkel naar het eerste karakter ($alphaid{0}) gekeken, of de string ‘0-9’
$cntrecords = connection('SELECT * ' . $skweltoo);
$nrrecords = mysql_num_rows($cntrecords);
» telt het aantal records voor de query
$skwel = 'SELECT * ' . $skweltoo . ' ORDER BY liba_lname, liba_fname ASC';
» stelt de volledige query op
echo alphaNav ('people', $alphaid);
echo $nrrecords;

» toont het alfabet-menu links en het aantal records
if ($nrrecords > 0)
{
echo getAuthors ($skwel, $alphaid);
} else
{
echo ('Sorry. No records.');
}
» toont de data, of in het geval er geen gegevens zijn, de melding Sorry. No records.
inc.php
function alphaNav ($link,$vet = '')
{
$arr = array('0-9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
$aNav = '';
foreach ($arr as $value)
{
if ($value == $vet)
{
$aNav .= ' <strong>' . $value . '</strong>';
} else {
$aNav .= ' <a href="' . $link . '/' . $value . '">' . $value . '</a>';
}
}
$aNav .= ' - ';
if ($vet == '')
{
$aNav .= ' <strong>all</strong>';
} else {
$aNav .= ' <a href="' . $link . '/">all</a>';
}
return $aNav;
}
» geeft het alfabetisch menu weer, volgens de parameters die werden meegegeven in echo alphaNav ('people', $alphaid); people wordt toegevoegd via $link, en naar gelang de letter,gedefinieerd als/in $alphaid wordt één van de letters vet getoond
function fncParams ($welke = 1)
{
$var_array = explode("/",getenv("PATH_INFO"));
$num = count($var_array);
if ($num > $welke)
{
$param = $var_array[$welke];
} else {
$param = 'all';
}
return $param;
}
» geeft de eerste parameter aan het einde van de URL terug
people.php
De twee functies, zonder verdere commentaar (het is laat, ik ben moe; als er vragen over zijn, stel ze gerust in de comments bij deze entry)
function getAuthors($skwel = '', $alphaid = '')
{
$returnit = '';
// if there are any records, then please show them
if ($skwel != '')
{
$beginletter = '';
$start = 0;
$returnit .= '<ul>';
$returnit .= "n";
$result = connection($skwel);
while ($row = mysql_fetch_array($result))
{
extract($row);
$start += 1;
if ($beginletter != strtolower($liba_lname{0}))
{
if ($start > 1) { $returnit .= '<li> </li>'; }
$beginletter = strtolower($liba_lname{0});
}
$returnit .= '<li&gt,<a href="person/' . $liba_id . '">' . $liba_fname . ' ' . $liba_lname . '</a></li>';
$returnit .= "n";
if ($alphaid != '')
{
$returnit .= getWorks($liba_id,'');
}
}
$returnit .= '</ul>';
$returnit .= "n";
} else {
$returnit = 'Sorry. No records.';
}
return $returnit;
}
» bovenstaande functie toont de ‘auteurs’ en roept, indien nodig de volgend functie op
function getWorks($recid = 0,$wat='',$detail='short')
{
$retworks = '';
if (is_numeric($recid) && $recid > 0)
{
$listworks = 'FROM lib_work, lib_wauthor WHERE libwa_work=libw_id AND libwa_author = ' . $recid;
if ($wat != '')
{
$listworks .= ' AND FIND_IN_SET("' . $wat . '",libw_media)>0';
}
$listworks .= ' ORDER BY libw_title, libw_year';
$cntrecords = connection('SELECT COUNT(*) as bar ' . $listworks);
$nrrecords = mysql_num_rows($cntrecords);
if ($nrrecords > 0)
{
$retworks = '<ul class="' . $detail . '">';
$retworks .= "n";
$result = connection('SELECT * ' . $listworks);
while ($row = mysql_fetch_array($result))
{
extract($row);
$retworks .= '<li><a href="item/' . $libw_id . '">' . $libw_title . '</a> (' . $libw_year . ')';
if ($detail == 'long')
{
$retworks .= '<br />';
$br = 1;
$retworks .= $libw_format;
if (isset($libw_length) && $libw_length != '')
{
$br += 1;
$retworks .= ', ' . $libw_length;
if (substr_count($libw_media,'book')>0 || substr_count($libw_media,'comic')>0)
{
$retworks .= ' pages';
} else {
$retworks .= ' minutes';
}
}
if (isset($libw_code) && $libw_code != '')
{
$br += 1;
if (substr_count($libw_media,'book')>0 || substr_count($libw_media,'comic')>0)
{
$retworks .= ', ISBN ';
} else {
$retworks .= ', ';
}
$retworks .= $libw_code;
}
if ($br > 0)
{
$retworks .= "<br />n";
}
$br = 0;
if (isset($libw_where) && $libw_where !='')
{
$retworks .= 'from: ' . $libw_where;
$br += 1;
}
if (isset($libw_when) && $libw_when !='')
{
$retworks .= ' on ' . DateName($libw_when,'short');
$br += 1;
}
if ($br > 0)
{
$retworks .= "<br />n";
}
$retworks .= 'info & sales: ';
if (isset($libw_amazon) && $libw_amazon !='') { $retworks .= ' [<a href="http://www.amazon.co.uk/exec/obidos/ASIN/' . $libw_amazon . '/decemberorg00/" title="buy @ amazon uk">amazon uk</a> / <a href="http://www.amazon.fr/exec/obidos/ASIN/' . $libw_amazon . '/xi12-21/" title="achetez @ amazon fr">amazon fr</a>]';}
if (isset($libw_imdb) && $libw_imdb !='') { $retworks .= ' [<a href="http://us.imdb.com/title/' . $libw_imdb . '" title="info @ imdb">imdb</a>]';}
}
$retworks .= '</li>';
$retworks .= "n";
}
$retworks .= '</ul>';
$retworks .= "n";
}
}
return $retworks;
}
elders
De connectie naar de database
function connection($query)
{
$db = @mysql_connect("UW DATABASE HOST", "UW DATABASE USER", "UW DATABASE PASWOORD");
if (!$db) {
echo("Connection to database failed.");
}
if (!@mysql_select_db("UW DATABASE")) {
echo("Database connection failed.");
}
$result = mysql_query($query,$db);
if (!$result) {
echo("Error: " . mysql_error());
}
return $result;
}

In het menu bij de personen zal je zien dat je enkel de ‘auteurs’ van boeken, cds, strips, of films kan laten weergeven. Die links leiden naar bestanden waarin de SQL werd aangepast om enkel op boeken, cds, strips, of films te zoeken. In het geval van boeken bvb, door dit toe te voegen: WHERE FIND_IN_SET("book",libw_media)>0 aan de SQL statement. De lib_work tabel (cfr) had een SET, libw_media waarin kon worden gespecifieerd of het om audio, book, comic, movie ging, of een combinatie. Als je dan enkel zoekt op WHERE libw_media = 'book', dan mis je de items die bvb zowel een boek als een cd bevatten (zoals The Future Dictionary of America); daarom zoek je of een bepaald ‘iets’ voorkomt in de set (FIND_IN_SET).

Voila. Tot zover het inzicht in de code achter de mediatheek. Hopelijk heeft iemand er iets aan.

luidsprekerdata via UTP

Tsja, die UTP. Ik had via del.icio.us al een paar links naar de DIY pagina’s geplaatst, ik som ze hier nog eens op voor ’t gemak.

  • DIY Cat5 Speaker Cables (door Chris VenHaus)
  • TNT DIY Audio Cables (cfr hieronder)
  • Speaker cables TNT Triple T Listening to these cables with an extremely revealing system, they sported a well extended and articulated bass range, a polite and never-invading midrange, cold-leaning mid frequencies, yet with rather good thickness, sharply glossy mid-highs, and very refined and accurate extreme highs. Their spatial reconstruction ability is simply very good (I’d say incredible, bearing in mind its cost), and is the real strong point of “TNT tripleT”. There is a lot of air between the elements, which also sound stable and focused (here I experienced a relevant difference compared with the other cables I could test!). Their dynamic features are at very good level, too.
  • CAT 5 cables for dummies (FAQ) This isn’t an article per se as much as it is a further explanation of some of our DIY cable and interconnect projects. Between our egroup and personal emails, we have been receiving numerous questions regarding CAT 5 wire and the proper construction techniques for our DIY Triple T and the FFRC speaker cables.
  • The Naked Truth about Speaker-Cables (technisch -ik heb er mij nog niet doorgeworsteld, dus ik weet niet of ik er überhaupt iets van begrijp)
  • DIY Speaker Cable Face-off Met veel prentjes en een interessante tabel vol technische gegevens op het einde. De Brico-kabel die ik gebruik (en dacht ik OFC was), leunt vermoedelijk dicht aan bij die ‘Sound King’ kabel.

Veel leesgenot.

vastberaden

Of hij wel wist hoe laat het was?! En of hij soms niet besefte hoe erg het was hier een half uur op hem te moeten wachten, niet wetend of ze nu wel of niet tijd had voor een consumptie.

Het eerste deel van die zin eerst met de nadruk op moeten, dan weer, alsof haar dat dan toch maar beter leek, op zitten, en allemaal in eenzelfde ritme terwijl ze de rest van haar pint, die ze uiteindelijk dan toch maar had besteld, ze kon moeilijk blíjven wachten, vertelde ze hem, door haar keelgat naar binnen kapte.

De man was eerst puffend –wellicht van zich te reppen van de parkeerplaats die hij ongetwijfeld pas na veel moeite in het spitsuur had gevonden– aan de draaideur bij de ingang blijven rondkijken. De wanhoop stond toen even op zijn gezicht te lezen (was ze er nog, of was ze reeds woedend met een taxi naar huis gekeerd), en die klaarde slecht heel gedeeltelijk op toen hij haar in de massa had ontwaard, alleen aan een tafel, pint in de aanslag.

Toen ze, nog niet zo bijster lang geleden, het etablissement was binnengetreden, had ik haar reeds opgemerkt. Met zelfzekere tred wandelde ze de ganse zaak rond, op zoek naar de man die daarnet, in haar ogen dus veel te laat, was binnengekomen. Ontzet door zijn afwezigheid zette ze toen gelijk haar mars verder, recht op de toog af. Daar bestelde ze beschaafd een pint, en een tweede, en een derde, die allemaal in één vloeiende beweging werden geleegd. Met de vierde pint in haar hand, en nog steeds met vaste tred, stevende ze vervolgens op het tafeltje naast mij af.

Ze kwam dicht tegen mij aan zitten, bijna té dicht om het voor mij nog comfortabel te noemen, waardoor ik even van mijn boek opkeek en haar vragende blik toewierp, die echter met danig misprijzen werd beantwoord, dat ik al snel verdere pogingen tot contact opgaf, en mij terug achter mijn boek verschool.

Ze wachtte tot ik mijn avondmaal ging halen aan te toog, voor ze haar volgende zet probeerde. Nog dichter kwam ze, al was dat bijna schier onmogelijk zonder bij mij op de schoot te kruipen, om vervolgens een sigaret op te steken en haar eerste rook over mijn soep uit te braken. Ik keek opnieuw op.

Net op het moment dat ze haar tweede longvol over mijn soep wilde uitstorten, en ik haar vrije rechterhand naar mijn linkerbeen toe zag bewegen, stapte de man op haar tafel af. Zonder verpinken verplaatste ze haar slagveld en begon haar tirade.

kabelvlecht

Opa Pettson vroeg: Voor wat betreft die luidsprekerkabel: is die gevlochten van UTP-kabel? Nope, maar de gevlochten UTP staat die wel hoog op het “te testen” lijstje.

De kabel zit als volgt in elkaar:

  • 10 meter 2,5mm stranded luidsprekerkabel uit de Brico, verknipt tot stukken van zo’n 2,5 meter, en + en – gesplitst. In totaal dus 12 lengtes van 2,5 meter. Kostprijs: vergeten, maar verwaarloosbaar.
  • 2 x 4 bananenplugs van Monster Cable (met 24K goud). Kostprijs: 2 x net geen 40 EUR

En dan vlechten. De Monster plugjes zijn heel eenvoudig te gebruiken: er komt geen soldeerbout aan te pas. Ontbloot stukje kabel erin steken, plugje vastdraaien, en klaar. Zo ziet het eruit:

gevlochten luidsprekerkabel

Geen biwiring, geen bi-amping. Al ben ik van plan zowel biwiring, als die UTP, binnenkort eens te testen.

En zoals reeds vermeld, geeft dit (bij mij) een zeer strak en gedetailleerd geluid.

catalogus wishlist

Alvorens ik een lijstje met catalogi overloop, wat zijn mijn verwachtingen?

Minimumvereisten:

  • Sorteren op de familienaam van de auteur/uitvoerder/whatever.
  • Titels sorteren op eerste betekenisvolle woord (eventueel zelf een lijst van lidwoorden e.d. kunnen ingeven).
  • Sorteren op serie
  • Chronologisch ((eerste) release datum)
  • Automatisch invullen/ophalen van de gegevens via de EAN/UPC/barcode.
  • Web based of op zijn minst publiceerbaar op een website (al is het maar een HTML-export, maar dan wel customisable en standards compliant)
  • Boeken, CDs, Strips, Films, in éénzelfde programma.
  • Geen features, maar een degelijke en goed functionerende basis (titel, auteur(s), barcode/ISBN, jaar eerste release, jaar deze release).

Leuk, maar van secundair belang:

  • Niet US-centrisch: er bestaan ook Franstalige, Nederlandstalige, etc. boeken en CDs.
  • Cover art: goed voor visuele identificatie.
  • Genres
  • Uitgever / Record Company

Zéér wenselijk, maar waarschijnlijk utopisch:

  • Ophalen, verdelen en linken van alle gegevens (bvb bezetting bij Miles Davis op Birth of Cool: Lee Konitz, Gil Evans, Miles Davis, Gerry Mulligan, Al McKibbon, Max Roach, Kenny Clarke, John Lewis, Al Haig), en bij klassieke CDs natuurlijk.
  • Searchable / browseable track listing
  • Sleeve notes / libretto / synopsis

Veeleisend zijn we anders niet. Het hoeft zelfs niet eens gratis of Open Source te zijn.

mediatheek (1)

Hoe zit die mediatheek in elkaar, kreeg ik als vraag via e-mail (nadat ik eigenhandig mijn comments off-line had gehaald). Ewel, da’s simpel. Letterlijk. Geen fancy dingen; geen automatische lookups, zelfs geen admin tool. Alles wordt ingegeven via phpMyAdmin. (Wel, dat klopt niet helemaal: ik gebruik CocoaMySQL, maar dat doet eigenlijk krak hetzelfde.) Een zeer primitief systeempje.

Deel 1: de database.

Er zijn vijf tabellen in een MySQL database: work, author, series, wauthor en wseries.

work
De centrale tabel, waarin de cruciale identificatiegegevens van het item worden bijgehouden.
Bevat een id, de title, wat het is (audio, book, comic, movie), in welk formaat (hardcover, paperback, CD, SACD, LP, DVD, VHS), en facultatief het jaar, de lengte, de nummers van de barcode, de amazon ASIN, de imdb code, wanneer gekocht, waar gekocht en eventuele notities.
Wat het is, en het formaat zijn SETs, waardoor je dus meer dan 1 item kan kiezen
CREATE TABLE lib_work (
libw_id mediumint(9) unsigned NOT NULL auto_increment,
libw_title varchar(150) NOT NULL default '',
libw_media set('audio','book','comic','movie') NOT NULL default 'audio',
libw_format set('hardcover','paperback','CD','SACD','LP','DVD','VHS') NOT NULL default 'CD',
libw_year varchar(4) default NULL,
libw_length varchar(5) default NULL,
libw_code varchar(150) default NULL,
libw_amazon varchar(23) default NULL,
libw_imdb varchar(23) default NULL,
libw_when date default NULL,
libw_where varchar(50) default NULL,
libw_notes text,
PRIMARY KEY (libw_id),
KEY libw_title (libw_title,libw_media,libw_year)
) TYPE=MyISAM;
author
Een id, de voornaam, familienaam, en facultatief de geboortedatum, sterfdatum en notities. Die laatste drie velden heb ik nog nooit gebruikt.
CREATE TABLE lib_author (
liba_id mediumint(8) unsigned NOT NULL auto_increment,
liba_fname varchar(25) default NULL,
liba_lname varchar(50) NOT NULL default '',
liba_born date default NULL,
liba_died date default NULL,
liba_notes text,
PRIMARY KEY (liba_id),
KEY liba_fname (liba_fname,liba_lname)
) TYPE=MyISAM;
series
Voornamelijk in het leven geroepen voor de stripverhalen, maar is ook van toepassing voor de rest (John Zorn’s Masada bvb)
Een id, een naam, en notities.
CREATE TABLE lib_series (
libs_id mediumint(8) unsigned NOT NULL auto_increment,
libs_title varchar(50) NOT NULL default '',
libs_notes text,
PRIMARY KEY (libs_id),
KEY libs_title (libs_title)
) TYPE=MyISAM;
wauthor
En nu begint de leute: we linken de auteur aan het werk. Auteur wordt hier heel ruim gezien.
Een id, het work id, het author id, en de rol die de auteur speelt (alweer in een set): composer, conductor, editor, dessins, director, performer, scenario, writer
CREATE TABLE lib_wauthor (
libwa_id mediumint(9) unsigned NOT NULL auto_increment,
libwa_work mediumint(9) NOT NULL default '0',
libwa_author mediumint(9) NOT NULL default '0',
libwa_role set('composer','conductor','editor','dessins','director','performer','scenario','writer') NOT NULL default 'performer',
PRIMARY KEY (libwa_id)
) TYPE=MyISAM;
wseries
En hetzelfde voor de series.
Een id, het work id en het series id; en dan ook nog eens de plaats in de serie (deel 1, 2, 3 etc)
CREATE TABLE lib_wseries (
libws_id mediumint(9) unsigned NOT NULL auto_increment,
libws_work mediumint(9) NOT NULL default '0',
libws_series mediumint(9) NOT NULL default '0',
libws_order mediumint(9) NOT NULL default '1',
PRIMARY KEY (libws_id),
KEY libws_order (libws_order)
) TYPE=MyISAM;

Voila, een zeer eenvoudige database dus. Alle invulwerk gebeurt manueel. En ja, de benamingen en zo konden properder, maar het was eigenlijk alleen maar voor eigen gebruik bestemd, en niet voor publicatie.

commentaar

Oeps. Ik was aan ’t prutsen met MT-blacklist en consequently aan ’t rommelen in mt.cfg, toen ik als de gesmeerde bliksem weg moest om alsnog te laat te komen op een nieuwjaarsfamiliefeest.

Waardoor ik vergeten was, niet alleen van mt.cfg terug te uploaden, maar tevens van het weblog in MT te rebuilden. Waardoor de comments niet meer toegankelijk waren.

Gisteren en vandaag begon ik last te krijgen van de commentaarspammers, en ik was op zoek gegaan naar een oplossing. MT-blacklist heb ik voorlopig niet aan de praat gekregen, maar ik heb wel de naam van het commentaar-script gewijzigd, zodat de spambots hopelijk toch enkele dagen op afstand worden gehouden.

En natuurlijk heb ik nog zelden zoveel commentaar gekregen op een entry als nu (dank u, overigens). Ik bundel zo snel mogelijk mijn antwoorden in een artikel of twee.

Oh, en de commentaar zou terug moeten werken.

[update:] ik zal ondertussen ook maar eens de Six Apart Guide to Comment Spam doornemen.

intermezzo

Tussen nieuwjaarsbezoekjes rap nog wat tijd gevonden om:

  1. Van 416 tot 442 CDs in de database te komen
  2. Vier keer drie kabels te vlechten om tussen de luidspreker en de versterker te hangen. Met een zeer strak en gedetailleerd geluid als resultaat. Caveat: er zijn drie zaken veranderd:

    1. de luisterrruimte zelf (OSB vloer)
    2. de luidsprekerkabel (+ de luidsprekers staan iets dichter bij elkaar)
    3. de voeding: er zit een UPS (+/- netfilter) tussen

(Is er nu echt niets deftigs te vinden om uw CDs en boeken te catalogiseren?)