London Film & Comic Con (LFCC) 2014

It’s been very quiet here for a while, and that’s mostly because I’ve been preparing cosplay for London Film & Comic Con 2014.  Photos I’ve collected so far are in the gallery below.  I had a different costume for each day: Barf, Jayne Cobb and Obi-Wan.  It was an exhausting weekend, especially given how poorly ShowMasters ran this year’s convention.  Still, I had a great time meeting other cosplayers, stars and friends.  Now it’s over I can try to catch up on life – I’ve got a few progress photos from some of my costume creations so I’ll write up a post at some point on those.

Oh, and I was featured on BuzzFeed!

The Problem with Motion and Touch Controls

The recent announcement by Microsoft that they will be selling the Xbox One without the bundled Kinect has sparked mixed reactions from critics and developers.  From my perspective, Microsoft seem to be accepting something that I’ve been thinking about for a while - the problems with waggle and touch controls for gaming (which I’ll collectively refer to as “waveprod” from here on).

I should point out at this juncture that I think both motion tracking technology and modern capacitive touch screens are amazing advancements in consumer tech.  I attended a lecture by Professor Chris Bishop a couple of years ago on the science behind Kinect and it’s truly fascinating stuff.  The thing is, a lot of his own enthusiasm for the product seemed to come from applications outside of gaming, such as helping doctors control interfaces in sterile environments.

I’m also not trying to say that these types of interface have no place in the gaming world.  There have been some excellent applications of the technologies thus far, and I’ll touch on how some of these implementations overcome the issues with waveprod.  Unfortunately there are also some oft repeated mistakes made with waveprod implementations in games, quite often as a result of lazy porting of an aspect of game design to mobile platforms.  I’m going to touch on two different sides of the waveprod problem – the connection to the game, and the connection to the player.

It’s all about intent

The goal of gaming interfaces should be to blur the line between man and machine, translating human movement into play on screen as seamlessly as possible.  If I’m playing something like Titanfall (which I have been doing far too much) and want to leap for a wall to my left, I should be able to think that, have my muscles respond with familiar movement and guarantee each time I’ll get the same leap.  This is why PC FPS players hate mouse acceleration – they want to know that every time they plan to move their aim by a certain distance it will move exactly that distance, regardless of speed.

Waveprod interfaces introduce a margin of error to this interpretation of intent.  For touch this is fairly simple to articulate: fingers big, pixels small.   Motion control (and touch to some extent), relies heavily on gesture interpretation: without 100% guarantee of accuracy in this we have our error margin.

Now the errors of waverprod aren’t a problem on their own – it’s possible to design around them and so reduce the impact on the gamer.  The issue is that there are far too many games out there that don’t do this.  I’ll ignore the wealth of lazy ports of games that try to shoehorn in touch controls without making any gameplay concession to account for the radical change in interface experience.  Bad ports are bad ports, whether they fail to effectively use new control systems or deliver an awful UI experience (*cough* consoles ported to PC*cough*).  So what exactly am I referring to?  I’ll give two examples.

The first are unforgiving games that penalise a player for non-perfect approaches.  Now I’m not generally keen on these sorts of game myself, despite a recent addiction to Rayman Origins which is particularly unforgiving.  Of course Rayman Origins (on the Vita at least) lets me play with perfect intent translation through physical controls, and I can see how people do enjoy such games.  One particularly bad example I came across of this penalty was a sokoban clone that would only award full points for completing a level in perfect time.  Now this would be fine if it were just measuring player intent – I can work out the puzzle, plot the quickest route to solve, and try to enact.  It’s the last bit that caused a problem – the touch interface required moving by picking a target square on an isometric grid.  With a large grid and a small screen, there was a strong chance that a move would not go quite according to plan.  Therefore, trying to achieve a full score repeatedly wastes the player’s time through no fault of the player themselves.  It’s offensive to the gamer.

