Game Design, Programming and running a one-man games business…

The climate change chart

This is the only chart you need to know. Its the chart that should scare everyone into actually doing something

Fixing UK politics (in a non-partisan way)

As designer of Democracy 4, I’m obviously a full-on political geek. I have my own views on policy, but I also have views on a non-party basis about all the stuff thats wrong about our system. Heres a brief rundown of some of the easy-win stuff that we should have collectively decided to do decades ago, but our politicians are so useless we don’t…

Drug-test Politicians

You can now detect cocaine use from a fingerprint (new-scientist this week!), so why the hell do we not drug test ll our MPs when they cast a vote? You cannot fly an airplane when drunk, or operate on a patient when on cocaine, why do we not hold the people who MAKE our drug laws to the same standards? these people make life changing decisions. We need to know they are sober, and of sound mind. I’d even be happy with mere weekly checks.

Pay Politicians More

The average UK MP earns £76,011. That sounds a lot, but its pathetically low given the responsibility, and the pay offered to senior managers in the private sector. Its not much more than a ‘category manager’ at a john lewis store. I suspect category managers never vote on going to war, or changing hospital budgets, or giving the OK to arms deals. There is an argument that paying them more makes them ‘out of touch’ but MPs meet a lot of people through their work, and are likely more ‘in-touch’ than we think. Plus, if you want to attract talented people with great management experience and prevent them from trying to exploit their political connections to leverage future income…we need to pay them the appropriate amount.

Proportional Representation

There are many options, but frankly any system where the party that gets the most votes does not get the most MPs is not democracy. The results of the last election make it clear that the current system is a farce. Example:

Libdems needed 336,000 votes per seat won, Conservatives needed 38,000, Greens need 886,000 votes. This is not a democracy

House of Lords reform

Bishops sit in the house of lords (the UK’s second chamber) because… reasons. A huge number of members of the house of lords never show up at all, treating it just as a cool thing to stick on their headed notepaper. Their average age is 70 (how very representative…). 92 of the peers are hereditary, most of which can only be inherited by men. This is a ridiculous, embarrassing feudal relic. There are 782 members of the lords. They include convicted criminals like ‘Lord’ Archer.

Image result for queens speech

Electronic voting

UK politicians vote by going out of the room they debate in, then walking back in through one of two doors while someone counts them. This is the year 2020. For fucks sake. There is NO reason for this other than ‘tradition’. Our democracy is not a museum.

Speakers Constituency

One of our MPs is declared ‘the speaker’. they chair the debates. They are an MP, but nobody ever challenges them (normally) in elections. This ‘tradition’, means that everybody in the speakers constituency no longer lives in a democracy. Again, a complete farce. Simply appoint an outside expert as speaker, there is NO reason they should be an MP.

Modernize the system, away from the palace of Westminster.

The building needs fixing anyway, and besides that it is too small. Turn it into the museum it should have been for the last 100 years at least. While we do that, lets scrap a lot of the historical crap that makes our system of government feel like an old-boys club merged with a posh public-school debating society. People should be able to:

  • Call each other by name, without this stupid ‘the right honorable member…’
  • Ask the PM questions directly, without this ‘in addition to my duties in this house’ bullshit.
  • Say the words ‘the house of lords’ when in the commons and vice versa, none of this stupid ‘the other place’ crap.
  • Be ejected from the house if they jeer or shout. its not a rugby club, its a serious place where laws are made and policy challenged. it sounds like a group of childish little boys jeering.
  • Do away with ‘black-rod’, the ‘men-in-tights’, the mace, and the other stupid civil-war re-enactment bullshit that litters our parliamentary chamber.
  • The ‘queens speech’ is written by the prime minister and should be read by them. Its a stupid bit of diversion to try and imply she agrees with whats being said.
Image result for house of lords

Hold political broadcasts to advertising standards

They are exempt. WTF? This is a license to lie.

Prevent the sale of alcohol in parliament.

Not only is there a BAR in the place, it is dramatically subsidized, so we can ensure that our politicians are often drunk, at our expense, with no idea of the price the rest of us pay. Genius.

Publish tax returns for all members of parliament, as long as they serve + 5 years afterwards.

Pretty obvious measure needed to avoid corruption. There is no argument I can see against this. I’d be very happy to publish mine if I was an MP. There is so much history of corruption in politics that this should be a minimum requirement.

Term-limits for MPs.

My current MP has been the local MP for as long as anybody can remember. It has been a safe Tory seat since 1923. My current MP is likely to die in his post, unchanged and not seriously challenged. This is a recipe for corruption, and stagnation. MPs should serve 4 terms maximum.

What have I missed? :D

Rethinking the game dev productivity gap

Its really only in the last six months I’ve realized this, and I’ve been an indie for twenty+ years and coding for 39 years, so yeah…this took a while to sink in.

I am frustrated on a CONSTANT basis by the lack of productivity of almost everybody in the universe. I am especially irritated by the low productivity of most people in game development, and most indie devs. I almost never read about the development schedule of a game, (mostly through post-mortems, interviews or chatting to actual humans), without being shocked at how long it took to do stuff.

