Categories
community server admin web 2.0

Low-cost publishing = easy-to-kill content

One great achievement of the web is the huge reduction in barriers to publishing. But the flipside is that we now see extremely low incentives for publishers to keep content “live”. Back when it cost money to publish info, you had good reasons to *keep* your content live once it had been published; you had a revenue stream to protect.

Nowadays, with publishing costing nothing, it’s often un-monetized. All it takes is the slightest increase in hassle for the publisher, and they’re better off killing the content entirely.

That’s the case with a site I just shut down. A small, incomplete – yet moderately valuable – resource for iPhone Developers, with a few thousand unique visitors a month. Too small to be worth monetizing, so I hadn’t. I was eating the (very small) hosting and support costs, until someone abused the site, and those “support costs” became non-trivial.

iPhoneDevelopmentFAQ – history

I created this site at the start of 2009, because there was no good FAQ for iPhone Development (AFAIAA there still isn’t; even today, the nearest you can get is StackOverflow. SO is great, but … a lot of subjects are “forbidden” under the site terms, and the site-search is very weak).

I set it up to be low maintenance, and to allow multiple people to moderate it (very similar lines to SO, but slightly less open, and a lot more “niche”).

In the past two weeks, after more than a year of “no active moderation”, we saw forged posting credentials and then pointless offensive questions. First rule of running a passive website: leave it configured to report (surreptitiously) on all unusual activity, so you can see if it gets out of hand / abused / attacked / etc.

Options

Deleting offensive content requires only a couple of minutes (to remember the password, login, and hit delete).

Checking what happened with the forged credential (probably unrelated) is more like half a day to a couple of days. I could audit the code, audit whatever 3rd-party PHP libraries were being referenced, and almost certainly plug the hole (or holes).

Or … I could do what I actually did: two lines of typing, and Apache kills the site. In a way, it’s a bit sad – it had background traffic of a few thousand uniques a month – and the whole thing is now gone.

The fragility of niche interests

At the end of the day, I get *zero benefit* from this site. I pay a tiny amount for the web-hosting and the domain-hosting, so it’s almost free, and I’m happy to leave it running for the benefit of the thousands of visitors each month.

But if it’s going to start costing me hundreds (or thousands) of dollars in lost time when I would otherwise have been doing paid contract work (every hour not working is an hour’s salary lost) … then the balance switches and (as in this case) I’m obviously going to kill the site.

I expect that the people who abused the site were just being thoughtless, and probably wouldn’t have ever gone back anyway. But I can’t afford the time to make sure.

Ultimately: Who has the time for this? A handful of callous acts just killed a repository of info.

Categories
amusing games design

3D gaming? What if…

So neatly done, I find it hard to believe it’s not real

“3D gaming? What if the game characters saw the GAMER in 3D instead of the other way around? Is it really only myself that thinks like this?”

(along with other greats such as: “A good game can be played on a 12″ black and white TV. Fact.” … and “What do all games require? The answer is someone to play them. What if a game went against that very concept?”)

Categories
fixing your desktop

Thunderbird 3 critical bugs: IMAP folders

Why couldn’t I stop thunderbird from downloading 2GB of files that it is absolutely not supposed to download in the first place?

Ah, well, it turns out … there’s a bug in the basic “include folder for offline” GUI, whereby it is COMPLETELY IGNORED for certain folders. One of those folders being … the magic “All Mail” folder in Gmail.

Instead, you must use a *different* part of the TB GUI to kick the damn stupid software into doing things properly in the first place:

“Right click on the account in the Folder pane, and click on Subscribe..
You can then tick or un-tick the subscribe box for each folder.
Click on OK when you’ve finished.”

This seems to work, having just tried it. Although … I also went into my profile and manually deleted the monstrous All Mail file – but before I did the above hack, TB (dis)loyally would immediately start redownloading that folder each time you started it up. Now it merely downloads the headers (at least that’s counted in MB, not GB). Now you can have your email client, with about 4 pages of manual hacks, work as … a basic IMAP email client.

Picture 140

