Jimmy Breck-McKye

Developing opinions

TypeScript: accessing members of a union type

If you write TypeScript day to day you probably use unions quite a bit. But have you ever found yourself writing a type and wanting to access the members of a union, be that one passed in as a type parameter, or defined elsewhere?

It’s not something that comes up a lot, but every so often it’s sorely missed. Like when you want two function parameters to follow the same ‘branch’ of a union.

Well, there’s a neat ‘trick’ involving conditional types that makes this easy.

Playing TimeSplitters: Future Perfect on PC

Like the TimeSplitters series? What if I told you it’s possible to play TimeSplitters 2 and Future Perfect on PC with mouse and keyboard support to boot? All you need is the Dolphin Gamecube emulator and a helpful controller plugin.

Modern JavaScript features you may have missed

Despite writing JavaScript almost every working day for the past seven years, I have to admit I don’t actually pay that much attention to ES language announcements. Major features like async/await and Proxies are one thing, but every year there’s a steady stream of small, incremental improvements that go under the radar for me, as there’s always something bigger to learn.

So in this post, I’ve collected some modern JS features that didn’t get much airtime when they first came out. Some of these are just quality of life improvements, but others are genuinely handy and can save whole swathes of code. Here are a few you might have missed:

Safer client-server interop with isomorphic TypeScript

One of the most common points of failures in web applications is client-server interop. A simple change in an upsteam API - renaming a field, changing its type, altering the way non-values are represented - can have catastrophic effects when the user renders the right UI component at exactly the wrong time.

Traditionally, web teams have tried to mitigate these risks with extensive inter-process integration tests. Termed ‘functional’ or ‘end to end’ tests, these automated checks usually spin up entire web browsers, databases and servers just to perform simple validations, provide feedback that is both slow and imprecise, are prone to false positives and have maintenance burdens of their own.

In my recent projects, however, I’ve found that isomorphic TypeScript types and interfaces, used with modern TypeScript features like type guards and predicates, can go a long way to providing much more lightweight validation that’s nearly as robust.

Parcel.js aims to make web development simple again

In the beginning, there was HTML, and the tag was <script type='application/javascript'>. With this little incantation a website author - or ‘webmaster’ - had the power to launch his or her visitors on a fantastic journey to infoscapes hewn from pure imagination. Exhilarating games, virtual shopping malls, columns of animated flames and those little visitor counters you never see any more. All powered by the humble <script> tag.

OK, so the web of the 1990s and early 2000s wasn’t terribly elegant. But it was very easy to develop websites. All you had to do was plop some files on an Apache server and point a bit of XML at the appropriate resource. There was no notion of modules, or bundling, or minification, or code splitting. No Gulp or Grunt or Webpack or Broccoli. Just plain old HTML.

What if I told you there was a way to make webdev simple again?

Why is Front-End Development So Unstable?

We all know the meme: by the time you’ve learned one front-end technology, another three have just been released. Also, that one you just learned? It’s deprecated.

What we don’t often see is an examination why.

Review: The Crash Detectives - Christine Negroni

On a routine night-flight over the Pacific Ocean, one of the world’s most high-tech passenger aircraft broadcast one unremarkable radio message before simply vanishing from the face of the earth. No landing was recorded and no wreckage has ever been found. Ships have scoured the seas and every possible component of the plane has been scrutinised for fresh leads. No-one has any. Was the flight just an unlucky victim of mechanical failure, poor weather and pilot error? Or was something more sinister at work?

You might be forgiven for thinking of the Malaysian Airlines’ MH370, which disappeared in 2014 under these exact circumstances. But this was the Hawaii Clipper - some eighty years earlier. It turns out these kinds of aviation mysteries aren’t nearly as rare as you’d think. Christine Negroni’s The Crash Detectives is a lively and readable account of “the world’s most mysterious air disasters”.