The other type of problem game are those that have a great concept for using waveprod, but don’t quite deliver.  For this I’m looking square at Fable: The Journey.  The gods only know how this has over 60% on Metacritic.  In Fable: The Journey you take a first person role in the franchise, using the Kinect to control movement through the on-rails world.  Imagine that!  Being able to hurl fireballs from the comfort of your sofa!  Sounds good huh?  Unfortunately, in practice it’s really not so good.  I tried this both at the Eurogamer expo before it was released, and on my own 360 in the hope that a controlled environment might help.  It really doesn’t – I can’t for the life of me get it to interpret in which direction I want a fireball to fly, and because of that I gave up as soon as spells became available.  Given that up until then I’d only been steering a horse by miming holding reins,  I wasn’t all that happy!  It’s a perfect example of something that must’ve sounded fantastic on paper, but should’ve made sure it could deliver before going too far.

So how do games utilise waveprod well without the impact of errors?  The best example I can think of is Angry Birds.  Angry Birds still relies upon a high level of accuracy – you can subtly vary a bird’s trajectory to great effect.  The trick is that Angry birds allows you to verify that your intent is being properly picked up.  Rather than just hitting a point to select angle and power, Rovio make use of what a touch interface does well and allows you to hit any point then drag to measure relative to your initial touch.  Along with this you’re given the visual feedback of the projected trajectory of the bird once you release your finger.  Thus, prior to releasing the touch screen you know that your intent will be properly translated into action.

 Oooga-Chaka Oooga-Ooga

Hooked on a Feeling?  No?  Right … moving on.  I mentioned the connection to the player earlier.  This is a pretty simple one really: touch and motion controls tend to have very little in the way of responsive feedback.  OK, so there may be the occasional vibration here and there, but for the most part you’re waving in thin air or dragging against unresponsive glass.  Humans are bloody amazing, and one thing that makes us amazing is our sense of touch.  With a sprung analogue control stick, I know how far I’ve moved the stick, what the limits of movement are, and which direction I’ve moved it in.  Games have attempted to replicate the controller layout on touchscreens, but without that haptic feedback you just can’t have the same level of detailed control.  As a result, something in the game design is going to have to give to make allowances for mistakes.

Motion controls are even worse for this.  Given most good implementations of motion controls involve interaction with physical objects (bowling, tennis, sword fights), it doesn’t work that you get no feedback from this interaction.  Suddenly, there’s nothing about the motion control itself that is necessary for the game and you realise it’s just a novelty application.

This is the one area that I don’t think can be solved without combining proper physical controllers with waveprod.  A hybrid system allows for the best of all worlds, and hey, maybe that’s what the PS4 does.  But I doubt it.

AFK

That went well!  Already missed a weekly post.  Unfortunately I was overseas for work last week and didn’t have time to write anything.   I did manage to think of a couple of topics to write up though, so a post should be forthcoming soon.

Florence

I just returned from an excellent long weekend in Florence.  My main reason for visiting was a wedding (the resultant hangover somewhat re-shortening the weekend) but I took the opportunity to grab a few extra days tourism time while I was over there.  It also proved a great way to get some practice with photo spheres!  It’s possible, however, I was using this to stop myself spotting places from Assassin’s Creed 2.

Florence is great for a quick visit – the main part of the city isn’t that large and so it’s very easy to navigate on foot and see the sights.  Much like Rome, Florence is a beautiful place to just wander around in.  The old architecture, endless churches and statues can all be absorbed at your leisure, with plenty of little cafes and shops to take a break along the way.  Apparently Florence is the birth place of gelato, so it’s a given that you have to tuck in while you’re there.  I just missed the 2014 Gelato Festival but I understand it’s an annual event so well worth keeping an eye out for!

My base for the weekend was the Grand Hotel Cavour.  There are a number of central hotels in Florence.  I found the Cavour very welcoming and comfortable.  It’s just down from Il Duomo, and I could see the bell-tower from my window.  It also has a roof bar with a spectacular view of the Duomo and the landscape surrounding Florence.

If you want to go into the many museums of Florence then you really need to plan ahead.  The Uffizi (full of magnificent paintings) and the Galleria Academia (home of David) both offer pre-booking and it’s really a necessity to do so well in advance.  You can buy tickets on the day from touts, but they sell out fast and are considerably more expensive.  You should also expect massive queues for entry; you may be given an entry time on your ticket but it’s only indicative.  You can pre-book online, but if you want to organise tickets once in Florence then I can recommend going to this ticket office.  It’s tucked out of the way and seldom seemed to have queues.

