paulgray.net

The Gray Side of Software

I'm a software engineer, and sometimes I write some stuff.

How to write a HOC (in 3 easy steps).
January 02, 2018
How to write a HOC (in 3 easy steps). A lot of times when writing software we end up solving similar problems in similar ways. Sometimes we even copy-paste a chunk of code and change just a little bit of it. If you’ve done this before, don’t feel bad; every developer has done this at some point in their career. If...
Testing for Race Conditions with Redux
November 29, 2017
One type of error that causes bugs is race conditions. They are often hard to detect and reproduce since they only happen in special circumstances. If you’re using redux to store your state, it’s easy to write unit tests that account for these special circumstances. Let’s look at an example. The search results screen Suppose we have a long list of items which...
Why you need keys for collections in React.
July 25, 2017
Keys are important when rendering collections of items in React. They are used under the hood by React to determine what needs to be rendered or re-rendered. React does not render duplicate keys. Let’s consider this array of numbers: const nums = [1, 2, 3, 5, 2]; (Notice the duplicate value, ‘2’) Now...
Types as a convenience, Assumptions.
December 16, 2016
Minimize your assumptions with types. As developers, we make assumptions every day when we write code. I assume that a method in that library that I’m using didn’t change when I bumped the dependency’s patch version. I assume that the data I get back from /api/users is an object, not an array. I assumed that my wife wanted an honest opinion when she asked...
Types as a convenience, Inference.
December 16, 2016
Type-safe doesn’t mean verbose. A common criticism of typed languages is that they are unnecessarily verbose. While that idea may have some merit with languages like Java, features in newer typed languages have come a long way. The Typescript compiler uses a method known as type inference to make type-safe code less cluttered. Type inference occurs when the compiler can determine a...
Types as a convenience, Intro.
November 04, 2016
Bringing types to your UI. As a developer with experience in both type safe and weakly typed languages, I much prefer the former, simply because I enjoy it more. In a series of following blog posts, I’ll attempt to make an argument for types, and make some recommendations of where I think they bring the most benefit. If you’re already sold on...
What’s the point of CASA?
June 24, 2015
Currently, there’s no standard way of sharing and consuming learning content. Most LMS’s have a way to add a generic “Content Item” link to a course. If it’s more than just static content, there’s probably been some expensive custom integration developed in order for integration to occur. If you’re lucky enough to have a tool that supports LTI, your organization...