Archive for June, 2005

Google and social software: wiki’s


Moving my tango site
I am currently considering converting tango.forret.com into a wiki-style site. It is a hobby site with tango steps, tango terms (glossary) and other tango-related stuff. I have by now developed some wiki-like functions in ASP, and it would probably be better to just go with an existing, full featured (PHP or Perl based) wiki system.

What is a wiki?

A wiki enables documents to be written collectively (co-authoring) in a simple markup language using a web browser.
(from wikipedia.org)

It is a social software that allows the building of highly interconnected websites of free-form knowledge, easily edited by whoever has access to it.
My choice for the ‘wiki’ kind of social software is motivated by:

  • the information does not need a chronological organisation. Moreover, each topic wil evolve in time so it would actually be bad to link them to certain dates. So this makes a blog (key feature: reverse chronological) not a good option.
  • the information is not conversation-like: it will be a few-to-many medium (certainly now - currently I am the only author) and I am not responding to specific questions or threads. This kind of rules out an Internet forum software (like phpBB).
  • what I like about a wiki is the strong interconnection of pages (a description of a tango term like ‘milonga‘ will typically refer to other terms, whose explanation is only one click away), the easy editing within the browser and easy co-authorship with version control.

Wiki farms
In order to play around, I wanted to check if there is a counterpart of blogger.com for wiki’s: big, free, reliable and flexible (layout wise). A good starting point was WikiFarms (c2.com):

They might be good for some projects, but eventually I will want to host my tango site on my own server, which in my hoster’s case means it will be based on either Tikiwiki or PhpWiki.

Wiki’s and Google
Just like Google likes blogs a lot, Google likes wiki webs a lot (meaning: they get ranked high in Google searches):

  • They are very topical and have good keyword density (i.e. a page on ‘megapixel’ will explain the term using most of its synonyms and related concepts like resolution, CCD, RGB, …)
  • They are all very well internally connected (they link to one another, they might have pages with links to ‘Recent changes’, ‘Most visited pages’ …)
  • they have very relevant URL names (a link nl.wikipedia.org/wiki/Megapixel will give better results in Google for a search on “megapixel” than something like www.example.com/wiki/page.php?id=1445)
  • they have relevant page titles (typically the topic of the page shows up in the title: “Megapixel - Wikipedia NL”)

Just like Google bought Blogger at some point, they are now looking into supporting Wikipedia (more than 11 million hits in Google - Pagerank 9). I’ve read that, because Wikipedia is not a real company, and as such Google can’t buy them, they are looking at buying answers .com, who get part of their input from Wikipedia. Google has a history of trying to buy powerful content providers, so if one of the Wiki hosters becomes really popular, like JotSpot or Wikispaces, and is as such responsible for hundreds of thousands of pages, they might become a candidate for acquisition too.

Technorati: -

If you're new here, you may want to subscribe to my RSS feed or receive updates via email. Thanks for visiting!

Biometric spielerei: Applied Minds

Reading this article on Applied Minds sure brings back memories:

Co-founder Danny Hillis escorts me down a hallway that dead-ends into an old-fashioned red phone booth. The phone rings. He places receiver to ear.
The blue moon jumps over the purple sky,” he says, and hangs up.
Suddenly, the booth becomes a door, swinging out to reveal a vast, open room filled with engineers, gadgets and big ideas.
from Applied Minds Think Remarkably (Wired)


I remember Maarten, Henry, Frederik and me, in the early days of Keyware (in 1998, I think), preparing a demo for Walter Debrouwer’s Riverland company. The latter wanted to impress his prospective client BP, and so he wanted a biometric access control to his ‘labs’.

We hacked something together with a hastily purchased badge-reader-annex-intercom, linked to a PC’s soundcard, running the first beta demo of our speaker authentication software (based on a Lernout & Hauspie technology). I think we even added the Visionics (now Identix) face recognition software we licensed, linked to a QuickCam webcam. So the system would recognize your face, recognize your voice while you pronounce your passphrase and then let you in when it was sure enough it was actually you. Wonderful when it works. And when it doesn’t, you can always explain about false rejection, false acceptance, and equal error rate. Maarten and me even wrote a white paper on the subject, but I can’t find that document back, only references (PDF) to it.

