Posterous theme by Cory Watilo

Mi Sento Fortunato

Mornings before the others rise look like becoming my time for writing these entries. I tend to be up a bit earlier than the others. It's because I'm getting old I think; who would have thought, when slumbering through my teenage years, that age would bring with it such problems with sleeping? Anyway, it's Sunday morning now and I don't have any official techie stuff to write so I'm just going to describe the day yesterday and talk about Firenze (and probably food) some more. I'm also, to amuse myself, going to lace this entry with song titles. See how many you can spot.

"Mi sento fortunato" is not a song title. It's what is inscribed on the right hand button on Italian Google. "I'm feeling lucky" says perfectly the way I feel today; Sunday morning, and I should be so lucky as to be here, lucky to have worked my way to a position which offers such opportunities.

It feels like it's going to be another hot Firenze day today, full of girls in their summer clothes and the sounds of the city blowing free on the summer breeze. At this latitude it's more or less automatically sunshine I guess. I have kept the shutters closed against the sunshine and the windows closed against the buzz of bad motor scooters. The peal of the church bells can still be heard calling to the faithful. Something about the sound is foreign to an ear used to Canterbury Eights and Plain Bob Minors. It evokes for me that robust Latin Catholicism of saints carried at shoulder height in procession through the town, the streets strewn with flowers and nasal close harmony chanting. But there are no saints and no chants and no flowers (where have all the flowers gone?) I guess Tuscany is too cooly northern for such histrionics even if, to one grown watered by English drizzle, the undeniable and unforgettable fire is still evident. Summer in the city will always be several degrees more intense than summer nights in my little town.

Read the rest of this post »

To Firenze

"In the room the women come and go, Talking of Michaelangelo." ~T.S. Eliot

It had been decided that we would need to leave Oxford at 7am in order to make it to Stanstead in time to check in for our flight at 11.20 I duly set my alarm for 5am and while mostly I had everything ready, there were still one or two bits and pieces I would have to do in the morning. Of course, knowing that I faced such an early start, sleep eluded me entirely for most of the night and I'm not sure what time I drifted off - each time I looked at the clock it just seemed to be saying '5AM. YOU HAVE TO BE UP AT 5AM!!!' - though in the end I did sleep, and slept on peacefully right through the alarm. I finally opened one bleary eye to squint at the clock. It was now saying 'YOU'RE OVER AN HOUR LATE! GET UP! GET UP!! GET UP NOW!!!' 6.05 saw me trying to shave with one hand while pouring coffee down my neck, get dressed and feed the cat all at the same time. By 6.40 I was on the bike, my bulging case strapped somewhat precariously to the pillion, and fast filtering through the morning rush hour in to town whence I arrived only 5 minutes late.

My boss, naturally, was 10 minutes late.

The route to the airport is via some of the most murderously congested roads in the country, but today, mercifully, they were clear. We made the airport in good time, got checked in and were downing a leisurely Starbucks by just after nine.

The flight, naturally, was going to be over an hour late.

Ryan Air managed to mostly defy it's less salubrious reputation and the flight was actually quite pleasant. There was only one screaming baby and it was far enough back that it sort of blended with the whine of the jet engines. I buried myself in my Kindle and managed to tune them both out. We made good time to Pisa and disembarked down open steps to a bus waiting on the heat shimmered tarmac. Somehow open stairs on a plane, rather than a sealed tube injecting you directly into the arrivals hall, makes me feel like I'm in the 1950s. The bus took a while to fill, then drove forward maybe 50 yards (sorry, 50 metres) before it stopped and we all got off again. If they had parked the plane just slightly to the right there would have been no need for the bus at all. Immigration, passport control, and customs were quick and painless to the point of near non existence. Sorting the hire car took slightly longer, but sort it we did and were soon launched into the Pisan rush hour.

We had decided that we needed to go and see the eponymous leaning tower. How can you go to Pisa and not see the leaning tower? To be fair it was quite something to see such an iconic building in the flesh. Rather than looking smaller in real life as most things 'off the telly' tend to, it was actually imposingly and impressively large. I took lots of photos, though the most interesting photos to be had were of all the tourists on the green lining themselves up for the obligatory 'holding up the tower' shot. I didn't bother getting my own such shot; the tower can come crashing down for all I care it seems.

