Happenings

Film Fight 2012: September

Just two films in September:

First up, Lawless is a movie that follows a family of bootleggers in prohibition-era America. It captures the violent nature of the enterprise with style, and a little wit. The main cast put in great performances, with only Shia LaBeouf letting the side down with a fairly stock take on his character. Tom Hardy, however, delivers another excellent showing as the indestructable eldest brother. The whole thing looks fantastic, but the plot is very predictable, nothing will surprise you here. Probably the film’s biggest downfall is an entirely unnecessary and out-of-touch epilogue, that forces a happy ending in where none was needed. Very watchable. (See my Lawless Twitter review).

Finally, Dredd manages to bring the titular character to life in a way that his previous film can only dream of. Despite the obviously miniscule budget, the film deftly introduces the characters, setting and premise, before letting loose with some extremely gory scenes and full-on action set pieces. We’re left with no doubt as to why Judge Dredd is so uncompromising and harsh: he’s a product of a world where crime is so prevalent that almost none of it gets punished. It’s a fun movie and, while it won’t win any awards, it deserves to be seen. (See my Dredd Twitter review).

The winner is Dredd for showing what a well-written action film is capable of.

Film Fight 2012: August

August’s Film Fight sees another 5 films up for review.

First up, Ted is exactly what every Family Guy fan probably expected: a film whose comedy is bizarre, gross, culturally-aware, nostalgic, and with occasional cut-aways. This is not the movie that will change anyone’s mind on Seth Macfarlane’s brand of humour. If you are a fan, it has some great ideas, some very funny moments, as well as some that don’t really hit as well (Ted’s girlfriend, for example). It’s a solid 100-odd minutes of laughter, but will likely be forgotten in a decade.(See my Ted Twitter review).

Pixar’s latest effort, Brave, seems strangely more like a Dreamwork’s movie, than a Pixar movie. The plot is very straightforward, everything is explained simply, but there is no weight to proceedings (like Up’s early montage) and no character development that feels particularly earned. A necessary but unsurprising sequence of events play out and the lead learns a lesson. That’s it. Simple, but nice enough, I suppose. (See my Brave Twitter review).

The Expendables 2, meanwhile, works because it’s exactly what you expect: a dumb action film full of explosions, fights, shoot-outs, ridiculous dialogue, without taking itself too seriously. The plot itself is nonsense, and is a very thin excuse to have the world’s biggest action stars do their thing once again. It’s not revelatory, nor does it have to be. A simple, fun, action film. (See my The Expendables 2 Twitter review).

Despite a satisfying arc of three movies that comes to a satisfying if slightly ambiguous conclusion, sometimes Hollywood can’t seem to stay away from something that is meaningfully complete. The Bourne Legacy is a result of that mentality. With the original trilogy’s protagonist having dealt with his past, the action here moves to a side-story following another agent. Instead of a story that is a grounded, tragedy-ridden, character-led piece (almost literally about the lead trying to find himself), we get a generic spy/action film. There is nothing particularly remarkable about the new lead, other than wasteful addition of pseudo-medical science to try to artificially raise the stakes in the plot without that being reflected in the action. Indeed, several key action sequences, particularly the rooftop chase, are so similar to scenes in the earlier movies that they only serve to show how unnecessary this movie is. It adds nothing to the franchise and, by moving away from its core, it only takes away. Avoid. (See my The Bourne Legacy Twitter review).

Finally, The Imposter is a documentary about a man, Frederic Bourdin, who posed as a missing Texan child. His family, despite the discrepancies that are shown, are unable to see the differences. The concept itself is interesting enough, and the New Yorker article from a few years ago that tells the same story is fascinating, but it’s let down somewhat by the execution. Each nugget of the story is spread a little too thin: having Bourdin explain each part of his plan, how it couldn’t work and must fall apart, and then how it inevitably does is laborious at best, and tedious at worst. This leads to an extremely uneven pacing, and a narrative that doesn’t do justice to the whole. A wasted opportunity. (See my The Imposter Twitter review).

The winner for August? There’s nothing particularly outstanding, to the point I’m struggling to choose between the options. I guess if I use my standard fall-back metric (“Which film would I enjoy watching again the most?”), it’d be Ted. Not exactly a strong winner, but a winner nonetheless.

Film Fight 2012: July

