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

Gratuitous Space Shooty Game released!!!

And you probably thought I wasn’t still making games right?

After the long and intense development of Democracy 4, which is a HUGE sprawling game with a LOT of code, and a ton of content, and is now in about 10 languages and has 3 expansion packs… it was nice to be able to make something small, and simple, and not at all commercial or serious. With that in mind I started messing around making a space-invaders style vertical shooter, using the art assets I have from an older game of mine: Gratuitous Space Battles.

GSB is pretty old now, but TBH the spaceship graphics for it still look incredibly good to my eyes. I generally think its very wasteful that the games industry hires so many people to make music, SFX and graphics, and then makes a single game with them, never to be re-used in any way. Frankly a spaceship is a spaceship, whether its used in an RTS or a shooter or a turn based grand strategy game.

I know some people worry that gamers will bombard you with abuse for daring to use the same artwork in another game, because they will feel ‘cheated’. This strikes me as utter nonsense. Sensible re-use of assets just makes sense. As a general principle I hate waste, and I love efficiency. Also, not doing something because a tiny, tiny percentage of vocal gamers may complain about it is definitely a losing strategy in gamedev. There are always people who complain about any choice you will make.

After working on this game for a bit, and initially thinking it was a little throwaway thing I’d probably keep to myself, I started to really enjoy its development. I have never made a vertical shooter, but I loved Star Monkey, which is very old, and I am old enough to remember the first space invaders arcade cabinets as a kid, as well as Galaxian (far superior imho) and then Phoenix and the rest. I also spent a lot of time playing Astrosmash on our intellivision console as a kid.

Gratuitous Space Shooty Game is a bit of a mashup of a lot of those shooters, with some extra ideas that occurred during development. My wife playtested it a lot, and HATED the asteroids, so I added a repulsor beam to keep them away from you. Once implemented, it became a very cool new gameplay mechanic, as it allowed you to ‘balance’ attacking ships above you to get some extra shots in before they leave the screen.

During development I experimented with a bunch of ideas, and after a lot of playtesting, I’m happy with what I chose to do. The fact that you can accidentally shoot ship bonuses gives the player an incentive to keep moving and not risk a volley destroying a bonus. Penalizing you for every ship that escapes, INCLUDING the left-right ‘saucer’ ships also adds to the challenge. Making it so that the best power-ups are only dropped by those ships was also a good move from a design POV. Adding friendly ships you have to avoid is an evil mechanic, but its still in there!

In the end I went with 25 levels, and the levels get slightly longer as you go along. I don’t do any adaptive difficulty stuff, although I considered it. I do offer 3 difficulty levels from the start though. The top one is seriously hard. In-between levels you get to spend your cash, earned from shooting aliens and collecting bonuses (and a cool 10% bonus if nobody escapes) on upgrades for your ship.

Right now the game is only on itch, for $3 with a suggestion of $5 if you want to. It will not be a big financial success :D. Because I was doing it for fun, its currently windows only, and fixed aspect ratio of 1920×1080, or scaled to fit fullscreen. Windowed option literally went in the day before release :D. Its English only for now. I may try a google-translate for the limited text at some future point if I do an update to it.

So there you go, its another game by me! the first non-strategy one for a long time. I’m quite proud of it. Its a fun short laptop-friendly game you can play in lunch hour or multiple coffee breaks. If you like the look of it, get a copy!

Tesla model Y performance after 1 year. My review

So tomorrow marks 1 year to the day that I picked up my Tesla model Y. Previously I was driving a 2015 black model S 85D, which was still excellent, still had decent range, and which I resold for about half what I bought it for 7 years earlier. I was pretty happy doing that. I used webuyanycar which isn’t the best way to sell, but I hate dealing with people and wanted a zero-stress quick sale. FWIW I bought the model Y cash, not lease, and I had to wait a YEAR to get it. Damn you crazy foreign people and your driving on the wrong side of the road!

Specs wise, I basically picked the ‘go ahead and take my money’ version, because I chose red, performance, and Full-Self Driving. FSD gets you nothing but traffic light recognition in the UK for now, but I expect to keep the car 5 years and wanted to lock in FSD for £10k as I expect it to offer more soon.

