Pranking

This week was a good week. I engineered a prank at work that brought much fun and entertainment, and made the week even better. A prank in 3 acts.

Act 1

We use Zoom for our meetings and when I noticed, just as I was leaving at the end of a meeting, that a colleague of mine wasn’t at his desk, I thought I just had missed an opportunity to take a screenshot of his room without him, and later use it as my own background image and see his face as he realized!

So I went back, found his room still empty and quickly took a screenshot. I was in the process of making my window bigger to take a better screenshot when he showed up. Uh oh! “Oh, you were waiting for me to return?,” he asked. I couldn’t quickly enough come up with a good excuse for the probably guilty look on my face, so I just fessed up. Good laugh was had. And see you next time, wink wink!

The next thing I did was to quickly edit out his name from the bottom left part of the screenshot. I saved the photo somewhere I could open it on my iPhone and used the “healing” tool of Snapseed (my favourite —and free— image edition software on smartphone), which basically redraws an area of your choice using its surrounding. Then I adjusted a bit the sharpness and reduced the noise to get the best out of that pretty small screenshot.

Then I tested it as my own Zoom virtual background 👌and gave him a preview.

Screenshot of an instant message conversation where I showed a picture of my zoom using as background the image I stole of a colleague's background. That colleague liked the result and gave a star-eyed emoji as response
a glimpse of what it looked like when I use this picture as my Zoom background

Act 2

I wrote to everyone-but-him in the team who usually attends our weekly all-hands meeting (which was the next day) and shared my “work” and the context, offering them to join me in escalating the prank, since I had been made.

And it turned out so so much better this way.

Response was high. But then, who isn’t in for a bit of harmless fun? Especially when it’s so easy to set up.

Someone had suggested some particular timing: our colleague usually gets to speak early in the meeting and that was going to be our cue to all switch to our virtual background of his soon-worldwide-office.

Act 3

The meeting started as usual and people, who were a bit more numerous than habitual, kept a very straight face. Our colleague was called to speak and that’s when most of the tiles in the gallery instantly changed!

Screenshot of our zoom meeting where everyone (but one person) in the 4 x 5 grid of video feeds uses the same background image. Everyone's face but mine has been replaced by a smiley.
Screenshot of our zoom meeting where everyone (but one person) in the 4 x 5 grid of video feeds uses the same background image. Everyone’s face but mine has been replaced by a smiley.

Everyone yielded to the smiles that had been suppressed and for a few moments none of us heard him. We were too focused on awaiting his reaction. And yet, he continued to talk, unaware, for a few seconds until wrapping up. At the exact moment he briefly paused, hesitated, apparently lost track of his thought and then finished his word, we knew he was finally looking at his screen and he was confused.

Mischief managed!

He was not expecting that, to our delight! Hearing his heartfelt laugh was such a reward. Another bonus was seeing live a number of colleagues who usually don’t share their video in meetings.

I enjoyed immensely seeing a whole room of smiling people.

The weirdest first day of vacation

“Yes, I’ll be working a bit on the project while I’m off because I really dig it!”

Me, massively underestimating “a bit”
In this write-up, I’m attempting the epistolary narrative style that I remember enjoying from Stephen Chbosky’s excellent novel “The perks of being a wallflower”

Dear diary, I slept in this morning \o/, got up and drank two or three cups of espresso while I lazily browsed social media and played a few games on my smartphone. I did yoga a bit before noon, showered, and got ready for the rest of my first day of vacation.

I ate a light lunch standing up in the kitchen as I was transplanting the ferns I collected last Sunday near the lake.

As I pondered which subject I was going to draw later in the day as part of Inktober, I also pondered the oddity of my Apple Watch not recongnising as “stood” the good chunk of the previous hour that I had spent, well… standing. I certainly had been “moving a little” on the account of transplanting ferns not being the kind of activity you can engage in by being immobile.

Memoji-2020-laptop

A quick time-check led me to my desk. I had just enough time to publish a press release.

I drank more espresso, took the dog out for a walk and by then I had a pretty good idea what I was going to draw. I returned to my desk again for a one-hour meeting that lasted three hours /o\ That’s the first massive underestimation of how much time to block for that project (the W3C website redesign).

