My other website behind the curtain

I’ve been editing the W3C website for a few decades now (gasp!) and in leading its redesign from the 2008 design, I am learning an astounding amount of new things about it! Here are some of the things I know about it.

Spotlight on the W3C website

In the 21 years I’ve been with the W3C, I remember only 3 different designs, the current one dates from a decade ago. Redesigning our website is crucial to improve the overall experience of those who depends on our Web standards work.

The website is managed by W3C itself and has been up for three decades. It currently contains over 2 million web pages. They’re static HTML or built in Perl, PHP, come from WordPress or are custom built using Symfony.

Tech stack summary

  • Debian Linux
  • Apache is used for serving the static content
  • MySQL for database storage
  • Varnish HTTP Cache is used for full-page caching
  • HAProxy is used for load balancing
  • There are over 3,700 Apache .htaccess files with different rewrite rules

Hosting & content

In a large-scale hosting setup, there are around 100 servers running Linux Debian on OpenStack, of which 20 to 30 servers are related to the primary website.

Web content is stored mostly in CVS and databases via CMS tools (WordPress, Symfony), and secondarily in GitLab and GitHub.

Most content is managed as static HTML edited locally (e.g. emacs, vi, BlueGriffon) and committed into CVS repositories using CVS clients, the terminal or HTTP PUT or WebDAV. Or, content is generated dynamically using Symfony or statically via makefiles, XML and XSLT.

25 instances of WordPress power the W3C Blog (over 950 posts) and W3C News (over 4,200 items), but also our Talks, working groups blogs, a test site, and W3C Community and Business Groups.

The W3C Homepage

The current homepage of the W3C website is a mix of HTML snippets which usually appears elsewhere on the W3C site, generated via XML, XSLT, PHP and other tools:

  • The News items are read from WordPress
    • The “homepage news” category determines what to show on the W3C homepage; we typically show up to 9 entries
    • The “top story” category determines which news item is expanded on the W3C homepage; we prefer to feature one, but have at times shown two or more
  • The right-hand side shows the last three posts from the W3C Blog
  • W3C Member Testimonials rotate from a database
  • The Events and Talks are shown from a Symfony app and WordPress respectively
  • The search bar links to an external DuckDuckGo search (that we chose for its good reputation for data privacy)
  • The rest is static

Markup errors in any of the source files will likely “break” the homepage. On average, I break the homepage 10% of the time!

The sound of things

Sound that things make and their levels, as analysed on my smart phone with Decibel Ultra:

Light rain under the porch: 60 – 70 dB
Heavy rain under the porch: 90 dB
Thunder striking a couple kilometers away: 100 dB
Downpour under the porch: 100 dB

This is usually when I give up staying out under the porch, because it means ricocheting water will soak me soon. And my computer too. [User relocates] Here, let me wipe a few drops from my screen and trackpad. Done. You should see the cat –having migrated indoor against her will, she sits under the table in front of the French window and looks dismally at the curtains of rain.

I like to measure the sound of things. Not all things, only things which sound level I find notable. Here are a few additional examples:

Loud snoring: 86 dB (peak)
MIT machine room: 83 dB? I haven’t committed that one to memory, I was too busy being impressed.
Meadhall nearby Stata Center: 103 dB! I lasted throughout dinner once, kept only by the fine company of two people I like.

Chatting with a bot

We use several IRC bots at work, and this is what happens when sometimes they interrupt a conversation, out of the blue (we, humans, usually invoke them with triggers, none of which I knew I typed). This bit has only my side of the conversation, and I chose to leave out all context as it entertains me better this way:

2012-07-27T15:02:23Z <koalie> so I'll do it by hand
2012-07-27T15:02:23Z  * Zakim koalie, you typed too many words without
commas; I suspect you forgot to start with 'to ...'
2012-07-27T15:02:40Z <koalie> ok, Zakim
2012-07-27T15:02:57Z <koalie> to ... have it with both, so I'll do it by hand
2012-07-27T15:02:57Z  * Zakim sees koalie on the speaker queue
2012-07-27T15:03:05Z <koalie> silly bot
2012-07-27T15:03:10Z <koalie> ack me
2012-07-27T15:03:10Z <Zakim> koalie, you wanted to ... have it with both,
so I'll do it by