2021 in review

In which we look back at 2021 and look forward to 2022

Posted in Personal on

Time's almost up for 2021. Why not close it off with a post describing the highlights of the year?

Professional highlights

Building the Corona Dashboard

The official Dutch Coronadashboard from the government is an important source of information on everything COVID-19. With CLEVERºFRANKE we've been involved from the start of the project with the strategy, design and development. If you're curious about that process, there's a beautiful case study online.

Open source

It's been a huge honor to work on this project. The work had a substantial impact on the lifes of many people. Besides that, I got to work with really clever people and saw my work open-sourced on GitHub.

This was the first time I've worked on a project in the open. It was terrifying, but also thrilling. Where I was scared of a generic "the government can't do IT" mentality from the public, most responses were really positive.

Some feedback on Twitter described it "a showcase of modern web development and best practices". From a technical point of view, his might be the biggest compliment I've ever received?

It was great to see the public interacting on GitHub issues and in community run Slack channels. We've merged PR's from the public and took feedback from issues into account when iterating on the product.

Accessibility

Accessability is an important topic for the dashboard. We've joined multiple accessability sessions, where our whole team could experience how visitors with a disability experience the product. It's been eye-opening and we continuously try to improve accessability where we can.

For example, try tabbing around. You'll find most of the visualizations and the hidden datapoints are actually accessible through keyboard navigation and announced by screen readers.

From humble beginnings to mature codebase

While we started the project in create-react-app, we quickly switched to Next.js so we could build pre-render the pages and deploy them as Static HTML Exports. It was incredibly important to us that the site would load fast, be cacheable and progressively enhanced. Coupled with Akamai this proved to be an incredibly resilient way of serving the dashboard.

Talking about resilience, we introduced custom schema validators and TypeScript to the project. It can't be stressed how much it benefits the project. It's very comforting knowing daily data updates get validated automatically every release and the front-end has adequate defensive programming.

To faciliate multiple languages we used Lokalize. It's not been a great experience, and we saw the need for a CMS get more urgent over time. We introduced Sanity as a CMS and decided to move all locale files to Sanity. It's absolutely amazing how easy it was to do that with the help of a small migration script. I can't recommend Sanity enough if you're looking for a flexible, developer friendly CMS.

The more mature the product became, the more we got limited by the static exports feature. For instance it did not support dynamically resized images. Every change in the CMS meant running a full build and deploy cycle. To solve this bottleneck we had to move awaw from Static HTML exports and serve the application through a Node.js server.

Since a couple of months ago the project is running as a dynamic Next.js server. Most pages are (automatically) statically generated. Some pages and API's are rendered on the server. This allows us to do really fun things, such as rendering very complex municipality maps as canvas images on the server, reducing the DOM depth as much as possible.

It's been a blast working on this project. However, from the start of next year I'll be working on a different project. It's difficult to let go, but it's also exciting to start something new.

Launch of Globalance World

This year we've launched Globalance World. This product by Globalance Bank allows you to see the economic, societal and environmental impact your investments have on our planet.

Fingers crossed that this project nudges some big fish investors in developing more sustainable portfolio's. 🤞

Eurovision

This one was hard to miss! The work CLEVERºFRANKE has done was visible all around europe, and Rotterdam was plastered in it's branding! Even if I personally didn't work on this project, I feel immensely proud of the work done on this project. I couldn't be happier to see the results on screen.

The artwork was well received by fans, we've seen lots of fun recreations as e.g. cakes or interactive JavaScript versions

Our team received a nice behind-the-scenes tour at Ahoy and I got to see Iceland rehearse for their performance!

Truly amazing that we got to design the 2020 and 2021 artwork.

Things I learned

  • Tried out Sanity. Loved working with it. Immediately tried to use it for all projects where I need a CMS. It's honestly the CMS I've always dreamed of having at my disposal.
  • Stitches and Radix Primitives. These are tremendous libraries from the smart people ad Modulz. It made me really bullish on headless components and CSS-in-JS.
  • Whatever the opposite of "death by a thousand paper cuts" is. It's so nice to make projects smaller and faster little by llittle. Incremental improvements is a mindset you can train and nurture. I find it much more scaleable than expecting everything to be perfect in an unenforceable "Definition of Done".

Hobbies

The rabbit hole that's called Espresso

Around seven years ago I bought my first espresso setup. While it's served me well over the years, there are some annoyances that led me to research new equipment. This year I upgraded to a new coffee grinder and espresso machine. The grinder has near zero retention, meaning the coffee going into my machine will not be stale. The machine allows me to configure pressure, flow and temperature.

All of this makes the whole process more predictable and consistent. Now I dare to purchase more diverse coffee and let me tell you, there's a whole world of taste notes I would never expect from coffee. Who knew coffee could taste like blueberries, bourbon or bergamot?

This fall I brought my equipment to the studio for a fun day of being a barista and caffeinating my colleagues. That's my thank you for them patiently listening to me go on and on about coffee all year.

Wet Shaving

I've never enjoyed shaving much. This year I tried wet shaving with safety blades and discovered I loved it! I went into the deep-end and found myself a new hobby. If you can call wet shaving a hobby? I've bought the Leaf Shave and Leaf Twig and don't regret it a single day.

I'm sampling all kinds of different blades – Derby and Shark bad! Voskhod, Astra Platinum and Gilette good! – to see which blade suits me. Soaps are a bit more expensive but I've really been enjoying Stirlings Executive Man lately.

Wetting a brush, loading the soap, creating the perfect lather, the sound the blade produces when cutting the hair. Shaving used to be a mundane moment, but now it's become a daily, enjoyable ritual.

Entertainment

  • Rediscovered Ozark. Heavy watching, but what an ambiance. Incredible.
  • Binged Dark. Such a good show.
  • Finished Gomorra. I'm not going to spoil anything but if I could recommend any show of the last decade... it's this one.
  • I'm binging JoJo's Bizarre Adventure. It's incredibly over the top and doesn't take itself seriously at all. Can't say I'm a fan of the rampant misogyny in the show though.
  • Discovered Final Space got cancelled. Jerks. It was such a good show.
  • Still gotta finish the original Cowboy Bebop. Did not see the remake.

Looking forward

  • Kinda excited to do something with Remix. It looks like a breath of fresh air, although it's hard to cut through all the marketing. I'll have to try it in a real project before I'll have a real opinion on it.
  • The final season of Attack on Titan will air early next year. It's been a ride... and I can't wait to see some of the scenes from the manga in the anime.
  • Sort of hyped for the Sandman on Netflix. The author, Neil Gaiman also wrote American Gods and I've enjoyed that TV adaption.