Categories
Uncategorized

if youre waiting for me right now…

…I’m really.Sorry, just very very busy right.now!

Welcoming some new people to Red.Glasses (my iPhone development / agency company), and lots of projects all happening at once.

Given how many people I see out of work, I’m delighted to.be bucking the trend, but until.our new people get.up.to.speed, its a bit too much, and I’m looking forward to things calming down a bit.

PS: typos due to the nexus one and its broken touch sensor and badly designed keyboard. Don’t have time to get to a PC to.post: )

Categories
recruiting

Rejected by, and Rejecting, Google

I’m doing some pretty cool stuff at the moment – I’m not looking for a job – but a few months ago I got emailed by three different Google recruiters, inviting me to apply for three (different) specific jobs, in different parts of the company, almost all at the same time. 2 were in London, 1 was in Zurich.

(I guess that all departments were given the go-ahead to increase head-count at the same time – hence hearing from 3 people at once. They didn’t co-ordinate, either – at least one of the recruiters failed to notice that I was already being interviewed, and asked in her opening email: “would you consider working at Google?”, the day before my scheduled interview with a different department :))

I took advice from current and ex Googlers – I wasn’t looking for a job at the time – and they gave estimates of up to 3-6 months to complete the process, so I might as well go ahead and see what happened.

I had an excellent first-round interview. I have the written feedback here (which Google point-blank refused to let me have, until I served a legal notice on them, and forced them to pony-up … more on that later):

Adam is probably the most interesting, experienced, and “Googley” candidate I have ever interviewed. I am excited about the mere possibility of him joining Google: he would bring entrepreneurship, product design acumen, incredible passion for technology, experience at a big influence, and other critical skills.

Yeah, it’s way over the top, and hard to believe. I quote it here for reference against what happened next…

I had four second-round interviews, back to back, starting at mid-morning, and carrying on through the afternoon with no break for lunch. By the end, I’d not eaten in 8 hours (why no lunch? Ask the Google recruiters; they never gave me an apology or explanation). I’d caught an infection the day before, and felt like crap throughout. The interviews went from poor to terrible, and overall it was a disaster; a rejection soon followed. (NB: with hindsight, even had I been compos mentis, there’s a good chance I’d have been rejected – I’m not blaming the rejection on this)

It was immediately followed by another request from one of the other recruiters re-inviting me to their job instead – including attached paperwork to progress the application.

There were a handful of small but mildly offensive – mostly passive-aggressive – actions by Google staff along the way. Overall I was shocked, I felt that the way I was treated was poor. I was also concerned about the process itself. They admitted they had detailed feedback on my rejection, but refused to divulge any of it (legally, they had to; I forced them to pony-up). I decided to wait for the legal process to complete, and for me to get the feedback, before making any further decisions.

Once I’d read through the 12 pages of feedback, I wrote back with this:

Thanks, [name removed].

After my experience in the 2nd-round interviews, and reading the detailed feedback from the Google interviewers, I’ve realised I’m not suitable to work at Google right now.

The role-specific things were fine, but I did terribly in the 2nd-round. Reading the feedback, it seems you want a certain type of person, and that doesn’t seem like me.

Also, it’s not the company I thought it was. I want to work at companies which live and breathe an open culture, and that was part of my attraction to Google, but the reality is very different from the public image.

Thanks,
Adam

(UPDATE: it’s been more than a month now. Just so you know – I never got a response. Maybe there’s now a great big “DO NOT HIRE” mark on my file ;))

I forwarded the detailed Google feedback to a handful friends and ex-colleagues, and it’s been food for some interesting discussions so far. One ex-Googler confirmed that I was rejected by not just one, but all four, of the second-round interviewers. A dubious honour, perhaps? :)

A couple of people have remarked that Google USA differs substantially on at least some of the key issues that came up.

One thing’s for sure, though: I would certainly not want to work for Google Europe right now. They and I seem to disagree on some fairly basic issues of work and people. Neither is right, nor wrong. But I – personally – just don’t want to work at a company that works like that. So … mutual rejection! :) I’m certainly not following-up with any other Google jobs.