Queues for the Duomo vary throughout the day.  I found they died down over lunchtime.  You can get into the main cathedral for free, then buy a ticket to climb the dome and bell-tower, as well as visiting the museum and Bapistry (all on one ticket).  I’d recommend heading up the bell-tower early in your stay.  It’ll help you get the lay of the land quite quickly – you soon find you navigate your way around Florence using tall landmarks like the Duomo to orient yourself.

View South From Duomo

I should finish by mentioning the wedding.  It was in a beautiful setting – Castello Di Vineigliata, Fiesole.  It’s a castle at the top of a hill outside Florence, nestled between a wonderful landscape of olive fields.  The castle is beautiful and, while I understand the happy couple had to go to great organisational efforts, it’s a splendid venue for such a celebration.

Castello Di Vincigliata Outside

[Footnote : I'm aware the photo spheres and layout of this post are a bit messed up.  I need to spend some time re-tuning this blog and have a look at all the plugins and themes.  I'm hoping I'll get some time to do so next week when I'm travelling again for work]

 

 

A Personal Retrospective

So 2013 was interesting.  I bought a flat and then, due to temporary insanity, decided to renovate it while living in it.  When I say renovate I don’t mean just tiling the bathroom (actually still planning to do that) – this was knocking down walls, moving kitchens, and installing new central heating.  All while living in one front room.  Yep, occasionally I may have lost my mind and ended the day rocking in my chair, gibbering to myself.  If you’ve never had major building work before you may not realise that the entire world is filled with a thick layer of invisible dust that becomes visible and tangible in the presence of builders.  That gods damned stuff gets everywhere!  Still, now it’s all done I couldn’t be happier with the result, although I am now unlikely to ever move into a house without wanting to customise it.  I certainly won’t ever be purchasing a flat with a council as a freeholder.  Dealing with them was incredibly slow and painful.

Outside of the mess of the flat,  the last year was fun but busy.  It seemed like every weekend was a stag, wedding or other event.  I spent some time reconnecting with old friends and making new ones and was introduced to the wonders of board games.  I also went to my first comic con in costume; I think I’m hooked!  Anyway, as a result I never really got time to write anything here all year.  That’s a bit of a shame really as the internet was invaluable for researching as I decided on the flat design and I feel I should give something back. I guess that’s a year of retrospective material right there!

So I’m going to be scribbling regular thoughts here at least every week.  I want to practice my writing and this seems the best place to do so: somewhere nobody is looking!  If I commit to at least a paragraph on a random subject each week then maybe something in there will be useful to someone, or to me.  Expect wordage on anything from tech to gaming to gardening, especially the latter as it’s spring and I’ve just planted out my new raised beds. Yes, it’s a bit of a mid life crisis, what of it?

Tick

Yes, yes. No posts for a while. This is because I’m in the process of buying a house. Do you have any idea how time consuming that is for a single bloke? On the plus side I’ve gone well beyond my original aim to just purchase a property this year and have extended it to learning all about rising damp. *sob*

In other news, I have been growing my hair in the hope that it will soon become sentient and can do my job. Or write blog posts. Either will do.

Nexus 7 Bluetooth Keyboard and UK Layout

I’ve really been enjoying playing with my Nexus 7 but have discovered a slight problem. I decided to purchase a bluetooth keyboard and so grabbed myself a Perixx PERIBOARD-804. This won out over the Zagg Keys Flex and the Logitech keyboards thanks to compact size, internal USB-rechargeable battery and UK keyboard layout. Unfortunately, while testing this out on the Nexus 7 I discovered that the Nexus doesn’t come with UK keyboard layouts for external keyboards. I haven’t been this annoyed by a keyboard layout since I bought a Mac. Anyway, after a bit of digging around online I found that it’s possible (with root) to upload a custom character mapping for my device to make it work as expected. You can read more about the specs of these files over at the Android Open Source Project.

New Configuration

