Categories
agile dev-process MMOG development programming startup advice web 2.0

How to FAIL, from the world of Open Source: Eclipse

The problem

It’s a great piece of openness to put your bug lists in the public domain. It makes it easier for your customers and partners to make decisions that save you time because they can see what’s coming and when (and save you money in reduced support requests). It saves you money in that you get free QA / testing from your users.

The downside is that it exposes to the world the places where you are especially incompetent, lazy, or just plain self-centred.

This is a recurring theme I’ve seen with corporates looking at both Open Source and also Web 2.0:

We say we’re the best, but secretly I believe we’re the worst; if we expose ourselves to the public, people will ridicule our mediocrity, and refuse to do business with us.

Also … I will probably get fired because my colleagues and my boss will finally realise what a clusterfuck I preside over on a daily basis

Eclipse, and a tale of two bugs

I was going to log two high-impact bugs that Eclipse has had for several years. Then I did a search on that area of Eclipse, and realised that the current Eclipse maintainers don’t give a **** about this whole section of the IDE – some of the core bugs we see every day were logged in 2001, and are still open:

https://bugs.eclipse.org/bugs/buglist.cgi?query_format=specific&order=relevance+desc&bug_status=__open__&product=&content=syntax+coloring

What you find when you do some basic research

If you go looking through the bug history for some of the more “obvious” bugs there, you often find little gems of passive-aggressiveness from maintainers. That’s an exceptionally effective way of making sure people stop helping and supporting any Open-Source project…

You’ll also find endless re-logging of the same old bugs from 10 years ago, revolving around the basic problem that Eclipse lets you set everything you could possibly imagine … EXCEPT the colours that it prints text in.

(all IDEs let you set the colours; most dont give you enough control over the other parts; Eclipse fails on the basic challenge, and succeeds on the advanced challenge)

This wouldn’t be so bad, except that its default is very bright with low-contrast – i.e. very hard to read on laptops when outside, and bad to read for long periods of time. As of about 5 years ago, you are finally “allowed” to set the colours yourself – except that the app breaks if you do, because they “didn’t bother” to allow you to change the colours on 20% or so of things.

Final thoughts

The next time someone – especially at a corporate – resists openness and transparency … in any form … ask yourself this:

What have they got to hide?

Often, once you ask yourself that question of the right person at the right time, it very quickly becomes obvious what they’re hiding (if not why). A little more digging, and you can pry open the can of worms, and see what trouble they’ve been up to…

(Incidentally (and unsurprisingly), in the face of the point-blank refusal of Eclipse developers to make basic usability concessions across the board, I didn’t bother logging either of the two bugs I’d found)

Categories
fixing your desktop

Firefox bug: Who deleted my cache?

There’s a major bug in Firefox (allthough I left at “normal” severity, leave it to the maintainers to judge) that’s been around since Version 2.0 (maybe earlier). I’m *pretty* sure that Mozilla (i.e. precursor to Firefox) did not have this bug. It’s been bugging me for years, and I’ve seen lots of people complain about it, but the latest release still hasn’t fixed it, so I went hunting. No bugs found.

Not any more:

Bug 525266: Disk cache is deleted when browser restarts

Categories
fixing your desktop

Eclipse v3.5 / OS X: Breaking the fonts is “non optional”

