Categories
programming server admin

ImageMagick followup: they’re not going to fix it

Response from ImageMagick folks, when I asked them to either re-instate the working binaries, … or stop building as Lion-only:

“We only host and maintain current versions of ImageMagick on one OS
release level. We have a small development team and do not have the
time to support multiple releases and multiple OS levels. The fix is to
download the MacPorts version of ImageMagick which runs under Leopard.
Another solution would be to donate a Mac with Leopard installed so we
can create binaries. We only have one Mac and it hosts Lion.”

Fine – it’s their software, they can do whatever they want. And I think they’ve done a great thing over the years by sharing this command-line tool with the world.

Except … their alternatives aren’t as reasonable as they sound.

Firstly, MacPorts is incredibly difficult to use (even as a former sysadmin and programmer, I find it painful). Simply put: I know it will take me at least a day to get that working, possibly several.

Secondly, deliberately deleting their own working software, and replacing it with non-working software, is deeply irresponsible. If this is how they approach the overall product, how long before you get “caught out” as a user when they pull some other rug out from under you? “Using ImageMagick today? Well – get it while you can, because tomorrow, they might arbitrarily delete it.” (this is what just happened to me: in the space of a few weeks, the first version I downloaded was deleted and replaced with a knowingly-broken version. My backup copy got corrupted, and I thought I could re-download from the web – nope!)

Asking them about this, they pointed out that the version from a few weeks ago had a bug which was a potential security hole. Fine, so they should discourage people from using it – but that doesn’t excuse *deleting* it, and providing only upgrade paths that are painful or expensive (Lion is not free).

It pains me to say this – as noted above, I think the IM product has been a great thing – but I have to conclude:

Don’t use ImageMagick. Just when you need it, it’s liable to let you down.

