Frontend DX expert
Take the frontend healthcheck
Contact me for frontend help.
I have been using typescript for some time, and I’ve repeatedly got one particular error that I have not taken the time to understand until…
Many of us have gone to the gym, and initially, we have obtained good results. Once your body has adapted, the same routine may help you…
Hooks burst onto the scene in React 16.8 with the lofty goal of changing the way we write React components. The dust has settled, and hooks…
One of the biggest challenges in writing frontend code or nodejs code is dealing with asynchronicity. There was an original generator…
If you have a typescript codebase in a monorepo that is not using typescript project references then you are missing a trick. Typescript…
If you are putting out digital content onto the world wide web to publicise your work, then there is a high chance that your audience will…
Disclaimer The post is tongue in cheek and meant to be a light hearted poke at current developmet. Please do not take this post too…
TLDR; Where do we want to get to? The code below is bundled with rollup. Rollup has determined the bare minimum of imports the code needs…
There is no denying that the pattern is super simple and has simplified asynchronous programming for developers more akin to server-side…
Disclaimer The views here are very much my own and not the opinions of Logrocket. A further disclaimer is that I have spent the last ten…
The secret to web performance is less code. With the advent of the now-infamous single page application, extreme amounts of javascript…
Before I start, I would like to thank Iain Hunter for some valuable tips into real-world terraform. If you are using one of the major cloud…
I initially wrote this post at logrocket. The word has not got out, and accessibility is often an addendum to months or even years of web…
I initially wrote this post at logrocket. Before I start, I would like the jury to know that I am, for the most part, a typescript fan. It…
I originally wrote this post at logrocket. Before I start, I want to point out that I am not referring to one particular project or any…
I originally wrote this post at logrocket. One of my previous posts Frustrations with React Hooks got an incredible amount of views and…
What problems do Hooks solve? I originally wrote this post at logrocket. Before I detail my current frustrations with Hooks, I do want to…
I originally wrote this post at logrocket. Before I start, I want to emphasise that this post is not about one particular project or any…
The concept of a bottom type and a top type is a construct that exists in mathematical type theory and exists in many programming languages…
Why?? Long and the short of it is, tslint is on the way out which is really great as tslint has always felt like a very poor man’s eslint…
Typescript 3.4 is out and while I aways find the official typescript docs very informative, they always feel a little bit too academic and a…
I am writing this because everytime I have to set up code splitting with typescript, webpack and React, I forget how I did it last time and…
The svg viewBox is a mysterious and confusing attribute that holds the key to responsive svg documents. On a recent contract, I acquired a…
The title of this post would not have meant anything to me 24 hours ago until I came across a scenario that I am surprised I have not come…
WARNING, THIS CONTAINS REAL CODE, NO COUNTERS WHERE HARMED IN ORDER TO CREATE THIS POST, REPEAT NO COUNTERS ARE IN THE CODE EXAMPLES. YOU…
Two of the more abstract concepts in typescript are mapped types and lookup types. Mapped Types Mapped types provide a mechanism to create…
Following on from my last post on affine matrices I want to go further into what is required to scale svg elements and maintain their centre…
I recently had a requirement to add zooming and panning to an svg image. Panning and zooming are popular interaction techniques which let…
I am writing this because I could not find anything adequate in my interweb searches for how to draw a hexagon using a svg polygon What I…
Narrowing a union type In typescript, a union type describes a value that can be one of several types separated by the vertical bar, for…
Higher kinded types are not currently possible in typescript but let us start by explaining why they exist. In functional programming there…
I’ve recently been working on an online application form in the form of a multistep wizard that had strict accessibility requirements. I’ve…
I recently came across a situation with redux that I had not considered before. I had created an autocomplete component that was using…
Dealing with asynchronicity in nodejs has been a challenge from day one due to its non blocking nature. The evolution has been slow and the…
Below is the end result of this post or you can see a live demo here. This will not work for IE11 or before. The sass/css of this post can…
You can see a working example of the end result of this post here and above is a screenshot. The full and current source can be found here…
Below is an animated gif of the end result of this post or you can see the real page here. The full and current source can be found here…
Following on from my last post on axes positioning, I have added the functionality to add a tangent to the curve on . You can see a working…
Up until now when I have been dealing with d3.js’s axes components, I have always kept the axes positive, i.e. both the x and y axes where…
I am available for work right now, if you are interested then email me directly. Following on from my last two posts, Perpendicular…
Following up from my last post on how to draw the altitude of a side of a triangle through a vertex, I wanted to draw the 3 perpendicular…
I’m back at college learning the maths that I should have learned a long time ago. I am also trying to kill 2 birds with one stone by using…
I’ve recently gone back to college to do a higher maths class at night and I want to use some of the concepts I am learning in my…
Rendering long lists of tabular data on the client is something I have spent a lot of time on and this dates back to my backbone days. You…
Why should you care about functional javascript? I’d heard of the merits of functional programming for a while now and up until recently, I…
I’ve become addicted to solving programming challenges that you might find at hackerrank or 4clojure. I spend most of my day job in and as…
A question I see coming up time and time again is how to return a resolved promise from a computed property. There are a number of ways of…
I’ve been using ember for 2+ years and the more I deal with a single page application that exists in memory for an indeterminate length of…
Observers Are Like Crack Cocaine only more destructive… After 2+ years of working on the same emberjs application, I have learned the hard…
Where we are In my last post here, I put forth the argument that the new data flow story of ember next does not go far enough. I now want to…
The Ghost of Christmas Present It is ironic that the thing that first drew me to ember is the thing that ended up causing the most…
I’ve tried to stay away from building anything meaningful while I have been learning clojure and instead I have been solving problems on the…
I’ve fallen in love with clojure and as part of my learning, I’ve set myself the goal of solving all the problems on the excellent 4clojure…
I came across a situation recently where I needed to know the and co-ordinates of the mouse while the user was dragging over a canvas…
I’ve been digging into clojurescript more and more but as I am still quite new to cljs, I find myself over zealously calling the clj->js and…
Warning: The examples use Ember 1.7.1 I’m not going to go into great detail in this post as I think the code examples will be out of date…
I have recently fallen head over heals in love with clojure and I’ve decided to run through the problems in the excellent 4Clojure site to…
I gave a talk last night at the local Glasgow JavaScript user’s group and I was a little surprised that not everybody had heard of the bind…
In my opinion, the most challenging thing about programming JavaScript in the browser is having to deal with asynchronicity. As developers…
If you ever have wondered how to call a handlebars helper from another handlebars helper but were unsure how to, then fret no more. In…
Scenario The rails project that I am currently working on presented an interesting problem which I am guessing is a reasonably common one…
I am currently using Ember.js for a side project and I have ran into some interesting and unexpected behaviour while driving the development…
I have been using Backbone.js for a few months now and I have found the learning curve to be a steep one. As is the case with any flexible…