Two files need to be created to ensure that all the buttons work as expected:

  • A Keyboard Layout which defines which android key code results from a key press.  This lives in /system/usr/keylayout and is named Vendor_<VendorID>_Product_<ProductID>.kl
  • A Key Character Map which defines which android key code produces which character (with modifiers).  This lives in /system/usr/keychars and is named Vendor_<VendorID>_Product_<ProductID>.kcm
Each of these locations contains a Generic.kl/Generic.kcm file that can be used as a template for any changes. These files are used when no other suitable configuration is present so I suggest not editing them directly, or at least backing them up.

Identifying the Device

The VendorID and ProductID in the filenames are used to match the configuration to the specific device.  With the keyboard connected this can be found in a shell (adb or on device) by looking in /proc/bus/input/devices.

shell@android:/ $ cat /proc/bus/input/devices
...
I: Bus=0005 Vendor=04f2 Product=1063 Version=0505
N: Name="Bluetooth Keyboard                   "
P: Phys=10:BF:48:F3:8B:E2
S: Sysfs=/devices/platform/tegra_uart.2/tty/ttyHS2/hci0/hci0:12/input4
U: Uniq=90:7F:61:8E:78:A4
H: Handlers=sysrq event3 keychord
B: PROP=0
B: EV=12001f
B: KEY=4c37fff 72ff32d bf544456 0 0 1 30f90 8b17c007 ffff7bfa d951dfff febeffdf ffefffff ffffffff fffffffe
B: REL=40
B: ABS=101 30000
B: MSC=10
B: LED=1f

Here my Vendor ID is 042f and my Product ID is 1063. Once you’ve created your baseline files by copying (adb pull is your friend) the generic configuration and renaming to match your Vendor & Product IDs you can jump into them and make the changes you require.

Changing Keys

In my case most of the work was in the key character map file (moving quote marks, tilde, etc.) and you may not need to make any changes to the keyboard layout at all. One change I had to make was to support the # key on a UK keyboard (which has the ~ character above it). The generic keyboard layout was sending it as a backslash, along with the actual backslash key. To find which key to change I needed to know the shortcode being sent by the keyboard and for this you can use KeyTest.apk made by Chris Boyle. This app will run and report the short code for all key presses so you can hunt down the one you’re interested in. In my case this meant changing key 43 BACKSLASH to key 43 POUND in my layout file and then putting a corresponding entry in my key character map:

key POUND {
    label:                              '#'
    base:                               '#'
    shift:                              '~'
}

Note that this format for the character map is supported from Android 3.0+ (the Nexus 7 is on 4.1 at the time of writing). It’s worth digging into the documentation to read up on the various modifier keys you can react to. Power users may decide that they want alt characters for all of their keys to produce special characters. The AOSP docs explain a bit more about any escape characters you might need to use in special cases as well as how to represent more exotic characters as unicode code points. Wikipedia should serve to provide a reference for the latter.

Installation

Once you’re done with your new configuration you’ll want to deploy this to your device. I did all of this using adb as follows.

  1. Put my new configuration in two local directories: keylayout and keychars
  2. Create a keyboard folder in the root of your /sdcard partition.
  3. adb push your configuration to the device:
    adb push keylayout /sdcard/keyboard/keylayout
    adb push keychars /sdcard/keyboard/keychars
  4. Launch adb shell and run the following commands:
    su
    mount -o remount rw /system
    cat /sdcard/keyboard/keylayout/Vendor_04f2_Product_1063.kl > /system/usr/keylayout/Vendor_04f2_Product_1063.kl
    cat /sdcard/keyboard/keychars/Vendor_04f2_Product_1063.kcm > /system/usr/keychars/Vendor_04f2_Product_1063.kcm
    chmod 644 /system/usr/keychars/Vendor_04f2_Product_1063.kcm
    chmod 644 /system/usr/keylayout/Vendor_04f2_Product_1063.kl
    reboot
  5. Wait for your device to reboot
  6. Profit

Profit

Voila! You should now have a working keyboard layout for your device! If you’ve also got the Perixx 804 then you can take my configuration files from a repo on GitHub. Please feed back any mistakes you find and shout if you’d like any more layouts uploaded. If I have time I might try to get an app together for installing any configs from git and/or editing these config files on the device.

Troubleshooting

