Monthly Archive for January, 2005

Page 2 of 6

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!).