Ralph Cooper

Climber, photographer and software developer.

Profile

.NET Web Development Specialist
Computer Software | Nottingham, United Kingdom, GB

Summary

I design and develop applications for the web, specialising in Microsoft technologies such as ASP.NET, C# and SQL Server, supported by a solid grounding in client side markup and jQuery.

I firmly believe that applications should be:
- Responsive, making use of all that browsers have to offer
- Standards compliant with clean markup and work across all modern browsers
- Maintainable with clear separation of concerns
Specialties: Web development with the Microsoft .NET framework, requirements gathering and analysis, stakeholder management, leading small development teams

Experience

  • Nov 2009 - Present
    Senior Software Developer / PXtech
    One of 3 senior developers in a team of 7, I have fulfilled various roles within numerous development projects. Project Manager/ScrumMaster on a major project for a customer in North America: Leading the original deployment, development and later transition to SCRUM of one of the largest development projects taken on to date. Modifying and redeploying our key BI platform specifically for the Subway global franchise market, then enhancing the product to be specific to the needs of users throughout the organisation, from Franchisees to the CEO. Lead developer for generic BI platform for quick service market: Tasked with taking an existing customer specific platform and redeploying for more generic plug-and-play use. The system needed to cope with data from numerous sources running different POS software, displaying useful "out of the box" reports based on common data, but also supporting extensions for specific POS types where appropriate. Transformed developer time tracking and project budget reporting: Developed an MVC web application based upon an existing spread sheet approach to time and budget tracking. Working mostly in my spare time, I created the application because the existing system was becoming more complex due to the number of concurrently running projects and the expanding reporting requirements of the management team. The system has now been accepted by the business as the primary way to track time and projects and has been enhanced numerous times to provide more detailed reporting.
  • Sept 2005 - Present
    Consultant / PA Consulting Group
    One of the top performing graduates at PA. Sought after internally for high profile and technically complex projects delivered using the .NET framework. Started out as a developer and business analyst, but moved quickly into development lead and management roles.

Education

  • 2002 - 2005
    University of Nottingham
    2:1 in BSc (Hons) Computer Science
    Activities: Climbing, Badminton

Additional Information

Interests:
Rock Climbing, Badminton, Squash, Cycling

Posts

August 19, 04:17 AM
As one of the more experienced developers on my team, I find part of my role becomes to promote good coding styles. Anything from separation of concerns, right through to simply breaking down large functions into smaller distinct parts.


Promoting the practices and explaining them is often the easy part, but explaining why is nearly always a challenge. Here are just a few reasons, and common responses that I've come across:


Testability
Put simply, if you've written your code well, your methods perform distinct testable functions, and your concerns are well separated from your UI, to business logic and data access, then your code libraries are well on their way to lending themselves to unit tests. Applications where business logic or even data access is hidden in UI code, or functions stretch to several hundred lines performing many different actions as they go, are virtually impossible to write unit tests for.


The most common response I have seen to this, is that we don't write unit tests. The simple answer to this that we should! And even if we're not now, we may in the future want to build a suite of unit tests to help us maintain the quality and functionality of our deliverables as we introduce change. If we don't code as if we're going to be unit testing, we'll never be able to.


Readability
Code that is laid out well, with short distinct functions, and that follows a consistent set of guidelines (e.g. naming conventions) is more readable. Fact. Applications with good separation of concerns and naming of libraries, are easier to navigate for the developer and make finding the relevant code easier. Single lines of code that perform several functions in one are often a nightmare to understand for other developers looking at your code.


It seems whenever I suggest that someone's code isn't very readable (or, more delicately, that it could be more readable), the response is always "I can read it fine". Well great! But what about the next person that picks up this code and has to figure it out? Readability is to some extent a subjective measure of code quality. Some people will find certain styles easier than others. However certain styles and standards have come to be because the majority find them easier, and find that it saves time when going back over code. Therefore it's a reasonably safe bet that following these standards will mean that the next person to see your code will find it to be readable.


