Home Page of Bert Bos

I studied Mathematics in Groningen (1982-1987), wrote a thesis about Graphic User Interfaces (1987-1993), worked on an Internet browser and the surrounding infrastructure for the Faculty of Arts in Groningen (among other things), and am now working for The World Wide Web Consortium on style sheets, math and security.


Cascading Style Sheets – designing for the Web (3rd ed.)
Hakon Wium Lie & Bert Bos
ISBN 0321193121
(See http://www.aw.com/css/)

Book cover

Photos of Provence

Provence (which includes the Côte-d'Azur) is the region in Southern France that lies roughly between the Rhone river in the west, the Italian border in the east, the Mediterranean Sea in the south, and halfway into the Alps in the north.

I have a a few thousand photos of Provence: page 1, page 2 and page 3 (slow link). (The thumbnail page is generated with a small script.)

A short list of things to do if you visit the “Alpes-Maritimes.”

Some HTML and other utilities

I've thrown together a few simple C programs that can number headings in HTML, make a table of contents, extract elements, pretty-print, etc. Binaries are available through Debian.

If you often translate XHTML files, you may want to convert the XHTML to PO, translate that, and convert back. I wasn't completely satisfied with the converters I found, so I made a perl script, poxhtml. (XHTML only; to work with HTML, combine it with Tidy or my HTML utilities.)

hcalproxy runs as a proxy and converts hCalendar microformat into icalendar: if http://example.org/ex.html is an HTML document, then http://localhost:8000/http://example.org/ex.html is an icalendar document with all events from that HTML document.

Nothing to do with HTML, but useful anyway: a little program that shuffles the lines of a file. Sort of the opposite of sort… To compile, just type make shuffle. The manual is in the form of a Unix man page.

A litle tool for users of the Unix shell: progress copies its input to its output while displaying a progress meter. Different styles are provided. Useful in pipelines that take a long time.

A tiny C program that prints the artist, title, etc. tags from MP3 files, mp3tag.c (Version 1 tags only.)

Another C program, that decodes the images taken with a Mitsubishi DJ1000 digital camera to PPM format: dj1000toppm.c

I used to use this shell script to generate thumbnail pages for my photos, but after I started using rdfpic, I switched to another shell script that gets the description from the RDF metadata. The latest incarnation uses XMP (a subset of RDF).

I used to use plan to keep my appointments, but now I'm trying korganizer. I wrote a Perl program plan2vcs to convert from plan format to vCalendar (used by korganizer). (This is version 2.1. Version 1.0 had some bugs, which were fixed by Marcus Gottwald.)

XML Schemas are rather hard to write and read, so I started writing a little utility "mnbftosch.pl" that allows you to define an XML-based format using a traditional context-free (EBNF) grammar. It is a Perl script that takes a grammar and generates the equivalent XML Schema. It is by no means ready yet, but it does occasionally write correct Schemas. Two related essays ("Context-free schemas" & "Meta-grammar") give some more background. (Example input & output.)

rdjpgxmp, wrjpgxmp and xmptool: the former two are little C programs to extract and insert XMP data in JPEG (JFIF) files. The latter can query an XMP file for the value of a particular property (string-valued or URI-valued properties only for now) or can insert a property/value pair into an XMP file.

jpegxmp: a Bash script that combines the above to do a few common operations. E.g., jpegxmp --language=en --title="Foo" myphoto.jpg adds the Dublin Core title property to myphoto.jpg and sets its language to English; and jpegxmp --from-exif myphoto.jpg sets the Dublin Core date property from the EXIF date. Try jpegxmp --help.

htmldiff is an HTML diff program: it compares two files and marks up the differences. (It is a quick hack, based on wdiff. Don't expect perfect results.)

I've also made two font families, Gladiator and Gladiator Sans (alternative link).

Two little programs in Gnu AWK (gawk), unsign.awk and sign.awk, can remove a digital signature from an e-mail message or add one (requires gpg). They could be used, e.g., as filters when sending e-mail.


Symbolic constants in CSS are a bad idea, see my essay “Why ‘variables’ in CSS are harmful.”

An (unfinished) essay on possible future technology for “Web applications,” simple programs that are downloaded on demand and execute inside a client program, for problems where Java applets would be overkill. Another essay focuses on requirements.

An essay on the principles of good specification design, as I'm trying to apply them in my own work: “What is a good standard?”

I've created some software for a simpler variant of XML, to see how it works.

Example of data re-use

One of the promises of the Web, and of the "semantic Web" in particular, is that data can be machine-readable and can thus be re-used. As an experiment, I've written a robot that collects the daytime temperatures in Nice, France, once per day, and creates a graph.

Wbuild and other software used to be available from the (Groningen University) Faculty of Arts's FTP server.

The Free Widget Foundation

I contributed a number of X widgets to the FWF (Alert, Animator, Arrow, Board, Button, Canvas, Common, Frame, Group, HScrollb, Icon, IconBox, Label, MenuBar, OptButton, Pager, PieMenu, Prompt, PullDown, RadioGroup, RowCol, ScrollWin, ScrollWin3, Scrollbar, Slider2, Slider4, Tabs, TextMenu, ThumbWheel, Toggle, VScrollb). Together with Joe English, I wrote the Scrolling Widgets Interface Policy (SWIP) See the ASCII or the DVI versions.)

The FWF is no longer active. I've put the most recent sources that I have in a tar-file (fwf-4.0.tar.gz, 1.5Mb). This is basically version 4.0 with some very minor edits.

A Java applet

Your browser is not configured to show Java 1.1 applets. This would show a clock with the time in France. This is the current time in France (unless you have no Java implementation in your browser, or your computer's clock isn't set correctly…). See more examples and some documentation or get the source.

The color of the dial varies from yellowish (noon) to dark purple (midnight).


Sign to the
   "Bert Bos walking path" Bert Bos
2004, Route des Lucioles, B.P. 93
06902 Sophia Antipolis Cedex, France

E-mail: bert@w3.org
Tel. +33 (0) 4 92 38 76 92
GPG key (fingerprint 7744 0204 52A5 14D9 147D 2A13 2D7A E420 184B 5BA4), business card (HTML), business card (SVG)

PS. My favorite radio channel is FIP (MP3 stream). A shame it is no longer in the ether at the Côte d'Azur ☹ (And they are better at making radio than Web pages. These links change every few years…)