My ideal frontend interview

I’ll be the first to admit that I think I’m terrible at tech interviews. I never had a proper computer science …

On attributes for HTML form elements

I often come across tutorials about building forms on the web. In spite of all the newfangled techniques and frameworks we now …

Recreating the Fool's Mate chess move with CSS Grid

When Firefox 66 was released, one of the features that got myself and a couple other layout enthusiasts really excited was the …

Internet Explorer 3, an adventure in cross-browser compatibility

Some of you might know that I run the CSS meetup, Talk.CSS in Singapore together with my best mate, Wei. If you didn’t, you …

HTML slides without frameworks, just CSS

I am a huge fan of reveal.js and have used it for almost every talk I’ve ever given. It is a full-featured presentation …

Table design patterns on the web

Tables are a design pattern for displaying large amounts of data in rows and columns, making them efficient for doing comparative …

Customise radio buttons without compromising accessibility

We can do quite a lot with CSS to create fancy radio buttons (or checkboxes, for that matter), and that’s awesome.

Refactoring an inherited codebase

So for 2018, I got myself some gainful employment doing full-time frontend development work. You know, the kind where you go to an …

Math and front-end

If you were one of those kids that wondered why you had to attend all those math classes and learn about angles and algebra, well, …

Learning Cordova while rewriting an app

This is a “refactoring legacy code” post, and I suspect you’ll see more of these in the months to come because I’ve …

Images, the web's nutrition problem

Okay, that wasn’t my best headline, writing is hard 🤷. But let’s face it, the web has an obesity problem. I remember …

All about the HTML <ruby> element (in 2016)

The ruby I’m talking about is not the Ruby programming language. As a native Mandarin speaker, this element is pretty …