• Africa – Toto

    A capella-versie van Toto’s Africa door Perpetuum Jazzile. Mét regenbui en donder en bliksem:

    Tss.

  • Related posts voor Drupal

    Mijn artikels hebben categorieën en trefwoorden. Ik wil per artikel een lijst van verwante artikels, op basis van de trefwoorden (tags) die eraan gekoppeld zijn.

    Ik weet niets van modules maken voor Drupal — dat zal voor dín eens zijn — dus doe ik het allemaal zuiver persoonlijk voor mezelf. In een functie die ik bij gebrek aan betere plaats in template.php steek.

    1. Lijst van tags voor een gegeven node krijgen

    $tags=taxonomy_node_get_terms_by_vocabulary($node, 2);
    $taglist=implode(",",array_keys($tags));

    Simpel: taxonomy_node_get_terms_by_vocabulary geeft mij een array van alle tags (vocabulary ID=2) voor een gegeven node. Ik heb er enkel de keys van nodig, en dan nog enkel de keys als een lijst voor in een SQL query.

    2. Lijst van nodes gesorteerd op aantal gemeenschappelijke tags

    Alle nodes gekoppeld aan de tags uit de lijst is dit:

    SELECT * FROM node LEFT JOIN term_node ON node.vid=term_node.vid WHERE tid in ($taglist)

    Dat gegroepeerd per node-ID en aflopend gesorteerd op aantal tags per node, is dit:

    SELECT node.nid FROM node LEFT JOIN term_node ON node.vid=term_node.vid WHERE tid in ($taglist) GROUP BY node.nid ORDER BY count(tid) DESC

    …en dat geeft wat ik wil: een lijst van node-IDs, aflopend gerangschikt op “verwantschap”, ‘t is te zeggen, op aantal gemeenschappelijke tags met de oorspronkelijk doorgegeven node-ID.

    Kleine verfijningen: bijkomend ook aflopend sorteren op datum (ORDER BY created DESC), de huidige node er niet bijzetten (node.nid<>$nid), enkel gepubliceerde nodes tonen (node.status<>0) een optie toevoegen om het aantal te beperken (LIMIT $limit) en omdat ik toch aan het hacken ben: meteen ook de titel en het aantal reacties erbij ophalen, dan kan ik in één moeite een geformatteerd lijstje outputten.

    Alles tesamen geeft dat dan:

    function get_related($nid,$limit) {
      $node=node_load($nid);
    
      $tags=taxonomy_node_get_terms_by_vocabulary($node, 2);
      $taglist=implode(",",array_keys($tags));
    
      $related=db_query("SELECT node.nid nid, title, 
         comment_count FROM node LEFT JOIN term_node ON 
         node.vid=term_node.vid LEFT JOIN node_comment_statistics 
         ON node.nid=node_comment_statistics.nid WHERE tid 
         IN (%s) AND node.nid<>%d AND node.status<>0 
         GROUP BY node.nid ORDER BY count(tid) DESC, 
         created DESC LIMIT %d", 
      $taglist,$nid,$limit);
    
      while ($rel=db_fetch_object($related)) {
        $result.="<p>".l($rel->title,"node/".$rel->nid);
        $result.=" ($rel->comment_count)</p>\n";
      }
      return $result;
    }

    Dat moet dan nog wat opgeleukt worden, natuurlijk: sanity checks allerhande, een lijst van random dingen geven uit de laatste maand als er geen verwante items gevonden werden bijvoorbeeld. Maar het werkt toch al in eerste instantie.

  • Terug gaan werken

    Zo. Ik ben terug aan het werken.

    Voorsalsnog vanuit mijn thuisbasis: een stukje masterclass bijschaven voor volgende week.

    Maar ik probeer woensdag weer de trein te nemen. Al was het om mijn ziektebriefje af te gaan geven. En desnoods zonder rugzak, want mijn hematoom —ik overweeg het een eigen naam te geven— doet toch maar aardig, vooral omdat ik gisteren veel te lang recht gezeten heb blijkbaar.

  • Ragtime 1980s

    Achtereenvolgens:

    Come on Eileen (Dexy’s Midnight Runners)
    Don’t You Want Me Baby (Human League)
    The Final Countdown (Europe)
    Axel F (Harold Faltermeyer)
    Material Girl (Madonna)
    Every Breath You Take (The Police)
    Don’t Stop Believin’ (Journey)
    Living on a Prayer (Bon Jovi)
    Never Gonna Give You Up (Rick Astley)
    Total Eclipse of the Heart (Bonnie Tyler)

    En als het toch ragtime mag zijn:

    Martin Spitznagel en Bryan Wright doen Star Wars (het ding in de Cantina) in een ragtimeduet. Het origineel was al ragtime natuurlijk.

  • Del.icio.us op 7 juni 2009

    • 16-year-old girl is a term used as a sweeping reference to all teenage girls on teh internets (in fact, most 16 year-old girls are 13 or younger): their juvenile gossip, teen angst, inability to say a sentence without the word "like", excitement over pop culture and incoherent posting using strange expressions, unusual typing styles, and aLtCaPs to scald your retina. They are also a known producer of anti-lulz, the disease that causes AIDS and a whole slew of other virile venereal diseases.
      (tags: lulz)
    • I started keeping notes and in celebration of all things Monkey Island, I thought I'd share them.

  • De kiezing

    Ik heb het uitgehouden tot iets voor negen, en dan is mijn schoen richting televisie gevlogen.

    Siegfried Bracke: Mijnheer Dedecker, zijn we d’er met z’n allen over gegaan tijdens de campagne, in termen van modder gooien?

    Jean-Marie Dedecker: (knikt) Ja. Maar ik denk —en ik weet dat dat weer niet in goede aarde zal vallen— ik denk dat de journalistiek ook wel eens in eigen boezem mag kijken. Wat er de laatste drie maand geschreven en gebeurd is… er belde vanavond een krant naar mij, ik zal ze bij naam noemen, De Morgen. Aan dergelijke rioolkrant geef ik geen commentaar meer. Begrijp je? Je moet ook als journalist eens zeggen, “waar zijn we mee bezig in dit land?”

    Bracke: (sputterend, terwijl alle politici rond de tafel staan te grinniken) Ik zou niet weten waar het over gaat, meneer Dedecker. Laten we bij de politiek blijven.

    Getver. Le culot.

  • Grote kuis

    Ik heb opkuis gehouden in mijn weblogfeeds.

    Het werd wat tijd: er zaten er tussen met ettelijke honderden artikels per week, waar ik dan telkens de eerste drie of zo van las en de rest “mark all as read” zette (HuffPo, iemand?), er zaten ertussen die al jaren verhuisd waren naar een ander adres (die er dan in zitten als Naam1, Naam2, Naam3), en er zaten ertussen die ik las uit gewoonte, maar die echt slecht voor mijn bloeddruk werden (op uw nuchtere maag iemand lezen schrijven dat hij officieel in Wallonië woont en “dus” zal stemmen voor Vlaams Blok Europees en FN regionaal want het is niet het moment om picky te zijn bijvoorbeeld). 

    Het lucht wel op, zo grote kuis houden.

    Misschien dat ik de rest van de dag wel grote kuis houd op de rest van de computer. Eén voor één de programma’s bekijken en weggooien wat ik niet meer gebruik — in Firefox staan er ongetwijfeld een hoop extensies die ik nooit gebruik, bijvoorbeeld.

    ‘t Is tussen dat en GTA IV spelen. Weinig zo fijn als met Tori Amos op de autoradio cruisen door de stad.

  • Beatles Rockband

    Wow.

    Beatles

    Bekijk het hele filmpje op thebeatlesrockband.com/cinematic.php.

    Dit is iets waarvoor ik me wel eens zo’n Xbox zou kunnen kopen. Of zo.

    [Downloaden kan ook]

  • Del.icio.us op 5 juni 2009

  • Del.icio.us op 4 juni 2009

  • Reetveter

    Ze waren al een tijd geleden thuisgekomen met “ik ben jouw oma!” en geen mens die wist waar het over ging, zijzelf nog het minst van al.

    Vanavond moest Zelie weten wat “reet” eigenlijk betekent.

    Oh boy, denk ik dan. Hier gaan we weer. One of those conversations.

    Ik probeer er mij van af te maken met een “ik reed naar huis”, maar Zelie wil weten of er nog andere betekenissen zijn. “Een reet dat kan ook een kier zijn of een spleet of zo… Waarom soms?”

    En dan komt de aap uit de mouw: dat ik eens op YouTube moest intypen “star wars lord reetveder”. Wat ik bij deze dan maar gedaan heb:

    Vinger op de pols van de populaire cultuur (van vorig jaar), het jonge volkje.

  • De man van Atlantis is weird

    Serieus:

  • Bultrug

    Mijn rug ziet er niet bont en blauw uit, als ik zo in de spiegel kijk. Ik dacht dat het allemaal wel meeviel, met dat hematoom waar de verpleegsters zo met grote angstige ogen naar keken in het hospitaal.

    Ik dacht dat ik een dikke pleister op mijn rug had.

    Dat bleek uiteindelijk nog mee te vallen, die pleister. Hij is er sinds vanmiddag af, en het bleek niet echt zo’n monster te zijn als het aanvoelde.

    Maar nu ik zonder pleister aan mijn rug kan voelen, voel ik dat hematoom dus wel: zoiets ter grootte van een vuist, ongeveer half zo hoog. Hard. En pijnlijk. En daarrond een zone, ongeveer zo groot als een grote ovalen braadpan, waar het niet zo dik maar toch wat dik staat, en squishy. Niet pijnlijk, gelukkig.

    Brr.

    Mijn papier met instructies van Dokter Neurochirurg herlezen (Sandra had er mij aan herinnerd): ik mag een maand tot anderhalve maand niets dragen of opheffen.

    Brr.

    Vrijdag afspraak in het hospitaal.

    We shall see.

  • Scheduling entries in Drupal

    Soms leert een mens nog het meest bij van de dingen die niet meteen helemaal helder zijn. Een stom, klein, en uiteindelijk —zo bleek— eenvoudig op te lossen voorbeeld: iets dat compleet voor de hand liggend is in WordPress, het klaarzetten van een artikel om op latere datum gepubliceerd te worden, is blijkbaar niet zo voor de hand liggend in Drupal.

    In WordPress ziet het er standaard zo uit:

    WordPress publish

    Als ik niet direct wil publiceren, klik ik op “Bewerk” naast “Direct publiceren” en krijg ik dit:

    Publish on...

    Duw ik op “OK” of op “Publish”, ziet het er zo uit:

    Publishing on...

    Dat wordt dan automagisch gepubliceerd op die dag en dat uur.

    Niets van dat in Drupal. Er is per node een “created” datum (die in Drupal moet ingegeven worden in een zeer welbepaald formaat, en dan nog eens in UTC ook: “2009-06-04 07:45:00 +0200” om iets op 4 juni 2009 om 9u45 te laten “gemaakt” zijn).

    …maar die “gemaakt op”-datum is dus niet de datum waarop iets zal gepubliceerd worden.

    Dat concept bestaat niet in standaard Drupal, en daar moet een module voor geïnstalleerd worden.

    Scheduler is de module waar zowat alles en iedereen naar verwijst. Installatie: downloaden en op juiste plaats zetten, zeggen welke gebruikers mogen schedulen, zeggen welke content types mogen gescheduled worden, en dat zou het moeten zijn.

    Ik wou meteen al wat aanpassen, en ik was er al meteen mee in de problemen geraakt. Standaard install en een aanpassing van het datumformaat, dat geeft me onderaan mijn invoerformulier inderdaad twee velden:

    Drupal scheduler

    Het formaat dat ik moet gebruiken (dag/maand/jaar uur:minuten) staat erbij, voor het gemak: “Format: 4/6/2009 3:58”. Helaas: als ik “4/6/2009 4:58” ingeef, krijg ik dit te zien:

    Scheduler error

    Fantastisch. Terug naar de opties voor Scheduler, en daar de standaardwaarden terugzetten dan maar (Y-m-d H:i:s in plaats van wat ik gezet had)?

    Inderdaad, dat was het.

    Een manier vinden om de input een beetje gebruiksvriendelijker te laten verlopen dan met de hand in te typen? Kijk nu, er is een patch die de datumpopup en het tijdveld van de nieuwe Date erin smurft..

    Installeren, en dat werkt, hoera! Geen enkele garantie dat die patch er bij de volgende release in zal zitten, en als hij er niet in zit, dat de mens die die patch heeft verzorgd, er zal voor zorgen dat hij hem opnieuw maakt voor de nieuwe release, maar bon.

    Scheduler zorgt er ook voor dat de datum van het artikel zelf goed komt: nu heb ik misschien wel de publicatie laten gebeuren 4 juni 2009 om 9u45, maar standaard blijft de datum van het artikel (“created”) gewoon staan waar hij op stond. Drupal heeft geen concept van “published on date”, maar als ik de optie “Alter published on time” in Scheduler aanklik, wordt het wel relatief proper omzeild.

    Oh. Juist, ja: er moet wel een cron draaien. Op mijn ontwikkeltoestel is dat niet het geval. Niet dat dat zo erg is, ik ben niet van plan machtig veel te publiceren alhier.

    *
    *   *

    Was dit de enige optie om het aan te pakken? Nee, natuurlijk niet.

    Ik heb minstens één meer complexe workflowmodule zien voorbijflitsen, maar terwijl ik dit schreef, bedacht ik dat ik ook gewoon een “publish on”-veld zou kunnen gemaakt hebben, en dat aan die content types toegevoegd hebben.

    En dan een bijkomende filter bij alle mogelijk displays: published=“yes” staat er al, het zou een kwestie zijn van er “publish on<now()” bij te zetten. Of zo. Als heeft dat misschien wel andere nadelen — snelheid, misschien? Dat die nodes alsnog zouden teuggevonden worden links en rechts, nog voor ze “gepubliceerd” zouden geraken?

    Ah well.

    Het werkt zoals het nu werkt. Ik was er heel even wat bang voor, maar ik heb weer iets bijgeleerd.

  • Ingrid Holvoet lastert

    Zozo. Ingrid Holvoet, abnormaal begaafd, publiceerde een persoonlijkheidsprofiel van Wim Betz, de voorzitter van SKEPP. Ze kan aan een foto voelen wat de persoonlijkheid is van de persoon op de foto: het onderbewustzijn van een persoon wordt namelijk gekopieerd op de foto. Vandaar dat iemand die paranormaal begaafd is zoals Ingrid Holvoet de persoonlijkheid kan aanvoelen op een foto.

    Ze noemt hem daarin onder meer een psychopaat:

    Wim Betz, voorzitter van SKEPP, universiteitsprofessor, dokter in de geneeskunde, en psychopaat.

    Groot ego, hij is belangrijk, waant zich het centrum van de wereld, alles draait rond hem, is voor 100% op zichzelf geconcentreerd. De anderen zijn van geen tel, hij is het die belangrijk is, de anderen hebben geen waarde, hij veegt ze zó van tafel, het is zijn woord dat telt.
     
    Hij is God, hij heeft het voor het zeggen, iedereen moet luisteren naar hem, anderen moeten gehoorzamen, hij is de grootste, de anderen moeten plooien, hij gaat voor niemand uit de weg.
     
    Eigent zich het recht toe om anderen te vernietigen, hij mag dat doen, want hij is immers professor Betz. Hij wordt gerespecteerd en geeerd, hij staat op een voetstuk, hij is ongenaakbaar, en dat geeft hem het recht om alles en iedereen te bekladden, te vernederen, te vernietigen, uit de weg te ruimen. Hij mag dat doen, dat is zijn recht, want hij is immers professor Betz. Zijn positie geeft hem dat recht.
     
    Verwaand, acht zich boven andere mensen verheven, kijkt neer op andere mensen, veel mensen rond hem zijn maar gewoon wat vuiligheid, die zijn toch maar het onderkruipsel van de maatschappij, daar doe je toch mee wat je wilt.
     
    Hij streeft naar macht, hij wil alles en iedereen overheersen, hij wil bovenaan staan, hij moet bovenaan staan, hij moet geprezen worden, hij moet geeerd worden.

    […]
     
    Hij kan liegen en bedriegen, hij kan zonder blikken of blozen de grootste leugens vertellen, hij kan de grootste onwaarheden verzinnen en kan het zó uitleggen dat hij nog geloofd wordt ook. Hij kan liegen en bedriegen als geen ander, hij kan mensen dingen wijsmaken als geen ander, hij kan mensen zand in de ogen strooien als geen ander. Als het dreigt uit te komen kan hij het weer zo draaien dat hij weer geloofd wordt, en de anderen (die hem betrapt hebben of op dingen gewezen hebben) worden als de bedrieger afgeschilderd.
     
    Hij kan mensen bedriegen waar ze bij staan, en hij kan hen daarbij nog het gevoel geven dat ze het grote lot gewonnen hebben. Indien hij in de verkoop zou zitten (hij zit eigenlijk wel in de verkoop, hij is een goedbetaalde vertegenwoordiger voor de farma industrie), zou hij een topverkoper zijn, hij ziet alleen zijn doel, en dat zal hij bereiken, welke middelen hij ook moet gebruiken, hij is gewetenloos, hij kan mensen ompraten en bereikt zijn doel.
     
    Hij is graag gezien bij gewetenloze mensen met een hoge positie, want hij bereikt dingen voor hen, hij kan het zich ook permitteren een hoge prijs te vragen voor zijn prestaties voor hen, want hij is goed, hij heeft resultaten, hij kan deuren openkrijgen.
     
    Hij is meedogenloos, hij is uitsluitend op zijn eigenbelang uit, ziet alleen zijn eigen voordeel, zal de dingen altijd zo draaien, tegenover alles en iedereen dat de dingen in zijn voordeel geregeld worden, de ander plooit en geeft toe, hij wint.
     
    […]

    Hij zal zich wreken tegenover iemand die tegen hem ingaat en zal dingen publiceren over die persoon om die persoon belachelijk te maken en in diskrediet te brengen. Hij zal een verhaal over iemand naar buiten brengen om die persoon te breken. Zij tactiek is het kleineren en belachelijk maken van mensen, het aan de schandpaal brengen van mensen. Hij bereikt meestal dat mensen zwichten daardoor en vanaf dan zich gedeisd houden.
     
    […]

    Als hij ergens voor verantwoordelijk wordt gesteld zal hij er zich met leugens uitwerken en bekomt hij meestal dat hij aan het ergste ontsnapt, de anderen wijken of plooien. Hij heeft er zich weer uit gewerkt, hij heeft het weer voor elkaar gekregen en hij kan weer verder doen met zijn praktijken. Hij wordt niet gestraft voor zijn wandaden, hij kan telkens weer aan straf ontsnappen, het wordt in de doofpot gestopt.
     
    Omkopen van mensen, hij overtuigt mensen met zijn argumentatie en stopt ze intussen wat geld in hun handen. De mensen zwijgen en doen wat hij wil dat ze doen. Het is alsof hij een kracht aan het werk kan zetten die hen de dingen doet doen die hij wil dat ze doen. En dat kan hij, hij heeft een duivelse macht over mensen.
     
    Geld moet naar hem toekomen, het mag niet naar een ander gaan, hij is jaloers op anderen die geld verdienen, hij moet het meeste krijgen, hij moet het meest verdienen, als hij denkt dat een ander meer verdient dan hem, dan zal hij die persoon willen breken. Hij wil geld vergaren, wil geld bijeenschrapen, wil rijk worden.
     
    Vrouwen zijn maar een voorwerp en hij doet ermee wat hij wil, hij kan ze nog beter kneden dan mannen, hij is nog beter bij vrouwen met zijn mooie praatjes dan bij mannen, vrouwen zijn nog gemakkelijker te bedriegen dan mannen, verachting voor vrouwen. Een vrouw daar kun je niet veel mee doen, die zijn waardeloos. Een vrouw is een voorwerp dat je gebruikt en weggooit als je het niet meer nodig hebt.

    Vanaf welk ogenblik wordt zoiets laster? Op een andere pagina schrijft ze zijn “patronen” neer, en daar zit het er ook bovenarms op, onder de titel “de zieke geest van Willem Betz”.

    Ik kan me inbeelden dat Betz een zeker de minimum non curat praetor-gevoel heeft, maar dergelijke nonsens moet toch ergens stoppen?

    Ik zou ze een proces aandoen van hier tot in Tokio.