From Pisa we drove through the postcard perfect Tuscan countryside for Florence. Actually, in deference to my hosts, I'm going to call it Firenze from now on; which makes me think more of fire and Latin passion than of the little girl from The Magic Roundabout. The satnav took us most of the way around the ring road, but eventually, on a side street off a side street, we arrived at the apartment. Beautiful, cool, terracotta tiled floors, high ceilings, whitewashed walls, a little roof terrace outside my blissfully air conditioned room, and quite the flakiest wifi connection I've yet come across.

By the time everything was sorted and squared away it was nearly 9pm or, as it seems to be known in Firenze, almost dinnertime. Directly across from our apartment there happens to be a superb little pizzaria where we duly adjourned to eat. Dinner was a long and leisurely affair of pizza, gorgeous italian bread with olive oil for drizzling, ice cold beer and rich red wine. Actually the red wine was brought in error, but it was decided that rather than send it back we'd just order a bottle of white as well. I finished off my meal with my first cup of genuine Italian espresso; first of many I suspect.

After dinner we set off in to town in search of a gelateria to sample the legendary Italian ice cream. I wasn't convinced that we'd find many ice cream shops open at 10.30, but i couldn't have been more wrong: there seemed to be one on almost every corner. Firenze comes alive in the cool of the evening and the streets were thronged with people; people of all ages eating, strolling, or just lounging on the ornate marble steps in front of the cathedral.

It's one thing to think about the words café culture in the abstract and to ascribe our unsocialized youth and their binge drinking to our lack of such, but it's quite another to wander through streets where parking space is less important than space for tables and chairs, where every third door is a restaurant, and where the line between a bar and an icecream shop is so unimportant that it is dismissed with a shrug. I'm beginning to learn an important lesson about the Italian way of life I think. It's that languid cultural shrug of the shoulders: a shrug which says so much more than the surly sub-vocal 'I dunno' of a British teenager. Its a shrug which says 'Eh, why-a you worry about-a such-a things eh? The evening is-a warm, an-a the piazza is-a full of-a beautiful women. Come my friend. We drink-a the wine an-a toast the health of Il Pape in his palazzio in-a Rome, an-a give thanks that we are alive on-a such an evening.'

Django, i18n and Molly