Maintainability
This one's a real stinker. Because no developer ever believes their code will need to change. That belief is almost always wrong though, because requirement change, bugs will need fixing, and things will get refactored. Code libraries with concerns intermingled and with long multi-functional methods are a pig to cut through and change in any way. They just take a lot longer than well separated and laid out code. If I'm fixing a bug in the data layer, I don't want to go anywhere near the UI. Doing so introduces change to an area of the system that doesn't need changing. I want to go to the data layer, find the offending method, fix the bug, then run a unit test that proves the fix worked. The Coding Horror blog once posted that you should:


"Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live"


This, whilst written in jest, is something anyone who's had to maintain poorly written code can relate to. It's a frustrating process and one that will quickly drive you mad!


Pride
The last reason to write good code, is something very simple but sadly overlooked by many. I take pride in the work that I do, both the end results and the quality of the build that went into it. It's been suggested that the end result is all the matters, that the quality of the finished application is enough to be proud of. But a carpenter who builds a table, will take pride in every aspect. Not just the finish, but the joints, fixings, quality of wood, cuts, everything. Not just the parts we can see, but the entire article. They've built the table to the best of their ability, and it's built to last. 


The same is true of building applications. The finished product, whilst a very important part of the puzzle, is still just that, a part. The building blocks, the pieces that make up the finished whole, are just as important. A great application that's poorly written, will be overly costly to maintain. What's the point in building the latest and greatest word processor, if the next version will require a huge and costly development effort to add just a few new features?

For me, I take pride in building quality, functional and maintainable applications that not only fulfil the needs of end users, but also developers working on new features and maintaining the product. Through testable, readable and maintainable code, I know I've done my very best to ensure a quality result all round.


December 31, 04:49 AM

So the end of 2010 is upon us. People the world over are preparing to welcome 2011 with cheer and gusto, or if you live in the UK, with a cough and a splutter it seems.

There are many things 2010 could be remembered for - the general election, spending cuts, the commonwealth games, the world cup... ok maybe not the world cup - but for me, what's fresh in my mind at the moment is simply that everyone seems to be celebrating Christmas and the end of the year with cold, flu or sickness of some kind!

Family, friends, colleagues, I can't think of a single household not affected by it in some way. The news may be telling us that the flu cases aren't at the highs we've seen in the past, but I can't say I believe it. Maybe reported cases are - and maybe that's because we've been better at vaccinating 'at risk' groups this year - but most people will just stay at home and stick it out if they're ill. There's nothing your GP can do unless you're dying, so why put yourself through the pain of getting out of bed to go and see them? If we could count up all the unreported cases too, I think we'd see a different picture.

So what does this leave us for 2011 then? Well hopefully not too much more of the same. More cold weather is on the way, which won't help, but eventually the viruses will back off and leave us to make up for lost time. On the plus side I guess we won't all be carrying an extra half a stone from Christmas over-indulgence!

Resolutions for the next year? I'm sure we'll all have a few, some we might even keep. I think my main one is probably to just "go after it". More a change in attitude than anything else, but the last few weeks have felt a bit flat with not a lot going on. That's partly due to the weather (stopping us getting out), but partly down to laziness and not really pushing myself to get on and do the things I want to. Time to put that right and go after the things I want - I'll be 27 soon afterall! :-S

So whatever 2011 has in store for you, I hope it brings all that you hope for and you welcome it in style tonight. Happy New Year!


December 16, 02:15 PM

How do you define yourself? What do you do? What are you?

This evening I sat down and asked myself these very questions. I probably think of myself as a web developer, software consultant, climber and amateur sportsman. But can I be all of these things? What about my other interests? I like to cook, does that make me a chef too?

Many people might say that your job is what defines you and lets face it, what you do for a living becomes a large part of who you are. My job title is "Senior Developer", but what does that mean? In reality, I probably spend about half my time at work "developing" i.e. writing code, while the rest of my time is spent problem solving, communicating within the team, mentoring, managing expectations,  investigating things that go wrong, planning ahead and learning. Does that make me a developer? Well probably, but that only tells half the story doesn't it?

Maybe time for a different approach. Starting with a blank sheet of paper, I wrote down as many skills, qualities and personal attributes for myself as I could think of, doing my best to group things together where possible. I ended up with 4 distinct sections on the page: development, collaboration, consulting and personal. Working with this I could say yes, I am a developer, but I could also be a technical consultant, facilitator, team player or any number of different things! The page defines my skill set, but does it define me? Not really.

