Categories
entity systems games design programming

Entity System 1: Objective-C

(this is a simplified, but complete, version of the “Entity System 1: Java/Android”)

NB: this post is part of the community effort to make working, usable, free, source-examples of actual Entity Systems, found at http://entity-systems.wikidot.com/

Wiki link: http://entity-systems.wikidot.com/rdbms-with-code-in-systems

Github source: https://github.com/adamgit/Entity-System–RDBMS-Inspired–Objective-C-

I’m posting my original design notes here – also copy/pasted to the wiki, but the wiki version will probably evolve over time. Comments on this post will be disabled – please comment direct on the wiki / wiki discussion pages.

NB: the source code is in GitHub, that’s where you should download it from (will include any fixes and updates over time)

Concepts

(integer) Entity
(enum) ComponentType
(interface OR empty base-class) Component
(interface OR empty base-class) System
(class with implementation) EntityManager

Data Classes

Entity

This is a non-negative integer, and uniquely identifies an entity within the ES. If you serialize your ES, this SHOULD be the same after serialization. New entities have to be assigned a new, unique, integer value when they are created. When an entity is destroyed, its integer value is freed, available for re-use.

ComponentType

This is needed because this ES is so simplistic it has no other way of identifying which Component you’re talking about when you’re looking at a single Entity.

(richer EntitySystems MAY not need this type)

Component

This exists purely to make method-signatures type-safe. We need to know that certain objects are valid instances of a “component” (so we use this superclass to indicate that), but we also need a method that’s guaranteed to work on all those objects (see below).

(richer EntitySystems make more use of this, and require it to be a class, but for this simple ES, you can use an interface/header file)

System

This exists purely to contain a known method-signature that your game-loop can call once per game-tick.

EntitySystem Implementation Classes

Each subclass of Component

Internally, the class has the following functions:

  1. (ComponentType) getComponentType();
EntityManager

This contains:

  1. The master collections (arrays, hashmaps, whatever) that contain all the data for all the entities
  2. Logic for creating, modifying, fetching, and deleting entities
  3. Logic for fetching and modifying components-from-entities

Internally, the class has the following variables:

  1. MAP: from “Entity + ComponentType” to “concrete Component subclass”
  2. LIST: all entities in existence (so it never duplicates entity-IDs!)
  3. Internally, the class has the following functions:

    1. (Component) getComponent( Entity, ComponentType );
    2. (List) getAllComponentsOfType( ComponentType );
    3. (List) getAllEntitiesPossessingComponent( ComponentType );
    4. (void) addComponent( Entity, Component );
    5. (int) createEntity;
    6. (void) killEntity( Entity );
Categories
community marketing and PR mmo signup processes startup advice web 2.0

Skype: failing at customer support at scale

I had a serious customer-support problem with Skype recently, relating to money they’ve taken from me. It’s proved excessively difficult to get a response from them – surprising, considering their size, their brand, and the fact it’s a paid-for service. It raises some interesting questions over Customer Support / Community Support, and how they can/should be scaled.

FYI, the initial complaint is over what looks like a scam – if you pay for Skype, but don’t use it frequently enough, they cancel the service but keep the money. It was probably buried somewhere in the smallprint, but I certainly don’t remember that as part of what I signed-up for: “pay now … get screwed later!”. Whether or not it’s legal, it’s certainly dishonest (they give no explanation, it’s NOT part of the marketing materials, it’s just “policy”). It feels like theft.

Their website was useless. So, I asked them about it…or, at least, I tried to.

  1. Reply-to-email: I replied to the email they sent me where they said they’ll be taking my money but NOT providing the service. They sent it from “noreply@notifications.skype.com”; this is a fundamental abuse of the email system, a sign of amateurish support teams. FAIL
  2. Email-to-support: I tried forwarding that + my question to the standard email address – support@skype.com. I’ve been using Skype for 5 years, and I thought this address existed. Eithet my memory is wrong, or they’ve deleted it since. It doesn’t exist at the moment – you get a mailserver error. FAIL
  3. Google for “email support skype”: I tried again, emailing the support address that Skype’s own employees have sent emails from – right now, on Skype.com, you can see example emails sent from “support@skype.net” (maybe this was what I remembered from years ago?). But if you send an email to that address, you get an email back saying: “Thank you for your email. Unfortunately this email address is no longer in use.”. FAIL