EDIT: the fix that worked for most (not all) people on the internet … doesn’t work for me. Even with reboot. I have no idea how to fix this now :(.

Look what they’ve done to the latest release of Eclipse: (old version at top – rendering CORRECTLY on high-res monitor; new version below – rendering BLURRY on high-res monitor)
Eclipse aliasing 3.5
(note the side-by-side compare with the old version – in the same screenshot – so presumably Eclipse 3.5 is using a different font-rendering call than Eclipse 3.4).

i.e. it’s now unusable on OS X. Unless you enjoy headaches and probable permanent damage to your eyesight (oh, you like that? OK. Good for you. Leave the rest of us – with decent LCD monitors – alone, please).

Categories
design entity systems games design massively multiplayer programming

Entity Systems are the Future of MMOs Part 5

(Start by reading Entity Systems are the Future of MMOs Part 1)

It’s been a long time since my last post on this topic. Last year, I stopped working for a big MMO publisher, and since then I’ve been having fun doing MMO Consultancy (helping other teams write their games), and iPhone development (learning how to design and write great iPhone apps).

Previously, I posed some questions and said I’d answer them later:

  • how do you define the archetypes for your entities?
  • how do you instantiate multiple new entities from a single archetype?
  • how do you STORE in-memory entities so that they can be re-instantiated later on?

Let’s answer those first.

Categories
iphone programming

How to sort an NSDictionary on iPhone

(because I googled it, and on the first page of hits I couldn’t find any copy/pasteable source for this common problem, here’s an answer with (poor) public domain source code)

Categories
iphone

How to make an iPhone static library – part 2

UPDATE: Apple changed everything (again) without telling developers (again) and broke everything (again).

Current versions of Xcode (the minimum that Apple allows you to use) will *not* work with the architecture-link part of this blog post.

Instead, see this StackOverflow question I asked (and answered) with an updated technique: http://stackoverflow.com/questions/3520977/build-fat-static-library-device-simulator-using-xcode-and-sdk-4

Intro

This is NOT a perfect way of doing static libs on iPhone; however, it does work – I’ve used it in iPhone apps that are on the App Store right now – and I’ve been sitting on this post for over a month, improving it, tweaking it. It’s not perfect, but I think it’s better to put it out onto Google than to keep it quiet any longer.

NB: I’m not a Mac developer; the iPhone is relatively new to me. I apologize in advance for any stupid mistakes I make here where I should have known better!

PS: If you don’t read this blog normally, you might be dismayed at the amount of whinging about Apple’s less-than-perfect code and documentation in this post. Sorry. Let me just say that I am *trying* to be even-handed – and that that requires not only praising Apple, but also calling out their bad acts where relevant. I and many of my friends and ex-colleagues have suffered hours and days of wasted time – ON THIS TOPIC ALONE – because of tiny things that Apple staff “forgot to mention” or “didn’t bother testing”. It’s understandable, but it’s also painful.

Categories
iphone programming

How to make an iPhone static library – part 1

I’ve now deployed iPhone static libraries in two (live) applications, and numerous updates.

This is a process that is seemingly (*) 90% undocumented by Apple, despite being (IMHO) absolutely essential for any professional iPhone developer.

UPDATE: Apple changed everything (again) without telling developers (again) and broke everything (again).

Current versions of Xcode (the minimum that Apple allows you to use) will *not* work with the architecture-link part of this blog post.

Instead, see this StackOverflow question I asked (and answered) with an updated technique: http://stackoverflow.com/questions/3520977/build-fat-static-library-device-simulator-using-xcode-and-sdk-4

[(*) – if there’s docs, then I’ve not found it in over 6 months of googling, searching Xcode doc libraries, and asking everyone I know. I will feel stupid if it’s there and I haven’t found it, but I have honestly tried very hard to find it!]

I have sought help in numerous expert forums and mailing lists – and generally discovered that no-one else is quite sure how to do it either, although I’ve seen some funky ideas and methods that others have come up with.

Through trial and error I’m pretty sure I know how to do it now – but I still have no idea what the “correct” approach is – so I’m writing up my best knowledge here, and I’m going to spread it to as many people as possible to get feedback from the 30,000+ other iPhone developers around the world.

Categories
bitching computer games games design

Will Wright is … lazy?

Let’s get this straight: if we judge him solely by output (games), then he is not a genius – he’s lazy. Everyone knows the 1% inspiration/99% perspiration quote, and – looking at the last shipped title – IMHO it’s inexcusable to ship crap and pretend it’s OK. You can’t just abrogate responsibility once you stick your name on Spore…

(disclaimer: when I say “lazy” I don’t mean universally; I mean that in at least one crucial aspect, he failed to apply simple due diligence to his own named project; arguably, it’s a kind of laziness in itself not to have checked this stuff, or a kind of cowardice not to have insisted it be done “correctly”; but this post is really about the overall impact of the game, and the way that an individual, if they were to stamp their persona on a project – and expect us to read their persona from interacting with the product – comes across. I have no idea what Will Wright is like as an individual; this is a post about Will Wright as the PR entity…)

Categories
games design games industry recruiting

Getting a job in the games industry: its all about skill

Tim Schafer recently posted scans of his rejection letters over the years from various tech and games companies he applied to. There’s one from Atari, one from Hewlett Packard – and, eventually, his acceptance letter from Lucasfilm / Lucasarts.

But far, far more important to this post is the cover-letter that Tim sent to Lucasfilm (it’s a truly special cover letter (go have a look now, before you read on)).

There’s also a rich array of comments at the end of Tim’s post. The HR manager (now head of HR at Pixar) who handled his job application all those years ago even chimes in to say hi. But, again, that’s not what I found interesting; what I liked was the large number of comments from wannabe game developers trying to get into the industry right now.

What’s wrong with this picture?

Reading those comments, here’s a couple of things I noticed:

  • They feel “inspired” and full of “renewed hope” / “confidence” that they have a chance of getting into the industry at all
  • Lots of wishful comments fishing for a confirmation that this technique would “still work today”, while declaring that they’re sure it doesn’t (supposedly demonstrating their realism)
  • The realization that lack of experience is no barrier to becoming an industry legend; coincidentally, most of the people saying this have no experience of their own

…and here’s the conclusions that leapt to my mind:

  • New entrants to the industry are convinced it’s very hard to “break in”; they sound by turns cynical and hopeless. This is merely to get a *job*, not to actually achieve anything. Ouch
  • No-one seems to have told them how easy it can be (how straight-forward it often is)
  • They’re guessing at the reasons this was successful, and are picking the wrong ones (hint: what worked for Tim still works today, if anything *even more* than it did 20 years ago)
  • Their understanding of what it takes to become a major industry figure is back-to-front

Why was Tim successful? How can you re-create that today?

OK, so Tim was: funny, dedicated, and inventive.

But we’ve all heard (I hope) of many occasions when any or all three of those have not only failed to win people jobs but have got them ridiculed (sometimes even had their desperate exploits broadcast at the company or industry level). I’m not thinking simply of the games industry here – although I noticed one the other week where a hopeful Quest Designer tried it on with Blizzard (they spent a thousand dollars on fancy-printed design docs for their proposed Raid Dungeon, drove to Blizzard’s offices, and spent a couple of days sitting on the sidewalk handing copies to staff as they arrived / left the office each day).

Rather, I was thinking of all the stories of people doing everything from sending in their Resume/CV wrapped in shiny metallic paper, to sending gifts (including alcohol) to the hiring managers, to stuff that comes dangerously close to stalking.

Reading the comments on Tim’s post, in at least a couple of cases, I’m not convinced that the posters see the difference between those disasters and what Tim did. I don’t know any of the people involved, but I do know there are positions we’ve recruited for in the past 5 years where a cover letter akin to Tim’s would have gone a very long way (possibly even “all the way”) towards single-handedly getting us to hire someone.

IMHO, it’s all about skill and enthusiasm (although few companies hire on enthusiasm, so we’ll just stick to the “skill” part)

What Tim shows is skill for the *underlying* things that his (potential) employers would love to see him employ in his day job. That requires showing ALL of the following:

  • Personal interest (he plays games. He plays them enough for the next part to be possible)
  • Understanding of a genre (he understands a genre well enough to pastiche it effectively; you can’t do that if all you’ve done is dabble in it (unless you’re particularly skilled at literary/experience analysis – which is great, we want that too! ))
  • Ability to polish (look at the images; notice how he sends up each of LA and Silicon Valley in panels 2a and 2b, and makes out San Rafael to be the land of Nature and Sunshine and happiness)
  • Knowing when to stop (again, look at the images. The “volume” of detail is actually very small; apart from the final image, they are very simple, and quick to execute)

One thing we don’t know, that I’d love to know, is the timing: how long after the phone call did he send this in? I’ve known candidates to take *more than a month* to complete something that was offered (by them!) in a job interview. WTF? If you say you have something, we assume you either have it, or will complete it imminently. i.e. days – a week at the most.

TO GET A JOB IN THE GAMES INDUSTRY, ALL YOU NEED TO DO IS …

Let’s see how simple I can make this…

Make a game.

3 words. Not bad. I think that’s pretty clear.

Sadly, most people misunderstand it *completely*.

Look back at the rest of this blog post; it all lead up to this. When college students ask senior people, and hiring managers, what to do to get their first job, and we say “make a game; make several games”, our reasons for saying that are all encapsulated in what I’ve already said.

Even if you’re in a discipline that has read-made degrees (Programming: Computer Science; Art: Fine Art, etc), what you’re usually showing with your degree is a small amount of education and a large amount of skill / aptitude. University/College rarely teaches the things you’ll need every day to do your job, but it prepares you in a more general way to be/become skilled more quickly.

Imagining a game is easy; if you like games, you should be able to imagine games you’d like to play, or make.

Making a game is easy, if you only ever make a game that fits within your abilities and resources. I’ve made games in under a day. Some of them were even fun! ;). I have a friend who *frequently* writes entire games in a single evening. He’s a programmer, with no art or game-design skills – but some of what he makes looks gorgeous and is great fun; he cheats; so should you. So … never tell me that making a game is “beyond” you; just shrink your ambition to fit.