Unfortunately, the whole experience left me quite shaken: I’d been using Google as a shining example of various recruitment and employment practices, at least some of which I now know to be untrue. Maybe Google used to act better, but they certainly don’t today – I know this first-hand. I’m hugely disappointed.

I apologise to anyone I’ve accidentally deceived over the years. I’m also wondering what other examples of humane and open companies I can use instead – I’m no longer confident in citing Google. I’ve seen a few come up on VentureHacks twitter feed/blog-posts (awesome resource that VH is).

Categories
games design

Judging Game Ideas: Galaxy Trader

(if you haven’t read the main post explaining this, read this first)

Submission

  • Author: (tony.almazan at gmail.com)
  • Title: Galaxy Trader
  • Type: Casual mutliplayer Facebook game
  • Word count: 373 words
Categories
computer games design dev-process games design

Assasin’s Creed 2: Understatement of the Century

From the IGN walkthrough:

“If you have trouble grabbing the beam, just keep trying—we promise it works, but lots of readers have told us it’s not always easy.”

I’m a pretty good AC player, but after 10 minutes of trying to do that one standing jump, I gave up and stopped playing for a long time in frustration.

When game developers talk about “games should be so easy that all players can complete them; no-one should ever have to give up / fail to complete a game because something is too hard”, I usually disagree.

But in this instance, where the game is extremely, excessively difficult on something that the designer obviously intended to be extremely simple – and where the player has spent hours being taught that this will be easy – you have something different going on. It’s a failure of the control scheme; in fact, it’s a bug.

It’s a side-effect of the heuristics that AC uses to decide “what the player is trying to do” – heuristics that are far from perfect, while being very good.

In the first game, it took me a long time to get past the intro – no, really – because if you *try* to jump over gaps, then you fail. The heuristics were so heavily weighted towards “allowing” you to jump off buildings that running over a small gap became very difficult – until you learnt that the character “automatically” jumps small distances.

On the whole, I’m very impressed by the AC2 heuristics – compare it to Mirror’s Edge (a beautiful game, but feels a lot less fluid). I find them a bit too simplistic – I would love another 25% or so of user-control, and another 50% of precision on directional control – but (as ME shows) they got closer to perfect than any other game so far.

BUT … what do you do about a bug like this, one severe enough to make me stop playing the game entirely?

They had a huge QA team already (this is Ubisoft, after all), and such a vast amount of content in this game (multiple entire cities, modelled in fine detail), that there’s no way they could be sure to catch this bug.

Or is there?

This is the raison d’etre for a whole segment of in-game analytics / metrics: data-mining to discover undiscovered bugs.

Good metrics for game designers are VERY hard to describe, and IME the vast majority of the industry doesn’t know how to carefully hand-pick the few numbers they really need out of the millions of stats availalbe. Here’s a good example of how to pick well.

If the game reported

“the quest-point at which people stopped playing”

…then you *might* discover this bug. But it’s too coarse-grained.

If the game reported either/both:

“the segment on the map where people stopped playing”
“the segment on the map where people spent most-time during a mission”

…then you’d quickly and easily discover this bug. By “segment” I mean, essentially, a small patch of polygons approximately 6’x6′. This is relatively easy to measure algorithmically using greedy-polygon grabbing and hashing – although it would take a little care to make sure the measurement of the value didn’t take much CPU time (it could easily be pre-compiled for any given map, of course).

I’m not 100% of the “stopped playing” part – this is a console game, and while that info would be useful, it would mostly stop evenly distributed over quest-end points. Where it was more / less likely, it would be obvious just from knowledge of the story. ALTHOUGH: still well worth doing *in case* there were anomalies there – that should set off alarm bells.

However, the “spent most time during a mission” is more cut-and-dried.

This probe gives you a set of local maxima. It’s categoriesed by mission, making it one level finer than doing it over the entire world-map (which is too much, too uncategorised info), and it’s also coarse enough to correlate closely with user-behaviour (it merges results mission-by-mission; recurring bugs are very likely to show up by people doing the same mission and getting stuck at the same point).

