Monthly Archive for January, 2005

Popular Belgian blogs: top 25 v2

The major differences from the first top 25 are:

  • LONGER LIST: I took 100 blogs into account instead of 50 (e.g. I added sites like druppels.be)
  • WEIGHTING: I weighted the results of the search engines, in order to give Google more weight than e.g. Teoma and Altavista. In the previous stats, I used the sum of all hits, now I use the weighted average (so the number is always lower). Altavista is very generous with its presumed #hits, but now only gets a 5% weight. Basically Google gets a 70% weight and the other 6 get 5%. Why? In most of the stats I see (mine, Blogium, LVB, …), search engine related traffic comes primarily from Google.
  • VISITORS: the only way available to me now to estimate the # visitors is through the Alexa Rank (if available). Basically this is a number that tells the traffic ranking of a domain name within all domains on the internet. #1200 means: the 1200th most popular domain name. I did the following funky stuff with it to include it into the calculation: For the 52 blogs where Alexa information was available, if its rank was lower (i.e. better) than the average (about 890.000), I took a scaled log() of the rank that gives a result between 1 and 2: 1 if the Alexa rank is around average, and 2 for the best scoring site (coolios.net, rank #9214). I then multiply the weighted average of the #hits with this Alexa coefficient. In other words, through the Alexa numbers, a hit can count for anything between 1,00 and 1,99 “equivalent hits”. Alexa’s numbers are far from perfect, I know.
  • METHOD: all these statistical formulas and the actual coefficients used have been decided by me. They are just A model, not THE model.

There are three kinds of lies: lies, damned lies and statistics.
(Benjamin Disraeli)

So here is the 2nd iteration of the top 25 Belgian blogs:

  1. www.coolios.net: 17808 equivalent hits
  2. veerle.duoh.com: 7707 equivalent hits
  3. demuynck.org: 6319 equivalent hits
  4. lvb.net: 5529 equivalent hits
  5. fuckhedz.com: 4623 equivalent hits
  6. www.zattevrienden.be: 4621 equivalent hits
  7. www.druppels.be: 4499 equivalent hits
  8. www.kapingamarangi.be: 4230 equivalent hits
  9. blog.zog.org: 4196 equivalent hits
  10. www.jahsonic.com: 3717 equivalent hits
  11. www.dominiek.be: 3674 equivalent hits
  12. www.polskaya.be: 3495 equivalent hits
  13. www.scene24.net: 3232 equivalent hits
  14. www.domilog.be: 2991 equivalent hits
  15. www.smintjes.be: 2646 equivalent hits
  16. www.ruudsdesign.com: 2261 equivalent hits
  17. www.internetjournalistiek.be: 2052 equivalent hits
  18. www.eug.be: 2043 equivalent hits
  19. pdw.blogspot.com: 2033 equivalent hits
  20. www.sepi.be: 1979 equivalent hits
  21. www.wilt.be: 1940 equivalent hits
  22. www.eskimokaka.be: 1577 equivalent hits
  23. mathibus.com: 1547 equivalent hits
  24. percept.be: 1515 equivalent hits
  25. huugendruug.blogspot.com: 1411 equivalent hits

What I would like to add, but this I would have to code myself then, is #hits in Technorati, Feedster and Bloglines.
Feedback is welcome on peter.forret _at_ gmail.com.

Zoekmachine optimalisatie blog

(Post in Dutch)
Mijn collega Joris is begonnen met een Nederlandstalige blog over “zoekmachine optimalisatie” (SEO). Al die jaren ervaring met Send2store en Pixagogo, Google, Yahoo en Overture, Adwords/Adsense, affiliate marketing, <title> en <meta> tags en zo hebben een pak kennis opgeleverd die hij graag ten toon wil spreiden. Het is trouwens ook een van de competenties van HyperTrust geworden, zo een van het soort waarmee je geld kan verdienen.

De laatste posts zijn:


Als hij aan het tempo van 1 post/dag blijft schrijven, staat hier binnen een maand een unieke hoeveelheid tips voor web marketeers verzameld!

Brilliant Button Builder

I needed some buttons to accompany my Webjay Wizard. I like the 80×15 format used by most sites, and was looking for an on-line button maker application.

The one most sites point to is the Kalsey.com buttonmaker, but it does not support the usage of image files. You still can make nice buttons like:

It took me a while longer to find Luca Zappa’s Brilliant Button Maker. It allows the usage of jpg/gif/png files to include in the button. With this one, I could re-use Webjay’s logo to create:

And a vanity button with my Ibanez EDC-705:

Caffeine and error messages


made with Atom Smasher’s Error Message Generator

Programming is the process of converting caffeine into error messages.
(via Joel on Software)

Busy Being Born: the Mac User Interface


from folklore.org

This story illustrates the birth process of the Apple Mac user interface from 1978 to 1982, as told by Andy Hertzfeld. Lots of Polaroids to document the progress. The whole Folklore site is full of early Apple inside stories, for instance on Steve Jobs’ “Reality Distortion Field”.

The reality distortion field was a confounding melange of a charismatic rhetorical style, an indomitable will, and an eagerness to bend any fact to fit the purpose at hand. If one line of argument failed to persuade, he would deftly switch to another. Sometimes, he would throw you off balance by suddenly adopting your position as his own, without acknowledging that he ever thought differently.
(from folklore.org)

(via itconversations.com)

Popular Belgian blogs: the preliminary top 25

Luc Van Braekel has developed a service called Blogium.be, to find new emerging ‘hot’ links on the front pages of Belgian blogs. His start database is obviously a big list of URLs of Belgian bloggers. I think that a good additional function of Blogium could be to display a ranking of these, ordered by some kind of meta-calculation over things like: Google Pagerank, #incoming links for all search engines, posting recency/frequency (so deserted blogs disappear from the ranking in time), intra-belgium link traffic, …

Let’s set up a conceptual demo: I take a list of 50 Belgian/Flemish blogs, and use a tool called the ‘Link Popularity Check’ (via Xander) to check the # of incoming links. First some important disclaimers:

  • my tiny list is by no means complete or representative, these are the blogs I know, or that I have come across. Luc’s told me he’s got 10s of thousands blogs in his list, maybe by now already 100s.
  • Incoming links/link popularity is not the only defining criterium one should use to quantify ‘importance’. It was just an easy one to check.
  • URL stuff: because of the way the tool works, I cannot include blogs that don’t have their own domain. Also, xyz.be links are not the same as www.xyz.be links. I typically took the one with the highest numbers, I did not add the numbers.
  • I did not include sites like saait.be or zurf.be, because they are not a blog. No feed, no blog.
  • Some blogs are in English, some in Dutch. If you write in English on topics like web design, and you really know your shit, you might end up a very popular site (as can be witnessed below). If you write in Dutch about fishing shrimp in the North Sea, tough luck.

And the top 25 is:

  1. www.coolios.net: 149328 hits
    Probably the only shockblog we have that comes close to the Dutch competition (Flabber/VolkomenKut /GeenStijl): naked women and funny movies
  2. veerle.duoh.com: 101136 hits
    Veerle’s Blog has the most referenced non-shock blog, with articles on web design and advanced CSS. I knew she was good, but not that she was this good.
  3. demuynck.org: 94689 hits
    Wouter is the creator of the Nucleus blog software and has an original visual linkblog called ‘Karma Universe’.
  4. lvb.net: 72984 hits
    Luc Van Braekel, a high profile blogger, is regularly featured in major media
  5. www.polskaya.be: 58162 hits
    If you thought all bloggers liked each other, this blog will prove you wrong.
  6. blog.zog.org: 55390 hits
  7. fuckhedz.com: 53255 hits
  8. www.kapingamarangi.be: 46926 hits
  9. www.domilog.be: 44756 hits
  10. www.scene24.net: 43970 hits
  11. www.jahsonic.com: 39429 hits
  12. www.dominiek.be: 38864 hits
  13. www.ruudsdesign.com: 35867 hits
  14. www.eug.be: 34047 hits
  15. www.zattevrienden.be: 31898 hits
  16. www.middernacht.be: 25071 hits
  17. www.internetjournalistiek.be: 23684 hits
  18. pdw.blogspot.com: 22298 hits
  19. huugendruug.blogspot.com: 20214 hits
  20. laartje.skynetblogs.be: 10637 hits
  21. www.baeyens.net: 9345 hits
  22. www.rigoureus.be: 9341 hits
  23. www.alog.be: 9086 hits
  24. ge.bykr.org: 8993 hits
  25. verhelst.blogspot.com: 8967 hits

So, this was the first test. I think I’m gonna do a second trial next week. Your suggestions, additions, corrections are welcome at peter.forret _at_ gmail.com. If you, like me, think this could be a nice upgrade to Blogium, leave a note on this blog. If there’s enough interest, I think Luc could be convinced.

Playing MP3 with an embedded Flash player

(There is an updated post at Click to hear the MP3 playlist (Apr 2006))

