Wednesday, 17 February 2010

84000 liedjes

Ik gebruik ook last.fm en ik heb sinds juli 2007 al meer dan 84000 liedjes gespeeld op mijn PC waarbij de titel en uitvoerder (automatisch) doorgestuurd worden naar last.fm.

Da's een dubbele heleboel.

Als je last.fm zoveel data geeft dan krijg je een heleboel suggesties en grafiekjes terug die je blijkbaar moeilijk in een iets oudere browser te zien krijgt (zelfs als Flash geïnstalleerd is). Respectievelijk mooi en minder mooi.

Uiteraard zijn die cijfers voor interpretatie vatbaar:
  • Ik speel vooral klassieke muziek waarbij een enkel klassiek stuk meestal uit verschillende bewegingen bestaat. Het onderscheid wordt gemaakt door een tempo-aanduiding, bv 'allegro' or 'adagio'. Veel klassieke stukken hebben echter meer dan een 'allegro', deze worden bijgevolg dubbel geteld. Een alternatief zou zijn om de bewegingen te nummeren, maar ik heb geen zin om ettelijke honderden liedjes te retaggen.
  • Uit de lijst met 'Top Artists' blijkt eerder de grootte van mijn CD collectie en het tijdstip van rippen, dan een absolute voorkeur voor een zekere componist. Na even rekenen: Door mijn collectie Haydn (150 CDs) en Bach (155 CDs) (op hetzelfde moment gekocht, maar van Bach heb ik nog maar een derde geript) ben ik ongeveer 9x gegaan; Mozart (40 CDs) en Vivaldi (40 CDs) elk ongeveer 20x; Verdi (25 CDs) en Beethoven (40 CDs) respectievelijk 13x en 15x. Andere componisten komen uit verzamel-CDs of kleinere CD boxen.
  • Uit de 'Top Tracks' van de laatste 7 dagen kan je steeds zien of ik een tijdelijke bevlieging heb gehad met een voorkeur voor specifieke werken, dan wel achtergrondmuziekgewijs door mijn playlist ben gelopen.

Sunday, 27 December 2009

Kalender afvalophalingen Nijlen 2010

Ik heb mij ook eens bezig gehouden met het ingeven van de Nijlense afvalophalingskalender in Google Calendar: raadplegen, toevoegen

Saturday, 7 February 2009

Bikers are voters

Vanavond ben ik naar een MAG info-avond gegaan over de plannen van de politiek in verband met de toekomst van het motorrijden, en lichtjes geschokt terug thuisgekomen. Als het van sommige beleidsmakers afhangt moet motorrijden blijkbaar zo snel mogelijk illegaal gemaakt worden. En in afwachting tot het zover is gekomen, moeten we bij voorkeur als melkkoe dienstdoen en ons het geld uit onze zakken laten kloppen.

Je kan het zo gek niet bedenken of iemand heeft het voorstel al wel eens op tafel gelegd:
  • Fluo vestjes verplichten, ter bevordering van de zichtbaarheid
  • Daytime Running Lights voor auto's, om de zichtbaarheid van motorrijders te verminderen (erm, wacht eens even ...)
  • Beschermende kledij verplichten
  • Technische keuring invoeren (en wij onnozele Belgen willen weer heiliger zijn dan de paus en dus moet die keuring strenger dan de Duitse TÜV)
  • Invoeren van technologische snufjes (ITS) zodat we toch maar niet te snel zouden rijden (en bijgevolg in elke bocht onderuit gaan en een hoop voetgangers neermaaien omdat onze gashendel automatisch wordt dichtgedraaid)
  • Opleiding in zoveel stappen en met zoveel minimumleeftijden dat mensen gewoon niet meer beginnen aan motorrijden (in Australië is er sprake van minimum 4 jaar een autorijbewijs hebben en minimum 28 jaar zijn vooraleer met een lichte motor mag gereden worden)
  • ...
Toch niet al die maatregelen zijn slecht? Inderdaad, maar het grote gevaar bestaat dat ze op zijn Belgisch worden ingevoerd: zonder na te denken over de details.