If you’re trying to do this yourself and having difficulty troubleshooting what’s happening, keep an eye on adb logcat when you’re connecting your bluetooth device. A message should appear telling you which layout and character map files are being used. This helped me identify what was failing on my first attempt and I eventually tracked a problem to a duplicate definition for POUND in the character map.

A shout out to this post on the Thrive forums for getting me on the right track.

Nexus 7: Tablet Of Win?

I wrote a few paragraphs about the Nexus 7 in response to a post on the internal messageaboard at work and so have reproduced this below. Before mine arrives I’ll write up a bit more about why I’m parking my PlayBook in favour of the Nexus.

I got hands on with one of these last week (they kindly brought some along to I/O Extended) and thought I’d share my impressions. TL;DR: I liked it and have pre-ordered.

Physically it’s a very nice device. Since I got my hands on a PlayBook I’ve started to appreciate the 7″ form factor. It’s a good size for use while commuting (easier when standing in a cramped tube). If you’ve got a PlayBook then the Nexus is slightly smaller (same screen size, but no need for the touch sensitive bezel) and about the same thickness. It is, however, considerably lighter. No amount of holding this is going to wear out your wrist. The device is very port light – headphones, micro-USB and four gold points which I’m told are for some sort of Nexus dock thingy. The back of the device grips well so it should be hard to accidentally drop. Sound quality from the speaker was surprisingly good with the test videos I watched. The screen is beautiful, but did seem to have problems rendering blacks without being washed out. This may have been because the brightness settings were all ramped up, but I didn’t get a chance to play with this. A quick side-by-side with a Galaxy Nexus did make it seem a little too light though. One thing that was the source of much debate amongst those present was the lack of a rear facing camera, but most people carry a smartphone that’ll take this role and the consensus was that trying to take photos with a tablet makes you look foolish (no offence intended … but come on).

Onto the software. Jelly Bean is jolly impressive. I was particularly loving the new expandable notifications. It was hard to really test the effectiveness of the new “cards” while just playing at a table in Campus but I think they’ve got potential, especially once they open them up to developers. Context driven layouts seem to be on the increase at the moment with projects like Chameleon so this feature will likely get more and more focus. I can confirm that the interface is indeed smooth as butter (excuse me while I giggle for a few minutes – I just can’t take Project Butter seriously). The vsync / triple buffering combo seems to work well. The various Google apps have also had a bit of a polish, although at time of testing it seems we’re still out of luck in the UK if you want to use Google Music or the new magazines. I’d hope these will come in with time given the whole Play Store emphasis in the keynote seemed like a massive shot across the bows of Amazon and if Google can get out of the US faster than the book people they’ll have a win.

[In response to those pointing out lack of 3G] I have started thinking more and more about the non-connectedness of the device. I’m leaning towards the conclusion that it’s purely my desire to have allthetoys™ that makes me think it needs to have its own 3G connection. I’ve berated the PlayBook in the past for not having 3G, but the difference between that and the Nexus 7 is that I’ve found most Google made apps (and many of the third party ones) to be very offline tolerant, whereas the PlayBook just seems to give up on being useful if it’s not online. I already regularly use gMail and gReader on my DHD when I’m underground, happy in the knowledge that it’ll sync and catch up once I’m back in a connected world. Google do seem to be acknowledging this use case more and more (I believe the offline Google docs editing & syncing was covered in the I/O day 2 keynote). I think, much like the PlayBook with BB Bridge, the pitch here is that this couples with your smartphone so you can tether through that. I find that to be a bit of a cop out as that’s just adding more drain to my phone battery to have the hotspot enabled, but I’m going to try to look past this. I think this device’ll work just fine with wifi as and when I can get it – time will tell.

Other Thoughts:
- Very glad that Google haven’t done a string replace of $ to £
- Any claims about battery life from Google still need to be validated in action with some standard services running in the background
- For all of you who were wondering, I can confirm that Blinkendroid does work on the Nexus 7: http://www.youtube.com/watch?v=g8b7JL1bBqU

Google I/O 2012

Google I/O 2012 starts tomorrow and I’ve taken some time off to attend the I/O Extended event organised by the London GTUG. Foolishly I have made plans for my mornings so I think it’s going to be a couple of heavily caffeinated days to make it through!