When you want to have an embedded player in a web page, there are several options: working with an embedded RealPlayer or WindowsMedia player – which do not all work on a Mac/Linux platform or with Firefox. Another option is using a Flash player. Flash/ShockWave is supported on all platforms and in all browsers. I went on a search for free embedded Flash players:

SoundBlox
License: This is an Apache-style open source project by Laszlo Systems, based on the Laszlo open-source RAD framework. It is free for non-commercial use.
Method: you reference a Javascript file in your HTML headers, and then call a Javascript function with the URL of the playlist. (This is a problem for some sites. Blogger e.g. does not allow <script> tags in its posts, only in the template.)
Format: it uses a proprietary XML format. <geek>Files in XSPF format can be converted to the SoundBlox format through XSLT</geek>
MusicPlayer
License: This is an open-source (SourceForge) project by Fabricio Zuardi. It is free for non-commercial use.
Method: you reference a Flash file and give it the URL of the playlist. The Flash file is embedded with the usual <object> and <embed> tags.
Format: it uses the standard XSPF (XML Sound Playlist Format). Webjay can convert any HTML file/feed to XSPF!
Check my Webjay wizard to generate the right HTML code for your page!
Halfbaked
License: not explicitly stated. I presume it’s free to use.
Method: you reference a Flash file and give it the URL of the MP3 file. The Flash file is embedded with the usual <object> and <embed> tags.
Format: No playlist here, just one MP3 file.
GurusNetwork
License: not explicitly stated. I presume it’s free to use.
Method: you reference a Flash file, which contains the playlist of the MP3 files to play. You can’t specify a self-made playlist
Format: No idea.
Sonify
License: not explicitly stated. I presume it’s free to use.
Method: you reference a Flash file, which contains the playlist of the MP3 files to play. You can’t specify a self-made playlist
Format: No idea.
RadioBlogClub
License: free to use.
Method: you host the player with all graphics and a config.xml file, that points to a playlist.
Format: A PHP script creates an XML playlist for all MP3 present in a local(!) folder.

For more information on playlist formats (XSPF, SMIL, ASX, …), check out Lucas Gonze’s excellent survey.

There are also some commercial options: hooverwebdesign.com ($50), wimpyplayer.com ($25), soundnails.com ($15)

Perl HTML scraping part #1

Here we are, back at the scene of the crime. Yes, I know it’s been a while. And the task of the day is:

GOAL:
make an HTML scraper, i.e. a script that grabs another URL and outputs the results to the screen
TOOL:
let’s say … Perl (in my case: Perl 5.8 on RedHat)
INPUT:
a URL
OUTPUT:
the HTML code of that URL

The actual HTML retrieval is easy: you need get() from the LWP::Simple module:
use LWP::Simple;
my $page = get($url);

Some remarks:

  • Since you are generating a web page, you need the CGI module (to take care of the HTTP headers and stuff).
  • The URL input parameter will be given as an HTTP querystring: ?url=http://www.example.com/path/page.htm. When no url parameter given, we will generate a form where it can be filled in.
  • We calculate the time it takes to retrieve the original page
  • #!/usr/bin/perl -w
    use strict;
    use CGI qw(:standard);
    use LWP::Simple qw(!head);my $query = new CGI;
    my $url = $query->param('url');
    my $debug = 0;

    print header();
    if(length($url) > 0) {
    print getpage($url);
    } else {
    showform();
    }

    sub getpage{
    my $url = shift;
    my $time1 = time();
    debuginfo(”Scraping <a target=_blank href=’” . $url . “‘>link</a> …”);
    my $page = get($url);
    my $time2 = time();
    debuginfo(”Time taken was <b>” . ($time2 – $time1) . “</b> seconds”);
    debuginfo(”Total bytes scraped: <b>”. length($page)/1000 . “KB</b>” );
    return $page;
    }

    sub debuginfo{
    if ($debug > 0) {
    my $text = shift;
    print “<small>” , $text , “</small><br />n”;
    }

    }

    sub showform{
    print(”<html><head>”);
    print(”<title>SCRAPER</title>”);
    print(”<link rel=stylesheet type=text/css href=http://www.forret.com/blog/style.css>”);
    print(”</head><body><center>n”);
    print(”<form method=GET action=’scrape.pl’>”);
    print(”URL: <input name=url type=text size=60 value=http://www.forret.com>”);
    print(”<input type=submit></form>n”);
    print(”</center></body></html>n”);
    }

    Next step: making sure image src= and hyperlink href keep on working (so convert relative links to absolute links!).