Thoughts. Ideas. Learnings.

Welcome to our blog. Make yourself at home.

[ES5 & ES6] Debounce React Events on Inputs

In my time, I've written a lot of React code, and one of the most common requirements I come across are the ability to update components when a user has finished doing something. For example, a table with search and sort options. The sorting should use onClick and run immediately,…

A Need for Artists and Scientists

In the digital sphere, measurement currently reigns over all things. We like to think we can measure everything, and that those measurements help us make better decisions. However, of late there's started to be a bit of a push-back against this, and I think it's happening for three reasons: Much…

Snapchat, Hidden Data, and the Danger of External Platforms

A story recently broke on the DAU numbers for Snapchat. The Daily Beast got hold of 5 months of metrics on Snapchat's product features, and as a result, were able to get a glimpse at how the app is actually performing. Which is a nice alternative to the rather stagemanaged…

From Tactics to Strategy: Messaging, Content Marketing & Experience Design

Go back many years ago, and we as digital marketers and consultants had the ability to target specific keywords and know from Google what the search volume of those would be, and we could track the traffic by keyword in analytics. Nowadays, those things for the most part aren't true.…

Thoughts on the Future of the Creative Agency

A brand must do many things to have and stay relevant with people. It must matter. It must stand for something meaningful and shout about it. It must act in a way that affirms that this is something they are passionate about. That can be a message. Dove and Real…

Aim for 0.1x Growth

In development circles, there's the concept of the "10x engineer". That is to say, the best of the best, who by virtue of their excellence are 10x more productive than average. The problem is, productiveness doesn't scale. Complexity adds inertia, and inertia is logarithmic in scale, not linear.…

A Narrative of Hope

I was thinking about headlines and book titles the other the other day, and it spawned a thought which I thought I'd follow up on. To what extent can the winners of politics be predicted using their slogans? Well, here's some of the most successful political campaign slogans for the…

Things are Actually Complicated

Design is not veneer. Driving faster isn't just about velocity. Flying to the moon wasn't just about rockets. SEO is more than link volume. 1+1=2 isn't easily provable. It's hard to know why we like what we do. English has more words than you know. As it turns…

Vivaldi: A Universal JS Router Library for React

One of the problems faced when developing more complex universal applications is how to manage routing requests to UI output. React Router does this by taking in a URI and returning a React component structure. And it's excellent at doing that, but doing so means there's only the front end…

Brand Truth

There's a lot of talk about transparent, open & authentic communications nowadays. To me, the end goals of this discussion can be summed up thus: Honesty in brand creative when communicated to consumers This is, of course, vital (and always has been). However, in a world where everyone has personalised…

Goldfish Advertising

How many ads can you remember? How many do you think you've seen? How many did you care about; which ones made you feel something? The first number is fairly small. The second is vast beyond belief. The third is trivially miniscule. £18.3 billion is spent on all forms…

Big & Meaningless Data

The main problem with the digital industry at the moment was nicely summed up by Bob Hoffman: The online advertising industry is drowning in data, but has generated almost no useful facts or principles. The encyclopedia of things we don’t know about online advertising since we started collecting 'big…

React Dynamic Components: Building & Rendering

If you just want a quick answer on how you do this, here it is: renderElement(key, props) { var components = { 'componentA': componentA, 'componentB': componentB, 'componentC': componentC } return React.createElement(components[key], componentProps) } If you want more information on how to use this more broadly and an example live implementation, read…

The Slow Magazinisation of the Web

A thought struck me today, as I came across yet another page of the web starting with a full-bleed image with text on it, that what web design over the past two to three years has been slowly doing, is starting to try and turn the generally crappy designs we've…

Marketing Influenced Application Development

I've spent most of my professional life doing three different things: Marketing UX design Full stack development As a result, I've got a reasonably unique perspective. So I thought, in that vein, I'd talk for a minute or two about modern application design, and why it matters to designers and…

Wallpaper Not Required

There's an interesting, let's be generous and call it a feature, of modern residential architecture. Much of it looks remarkably similar to much of the rest of it. Bright white interiors. Bauhaus structure. Black exteriors. I recently bemoaned how some things look similar, because they're made of the same things,…

Just Delight Me

Delightful: engenders the feeling of delight Good marketing works for a single, simple reason: it is delightful. Marketers are in the business of creating delightful, emotive experiences. Over time, the cumulative effect of those experiences builds into a perception of the brand in the mind of those observing that marketing.…

What You Do is Abstract, Not Specific

We never think of ourselves as tied to any particular technology or skillset; we think of ourselves as tied to our customers, and we're trying to work backwards from their needs Jeff Bezos, CEO Amazon - Code Conference 2016 There's no such thing as a digital marketing agency, just a…

A Wave of Rubbish: Holding Content to a Higher Standard

There's a wonderful moment at the end of Pretty Woman. For anyone who's not seen it, Richard Gere is a corporate raider after his latest target, a ship-building company. Towards the end, in a moment of anagnorisis, he realises his life has been spent creating a company which creates nothing…

Upholstrygeist - A Free Ghost Theme

Upholsterygeist is a minimalist Ghost theme built using OpenDAWS, available here. Features Endlessly responsive using flexbox Typography friendly Built with LESS Syntax highlighting using highlight.js baked in Installation Download the files using the GitHub .zip download Unzip the files and rename the folder to 'Upholsterygeist' Upload the folder to…

Really Responsive Design and the Adaptive Grid

Many years ago, the web was a simpler place, in terms of design. After all, it's quite hard to bring anything of visual beauty to your users, when your canvas is monospaced syntax-highlighted text, and nothing else. Thankfully, we've come quite a way since then, and now we can do…