I’m honestly not sure what to expect from the keynote. Obviously there are rumours flying around and many “leaks” of the Nexus tablet, but I haven’t yet seen anything that’s going to make me go “yeah, I didn’t see that coming and that looks pretty cool”. Last year that slot was filled by the Android @ Home section so I live in hope that we’re still going to see something I haven’t already heard rumblings about. Or lots of details on Project Glass. Yep, I’ll happily settle for that!

Anyhow, beyond the keynote there are lots of interesting sessions. Might have to try to stream some on the night bus journey home to catch up on the many many clashes!

muzetto-front

Little Green (Accented) Bag

For a few years I’ve been sporting a Timbuk2 messenger bag.  It’s a really practical bag for carrying all my gadgets if I’m travelling and can comfortably make space for everything from my laptop to my camera and lenses.  Unfortunately it’s not perfect for every situation.  Sometimes I need a smaller and smarter bag to just cart around a laptop, book and a few cables without having to find space for both myself and it on a crowded tube.  Enter the WaterField Designs Muzetto.  I’m lucky to have some awesome friends who clubbed together to buy this for me for my birthday and it arrived this week.  Their website has some good photos and videos to cover the features of the bag, but I’ve included some of my own photos below.  After a week of use I can happily corroborate any of the statements they make about the bag: it’s sturdy, looks (and smells … mmm cow) great and is incredibly comfortable.  It has no problem holding my MacBook Air, charger, a couple of books and assorted pens and cables.  The gold lining genuinely helps when it comes to digging around inside the bag to find that missing micro-USB cable.  It should also be noted that the front pocket is neoprene lined and, while I don’t think it’s designed to do so, perfectly fits the 13″ MacBook Air (obviously this is the 13″ version of the bag).  I don’t really want to do this regularly as it’s a useful pocket for a tablet so this does highlight one of the drawbacks of the bag – there’s no dedicated laptop partition to protect my Air.  Of course this also means that the bag is flexible for when I don’t want to keep my laptop with me.  WaterField recommend getting one of their sleeve cases with the bag but I was surprised at how bulky they looked and I didn’t want to reduce the overall bag space so found an alternative option.

Pros

  • Looks great!  The leather is lovely and will weather well to give the bag more character over time.
  • Well designed.  Just the right number of pockets to throw bits and bobs into.
  • Comfortable.  The bag hangs well and the shoulder strap is comfortable and non-slip.

Cons

  • I’ve become incredibly protective of it in the first week of ownership so rarely put it down!
  • Could do with a thin protector to segregate a laptop from the rest of the bag contents.

So, I mentioned above an alternative option to the WaterField SleeveCase.  The only real requirement was that it should protect the surface of my MacBook from superficial scratches.  I searched around for some basic microfibre cloth sleeves, but couldn’t find quite what I was after.  WaterField actually do a nice looking suede jacket sleeve, but I was too impatient to wait for UK delivery.  Enter the Joli Originals MacBook Air Sleeve.  These simple end-loading sleeves are hand made from felt sandwiched between Italian leather.  They come in a range of colour options and I decided to go with the classic Black & Red combo.  Now, the sleeve itself is great.  It’s a tight fit, but not so tight that you can’t get your MacBook in and out.  It should serve well both as an in-bag protector and a carry case in its own right.  This is a very simple product so there’s not much more to say about the product itself, but it’s worth mentioning the delivery presentation.  On opening the cardboard envelope it was delivered in I was faced with a handwritten thank you note and the sleeve itself beautifully wrapped in illustrated tissue paper.  OK, so that has little value after the initial impression, but it gives me confidence that a lot of care has gone into the making of this product.  See the photos below for more details.

Pros

  • Looks great.  The coloured felt middle shows around the edges of the sleeve, making it easy to spot and identify your sleeve!
  • Well constructed.  The sleeve is a perfect fit and seems solid.
  • Joli seem nice :) The personal touch is really appreciated for a product like this.  I’ll certainly be buying from them again (have my eye on one of their wallets).

Cons

  • None I can see yet.

A blog about mobile development, tech and life