My brother showed up during my call (much earlier than I anticipated) and as he didn’t have his keys he tried to FaceTime me. I rejected the call, texted him that I was in a meeting, but he responded by texting me that he was outside. So I ran downstairs to let him in, ran back up and continued with my colleagues.

Memoji-2020-shock

The doorbell rang not too long after. I apologised to my colleagues and ran downstairs and outside to pick up a delivery that I expected tomorrow. I dropped the unopened package on the dining table and as I headed back upstairs to my computer, I smiled at my brother. By then he was taking all the space on the sofa, which was fine because the cat doesn’t like the sofa that much.

My valiant colleagues and I had been at it for what seemed like days, and I was aware that each of them had other fish to fry, and yet nobody else was better positioned than them/us to do what we needed to do. Time was passing and it was food o’clock in all of our time zones.

We were done. Rather suddenly —It was the strangest thing! It seemed only moments before that we had gone through two thirds of the exercise and I was agonising (out of shame because I was getting way more of their time than was bargained for, and because my brother was waiting downstairs.)

Memoji-2020-shrug

The completion of our task took us all by surprise! As I quickly thankologised profusely to them, one of my colleagues quipped that he was almost late for second breakfast, another enquired how many breakfasts there were and whether several lunches followed and how many, and the third colleague really looked like he wanted us all to put on more work! So my finger smashed the Zoom button that ended the meeting for all.

It was 8 o’clock. I was thinking that working the equivalent of a half-day during my vacation wasn’t too bad from the point of view of my employer, and I wondered if I had missed the time before which I could still go back on how many days I was really taking.

My brother wanted me to try a particular wine that he likes very much. Opening my package made me happy: my favourite fragrance arrived in two versions: regular and “body mist.” My brother’s wine was very good, he’s right. We sipped it and ate guacamole and chips while the oven heated. I made a nice dinner that didn’t take long to prepare, and we both enjoyed it.

Soon enough we were on the sofa, me drinking espresso and him drinking tea; each talking to each other with interest, him about why some stuff changed at his workplace and me suggesting further areas of optimisation (he will at least explore one idea.) I stood up a few times and “moved a little”, as commanded by my smart watch. He doesn’t mind, he doesn’t think I’m weird.

I grabbed my art book, pencil and ink pen a bit before 11 o’clock. Today’s Inktober prompt is “sleep” and I was going to draw a newborn sleeping next to his daddy’s chest. My brother commented that the photo I used as reference was too detailed, and he may be right, but I had a good feeling about it and told him I was trying a minute or two before giving up. My feeling was indeed right, and my brother was surprised when I was finished, because I finished earlier than he anticipated, and the drawing was pretty good.

Memoji-2020-party

Eventually, my brother left. It was 2 am. We had spent a lovely evening together. It had been a nice break from work but I was keen on finishing where I left off, out of duty because of the timeline that was agreed on.

The time tracker on my computer started logging a new day at 5 am. I was done right after 6. Whew! This was the second massive underestimation of how much time to block for that project. But now the people we work with can do their part and hopefully we will all meet the deadline in two days.

As I stood at my window, sipping espresso and watching the sky going from really dark to some sort of hesitant but unmistakable glow, I observed that it’s a whole day of vacation I could have written off.

A bitter pill to swallow

Illustration of a sad person at a desk

I was prepared for that meeting where a man said the same things I said. But I wasn’t prepared to hear that in spite of being the project manager, I would need to be trained if I were to act as interface with people on this project. It’s not like I hadn’t been interfacing so far, and the group needed a different kind of interfacing. So I’ve been wearing my cranky pants for a couple of days. There’s a large dent in my motivation as a result, and an even bigger dent in my sense of worth.

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.

Illustration of a spotlight lighting a man running, graphs and a book

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.

Illustration showing a woman at her computer leaning against stacked objects adorned with a gear

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
Illustration showing hands at a keyboard in front of a screen

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.

Illustration of an alien beamed by a UFO

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!