Here are my general impressions after a year of driving. No massive road trips beyond some 5-600 mile round trips to my solar farm, and only driven in the UK. I live in a rural location in England, lots of narrow roads, dirt tracks etc.

The Good Stuff

It feels MUCH better put together than my model S. The S had panel gaps, because it was an early Tesla, and it was to be honest a little rattly. The new one feels chunkier, sturdier, and feels pretty solid and indestructible. This was a Shanghai built one FWIW. The finish is excellent, the panel gaps non existent. It feels very much like one they made after they have already made a million+ identical ones. Very sturdy. Its also much quieter inside. It has stiff, sporty suspension. Both suspension and noise are apparently even better with newer ones.

Its FAST. Like insanely fast. Its really tricky driving a car like this in 20mph zones. Its like riding a chariot. Its overkill, but its fun. I’d probably be more shocked at the speed if I hadn’t already owned the model S.

The software/UI/infotainment is fantastic. None of the bugs and quirks and failures I experienced in my model S before I upgraded the screen. It feels really slick and easy to use.

The charging is insane amazeballs fast. I actively do not want a car that charges faster than this. This is the ideal rate for me to grab a coffee and a pastry before getting back in the car. People who obsess about charge speeds must have excellent bladders and incredibly tight schedules. Seriously, this is definitely fast enough. Its a fixed problem now!

The sound system is superb. Really quite shockingly good, especially for bass. I noticed this immediately on the very first day. I’ve never heard better in-car sound.

The Bad Stuff

No ultrasonic sensors. This is dumb as hell. It uses ‘tesla vision’ parking assist, which is currently rubbish. It may well get better over time, but right now its inferior to my old model S. Working parking sensors are essential for a big car in the tight parking spaces and lanes in the UK. OTOH reversing is trivial, thanks to 3 rear facing camera views on a huge screen.

Its too fast. Its really major overkill. I should have got the much cheaper long range one. Its so fast that even just lightly tapping the accelerator, I often think cars around me at traffic lights have stalled or not noticed the lights change. Its mad. As someone who is not into ‘track days’, I definitely went too far on this choice. If I had to buy a new one, I’d pick long range.

The Rest

A lot of the other thoughts I have on the car are just personal preference stuff. I nearly got a model 3, but wanted the latest model, so went with the Y. (The new model 3 has come out during my first year of ownership). I do like sitting higher up, but the car is an SUV crossover so its still a bit big for me tbh. The luggage space is absolutely huge, and not something I ever really will need. YMMV, esp if you have kids or dogs or take sports equipment places.

Style wise, I adore it. I love the minimalist interior, although some people hate it. I am totally onboard with the high tech, simple design. Other modern cars now feel hilariously fussy and ridiculous to me inside. One not-obvious benefit is the Y interior is trivial to clean. Cars with 627 buttons on the dashboard must be a nightmare.

In general, I give the car 9/10. I would make it a 10 if the park assist stuff worked better. I would also prefer the auto-wipers to be more reliable than they are, but this is a trivial niggle. I cant think of anything else the car needs. TBH I cannot imagine needing another car, unless it has some amazeballs undreamt of feature. Overall I’m massively happy with it.

Would I recommend it to people? Absolutely if you think the price/specs/size is what you want. As a family sized sporty EV it is unbeatable. The tech is amazing, build quality excellent. Its probably overkill unless you love fast cars and have the cash to spare, and a lot of people would probably see their money better spent on a Nissan leaf or MG4. For people with kids/pets who road trip and need luggage space, its perfect, although for 95% of people the performance option is going to be totally unnecessary, and the model 3 is still cheaper, and almost as good, sacrificing just space.

If you are thinking of getting one, pester me on twitter for a referral code that gets you some freebies! @cliffski.

Solar farm update: earthworks!

Its been a while since there has been any progress update on the farm. I could write at length about my frustration on this topic, but to sum up what I think about the general lack of urgency in the world to get stuff like this actually BUILT, I’ll just use one graph:


We are actually back working on physical stuff, rather than just people arguing over email, which is a change of pace. I am still waiting for the REGO application, which everyone in the industry I talk to says ‘is tedious and bureaucratic and torturously slow’. Amazingly, nobody has ever fixed this, and our government actively despises the environment, so it will likely not be fixed until after a general election (ha…not even then I bet). So no, I do not have ANY progress after MONTHS in trying to get a bureaucrat to say ‘yes, those are definitely solar panels’. Amazing.

The last few MONTHS have been basically a lot of back and forth arguing about earthing design. The site itself needs to be earthed, in case of lightning strikes (almost inevitable given 25+ years of 60 tons of solar panels on a hilltop), and the substation building also needs earthing. There are 2 substations, one owned by us, and one by the DNO (distribution network operator). They have totally separate earthing designs, and electrical experts fret a lot about if they could interfere. They also get very concerned about metal perimeter fencing, CCTV camera towers, and anything else metal in the vicinity.

After a LOT of email back and forth, which frankly drove me crazy, we seem to have finally agreed on everything. That means that we can build the base for the substations, which is the only bit of concrete involved on the farm (except maybe a tiny, tiny amount for CCTV tower bases). Because the substation base has to happen before we install switchgear, the substation itself, or move the overhead line which eventually allows the last few panels/frames…. its been holding up the entire project.

Here is a thrilling picture of a digger digging some substation foundations:

Here is an even more exciting picture of a trench being dug that will be needed for cabling to the substation.

There are also trenches needed for CCTV communication and power, and of course the trenches that link up the final cable runs from each of the inverters to the main switchgear stuff. Obviously its cheaper to get all your earthworks done in one go, and also we have the horrible English weather to battle against. Its been bad.

I have tried exceedingly hard to make this whole project run faster by doing things in parallel. I was hoping to get the PPA (power purchase agreement) sorted at the same time as the earthing, at the same time as the legal stuff, at the same time as the REGO stuff. It seems impossible to do this, unless I spent my whole life trying to hard to stay calm on the phone while literally begging people to get things done. Its infuriating to the extreme, especially given the hugely bureaucratic nature of all the involved businesses. Nobody at the DNO, or Ofgem, or any law company gives a damn if this project gets done on time, or at all. The potential for improving the whole process is epic, but it would require a change in culture.

I have high hopes that we may actually get the earthing done, the switchgear done, and the substation done in the next month. It looks like we wont be connected to the grid until next year. Don’t worry. Its not like we have a climate emergency, or sky high energy bills.

Programming in just ONE language should be lauded.

I recently read about the news that garbage collection support, which was added to C++, is now actually being removed from it. Apparently most people didn’t use it, or even knew it was officially added, so it is no great loss. It always shocks me to read articles about C++ with a version number, because as far as I am concerned, C++ has no version number and never will, in the same way that a language such as English has no ‘version number’. I’m 54 and its pretty rare that I add a new word to my English vocabulary, and its even rarer for me to learn something new about C++ that I start to use in my code.

Back in the early days of modern computing. I worked in IT. My CV was basically: CNA, MCSE. That was it. That was all you needed to earn £54k a year 30 years ago in IT. There were basically 2 big computer systems, run by Microsoft and Novell, and your IT dude ideally knew them both. That was a long time ago now, and the amount of buzzwords and brand names the average IT admin has to put on their linkedin profile is probably quite ridiculous. However, I think its worse in the land of software engineering.

Again, go back a while and you were probably pretty employable if you could just mention C and C++. Then Java became a big deal, then a bunch of other stuff appeared. I have no idea whats cool now, but it feels like Python, Rust are much in demand. Then you have to add all of the recent methodologies. Do you know Agile and Scrum? How familiar are you with AWS? Whats your AI/ML skills like? PyTorch? Do you know the buzzword technologies that will get you hired this year? You better get a job quick, because the buzzword technologies will change every 2 years. Did I say 2? I meant ever year. No sorry, month.

I recently found myself thinking about poetry and code. My wife writes poetry, so I am exposed to this stuff. As a writer, she spends a lot of time… a LOT of time deciding what words to use in a sentence. Its a big deal. Sentence-by-sentence writing is an absolute skill that takes most people there entire life to perfect. Its worth noting that few poems are praised because they use the latest hip words. Good writing is not a matter of having a large vocabulary. Needlessly obscure word-choice is rightly seen as pretentious and alienating.

