Developing Opinions
Slaughterhouse Five: Micro-review
Fighting for the US army in World War Two, Kurt Vonnegut was captured by the Germans and sent to a forced labour camp in Dresden. There he witnessed the famous Dresden firebombing, when Allied air raids levelled much of the city and killed twenty-five thousand people, mostly civilians. This experience affected him so profoundly, that he tried several years to write a novel that would find sense in it. Eventually he concluded none could be found and wrote Slaughterhouse Five instead.
May 2, 2017
Another Day in the Death of America: Micro-review
Take a typical Saturday in the USA, find every gun death that day, and tell the story of each. What you will get is not a book about gun control, but about victims: ordinary people struggling against the legacies of poverty, segregation and American history. Compassionate, sceptical, thoughtful and honest, Gary Younge’s work reminds us what great journalism looks like. It could hardly be more timely.
April 23, 2017
Politics and the English Language: Micro-review
Orwell believed diseased language was both a cause and effect of totalitarianism. Before he explored these ideas in 1984, his 1945 essay Politics and the English Language proposed that modern English, full of jargon and complexity, allowed politicians to conceal their intentions behind euphemisms and doubletalk.
April 17, 2017
Review - Wolfenstein: The New Order
I’m piloting an armed robot through a fictional concentration camp. I’ve seen men beaten, starved, murdered and eviscerated. I’ve scrambled out of a cart of emaciated, mutilated bodies – eyes cut out – and wrought revenge on my captors with vivid, pornographic violence. Now I’m trudging through the ashen rain with a heavy metal riff building in my ears, a Jewish Technology Wizard riding on my back whilst I cut through soldiers’ bodies with my oversized minigun and blast them into quivering lumps with an infinitely-replenishing rocket launcher. Is it necessary? For sure it’s fun as a kind of power fantasy, but I’ve an unease aching in my stomach and a feeling of wrongness I don’t want to peer into too hard. The New Order’s tone is all over the place – it’s a game that really doesn’t know what it wants to be. It presents itself Doom-style ‘neo-retro’ FPS, but it plays like a cover-based shooter. It tells me serious, sentimental war story, but then throws me dual-wielded shotguns like a level of Quake. It laments the tragedy of war, but then there’s times when it looks a lot like a Nazi torture simulator. Ultimately, there’s a fun – if limited – game underneath, comprising some impressive set pieces and frenetic firefights – but as a unified whole it’s a bit messy.
February 12, 2017
The JavaScript Single Var Style Is an Antipattern
I hate the single var style in JavaScript. For the sake of clarity, I’m talking about this: var alpha = 1, beta = 2, gamma = 3; It’s awkward to write, annoying to debug, misleading to read, and utterly unnecessary in 2017. Allow me to explain why.
January 28, 2017
Predator (1987): The alien tries each man's masculinity. Each man who dies does so in a manner befitting his swagger.
I originally posted this on Reddit. It’s a well-worn idea that Predator is a film about masculinity. You have seven men each competing for alpha status, showboating their strength, stoicism, roughness and physical power. I’d like to go a step further. I’d like to suggest that the trials of the film are a test of masculinity, and that each man who dies does so in a way that mocks his masculine performance.
December 21, 2016
Play Indie PSOne Games in the Net Yaroze Hall of Fame
Do you remember the Net Yaroze? Back in the days of the original PSOne, Sony released a special black PlayStation. It allowed ordinary people to create homebrew PlayStation games, with the help of a home computer, exclusive Sony development software, chunky programming manual and plenty of patience and care. Net Yaroze games couldn’t be played on ordinary PSOnes directly, but the Official UK PlayStation Magazine released demo discs that let you finally play the best at home. I recently came across such a disc – featuring 14 of the magazines’ favourite picks – and wanted to share it here.
November 6, 2016
Review - Pilgrims, Elinor Cook
Last week, I had the pleasure of visiting The Yard, an intimate and vibrant little theatre a whisker from Stratford’s Olympic Park. I watched Pilgrims, a 2013 play by Elinor Cook. This review will contain spoilers.
October 2, 2016
I'm a Pair-programming Skeptic
I’ve attempted pair-programming several times, including in an organization that (briefly) considered rolling it out as a mandatory process for all engineers (you can guess how well that idea panned out). Personally, I’m not a huge fan. In fact, I’ll go further than that – I’m a downright pair programming skeptic.
August 9, 2016
More's 'Utopia' May Mean 'Nowhere' - But That Needn't Make it a Satire
When students read More’s Utopia, the first thing they learn is that the name is coined from the Greek for ‘no-place’, or ‘no-where’. The second thing they usually learn is that the name Hythloday means ‘peddler of nonsense’. From this spring two responses: either that the tale is fraudulent, and More expects us to ridicule it, or that More wants to publicly disavow the tale to avoid political controversy. I think both interpretations miss something: that though the tale is fictional, its fiction isn’t supposed to matter. Words are hollow in Utopia, and communication rarely occurs as planned. Messages get lost; topics of argument are forgotten. But that’s okay, because the real value of words isn’t in their center, in the semantics of the message, but on their edges in some fashion – the digressions they lead to; their accidental consequences; the marginalia of a book; as philosophical thought-experiments; where they end up rather than where they were intended to lead.
April 24, 2016
Reactive Views in 500 Bytes
If you can use ES6 template strings, you can write reactive, componentized views using less than 500 bytes of helper code. Let me be clear. This approach isn’t intended as a serious replacement for React+Redux/RxJS. It doesn’t re-render views very quickly and the way it handles events is verbose. It’s simply an experimental way to write light, simple applications that need to load fast, without the hassle of transpiling JSX or rendering on the server. I’m sharing it as a curiosity more than anything else.
March 5, 2016
Spying on Third-party JavaScript
Very rarely, it is useful to intercept calls to hidden methods on third party scripts. I had recent need of this when I wanted to spy on calls to DFP’s undocumented googletag.debug_log.log method, so that I could report detailed advert timings. But working with undocumented APIs is always treacherous – those methods can change or disappear at any moment. We need a safe way to spy on third party code.
December 13, 2015
Ghetto Dependency Injection
So, you’re writing a piece of JavaScript that you want to test, but it has dependencies you need to stub or mock out somehow. You know that dependency injection would be really handy, but you’re not sure how to do it. You might have heard about JavaScript IOC containers like bottle or Intravenous. You may have also heard of Jest, which lets your tests inspect and override the behaviour of require. Let’s say, however, that right now, it’s just not appropriate – you’re writing something small, you’re writing something quickly, or you’re writing something before you have the chance to evaluate those technologies. Or maybe, like me… you’re just a lazy programmer. Look, I’m not going to judge – at least you’re testing your code, right? Whatever your reasoning, Ghetto Dependency Injection is here to help.
October 25, 2015
Writing a Non-blocking JavaScript Quicksort
I’ve recently had some fun writing a browser quicksort.
June 9, 2015
Testing Knockout Custom Bindings
In my last post, Testing Knockout.js Web Applications, I explained how to unit test a simple viewmodel using Karma and Jasmine, so you could validate the values and methods on the viewmodel bound to the DOM. This is all very well and good, but what happens when we want to bind our model data to the document in novel ways? If we can’t use the standard Knockout bindings, we need to write our own. Using custom bindings to handle view concerns is a good pattern for keeping viewmodels manageable and making view code reusable. But how can we test them?
March 23, 2015
Testing Knockout.js Web Applications
I’ve been working with Knockout.js for a few months now. I’m impressed, but one thing I’ve found lacking is much community documentation on how to test Knockout apps. I thought I’d write an introductory post on testing Knockout.js applications for those new to the idea – like I myself was, a few moons ago. What’s our goal?These days it seems that unit testing is more or less a prerequisite to any kind of serious JavaScript application development. But let’s remind ourselves what we’re trying to achieve here.
February 28, 2015
The State of JavaScript in 2015
The JavaScript world seems to be entering a crisis of churn rate. Frameworks and technologies are being pushed out and burned through at an unsustainable speed. But I think the community will adapt and adopt new practices in response. Developers will move, I believe, from monolithic frameworks like Angular.js and Ember to a ‘pick n mix’ of small, dedicated libraries to mitigate the risk of churn and to allow solutions to different concerns to compete separately.
December 1, 2014
Some Thoughts on Knockout.js
I’ve been working with Knockout.js on a commercial project for a couple of months now and think I have a decent sense of its capabilities. However, I’ve never worked with any other web application frameworks before and wondered how others felt Knockout compared to them. So far I’ve been really impressed, but I’m not certain how much that is to do with Knockout and how much that is to do with not having to use jQuery to perform templating and update a ‘model’ that’s actually just a bunch of scattered global variables. Obviously, I’d been trying to keep a model – view distinction even with just jQuery, but the data binding alone is extremely onerous when you’re doing it manually.
November 16, 2014
pSX emulator mirror
It looks as though the original host of the excellent pSX PlayStation One emulator - psxemulator.gazaxian.com - has gone down. The site hadn’t been maintained in a while and I fear it may have been forever abandoned. As such, I’ve added the most recent version of the emulator to this site. You can find it here. Besides being easier to configure than ePSXe, pSX comes with a rather handy MIPS R3000a debugger that’s very handy in reversing work. I used it extensively in writing my Long range enemy attack mod for Final Fantasy VII.
October 12, 2014