(incidentally, “I can’t program” is not a valid excuse; pre-teen children regularly learn to program – (IIRC it’s still in the national curriculum in most western countries, although it’s not labelled “computer programming”) – and if they can handle it, what’s wrong with you that you’re too stupid/lazy to do it too? No-one’s asking you to learn highly optimized C++, that would be insane. But … all you need is Basic, PHP, Javascript, or something similar)

Finishing making a game – removing all the “doesn’t actually work” parts – is hard. But everyone who’s been there should understand: it’s *hard* to include all the bits that weren’t fun for you to make. It’s hard to force yourself to check all the buttons still work every time you change something. It’s hard to force yourself to write in-game instructions *and keep them up-to-date* each time you change the game-design, or add/remove a feature.

And that’s a big part of why we judge you on it. Because if you can do that – more than anything else – all the other problems are smaller, more tractable.

Categories
conferences games industry GDC 2009

GDC 2010: I (probably) won’t see you there

Last month, I ran a novel panel session at Austin GDC, which was well-attended and (apparently) well-liked.

I came up with the format myself, very different from normal panels, and spent a couple of months fleshing it out with the panellists, discussing different ways we could improve on it, different approaches, etc. I made a lot of mistakes with it, but I was pleased with how it went for a first attempt.

We filled about 1/2 of the room, I think the capacity was around 200. I’d hoped for more – but … we were scheduled on the second-to-last slot, on the last day of the conference, when lots of people had already gone home.

