Categories
MMOG development

Dropbox tech scaling – some great, some not-so-great

“I was in charge of scaling Dropbox … from roughly 4,000 to 40,000,000 users. … Here are some suggestions on scaling”

The first section is a WTF – the guy advocates deliberately over-taxing your servers, without a good explanation. I’ve got some guesses at why they did it – but in the general case I’d say: never do this. Only do it when it’s obvious, because you have a specific reason to do so (and you really know what you’re doing).

The rest is a lot clearer, good advice there.

Also, IMHO worth reading for this part alone:

“Let’s say you’re trying to debug something in your webserver, and you want to know if maybe there’s been a spike of activity recently and all you have are the logs. Having graphing for that webserver would be great,

[ADAM: but … often you don’t have the right set of graphs set up, and it takes a while to do that – no use if the server is in trouble *right now*]

Apr 8 2012 14:33:59 POST …
Apr 8 2012 14:34:00 GET …
Apr 8 2012 14:34:00 GET …
Apr 8 2012 14:34:01 POST …

You could use your shell like this:

cut -d’ ’ -f1-4 log.txt | xargs -L1 -I_ date +%s -d_ | uniq -c | (echo “plot ‘-’ using 2:1 with lines”; cat) | gnuplot

Boom! Very quickly you have a nice graph of what’s going on, and you can tailor it easily (select only one URL, certain time frames, change to a histogram, etc.).”

Categories
iphone photos

Exquisite drawing of London – exhibition in Ealing this Summer

Matteo Pericoli spent 3 years drawing central London from the Thames. His artwork is a 30-foot-long tapestry (that you can buy as a fold-out book).

There’s an exhibition just opened today with the original artwork at Ealing Gallery. What’s amazing is when you see it up close just how tiny some of the hand-drawn details are.

e.g. look at the horizontal lines in the middle of this photo:

(that’s my finger at the bottom – the artwork is under a thick layer of glass, so it’s safe to touch!)

Also, if you go to the gallery, there’s an interactive projection of the artwork onto the walls. It’s running an iPad app we made last year (to complement the paper edition). The app lets you tap each of the buildings on the skyline and read about history, architecture, etc.

Categories
computer games

Game of Thrones modelled as a 3D world…

in Minecraft (“WesterosCraft”):

Categories
programming server admin

Unity: Git source control – a basic .gitignore

The most popular hit for “unity gitignore” is a post on the official Unity forums that was written by someone who doesn’t seem to fully understand how git works. Which was a little disappointing.

Before you commit anything to git, you MUST go into Unity’s menus and enable the “metadata” option (in settings, moves around a bit between versions). Without that, Unity’s internal data-bugs will corrupt your project if you ever merge (happens to us approx 1 time in 3 if we forget at start of project)

After a bit of trial and error, here’s a basic .gitignore for Unity that seems to work, and cut down the commit sizes by a factor of 4 immediately:

UPDATE: updated with a tried-and-tested gitignore that covers more things. Do please note the big WARNING though, or you’ll only have yourself to blame…

##################
# Unity ignores:
#
# !!! WARNING !!!
#
# … you MUST convert Unity to using Metafiles *before* you start using this .gitignore file,
# or you WILL lose data!
#
#####
#
# !!! WARNING !!!
#
# … don’t forget to [git add “*”] (quotes are required!) when adding new files, or git will silently ignore them
#

# OS X only (not needed on other platforms)
.DS_Store
*.swp
*.Trashes

# All platforms
Library
Temp
*.csproj
*.pidb
*.unityproj
*.sln
*.userprefs

Categories
computer games games industry games publishing iphone

AAA iPhone games more profitable than AAA Xbox/PlayStation games

Tim Sweeney, Epic Games (owners of Unreal Engine, and deelopers of AAA games on 360/PS3/iOS):

“The most profitable game we’ve ever made, in terms of man years invested versus revenue, is actually Infinity Blade. It’s more profitable than Gears of War.”

Touch Arcade has some terrible analysis (don’t listen to a word of it), but I quite liked their summary:

“Just let that sink in for a minute. Infinity Blade, an iOS exclusive title that has been priced anywhere between $5.99 and 99¢ over the years, is more profitable than a $60 AAA title that enjoyed all the glitz and glamor that comes along side a multi-million dollar game launch marketing blitz. We’re talking major network TV commercials, prime shelf space in nationwide retailers like Wal-Mart, and everything else …and Infinity Blade wins.”

…although *ouch* at that last 4 words, where they show some stunning foolishness. Console games make *more overall profit* than iOS games – Tim’s words clearly only covered the profit *margin* – making it very stupid to say “Infinity Blade wins”.