We really need to take some of that perspective and apply it to code

Take this sentence: “It is a truth universally acknowledged, that a single man, in possession of a good fortune must be in want of a wife.”

Thats considered literary genius, and it is. But its not using arcane language. Every word is commonplace. And idiot could have put that sentence together! but it took Jane Austen, and considerable experience, and huge skill to do it. We do not mock Jane Austen because she could only write in English. We do not mock her because she only wrote from a woman’s point of view. We do not mock her because all her novels were contemporary, in a similar setting, set in a single country, with a linear narrative. We accept all of those limitations and accept that she brings incredible skill to use a limited set of tools to create genius.

Imagine a modern programmer trying to get their first novel published. “English, yup I could write it in English, French, Italian, Chinese or South Korean if you like? I can do all the genres, yup, no problem. I can do first or third person if you like, and I’m familiar with fractured narrative or linear. If you want it funny I can do that, or harrowing, or in short story form too if thats what you are looking for.”


For some reason, people think that ‘proficiency’ in a programming language is something as superficial as being able to say ‘hello’ or order a beer in another language. This is insane. I am able to say ‘Hello’ ‘Thankyou’ and ‘Sorry’ In Korean, but you wont see me apply for a job writing Korean-language fiction.

If you have under ten years experience in using a programming language, let me be blunt and tell you that you don’t REALLY know that language. 20 years is better. 30+ years is ideal. Do you really think you speak French like a native after speaking if for a few hours a day for a few years? Of course not. Thats laughable. And here is the thing: A mistake in a language can cause confusion and maybe embarrassment, but unless you are a lawyer writing contracts, its not CRITICAL. Miss-using C++ can cause rockets to crash, reactors to overload, and god knows what else.

Why do we accept a superficial understanding of a language that is safety critical, but expect mastery of a language by anyone paid to use English?

I know C++. Thats it. A little bit of php, but a trivial amount. I use container classes and std::string from STL but thats it. A very few macros. My C++ vocabulary, even after 28 years using it, is tiny. The amount of std library stuff I know is very small. And yet… I can type C++ with as much confidence and speed as I type this blog post. In fact I can write C++ faster, with fewer mistakes than I can English. In many ways, I am MORE fluent in C++ than English. I code almost every day, and love it. I feel absolutely that I know what I’m doing, after 28 years, and a subset of C++.

The world is full of people claiming to have that fluency with 12 languages, and they are often literally half my age (I’m 54). This is utter bollocks. None of those people should be allowed ANYWHERE near mission critical code, or any code even tangentially involved with safety or security. I am sure that they ARE doing those jobs, every single day, because they all confidently think they are experts, and the people hiring them do not know any better. It a recipe for disaster, and its why year-after-year, software gets WORSE. Windows 11 runs dramatically worse than Windows 3.11 did, and it does it on hardware ludicrously faster. Skype is running at about 0.1% of its potential efficiency, has scrollbars that do not function as well as windows 3.11 did, and uses easily 100 times the RAM it needs.

Your computer is an absolute trainwreck of clusterfucks crashing into a dumpster-fire of wasted resources. All the people involved in arranging the trainwreck think they are multi-skilled geniuses, but hardly any of them have any real understanding of the code they write.

It doesn’t have to be that way.

We don’t appreciate Picasso based on how many colors he used, or how many styles he knew. We don’t berate any musician for only knowing one style. In Japan, people who make the SAME SUSHI DISH their entire lives, without variation, are considered legends, and experts. Its the norm in South Korea for restaurants to only serve one dish (but do it WELL).

I beg of you: If you are involved in recruiting software engineers, for the love of god only employ people who have real, genuine experience, measured in years but preferable decades, for stuff where you expect them to be able to code from day 1. No, they will not ‘pick it up quickly on the job’. Hiring interns or juniors is different, obviously.

I know I’m an old man yelling at a cloud, but sometimes old people know a lot about the cloud. I’ve been coding since I was 11, and its taken me this long to realize that programming languages should be treated like any other language. It might not be a popular view, but I want to put it out there. Experience really matters.