Yes, it’s a bit late, but I’ve finally written the Film Fight for July, including no fewer than 5 films…

First up, Killer Joe is the story of a murderer for hire that starts to go very wrong when payment becomes an issue. It’s full of top-notch performances, from Emile Hirsch and Juno Temple’s overly interested brother and untainted sister, to Thomas Church Haden’s deadbeat father. It is Matthew McConaughey as the titular character, however, who is a revelation. As soon as he makes his displeasure known, he can convey an intense threat with silence or terse politeness. Even amongst the weight the movie tries to convey, it still finds time to pack in a rich vein of dark humour, which makes the brutal moments all the more effective. Very good. (See my Killer Joe Twitter review).

Despite a trailer that suggested an amount of slapstick and lightness, The Angels’ Share is a surprisingly well-rounded movie about struggling through adverse conditions and becoming a better person. It’s a small film (as opposed to large or complex), that doesn’t try to be anything that it is not. It has a good measure of real-good feeling without every becoming overbearing. Despite some of the lead’s flaws, you still want him (and his band of friends) to succeed in the little caper that makes up the final act. Worth seeing. (See my The Angels’ Share Twitter review).

Seeking A Friend For The End Of The World never quite lives up to its promise. A world that is going to end, where people have become nihilistic and fatalistic, contrasted by a man who remains true to his old-fashioned romantic nature is a great premise for a comedy. Indeed, the first half delivers a number of very funny moments and ideas (like the assassin’s people have hired so they don’t have to wait until the end of the world), without ever looking like it’ll be a classic. Sadly, the second half switches gears to be quite a straight-forward love story. Introducing that element isn’t bad by itself (and you’ll see it coming anyway), but it isn’t enough to keep the film interesting. It’s a sweet film, but not a great one. (See my Seeking A Friend For The End Of The World Twitter review).

The Dark Knight Rises had an incredibly tough act to follow, and was never likely to better its predecessor; and it doesn’t. What it does do, however, is put a fantastic ending on the best series of comic book-based films we have yet to see. As with all of Nolan’s recent films, The Dark Knight Rises manages to be both an epic, action-driven story, with enough interesting character to push things through. Tom Hardy, as Bane, continues a streak of excellent performances with a very different take on the character. He’s an imposing and focussed brawler, rather than the monstrous brute we’ve seen previously. Anne Hathaway also delivers a great take on Catwoman, that is very much in fitting with Nolan’s vision of Gotham. The worst of the film comes from moments that feel rushed, where the 3 hour soft-limit on mainstream movies makes a number of sequences seem extremely compressed. On the flip-side, it also makes for some very tight storytelling. All-in, a very worthwhile film.  (See my The Dark Knight Rises Twitter review).

Finally, King of Devil’s Island is the story of a boy who doesn’t fit in at a young offender’s institute, set in Norway in the early 1900s. It shows the brutal environment in which he and his fellow inmates live, and the harsh punishments they face. It does this competently, with a great deal of careful direction and some beautiful scenerey. However, it does not do anything new. You’ll have seen films that tell this story before. While it’s certainly a good telling of the tale, it lacks some of the impact that similar movies have had simply because it isn’t fresh enough. Well done, but not provocative. (See my King of Devil’s Island Twitter review).

A difficult month to pick a winner, but I think that Killer Joe‘s performances edge out Batman’s big storytelling.

Film Fight 2012: June

Well, for various reasons, I only made it to the cinema once in June so this is not much of a fight…

Prometheus seems to have riled up a lot of people. Many seem to be annoyed it’s not Aliens, whilst others seemed to think that nothing much happened. It’s certainly not Aliens (and that’s not a bad thing), but an awful lot happened. You see, the thing about Prometheus is that it has absolutely no interest in spoon feeding any of the many answers that are either in the film or hinted at extremely strongly. I’m fine with that. Ambiguity, whether a little or a lot (and this film deals with both), can be a great way of giving a fantastical premise a dose of reality; things are rarely cleanly explained in the real world. Everything that needed to be answered was, to some degree. This film deals in questions that are far above the scope of most action-adventure films,  about that nature of existence and the things that we will never know. Beyond the narrative itself, the action set pieces were surprisingly good, giving a sense of scale, desperation and pace when needed, and the performances more than did the job. It was not perfect: that final scene was entirely gratuitous, and I would’ve ended the film about 10 minutes earlier. However, it seemed to me like it was the film that it needed to be: not an Alien film, something different. Something more ponderous, and interesting. A very good film. (See my Prometheus Twitter review).