And we have to factor in (again, GAH! TouchArcade … do you really have so little idea what goes on in your own area of news?) that InfinityBlade *did indeed* get major TV exposure etc – it’s just that Epic didn’t provide it, Apple did.

What we really want to know is … what’s the ratio of profit margins between the two games – Gears of War 1/2 (their premier console AAA title), and Infiity Blade 1/2 (their premier iOS AAA title)?

My pure guess is that it’s a fairly small multiple – maybe only 1.2 x margin – so that if you have a LOT of money to invest, console is still a good target. Meanwhile, Epic will use this as justification that “everyone should license Unreal Engine v4 – because otherwise your dev costs are too high on console, compared to other platforms”

(as I hope we all realise … Epic stopped being “an independent game developer” many years ago; Epic in the 21st century is “a middleware company, that sometimes makes games on the side”)

Categories
GamesThatTeach

GamesThatTeach: Different snakes, how they look, how they act

Snakes on a Cartesian Plane

Interesting because:

  1. Each snake has to be unlocked by in-game activities that are (sometimes) related to the snake itself
  2. Every snake changes the gameplay in a way that’s always related to the snake itself (with a small piece of text hinting at – or directly explaining – why)

Things I’d like to add:

  1. Photos of each snake when you start the level, and each time you die, combined with the snake name; a passive reinforecement

First in a series…

I’ve decided to start grabbing and posting tiny summaries of games I encounter that – usually accidentally – are teaching something clear. I don’t care about … actually, no – I detest – educational games / edugames / edutainment. Every game teaches; every game teaches.

It’s just that usually the game-designers weren’t particularly concerned about “what” it teaches – and it’s normally quite difficult to work it out.

Incidentally, gamesthatteach.com is apparently being cyber-squatted by Monster Jobs – looks like Monster is focussed on subverting Google to get money at any cost, no matter what gets trampled in their way.

Categories
recruiting

URGENT iOS Developer needed in London Monday start!!!

Much time has passed, and the guilty are probably not reading this blog any more, so I figured I’d go ahead and post this one without fear of upsetting them…

Adam’s Hints to Recruitment Agents #72:

“if you need an expert, urgently (e.g. within 1 week) … there are some questions you should be answering up front, such as “what’s the budget?””

Email 1:

Me: Where in London, and what’s the budget? Any skills in particular?

Email 2:

Recruiter: Tottenham Court Road, no skills specified

(ignores the “budget” question)

Email 3:

Me: OK, location is good. Since you didn’t answer the budget question, standard rate is X.

Email 4:

Recruiter, less than 3 hours before close of business the day before due to start contract: “Ah that’s way over budget so this is a non-starter I’m afraid, thanks anyway.”

Many recruiters I’ve met would say “I don’t want to bother the client with unimportant questions”, but if you’re hiring a contractor at short notice and high cost, IMHO there’s no such thing as an “unimportant” question.

And, of course, if they’d bothered to do this stuff up-front … given I administer a non-profit network of 200 mobile developers (including many freelancers) … they just missed out on the chance for me to recommend them people within their budget range. Stupid, stupid, stupid.

Categories
bitching games publishing web 2.0

Pearson doesn’t like people buying books; Amazon knows where you live (in a bad way)

Wow, Pearson has some strange ideas about commerce! To buy this popular textbook as an ebook, you have two choices, both conveniently linked from the front page of the author’s website:

  1. Go to Amazon. Buy it, in any country / price you want. Get it immediately. (unless this is your first purchase … see below)
  2. Go to Pearson. Not allowed to buy it, unless you’re American (especially funny given that Pearson was originally English, IIRC)
    1. Get taken to a page listing 100 random URLs, with bizarre domain-names, grouped by country.
    2. Guess which one (out of several for your country) is appropriate for you.
    3. Manually search for the product YOU’VE ALREADY SELECTED
    4. Get quoted a price that is MORE THAN TWICE AS MUCH for the IDENTICAL download

And publishers *still* complain that people use Amazon? Hmm…

Which means Amazon is able to get away with treating the consumer like crap – because it’s *still* less insulting and obstructive than what the original publisher is doing. If you haven’t already surrendered your private data – which is nothing to do with buying a book – to Amazon, you’ll be prevented from buying a book at this point. Here’s the screenshot:

And, yes, Amazon.co.uk ensures VERY carefully that I cannot buy this book, until I’ve gone through this process:

  1. I want to buy this eBook
  2. “No: you haven’t yet given our Secret Police full access to all your computer hardware”
  3. But … wait, what? … I want to give you MONEY for something you’re SELLING, and you’re telling me you want access to my hardware? What’s that got to do with the price of fish?
  4. “Not until you voluntarily destroy some of your civil rights. Your government wouldn’t let us do this, so … you know … we have to get you to do it ‘voluntarily’. LOLZ”
  5. WTF? Apple’s currently the defendant in a billions-of-dollars court case in USA for doing exactly this. Aren’t you even slightly worried?
  6. “It’s OK. We know that the book’s publisher is going to treat you so badly that even our bad behaviour is mild by comparison. Let me know when you’ve ponied-up your privacy, and I’ll let you serve me. That’s what we mean by “a service company”: it’s a company that you serve. Have a nice day! Yours, Amazon”

Net result: use someone else’s hardware, sacrifice it to Amazon, rip the evil DRM off there, and give Amazon less money in future (since there will only be a “fake” account on their system).

Treating consumers like idiots – in the age of Internet literacy – is a net loss … for all of us. And it continues to drive the younger generations further and further away from paying for stuff, and closer and closer towards pirating it.

When I think of media corporations today, this image comes powerfully to mind, from back when Swine Flu broke out. Guess which one sits on the board of directors of a corporation (I grant you, it’s not easy to be sure) :

Categories
games industry recruiting

There IS no skills gap; employers are lying to themselves

In the games industry – especially in the UK – big employers have spent the past 10 years claiming there is a “skills gap” – that not enough people are being “trained by universities” (which shows how stupid the speakers were; Universities don’t do training, and most never will – it’s against the core principle of a University). Meanwhile I’ve been counter-claiming that they’re making this up, that there’s no “gap”, and that they know this full well – they just want an excuse to artificially pay lower wages than they deserve to.

Now someone’s published a book on the topic. Unlike my straw-poll arguments, this has actually been researched :), so it may be a lot more convincing. I haven’t read it yet, but this interview with the author has enough juicy details to have me convinced it’ll be a good read.

For instance, here’s a segment on “how does an employer start with 25,000 candidates for a role, and then declare that there exists no-one suitable?”:

“…and the way screening works is you build in a series of typically yes/no questions that try to get at whether somebody has the ability to do this job. And a lot of that ultimately ends up, it’s all you can ask about, is experience and credentials. So you end up with a series of yes/no questions. And you have to clear them all, and I think people building these don’t quite understand that once you have a series of these yes/no questions built in, and the probabilities are cumulative right? You have to hit them all, then you pretty easily end with no one that can fit.

So say that the odds are 50 percent that the typical applicant will give you the right answer in terms of what you’re looking for for the first question, and a 50 percent that they’ll give you the right answer to the second question. Well, then, you’re down to one in four people who will clear those two hurdles, and once you run it out to about 10 questions, it gets you down to about one in 1000 people [ADAM: i.e. on statistics alone – independent of quality etc!] who would clear those hurdles.

… the first hurdle is usually, What wage are you looking for? And if you guess too high, out that goes, right?

… at the end of the day, you find that nobody fits the job requirement.”

Categories
amusing marketing and PR

Unity: spamming game-developers?

So far this week, from Unity3d, I’ve received:

  1. A “personal” email asking me to respond if I want to know more about Unity4.
    • When I replied, I got an auto-responder saying “I’m away for two weeks and will not be responding to email”; which reminded me this account manager had told me they’d be leaving a few days *before* I received the email “From” them
    • So, I re-forwarded my email to the named “in my absence, speak to” contact – no response
  2. A few days later: a new “personal” email, again asking me to respond to their marketing push for Unity4, but this time from the “in my absence” contact
    • This despite no response to my email I’d already sent about the last such email from Unity
    • And, again … when I replied … no response

If someone’s on holiday – no problem there, of course!

If someone’s ignoring your emails *responding to their marketing* … and then “personally” sending you marketing emails days later … that’s mildly offensive.

If the company is sending out fake emails that pretend to come from people who – by the sounds of the auto-responder – were already out of the office and not responding to email … that’s definitely offensive.

I think Unity needs to do some a bit of work re-thinking their spamvertising – sorry, I mean – their marketing.

Categories
bitching

3 Internet: now Google.com has gone too

In a follow-up to yesterday’s post (3 Internet is the worst broadband provider in UK), today some sites have started working – but now google.com is inaccessible too.

(incidentally … these sites can be pinged – just no web. Which makes me suspect it’s some fool at 3 who’s misconfigured their traffic throttling/caching – and didn’t test their changes)

And, making life hellish, StackOverflow is completely inaccessible.

We’re now at 25-30 hours of practically no internet … And, since 3 decided to remove their internet status pages (my3.three.com) earlier this year, there’s no way of finding out WTF is going on.