We were also scheduled at the same time as Nicole Lazzaro, and Damion Schubert. They are both exceptional – and exceptionally popular – speakers.

So … I was pretty happy we got the crowd that we did :).

It all went so well that I thought the organizers of the “main” GDC – the one in San Francisco – might like something similar. So, I contacted them (not exact email, some details snipped):

I just ran a really good session at Austin GDC, and thought that something similar might work really well for GDC 2010. And several people who want something like this at GDC have asked me to at least try :).

It was a novel format that I came up with originally, and then hammered out the details with the panellists over a couple of months until we were happy with it. Now we’ve live-tested it, I could do it even better next time :).

Is it worth me taking this further? I’d have to find a new set of panellists, and work out a new topic appropriate to GDC (as opposed to AustinGDC).

Here’s the salient part of the response I got:

Thank you for your email. If you’ve already done this session I would advise against a repeat at GDC, especially if it’s a panel proposal because panels are very hard to advance to Phase 2 and get accepted.

(NB: the wording is “I would advise”, but the email itself didn’t provide any of the details or info I’d need on how to submit this panel, so I read this as a polite but fairly strong: “no”).

My first reaction was that I’m quite relieved NOT to spend all the time and effort it takes finding another 4 top-class speakers, persuading them to speak, working with them on format and content, and organizing everything in the months leading up to the conference.

(for which – unlike most industries – GDC speakers get nothing in return. Oh, you do get an invite to a party. But it’s just like the 15 other parties that all the non-speakers get to go to. So … not a huge benefit, really)

I’m not going to hassle them to try to change their minds.

But then I thought a bit more, and wondered why it was that the conference organizers aren’t biting my arm off, demanding that we do this again? (assuming the session was as well-received as I thought it was). They’re always deflecting criticisms of “poor” sessions with “we’re dependent on the quality of what gets submitted”. In the past year, I’ve also seen a couple of friends get some of the highest-rated feedback from past GDC’s and yet seemingly the organizers don’t want them back again.

So, I’m left wondering what the strategy is here. There must – surely – be *some* strategy for a money making machine like GDC (this thing is making 6-figure profits each year). I’m just confused as to what it is.

Also, as an aside, since I rarely go to conferences these days unless I’m speaking at them, I probably won’t be at GDC next year. This year, surprisingly many people asked me why I was bothering to go to GDC at all (despite the fact I was a speaker :)). By the tenth time of being asked, I’d realised that my justifications owed as much to nostalgia and socialisation as to a useful use of my time. I was already feeling dubious about turning up next year, even before I heard my proposals had been rejected. So, just to be clear: I’m not skipping it because of this response from the organizers, although if they’d been keen for me to give the talk, it would have forced my hand into going.