For archival purposes

client-work (14) codrops (13) computing (1) css (65) design (35) devlife (17) devtools (2) drupal7 (28) drupal8 (7) emoji (1) frameworks (4) git (1) github-pages (5) gitlab-pages (1) gulp (5) hardware (2) html (11) i18n (6) javascript (19) jekyll (6) kohana (3) nexmo (9) nodejs (10) opinion (35) performance (4) podcasts (3) react (1) retrotech (5) rtc (1) servers (2) side-project (5) site-building (12) specifications (1) theming (4) translated (5) typography (15) workflow (8)
2020

Add Texting Functionality to a Video Chat With Vonage Video API

This series of tutorials will explore the Vonage Video API (formerly TokBox OpenTok) and what you can build with it....

Create a Basic Video Chat with Vonage Video API

This series of tutorials will explore the Vonage Video API (formerly TokBox OpenTok) and what you can build with it....

Can you make a countdown timer in pure CSS?

I must first apologise for the somewhat rhetorical question as the title. About 3 minutes after I wrote it, my...

Basics of State and Props in React (2020 edition)

So I’ve finally decided to sit my butt down and learn React properly. I’ll talk a little bit about my...

Is your browser a polyglot?

Over the course of last year, I’ve gone over to Wei’s workplace numerous times to disturb her and her colleagues...

2019

How to Build an On-Page Live Chat

The Nexmo Conversation API allows developers to build conversation features where communication can take place across multiple mediums. A key...

Figuring out CSS animation properties with a magic kittencorn

A little known fact about SingaporeCSS is that we actually have an unofficial mascot. I haven’t named it yet, because...

Building a check-in app with Nexmo's Verify API

Let’s say you are running a game like The Amazing Race, where there are multiple checkpoints that players have to...

Add Two-Factor Authentication to Node.js Web Apps

Two-factor authentication (2FA) gets its name from the fact that you require two things to verify your identity. Something you...

CSS variables for fun and no profit

I run a little monthly CSS meet-up called Talk.CSS, and the man who founded this endeavour with me one fine...

An exercise in progressive enhancement

I’ve had more opportunities to work on the server-side of things these past couple of months, specifically in Node.js, and...

Getting started with Nexmo's Number Insight APIs on Koa.js

Nexmo’s Number Insight API delivers real-time intelligence about the validity, reachability and roaming status of a phone number and tells...

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...

SMS in the browser: an adventure in WebSockets (and Nexmo Messages API)

A lot of the heavy lifting done by the Nexmo Messages API happens on the server-side. Messages are sent, received,...

A beginner's guide to server-side web development with Node.js

For the bulk of my web career, I’ve worked exclusively on the client-side of things. Designing responsive layouts, creating visualisations...

2018

Build an SMS bot on Glitch with Hapi.js and the Nexmo Messages API

The Nexmo Messages API allows you to utilise a single API to send messages via multiple channels, like SMS, MMS...

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...

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...

2017

The one about an app

It’s finally happened. I did a proper Javascript thing. Now before you start to judge me, let me clarify that...