Welcome to the 1990’s!

Categories
bitching

3 Internet has the worst broadband I’ve used in 12 years

Just Sayin’.

(for past 20 hours, 3 has had no connectivity to 95% of all internet sites, including – intermittently – Google.co.uk. (*). Impossible to get anything done. And for the past 4 months, the service has been running at 1/50th of the normal speed. They don’t care – multiple calls to customer support result in being told “if the modem switches on, it is working. My script doesn’t allow any other possibility.”)

(*) – At times like these, I seethe that Google et al decide “What’s good for us” and actively prevent anyone from using e.g. Google.com, even if they want to. No, you MUST use your local country’s version of Google. I remember the good old days of the Internet, back when you were allowed to visit any site you wanted, just by typing it into your web browser. I never thought those days would end :(.

Categories
fixing your desktop Google? Doh! programming system architecture web 2.0

Google Docs 2012: Google loses your documents

Beware – latest version of Google Docs has the Gmail bug whereby emails (documents) randomly disappear and become completely inaccessible (this happens a few times a year with Gmail’s IMAP client). With Gmail, you can use the web interface to get around it and see the actual email – but with Google Docs, I don’t know of an alternative route. What you get is that Google appears to have deleted your data, with no comeback.

I just saw it now with Google Docs where a doc created yesterday allegedly didn’t exist any more – it had been removed from history, from recent documents, and … most distressing of all … it resulted in zero hits if you searched for it.

Solution?

There’s none – it’s just Google’s software being stunningly bad (again).

You have to wait. And pray. And wait some more. And click random things. And pray some more.

For me, clicking around on the different tabs on the left hand side (Home, All Items, Owned by Me) after a minute or so it randomly reappeared.

SaaS In the Cloud: Screwing the User, yet again…

I’m coming back to this topic more and more, because these abuses of web and HTML services are getting more and more damaging to the users.

If the “old” version of Google Docs doesn’t have this bug, it doesn’t matter – Google has already confiscated it from us. Unlike the core concept of desktop, laptop, and home computers … Google repeatedly takes the software that you possessed, and destroys it, for no reason other than to make things a little easier for engineers who don’t like to support the bad code they shipped.

That’s what this is about: people who use Cloud/SaaS to avoid taking responsibility for the apps they created.

Categories
fixing your desktop programming

GitHub 2nd chance: infinite crashes

I’m periodically re-trying GitHub’s GUI client, just in case it becomes stable enough for anyone to use on a real project.

Today, with the latest version: every time I start the app, it immediately hard-crashes. The app is literally unusable – it won’t run at all.

At least with the previous versions it would actually start up, so … this is a pretty big step backwards. If it had decent error reporting, like most apps do, I might be able to work out what’s wrong, but of course that’s one of the original problems with GitHub’s app – it disables all error reporting.

(as an aside: it’s interesting that Apple’s Mac App Store has made it so rare to see an app crash that … I can’t even be bothered to try and fix this app or complain about it. For an app to crash on startup is so VERY far behind the current “normal” for apps that … it’s just not worth the effort. I think the Mac App Store is one of the worst things to happen to computing in the last 20 years [if the US govt allows Apple and Microsoft to continue in this way, computers will become a thing of the past], but I have to admit it is achieving some great things)

Categories
fixing your desktop

How to fix Firefox’s stupid “new tab” page grid of random websites

Firefox … ah, how we love watching you make terrible usability decisions, and then force them upon your users!

FF now has this ridiculous page – WHICH YOU CANNOT DISABLE in Firefox settings:

Fixing it

Since it’s not supported as an user-configurable option, you have to open the magic low-level settings page. Type this into your web browser, as if you were visiting a new website:

about:config

You’ll get a list of settings, and a search bar. In the search bar, type:

newtabpage

You’ll get something like this:

…double-click the “browser.newtabpage.enabled” line until it says “false” in the final column. This will probably make it go bold:

…et voila! You’re back to a normal web-browser. Like you’ve been used to, all these years…

Why Firefox was stupid to add this “magic” page, in my opinion

For those that are interested, here’s why I’m scathing about this page:

Most of all … because it actually breaks Firefox’s core feature (searching using Google).

That’s just downright stupid. How come no-one noticed this? Why on earth did they ship something that breaks the core web-browser functionality? I have no idea. Google’s Chrome team must be delighted when stuff like this happens – it just drives more and more people to stop using Firefox.

  1. While this page is enabled, Google searches from the Search bar … hang every time for me
    • You have to hit the Search button twice – or wait several seconds before pressing it (the first click is accepted, but Firefox bugs mean it can’t actually load the page)
    • I’m guessing this is because the browser is unable to “load a new page” until the grid page has finished loading? Anything I do before the “grid tiles” have finished appearing gets ignored
  2. Random webpages from your history are thrown up on screen
    • Have fun explaining to a new client why you have their competitor’s website open on your browser during a meeting
    • It’s pretty, but it’s not even useful. For most of us, when we open a new tab, chances are we’re about to visit Google. Firefox has spent 10+ years training people to do exactly this!
Categories
amusing programming

Firefox 3 dead? StackOverflow ends support completely

StackOverflow.com now blocks anyone running Firefox 3.x (probably not deliberate – just someone wrote some bad code and didn’t test it?). But it’s interesting that sites that decide to go anti-HTML and pro-AJAX/JS can so easily break their whole site, just from some errant JS code.

(it appears to be some new pieces of crappy javascript that cause the AJAX requests to fail on Firefox 3 – and ALL THE BUTTONS AND FORMS ON THE SITE ARE DISABLED. Since you can’t click on anything any more, that makes the site unusable)

Categories
computer games games design

Idiot-proof, physics-based, Martial arts arcade game

Toribash is, simply, awesome. You need no knowledge, you work in bullet-time, deciding which limbs to bend or stiffen, and see a second-by-second preview of what each change would do. String them together, build jaw-dropping martial arts attacks.

The build quality’s poor (no docs, no installer, poor handling for savefiles, etc) – but it’s great fun, and easy enough to understand with just a little clicking around. Play it now!

Categories
dev-process programming

Playing with Unity3D 3.5.x … some thoughts on starting from scratch

I haven’t shipped anything with Unity; last time I used it was early in 2.x, and it was painful enough that I never used it in a live project. I’ve re-eval’d every 6 months or so.

Now I’m onto Unity 3.5, and using it in several real projects that are due to ship this year … positive experience so far. I haven’t run anything on an iPad3 yet (that’s the next thing to try), but it’s treating me a lot better than Unity 2 did.

A few surprises along the way…

There’s still no decent “official” tutorials

There’s some video (yuck), and the first tutorial on the official tutorials page says (in slightly more words) “this is not a tutorial” in the opening paragraphs. Great! WTF?

I did find some basic ones (great for getting you into using of 3D objects *and* scripting together, at the same time) here: http://catlikecoding.com/unity/tutorials/

…and friends and colleagues provided a long list of recommended video-tutorials which I’ve been working through. Some sites have some great “beginner” tutorials, but they peter out in quality as they get more complex. Typically, the videos get more and more long-winded, boring, and a huge waste of time (many sites seem to have a hard-on for 2-hr videos, often for stuff that – if it had been a real tutorial – would have taken 30 minutes to digest. I guess they sell more advertising this way?).

The editor is very clear, self-consistent, and stable

Compared to early Unity 2.x (last time I used it), and compared to most 3D editors, Unity’s editor is very logical, consistent, and simple once you’ve had a 3-minute intro (good luck finding one; best to find a human and ask them to show you).

Overall … compared to most game tools I’ve used over the years … a delight to use. Although I’ve not hit it with any huge scenes yet (that’s where the real test will come; how often will it crash? how badly?)

Also: hasn’t crashed on me at all. Although there’s some occasional glaring bugs even in simple scenes (which is worrying) – e.g. one time, the scene playback engine corrupted itself and started “leaking” settings, which is allegedly impossible – on the whole, it’s decent quality.

(transparent) PNGs aren’t supported

2012, and Unity still can’t (fully) read PNG files. Wow.

(using PNG’s saved from Photoshop – but Unity’s crappy PNG importer screws-up the alpha. Depressing. Back in 2005 I thought we’d seen the last of the world’s “apps with only partially working PNG loaders”. Apparently not)

Javascript and C# sit very happily side by side

This is important for one project I’m working on, where we’ve got a mix of coders with diferrent backgrounds. All of them know ONE OF the Unity languages (C#, Javascript primarily … some other more odd ones too), but there’s no single language that EVERYONE knows. So far, Unity’s had zero complaints about us mixing and matching the script languages.

Categories
amusing

All games are just Snakes … and Ladders

Categories
Google? Doh! Web 0.1

Google: please hire a UX person for Gmail

Who at Google even thought this sounded like a good idea?

1994 phoned: they want their GeoCities school of web design back.

(I’ve had to switch to non-javascript Gmail because the latest “forced update” of Gmail has some JS bugs in it that make it run very slow, lose emails, and overheat my laptop. Triple whammy (all because of a bug in a javascript somewhere, so far as I can tell))