Het zijn ook niet enkel de pestregels die specifiek voor motorrijders worden uitgedacht. Vlaanderen's hebzucht naar meer bevoegdheden (en dat in een Europa dat hoe langer hoe meer verenigd en eenvormig wil zijn) zou er voor kunnen zorgen dat wanneer (een deel van) de verkeerswetgeving wordt overgeheveld naar de gewesten, elke Belg die zich ook al eens buiten zijn eigen gewest wil wagen, drie verschillende verkeersreglementen moet kennen. Om nog maar te zwijgen van al die buitenlanders die plots om door één land te rijden, drie sets van regels moeten kennen.

Gelukkig bestaan er nog organistaies zoals MAG en FEMA om onze vrienden politiekers af en toe terug met beide voeten op de grond te zetten. En dat terwijl hun werkingsmiddelen jaar na jaar afnemen; immers, er zijn hoe langer hoe meer motorrijders (een 300000-tal nu) en ze denken allemaal dat er genoeg anderen zijn om actie te ondernemen zodat zij zelf in hun luie zetel kunnen blijven zitten.

Om een idee te krijgen hoe de politiek zich bij de volgende (gewestelijke en Europese) verkiezingen in juni wil voordoen naar motorrijders toe, vindt er een debat plaats op 14 maart in het Antwerp Docks hotel (Noorderlaan 100, Antwerpen). Iedereen is welkom, maar kan de organisatie best op de hoogte brengen van zijn komst, zodat er voldoende plaats en drank aanwezig is.

Friday, 12 December 2008

Devoxx

On wednesday, I went to Devoxx (formerly JavaPolis).

First, breakfast as usual; then the keynotes session about JavaFX and the on-site RFID experiment.
It was the first time I heard about JavaFX. It seems to be the next Flash and it looks cool. I especially liked the fact that it runs in a JVM process separate to that of the browser so that one doesn't slow down or blocks the other. This also makes it possible to drag JFX applications out of the browser and run them standalone.
The RFID presentation was done by an ill-prepared IBM suit who, having seen the venue, seemed to have managed to remove his tie and loosen his top shirt button only barely in time. At the venue, three (sponsor) companies worked together to provide RFID-containing badges, equip all rooms with scanning portals and supply hardware and software for tracking badges and creating statistics about the attendance of various talks.
Instead of telling about anything Java-related on this Java venue, they went on about hardware, antennas, limitations of RFID, etc. Also, instead of doing one comprehensive talk, the three companies each did their own presentation and together they went 15 minutes over their alotted time.
What I missed in this keynote: the Java aspect and a real-time view of people moving about at the venue (especially those leaving the RFID talk; there were plenty).

Next, I went to the Hippo talk. Hippo is a JSR-170 compatible ECM and CMS, using Apache Jackrabbit somewhere inside. From the presentation it looked nice and user-friendly, but when I asked whether Hippo could be deployed on top of an existing Jackrabbit repository, they couldn't give me a satisfying answer. I guess I'll have to check out that for myself.

Lunch was a disaster: after queueing for ten minutes, they were out of bacon sandwiches (I don't eat cheese and I don't like fish on a sandwich), so I moved to another queue. After standing in line for another ten minutes I finally had my sandwich, but they were out of soup. And by that time they were out of soup everywere.
The organisation was very proud to announce the venue was sold out for the second time in a row: 3200 people attending. Is it that hard to multiply, say 250ml of soup by 3200 people and end up with enough for everyone?

After lunch, I went to the High Performance Java talk, which proved not to be a good start of the afternoon. The (overacting fake-jovial) presenter (Iran Hutchinson) started with a five-minute joke about his first name before going on about OSGi and how it should be used and what some of its pitfalls are (managing multiple threads in a single bundle, apparently). He also briefly mentioned Caché, some kind of high performance database that is accessed like a multi-dimensional array. This should have been the core of his talk, but I went away with the knowledge that the Knopflerfish OSGi implementation offers a GUI (something that I would have liked to have seen in the OSGi-specific talk I attended last year).

