I love this thread on Slashdot which pretty much sums up my thoughts on games and gaming in general. The thread is inspired by this article which takes a view on the current state of the nation in gaming. We all know what a huge business gaming has become in all aspects: in browser, on mobile, on console, on computer, on handheld. The argument has always been that the more money comes into the business the more that gameplay and game longevity suffers. This argument has been around as long as video games have.
My take is that big games companies are lazy, risk averse and profit-driven and that independents are so confused by the panoply of platforms they can target that they become paralysed by anxiety. Additionally the third-party tools that aim to ease the confusion are the only true winners at the moment. Either you need to be a focussed independent or a major label looking to try something new.
Now, this doesn’t always work. Remember Mirror’s Edge? And check out The Unfinished Swan. Great looking games with great feel don’t always succeed at the box office. Innovativation hardly ever assures success, gameplay is golden, and gold as we know is impossible to synthesise. To make a great game today you must combine graphics, environment, interaction – find a balance – sprinkle on that fairy dust.
If you believe some of what you read then the Microsoft hardware and software launches are all about blurring lines. Lines between leisure and business, lines between gaming and working, lines between using a computer and having fun with a gadget. We are being sold a tablet that is touted to be as useful as a laptop, we are being sold a development platform that is somewhat consistent across consumer and business desktops, laptops, tablets and also mobile technology. As technologists we have no idea if any of this will work yet as developers we are enthralled but slightly scared at the consequences of these fundamental changes, as realists we doubt that Microsoft can pull it all off but as historians we we can be sure that things have now changed forever in the consumer electronics marketplace. Gone are the days that we would agonise over the specs and wonder about the longevity of our hardware devices be they desktop, laptop or mobile. We no longer care much for battery life, for upgradeability, for the number of ports it has got, for the extended warranty. We, as computers users, as smartphone users, are now software consumers. As consumers we demand fashionable gadgets that can display our fashionable software fashionably. And once our hardware has died or is too slow we will buy the next one and either transfer all our software or, possibly preferrably, just start from scratch accumulating more software on our new gadget.
Perhaps you’ll give your old gadget to the kids and they will be happy enough with while it can run the fashionable software they want it to run and after that, pass it on. The software creators in this world are vastly outnumbered by the consumers – so if you really want to reach out in this gadget obsessed age – try a little creativity.
It appears we have come to a juncture in information technology where the sheer weight of data is forcing us to draft everybody into the ranks. Over the years there have been multiple plays to gamify programming – make it cool – make it understandable – rather have people just stare dumbly at that results and prod occasional buttons. Our limbic system flinching in response to sounds and colourful 3D shapes was previously considered satisfactorily. Now we are encouraged to buy virtual stuff inside other stuff to make our experience more valuable. And it works – because unlike pharmaceuticals – these things aren’t licensed and our kids are hooked into them from an early age.
And it’s no longer enough to just consume these goodies – we’re also taught to create. Creation is cool. Photos, videos, blogs, apps. It’s a self perpetuating cycle of creation – no destruction, just additive, endless piling upon piling of bits into bytes into terabytes into hard disks in drawers and burned onto disks and stored away never to be looked at again. The world may soon fill up soon like the Stross/Doctorow dystopia planned and we’ll be forced into living in the Clouds ourselves or turn the solar system into one big computer. Our bodies slumped in the corner of our living rooms while the substrates fill up with our souls emancipated by the combined efforts of humanity – from east to west – working together to abstract our lives away from a flawed meatspace.
So there are these guys like Bret and Light table guy and Anonymous Game Framework Guy who probably all live on the West Coast in the sunshine and think purely in terms of web servers, big data, shiny tablets, closed feedback loops and turning everyone into a developer. And that is all well and good and also sometimes I think like that and the world is all shiny and exciting – but there is somehow a missing element here. Our thoughts turn to the lack of boredom thanks to smartphones. The gap between waking and sleeping where we’re not sharing our lives with each other or silently just consuming others thoughts or the thoughts of machines. How many of those twitter people you’re reading are actual people typing stuff and thinking stuff? Are we even paying attention enough to pass our own Turing Test?
A lot of effort, direction and money is being spent/burned/created/transferred in order to capture and inspire developers. To draft a few inferior souls into the wake of conglomerates who have spotted our Achille’s heel and are making us all believers of a doctrine whose only basis is that inaction and not thinking of anything better to do is a good reason to glance down and lose ourselves again in our hand held worlds. At the same time as these real businesses – ones that provide a service and get a payment for that service – are making a lot of money out of this shuffling around we are held fascinated in the glow of the Gorilla[R] glass. We are marking time. This developer for all, creator for all – as I read it this week the ‘democratizing’ of the development landscape – is no such thing. And despite these tools being wonderful and in their own way addictive (so that one can become addicted to simply learning more development tools) occasionally it’s just nice to sit around and do something worthwhile and with merit rather than worrying about what technology it needs to use in order to attract the most attention.
Sometimes your first thought is your best one. Well this was definitely the case last week as I continued to struggle with getting the Syntax Highlighter working in an elegant fashion with the main GUI thread. In the end – threading was the solution. I perform some quick and dirty highlighting in the main thread which immediately updates the screen and then I also kick off a background job to highlight the rest of the file which is off screen. This works well and works seamlessly allowing on screen edits to pop up immediately and also meaning that paging up and down through the file gives a consistent look to the highlighting with no additonal calculation required. This backgrounding mechanism for syntax highlighting will also lend well to API lookups when we get to that.
I’m overdue for some new videos and of course as soon as I start thinking about putting together a demo I find all sorts of interesting issues and problems. So we’ll see what happens this week. We’re edging through summer and I’m no nearer to either getting the Rosegarden for Windows build finalised or adding the Kinect support back in to Friendlier – I’ve not even had time to play with the last Kinect for Windows SDK released in June. Time flies and I want both of those things sorted before September and before I have to start thinking about Windows 8 and tablet support.
I’ve been building and selling code for a few years now and this is usually as a part time thing alongside something else I’m already doing (i.e. a proper job or having a family). A few years ago I launched a company called Fervent Software which sold Studio to Go! I then launched a company called QuantockSoft which sold a product called TemperDB and I’ve just started a new company called Xyglo which has just started selling some software called Friendlier.
When you’re bringing a product to market (*) and you can only devote part of your time to it due to other commitments, there are many factors you have to weigh up. Some of these relate to the limited time you have, some of them are applicable to all ISVs. First and foremost you need to determine if there is a market for your product – that’s pretty important! Secondly you must decide if what you’re trying to build is achievable with the amount of spare time you have – also important. Thirdly you need to know how to spend your time – when to code and when to spend time on designing and when you have market or promote your piece of software. And finally and most importantly you need to know when to get it out of the door and actually start selling the thing.
Of course all of these steps are potentially perilous. If you’ve come up with something that is innovative then how do you know there is a market for it? As a small independent you don’t have the resources to have a focus group – and anyway have you even defined a core market? So maybe you’re taking a risk on the product or perhaps you’re launching a product to compete with an established player. In that case how do you ensure that you differentiate with that player and still get your voice heard? Secondly are you being realistic about how long it will take to build your software? If you have plenty of spare time and energy then this might be less of a concern, but if you have a family or other commitments be sure to work these in to your planning. Thirdly – and this is actually the best part – remember that you are the boss now. So when it comes to scheduling when you do stuff you can chop and change. If something is becoming a drag in your coding then give it up for a while and do some website stuff, or draw a logo, or write a press release or do some market research. Remember that all the effort you’re putting in is pushing the product in the right direction so don’t dismiss non-coding hours as non-productive ones. Even talking about your ideas with people counts as working – just don’t let them necessarily talk you out of it!
So let’s say you’ve got to that point when you want to release your software on the world but you’re still wracked with indecision. Is it ready? Is it good enough? Is it the right price? Will anybody want it? The only way you’ll find out is by pressing the button and getting it out of the door. If you get that far then there is no better feeling. So good luck.
(* I started writing this with the intention of saying how much easier it had got to build and release software regarding the tools, the payment providers, the website hosters etc. I’ve not got that far this time but I’ll get on to that at a later date. Also we need to talk about App Store vs truly Independent.)
The next time you’re asked to do a coding test in a job interview, ask them why? If your potential new bosses aren’t able to determine from your CV and from talking to you what level of experience and understanding you have then you probably don’t want to be working for them in the first place. Take it from me, they’re just trying to fill headcount – this is fine if you just need a job (because let’s face it, sometimes you just need a job right?), but if you want a career then forget about them or at least as them “Why?”
I’ve had lots of interviews and I’ve given lots of interviews. I’ve never given anyone a coding test and I never will give anyone a coding test. The attribute that every coder must have is honesty – honesty to themselves firstly and realising that you are fallible as well as honesty to others and realising that what you build affects other coders, users and everyone who will come into contact with your solution. Having a nice portfolio is useful, having experience is perfect, but honesty about yourself and your abilities is more important to me.
Spending an hour telling someone who is really not that interested in hearing it what polymorphism is, or the difference between an abstract class and an interface is a waste of everyone’s time. Do they not know themselves? What are they trying to prove by having you tell them? How does this help you fulfill the dead-end job they’ve got lined up for you?
Don’t spend the rest of your life working for idiots. One of these days I’ll be hiring.
Well, in the end it was a bit of a disappointment I suppose. Microsoft have announced a tablet computer in two flavours – ARM and Intel, in two form factors, with an integrated keyboard and stylus support. As a lot of commentators are saying it does raise a few more questions than it answers in some ways – not least how is this going to play with the hardware manufacturers that are Microsoft’s usual bedfellows?
As a point-in-time view though you have to say that Microsoft simply didn’t have any alternative. They have a semi-successful hardware business already, they have been shown the way by Apple with the iPad and the enormous sales potential. They are releasing a new operating system version with intrinsic pad support which also is backwards compatible with the existing desktop software. Microsoft and Apple agree with the rest of the world that there is a huge market in tablet computing and there is plenty of space for everyone.
The remaining questions are will it work and where will we be in a year’s time? Some of those versions mooted of the Surface may not. But is this seemingly scattergun approach to seeing what works going to be successful? I’m looking forward to seeing it more out of interest than anything else but with this profusion of interfaces – keyboard, stylus, touch, will that work? How will that work? We’ll only know when we get one in our hands.
However in the meantime it’s nice that wiki is already disambiguating the old Surface from the new one.