Well, it’ll be no surprise that Prometheus is the winner this month.

How To Do Support Well

There are many aspects of professional software development that I had to learn the hard way i.e. by smashing off every branch of the mistake tree and landing on my arse. That’s a perfectly fine way of figuring things out.

Surprisingly, though, that’s not how I learned to do development-support well, which is sometimes called level 3 support. It was something I picked up extremely early in my career, and I’ve yet to learn a better method (not through lack of trying).

I’m going to share the method I was taught in just a second, but a quick clarification of terms. What is development-support? A typical BigCo has 3 kinds of support staff:

  • User-support (sometimes called level 1) deals with any user level queries, like forgotten passwords, usernames, simple account queries etc. They run the day-to-day of the system, but are not necessarily very technical. When they get asked a question that they can’t answer, they escalate it to…
  • Application-support (level 2). These people tend to be technical, but not necessarily developers. They’re in charge of making sure all the servers are running, backups are taken, settings are configured correctly, and that the system is running smoothly. They may perform these tasks directly, or they may co-ordinate with more specialised staff, like system administrators or DBAs. If there is something really wrong with the application itself, they’ll escalate to…
  • Development-support (level 3). These are almost universally people who actively write code for the system in question and, thus, are expected to be able to debug through more complicated and unusual issues arising from the application.

So, with that explanation in hand, back to how I was trained to do development-support and why I think it’s the best way of doing it…

In my first job after university, I was involved in web application with a complicated permission model. Every user had a role that gave them a set of default privileges they were allowed to perform. The domain I was working in is not important, but imagine that someone with a Doctor role might be able to perform treatments, write prescriptions, give medical advice to patients etc whilst someone with a Nurse role can perform minor treatments but not write prescriptions. That’s relatively straightforward.

The complication we had was that for any given item in the system (in our example, a Patient) individual people could be stripped of a privilege normally associated with their role. For example, Doctor X might not be able to give a prescription to Patient Y (perhaps they’re related?).

These minor tweaks to the default permission model were rare enough that they were not the expected norm, but common enough that the role/privilege model had to be maintained; there was no opportunity to simplify.

The single biggest cause of support calls making it to the level 3 development-support team were, inevitably, around the privilege model. Doctors didn’t understand why they could write prescriptions for 99% of patients, but one or two would cause them issues, and that those one or two would be different for every doctor.

The model I was taught for addressing these issues was this:

  1. Give the person asking a support question an answer as quickly as reasonably possible. If it’s gotten as far as you, for whatever reason, then don’t pass the buck if you can: answer the question. A general, all-encompassing solution might not be necessary: just figure out how to get the person asking the question a satisfactory answer quickly.
  2. Train the level above you to solve this class of problems. In a structured support model, like the one detailed above, development-support should only be getting asked about things that the other levels cannot complete through lack of understanding, training, or some impediment. It’s the duty of development-support to provide these things and, in doing so, removing the burden from themselves so they can focus on writing more code.
  3. Make solving the problem trivial. If a question is being asked enough, it’s time to take action. Write sufficient tooling to make solving similar problems simple; or change the information that is displayed so that the answer is obvious and the question itself is removed.

Look at this model through the privilege problem I described. Step 1, when asked why Doctor X cannot give a prescription to Patient Y, might involve manually joining some database privilege tables to see that they’ve had that privilege removed for some reason (“Patient Y is the wife of Doctor X”). That should satisfy the immediate need. Step 2 would be completed by explaining the database structure and queries to application-support so that they’d be able to do what you did for any future queries of a similar nature. Finally, step 3 could be solved in several ways. You could provide a more robust tool so that either support can merely type in “Doctor X” and “Patient Y” and be immediately told about the privilege constraints, or you could expose the information directly to the user. When Doctor X tries to write a prescription for Patient Y, they’d be immediately told they cannot do so for the known reason.

This is a pretty straightforward model to follow, yet I’m consistently surprised to see many teams stopping at step 1 where they’re left to absorb all complex queries indefinitely. I’m not saying it’s perfect, all that it would fit every scenario, but I’ve found it works very well for me.