Next up, Scala. Having a functional programming and language design background, I was a bit interested in how functional programming could be implemented in Java. Simple: by breaking source compatibility: Scala is a standalone language that is compiled to Java bytecode.
They didn't go into implementation details, they just showed some basic constructs and how they are translated to Java.
Since Scala converts infix operators to method calls from left to right, operator precendence looked a bit fishy. Unfortunately, they only showed simple operators that didn't require precedence and there wasn't time for questions.

One of the few things I understood from the next talk was that Scala has a bit of a problem with mathematical expressions; well, isn't that a coincidence?
The core subject of this next talk was about cross-language development: using different languages in a single project: Java, Ruby, Groovy, Scala, ... The two guys presenting were very enthousiastic, but the whole sounded like the dialogue was provided by a Russian-to-English translator tool and I'm afraid my brain just shut down in horror at some point. All I know is that if I ever need multiple languages in a single project, I have to take a look at IntelliJ IDEA.
My brain did wake up on the intruductions of new terms such as 'camel humps names' (CamelCase identifiers) and the Elvis operator: '?:' ('when your head is turned ninety degree').

The last talk of the day was interesting again: "RESTful design - Patterns and Anti-Patterns."
REST is an architectural style (Roy Fielding's orignal definition) or "the web used correctly." "XML without SOAP" is one of the worst and most innacurate popular definitions of REST.
There are five requirements for REST:
  1. Every 'thing' gets an ID (eg a URI).
  2. Link together as much 'things' as possible.
  3. Use standard methods (eg GET, PUT, POST, DELETE).
  4. Allow for multiple representations of the same 'thing' (eg human-readable HTML, machine-readable XML, or both together in the form of XHTML). The representation could eg be chosen by an Accept header in an HTTP call.
  5. Communicate statelessly
Some anti-patterns:
  • Tunneling through GET by using the same base URI with different methods specified in a query part.
  • Tunneling through POST ('the SOAP way') by using the same base URI with different methods specified in an XML body.
  • Ignoring caching; the server should use cache control headers and ETags.
  • Ignoring response codes.
  • Misusing cookies: using them to identify state is wrong.
  • Forgetting hypermedia by not connecting resources and representations together.
  • Ignoring mime types; use the correct mime type for every resource; use the vendor namespace if necessary (application/vnd.XXXX).
  • Breaking self-descriptiveness (when the manual of how to use your service becomes bigger than the service itself).
Some REST patterns:
  • Use collection resources where you provide links to individual resources (eg a GET on '/products' produces '/products/apple' and '/products/pear').
  • Page your collections when the list of links become too long (eg with a query in the URI).
  • Don't worry about URI design or hierarchy, opaque URIs are fine; linking stuff together is more important than the way links look like.
  • Create resources by POSTing to a collection.
  • Polling to generate notifications for changes is not bad as long as caches are used properly.
  • Externalize server cache by putting the cache operation in a proxy that handles the cache and ETag headers.
He did go a bit fast from time to time, but this presentation was a good introduction to REST and a starting point to get to know more about it.

Dinner was even more disastrous than lunch: they ran out of french fries when only about two thirds of the attendees got their tiny helping. Hearing it would take at least half an hour for a new supply to arrive, I went home hungry.

Wednesday, 26 November 2008

Drie maanden Diftar

Op 1 juli 2008 is in Nijlen het Diftar-systeem van start gegaan. De theorie is dat de vervuiler betaalt door voor de afhaling van restafval en GFT per kg te laten betalen. Na drie maanden kreeg elk adres een overzicht van de hoeveelheid geproduceerde afval.
Bij de start van het systeem moest iedereen een provisie betalen van 60 euro. Hiervan zou de kost van de afvalophaling afgetrokken worden. Bij een te lage provisie moet worden bijgestort.

Mijn overzicht ziet er zo uit:
Saldo op 1 juli: 0.00
Betaling van 1/8/2008: 60.00 (De laatst mogelijke betalingsdatum, uiteraard).
Vaste kost van juli tem oktober: -12.00
Saldo: 48.00

Zelfs als je geen afval produceert betaal je nog altijd 3 euro per maand aan vaste kosten! Met een provisie van 60 euro en mijn afvalproductie ziet het er naar uit dat ik ongeveer één keer per jaar een container zal moeten voorzetten en elke 1 à 1.5 jaar 60 euro zal moeten bijbetalen.

Bij het persoonlijk afvaloverzicht zat ook een brochure met veelbelovende resultaten: de gemiddelde restafvalproductie tijdens juli, augustus en september is gedaald van 20kg per inwoner in 2007 naar 12kg per inwoner in 2008.
Zou dit er iets mee te maken hebben?


Misschien moeten we eens met Scriptura langs IOK gaan, dan kan ik onrechtstreeks mijn voor niets betaalde vaste kost terugkrijgen en gaan hun afvaloverzichtjes er misschien wat beter uitzien.

Saturday, 22 November 2008

Vals plafond

Vandaag een vals plafond gestoken in het kader van mijn opleiding houtbewerking (lees goedkoop werkvolk gespeeld). In dit geval ging het om het plaatsen van een houten roostering, met daartegen PVC schrootjes. En dat ging zo in zijn werk:
  1. Kies een hoogte voor het plafond, tel er de dikte van het plafondmateriaal bij, en tel er de dikte van de bevestigingslatten (22mm) bij. Dat wordt de onderkant van de roostering.
  2. Van de onderkant van de roostering, meet een afstand naar beneden, tot op ooghoogte (bv 160cm). Dit is het referentiepunt voor de paslijn.
  3. Loop met een pasdarm de hele ruimte rond en zet in alle hoeken de referentiehoogte over.
  4. Meet van elk referentiepunt 160 cm naar boven en verbind deze punten met een lijn (smetkoord gebruiken).
  5. Langs de lange muren, planken tegen de muur bevestigen; de onderkant van de planken komt gelijk met de smetlijn.
  6. De kortste overspanning vullen met evenwijdige planken, ongeveer 40cm uit elkaar; hiervoor worden korte plankjes van 38cm gebruikt (bij planken van 22mm). De eerste plank zit vast tegen de muur, daartegen wordt haaks een kort plankje genageld (schuin genageld). Tegen dit korte plankje komt weer een lange plank (recht genageld), enz.
  7. Op het einde opnieuw een plank tegen de muur vastzetten en een plankje op maat zagen van de overschot plus ongeveer 0.5cm. Dit plankje wordt met een zware hamer tussen de laatste plank en de plank tegen de muur geslagen om het geheel op te spannen.
  8. Bevestigingslatten (ongeveer 40x22 mm) in de lengterichting tegen de roostering schroeven, ongeveer 40cm uit elkaar. De uiteinden van deze latten mogen niet op een plank uitkomen, maar moeten zweven en met kort latje aaneengezet worden (anders kunnen deze uiteindes niet behoorlijk vastgezet worden op de roosteringplank).
  9. PVC aflijsting (voor de schrootjes) rondom rond tegen de bevestingenslatten nagelen.
  10. De PVC schrootjes in de aflijsting schuiven en vastnagelen (met roestvrije inox nagels).
In ons geval waren er nog wat moeilijkheden met elektriciteitsleidingen en aansluitpunten die wat verlegd moesten worden, de plaatsing van nieuwe verlichting, en een paar moeilijke hoeken veroozaakt door inspringende steunberen. We hebben ons ook beperkt tot slechts één pasplank tegen de lange muur omdat we de roosteringplanken in putrails konden leggen.





Friday, 14 November 2008

Phrase from nearest book meme

Apparently, some meme is doing the rounds again.

  1. Grab the nearest book.
  2. Open it to page 56.
  3. Find the fifth sentence.
  4. Post the text of the sentence in your journal along with these instructions.
  5. Don’t dig for your favorite book, the cool book, or the intellectual one: pick the CLOSEST.

My result:

"The general secretary smiled to show he knew the Owl was not sleeping."
- The Altman Code, Robert Ludlum