500 million accounts … too many?

Skype’s customer-support is unusually weak here; this is a paid-for product, and they’re actively blocking people from getting support. That’s not how support works; that’s what you do when you don’t have a support team – usually because you’re too poor to afford it AND you have no paying customers. Doing this with paying customers is surprising. Especially for a large product/brand.

I remember in the very early days of Skype they already had 50-100 employees for what was a comparitively small operation. IIRC, a big chunk of that was dedicated to support, and a big chunk to marketing – only a very small part was tech. I’d assumed that with their 10’s of millions of users, they had a highly automated customer-support system.

Today, they have well over half a billion user accounts – and it would seem that even their automated systems have failed. Why else would they put a block on industry-standard email aliases? And deliberately shutdown their own support address?

Obviously, those addresses would be flooded with spam and FAQ emails … but *all* commercial customer-support systems are specifically designed to handle those probems – and at large scale, too.

My guess is simply that whichever commercial system they use wasn’t architected to a high enough quality, and is incapable of handling Skype’s uniquely large customer base. This isn’t a criticism of that system – there are very few companies in the world with so many users of a single product. i.e. there’s very little demand for a product to be so carefully engineered.

But it begs the question: why hasn’t Skype put something better in place? Surely they have the resource and the skill to source or architect something better? Or is it a company policy to provide second-rate, low-quality support – even for their paid customers?

What Would Facebook Do?

…hopefully, I’ll post on this in more detail later, but briefly: they *eventually* went to specialist external vendors to provide the scalability they needed:

  1. Facebook was incapable of reliably delivering messages to users for most of the past 3+ years
  2. I’ve run several groups large and small, and found that approx 30% of all messages DIRECT to *opt-in* users went undelivered in the FB messaging system
  3. (speaking to other people who ran facebook groups, or had huge numbers of Friends, the experience was commonly repeated. e.g. I know a few people who had to setup multiple FB accounts because they had “too many friends” to fit on a single account)
  4. Facebook recently (last 6 months) replaced their internal, proprietary messaging with an external, specialist system from a company that specialises in high-volume messaging (according to the vendor; caveat emptor)
  5. Reports from other people who still use Facebook for large groups / large numbers of friends suggest the “lost in the post” phenomenon is now cured

Incidentally, I don’t/didn’t think much of Facebook’s tech team (although quite possiby it’s improvements in that team that have lead to fixed like the one above). It’s very hard to be sure, going on just public info, but I used to read their blog, and their posts about performance and architecture were for a long period … amateurish.

On some core subjects, they betrayed a deep lack of experience and understanding – and apparently no effort being taken to correct that, but rather they preferred to “hack” away with band-aid solutions. Great fun for them, but not appropriate for a billion-dollar service, IMHO.

Categories
server admin startup advice Web 0.1

Don’t use BitBucket – broken OpenID authentication

We’re starting a new client project, and the client uses Mercurial exclusively, all through BitBucket.

BitBucket has a stupid user-accounts system, that demands you invent a globally-unique username. Oh dear lord – how amateurish are you guys?

Aha! BUT! … they have a (very subtle) link to let you use OpenID instead. Phew! My day is saved – I don’t have to be “dodgy-69-sucker-11111” just in a desperate attempt to work around a naive website architect.

OpenID FAIL

Except … once you’ve sacrificed your private account details to Atlassian, they … don’t allow you to login. It reports “success” but tells you that you’re not allowed to use OpenID to access the site, you STILL have to create a non-OpenID account, using a globally unique ID.

I’m sure they’re doing “something” with OpenID, but I get the impression that the folks at BitBucket don’t grok what most of the world is using it for…

How do I take back my Identity, you fraudsters?

Well, Atlassian won’t help you there.

Fortunately, Google did…

Google’s UI designers FTW

I used Google as my OpenID source this time around. And, *fortunately*, Google’s process for de-authorizing a website is very simple.

I usually assume Google’s UI is great, and I usually only blog about it when it fails badly, but here’s an example where it works beautifully.

(hint: there’s a shortcut – but Google might change the link in future. You can go directly to: https://www.google.com/accounts/IssuedAuthSubTokens)

Just go to your account page (https://www.google.com/accounts/), and *right at the top of the page* (thanks, Google!) is a link to all your authorized websites – it’s in a big white space on it’s own, VERY easy to find.

Categories
Web 0.1

Web 0.1: Canon USA

FAIL #1: Website denies existence of products, broken cookie-“cleverness”

Canon recently (last few months) launched a new “prosumer” DSLR – the EOS 550D, a.k.a. Rebel T2i (because Americans need to feel “cool” and “rebellious”, apparently. Hmm. Marketing fail there too, perhaps?).

According to Canon’s website, this does not exist. Try for yourself:

http://www.usa.canon.com/cusa/consumer/products

…UNLESS you’ve been to the site before. Second time you go to the site, you get an entirely different “product” page. First version is a list of approx 7 cameras, second version is a grid showing 11 cameras – which does include the Rebel T2i.

FAIL.

FAIL #2: Javascript navigation: webpage has “no content”

So, you finally find the camera page, and select the “Drivers and Software” tab, e.g.:

http://www.usa.canon.com/cusa/consumer/products/cameras/slr_cameras/eos_rebel_t2i_ef_s_18_55mm_is_kit?selectedName=DriversAndSoftware

What do you see?

1 firmware update, and no drivers, and no software. How come?

Well, you have to select a value in the tiny dropdown near the top of the page, and only then will the page magically update itself in-situ with the ACTUAL list of “Drivers and Software”.

Is the resulting page bookmarkable? Nope; it’s not actuall a “webpage”, it’s a temporary piece of javascript. ARGH!

FAIL

FAIL #3: Javascript navigation, breaking basic web standards

Fine. So, for Windows, or for OS X, there’s a dozen or so downloads – once you spot the “trick” to reveal them.

Ah, but – are you allowed to simply click and download them? “NOOO!”, says Canon USA.

If you try to follow any of the links, you discover they aren’t actually links, but instead are proprietary Javascript routines that are masquerading as links. (BAD web designer! Why did they do this? What possible advantage is there? Where the heck did Canon’s web team learn to write HTML?)

I wouldn’t mind, except … they implemented the Javascript so badly that each download link isn’t even a URL.

Which means … when you click on a download, and download it, then hit “Back” in your web browser … you get put back to the page BEFORE you even went to the Canon website.

FAIL.

Go to JAIL. Do not pass GO. Do NOT collect $200

Yep – that’s right, time to use that stupid drop-down again, before you’re “allowed” to see the list of files.

And then, for each file, you’ll have to repeat:

  1. click file link
  2. scroll to download link
  3. click download link (3 clicks to download – Amazon, eat your heart out!)
  4. click Back (NB: Canon’s web team couldn’t be bothered to provide a javascript “back” function)
  5. click Forwards
  6. select your OS from the drop-down list
  7. scroll back to where you started

SEVEN steps to download each file? For half a dozen files? Canon USA, congratulations – that’s Web 0.1!

UPDATE: … I worked out a trick. If, after you download each file by clicking the “I Accept these terms and conditions” button, you then click the “No, I reject these terms and conditions”, it surreptitiously puts you back to the previous page. Canon’s web team apparently has no issue with you simultaneously Accepting and Rejecting their legal documents – I wonder what Canon’s lawfirm would say about that?

Categories
fixing your desktop

Macbook Air: how to disable the Swap file (run your laptop faster)

NB: This technique is useful in precisely TWO situations:

  1. EITHER: you have a lot more RAM than you need (on OS X / Apple computers: at least 4Gb, more likely 8Gb), and you want your computer to run faster
  2. OR: you have an expensive SSD hard disk in your laptop, and you want it to last a couple of years or more

Symptoms of a dangerous swap file on the Air

I’ve got a new digital camera, takes very large photos (18 MP). If I load up more than 5 photos in Apple’s Preview, there’s a high chance that Preview *and the whole computer* will seize-up for about 5 seconds. Then it runs normally again.

Preview is a very simple app – it’s not doing anything complex (like, say, Photoshop), it’s just reading images from the disk. If Preview hangs – and hangs the whole OS – there’s something very deeply wrong with your laptop.

There’s no spike in CPU usage – just the OS seems to hang. OS X often does this when it’s waiting for transfer of data to/from somewhere – either the network, or the hard disk. (this is a flaw in OS X’s design – in most cases, the OS shouldn’t hang, but Apple hasn’t coded it that well)

So … I’m fairly sure this is a sign that the SSD drive is being asked to do something it really doesn’t like, and because Apple’s code is imperfect, the OS is being forced – at a very low level – to “hang” while it waits for the hard drive.

Remember: SSD drives are very fast, the drive should have dealt with this in 0.005 seconds, not 5 seconds. That exceptional slowness is what you’re looking for as a sign that something is “wrong”.

Disabling it … permanently

I researched this extensively, and found a lot of interesting stuff about 3 different ways of achieving this. Most of them were from OS X 10.5 (Leopard), where Apple’s swapfile code was a lot weaker. Snow Leopard (10.6) has massive improvements in Apple’s code, and it seems you can get away with this extremely easy technique:

In the Terminal, enter the following command. This will unload the dynamic pager from the Mac OS X kernel:

   sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

Again, this completely disables the Mac OS X paging ability, do not mess around with this for fun.

And then … reboot. I found a couple of useful tips elsewhere on how to check the swap status:

sysctl vm.swapusage

Outputs something like this:

   vm.swapusage: total = 0.00M  used = 0.00M  free = 0.00M

Re-enabling it…

In the Terminal, enter the following command:

   sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

Why / (not) disable the swap file?

Actually, I didn’t really want to – I have a 1st-gen Air, and it only has 2GB Ram. With OS X, that’s *not enough* to forego a swap file (NB: Windows applications tend to be slightly less memory hungry, and linux apps a LOT less mem hungry. With Linux, 2 Gb is plenty, with Windows it’s “probably” OK)

BUT … when my Air’s hard disk got fried, I replaced it with an SSD drive. The change is enormous – the Air runs literally 2-3 times as fast on many operations (basically: if you buy an Air without SSD, you are wasting your money, and you’re getting ripped-off)

However … SSD drives are *destroyed* by swap files (literally – the hardware gets worn down and soon breaks, permanently). Interestingly, MS Windows will automatically disable lots of its own behaviour to reduce the chances of this happening. As does Linux. Apple (as ever) appears to be behind the times: allegedly, OS X doesn’t do this (even though Apple sells Air’s with SSD drives!) … but then again, no-one seems to know for sure.

Ultimately, the bizarre OS hangs scared me into doing this – I know that the cheap SSD drives have very short lifespans if you don’t use them properly – measured in months, rather than decades. And by “cheap” I mean “anything costing less than $5,000”. That definitely includes anything I could afford, then ;).

Categories
amusing Web 0.1

Adobe still doesn’t understand this “world wide web” thang…

Given how badly Flash is getting smacked-down at the moment, I find this hilarious.

Right now, Adobe.com’s store page (where you get redirected if you google for Adobe products) doesn’t work in a mainstream desktop browser (Firefox). I go to the page, and suddenly my keyboard stops working, and the mouse is only half working. WTF?

Ah. A bit of digging, and I find crap like this:

…fully “custom” scrollbar, which I suspect is disabling keyboard and mouse input.

What does this achieve?

  1. HEY! It looks “different”!
  2. Confusing: looks like a Tab, instead of a scrollbar
  3. Reduces performance: this scrollbar *flickers* as you drag it, because the rendering routine is so horrendously slow. This is on a Core2 Duo processor that’s not doing anything else.

What does it break (aside from performance)?

  1. Keyboard navigation: spacebar, cursor keys, and left/right switch tab (VERY annoying: it seizes control of your keyboard and won’t let you navigate away)
  2. Mouse navigation: it bypasses the web-browser (stupid idea, Adobe), and so all the mouse gestures – even the OS-built-ins like 2-finger-scroll – stop working

It’s like a microcosm of why people get frustrated with Adobe – and perhaps of how Flash is going to go down in flames. It would be subtle and clever if today were April 1st:

  1. Who cares what the user thinks? Give them useless crap that doesn’t even look pretty! (think of the features added in most revisions of CS)
  2. …but FORCE it on them, too; choice is bad! (recall the Adobe trojan that they wrote to take over your PC and force-install Adobe products)
  3. Performance? Who cares about performance? (Illustrator and large files … nuff said)
Categories
fixing your desktop

How to cool down a Macbook Air … fast

Is your Macbook Air overheating? Here’s a technique I’ve been using for the last couple of years, works everytime. I suspect it still works on the new models – I *suspect* they have the same basic design flaws as the original, from looking at the case.

Problem: vents in wrong place

Those vents along the rear underside of the case … don’t work. I don’t know how they ended up there, but I suspect it was a triumph of “looks” over “not breaking the expensive laptop” (until Apple patched OS X, just running Flash was enough to cause OS shutdowns on a regular basis).

Solution: assume launch position…

Grab your Air, hold it at the hinge (so the lid doesn’t slam down and switch the laptop off), and tilt it towards you 90 degrees.

i.e. the keyboard half of the laptop should be vertical, resting on the long, bottom, edge.

The vents now vent air straight up – unimpeded – instead of down-and-out (impeded by the case itself).

Result: fast cooling

I can usually get an Air that’s been running “hot” (fans very loud and noisy) for minutes / hours to cool down in under 60 seconds using this technique.

Why does this matter?

Well … once an Air is cool, it tends to stay cool. i.e. it’s crap at bringing it’s own temperature down, but it’s got enough oomph to *keep* it at whatever temp is current. So, manual intervention fixes the problem.

Super-fast cooling (a.k.a. “PANIC!”)

What do you do if your Air starts beeping?

(hint: this is the never-actually-explained-to-you hardware warning that “your CPU is about to melt. Cool it down NOW or buy a new laptop”. I wonder how many people realise what’s happening when they hear that screeching, high-pitched beep and think “WTF?”)

As above, only shut the lid too.

This may seem counter-intuitive – after all, this will reduce the air-surface of the Air by about 50%, reducing it’s ability to cool down.

In practice, although that’s true at low temperature, at high temperature the heat is already concentrated in the top-left corner of the keyboard (where the CPU sits) – and most of the case is too far away to help.

In practice, closing the lid causes OS X to suspend processes, which normally takes enough load of the CPU that the laptop / hardware is able to cool itself MUCH faster – but only if you’re holding the whole laptop vertically, with the vents pointing upwards.

I’ve found this normally cools an Air from “max fans” to “silent” in under 15 seconds.

Categories
fixing your desktop

Apple’s bad engineering: my Air just snapped

I now get to join the (sadly non-exclusive) club: My Macbook Air just snapped at the hinge, and now the lid WILL NOT close and WILL NOT stay upright – it just falls flat on the desk, like a book lying open.

I’m blogging this purely for anyone with an Air who doesn’t yet know about it – this is APPLE’S FAULT, it’s a manufacturing defect, and they are (usually) obliged to fix it for free. If they make a mistake, the charge can be anywhere from $500-$1,000 (from reports I’ve heard) – so you *really* need to know about this.

Sob. Whimper. No laptop, and I can’t even put it back in the case / bag – I have to hold it two-handed to stop it from ripping apart at the seams.

Sadly, this laptop has been upgraded and repaired before, and has scratches and minor bumps on the case, so I’m dreading getting ranted at by the Apple staff. This has happened before, when a brand-new Apple power adapter broke within two weeks, and the manager on duty was having a bad day and decided to accuse me of “deliberately” breaking it so I could get cash for it. Seriously? I would break my laptop to try and get a $60 refund? Yikes. Get a grip, lady!

Categories
fixing your desktop photos security system architecture web 2.0

FlickrEdit – looks like a virus?

IMHO, Flickr/Yahoo has one of the best user-authentication systems I’ve ever seen. I’m sure it’s no accident that Twitter (eventually) moved to a system that is extremely similar.

(NB: I don’t know if flickr copied if from someone else, but they were the first I remember seeing like this, many years ago)

You want sensitivity in your security? Yeah!

It’s so sensitive that it’s currently blocking FlickrEdit’s (bad, broken, buggy) implementation. Not just with an error; not even with a warning … but with giant red letters, a yellow background, and a warning icon:

I was pretty annoyed that the app was seemingly so poorly written it wasn’t doing the desktop-based auth that it should be – and that it popped-open a web browser and “told” me to login (Flickr’s auth-system is slightly more seamless than that, and a much better user-experience).

But I was very impressed that Flickr noticed it too, and decided to warn me that this might be a scam of some kind…

Leaving just one question…

…is this open-source project buggy, or has someone hacked the source and put in a virus? Hmm…

Well. I’ve contacted the project owners, and informed them. Interesting to see what they say.

In the meantime, I have so much faith in Flickr’s authentication system (e.g. I know that it doesn’t share passwords) that I’m happy to go ahead and use the application. There are very few systems where I’d do this, but flickr’s (approach) is one of them.

Categories
iphone programming

Writing apps for Nokia / Ovi – Attempt 1

I’ve written lots of apps for iPhone/iPad and Android. Recently, Nokia kindly gave me a new N8. So, over Xmas, I thought it would be fun to write some games for it.

Didn’t get very far. Nokia “only supports Windows”, according to their developer site.

There also seems to be a lot of confusion over which language they expect you to use – Symbian C++? (which has the confusing one-line explanation “Edit”) … Python? … J2ME? … etc.

I found a promising doc that talked about “porting from Android to S60” – which would give modern developers a way to write good code (i.e. in Java), and then back-port, maybe. But it was riddled with missing links, missing info, and bizarre propaganda (e.g. implying Android is “bad” because it supports standards like Java, whereas J2ME is “good” because … it doesn’t)

At this point, I (temporarily) gave up. I’d like to re-visit this in the New Year, but right now I don’t have a Windows machine with me (I’ve only got my Apple laptop). Android will let me write code on my laptop, then jump straight to my desktop once I’m back at work.

Of course, Apple only “allows” you to work on non-Windows machines – but they are the market-leader, they can get away with this (evil though it is!). IMHO, Android and Nokia/Ovi cannot.

I’m surprised and disappointed that Nokia has so little apparent interest in pulling-in wayward iPhone devs. If it were me, I’d have thrown up a massive, colourful, front-page picture saying: “iPhone developer? Fed up with Submission? Want to sell your apps to 1 billion people? Click here!” … or similar.

Given how painful Apple’s app-submission process is, there are plenty of iPhone devs looking for alternatives.

With Android, you can go straight from iPhone dev to Android dev. There’s a simple website dedicated to new developers (with some serious flaws and missing pages in the docs, but the experience is otherwise good). Nokia’s setup by contrast seems like they’re not really trying (yet).

Categories
games design security

OS X: You don’t have permission to read your own files

Removing words isn’t always the best route to UX design. Here’s an example (that just bit me) of Apple’s obsession with “remove words, look pretty” making their systems/applications unusable:

“Copying 3,000 files…”
“STOP! One or more of these files you don’t have permission to read. Stop, Retry, Continue?”

Which one, Apple? (it turns out that there were precisely 2 files affected, out of the 3,000+ – although Apple wouldn’t share this info, I had to calculate it after the fact)

Oh, I see. You won’t tell me. I’m supposed to go and do “cmd-i” on every single file, until I find the one where OS X has incorrectly set the file permissions. (NB: selecting everything and trying to do a mass permission set … doesn’t change anything).

The cheap alternative design, as used by normal developers, would have been to give the names of the files. Apple won’t do that – maybe because it would clutter their “pretty” user-interface?

What caused this?

Severe bugs in OS X’s handling of “downloading files from the internet” and/or “receiving files via email”.

In a move reminiscent of the worst days of Microsoft, Apple assumes that you only have one computer, and that the internet doesn’t exist. If you transfer a file from one computer to another – even just download it from a website – then Apple will try and enforce the file permissions from the original computer.

Just to be clear, there is NO security benefit to this: the moment you sent the file over the internet, all security permissions were effectively faked/deleted/nullified anyway.

In this case, simply because the file was authored on a different OS X computer, Apple took away all permissions, marking the file “Top Secret” (only visible to one user on my computer – can’t even copy it over the network). Stupid.

Categories
Uncategorized

Natural Keyboards – don’t exist any more?

EDIT: no results on shopping sites, no results on Amazon … until someone told me to search for “keyboard 5000” or “keyboard 6000” – and suddenly appears this thing of awesome beauty: small, light, and Bluetooth!

I can’t find them. All I can find is a MONSTROUS thing from Microsoft that weighs a tonne. Nothing from the other manufacturers (!). And the MS one sadly is no use with a laptop :(.

A standard keyboard is very bad for your wrists. At the small end of the scale: discomfort, cramp, and bad posture. At the nasty end: RSI, long-term back/neck damage, tendonitis, etc.

So why is it that you can no longer buy the so called “natural” keyboards? They’re split down the centre, and/or curved, so that your wrists are at a normal angle that reduces strain and improves posture.

In Brighton, the shops I tried (from major high-street chains down to specialist independent computer shops) that sell 5-10 different keyboards each … claimed they had never even heard of / seen such a thing, and several salespeople suggested they’re a figment of my imagination! Yikes.

I’ve still got a couple of these keyboards, but I always bought PS2 ones, sometimes buying 2nd hand (when Microsoft stopped manufacturing them) so that I’d have an extra USB socket free.

Now I’ve got laptops with USB slots, but no PS2 … argh!

Categories
amusing Web 0.1

Wikia.com’s Uberfuzzy: you idiot

I just tried to create a free wiki on Wikia, to help the developer commuity with Entity Systems. This has no benefit to me, it’s purely for other people. I figured a system like Wikia would welcome such a wiki.

Wikia hasn’t yet implemented any of the common username systems, and won’t let you look at the Wiki to see if it supports the features you need … until AFTER you’ve given them your email address.

So I chose a username containing the text “get open ID”, as a quiet form of protest.

Oh. Crap. Wikia has now enacted a permanent block (their wording) – I cannot create any wikis, I cannot signup under a different username, I’m just blocked.

Wikia has a special page to tell me the name of the person who did this:

http://community.wikia.com/wiki/User:Uberfuzzy

Wikia then tells me to “contact them”.

Only … that person:

“has chosen not to receive e-mail from other users.”

Oh. The only way you’re allowed to contact them … is by creating an account. But Uberfuzzy has banned me from creating accounts.

Indeed, if you click the link to contact Uberfuzzy within the system, you get the text:

You do not have permission to [contact Uberfuzzy]…
…The block was made by Uberfuzzy…
…You can contact Uberfuzzy or another Administrator to discuss the block.

Sometimes the ability of otherwise intelligent people to be so incredibly stupid makes me want to weep :).

Categories
games industry games publishing iphone

Gamers play on iPhone instead of hand-held consoles

Even if you own a Nintendo DS or a Sony PlayStationPortable, there’s a high chance you’re playing games on your phone instead:

“27.2% of consumers who indicate that they play games on their phones only (and not on the DS/PSP) actually own a DS or PSP, but do not actively use the device(s).”

Admittedly, it’s a terrible, amateurish statistic – it’s missing the REAL stats that we need to corroborate the concept – but the report is pay-for, so I can’t look that up.

Still, assuming the report isn’t woelfully misrepresented, it’s a seriously big proportion who own yet have given up on their Nintendos and Sonys. Now compare that with all the people who haven’t forked out the hundreds-of-dollars to buy one yet: how much harder is it going to be to grab them?

Snapshot: But… is it worth publishing on iPhone?

Are there enough consumers purchasing games on iPhone to make it worth it?

(NB: this is an ultra-quick analysis, based on the various stats and info I’ve read recently – if you want references you’ll have to pay someone, or google it all yourself)

As of Dec 2010, approx:

  1. 140m DS
  2. 60m PSP
  3. 120m iPhones
  4. …approx 20m-40m iPhones “owned by under 30s” (many competing guesses in this area)

Given that iPhone has two of the top 5 slots on children’s Xmas wishlists (once as iPhone, once as iPod Touch), I’d feel confident in saying that iPhone has already overtaken PSP’s installed userbase.

Of course, iPhone app price is approx 10 times less than PSP/DS game price. But … family spending tends to be fairly constant, developers get much higher revenue share on iPhone, and cross-promotion of your own games is spectacularly successful on iPhone.

So, assuming you develop more than one game, you should be getting the same or higher revenues on iPhone games. And yet the development costs are significantly lower than on DS/PSP.

Categories
games design programming

Have you made a Data/Entity System? Will you share source?

Making a trivial ES … is almost trivially easy, once you know how. But usually it’s too trivial to be used in anything except small indie projects, and nothing too real-time.

Making a production-quality one, including all the associated tools, suitable for a AAA game project … is a massive undertaking.

Somewhere in-between, I hope there’s a low-cost middle ground where some of you reading this blog would like to collaborate to make + publish complete, working, documented, OPEN SOURCE, Entity Systems.

Yes?

First questions (there will be more blog posts later):

  1. Do you have a fully working ES?
  2. Is it live in a game or app? (i.e. launched)
  3. Can you / will you / have you open-sourced it?

EDIT: there’s now a bunch of source examples here: http://entity-systems.wikidot.com/es-approaches

Categories
games design recruiting

XEOPlay is looking for an iPhone App Developer

Nicole Lazzaro’s XEO is looking for an iPhone developer (Bay Area/SF)

Contact: hr@xeodesign.com

If you don’t know who Nicole is, the design process for Tilt gives a good idea. She’s well known for her work on studying emotional reactions in people playing games (and designing appropriately):

How we created Tilt

XEODesign’s interviews of people waiting to buy their iPhones finds that much of the success of the Apple iPhone comes from unique attibutes of its emotion profile, especially social emotions. To demonstate the practical application of XEODesign’s approach we used this research to make a game called Tilt that creates a player experience (PX) that feels like a natural extension of the iPhone because the game mechanic builds on the same emotion profile. Read Nicole’s Fast Company interview on designing the emotions for Tilt.

iPhone App Developer
+ Take ownership of the development, maintenance of the project’s code.
+ Collaborate with designers, artists, researchers, and QA to create the best experience in the time and budget constraints
+ Passion for good UI design and maximizing the fun factor
+ Enthusiasm for incorporating feedback from player testing to increase engagement
+ Strong initiative to tackle big problems with global impact

We find resumes a bit dry, but love to play games you have already built or worked on. Include App Store Links, URLs, and titles.

Categories
computer games games industry security

I almost paid for Civilization 5, but Steam prevents me

Today, I *almost* bought Civilization 5. The temptation was strong…

…but they still won’t allow me to buy it. You go into a shop, and spend money, and they tell you you’re a pirate, that you’re a thief, and that unless you create a Steam account and connect the internet to your PC, you “won’t be allowed” to play the game you’ve just paid for.

Over Xmas, I think I’ll pirate it instead. Since they won’t let me buy it legitimately.

(for the record, *if* I pirate it, I will also go into a shop and buy the useless £50 box of plastic and DVD. I’ll do the morally right thing, despite their attempts to stop me)

For the apologists

I’ve often spoken in public about anti-piracy measures for games. My conclusion was to include online-only content that you needed to be authenticated for.

This is a single-player, offline game. There is literally no reason to make it “Steam required” – every offline player will get no benefit, and will be better off pirating it. This is (yet again) mindless stupidity from a games company (probably the publisher).

Categories
Uncategorized

Walk gently upon this earth

Walk gently upon this earth
For we are but passing through
In our eyes the pains of life
And in our hearts true love

But all it is to be
Is covered in a signal phrase:
The meeting in ice and fire
Of what we are and what others request

Take this branch and run
Every breath one with haste
So that at the end you might say
“I have no regrets…”

Categories
iphone programming

Nokia N8: doesn’t connect to computers

This week, I won a Nokia N8 at a game of pool (She Rides!).

If you plug it in to a Mac, do you get:

  1. Access to your photos? NO! (no support for the USB standard for data-devices)
  2. Access to your calendar? NO! (this is a tough one; sadly, the world today has no standards for calendars :( :( :( … but it ought to do *something*?)
  3. Anything at all? NO!

*IF* you’re technically minded…

Google is your friend. You discover the “iSync” application.

Apple’s App sucks, but even when you download and install the Nokia plugin, it tells you that the Nokia N8 is “unsupported”.

Googling, some people find that it is “supported” the very first time you run the iSync app – and never works afterwards.

I had the opposite experience: it was “not supported” the very first time I ran the iSync app – and seems to work fine on all subsequent runs.

And even after all that…

…it doesn’t allow you to sync photos. Only address book and calendar. The photos you take with the fancy 12 MP camera are doomed to stay inside your phone forever, it seems.

This feels like ten years ago. Some people worship iTunes (hard to believe, given how terrible the user-experience is), but experiences like this remind me why: it’s because the alternatives managed to be even worse :).

Categories
amusing

Wikileaks…Chinese style :)

Via Mark Suster (@msuster):

If China’s cables reporting their ambassador’s comments about US were on Wikileaks here’s what it would say http://nyti.ms/dPURse