So how do you define yourself? Maybe I'm simply a nice guy, who's passionate about what I do and likes to be challenged to better myself. Maybe it's as simple as that. That'll do for now I suppose, until tomorrow... then maybe I'll be a developer for a bit.


September 22, 08:17 AM

Is it just me, or is anyone else really not bothered this season? Too much money, cheating, arrogance and playing the media going on, and you can't watch a game without forking out for sky anyway.

To be honest, there are far more important things I'd rather be doing with my time and hard earned cash.


August 02, 04:56 AM

Table Tennis, Badminton, Squash and Tennis all in one tournament: http://www.englishracketlon.org/


I had a go at the Broxtowe racketlon tournament at the weekend... great fun! I lost in the first round (poor shows in Table Tennis and Tennis put paid to any chances of progressing), but went on to win the Plate (losers) tournament after that.

The only downside for the day really, was that it was a bit long, 5 games in all if you reached a final, and by the last game I was pretty drained.

If you play any kind of racket sport I'd strongly recommend having a go at one of these. Most tournaments are graded, so if you're only any good at one or two of the sports then don't be put off! You never know, you might surprise yourself :)


July 26, 07:42 AM

After a day in Swindon on Saturday visiting my Mum and trying to help out with what I can, Sunday was time for a return to climbing.

A day at Curbar:

Cioch Wall (S 4a) - Lead
Wall End (VS 4c) - Second
Heather Wall (VS 4c) - Second
Mastiff Wall (VS 4c) - Lead
Gladiator Buttress (VS 4c) - Lead
Sorrell's Sorrow (HVS 5a) - 10 minutes of faffing around on the initial "fist jams" (arm bars) before backing off in pain to let Ali second the route instead

Today I'm in pain pretty much everywhere. Got a squash match tomorrow night, hope I've recovered a bit before then!


June 16, 03:10 AM

It's an oddly satisfying feeling to know that the food you're eating came from your own garden. I imagine if the ingredient in question was even slightly more substantial than a few herb leaves then the feeling of satisfaction would be even greater.

Right now we've got Basil and Mint in the kitchen window, then Sage, Parsley and Thyme outside. Hoping to expand these with some Rosemary and Oregano soon too.

When we come to buy a house, there'll have to be space to grow some actual vegetables in the garden. Aside from the obvious satisfaction and sense of achievement in growing our own potatoes, we'll keep ourselves busy planting and harvesting, and save literally pence per week in the process.

Rock on, can't wait! ;-)


June 04, 08:41 AM

This morning, I finally ditched my hosting agreement with HostRocket. Whilst the deal they were giving me was fairly decent at about £40/year for nigh unlimited space, I just wasn't using it, so I wasn't up for fronting £80 for the next 2 years right now.

I've still got my domain though, just need to decide where to point it.


May 20, 05:21 AM

Sometimes, Google's predictive search throws up a gem. This morning was one such time, when searching for "Average size waist"



April 14, 07:28 AM

In the last few days or so the Opera iPhone application was approved into the app store and almost instantly shot to the #1 free app spot. Not wanting to miss a trick, I thought I'd give it a try.


Overall, I have to say I think the app has some great features, but at the moment it's got too many problems to become my iPhone browser of choice. I'm sure a few of these are bugs that'll be fixed in due course, but there are some design drawbacks that may be more difficult to remedy.

First the good bits:

Speed
It's hard to deny that over a slow connection, this is a quick browser. The compressing of data centrally, reducing the amount of data needed to be transmitted, makes a big difference over GPRS or Edge. Without doubt I will be keeping Opera on my iPhone just for this, as I spend a fair bit of time out of 3G or WiFi range.

Speed Dial
I like this feature on the desktop, but on the iPhone it comes into it's own I think. Quick links to your favourite sites, right there on your home page. No need to add links to your iPhone home screen, or navigate to find bookmarks. Just go where you want straight from the home page. Brilliant.

Unfortunately, I'm afraid I ran out of really good things at this point. Moving on to the problems:

The Interface
I really like the way tabs and settings rise up from the menu bar at the bottom, rather than switching the whole screen. Although frustratingly, detailed preference screens do take the whole screen and tapping 'Back' doesn't take you back to the menu, it closes it. This makes browsing the settings screens to explore the app a painful experience of repeatedly tapping the spanner icon on the main menu bar.

The tabbed browsing interface is frustrating too. You have to tap between tabs rather than flick, which gets increasingly difficult the more tabs you open. Opening a new tab brings up the homepage, but doesn't automatically select the tab. You've got to tap inside the page to bring it to the front and use it. I can't see any situation where I'd want to open a new tab just to have it there and not use it right away. The extra tap is just annoying.

Rendering
The very first site I tried on Opera was the BBC News main page, probably my most regularly visited website. Immediately I was unhappy that I couldn't read anything, not even the headlines which are in a fairly large font, and clearly readable in Safari without zooming. If I can read any part of a page when fully zoomed out, I can't possibly expect to make a decision about which bit to zoom down to. This could be that Opera is using a different rendering engine to Safari and these fonts are being displayed smaller, or it could be something else that's been implemented to speed things up. Either way, for me it's a problem.

Form Input
To be fair, this is probably a bug. But when entering data into a form (I used the facebook login page as an example) my input was not visible once I completed entering it. It was still there, I just couldn't see it! I entered my username 3 times thinking something had gone wrong, until eventually I just moved onto password in the hope it might just work, and it did (well, sort of... see below). This lack of visual feedback on form input is a big deal, especially on any form that has more than 2 elements. I imagine this will be fixed in a future release.

Security
Ok. I said logging into facebook worked, well it almost did. I immediately came to a security screen saying I was accessing the site from a location that was unfamiliar. Strange, yes, but I assumed it was a new mobile browser and maybe facebook was flagging that. I logged onto the site on my computer and it showed that I had tried to log in from Norway at 03:30ish. This was at around 11:30 BST.

Facebook had been entirely correct to flag this, and I denied the access on the basis that it didn't tie up with what I'd attempted. I assume (well, OK, it's pretty obvious) that this is the location and time reported by Opera's compression servers through which all traffic is proxied to the iPhone, and that has some security implications. First of all, there is no SSL or encryption support. So for any kind of secure site access, stick to Safari. Then there's this issue, which for Facebook I could obviously care less about, but for other sites? I don't know. Google defaults to google.com, not .co.uk, which could be more annoying.


So, all in all, I'll be sticking with Safari for 90% of my internet use on the iPhone, saving Opera for those times when I really need to get to a site and don't have 3G. It'll be interesting to see how the browser market on the iPhone picks up now though, given that noone really expected Opera to be approved in the first place. Maybe we'll see a few more entries into the fray in the coming weeks and months...


March 31, 03:44 PM

Prof. Lovelock, I couldn't have said it better myself.

Lovelock: 'We can't save the planet' (BBC News)


March 29, 09:13 AM

Hi there, thanks for stopping by.

This is my new blog, where I'll post thoughts, opinions, reviews and probably a bunch of other stuff too, of equally little meaning or interest to anyone :)

The title of this blog, "Lost Thoughts" illustrates what I think happens to the majority of blogs or postings on the internet. They are ultimately lost in the ether, forgotten by their owners and left with little or no activity for years on end. How do I know this? Well, while trying to find an available blogspot url for this site, I decided to visit a few of the ones that were already taken (and there were plenty of them before I finally arrived at this one). I'd say the vast majority, not all, but many, had between 1 and 3 posts and were last updated before 2007. The first one I wanted, my name, had one post dated 2006... that's it.

I wouldn't be surprised if this blog ended up taking a similar path, hopefully lasting a little longer than 1 entry, but in the end forgotten and infrequently revisited. I'd be kidding myself if I thought anyone besides myself was likely to be interested in what I write, but then that's not why I do it anyway.

Writing for me is simply a way of collecting my thoughts, or venting my opinions. My little voice (or whisper) on the internet if you like.

So here it is. If you've read this far, I want to know why? Seriously.

Ralph


About

About Me
Some text about me
abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz