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.
I’ve recently moved this site and my personal email domain handling off a paid webhost. Now, everything is handled by Github Pages, Google Domains and Gmail, and the only thing I pay for is the DNS registration. Here’s a brief guide on how you can set this up yourself.
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:
If you are a non-CS grad seeking a career in software engineering, I recommend you try and self-teach as much as possible. Bootcamps have their place and books provide a great head start, but only by learning independently can you really get to grips with what the job entails.
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.
In the beginning, there was HTML, and the tag was
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?
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.
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”.
Soft light glows behind the curtains, hugging the wall. The air is cool, thin and still. Nothing stirs. Head tilted downwards, one sock on and one sock off, I am about to be late for work. But I would rather think about an argument I heard on the radio.
What exactly is procrastination? I like to think of it as a conflict between the superego and the id. I am supposed to do something and have turned my spirit towards it. But my body and emotions are quietly rebelling. What if they had good reason to?