The mission-based merge of results also has a nice side-effect: it tends to iron-out any anomalous results due to people wandering around the open-world game.

So. With a little bit of probing, using probes that you could/should have invented at the start of development (i.e. without knowledge of exact bugs that would occur) this bug could be ironed out. The three remaining questions are:

  1. does Ubisoft do this level of automated-bug-detection,
  2. do their designers bother to look at the anomaly-date,
  3. and if so … why hasn’t the game been patched?
Categories
fixing your desktop

Thunderbird 3: fixing the fonts

The font-settings in ThunderBird are terrible: the default settings are ugly, and the GUI is too broken to let you change them. Fortunately, if you hand-edit the config files, you *can* change the fonts, as much as you like.

Sadly, the options etc are undocumented, and easy to get wrong. Incidentally, not only does TB have *no* help or documentation (why not?), if you go to the online “knowledge base” and search for something fairly obvious like “fonts”, you get nothing – not even the usual 3-years-out-of-date result that’s normal for this app:

Picture 131

For future reference, here’s how I made my fonts go from “ugly” to “delightful”.

Changing fonts in Thunderbird 3 – theory

For reference, in case TB fixes their fonts in future, here’s what you’re supposed to do, but doesn’t quite work yet:

  1. Go to settings
  2. Go to Display tab
  3. Click on the Advanced button in the Fonts section
  4. Configure font options, per-language

In reality, here’s what happens

  1. “Western” languages (Europe, USA, etc) in TB often do not use the “Western” font settings
  2. …rather, they use the “unicode” font settings
  3. …which aren’t available in the TB GUI
  4. …and they don’t always use them as expected

Changing fonts in Thunderbird 3 – practice

There are a couple of things that DO work, and which you need to set anyway, so:

  1. go to Setttings -> Display tab -> font-settings -> “advanced” button
  2. Choose Serif or Sans-Serif (bizarrely, this is a GLOBAL setting, even though the GUI claims it is a LOCAL setting) – this will affect all other font choices
  3. *try* setting the font-sizes, I think it sets global defaults (but … looking through the config file, those “defaults” appear to be over-ridden in most places … by default)

NB: TB is … confused … when it comes to font choice. The obvious way to make a desktop app is to ask the user “which font do you want to use in place X?” (where X = “email body”, “compose window”, “menu items”, “dialogs”, etc). Windows has been doing this for more than 15 years. TB instead arbitrarily declares different parts of the app as “Proportional” or “Monospaced” or some combination of the two. Even if you tell it not to use monospaced in certain places, it mostly ignores you. It doesn’t tell you which is which, and it’s not documented, you have to work it out by trial and error.

Edit the master config file:

  1. go to Setttings -> Advanced tab -> General -> “Config Editor” button
    • NB: another bug in the GUI – that button appears to be some local setting; it’s not, its the most important part of all the “Advanced tab” settings; I’ve no idea why they hide it like this
  2. use a filter of either “.serif” (sic) or “sans-serif” depending on which fonts you want your TB to use
    • (I think you’re nuts if you use anything but sans for email, but it’s a personal choice)
  3. The two you need to set for “email bodies” are:
    • font.name.sans-serif.x-unicode
    • font.name.sans-serif.x-western
  4. The two you need to set for “GUI dialogs” are:
    • font.name-list.sans-serif.x-unicode
    • font.name-list.sans-serif.x-western
  5. The *one* you need to set (but could also set in the main GUI) is:
    • font.default.x-western

(I’m still using TB 3; I need a desktop client at the moment, and I find myself still using it. TB 3.0.4 seems to run well on OS X. It’s fast enough and with little enough RAM that it’s easy to leave running and forget about it; earlier versions of TB on OS X would kill your Mac, and had to be force-quit frequently. With this version, I keep forgetting I’ve got it running, until it sends out a Growl…)

Categories
Uncategorized

GameDev.net gone from internet?

Oh dear. Did someone ignore their “please renew your domain” warnings?

Picture 128