I’ve recently began working with Tailwind, the popular utility first CSS framework, and I’m a big fan. It’s customisable, but it also comes with sensible defaults out-of-the-box. Coupled with the Intellisense plugin for VSCode, which adds helpful suggestions for class names which saves flicking back to the docs, I’m happy about how quickly I can build responsive and maintainable CSS without adding too much bulk to the bundle.

Why CSS spacing can be challenging

Max Stoiber (creator of styled-components) argued that we should ban margin from our components, as they break encapsulation.

I agree with the conceit that it often…

A few weeks ago I passed the exam for AWS Certified Cloud Practitioner. This is the entry level AWS cert and the most straightforward to achieve, but that is not to say that you can pass it without prep. I’ve written this blogpost in the hope of providing some guidance to those of you wanting to prepare for this exam in a time-effective way.

When trying to study for this certification, my first port of call was the official video training on the AWS site. However, I quickly found that this style of the official training is somewhere between training…


I was lucky enough to attend the second annual ReactJS Girls conference in London last week. It was a fantastic day, listening to brilliant talks by women in the React community, and providing a lot of food for thought and inspiration for working in React and in web development more generally. This blog summarises some of my key takeaways from each talk.

Emma Wedekind — Building a Design System With React

  • When we talk about design systems,.
  • Users like consistency and predictability.
  • Design systems are comprised of three pieces — the design language, the component library, and the style guide…

Observables provide a way for you to pass data around your application in a way that is arguably more flexible and declarative than the alternatives. Angular uses the RxJS implementation of Observables to handle many common async operations, including events, routing and handling HTTP requests and responses. In this blog I’ll provide an introduction to Observables in the context of an Angular application.

Why Observables?

Observables are one of many interfaces we can use to handle async operations in JavaScript. In Stephen Fluin’s fantastic talk on Observables and Angular, he says that Observables can be seen as a way of…

Recently, I was looking for a fun API to play around with and decided to check out the Spotify API. Spotify have provided a handy quick start guide to help developers get up-and-running with the Web API. They recommend that you use Node.js, so be sure to install it either from Nodejs.org or via Homebrew if you don’t already have it installed, and confirm that it is working correctly before you begin.

Getting started is easy — head to the Spotify for Developers site and register your app, making note of your Client ID and your App Secret. …

Debounce is a great tool to have at your disposal when optimising your React application’s performance. We often want to manipulate the DOM based on user events, and we want our applications to be fast and responsive. Often, events happen in bursts — a user types a word or phrase, or resizes the window.

Take a look at the code snippets below from a simple React application. We have a simple search input, which filters a list of Pokémon based on the user’s input. The filter is stored in the state of the PokemonIndex component.

updateFilter = (input) => {…

Idempotence is a word I hadn’t come across before I started working with HTTP methods in Sinatra and Ruby on Rails.

I didn’t know what it meant, so my first port of call was, of course, Wikipedia:

Idempotence (UK: /ˌɪdɛmˈpoʊtəns/,[1] US: /ˌaɪdəm-/)[2] is the property of certain operations in mathematics and computer science whereby they can be applied multiple times without changing the result beyond the initial application. …

Photo by Michael Ruiter from Pexels (https://www.pexels.com/photo/gray-fabric-padded-2-seat-sofa-beside-green-leafed-plants-1234462/)

Today we’re going to be practicing ActiveRecord associations by modelling the popular holiday rental marketplace AirBnB.

ActiveRecord allows us to build models and associate them to each other, and to their associated databases, without having to write a lot of code. By telling ActiveRecord that our models are related, using associations, it makes it much easier to carry out operations that affect multiple models. In this blog, I’m going to be using the belongs_to, has_many and has_many :through associations provided in ActiveRecord.

(Before we get started, if you need more information on the basics of ActiveRecord associations, check out the…

Kay Bennett

London-based developer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store