Ryan's Blog

Like Twitter, but longer


Full Archive

- Prize Winner

Back at the end of November, I discovered a competition being run by Google to help promote Google Fit. At the time I was looking for a side project, and had just discovered the Fit app on my phone, so it looked like a good opportunity to play around with something.

- Perspectives on code

I’m a developer, sort of. I spend my day working on software products at different levels. My perspective varies from low-level poking around with lines of code to high-level drawing pictures of how applications will talk to each other.

- Running PHP Commandline Scripts

Apologies, two code focused posts in a row. I promise I‘ll get back to random waffle soon.

- Android Version from Git in Gradle

Back in September Jared Sinclair posted a clever way of updating the build number of an iOS app and I’ve been thinking about adapting it for Android ever since.

- Progress

I’ve just sent this as an email to the team (I’ve removed some stuff).

- Objectives 2014/15 Part 1

Objectives Part 1

- Tab Dump: Principles

Here’s a list of Principles that I’ve collected from around the web.

- Ok, you got me here, what's next?

Typical e-learning content is delivered in a web page that looks a lot like a PowerPoint presentation. That is, in fixed size slides with a “next” button in the bottom right corner. Recently, developments in responsive design mean that e-learning packages are moving away from slides to a “deep scrolling” approach. We can celebrate the demise of the next button.

- A Cult of Performance

I spent today up in Derry at Learning Pool HQ. I generally enjoy my days up there, it’s good to spend time with the wider team and get a feel for what’s going on.

- On JavaScript sorting

This has caused a bit of controversy today.

- It's reassuring

When you identify a problem in your business, invest a good deal of effort in finding the right solution to that problem, then discover that your competitors have found the same solution to a slightly different (but related) problem.

- 4 interesting javascript resources

I'm working on defining a content format for e-learning delivered by a mobile app at work at the moment.  We like JSON as a content representation.  The problem with JSON is that it's very flexible, it's difficult to restrict the format. Here are four interesting resources that have helped me

All of these resources are web native, javascript friendly, open-source projects.

- The Mobile Problem?

On Tuesday last (the 4th June) I had the opportunity to attend the Learning Pool Steering Group meeting in London. I had been asked to attend by Mary and Paul to speak to the assembled group of customers about our Mobile strategy.I framed my short presentation (I think I had about 15 minutes in total) around three challenges that the explosion in mobile computing devices bring to e-learning (or web content in general) with a brief overview of what we intend to do about it at the end.The three challenges I picked (and there are many more) were

  1. Mobile Users demand a great experience - and a desktop interface squeezed onto a small screen isn't great.
  2. Mobile Users want to get things done - and things that would be fine on a desktop pc are painful obstacles on a mobile.
  3. Mobile Users work under constraints - like small screens, limited bandwidth, distracting environments, limited input interfaces.
My key point was that in reality these three issues are true about Desktop users too (and in fact, the differences between the different computing platforms are not as clear cut as they once were), so what we need is to apply those principles to our full product suite and all users.I'll not go into detail about what we're going to do about it (trade secrets!), but I will say that we'll do it in an iterative way, taking the platform that our customers know and love today and improving it incrementally until we have a consistently wonderful experience on whatever device you chose to learn on.

- Three things

which all say essentially the same thing.