Frederik is now at Vasco, Maarten is at Imec, Henry has set up Broncoway. But I have no idea what happened to Veronique, An, Anke, Rudy and the lovely Julia. Maybe it’s time for a reunion.

Technorati:

RSS with images: picture podcasting


There is something weird: after the audio-only iPods came the iPods with images, but there are no iPods for videos (yet). However, we already have video podcasts, but there are to my knowledge hardly any picture podcasts? Why did we skip that medium? The hardware is there, the content is there.

So let’s see how hard this would be. At first glance, you would need the pictures, in an RSS, optionally automagically transferred to the photo device:

RSS with pictures

I found a couple of initiatives for putting images in an RSS so that they can easily be retrieved/manipulated:

Flickr: RSS with image enclosures 

this is the most straightforward and obvious implementation: using the same enclosure tag that made podcasting so simple. The only thing is: they do not include the image size (length=) attribute, probably for performance reasons, but this breaks the validation of the feed

Yahoo!: Media RSS 

a more recent effort from Yahoo! to include media files and associated meta-data into RSS. More meta-data means better search accuracy. They use an extra namespace xmlns:media="http://search.yahoo.com/mrss" which is probably the most correct way of doing it, but makes it unfit for podcast use (no podcatcher client recognizes their media:content tag, so nothing is downloaded). They do support multiple enclosures per post item (e.g. a high-quality MPEG-4 video, a low-quality - but faster downloaded - WMV alternative and a JPG screen shot for the same footage). 

pheed.com Pheed RSS 

another extension of RSS 2.0, now with a xmlns:photo="http://www.pheed.com/pheed/" namespace. Same remarks as above: no podcast recognition. They also use the Dublin Core namespace, which is probably a good idea. 

solitude.dk 

Andreas had a proposal for changing the RSS2.0 standard, allowing multiple enclosures per item. Better go with the Yahoo! route for that, I guess.

My conclusions: you need the enclosure tag for compatibility with existing applications. You need the length= attribute for conformance to the RSS specs. So I’d start with what Flickr does, entend it with the length (even it’s just an estimation based on image pixel size, I don’t think many applications verify the actual size). But you could combine this with the Yahoo! Media RSS namespace (a bit like using the embed tag within the object for embedded media players) in the same feed.
Feedburner
Feedburner no longer adds image URLs as enclosures to their feeds (too many user problems, Eric Lunt tells me). So you cannot use Feedburner for constructing the RSS feed. (I tried it with Blogger and SmartCast and indeed, no success). They do support Yahoo! Media RSS as output format. They actually use the combination I described above. So we’re one step away from the perfect image feed constructor: Feedburner (optionally) enables image (JPEG/GIF/PNG) attachments to be converted to enclosures (with their usual automatic length= detection).

Transfer to device

I tried to use a mixed enclosure/MediaRSS feed in the iPodder podcast client, and it works like a charm. All references images are downloaded and stored under [iPodder download folder]\[Feed name]\[filename]. Whcih means you only have to specify the [iPodder download folder] as e.g. iTunes’ ‘Image root folder’ and all pictures will be synchronized with the iPod photo. Each feed is a separate folder, and a separate album on the iPod. Super! I guess the Doppler podcast aggregator would work as good.

Applications

Whether the pictures are consulted on a iPod or other portable multimedia device, or online in an aggregator or Bloglines, people can dream up a load of neat applications.

  • Gadget freaks could subscribe to an Engadget GSM ‘photo-cast’ of the latest must-have mobile phones. 
  • Parents could create a ‘kidcast’ for pictures of their newborn so the relatives can be automatically updated
  • casting directors could use a ‘casting-cast’ to get updated on new faces …
  • A TV channel could subscribe to the RSS’es of the main news agencies.
  • Simple: a PHP script that takes the RSS and shows your 5 most recent pictures in the side menu of your blog

Technorati:

Stevie Wonder’s new fuss

Barry (played by Jack Black): Rob, top five musical crimes perpetuated by Stevie Wonder in the ’80s and ’90s. Go. Sub-question: is it in fact unfair to criticize a formerly great artist for his latter day sins, is it better to burn out or fade away?
(from imdb.com)

My top 5 of Stevie’s crimes in the 80’s and 90’s would be:

  1. I Just Called To Say I Love You (’84)
  2. Ebony And Ivory (’82)
  3. Part Time Lover (’85)
  4. Jungle Fever (’91)
  5. For Your Love (’95)

Be that as it may, I still consider him as a musical genius (and I’m not alone), and he’s definitely in my top 5 of favourite artists. He’s the one that came up with Master Blaster, Superstition, As, Sunshine of my life, Higher Ground, Sir Duke, … and I still forget loads of classics. I can still remember the goose bumps I got listening the first time to Original Musiquarium. Dennis playing by himself, man!”

So it made me very happy when I heard his new single: “What The Fuss?” and realise he’s finally back. Back with a funky synth bass, kick ass drums and intelligent lyrics:

Should I be drivin’ thru a klantown,
find a restaurant to get me some food
And someone says “hey boy, we don’t serve your kind”
Shame on them
And if we live in a democracy and
you don’t use your power to vote
Knowin’ some would like to turn back the hands of time
Shame on us
(from stevie-wonder.com)

Looking forward to the new album, A time to love, out in July 2005!

Technorati:

Internet activity in the EU

The sport of data consolidation: I got my hands on the number of domainnames for all EU countries (June 2005) and combined those with the # pages in Google for each TLD (Top Level Domain, like .be or .fr) and the population statistics for the EU countries. Some Excel activity later, this is what I got:

Registration activity

This is the number of registered domains per 1000 inhabitants. It might give an indication of how ‘normal’ it is to have your own website.
This is the Top 5:

ext country domains persons dom/1000
.dk Denmark 166.414 5.410.000 30,76
.nl Netherlands 405.721 16.300.000 24,89
.de Germany 1.194.366 82.720.000 14,44
.ee Estonia 18.088 1.340.000 13,50
.at Austria 93.689 8.160.000 11,48

Remarks: Estonia seems a surprising entry here, but actually Poland and the Czech Republic aren’t doing that bad either. Better than Belgium, actually.

Authoring activity

This is the average # web pages per person for each country. I estimated the #pages per TLD as a Google query on “xx site:.xx”. (so for belgium, a search on “be site:.be”). If the number of pages is a rough estimator of how much information is available, then this is an indicator of how productive the information producers of the country are.
This is the Top 5:

ext country Google pages persons pages/pers
.lu Luxembourg 1.670.000 455.000 3,67
.uk United Kingdom 174.000.000 59.900.000 2,90
.fi Finland 14.400.000 5.250.000 2,74
.se Sweden 17.800.000 9.040.000 1,97
.ee Estonia 2.280.000 1.340.000 1,70

Remarks: Luxembourg, the country where everyone wants to work and pay taxes but no one wants to live. And again Estonia, up there with the Scandinavian connection and the English!

Site size

This is the average # web pages per domain for each country. This might be an indicator of web site size - the work a webmaster puts in his creation - or just verbosity (hey, the French are first, and then the Spanish, and they DO talk a lot).
This is the Top 5:

ext country Google pages domains pages/dom
.fr France 43.900.000 72.338 607
.es Spain 12.400.000 25.988 477
.fi Finland 14.400.000 30.182 477
.lu Luxembourg 1.670.000 4.458 375
.uk United Kingdom 174.000.000 495.041 351

Remarks: the best place to be a webmaster is France. The web sites are large, you have no competition from the US or South-America (no one speaks English or Spanish) and there’s lots of domain names still available.

All data:

TLD Description DOMAINS SHARE GOOGLE POPULATION PAGE/
PERSON
DOM/
1000
PAG/
DOM
at Austria� 93.689 2,8% 10.300.000 8.160.000 1,26 11,48 110
be Belgium� 72.949 2,1% 10.600.000 10.440.000 1,02 6,99 145
cz Czech Republic� 79.612 2,3% 8.350.000 10.230.000 0,82 7,78 105
dk Denmark� 166.414 4,9% 8.250.000 5.410.000 1,52 30,76 50
ee Estonia� 18.088 0,5% 2.280.000 1.340.000 1,70 13,50 126
fi Finland� 30.182 0,9% 14.400.000 5.250.000 2,74 5,75 477
fr France� 72.338 2,1% 43.900.000 60.290.000 0,73 1,20 607
de Germany� 1.194.366 35,2% 62.800.000 82.720.000 0,76 14,44 53
gr Greece� 21.851 0,6% 5.040.000 11.210.000 0,45 1,95 231
hu Hungary� 63.846 1,9% 5.600.000 10.080.000 0,56 6,33 88
ie Ireland� 13.441 0,4% 640.000 4.030.000 0,16 3,34 48
it Italy� 211.700 6,2% 25.500.000 58.600.000 0,44 3,61 120
lv Latvia� 8.061 0,2% 2.020.000 2.300.000 0,88 3,50 251
lt Lithuania� 8.924 0,3% 1.890.000 3.430.000 0,55 2,60 212
lu Luxembourg� 4.458 0,1% 1.670.000 455.000 3,67 9,80 375
nl Netherlands� 405.721 12,0% 20.700.000 16.300.000 1,27 24,89 51
pl Poland� 294.651 8,7% 7.780.000 36.130.000 0,22 8,16 26
pt Portugal� 16.056 0,5% 3.690.000 10.460.000 0,35 1,53 230
sk Slovak Republic� 23.719 0,7% 2.600.000 5.380.000 0,48 4,41 110
si Slovenia� 11.021 0,3% 2.060.000 1.960.000 1,05 5,62 187
es Spain� 25.988 0,8% 12.400.000 43.430.000 0,29 0,60 477
se Sweden� 61.499 1,8% 17.800.000 9.040.000 1,97 6,80 289
uk United Kingdom� 495.041 14,6% 174.000.000 59.900.000 2,90 8,26 351

Technorati: -

In mirror, with camera

Amusing idea from Paul: upload your own picture of you, photographing yourself in the mirror. The ideal chance to show off that 12 megapixel €2500 camera beast your girlfriend almost didn’t let you buy.

Contribute to the fun! Shoot your picture in the mirror and upload it here! (how long can it take? 3 minutes?)


Dude in kimono, Japan

Two nerds, Belgium

http://www.pixagogo.com/7249135829

Technorati: - -

Convert Bind DNS zone into PTR records

The following script I made in order to convert the forward DNS records in a /var/named/db.[domain] file into the correct format for a reverse DNS db.[subnet prefix] file.

#!/bin/sh
(...)
DNSROOT=/var/named
PREFIX=$1
DOMAIN=$2
shift 2
DNSPRE=$DNSROOT/db.$PREFIX
DNSDOM=$DNSROOT/db.$DOMAIN
echo "; save this in $DNSPRE"
(
if [ -f $DNSDOM ] ; then
cat $DNSDOM
| grep $PREFIX
| grep -w "A"
| sed "s/$PREFIX.*//g"
| gawk "BEGIN {OFS = "t" ;} {print $4,"IN","PTR",$1 ".$DOMAIN.",";; FROM `basename $DNSDOM`" }"
fi

if [ -f $DNSPRE ] ; then
cat $DNSPRE
| grep -w "PTR"
| gawk "BEGIN {OFS = "t" ;} {print $1,$2,$3,$4,";; FROM `basename $DNSPRE` "; }"
fi )
| sort -n
| uniq --check-chars=3