As for me, I see no other choice but to give Adobe more money, buying a more expensive copy of Photoshop that I don’t really need. I can’t afford to waste days fiddling around with MacPorts – and not even be guaranteed of success. I just need to do one, tiny, simple operation (an image resize!), but unless I can find a kind person who’s got an archived copy of ImageMagick, it’s not going to happen :(.

Oh, well.

Categories
programming server admin system architecture

ImageMagick: no longer runs on OS X, except Lion

The IM maintainers seem to be taking a leaf out of Apple’s book: if you don’t purchase the latest Apple OS upgrade (that most people don’t need), you can no longer use their software.

If you follow their 4-line install instructions, you’ll get:

dyld: Library not loaded: /usr/X11/lib/libpng15.15.dylib
Referenced from: …. /ImageMagick-6.7.2/bin/convert
Reason: image not found

…because that precise version of that library isn’t included in OS X generally, it’s only part of Lion, and it’s not included with ImageMagick – and ImageMagick for some reason has been compiled to refuse to run with anything except that precise version. Why? no explanation of this on the download page. I assume it’s just someone wasn’t paying attention, and went and linked a specific library. If so, it’s very frustrating that a simple noob mistake has just locked out anyone who’s not running Lion. Sigh.

Yes – I could go and download the source, and debug it, and fix it myself, because it’s Open Source. But if I’m going to consider that, then it would be cheaper to:

  1. Buy a new Mac
  2. Buy an extra copy of Photoshop
  3. Buy lots of RAM
  4. Throw away IM

And what about if I were running this on a server (which, after all, is what IM is really here for)? Basically, I’d just be screwed :(. Unless I was happy building from source, with all the pain and suffering that entails.

Overall, it gives me the strong feeling: stop using ImageMagick. It’s too risky. Which is very sad, because in the past it’s been very popular in some (server) teams I’ve worked on, where it helped us do lots of great things (and, IIRC, some of the people I worked with contributed some small minor fixes back to IM. Although this was so long ago I might be imagining that).

Categories
fixing your desktop

Did Google+ break gmail?

One of the features of Gmail that I’ve long relied upon is the:

“Default: Reply to all, instead of Reply”

In 95% of cases, this is correct – it’s only rarely that you want to actively remove everyone else from the conversation.

…but this stopped working shortly after Google+ came out. Coincidence? I’m not sure.

Certainly, it’s caused MASSES of problems – people being dropped from email conversations, with associated obvious problems e.g. not hearing that a meeting’s been re-arranged.

I’ve bug-reported it to Google, but going on previous experience, there will be just silence.

Categories
computer games games design

Alarm bells for Game Design failure: “evolving” someone else’s IP

There’s a new Syndicate game in development. After one of the most facepalm moments in game design – taking a unique game-genre and replacing it with an FPS, at a time when FPS market is massively over-saturated – the studio has gone one further:

“we’re taking the Persuadatron and evolving it”

It’s always possible that they’re going to make it better. On the balance of probability, that’s unlikely.

Even leaving aside the amazing decision to remove the single most important feature of the original IP – the genre itself. NB: this has been tried before: Syndicate Wars changed the core gameplay, and was a commercial failure (given the previous sales of the IP).

Sadly, it seems that in press conversations, “evolving” is often short-hand for “putting our own “stamp” on it, by changing it; it’s the change that matters, not the improvement. We MUST be able to claim this is “our” game, and not the original designers'”.

Often, it seems the thought process has gone something like this:

“the original idea was unique. At our studio, we don’t have many unique ideas – so we’re CERTAINLY not going to let anyone see how weak they are when contrasted with the genuinely strong ones in the IP we’ve just taken over.

Our cunning plan is to remove all the unique, innovative aspects of the IP, and replace them with dumbed-down, crappier mechanics that we thought up ourselves. But stick the original name on the new mechanics.

This way:

  1. we won’t be made to look stupid by our own game
  2. google searches will turn up YouTube videos of our scuppered mechanic, and people hearing “X was a great idea” will look at it and go: “Hmm. Not really”, without realising they’re looking at the scuppered version

(I’ve worked on two teams that tried to get approval for re-making Syndicate (not Wars!) over the years; I’m a big fan of the original, and still occasionally play it on an emulator. It’s amazing how much people want to over-complicate it – somehow forgetting that the original studio (Bullfrog) was reknowned for it’s quirky/bizarre/unusually inventive game designs, and that they’ll have a lot to live up to if they want to “extend” that)

RPS says it best:

designer Rickard Johansson: “I don’t want people to stop playing the old games, but time has moved on.”

Has it? Has it really? Perhaps he didn’t notice that Starcraft 2 outsold most of EA’s (and everyone else’s) portfolio last year. Perhaps he didn’t notice that SEGA refer to Total War as one of the major jewels in their crown. Perhaps he didn’t notice that Valve are spending a fortune on a DOTA remake. Perhaps what he really means is ‘publishers will give us a bigger development and marketing budget if we make it a first-person shooter.’

Categories
amusing games industry

Side effects of treating everyone with suspicion

Today I was forwarded what looked like an interesting little event: “The Gamification of Everything”. I applied. Or … tried to.

The process on all event websites today is:

  1. Type in your name
  2. Type in your email address
  3. Click “attend”

3 steps.

This event has a process with … 15 steps (!).

The website claimed to have registered me for the event.

Your registration is cancelled

And then, after all that, they emailed me to say they weren’t accepting my request to attend, apparently because I didn’t give them an acceptable company name (I put “n/a” in the field, as I was attending as a private individual):

I noticed that you’ve signed onto our website and want to register for the next Convergence Conversation meeting , but you don‘t say which organisation you represent nor where you are based. But you are the ‘founder’ of what?! I would appreciate more information please – if you are self-employed I can use your name as the organisation.

Maybe you were in a hurry – but as I’m sure you will understand. we like to know who the attendees are, the field of work they come from/represent.

The price of suspicion

To be clear: I signed up for their event, and the website accepted it. I put it in my diary. Then they contact me acknowledging that I “wanted to register”.

What? No: I *did* register.

Will I find myself turned away at the door when I turn up on the day? WTF?

Thanks, but no thanks:

“I’m not going to risk turning up to an event and being turned away on
the door. Just the thought of that is unpleasant. Feel free to delete
my application. I’m sorry to say that I won’t be coming ”

It amazes me how many people seem unaware of the effect it has on others when they pre-suppose guilt and nefarious motives. I mean … what on earth did they imagine I was going to do? Burst in and scream:

“Death to the infidel Gamifiers! Gamification is the scourge of mankind!”

…and start knocking over tables?

PS: that 15-step signup in full

The process for this event is:

  1. click signup
  2. type in
    1. name – WARNING: YOU MUST GIVE US YOUR REAL NAME, AS PER OUR TERMS AND CONDITIONS
    2. email
    3. where you live
    4. the company where you work
    5. the city where your company’s office is situated
    6. the *postcode* of your company
    7. the *country* of your company (yes, really – these are all required fields, form won’t submit without them!)
    8. your job title
    9. …some other bits I’ve already forgotten
  3. wait for a confirmation email
  4. click the confirm email link
  5. wait for a password email
  6. login to the website using the new password (most sites at least auto-login at this point; not this one)
  7. return to the event page
  8. click the “I’m attending” button
Categories
android fixing your desktop funny Google? Doh! iphone

Google Street-View on iPhone: a lesson in UX design

Today I finally discovered that the iPhone has StreetView.

That means it’s only taken me THREE YEARS to find this secret feature that Google has worked very hard to make sure no-one ever uses.

The best bit? The top two Google results for “iPhone Streetview” were both incorrect, and useless – but claimed to “solve” the problem (one of them was a Yahoo answer, the other a blog).

Eventually, courtesy of this amusingly-titled (yet poor in terms of Google hits) blog post, I found the solution:

  1. There MUST be a pin on screen – either because:
    1. you did a search for a place, and Google has found it and created a pin
    2. you tapped the curled paper in bottom right, then pressed the “drop a pin” button (incidentally: instead of letting you “drop a pin”, that button arbitrarily sticks a non-moveable pin in the center of the (now-hidden) screen. Terrible UX and GUI design. Google’s designers: what were you thinking?)
  2. The popup that’s attached to the pin has a standard button, and a standard icon – BUT THAT ICON IS NOT AN ICON
    1. …it’s an invisible button…

When we’re building iPhone apps for clients, this comes up typically once on every project: if you want to do custom user-interfaces, do NOT make them look like Apple standard interfaces. Apple has trained 200 million (total number of i* devices) to expect that (in this case: ) “a map-popup has exactly one button”. You are fighting against the work of one of the richest companies on the planet, a company famous for its marketing, interface-design, and visual-obsessions.

Worse is if you then go and break all the standards on what a “button” should look like, so that (in Google’s case), they:

  1. Put something in the place that is reserved for a non-clickable icon
  2. Used an icon-image instead of a button-image
  3. Provided no other ways of triggering the feature…even though this is usually NOT the place the user would want to click to get that feature

I laughed out loud when I discovered this – 3 years it’s taken me to get this to work, and me a professional iPhone developer too! How long is it taking the average “normal” user? If nothing else had convinced me Google is fundamentally f***ed by their refusal to design for anything other than “engineers who are exactly like us (and the rest of you plebs don’t matter)”, this would have nailed it for me.

Categories
entrepreneurship startup advice

Inside story on raising $24m funding, and working with VC’s

I believe this is the best post I’ve seen on startup funding since the creation of Venture Hacks:

Raising money for a startup is an inherently risky proposition. You step up to the plate knowing that the odds are slim and that, for every story of success on TechCrunch, there’s two hundred companies pounding the street, getting nowhere. We went the opposite route – letting investors come to us.

This is the story of that experience – being “pitched” by investors, the decision-making and negotiation processes and the end results.

Rand writes in detail the complete story of a major funding round for his startup, where other CEO’s are “too busy” or don’t have the balls to share publicly.

He talks about what happens when you “practice” things that leading-lights of the VC and Entrepreneur world have long been “preaching”.

He lays out a strategy popular with armchair entrepreneurs, and relates his experience of how it can go wrong.

This should be required reading for any serious Tech Entrepreneur / Startup team…

Categories
android entrepreneurship

Google: “A patent isn’t innovation. It’s the right to block someone else from innovating”

A delightful quote from Google.

Although equally, Florian Mueller has an interesting analysis on whetherGoogle really wants to kill patents – or just kill “patents which Google doesn’t already own”?

note that Google’s discussion of its intellectual property rights starts with patents. They could have started with copyright, trademarks and trade secrets, putting patents last. No, they put them first.

So are they against patents? It seems they like their own patents very much (including the absurd Google Doodle patent, which they spent ten years fighting for) and are only against other people’s and companies’ patents.

Based on their activity over the past 5 years, I’d say Florian’s view seems closer to the truth: as a corporation, they seem to be well aware of such things as patent law, but uninterested in doing anything about it until it suits them. That’s fine, but it makes people less interested in working with them when they later cry “foul!” … Google seems much like a fairweather friend, in reverse.

Categories
android computer games entity systems games design

LudumDare 21: Escape from the (Android) Pit

I couldn’t enter this LudumDare competition on a technicality, but here’s my entry which plays by the spirit of the rules. I took a total of 24 hours (out of 48), of which only 12 were actual design + development (see below). Hopefully next time I’ll be able to do it properly, and actually compete. I’ve kept to every rule, except that I did my 48 hours time-shifted :) from everyone else (two successive Sundays, instead of a contiguous Saturday + Sunday).

Screenshot + Android APK

Download link (APK – you need to know how to install APK’s manually (google it if you’re not sure, it only takes 5 seconds)):

Escape From the Pit

Aims

  1. Make a LudumDare entry as an Android application – none of this easy “make it in Flash” or “make it in java” stuff – let’s go for a full mobile game, designed, developed, and launched in exactly 2 days flat!
  2. Use an Entity System (c.f. my long-running series of articles, and also the public Wiki I created), and show that ES’s facilitate you writing new games VERY VERY QUICKLY
  3. Make a game that was mildly challenging and (almost) enjoyable

Failed to officially enter the competition, but otherwise succeeded…

Background

LudumDare challenges you to write an entire game in under 2 days (technically: 48 hours – it’s up to you how much of that you sleep). You can’t even design it in advance – there’s a theme that’s only decided shortly before the 48 hours starts.

LudumDare was the weekend before last – but I had to work that weekend on urgent day-job stuff. Like: I had to work all day Saturday, and there was no way out of it. So I couldn’t do the same 48-hour stint as everyone else.

Also, I know from previous experience that the “48 hours in one stretch” is very different from – say – “12 hours for 4 days”. When you do a 24 or 48 hour game, you tend to only manage a certain percent of “productive” hours. The challenge of designing + building something from scratch forces you to keep taking “time off” to go think about what do next.

So, I kept a diary of hours worked, and hours taken “off” as well. I’m confident I’d have fitted all of this – development time AND down-time – into the 48 hours. But I had to spread it over 2 successive weekends :(.

Day 1

(3 hours) – install Eclipse and the Android plugin, and the Android SDK. Document what I’ve done (1 hour) and check I can re-do it at will. Google, please wise-up and fix your install process – it’s not changed in almost 2 years, and it SUCKS

(1 hour) – install some extra Android OS versions, get the emulator working correctly, get projects imported, get everything in source-control, get empty app running on hardware device. Ready to start project!

— NB: everything up to this line I should have done before the contest started. If I were the kind of person that had free time on weekdays. Which sadly I’m not —

(1 hour) – getting Android base classes up and running. Takes a while: Android is insanely badly designed for the “Core application” part. Needs hundreds of lines of code to make a Hello World app that *actually* works as an app (Google’s code example that does it in 4 lines is fake: no real app could do that).

(3 hours) – on the beach, not working

(4 hours) – upgrading the open source Entity System Libraries on http://entitysystems.wikidot.com to support a bunch of features I’ve been using for a while in my own projects. This required writing a lot of stuff from scratch (using my own old source as inspiration), and integrating some improvements from patches/forks that other people had submitted.

— NB: everything up to this line I could have done before the contest started. Interesting though that I thought this was going to be “about to start writing the actual game” and I’ve only finally got to the point where I can write my first line of game-code —

Day 2

(0.5 hours): trying to make textures in Photoshop. Photoshop really sucks. Half the online resources for making the kinds of textures I want require PSP’s unique filters/effects – useless :(.

(0.5 hours): get a single sprite to appear on screen. A couple of idiot errors in one of my libraries – plus Google’s Eclipse plugin being really really bad at understanding “the scroll bar” (bug in ADT: it implements the world’s only non-static scrollbar)

(1 hour): random maze generation (using: http://en.wikipedia.org/wiki/Maze_generation_algorithm#Randomized_Prim.27s_algorithm ) that makes nice mazes, printing out onto the screen, still with my default “starfield” background. Rotating the screen is causing the entire game-state to be regenerated – includkng the maze – which was an accident, but actually helped A LOT with testing the maze algorithm (just tilt to re-run the algorithm instantly)

(0.5 hours): learn how to do Android input-handling correctly; en-route, discover I’m missing the SDK docs, and set about downloading + installing them … + updating my blog instructions on how to install Android to include “SDK docs” as a section.

(2.5 hours): discovering MAJOR bugs in Google’s basic “touch handling” API for Android – including bugs on Google’s own website source code, and an API designer on crack who broke the core Java contract didn’t document it. Not Happy.

Day 3

(1 hour) – implementing a collision detection system that does proper swept-collisions, but works OK with the poor fine-grained control of touch input

(1 hour) – added filters to collision detection so I could have background images that the player will NOT collide with
(previously was colliding with every on-screen rendered sprite). Also added a very simple lighting system where squares that the player has walked close to or upon gradually light up, showing how much has been explored

(1 hour) – refined the user-controls so you can hold your finger still and character keeps moving in that direction. Added handling in collision-detection system to allow character to slide along walls and into side-passages without the player having to stop and be ultra-precise (pixel perfect!) in timing the change of direction.

(0.5 hours) – added an exit, fixed bugs in the maze-generation (if started on a right or bottom edge, it crashed)

(1 hour) – fix Android’s brain-dead handlig of Bitmaps, giving a big speed boost, and re-learning how to use DDBS memory-allocation-tracking. I’m now auto-caching each bitmap inside my Sprite object. Sigh. There’s no easy workaround: Google says “don’t use getter methods” but Google also says “don’t call our getDrawable method more than once”.

(1 hour) – added ghosts, made them move around the map nicely, and collide with player was *automatic* on first compile (freebie from using an Entity System!). Also made arrows float nicely in same place on screen even while scrolling.

(1 hour) merge code from laptop back to desktop. Finally add the “win” conditions that makes the app playable!

Source Code

To make this game, I improved the basic Java Entity System up on the ES Wiki, and added some usability improvements and features. I created a whole new page for it here:

http://entity-systems.wikidot.com/rdbms-beta

NB: It’s called “Beta” simply meaning “second generation (beta == second letter of greek alphabet)”. Not because it’s a beta-quality release :).

Source code to the game itself is also up on github right now – https://github.com/adamgit/Game–Escape-from-the-Pit – although that’s a closed repository at the moment. I want to double-check there’s nothing included that shouldn’t be before I set it to “public”.

Categories
computer games games industry games publishing marketing and PR

MS XBox Europe: man puts elbow in own ear

…or at least tries to, when Chris Lewis comes out with quotes like this:

“you can be very confident we seek to maximise our own advantage to ensure the playing field is even, and certainly plays to our advantage”

Wait, what? An “even playing field” is one which “plays to [Microsoft’s] advantage” ? Hmm. Talk about a crushing sense of self-entitlement…

“we just want what our consumers want from us.

If [developers don’t give us free stuff which we don’t pay for], Microsoft reserves the right to not allow the content to be released on Xbox 360”

Wait, what? Are you saying that what “our consumers want” is to be prevented from playing the games they want to play (“Microsoft … not allow the content to be released”)?

I’ve seen a lot of bullsh*t over the years from weak-willed Marketing department employees who feel that “not saying a bad word about their boss’s / employer’s incompetence and greed” is the right way to do a job, but … this is especially bad.

I think Chris needs a bit more practice at the technique of:

“say what the person you’re trying to brown-nose wants you to say, no matter how much it makes you look like a pathetic, stupid, snivelling idiot”

Categories
entity systems

Entity System: RDBMS-Beta (a new example with source)

I’ve just added a new, improved Entity System design to the wiki. I’ve also created a github project for it where I’m about to check-in working source.

The only source I’ve provided is Java – but it’s an evolution upon the old “RDBMS with Code in Systems” type, that already has full source for Java and Objective-C – so you could easily upgrade the obj-c version to this new type (hint, hint).

What’s new?

Three major changes:

  1. Included a bunch of sensible java-specific improvements, based on the forks other people had done of the previous Java implementation
  2. Added a bunch of FANTASTICALLY USEFUL methods to the EntityManager – things you definitely need when writing a game
  3. Added a new concept: the Meta Entity

The first one is obvious, the second is obvious when you look at what’s added (e.g. a “removeComponent” method; why wasn’t it there originally? Solely because it wasn’t necessary to show “the simplest possible implementation”).

The interesting one is number three: the Meta Entity

What’s a MetaEntity?

A while back, in the first Java/Android ES I wrote about, I mentioned that I was using a fake Entity class.

I made a big fuss about how this was NOT being used to store any game data – but was instead an OOP trick to make it easier to write code.

Thinking about this later, I realised that there was really no need for that class to be named “Entity” – and calling it that ran the risk of tempting people into using OOP for their core data / components (Remember: Never do that!). Instead, looking back at a couple of example ES’s I’d written, I saw that every method – and all data – in this class was a “meta method”.

For the methods, you need to read the source AND the javadocs to see this.

For the data, it’s a lot more obvious: the only data that a MetaEntity has is:

  • The Entity itself (remember: that’s just an integer – or a UUID object in Java, which is a cleaner Java-specific way of handling it)
  • The EntityManager object which created this Entity, and which contains the Components for that Entity, and … basically provides all access to the data etc

i.e. if you pass around MetaEntity objects, you can feel safe that you know where they came from, where their components are, etc.

Because when you pass around raw Entity’s, they’re just an integer – which makes it easy to create an Entity in one EntityManager, then accidentally start using it in another EntityManager. Technically that’s illegal – but from a compiler perspective, it’s 100% legal … so you’ll get bizarre runtime bugs. Ouch.

Equally, the MetaEntity can contain a lot of single-argument and zero-argument versions of methods that exist in the EntityManager as 2-argument, or 1-argument methods. This greatly reduces typing, increases readability, and reduces opportunities for bugs. It may sound like a very small change (2 arguments dropping to 1), but I promise you: in practice, it makes a big difference.

Why not use MetaEntity’s all the time?

They’re very inefficient in how they use memory, and they throw away many (but not all) of the performance advantages of an ES.

For instance, because you’re moving from “integer + array of structs” to “linked-list of objects”, you’re making your game go from “cache friendly” to “cache poor”, and making your MINIMUM mem usage go from “tiny” to “small”.

In practice … if those differences matter to you, you’re probably writing a hardcore custom ES anyway.

More importantly: even in a “hardcore” ES, you don’t actually *need* that performance all the time. If you’re just pulling out a handful of Entities and their Components – e.g. a player Entity (of which there’s only 1 – or a few for multiplayer) – then the above performance differences are NON EXISTENT (vanishingly small).

…but the code is more readable, easier to maintain, and more robust.

So. I recommend using the MetaEntity for *all* your ES coding … until you reach a point where performance is low. Then look at re-coding *only* the affected loops / methods (remember: you can do this on a System-by-System basis; your code is nicely separated already!). That way, you get the best of both worlds.

However … the reason none of this was included in the first Java ES I posted onto the wiki – the ultra-simple “RDBMS-inspired with Code in Systems” – is that really this is all just gloss on top of an ES. You don’t need it. I believe it makes your ES easier to work with – but it distracts from the core theory.

I’d recommend you start with the simpler ES, and understand it, before moving onto something like this for your practical work.

For more info, check out the wikidot link at the top of this post – and try the github project linked from it (currently empty, until I do a check-in)

Did this post help you?

Support me on Patreon, writing about Entity Systems and sharing tech demos and code examples

Categories
fixing your desktop

Fix Eclipse’s fonts on OS X

Eclipse current version (3.7?) randomly chooses some of the fonts from the System Font settings – this strikes me as rather stupid: you are only “allowed” to customize 90% of the fonts.

Since OS X (10.6.7) still can’t render fonts correctly, when Eclipse grabs the system fonts, they’re often “wrong”.

In Eclipse, you can choose most of your fonts by hand, and choose the font size etc. Combining this with the fixes (1, 1) that force Apple to stop “blurring” every font, you can almost get a useable Eclipse on OS X.

Almost.

Because of the stupid design mistake I mentioned above, the Package Explorer font in Eclipse is “non-configurable”. You want to change it? Give up. Eclipse won’t allow you.

Options

If you’ve used my other fixes for OS X, you’ll have fonts rendering nicely – as long as they don’t get too small.

Eclipse is hard-coded to make the Package Explorer use a stupidly small font. You cannot fix this. It’s a bug in Eclipse that’s been around for a long long time.

On most platforms, this is fine – your system fonts can be resized.

Except on OS X, where the OS has such terrible font-support.

Because of these two bugs (OS X has bad fonts … Eclipse is hard-coded to use small fonts), if you “fix” your OS X fonts to work for most apps, they’ll be broken in Eclipse.

Disabling system-fonts in OS X

The nearest I’ve found is that you can force Eclipse to ignore the *some* of the system fonts, by editing this file:

[eclipse install folder]/configuration/config.ini

and adding the lines:

# Use system small fonts (Mac OS X only)
org.eclipse.swt.internal.carbon.smallFonts=false

Fixing the Log Output window

This one is relatively easy when you spot it: the ADT plugin ignores all the existing fonts in Eclipse, and sets it’s own unique font, for literally one panel only (the coloured log / console pane).

The official name for that pane is LogCat (incidentally, by default, Eclipse hides this pane – even though you absolutely need it while working with Android – you need to go to the Window/Show Perspectives menu and manually add it).

In the main settings for Eclipse … Android, there’s a section LogCat, where you can set the font. This doesn’t actually work – it’s got a bug, and will crash itself – but if you ignore the crash, and restart Eclipse, your changes will be honoured.

What would really be nice

…is if Eclipse added literally one option to their fonts dialog: an option to manually choose the “missing” hardcoded font. Then all would work great.

…or (much more unlikely), if Apple would fix their entire font-rendering system. Over the years, they’ve fiddled with it a few times. They *know* that it’s “technically correct for print-designers, but completely incorrect for many normal users” they *know* that users find it impossible to work with – but their solution so far is to keep removing features and options, and forcing all users to get a mediocre (or plain bad) experience. Hubris, I think.

Categories
android fixing your desktop programming

August 2011: Google’s install process for Android is still terrible

Following my own install-guide from Jan 2011 (because Google didn’t provide one at the time)…

  1. Google still doesn’t provide an install guide
  2. Eclipse is a *little* clearer on what to download – but only slightly
  3. Eclipse.app on Mac OS X is *still* broken
  4. ADT is still “hidden” by Google for no good reason (my install guide still works)
  5. Google still blocks you from downloading any “Android OS platform” (this is a core part of the SDK that is *not* included in the SDK – you need it to make Android apps)

(also, in passing, I updated the instructions to be a lot clearer / a bit more idiot-proof. I just used them to do a fresh install, and it went smoothly – with fewer problems than trying to use Google’s auto-installer)

EDIT: On the plus side:

  1. My install guide spared me waiting for an extra 0.5Gb of Android OS platforms to download (I was able to copy/paste them on the hard-drive, no extra install work needed. Just don’t use the installer!)
  2. ADT v 12 is noticeably more stable and better-integrated with the Android emulator – auto-starting smoothly where previous versions needed you to lead them through baby steps on first-run

Which means the key problem from a year ago still holds today:

Google is still effectively blocking you from using Source Control on Android projects

And they wonder why people still prefer the pain of working with Apple…

Categories
entrepreneurship startup advice

Great news: Cambridge (UK) startup sells for £7 billion

(that’s almost $12 billion)

This is a BIG DEAL, for the UK, and for Cambridge. Rory Cellan-Jones is moaning about how terrible it is (“looks like a sad day for British technology – and for Cambridge in particular”) – and I wanted to put across a very different perspective.

NB: this is just my personal view of how this affects small startups and entrepreneurs. I’m sure there’s much more detailed and smart analysis flying around the financial world, given how big the sums of money are here.

From ZDnet’s report:

“UK employees will get a total of £30m in share options. Founder and chief executive Mike Lynch will continue to lead Autonomy and, as the owner of 8.2 percent of the company’s shares, stands to make more than half a billion pounds off the deal.”

(incidentally – both Rory/BBC and ZDnet report that £0.5b is going to Mike, but I’ve heard that it’s shared between him and Richard Gaunt? Not sure which version is true)

Two things I want to point out here:

Cambridge finally sees multi-billion-dollar exit

10 years ago I was in Cambridge and helped start the £30k business competition. At the time, the dot-com boom was still in full swing, and there was a great deal of excitement. We spent a lot of time with investment funds, startups, and angels.

But there was also a sense of “we’ve been here before, will it go wrong again?”, coming from the older generation – the previous generations of entrepreneurs and investors. To be clear: none of them had become California-sized successes, although there were plenty of professional investors making an OK income from their startup investments.

The suggestion was that in the 1980’s/1990’s, Cambridge had got over-excited, convinced “whatever San Francisco / Palo Alto / Stanford can do … we can do too! (and probably do better)”. But the reality had been that Cambridge had a much smaller area, in a less homogeneous market (europe vs USA), with less investment and less tech resource.

A frequent question was: what would it take to achieve “critical mass” in Cambridge? One of the top answers was: “some billion-dollar startups”. Cambridge had plenty of startups that made tens of millions – but none going for 1,000 x millon dollars.

The forerunners were (off the top of my head): ARM, Autonomy, and Zeus. Zeus was the brand new startup out of nowhere – very much hoping for Cambridge to give them a Silicon-Valley style catapulting into the stratosphere. ARM and Autonomy were older, established tech companies that had shown they could reliably make huge sales internationally. Zeus spluttered out when the dot-com crash hit, but the other two have gone from strength to strength (ARM is currently worth £6 billion).

So, finally, we have proof: you can take a startup in Cambridge, and the founder(s) can grow it to a multi-billion success, and then *sell* – while still CEO – for billions of dollars. I’m slightly happier that it’s Autonomy doing this rather than ARM – ARM has been through many management teams over the years, but Mike Lynch has remained at the helm of Autonomy throughout. “Founding CEO still in charge until the big sale” is what new startups want to see when looking for local success stories and role-models.

Mike Lynch has £500 million burning a hole in his pocket

Why does the whole “billion dollar valuation” thing even matter? There were a bunch of reasons given – all based off analysis of “why didn’t Cambridge become a serious rival to Silicon Valley in the 1990’s?”:

  • Venture Capital firms won’t take a region “seriously” until it’s shown it can create companies of the *ideal* size that VC’s want. A VC may be happy with a $50 million exit – but what they really want is another Skype: multi-billion exits.
  • When startups sell for the tens of millions, the founders often don’t make a huge amount on the sale. They end up “rich”, but not rich enough to become “super angels” (bear in mind that an angel needs to write-off their investments – you need a lot of spare cash you’re willing to *burn*).
  • One step down: the early employees get enough money to perhaps pay off their mortgages – but not enough to become “angels”.
  • Arguably, there’s something self-limiting in the region – some blockage – if companies are stuttering before hitting the multi-billion mark. It’s not a problem in itself, but it’s a “warning sign” – and other industries and entrepreneurs will think twice about locating their new startups there.

With this Autonomy sale, we have £30 million spread across employees – should be enough to create a handful of new Angels. I’m assuming at least some of them will stay around in the Cambridge area.

Meanwhile … although I believe Mike’s been an Angel for a while already … he’ll now have more money than many VC funds. Interesting dynamic for any startups looking for the best of both worlds (VC and Angel)…

Categories
project management startup advice

What it looks like when a manager REALLY supports their team…

I’ve encountered many managers who are in love with the IDEA of supporting their team, but not the REALITY.

Typical examples:

  1. “My team are great. I push them hard and they deliver great stuff on time” (in reality: the team resents the bullying, self-aggrandizing jerk)
  2. “I’d do anything for my team. When they’re working til midnight for me, I stay late too – I even buy them pizzas!” (subtext: they’re worth $6.99 for 4 hours of overtime, and no sleep. Also: they should be grateful I even stayed around, playing minesweeper while they worked)
  3. “I like to think of myself as a sh*t-umbrella: I take the sh*t for my team from my boss” (easy to say when “sh*t” is nothing more than a few vague fears about quality; but what about when the REAL sh*t arrives; is that swishing sound you hear the sound of your manager covering their own ass? Or just of them throwing you into the path of danger, a human-shield to protect them?)

So, here’s a refreshing (if somewhat old) counter-example:

How Pixar Bosses Saved Their Employees from Layoffs

Categories
computer games games industry startup advice

Euclideon: $2m scam for fake games tech?

TL;DR – notch reckons “it’s a scam” (I wouldn’t go that far – “scam” is a strong word, I reckon they’re just too naive/ignorant/foolish/arrogant to realise what a huge mistake they’re making)

My gut feeling is: this would be a terrible investment. By comparison, the middleware companies that sell for tens of millions of dollars usually don’t seek this level of investment until AFTER they have many licenses / sales already. Euclideon seems to be asking for money BEFORE demonstrating that any games company can do anything useful with it.

In the games industry, we have a name for this particular kind of exuberant, short-sighted claim:

“Infinite Monkey Engine”

(apologies to Demis Hassabis, a nice guy who created the term “Infinite Polygon Engine” intending it to be genuine. It backfired horribly when it turned out to have little or no value in game terms; IIRC it only shipped in “Republic: The Revolution”?)

IMHO … The Euclideon folks have shown no signs (in public) of being aware of what a complete waste of time and money their technology “probably” is. They apparently haven’t (bothered to?) spoken to any games-industry companies – this should be an absolute requirement LONG before they raise funding above the $50,000 level.

Maybe they have; maybe their own PR is a big confidence-trick – they know how misleading/wrong their claims are, and they’re just trying to keep potential competitors fooled. If so, I’d say that’s a rather … short-sighted … strategy.

More likely: they’re full of their own inventiveness, and have nowhere near enough startup / business experience to have run the analysis on *why* this tech isn’t used *any more*.

(public signs so far suggest they’ve picked up an old tech, convinced themselves it’s new and novel, and don’t realise that it’s a dead-end that the industry has already rejected)

Categories
advocacy games industry

Nathan Brown: Grow a pair, or stop reporting, please

Any journalist who continues to not only re-hash the self-aggrandizing bull**** of greedy and abusive games-industry managers, but goes further and writes about these people and their behaviour in unquestioning, positive terms … is open-season for ridicule right now. We’ve had enough; developers are starting to get really pissed at journalists who kow-tow to the rich and the powerful, while ignoring the people who actually, you know, *make* the games they’re supposed to care about.

By no means the worst example, but Nathan’s recent pieces on Michael Pachter were the last straw for me, personally.

Nathan, a writer for EDGE online, could perhaps benefit from the following observations. I’m not a researcher, I’m not a journalist, but I think there’s more than enough circumstantial info here to suggest that Nathan should have been a lot more careful about presenting Michael’s comments in such a positive, accepting, unquestioning, light.

  1. Michael Pachter is not necessarily a “member” of the Games Industry. A cursory examination suggests he’s a financial-analyst, with little or no experience of game design, development, production, publishing, etc
  2. Michael said some grossly offensive things, and industry professionals are – quite rightly – rather upset
  3. Michael appears to have blessed the continued, deliberate, abuse of employees; this is dangerous stuff – he’s potentially aiding and abetting the ruining of people’s lives
  4. He apparently makes a large amount of money because people trust him to advise them on the industry; the reaction to his appalling commentary is in danger of costing him tens or hundreds of thousands of dollars
  5. Any claim from him that he’s been taken “out of context” needs some serious examination; it does NOT deserve to be simply published without critique. Are you a journalist, or an outsourced PR assistant?
  6. Everyone in the games industry is well aware that “unpaid overtime” exists in many other industries
  7. The claim that Pachter “give[s] informed industry advice to investors” needs some substantiation; a quick Google suggests a lot of people would disagree; beyond the financial predictions (which he’s veered away from here), where’s his “informed” advice coming from? There’s even a satire blog about him: “My word is Money, Bitch. Listen Up”
  8. Much of the ire is based on the video itself; many sites chose to re-quote each other simply because that’s faster than doing a manual transcription. That doesn’t mean we were all too lazy to watch the actual video
Categories
amusing

I’m in Urban Dictionary

You know you’ve made it when…

http://www.urbandictionary.com/define.php?term=Adam%20Martin

…although I’m a bit disappointed. I mean, it’s not exactly on the same scale as a Santorum, is it?

(don’t google it. No, really – don’t.)

Categories
bitching community web 2.0

StackOverfow: PLEASE fix your search engine

StackOverflow.com has long had one of the worst search-engines I’ve ever seen. It’s clearly a simple thing hacked together. It generally doesn’t work, and most of the people I know use google isntead, and rely upon Google to collage all the stackoverflow results together.

Occasionally, you have search terms where Google gives you lots of non-programming hits (e.g. “iphone video (something)”. So the above method fails, and you have to use the appalling SO search engine.

Then you get this, because the search engine is so poor that it often ignores search-terms, so you have to creatively re-search and experiment to find the results you need:

ARRGGGH!!!

Categories
games industry iphone

We don’t need no AAA console studios

Over the past couple of years, there’s been much coverage within the games-industry press about the fall and fall of the UK games industry. Nicholas Lovell has done a particularly good job of tracking studio closures. Many of the big companies, and the trade associations, seem to have spent most of their time trying to win tax breaks.

The argument has been: It’s impossible for AAA studios, with hundreds of employees, to stay “competitive” with Montreal, Vancouver, et al – unless the government gives them vast amounts of free profit. If they are not gifted this money, they will shut down, and make people jobless; witness NIcholas’s Job Loss Tracker above for evidence.

But the thing is … I really don’t care.

I really don’t believe we “need” those big studios.

(EDIT: NB: this post was sparked by Andy Wilson of Codemasters stating: “we need to start supporting the industry properly or the whole thing is going to melt into iPhone developers – and there’s only so many 4-man teams who are going to find success”. Of course, Codemasters is a great example of a badly-managed, has-been publisher that chews people up and spits them out)

If they cannot make the same high profit margins that those of us skilled and bold (foolish?) enough to do iOS are making, then they’re just getting in the way, and should sod off.

How many iOS studios were whining about the need for tax breaks?

How many were just being quietly profitable, and focussing on being “more profitable through good solid product and marketing”, rather than begging government to do it for them?

I welcome the demise of bloated, badly managed, unprofitable, second-rate console studios.

I also believe that console studios will return – but they’ll be offshoots of iOS studios, and they will be managed a million times better. Let’s forget the old studios, and their shitty business acumen, their mismanagement, and piss-poor leadership.

Good riddance, I say.

(unless they continue to be healthy – in which case: well done, and what a great asset to the community and industry! I judge them by their success, not by their ability to chew through people and resource as inefficiently as possible; it often seems in the press today as though the latter is the most important criteria :()