Here in the Mobile Oxford team, we've been working with the team at Bangor University to help get the Molly Project, the open source project which grew from Mobile Oxford's code base, ready to be translated into multiple languages (in Bangor's case - Welsh!).

As Molly is a Django project, we can use Django's extensive i18n framework to do most of the work for us, however, this does rely on us marking up the text for translation. When it comes to testing i18n, we needed a quick way of generating a test language file for us to drop in to check we've caught all of the strings that need to be translated.

Inspired by Richard Mitchell at Isotoma, who suggested using upside down English to test for Unicode bugs, we decided that testing i18n using upside-down English makes the most sense for us. And so, I wrote a script which did this. It ignores formatting strings and inside HTML, but everything else gets inverted using the lookup table defined at the top. We used this as we marked up each app in a feedback loop to make sure everything is marked up, and I think we got everything.

Data from external services (e.g., the library) isn't translated, but where our data sources (e.g., the OpenStreetMap planet.osm dumps and the NaPTAN) do contain multi-lingual data, this is now imported into our database and tagged as the correct language, and where the data exists, it means you'll see it in different languages!

However, we did find a few gotchas with Django's i18n. First of all, there's a fairly major bug in Django's makemessages function, which means that the output of makemessages for JavaScript is unreliable as to whether or not we caught all the strings. The only real alternative is to generate a .po file by hand, however we cheated by creating a 'dummy.js' file which manually contains all the JS scripts, to make sure they're found. However, this does mean we have to update this file every time we add a new string, which is a pain.

We've no plans to launch multiple languages on Mobile Oxford at the moment, but this is perhaps something we can look at in the future - translating the site into multiple languages to make it more useful for tourists to the city!

Oxford term dates

Just a quick update here from the offices of Mobile Oxford - but if you're a member of Oxford University and develop websites in Python, you'll undoubtedly find it more useful from time-to-time to represent dates in Oxford format - Term, Week, Year, as opposed to a typical calendar date. We've had the same issue, and developed some code to handle this for us - providing us Django template tags for direct use inside Mobile Oxford, as well as a more abstract library other code may find useful.

We've put this on Github, as well as on PyPI, for you to use and enjoy!

Dev8D - Day 2

Day two and the natives still haven't discovered that I wouldn't know an LDAP server if it fell on me. My cunning ruse to hide behind two 'real' techies and just smile and nod if anyone starts talking C++ to me seems to be working out fine. I'm just camping in the Basecamp room this morning; there were a couple of interesting looking sessions this morning, but I was a wee bit late getting here and the session I wanted to go to looked like standing room only. We've now used three different forms of public transport in getting too and from the venue and they've all been pretty crowded and rather slow. The bus was probably the best of them. Mine this morning even had the obligatory business man saying "I'm on the bus!" loudly into his mobile. Tsk, honestly, /civilised/ people now /text/ their partners/colleagues/whatever to tell them which mode of transport they're currently enduring.

Still haven't worked out what the '8D' part of Dev8D stands for. Current thinking is that it's the emoticon for 'whoa cool!' it has been really nice running in to old friends and erstwhile colleagues here, and not just the ones from our own dept who we didn't know were coming. I start to realise that the developer community, particularly within higher education, is more finite than it may first appear; even excluding the smart cookies who took the Sun certification their institutions paid for and went off to industry and dreams of avarice. Money isn't everything you know. It can't buy happiness, and it can't buy the sort of job satisfaction you get when someone first installs your dev system, gets it up and running, and claps their hands with glee as they dive in to start realising some of the ideas they had, but lacked the tools to realise. And there's a LOT of that going on here this week; I've done it myself several times.

The network connectivity here has been outstanding so far, though it does seem to have hit a bit of a bottleneck at the moment (thank goodness for offline blogging apps). I'm surprised that it has held up as well as it has actually. There are a couple of network options for delegates; eduroam (huzzah!) and the local wireless offering. This is probably more than adequate to cope with most conferences, but we're talking /developer/ conference here, and we tend to be more connected than most folk. If you know that one of the Arduino projects being spoken about is a moisture sensor to allow your houseplants to post to Twitter when they need watering you'll perhaps start to get an idea of the sheer scale of the logistical problems involved. ULU have coped admirably, and the venue seems ideal for this sort of event. Kudos to all those involved in the organisation, infrastucture, and running of this event; in case no one else says it elsewhere, thank you for all your hard work.

Lunch was, again, superb. Yesterday was 'Taste of Asia' and today, it seems, was 'Taste of the UK', now the UK isn't noted for it's culinary excellence, so the chefs had set themselves quite a task if they were going to top yesterday, but all the old school favourites were there; sausage and mash, fish and chip, garlic prawns and salmon (hang on...) followed by apple crumble with cream (no custard??) or fresh fruit salad. It was, without a doubt, easily up to yesterday's very high standard. The quality of the food will be the one thing I take away from this conference, besides, you know, all the techy stuff...

This afternoon I am going to go and hack with the little Arduino open hardware boards. I think the object is to build a controller for an 8x8 LED matrix so that it will display scrolling message a la Time Square. A challenge indeed, but one which I shall rise to, assuming I don't fall into a buttery mash induced stupor in the meantime.

JISC Developer Days : dev8d

(download)

dev8d came along before I was quite ready for it. I'd glanced quickly at the program, but only noticed a bunch of unfamiliar acronyms. I had a nagging feeling that I was going to be a very non-technical fish in the geekiest pond in town. In the car on the way down, however, I started to actually read the program and began to realise that behind the acronyms there were actually some really interesting projects.

We arrived on Tuesday evening and, by the end of the car journey, I had marked far more sessions than I was going to be able to attend. An embarrassment of techie riches, including things which promised to take me way back to a mis-spent youth of hardware hackery; brought bang up to date and involving RFID and open hardware amongst other things. I had to juggle things a bit so that I would be able to help out with our project workshops (which is, after all, why we were here), but otherwise I'd lined up a pretty interesting program for myself.

After a reasonably comfortable night at the Wembley Plaza (which is every bit as nice a place as it sounds), we caught a very crowded tube into town and were soon at the venue. My expectations began to mellow when I spotted the huge platters of Danish pastries and giant urns of coffee in the basecamp room. These people obviously knew their audience! The basecamp hall has plenty of seating, plenty of power strips, eduroam wireless network (eduroam is so satisfyingly painless to use across the country that seeing it on the list of available networks is as comfortable and reassuring as meeting an old friend). After getting connected, firing off some first impression tweets (under the @mollyproject account) and uploading a few pics to my Dev8D set on Flickr, the day kicked off with some quick introductory talks which were pitched at a nice informal level. It seems that this was going to be the prevailing ethos of the event; come and go from sessions as you please, pick up in the middle, leave if you're bored, la de dah, do as thou wilt shall be the whole of the conference program.

So, after the pastries and coffee came Arduino; a nice, simple, open, cheap, and well supported little microprocessor board which you can use to make, well, whatever you like really. I worked through the examples (somewhat disappointed that there was no soldering involved - I really like the smell of solder flux...) and picked up enough of the control code to feel confident with it, and even had enough time in the session to play around with some examples of our own (including a rudimentary theremin). My brain was already working ahead and sourcing the hardware so that I could carry this on at home after the conference. I love it when you come out of a session buzzing with creative possibilities.

Unbelievable, but that was the morning gone already and now lunch, a really spectacularly good lunch, was now being served downstairs. The clink of cutlery punctuated the steady flow of conversation. It seems that a lot of people had been similarly inspired by their morning sessions.

After lunch I attended a short series of lightening talks, which included some stuff about OAI-PMH; the protocol that refuses to die, which gave me flash-backs to my first stumbling forays into XML After the talks came our first workshop session and I'm here now writing this entry while I should probably be paying attention. I hope nobody asks me anything more complicated than "which way to the coffee?"

ESXi on a GSA (or, installing ESXi from USB key)

Not really a Mobile Oxford or Molly post this time - but all good services need servers to run off, and Mobile Oxford is no different. We've recently freed up a server (a former Google Search Appliance, which is a rebadged Dell PowerEdge 2950), however installing VMWare ESXi server onto it wasn't so straight forward. First off, a GSA doesn't have an optical media drive, and our initial attempts to install it off a USB drive were for naught, mainly because we prepared the USB drive wrong.

So, these were the steps that worked for us:

And it's as simple as that!

Mobile Oxford version 0.4 coming in the next week!

We'll soon be releasing a new major release of Mobile Oxford, this will bring in many new features, bug fixes and changes in code structure to improve quality and sustainability of the Molly Project.

Quick list of improvements:

Changes to Mobile Oxford in version 0.4

Weblearn

Polls

  • Public Polls now votable without authentication
  • Polls which allow multiple responses will now work
  • Polls which you are not allowed to see the results of will now work

Authentication

  • Fixed a bug where oAuth authentication occasionally looped around from external service (weblearn) a random number of times
  • Better handling of Weblearn errors and privileges

New Transport Page

  • We're launching a new transport page which will aggregate a bunch of useful travel information including Oxford live rail departures, the number of free spaces in each of the five Park and Rides, real time bus info from the five nearest bus stops (or your favourite bus stops) and BBC Road Travel Alerts.

Podcasts

  • ePubs are now detected and downloadable

Favourites Feature

  • You can now add favourite places which are displayed on the front page and if bus stops will be displayed on the transport page

Search

  • Fixed a silent bug which missed a couple of search results
  • Search now allows use of Unicode (which used to cause a 500 error)
  • Library search now accepts Unicode characters

Places

  • Minor restyling to match Podcasts
  • Park and Ride spaces now shown on Park and Ride POI page
  • Railway Stations for the whole country are now visible and their real time departure boards
  • You can now click on a train service and see where it stops in text and on a map
  • You can now choose favourite places which show up on the front page
  • Points of interest can have 'associated' entries, e.g. a Park and Ride will have associated bus stops
  • Oxontime bus stop numbers are now displayed bus stop pages

Front Page

  • Favourite places now displayed on front page
  • River status no longer displays misleading 'Correct as of X min ago'

Backend Improvements

  • Caching header improvements should improve responsiveness of site
  • Opera Mini users get a warning not to use 'Mobile' view as it is the spawn of the devil (makes silly assumptions about HTML)
  • Feature phones now get slimmed down HTML again
  • More robust handling of certain race conditions
  • Various improvements to adhere to HTML standards

Check out a full list of improvements on the Mollyproject wiki at: https://github.com/mollyproject/mollyproject/wiki/Changelog-0.4

News Section Re-skin

The initial problem was that the news section design didn't sit well with other sections like Podcasts. The layout of elements and the use of colour was not felt to be making the best use of the possibilities and I began to look at how the design could be made more unified and consistant and at what quick wins could be implemented to give the design a bit more visual impact.

The First, and relatively trivial task was to amend the page templates involved in the news section so that they used the same CSS for section title and article text as the equivalent elements in the Podcast section. I did this and pushed the changes to git as part of the Bigcleanup branch. These changes have already been merged to the live site and the section now at least looks more like it belongs with the others.

(download)

Surveying other news and news-like sites though suggests that we may be missing a trick or two. Some example of mobile news sites are the BBC News native iPhone app, The mobile version of iPlayer. Google Reader's mobile version, and IMDB.

(download)

These sites all give a positive and usable mobile experience and have some common features which we could learn from. With the exception of the Google Reader site they all reserve a small amount of space at the top of the page to display the title and nothing else (the BBC News site does also use this space to display a couple of controls, but, as a native app rather than a mobile site it is able to do this more easily). They all make use of colour to a greater or lesser extent, to highlight important navigational or functional aspects of the current page (see particularly the iPlayer's somewhat eye-popping pink and how well that highlights important info against the dark/black background). The all make full use of the screen real estate, particularly the page width, to display content.

I think we could quite easily add a little more colour to the site - judicious, but subtle accent colours - to not only make the design a little more lively, but to draw the eye to important page elements. I think where the current news section design lets itself down somewhat is in not making use of the entire screen width. I can see that the nice, rounded corner boxes have a certain aesthetic appeal, but those few pixels they lose to either side are more valuable perhaps than they would be in an equivalent desktop site. Pushing the width out like this though, would have a knock on effect on the design of the section headers which would lose their rounded corners and drop shadows. I would propose either switching the section title with the subsequent links to give a dark blue title with white/pale grey links beneath or (or possibly and) a subtle gradienton the section title to bring it forward a bit.

On the subject of colour, I have a couple of examples of its effective use from non-news mobile sites.

(download)

The basic scheme  of the Mobile Oxford site is a rather monochromatic blue and grey-blue and the brown accent colour (which is actually slightly off in terms of where the natural compliment to the main blue would fall on a colour wheel) is used in a way which dissipates it's impact as an accent, and it becomes a seemingly rather odd choice of alternate background colour. While I appreciate that monochrome colour schemes translate better to a range of devices and degrade more gracefully to greyscale, I think that we can learn from how others have used colour in the same context.

The BrightKite, Meebo, Mailchimp and Viget sites all use a similar palette to ours. Meebo and Viget have the overall blue being highlighted by a lively orange. At the sub-page level they drop back, wisely I feel, to a plain white background. The orange used by Meebo and Viget is the bog standard complimentary colour to the dominant blue. BrightKite have gone a slightly different route and used one of the accent colours from an analogic triad - in this case a rather lurid (in isolation) green. The Mailchimp site uses a similar palette, but reverses main and highlight colours.

Thoughts?