You would call it as follows:
revdns.sh 192.168.110 internal.example.com > new.db.192.168.110 and then replace the records of the original db.192.168.110 with the records of the new file. The script still requires manual intervention (you cannot pipe the result straight into a live Bind config file) but saves a lot of typing!

Example of the output:

201 IN PTR james.internal.example.be. ;; FROM db.internal.example.com
202 IN PTR wilbur.internal.example.be. ;; FROM db.internal.example.com
216 IN PTR appprd1.internal.example.com. ;; FROM db.192.168.110
217 IN PTR appprd2.internal.example.com. ;; FROM db.192.168.110
218 IN PTR appprd3.internal.example.com. ;; FROM db.192.168.110
219 IN PTR appprd4.internal.example.com. ;; FROM db.192.168.110
220 IN PTR appprd5.internal.example.com. ;; FROM db.192.168.110
221 IN PTR appprd6.internal.example.com. ;; FROM db.192.168.110

Using movies on a web page


So you recorded those first steps of your youngest, your first public milonga performance, uncle Tom falling backwards into that cake, or auntie Janet dressed like a man. Now you want to show into to the world. You save the movie into a .WMV (Windows Media - Video), .RM (Real Media), .MOV (Quicktime), .MPG or .MP4 (MPEG-2 or MPEG-4) , .SWF (Shockwave/Flash) or .AVI (Microsoft Video for Windows) file, sprinkled some Sorenson or DivX magic on it (if you’re not familiar with these terms, don’t worry. It’s another topic alltogether), upload it to your web server, and then what? What is the best way to present it to your visitors?

ANCHOR tag - a plain link

Works: everywhere
Description: Provide just a link to the movie file, and count on the user’s browser to figure out which application it should give the URL to. WMV files will generally open in Windows Media Player, MOV files in Quicktime, but there is no way to be sure what AVI and MPG files will open in. This depends on the client’s configuration. An additional disadvantage is that a lot of browsers will first download the whole file and only then play it, so you lose the quasi-immediate start of a streaming experience.

EMBED tag

Works: everywhere
Description: even if it is not part of the HTML specification, it should work everywhere. It can be as minimal as <embed src="http://www.example.com/movie.avi">, but also allows the specifying of size, mime-type and player controls. It does not allow you to specify what program (and what version) should be used to play it. It’s again the user’s (browser) configuration that decides.

OBJECT tag

Works: everywhere
Description: this is the official way to do it (according to the HTML specs). You create an <OBJECT> ... </OBJECT> pair with a bunch of PARAM in between. Here is the way to do it with Windows Media Player, RealPlayer, QuickTime and Shockwave/Flash. A very common practice is to combine the EMBED with OBJECT, like in the example below.

IMG with dynsrc

Works: only in Internet Explorer (Windows)
Description: very easy to use, but poorly supported. Allows for combining the classic SRC with the DYNSRC property, so that even if the browser does not show the movie, it can still show an image.

MEDIAPLAYER page

Works: everywhere (if it’s done right)
Description: if you’re a bit handy, you can create a wrapper page for your streaming media. I use my Cinema Tool to show movies. I just input the URL, the format and the size, and the rest is automatic. On podcasts like Traxsource, I use a special audio-only player page (not yet generally available) that shows the playlist (a web page) within the media player (SMIL for Real & QuickTime/ASX for WMV).

IFRAME with MEDIAPLAYER

Works: everywhere (but watch out for Javascript scripts like Adsense/counter pages - they can give errors in frames)
Description: If you don’t want to send your visitors to a new or a popup page, consider inserting a IFRAME into your page. You can then even trigger new movies by just adding a link with the right TARGET. Remark: if you add a link like described in the ANCHOR example above, even with the right TARGET specified, the file will probably open outside of the browser, and not in the IFRAME where you want it. Webmastering shouldn’t be THAT easy!

Also see: fluffbucket.com - Comparison of media players

Technorati: - -