The enchanted electrical website of Dr. Sinclair
-
Indentation is the enemy: Writing less complex JavaScript
Written by James SinclairI’ve been working a lot with a legacy code-base lately. And this one is particularly troublesome. It has all the hallmarks of a rush job. The code is brittle. There are no tests. Things often seem to break at random. And to my embarrassment, I wrote most of it. So, I’ve been thinking about how I ended up here. How did the code get so intertwined and brittle? And how do I prevent it in future?
-
Why Christians should write Fantasy Stories
Written by James SinclairIs it OK for a Christian to write fantasy stories? The bible is pretty clear that people should not use magic. Why would it be OK to write about magic? And isn’t the whole idea of writing fantasy stories frivolous anyway? Wouldn’t our time be better spent serving the poor and telling people about Jesus, or even reading the bible? I would argue that not only is it OK, but if you are a Christian with the inclination to write fantasy stories, it’s helpful if you do.
-
The Marvellously Mysterious JavaScript Maybe Monad
Written by James SinclairMonads have a bad reputation in the JavaScript community. Douglas Crockford even said that monads are cursed: Once you reach enlightenment and finally understand monads, you immediately lose the ability to explain them to others. Even amongst experienced functional programmers, monads are treated with respect. But, if you can understand Promises then you can understand monads.
-
Motivation, Self-control and Good News
Written by James SinclairHow to you make yourself do things that you don’t feel like doing? When it’s a cold winter morning and you have to get up in the dark to go to work, how do you make yourself leave the warm bed? If you’ve just started a diet, how do you resist the doughnuts your work colleague decided to share? How do you make yourself strap on the running shoes and go jogging? Doing things you don’t feel like doing is hard work—it takes willpower. But where do you get the motivation?
-
One weird trick that will change the way you code forever: JavaScript TDD
Written by James Sinclair‘One weird trick’ is a cheesy title, I know. Originally I was using it as a draft placeholder title for a joke. But the more I thought about it, the more it seemed appropriate because it’s true. Test Driven Development is one weird trick that will change the way you code forever. It will make you a more badass developer.
-
How to fight like a man
Written by James SinclairA friend of mine asked me for some advice before he got married. This was my response.
-
TDD Should be Fun
Written by James SinclairSometimes TDD can seem like a drag. Are you writing mocks that are several times more complicated than the code you will test? Does your test suite take minutes (or hours) to run? Does refactoring your code fill you with dread because of all the tests to rewrite? If any of this sounds familiar then it may be time to try a new strategy.
-
A Gentle Introduction to Javascript Test Driven Development: Part 3
Written by James SinclairThis is part three of a three-part series outlining my personal approach to JavaScript TDD. Testing code that creates HTML and manipulates the DOM can be tricky—especially when testing without a browser. In this article I outline one approach to this, and finish off the sample application we have been building through the series.
-
A Gentle Introduction to Javascript Test Driven Development: Part 2
Written by James SinclairWorking with JavaScript network calls can be tricky when practicing Test Driven Development. This article gives an example of how to use stubs and Promises to make testing network calls easier. This is part two of a three-part series outlining my personal approach to JavaScript TDD.
-
A Gentle Introduction to Javascript Test Driven Development: Part 1
Written by James SinclairGetting started with test driven development (TDD) can be daunting. It sounds tedious, boring and hard. There’s also a confusing array of frameworks and libraries out there. Some work on the server; some work in the browser; some do both… it can be hard to know where to start. This is part one of a three-part series outlining my personal approach to JavaScript TDD.