For most of the time, I have attributed this to an attitude. I work pretty much every day, and for most of the day, although my schedule these days is deliberately lighter than the early years. I’m prone to going out for lunch or to coffee shops, but then I’m prone to working all day Saturday and Sunday, so YMMV. I also often reply to forum posts, youtube posts, blog posts and emails in the evenings from my laptop. I’m often thinking about code when I’m not writing it.

Because of this, I find talking to people with a less work-centric attitude to be infuriating. It boggles my mind how long it takes most devs to add what seem like easy and simple features to games. I am constantly told that I am woefully inefficient because I don’t use unity, but still seem easily capable of working faster in terms of adding features & content than the very people who berate me for not using such productive tools.

So yup, I often think such people are just lazy. Or do not have the same attitude as me, or do not realize just HOW HARD it is to compete in this industry. In other words I think that their mindset is less focused, and its a personal weakness on their part, because yup…i’m a bit obsessed.

But now..I’m thinking there are two other things that explain the disparity better.

First thing: Lack of distractions. I have 3 cats, and live with my wife and these 3 relatively-low-maintenance pets, but no kids. I have a hobby of playing the guitar, which I make myself do a bit each day, but thats it. I am not having to take time out to walk the dog, pick kids up from school, drop kids at school, answer questions from kids, sort out other stuff for kids, walk the dog again, and so on. My wife is a writer, so has the same introverted ‘happy to be alone with a keyboard’ daytime work schedule as me.

Nobody ever phones me, unless its an elderly relative. I have a call screener device to prevent phone spam, and we live in the middle of nowhere. Nobody knocks on our door trying to sell us anything. There is very little noise. Its the perfect set up for zero distractions. If you possibly can do ANYTHING to reduce the distractions in your day, do it.

The second thing: experience.

This is the big one. I’ve been coding for 39 years. Thats an AGE. When I first started learning computer programming, this person was US president:

Image result for jimmy carter

Yup, exactly.

That means any silly mistake you can make when designing code…I’ve done in thirty times. 95% of my conversations with fellow devs when I’ve hit a bug go like this:

“Could be a memory-bounds issue…?”

Me: “Nope”

“Could it be that you deleted the object?”

Me: “Nope”

“…Maybe its a multi-threaded synch issue?”

me: “Nope”

…and so on.

Now that sounds super arrogant, like I think I’m the bees knees at C++. Actually I am not. I am not that good an all-round programmer *at all*. I am VERY good at learning in excruciating detail about the elements of C++ that I use, and nothing else. Because I work for myself I have no marketable need to be an all-rounder. I don’t need to learn ‘agile’ or ‘scrum’ or ‘.NET’ or RubyOnRails or whatever the hell jobs ask for this week/month/year. Its irrelevant to me, so I can be VERY good at VERY few things. This is hugely efficient.

Plus… again, trying to put my arrogance in context here… language proficiency is language proficiency, whether its English or C++. C++ is way less forgiving than English, but still…how good at English were you when you had been speaking it for just five years…versus thirty years? Hardly an exact comparison I know, but I think its a good mental exercise. I get better at C++ every year, but in a way that is not exactly how you would think:

I do NOT know more ‘clever tricks’ than a newcomer to C++. I do NOT have a better memory of the syntax of C++ than a newcomer. I do NOT type *that* much faster. I do not make use of a wider range of the standard C library than anybody else. I don’t do any of those things. What I *do* better, is that I have just learned from my mistakes.

A lot of mistakes.

I used to take the odd coding test in job interviews back in the day. These tests are good for one reason: to see if the candidate has any clue about syntax. Thats pretty much it. The amount of code required otherwise renders the test pretty much useless.

The trouble with C++ is that it attracts hotshot coders. These are people who think a super-complex algorithm, or the algorithm that uses the most clever combination of features will somehow get them more sex/money. This is predictable and sad, but not useful in terms of real productivity.

The best code, is the combination of three things:

Simplicity, Performance, Readability.

A lot of really, really good code looks fairly boring, because boring is often simple, fast and readable. The worst possible insult you can get from a senior/lead programmer with experience is this:

“That looks a bit over-engineered”

Its truly a damning insult, but you only really realize how insulting it is after about thirty years of writing crappy code. I wish I knew of an easy way to help people fast-forward those thirty years and develop the skills you have at the end of it, without those thirty years but I don’t think I can. The only advice I can offer is this:

  1. Write as much code as you can. Not over-engineered nonsense, but just code a lot. Put the hours in. At least the thousand obviously, but likely way, way more.
  2. Get a job with a really experienced coder and ask for criticism of your code. Only someone who works with you all the time will read enough of your code to really give you structural, high level advice on why your code sucks.
  3. Read code-complete at least twice, if you have not done so already.
  4. Get cats not dogs. Cats don’t need a walk.

Hope that helps someone :D