- 7 Reasons why you shouldn't use Webviews in your Android app

  1. the embedded view doesn't behave the same as the browser (for example, features like pinch to zoom and your login status on websites)
  2. It's difficult to share a page in that view with other apps (like Facebook, Twitter, your Bookmarking app, Evernote)
  3. Chrome or Firefox Sync doesn't work with web views
  4. the page isn't in your browser history, so finding it again is hard
  5. some web views capture all links (I'm looking at you Feedly) so clicking links in the loaded page loads different pages still in the view.  Now how does the back button behaviour work?
  6. some links point to pages that I have an app for (that advertises support for those URLs, YouTube is one, Glimmr [for Flickr] is another), I want those apps to show those pages as they do it better than even a web browser, so definitely better than a webview
  7. the Android design patterns expect apps to inter-relate via the Share mechanism. Embedded webviews are stolen from iOS which doesn't have that capability. Don't ape another platform!
(Sorry for doing a list, "x things" type blog posts are annoying aren't they?)  

- Leaving the BBC

It's three weeks since I was made redundant by the BBC.

- Software development is a learning process...

The first four paragraphs from the first chapter of one of the best books available about Test Driven Development, Growing Object-Oriented Software, guided by tests. [caption id="attachment_227" align="alignright" width="225"]The first page of the first chapter of the GOOS book. The first page of the first chapter of the GOOS book.[/caption]

Software Development as a Learning Process Almost all software projects are attempting something that nobody has done before (or at least that nobody in the organisation has done before). That something may refer to the people involved, the application domain, the technology being used, or (most likely) a combination of these. In spite of the best efforts of our discipline, all but the most routine projects have elements of surprise. Interesting projects - those likely to provide the most benefit - usually have a lot of surprises. Developers often don't completely understand the technologies they're using. They have to learn how the components work whilst completing the project. Even if they have a good understanding of the technologies, new applications can force them into unfamiliar corners. A system that combines many significant components (which means most of what a professional programmer works on) will be too complex for any individual to understand all of its possibilities. For customers and end user, the experience is worse. The process of building a system forces them to look at their organisation more closely than they have before. They're often left to negotiate and codify processes that, until now, have been based on convention and experience. Everyone involved in a software project has to learn as it progresses. For the project to succeed, the people involved have to work together just to understand what they're supposed to achieve, and to identify and resolve misunderstandings along the way. They all know there will be changes, they just don't know what changes. They need a process that will help them cope with uncertainty as their experience grows - to anticipate unanticipated changes.
The rest of the book goes on to explain how to do TDD properly, and how to use it as a design technique to help us build software when we don't understand what it is we're creating. This process of creating something out of nothing, making it do something we didn't know we wanted it to when we started, allowing it to develop new skills over time and using the stuff we use to make it in different ways from how we've used it before; this programming lark. It's not easy.

- How many recruitment consultants does it take to get a job?

It's about six weeks until the BBC make me redundant, so it's a good time to jot down a few notes about my search for a life post-Auntie.

- Content management and application design

The principles of Create, Store, Transform and Present; and why it's a good idea to separate your product from the third party software you built it on.

- Career Planning...

In terms of companies, I'd love to work in a Digital Circle company rather than one of the big IT employers, I'd prefer a product focused business over a service focused one, and if it's more public service orientated than profit motivated that would be amazing.

- Responsive Design redux...

I've just sent a version of this to some people on our product team about our responsive design approach. The question was about support for IE7 and 8 in our responsive application, and how we're handling supporting devices which are modern, standards compliant, Cutting the Mustard devices alongside those that aren't. The question was,

Have we got anything documented on what browsers/devices that are to receive the Second level of support will actually get?
And here's my answer. There are a number of principles that we’re working to.  These are:
  1. http://dowebsitesneedtolookexactlythesameineverybrowser.com/
  2. Responsive Design means serving an optimal experience to all devices, not focusing on any particular one.
  3. We choose to use modern development techniques where possible, with hacks/polyfills/device specific enhancements added after delivering a core experience.
That means that we are developing for the main set of devices that support modern javascript, have good CSS support and deliver html5 support.  This includes (generally speaking), IE9+, Firefox, Safari, Opera, Chrome on all devices.  This doesn’t support (generally speaking), IE7 & 8, Feature phones, some older devices (old Android perhaps), and some Blackberry (I think BB5 is one of the non-supported ones). The principle of second level support doesn’t really mean that these devices don’t have an optimal experience. It just means they may not get some enhanced features, or are specifically supported through additional effort. (A good example is CSS3 columns. IE doesn’t support them, so instead of lists being displayed in columns (top to bottom then left to right), they’re displayed in rows (left to right then top to bottom). The comment “all browsers will get as full a desktop experience as possible” isn’t quite right in that case.  The issue is with the use of the word "desktop" in there. A more accurate statement (but not as succinct) would be this:
All devices will get access to all content. All devices will get an experience that best suits that device. Not all the experiences will be the same.
Any component that fails to allow the first sentence has a showstopping bug, a failure to deliver the second sentence is more nuanced and probably depends on (at least) browser usage, effort to implement, impact of the detrimental experience and expected lifetime of the device. Of course, this is something I've been saying for a while (mean time to mobile parity, Github presentation on RWD)

- The Future of Media

I'm just back from the Belfast Media Festival. Once again a great day, but also very much TV focused.  I did however, realise what I've been doing wrong all these years. I've been railing against the TV obsession in NI Media institutions, and I shouldn't have been, it's still a vital part. I think I've known what I'm about to say for a while, but the pieces have started to fall into place in my mind. Right now (more in the past than the present), TV channels, commissioners and Talent act as trusted guides. They tell us (the dumb receptacles that is the audience) what we need to see. They schedule programmes that they've commissioned or produced at the time that they want us to see them.  They control access to that content, giving us a limited time to enjoy them (unless we're willing to pay extra for the plastic disk version). In the future (or now really), four things are happening (in no particular order)

  1. the audience become their own guide (using VOD tools like Netflix, LOVEFiLM, iPlayer etc.), circumventing the controlling aspects of the scheduler.
  2. the audience start telling the trusted guides more about what they want, allowing the guide to serve the personalised content (using connected TVs, Social Media, Mobile Second Screen Apps)
  3. the audience become the trusted guide for their network, sharing recommendations with their friends using tools like Zeebox, Getglue, Twitter etc.
  4. the audience become the content producer, pushing their content into broadcast platforms like YouTube, vimeo etc.
When that happens, the traditional TV companies lose control. They're not the only source of great content, they're not the only recommender of content, they don't hold the keys to the content vault. The TV content producers need us (the digital content industry) to help them stay relevant in the face of the four things above. We can give them the tools to help get their content into the right VOD applications, we can give them tools to help gather audience desire, we can build tools that plug them into the trusted guide ecosystem, instead of leaving them on the outside. We can help them filter the great content produced by the audience, letting them use the power of their distribution networks to bring that content to a wider audience. They need us to enable new and exciting formats and techniques for presenting content, be that games, or infographics, or toys or something we've not even thought of yet. I don't think the TV focus in the digital content world will change any time soon, but we should be able to help them stay relevant.

- Hosting Geographically Remote Meetings...

Don't do it. It won't work. Well, actually, read on... I'm sitting in a meeting now, with my headset on at my desk, with a group of people sitting in a meeting room in Salford. It's actually working pretty well as remote meetings go, but it's far from ideal. People in a group:

  • rustle paper on the desk, drowning out their voice over the phone
  • get up from the table and point at things on the wall, which doesn't work when you're 300200 miles away
  • use a screen to refer to things, which inevitably isn't shared across location
  • make asides to each other in the room
  • get distracted with things on your computer
  • get fed up saying "I can't hear you" or "I can't see that"
  • lose interest in the conversation when you can't hear clearly
  • find it difficult to contribute to the conversation because you can't pick up the cues from others that you're contribution is valued
It's not all bad news though. There are approaches you can take which will make it work.
  1. make sure everyone is on their own phone - this way everyone is similarly disadvantaged so they'll make the appropriate effort to hear and contribute
  2. don't use any non-shared support materials - screens must be shared, docs must be circulated beforehand, remote collaboration tools like Google Docs for making notes
  3. use video conference technology, or at least put a camera in the room so everyone can see everyone (also prevents the remote person from working on something else)
  4. make sure the chair of the meeting isn't in the room with the biggest group - they'll work harder to ensure they understand and follow everything
  5. travel to the location of the meeting so you're not on the phone

- #protip - Applying for jobs at the BBC.

I'm just reviewing some applications for a job we're filling in Future Media Knowledge & Learning, and it's obvious that some people need a little bit of guidance. On job adverts we usually publish some requirements for the role. Here's a sample list from a Senior Web Developer position (not the one I'm reviewing applicants for):

* Excellent PHP 5 development skills with Zend and/or other MVC frameworks * Unit testing with PHPUnit * Strong front-end web development skills - HTML5/CSS3/Javascript/JQuery * Knowledge of cross-browser compatibility issues * W3C standards, accessibility issues * Experience of TDD, pair programming, OO design, refactoring * Understanding of service oriented development * Version control systems (Subversion, Git) * Understanding of CI, experience with using a CI system (e.g. Hudson, Jenkins) * Basic Linux admin
And here's the job description that came from. So here's the tip, listen up! When I'm reviewing your application, I'm scoring you against these criteria (not all of them at every stage, but probably 4 or 5 of them at the CV shortlisting stage). I'm looking for evidence that you have experience of these things. When you apply for the role, either with an online form or by submitting a CV make sure you specifically mention your experience in the areas listed in the requirements section. I'll put some effort in to find the evidence, but I'm more likely to look favourably on your application if you make it easy for me.

- Mean time to mobile parity

Responsive Design is all the rage. It's jumped from being one of those techniques that the designers and developers working on the cutting edge espouse to being the thing that Product Managers talk about when they describe the next iteration of their product. But where is the real value in Responsive Design? It doesn't really make design & development faster, in fact, it probably makes it slower and more difficult (at least initially). Rather than focusing on a fixed width it forces designers to consider their work at every width. Rather than developing for Chrome or Firefox, then bug fixing for Internet Explorer, it forces developers to write for every browser then enhance based on device capability (of which there are hundreds). It might be worthwhile dropping a couple of definitions now. Here's one from Jeffrey Zeldman

any approach that delivers elegant visual experiences regardless of the size of the user’s display and the limitations or capabilities of the device
(read more here: Responsive Design) And here's mine
Delivering the same features of a product, optimised for each device, to all devices at the same time, using the same codebase.
I'm quite proud of that one. It's a bit more developer focused than the typical designer focused Responsive Design definition. The key point there I think, is the all devices at the same time. This means we shouldn't be focusing on delivering an amazing desktop experience to our audience now, leaving small-screen device users suffering with a limited, old, crufty experience. It probably means we launch products with reduced feature sets initially, although those features are immediately available optimised for every device (We can argue over what we mean by optimised another time). So my point? Well, for Product Managers the key point is that Responsive Design reduces the Mean Time to Mobile Parity (MTMP) down to 0 days. By MTMP I mean the time it takes for a feature of a product to appear in an optimised form to an audience on a mobile (small screen, bandwidth limited) device after it is launched to an audience using more traditional desktop clients. I've poked around the BBC Internet blog to see what the MTMP for various BBC Products are. It's quite difficult, as it's typically large product launches that are publicised and not feature releases (and we shouldn't be doing big relaunches should we?) and for some the desktop and mobile products are very different. Here's a couple of examples (and apologies for picking on these products).

BBC Homepage

The homepage was relaunched in November 2011 (http://www.bbc.co.uk/blogs/bbcinternet/2011/11/bbc_online_homepage_launch.html), the corresponding mobile version was launched in May 2012 (http://www.bbc.co.uk/blogs/bbcinternet/2012/05/mobile_homepage_goes_live.html). MTMP? 6 months.

BBC Radio

The BBC Radio homepage was launched with device detection built in (let's call this approach pseudo-Responsive) (http://www.bbc.co.uk/blogs/bbcinternet/2011/11/new_bbc_radio_homepage.html) MTMP? 0 days.

BBC Weather

The latest relaunch of BBC Weather was in November 2011 (http://www.bbc.co.uk/blogs/theeditors/2011/11/change_of_season_at_bbc_weathe.html). There's a new mobile site in the works, but it hasn't launched yet. MTMP? more than 8 months.

- Referrers across Applications

I follow a lot of interesting people on Twitter, and they post a lot of links. I often click these links, open them in my browser and then move on, intending to read them later (right now I have 52 open tabs in firefox). Days or weeks later, when I get round to reading the webpage, all memory of the referring tweet has been lost, and I've no idea who initially posted it. I wish there was some way of keeping the original source of the link, so that when I do get round to reading the page, and I want to share it or bookmark it, I can provide appropriate attribution.

- On Software Design

I'm reading the chapter in Code Complete about design (http://cc2e.com/page.aspx?hid=141).  Three points have struck a chord with me:

  1. Design is about tradeoffs
    What are our priorities? 
  2. Design involves restrictions
    What are we limiting? 
  3. Design is emergent
    Can we set out some guiding principles and let the design grow from there?
My current thinking is the priority in application design is a fast application.We limit features based on their effect on our performance.We build in a modular way so we can easily turn features on and off.

- Hire me!

It's January, traditionally one of the "review the last year and plan the next" times of year. I've had a bit of a promotion at work (well, increased responsibilities) and so, naturally enough, I've been thinking about my career.

- Work/Life

In a tweet just before the Christmas break, Mary McKenna posted to some jobs currently being advertised by Learning Pool (they're over here by the way). I have to say I was tempted with the prospect of a change, particularly as I think Learning Pool would be a great company to work for.  That said, I'm not actively looking for a new job, but it is always good to be aware of the market. In the continuing discussion, Mary mentioned something about work/life balance not really existing, and how she knew that would be an issue for me (it would), but it got me thinking. What actually is work/life balance? What it implies to me is that there's this thing we do called work, which we hate, and that work is something we only do to enable us to do the other thing, which we call life. Our employer pays us to work, typically for 40 hours a week, but they secretly (or not so secretly) expect us to work longer than that, and they'll do everything they can to get more than 40 out of us.  It's our job as employees to resist that demand, as anything outside the 40 is our personal life we're giving up. But I disagree with that premise Φ.  Life is not made up of two halves, work and life, there is only life (or work if you look at it that way). It's important to enjoy everything we do, to recognise that we only get one shot at this. We choose to work longer (and therefore live shorter) for a time in order to enjoy the living bit when we've saved enough. Some of us are also in a particularly fortunate position of really loving the jobs that we do, to the extent that we don't really consider it work at all (My mother has accused me of merely "playing at work" before, I think that's not far from the truth). I reckon there are a greater proportion of people in the Technology industry who feel that way than in most other sectors (though I've nothing to back up that notion). I do think that we in the software development industry have a particular issue with balance. We enjoy the problem solving challenge of programming and the technical gizmos we use every day so much that we can't stop using them even when we're supposed to be relaxing. We end up spending most of our free time in front of a screen, either doing the same thing we do at work, or some personal project (or blogging, editing photos, tweeting, gaming...) I regularly spend lots of time in the evening working.  If it wasn't Christmas I'd probably, at this moment, be programming on the BBC Food website, catching up with email or doing some strategy work on the new Knowledge & Learning online product (instead, I'm writing a blog post about work/life balance).  In other words, just because I'm paid for a 9-5, doesn't mean that's all I'm going to give to my employer. Give me engaging work, make me feel like I want to invest in the product, reward me handsomely and I'll give you much more than you are entitled too. And my balance? Right now, my priorities are with my children. They'll only be small for a little while, and I don't want to miss a moment of it if I can.  What that means is I'll do just about everything I can to be present at the weekends, and at home for breakfast, dinner and the bedtime hour. Any other time of day, you probably have some or all of my attention.

ΦDid you see how I demolished that strawman there?

- There was an old lady who swallowed a fly...

My home computer (the laptop I'm typing this on) is older than my eldest child, who is starting school in September. It has become obvious over the last few weeks that I should buy a new one (four-and-a-half years is a long time in computing), and the release of the new MacBook Air last week has brought replacement to the forefront of my mind again. The Air is probably good enough for me to work on. My main use is tinkering with various programming languages (in the last 12 months I've played with Objective C, Java and Scala in addition to my staples of PHP, Ruby, Javascript and HTML/CSS, which isn't a language but needs to be mentioned), but I also do a fair amount of photo editing, using Aperture and Photoshop. I'm fairly sure that these two cpu hogs will run really well on the new Air, but they won't like the small screen estate; which leads me on to the subject of this post. If I get an Air, then I'll probably need to get an external screen for the photo work (I can usually manage with the 15" screen on this machine). Our home office is upstairs in the wee girl's room, so I can't use it in the evening. I'll need to re-configure the house to accomodate a downstairs office-space, but we don't have any space downstairs. So that's it then. Because I need a new laptop, we need to move house.

- The Northern Ireland Web Development Industry

I had lunch with Mark this afternoon. Our conversation turned to the NI Digital Industry (web development in particular). I voiced my concerns with the way things appear to work currently, but I'm not sure I expressed my views accurately (I'm like that when I talk to people, writing it down is much easier for me). So here they are, some issues that I see with the way our web development industry organizes itself. Not terribly well-formed ideas, but up for discussion. Let's assume that a small business in NI is seeking to launch a new website. They've not got a massive budget and they don't have any personal contacts to go to (i.e. the business owner's son isn't a "Web Designer"). So they go to Google and search for "website development Northern Ireland"; maybe, if they're lucky, they stumble across Digital Circle. So how do you choose a company from the list of 36 million results returned? Well, they've no experience, nor any contacts, so it's down to how much they like the company's website, the cost they're quoted and any reviews or portfolio details they can find. They somehow shorten the list down to two, company A who are quoting £X, and company B who quote £Y, where £Y is a few hundred pounds less than £X. All things appearing equal they'll probably choose B. What they don't know is that Company B is actually a single guy (typically), not long out of University, working from his parents house skinning wordpress blogs. Company A is a small boutique agency who build superb websites. This isn't obvious until 6 months later when the site launches in a shoddy state, late and without some key features. Now, there are undoubtedly a lot of highly competent, very professional individuals-trading-as-business out there, but I feel this situation is detrimental for our industry, and here's why.

  1. Good companies charge less than they should because they're being undercut by less professional, less competent individuals
  2. Developers doing "homers" are less productive for their employers than they could or should be
  3. Developers end up being paid less than they deserve because employers need to maintain a profit margin
  4. Employers can't find decent developers because
    1. they can't pay them a competitive rate
    2. the developers are all working freelance and don't want a job that challenges them such that they need to give up the freelance work
  5. The lower end of the market turns into a race to the cheapest, which brings down quality and prevents ambitious companies from growing.
So, I'm arguing that developers doing "homers" are negatively affecting small web development agencies. But what about developers? Don't they benefit from doing additional work? Well, yes. They supplement their income, which is good because they don't get paid what they deserve by the agency they work for because the agency needs to reduce costs to make a profit from the projects they've under-quoted on (Spot the vicious circle?). They also get to work on interesting projects that they wouldn't get to do in their day job. However, maybe the agency owner wants to do the interesting project but is stuck doing smaller projects because they need the constant turnover to break even. Also, if a developer is working a normal 8 hour day, then going home to work another 6 hours on freelance work, isn't it possible that they're not at their most productive? Maybe they'd enable the agency to do the interesting work if they were able to work better during the day? (spot the other vicious circle?) And what about the industry as a whole? Surely an at-home developer is generating value for the economy, and growing the industry? Well, consider this. Most of the small web projects in NI come from NI based businesses. It's essentially moving money around the economy and not really generating new income (I'm not an economist) What we really need is Foreign Direct Investment (FDI), i.e. a business from outside NI spending significant funds in Northern Ireland. How many web development companies in NI are capable of delivering 6 figure projects? Now, there are other issues involved here:
  1. how can we help entrepreneurs working on their own grow their businesses?
  2. how can we help businesses find and recruit highly skilled staff (because getting good web developers is hard)?
  3. how can we help developers learn and develop "on the job" so they don't feel so much of a need to do additional jobs?
  4. how can we help small businesses move from producing small Facebook apps (not criticising!) to producing more valuable web applications (or in other words, how can we increase the wealth generation in businesses)?

- A page for every ad?

I've had this idea floating around my head for a while. It's probably fatally flawed, but someone might like it, and I've no way of doing it, so here it is for you to take and run with. BBC Online has a page for every programme broadcast on TV & Radio. It's powered by the same metadata that appears on EPGs, iplayer and Radio Times. ITV and it's regional variations doesn't have such a system, instead they produce bespoke (or seemingly bespoke) sites for their programmes (of course, we still do that for some programmes too). But what about the adverts? Wouldn't it be amazing to have a page for every advert broadcast on the TV? Want to follow the Gold Blend story? You could watch them all in chronological order via the /adverts website. What advert did the actors move on to next? When did Ah Bisto start and stop being used in TV adverts? Probably not very interesting for most adverts (who wants to watch all the Go Compare adverts for example?) but might be a bit of a gold mine for advertisers, as companies may be willing to pay for the privilege of perpetual adverts. They may, of course, want them removed.

- just for google...

so there's a link to it - Kilmakee Camera Club. No content or design yet...

- Estimation and why it can be a bad thing

In our sprint planning for the BBC Food website on Tuesday, we quickly estimated how long each task would take. Thinking about it today, I wonder whether that was sensible. Clearly it's important to ensure that there's enough time to get things done (and that there's enough things to fill the time available), but there are two problems that have struck me this week.

  1. Unless you're very familiar with the code, there's no way you can make a reasonable estimate (other than by chance).
  2. Putting a time against a task, even if it's an estimate and you know it's not accurate, means you're less likely to do the right thing when fixing it if that right thing is going to take longer than you've estimated the task will take.
The second point there is the issue I've been thinking about. On the Food website, there's a tool that allows you to add a recipe to your "binder". There was a bug which meant that the name on the binder was broken in the mobile site, even though it had been fixed on the desktop site. The right thing was to write a helper so the same code created the header on both versions, but that would have taken 10 times as long (estimate) as the fix I had thought to implement (which was fix the bug in the code on the mobile template). The act of estimation has put me under pressure to do it in the time I said I would and not apply the correct fix. Maybe I shouldn't create estimates.

- Kilmakee Camera Club Exhibition 2011

Two photos in advance of the exhibition tonight, which is at Kilmakee Presbyterian Church from 7pm until 9pm. The first is what I spent Tuesday doing. The second is what I spent Wednesday doing. Nut on a string Tuesday was cutting lengths of wool and attaching nuts or washers as weights to them. Wednesday was hanging photographs on the lengths of wool. Darren tweaking the photograph setup Tonight will definitely be good.

- Be like the doctors

A quote from The cover of the book "Dynamics of Software Development" Dynamics of Software Development Jim McCarthy & Michele McCarthy ISBN: 0-7356-2319-8 http://www.microsoft.com/learning/en/us/book.aspx?ID=9691

Doctors mostly manage to retain a modicum of respect and social approbation without pandering to the fears and insecurities of their patients, all of whom are destined to die. Theirs is a good model for setting expectations. Software development, like medicine, is not an exact science. It’s unfortunate that software development isn’t yet generally recognized as an art form that happens to have technical aspects. ​For now, we really have to learn to be like the doctors. They are able to say, quite comfortably and confidently and with conviction, “These things are never certain.” Doctors seldom if ever state with certainty what the outcome of any procedure might be. Yet software managers, operating in a far less disciplined and less data-driven environment, one with much less history and of a complexity perhaps equal to the complexity of the anatomical systems that are the doctor’s purview, blithely promise features, dates, and outcomes not especially susceptible to prediction. Worse, doctors are usually dealing with a subsystem that is malfunctioning While the overall system remains largely functional. In software development, the goal is often a wholly new system that has never functioned before at all.

- Why I right click

Just been to a friend's website and discovered that it was preventing me from right clicking on anything.  They obviously decided to add the bit of javascript to the page to prevent naughty people from downloading the photos they'd put up there. However, preventing right clicks is a very bad thing indeed.  Here's why:

  1. If I really want to download your pictures I'll be able to do it by other means
  2. I need to select text so that I can:
    1. Bookmark in delicious
    2. Craft a tweet using the bit.ly sidebar
    3. Search for that text in Google
    4. Get the definition from my built-in dictionary
    5. copy the text into my blog editor so I can link to your website
  3. Maybe your page is broken in Firefox, and I want to view it in Safari or Internet Explorer
  4. Maybe I'm a web developer and I want to inspect the html element under my mouse so I can see how you've built the page
The point is that the context menu provides me with more than just "Save Image As...", and you're making things very difficult for me to use your site if you don't let me use any of those tools.

- Career Development

This week saw the launch of a career development intranet site in the Future Media part of the BBC, which predictably raised lots of questions about why some roles were on a particular grade while others weren't. Part of the ensuing discussion was regarding career progression; it's not possible to progress beyond a certain pay grade and still be a web developer.  Which got me thinking about my career, where I am now and where I hope to get to. On reflection, I realised that my job title and pay grade are largely irrelevant when I'm thinking about my job satisfaction.  Instead, I came to the conclusion that I can judge my position on the spectrum of career happiness with the following four questions.

  1. Do I get to do something that I love? (or, Do I love my job?)
  2. Am I paid fairly for doing what I do?
  3. Do I get the recognition I deserve for the job I do?
  4. Is there a role available to me (that fits with my career aspirations and life choices) in the organisation that I can aim for (and that allows me to say yes to these questions)
Of course, it's easy to see that behind those questions are the issues of job title, pay grade, career ladders and job descriptions, but those are solutions to the problems not reasons for being happy. If I can't answer yes to at least two of these questions then I reckon it's time to think about moving on. My answers:
  1. Yes
  2. Yes, almost
  3. Yes, most of the time
  4. No, but only because I'm not prepared to move to London or Manchester.

- Twitter Cold Turkey - 4 hours in

I decided to stay off Twitter for Lent. Hopefully I'll find my productivity increases. I'm planning on spending more time reading blogs (so old fashioned) and perhaps even speaking to people on the phone or face to face (how archaic). 4 hours in though, and I'm struggling. I'm used to commenting on things that irritate me via a tweet, and now that I can't do it I'm finding it hard to find an outlet. Maybe I'll become more annoying and start commenting on things to my colleagues, or maybe I'll become a bit more patient with things that aren't how I'd like them to be. I think I'll start using this blog as an outlet, which will force me to think a bit more about ideas. Hopefully my writing will improve as I get used to putting an idea down in long-form rather than in the 140 character sound-bite. It's also worth noting that I'll probably fail miserably and be back on Twitter by tonight. If that's the case I'll just hide this post so no-one knows how rubbish I am at sticking to things!

- Social glue

Idle and simple chit-chat - about the weather, or TV or other inanities - acts as a type of social glue which allows us to tolerate each other. Without it, we'd avoid going anywhere as the awkward silences when we met people would become impossible to deal with. It also acts to keep us apart so we never really get to know each other well enough to really care. We get by with the "how are you?", "Fine" conversation so much that we never go deeper, never push into potentially uncomfortable and revealing areas of conversation.  We never truly engage with people enough to find out what makes them tick, what keeps them up at night, what they aspire to.  And the result is a somewhat lonely existence, we might have lots of "friends" (in the Facebook sense), but we don't really know them, and if we needed help and support they probably wouldn't be there to help. But how do I switch from the former conversation to the latter? How do I break the bonds of the "social glue" and form stronger, closer bonds of friendship?

- Getting to Heathrow in good time

When aiming for the 17:15 BD090 from LHR-BHD, it's best to get the 16:10 Heathrow Express from Paddington, unless you want to run the risk of missing it. The 16:25 might do, but you'd be cutting it fine, and if there's a queue at security you might miss it.

- Autumn Weekends

It's mid-October, it's beginning to get cold and the days are shortening fast. We went to the Lock Keepers Inn on Saturday morning (the 16th) with the folks for a cuppa, then walked from there up to Shaw's Bridge to the playpark. The trees are amazing, and I got a couple of nice shots (which aren't online yet). Washed the car in the afternoon (always fun with the three year old), and watched the new Channel 4 thing The Pillars of the Earth. Not awful, but not really great either.

- The Digital Future

Notes from John Linwood's Keynote at the Belfast Media Festival 2010, filtered through my head, twice (once into my notebook, then from notebook to web), and annotated with my opinions. Starting with some "future altering initiatives"

  • Digital Production
  • Publishing the archive
  • Interactive
  • On Demand
  • Web
  • Cloud / Virtualisation
  • Convergence
  • Frictionless Technology
  • Metadata
  • 3D
  • UGC
  • Consumerisation
  • Social Media
  • HD
  • Virtual Broadcasting
Interesting things in this list,
  • consumerisation - technology at home is better than we have at work.
  • Frictionless Technology - how easy is it right now to publish content on the web? It's not that easy if you work for the BBC (compared to the simplicity of pushing content to Twitter, Youtube, Flickr or Wordpress).
  • Interactive - the Media is still stuck in a linear world, where broadcasting is the final step. The interactive world almost demands that broadcasting (i.e. publishing on the web) is the first step, and content is enhanced as people use it. We need to start thinking about interacting with our audience which demands that we produce/develop content as our audience consumes it.
  • Shared Experiences with content are important. If we're all surfing the web and consuming content (be it text or video) via our connected devices like ipads, phones, laptops, then we lose the shared experience of sitting round the TV together. How can we provide opportunities to share experiences in the on-demand, off-schedule, mobile media world?
  • The Engineers are in the ascendancy. When the BBC was formed in the 1920s, it was an engineering led organisation. With the rise in on-demand and the interactive media experience, the engineering role is becoming more important again. John quoted the mantra of needing not just technical people and creative people but of having technical Creative people and creative Technical people. I'm not that impressed with this statement, I don't think the two roles have ever been separate. I'd argue that in general, technical people are and always have been creative. I actually think the challenge is that with the rise of the web, it's not possible to move from producing content for TV & Radio to producing content for the Web without learning the technology. You can't just write content or produce a video clip any more. You need to have an understanding of just about everything that John listed, which means you probably need to be T-shaped. A broad general knowledge of the medium and a deep specific knowledge of your chosen subject.

- tips for storytelling

I was at the Belfast Media Festival today, and one of the sessions was on storytelling, presented by Frank Ash. An inspirational session talking about how to tell good stories in Factual programmes. Frank sped through lots of useful tips and gave us a good framework for thinking about the story our production is trying to tell. It was probably all common-sense, and normal practice to those who make TV, but coming from outside, I found it all quite new (at least I hadn't thought about it before). This is a bit of a brain-dump of what I can remember. A story needs to be a journey. The start needs to be intriguing, we need just enough information to make us curious. The rest of the story needs to answer the questions raised by the start and we need a good conclusion that completes the narrative arc and resolves the main question. There are universal themes that any good story needs to cover, though not always explicitly. We the audience need to identify with those themes even if we aren't familiar with the specific incidents. We need characters we can care about. Not too many, just enough to give us all the information we need to resolve the narrative. The story needs to have events, incidents that cause a conflict for the character, that force him to consider his position and to make a choice. So how do we apply this to storytelling on the web? Well, I'm not sure. I think that potentially what we are considering stories on the web aren't actually stories. Experience tells us that our audience won't enter a site by the front door, so we might not get the chance to introduce the story properly. How do we ensure that we answer the right question then? If the audience has a different question in mind they will be dissatisfied with the conclusion of the story (because they won't get an answer). Of course, the flexibility of the web allows us to provide lots of endings for the story. We can allow the audience to choose where to go, so the incident that causes a conflict for the central character could easily become a choice-point for the viewer. The opportunity of the web is it's freedom. We aren't limited by how long our programme is. The audience can experience our story in multiple sittings, and can choose to leave at any time. The humble link gives us endless possibilities for changing the direction of the story. We can choose to provide a quick and simple version, or an in depth, complex one; one with a happy ending or a tragedy. The best online storyteller is possibly the one who knows when enough is enough.

- Needs a bit of polish...

Once again, it's another wet Monday afternoon. It's lunchtime and I'm sitting at my desk listening to Guy Garvey sit in for Cerys on the iplayer. There's a fly buzzing around the desk which is really irritating me. I'm probably going to go mental and embarrass myself in a minute trying to kill it. This week's fieldnotes start last Thursday. It was the Girl's 1st birthday, and I took the day off to help Mrs A prepare and host a low-key party. [caption id="" align="alignleft" width="180" caption="The Girl's Birthday Cake (with plastic ducks & dodgy white balance)"]What a ducking great cake[/caption] We had three cousins and 8 adults round for tea and cake. The Girl put on an amazing grumpy face when we were singing to her, and the Boy ran around bossing his cousins. Back to work on Friday. Quite a good day, we took delivery of a great prototype (which we'd started work on at the end of August). It's looking very good, and if we actually build something as good as or better than that then we'll have something really worth talking about. Saturday morning was spent in Lisburn shopping (I got a new shirt), then we went to the Lagan Valley Island for a short walk before going home for lunch. Interestingly, as a child I used to run around one of the mills that sat on this spot. My grandfather ran a business from the one on the County Antrim side of the river. It was very exciting to play in what was probably a very unsafe environment (I remember jumping over holes in the floor which had a three storey drop below). [caption id="" align="alignleft" width="180" caption="The Lagan at Lisburn (and more dodgy white balance)"]Lagan towpath at Lisburn[/caption] We went to the Jharna for a curry with all of Mrs A's siblings and their significant others. A really great night, lovely food and good craic. It's been a long time since we were out later than 11pm, but now that the youngest is one we can start living again. Sunday morning at Church, then lasagne for lunch. Grass cutting (maybe the last of the year?) and hoovering in the afternoon, then out again to Church for Fellowship Group. The weekend ended with Mission Impossible III (again).

- Wet and Windy

Today is a really nasty day. It's blowing a gale and really tipping down. There's a swimming pool forming on the roof of the BBC Club. [caption id="" align="alignleft" width="240" caption="How young I look. 6th September 2002"]Just Married[/caption] Today is also my wedding anniversary. This time (actually I'm not too clear on what time the service started at), 8 years ago I was standing rather nervously waiting for my beautiful wife to arrive. She was sitting in a car waiting, because it won't do to for the bride to arrive early. So, the weekend. Saturday was a pretty full day, we started it at IKEA, watching the planes come in to Belfast City Airport. Didn't spend too much, but we do now have matching bedside lamps. The afternoon was going to be a trip to Homebase and a new kitchen drawer, but that didn't happen, instead I helped build a duplo airport. We were at the in-laws for dinner in the evening, steak. Pretty good craic. The evening was rounded off by Avatar, not a bad movie actually. Sunday was church (it was ordinary folk who spread the early church, not the superstar apostles), then salmon for lunch and a dull afternoon which ended in grumpiness all round. Mrs A and the Boy made rock-buns for tea, then it was bath-time for the kids. I fought a pitched battle with the Girl over a cup of milk at bedtime, which she won convincingly. Thankfully she settled down eventually and slept all night. We watched The Pursuit of Happyness, then Would I lie to you on iPlayer.

- Monday afternoon...

I'm sitting having a cuppa in the kitchen; the Girl is trying to put an elastic band one of the kitchen cupboard door handles; the Boy is out playing in his sandpit and the Mrs is upstairs cleaning the bathroom. I'll shortly go out and cut the grass while she makes some soup for lunches during the week. This morning, being a bank holiday and therefore a day I don't need to go to work, we were all awake at 7am. By 10.30 we were over in Holywood having our elevenses at the Yard Gallery (definitely my favourite coffee shop right now). We always feel scruffy when we go there, so many well dressed wealthy people. We left there to go to the beach and playpark at Ballymenoch Park, where we also felt a bit scruffy. It's a good place to go to indulge in inverse-snobbery. Then, to top off a great morning we headed into Belfast for lunch, ending up at the Gourmet Burger Kitchen at Victoria Square (very nice and helpful staff). The boy loves the viewing platform at Victoria Square so we endure the lifts (there simply isn't enough of them). [caption id="" align="alignleft" width="180" caption="Looking down from level 2 on Victoria Square"]Victoria Square, traffic cone[/caption] Back home at 3pm for an afternoon of chores, as long as we can work up the energy. The boy and girl are fighting over her birthday present right now. He never gives her a chance to play with anything on her own.


Church in the morning followed by a very quick jaunt up Divis (we didn't make it to the summit this time). [caption id="" align="alignleft" width="240" caption="Looking south to the Mournes from a very windy Divis"]Breezy Divis[/caption]


Belfast Zoo in the morning and ToysRUs in the afternoon. [caption id="" align="alignleft" width="150" caption="The View from the "cafe" at the top of Belfast Zoo"]Belfast Zoo[/caption]

- On right now on BBC Radio

Picture the scene, you're sitting at home listening to Patrick Kielty on BBC Radio 2 while reading the Saturday papers. On comes a guest that you really can't stand listening to, so you change the station. But what's on? BBC Online doesn't provide a simple interface to show you what's currently on air on every station (the best they've got is the radio homepage). On Right Now on BBC Radio. I hacked this together over 2 evenings this week. It's a PHP script that grabs the xml version of the BBC Radio Schedules (here's Radio Ulster's) parses out the programme that's on air right now, and presents them in a fairly useful way. Clearly some extra effort required in polish, and probably some better caching required, but I'm fairly happy with it. You can hide services by checking the relevant checkbox at the bottom of the page and submitting the form (or simply by appending hide[]=:service_name to the URL as many times as necessary [here's Radio Ulster only]) Currently the schedules are cached for 10 minutes, so every 10 minutes the page takes an age to load as it makes 66 http requests in the background. I'll attempt to fix that at some point. (Just spotted this from Roo Reynolds, not as comprehensive but faster, What's on Radio 4 right now?)

- Add a QR code to every webpage

This is a greasemonkey script that encodes the URL of the page you're viewing in a QR code. You can then use the QR code to open the same page in your mobile device. It uses Google Charts to generate a png which it puts unobtrusively in the bottom left hand corner of the browser viewport. Click on the image to pull it into view (and again to hide it). // ==UserScript== // @name Add QR code // @namespace all // @include http://* // ==/UserScript== GM_addStyle(().toString()); function toggleCode() { code = document.getElementById(codeID); if(code.className == "gm-qr-show") { code.className=""; } else { code.className ="gm-qr-show"; } } codeID = "gm-qr-code"; img_src = "http://chart.apis.google.com/chart?choe=ISO-8859-1&chs=100x100&cht=qr&chl="; if(window.top == window.self) { page_url = window.location; img_src += encodeURI(page_url); i = document.createElement("img"); i.src=img_src; i.id = codeID; i.addEventListener("click", toggleCode, false); body = document.getElementsByTagName("body")[0]; body.appendChild(i); } Edit: Updated to ignore iframes.

- Add a QR code to every webpage

This is a greasemonkey script that encodes the URL of the page you're viewing in a QR code. You can then use the QR code to open the same page in your mobile device. It uses Google Charts to generate a png which it puts unobtrusively in the bottom left hand corner of the browser viewport. Click on the image to pull it into view (and again to hide it).

- Skillset of a web development team

Generated from a list initially provided by @mr_dudders

  • Information architecture
  • Content strategy
  • Domain modelling
  • Audience research
  • Interaction design
  • Typography
  • Colour theory
  • User testing
  • Usability testing
  • Graphic design
  • Accessibility
  • Usability
  • SEO
  • HTML / CSS / JS
  • Flash
  • OOP
  • Java
  • HTTP
  • Caching

- Skillset of a web development team

Generated from a list initially provided by [@mr_dudders](http://twitter.com/mr_dudders)