Think about your users when writing your content
Thursday, October 20, 2011 2:20:06 PM (GMT Daylight Time, UTC+01:00)
Ignoring the aspects of design, SEO duplicate content, underlying code and tone of language, as a content editor you really should give consideration to your user and what they're looking for. I generally steer clear of critiquing -or even commenting on work that isn't our own (or when being asked by the creator) but sadly there still seems to be a real misunderstanding from clients on what makes a usable website.
We recently launched a website for local award winning pie makers - Elm Tree Foods and as a result we've spent a lot of time dealing with other local providers websites/council websites and I'm left stunned by the horrific experience they're offering their users. What riles me more about this though is the fact that most of their users are the sort that need to be helped through the process as they aren't often familiar with the internet (somewhat of an over generalising I realise).
A good example I came across today is Herefordshire's main tourism website: www.visitherefordshire.co.uk. It's well ranked for the search term of "Flavours of Herefordshire" (a good start) but it's then down hill from there. I was trying to find out where the Elm Tree Foods stall would be and when the festival was. We've seen signs locally saying it's at the Hereford Race Course (there's some debate over whether it really is) but we weren't sure that was the case for Elm Tree Foods.
You can try this yourself, see how long it takes you to find out where and when the Flavours of Herefordshire food festival is purely be using www.visitherefordshire.co.uk. Ideally you want all the information on one page.
Step 1: The Landing Page - Homepage
Message on the homepage - good start. Or is it? Take a closer look and you may find that although you've got the dates (and if you continue reading a time) there's still no indication of where the festival is:
Step 2: This week's events in Herefordshire
Clicking the only apparent link on the homepage (I didn't want details on the other events -rather the Flavours of Herefordshire event) takes you through to the listing page which has the Date, location, contact details but no time (which was on the homepage if you remember?).
So we're set? We have the location and the date/time, what more is there?
Step 3: The Flavours of Hereford event landing page (version 1)
Well, not knowing Hereford that well, I don't know where 1 King Street is so need to find that out. Logically I click through onto the event's page and I'm taken to:
Putting to one side the MASSIVE white space on the top right, again there is no mention of when this glorious event will take place. Presumably they were going to put all the clear location/date/time information in that large white space at the top of the column -but were overwhelmed with their workload forgot.
Another point with this page is that the content talks a lot in the past tense which is very confusing, was this page meant to be released after the event?
I still don't have a single page with all the information on so lets pop back to the homepage to see if that offers anything else.
Step 4: Back to the homepage
Back in the homepage for another look and it turns out the title, although not completely clear, is also a link.
Step 4: The Flavours of Hereford event landing page (version 2)
Clicking the title, I'm taken to this page:
Ok good, I've got loads of helpful information here: "Hereford Race Course for the weekend of Saturday, 22nd October and Sunday 23rd October, 2011 - 10.00am to 4.30pm each day" -exactly what I was after (even though it's hidden away in a paragraph of unnecessary fluff)!
But hang on, I thought it was at "Discover Herefordshire Centre, 1 King Street, Hereford, Herefordshire"? What's this about the Hereford Race Course? Also, the other page didn't mention anything about tickets or prices, does that mean I have to pay now? I'm now confused.
Imagine if you didn't know it wasn't at the race course (as I previously did), you'd now be going to the Hereford race course, paying £7.00 to get in and left disappointed at not getting to try Elm Tree Foods' award winning pies. Bad times. To be clear, I won't know until this weekend whether it is at the Race Course or not (or indeed what will be at 1 King Street) so if you're interested, follow me on Twitter to find out first.
"But it's complicated because we have so much content"
We've all heard it from larger organisations when getting them onto the web. It's not hard to confuse the user -and it's also not difficult to help guide the user either; regardless of how much content you have, you just need to give consideration to the user's journey and what the important messages are at each step.
Although it is still having work done to it, here for comparison is the Elm Tree Foods homepage and event details page. Even when resized, the important information is largely available:
But good design costs too much
I don't know how much www.visitherefordshire.co.uk cost to design and develop however, one thing I'm almost certain of is that the user could have been offered a much better user experience than they are currently receiving.
If after reading this you're concerned about your user's experience, contact The Site Doctor for a website check up.
Estimating the real value of source code
Thursday, October 13, 2011 12:16:11 PM (GMT Daylight Time, UTC+01:00)
If you run a software development company of virtually any size, you've no doubt been asked/bullied at some point for the source code; sometimes it's even stipulated as a requirement of the contract.
At The Site Doctor we don't tend to quibble over the source code (especially not for standard websites at least) and that's mainly because we know that the value of what we do isn't in the files of code themselves; instead the value is in our knowledge of you, your product, your requirements and our past experiences in our respective areas of expertise.
Putting to one side for a moment the knowledge gap (this can be filled over time/with enough resources), depending on your future plans, getting access to the source may not be the holy grail you think it is. If you are actively developing your project on an on-going basis (you should be), consideration will need to be given to how you ensure your copy is up to date. We have systems to handle this (called source control) but you have to question whether the additional time required to learn and manage the various processes are of real benefit to you.
There are a few instances however where having access to the source code is definitely worth it. Have you for example got a contingency plan in place for if your supplier was to no longer exist? What would you do and how would you cope if the development company was no longer around? In these instances, having a copy of the source -or more importantly knowing how you can get access to the up-to-date copy is very important.
How can I quantify the worth of the source code to me?
As with many scenarios like this, there's not really a "one solution fits all" answer however after a little internal discussion we came up with the following:
|Value of Source ||Considerations |
|High || |
- Was the system completely bespoke?
- Is it integral to your day-to-day operation?
- Is it your only source of income?
|Medium || |
- Although integral to your business, you have a copy of the software in a usable form and it doesn't change regularly.
- The system offers "standard" functionality which can be replicated with relative ease should it be required e.g. e-commerce functionality.
|Low || |
- The system is something generic, does not need to be changed
- You have control over the aspects that you need e.g. it's a website with a content management system
Is it worth getting the source code as a client?
Yes; but I would consider the message it's giving to your developers. If you ask for it at the beginning of the contract then there shouldn't be a problem but bringing it up after delivery might leave the developers wondering what your motive is (even if it is totally innocent).
Should I give the source code to my client?
Yes; unless you've clearly stipulated otherwise to the client from the start for some reason e.g. to reduce project costs. You should always write your code in a way that is readable to others anyway and knowing that you might at anytime be offering up the source code will encourage you to keep it that little bit leaner.
How do you handle source code with your clients?
To handle a scenario in which The Site Doctor no longer exists (whether it's because we've gone into administration or we're all hit by a meteor), we use Crisis Cover; an online information storage system that securely stores all the information our clients would need if we were no longer around. Crisis Cover then checks that we're still around and if not, distributes the information to the designated contacts.
If you've not already got some form of contingency plan in place I urge you to set something up now whether it's a service like Crisis Cover, Excel or paper!
In closing I would definitely promote the attitude we have at The Site Doctor in that it's better to build long-term partnerships but you should still have some disaster contingency plan in place.
Nuget server on IIS6 returns 404 when downloading package after upgrade
Friday, September 02, 2011 8:03:30 AM (GMT Daylight Time, UTC+01:00)
We updated our nuget server today and ran into a problem where regardless of package selected or whether it's through the nuget package manager or the nuget package explorer, the server returns 404 (File Not Found).
What was odd about this was that the packages exist and the feed was valid:
There are a couple of comments about this online e.g.: Codeplex Discussion 246387 but nothing helped. It took a while to work out that it was caused by a slight change to the way the nuget server makes it's calls. Comparing the IIS logs between the old and new version of nuget server, the previous version of nuget server would redirect the user directly to the nupkg file:
2011-04-21 08:47:46 W3SVC1759424837 192.168.1.1 GET /Packages/TheSiteDoctor.126.96.36.199.nupkg - 80 - 192.168.1.2 Package-Installer/1.2.20325.9034+(Microsoft+Windows+NT+6.1.7601+Service+Pack+1) 200 0 0
On the new one however, it passes the various requests through a new MVC route "download":
2011-09-01 11:31:16 W3SVC1759424837 192.168.1.1 GET /download/TheSiteDoctor/188.8.131.52 - 80 - 192.168.1.2 Package-Installer/1.2.20325.9034+(Microsoft+Windows+NT+6.1.7601+Service+Pack+1) 404 0 3
This is fine if your nuget server is running on IIS7, it will "just work". However if you're running IIS6 you'll need to make one additional change which is mapping all request through the aspnet_isapi.dll (a wildcard mapping). This is easy enough:
- 1. Open the site's properties in IIS6
- 2. Navigate to the "Home Directory" tab
- 3. Click the "Configuration" button:
- This will then open the "Application Configuration" window:
- Now you'll need to add the aspnet_isapi.dll mapping, the path of this will depend on the whether you're running Windox 64bit or not:
32bit Framework: c:\windows\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll
64bit Framework: c:\windows\microsoft.net\framework64\v4.0.30319\aspnet_isapi.dll
Make sure you uncheck the "Verify that file exists" checkbox
Et voila your packages should all be working again.
Leave a comment if you need any additional help or it helped you.
How to hide a tree node in uCommerce or Umbraco
Wednesday, August 31, 2011 10:37:04 AM (GMT Daylight Time, UTC+01:00)
Have you ever needed to hide a node in the Umbraco or uCommerce trees? It's actually very easy, we needed to hide the Orders, Marketing and Analytics nodes of a new uCommerce install we were working on. All you need to do is set the "treeInitialize" value in the umbracoAppTree to false. This will then hide the entire tree.
The Update SQL
UPDATE dbo.umbracoAppTree SET treeInitialize = '0' WHERE appAlias = 'uCommerce' AND treeTitle = 'Analytics'
To use the SQL you will need to know the appAlias (this is the bit after the # in the Umbraco admin url once you've clicked the section icon e.g. in "http://www.domain.com/umbraco/umbraco.aspx#uCommerce" the appAlias is uCommerce). If you know the treeAlias it might be better to use that but it's probably easier to use the tree's title (in our case this would be Orders, Marketing and Analytics).
Not sure what tree you should be hiding? Just open the umbracoAppTree table and you'll have the trees from all sections there.
uCommerce tree before
uCommerce tree after
Couldn't be any easier could it!
Is the power of social media returning the power to the people?
Thursday, July 07, 2011 11:17:00 PM (GMT Daylight Time, UTC+01:00)
I watched a couple of really interesting things unfold today which lead me to believe that this is a day I won't forget for a while -and Twitter (or more widely social media) was instrumental in both.
At 12:04:25 today (7th July) Sarah tweeted this status which linked through to her blog post about currys.co.uk which vented her frustration at the way Currys UK treated her.
This isn't the first time that a frustrated consumer has openly complained about their service from a large corporation (and it won't be the last) but where in the past most of the blog posts have fallen by the wayside, what's interesting about this particular instance is the additional clout Twitter added.
I'm almost certain that the call-center person thought "whatever" when Sarah said that she was going to show them the power of social media but I don't think they quite expected the response they got.
|Hour (GMT) ||Tweets |
|12:00 ||121 |
|13:00 ||80 |
|14:00 ||49 |
|15:00 ||33 |
|16:00 ||10 |
|17:00 ||10 |
|18:00 ||7 |
|19:00 ||1 |
|20:00 ||1 |
|21:00 ||2 |
|Total ||314 |
We wrote a monitor for the various projects we're working on at the moment so I setup a search for the phrase "sazzy currys" which resulted in the following data:
Within the first hour alone, around 120 tweets had been sent. "120? That's a drop in the ocean for Currys" I hear you say -this is true. However to help put it into perspective, when we launched www.borninthebarn.co.uk, 35 tweets generated well over 5,500 hits (and it's still rising) so using the same ratios, that's roughly 19,000 hits and it doesn't factor in those tweeters with far more reach than my followers have (many of Sarah's friends have over 10,000 followers) so I suspect that 19,000 is conservative.
Assuming the same ratios throughout then, so far in the space of 10 hours, Sarah has reached and audience of well over 50,000 people -all who are able to empathize with her and will no doubt further communicate the message.
Ironically (or perhaps more conveniently) @CurrysOnline was only setup within the past two weeks* so this isn't a great introduction to social media -but could certainly be turned around and turned into a good thing if they played their cards right.
* Interesting side note, I did question whether that's an official account because:
- Their first tweet was on a Sunday -not necessarily what you'd expect from a company that I rather suspect only makes their marketing department work Mon-Fri 9-5
- They're not using the same logo as the website (could just be an internal branding issue granted)
- There's no mention of the account on their site from what I could see from a cursory read
The Public vs. News of the World
The second -and I think more concerning/end-of-and-era type thing that happened today was that News of the World (a UK tabloid) announced that it was printing it's last issue this Sunday.
Putting to one side the ethics of why it's getting closed down, I get the impression that social media as a whole has played a large part in the decision. In the past (as with the @Sazzy vs @CurrysOnline above), people have ranted and raved online about things but as there hasn't been a real "collective" so to speak, these haven't had that much of an impact.
Today however I've seen message after message about the News of the World (it's also been fueled by Rupert Murdoch's BSkyB takeover bid) but the general temperature of the public can now be actively monitored -and sadly for these large corporates it's all out in the open.
As the saying goes "With great power comes great responsibility" so I'm still undecided as to whether this new found voice/power is a good thing but the reality is, if the larger corporates don't sit up and start listening quickly I rather suspect that more will fall fowl soon.
uCommerce is now free and why it’s great news
Friday, June 17, 2011 12:38:15 PM (GMT Daylight Time, UTC+01:00)
Those of you who were lucky enough to make it to CodeGarden 11 (or have been following the #CG11 hash tag) will no doubt already know that uCommerce Starter Edition is now free.
Why this is good news
For quite some time we've been lacking a good all-round e-commerce solution with CMS ability (regardless of platform). Many of us have written hacks, combined multiple solutions together to form a behemoth -usually involving multiple logins etc or attempted to write our own solution which (either down to time or budget limitations), is never quite re-usable. Ultimately, there's been no all encompassing solution that was affordable but more importantly, able cater for small stores as easily as it could enterprise level solutions.
Umbraco has been working hard over the past couple of years to make the CMS as robust as possible and is now powering sites like www.asp.net, http://msdn.microsoft.com and a fair few other enterprise solutions. Being a proven concept is great because it means your investment is minimal -you only need to learn one solution which is mature enough to cater the majority of scenarios and now adding e-commerce to it's arsenal means it covers all bases.
Which uCommerce version do you need?
One question that I heard a lot around CodeGarden was "yes it's free but what have they removed from it?". Usually when someone is giving away something for free, it's not quite what you need/want. Thankfully that doesn't appear to be the case with the free edition of uCommerce.
Depending on your requirements, you'll more than likely find that the starter edition more than covers your needs (it's what powers most of our solutions). I find the thing that usually confuses people is the use of "Catalog". In uCommerce, a catalog is a group of categories and most e-commerce sites only need one catalog.
You may need multiple catalogs in the following scenarios:
- The Umbraco instance runs multiple websites, each website needs to have it's own product catalog, shipping rules etc (basically it's own store)
- You want to have different category/product structures for different countries
How do they compare?
This is so hot off the press that they've not yet had a chance to update the comparisons so I may need to update this table but here's a quick look at the comparisons and I also currently don't know the prices
| ||Starter (FREE) Edition ||Professional ||Enterprise |
|Unlimited Categories || || || |
|Unlimited Products || || || |
|Product Relations (What Customers Also Bought) || || || |
|Multiple Shipping Methods || || || |
|Multilingual || || || |
|Marketing Foundation (built in marketing, promotion codes etc) || || || |
|Review System || || || |
|Multiple Catalogs || || || |
|Multiple servers supported out of the box || || || |
|Multiple Catalogs with user level security || || || |
What can you do with it?
uCommerce is able to handle pretty much any e-commerce scenario you're able to throw at it. We've reviewed all the e-commerce sites we've worked on over the years (either developed entirely or partly by us) and we have found very few scenarios that uCommerce isn't able to accommodate.
The really nice thing about uCommerce is if there's something missing you can simply write it yourself and plug into one of their many pipelines using .Net controls, XSLT, Ruby or Python (if you really wanted to!).
What does it mean for the competition?
There are a couple of other e-commerce solutions for Umbraco already namely Commerce4Umbraco (free and open source -based on dash commerce) and TeaCommerce. They've both got their strengths and weaknesses and that's for a different post but making uCommerce free will stir things up a little but in a very good way. It now means that regardless of your budget or requirements, you have a great choice of options.
I don't think this will kill off the other projects (and I hope it doesn't) because although uCommerce is most likely what we'll use every time, the other providers have got their uses in different scenarios and competition is healthy. If you're more confident in Umbraco itself then you'll probably "get" TeaCommerce quicker than uCommerce as they are structured slightly differently.
What does it mean for the community?
This is massively good news for those who already use Umbraco as it means that you can let your customers sell online from the same interface that they're already using, but I think this has wider implications for the industry as a whole.
As I mentioned earlier, Umbraco have been working hard on making the CMS a very robust offering. Being able to plug in an e-commerce solution now means you can offer your customers an end-to-end solution which easily rivals the enterprise (paid) solutions currently available. What's better for your customers is that it's all from one login whether it's content, e-commerce, blogging, Job listings etc.
I think that offerings like Magneto will be very interested to check out what they're doing. For those of you who think it's finally knocking out DotNetNuke as an offering, I'm afraid Umbraco did that in V3.
Why am I shouting about it?
Ultimately it now means that there really is now no reason to not choose Umbraco -regardless of what platform you usually develop on (which is great because it means the community will grow).
Not a .Net developer? Don't worry, although it helps with customisation, it shouldn't stop you. The great thing with Umbraco and uCommerce is that you don't need to know any .Net to get running. The entire thing can be wired up through the web backend but if you don't believe me, get in touch and we'll go through it.
Disclaimer: I have been blogging and using uCommerce since it's first release and I am a proud wearer of their official t-shirt at CodeGarden but I still try and look at these things from an unbiased view point as if a better solution for our clients is presented to us then we'd consider it. Either way, I think this is a good move and if you want help with uCommerce, just get in touch.
Why we came up with Born in the Barn
Monday, June 06, 2011 2:50:18 PM (GMT Daylight Time, UTC+01:00)
Some of you may have already come across our new recruitment drive -www.borninthebarn.co.uk but I thought I would write a few blog posts about the thinking behind the website. This post concentrates largely on the business reasons behind it, I'll post separately about our findings and the technical/design aspects of the site later.
Firstly, if you've not already had a play, go to www.borninthebarn.co.uk and see what you think -and then tell your friends and family about it.
A little background
We started looking for someone to join The Site Doctor team a couple of months ago and followed the usual routes -we posted on job boards, shouted about it on various social media sites e.g. Twitter and LinkedIn, and took out an advert on a job website (in our case cwjobs.co.uk -who were good).
Despite a reasonable response from our efforts (discounting the recruitment firms), we didn't find anyone we felt fitted, so we took a moment to reflect and we realised why:
- We weren't offering a high enough salary to attract someone to our location or selling ourselves properly
- We were following run-of-the-mill methods but were looking for someone special
- Our efforts weren't concentrated and (because we were busy) lacked our complete attention
- Our portfolio was (and still is) woefully out of date and didn't overview the cool stuff we've been working on
But most importantly, we realised that it shouldn't be about us, all the job adverts we've seen to date have been about what we want from you and what we'll be giving you in trade -but why should it be all about what we want? Surely it's more important to know what you -the candidate wanted? As soon as we realised this, it gave us a whole new perspective on our recruitment drive.
Identifying The candidate
Once we'd realised it shouldn't be about us, the next step was to re-think our ideal candidate. Rather than thinking about the skill set, we needed to think long and hard about what they stood for and from this we would be able to work out how to "find" them.
One of the key things we're looking for in the ideal candidate is the right attitude. Looking around at people in the industry, there seems to be a clear divide between those who see it as just a job and those who enjoy -and have a passion for the work they produce. You've got to care about and enjoy what you're doing otherwise it really shows in the work that's produced.
So how do you find someone that cares about their work -and the industry as a whole? We feel they will be:
- Active on social media -Just by having a Twitter/Facebook/LinkedIn account shows a certain level of interest in new technologies
- Attend community events -It doesn't matter whether it's one of the big conferences (e.g. DDD, FOWA, NAConf etc) or a local meet e.g. MultiPack, just attending shows a certain level of interest
- Interest in new technology -HTML5
- Blogging -Ok not everyone has the time to blog (including me) but throwing up a post every now and again goes some way to showing that you care about others in the community and want to help them learn
So what could we do?
The obvious answer was to start again (one might say with a blank card!), put out another advert with a higher salary, more words on why we're great and more buzzwords but that would more than likely result in a similar response -a lot of time spent telling recruitment agents that we're not interested. More to the point it still wouldn't sell us to the candidate. The fact of it is that people get excited about different things -and it's not always all about the money (despite what some people say).
We needed a way of finding out what developers really wanted, we felt we knew what our best attributes were, but which were candidates looking for? Knowing which of them were something were good enough to tempt you to join us was the unknown. The original concept was to design a microsite which over-viewed the role, buzzwords, our clients along with any other selling points, but while sketching it out, it hit us -it's still all about us not you. So after a little more procrastinating, we thought, we're not sure what you would want so why don't we just ask?
Asking the community what they wanted from a job meant that even if we didn't find the candidate through the process, we would at least have a good idea of what people looked for in their role -which would then allow us to focus any future advert on just these. Giving people the chance to submit their own cards also meant that they were able to suggest other benefits/features that we hadn't thought about but may already offer (or be able to offer). Ok we're likely to get some joker posting that they want £1m or similar but we expect to get some gems among the rough.
And so was born the concept that is now www.borninthebarn.co.uk
Why we didn't focus on the role itself
You may have noticed that we don't really talk about the actual role itself -or salary. This wasn't an oversight on our behalf. We did this because we're flexible on both. Looking at the process more of a negotiation rather than set sale meant we were able to see what people felt they needed to join us.
On discussing salaries and competency internally, one thing that came to light was that people frequently over -and under value themselves. For example, I probably wouldn't apply for a senior developer role because the people I work with and socialise with at conferences etc. are what I would consider advanced developers (and so suitable for the senior role) and their knowledge blows mine out of the water. But what you forget is that these people also work on the platform that we use to code, they write books -and talk so as far as industry is concerned they're way beyond advanced.
Allowing the candidate to specify their worth meant that we don't discount the candidate before we've had a chance to think about whether we feel they're worth what they're asking (rather than them discounting the role before knowing whether it's what they'd want to do). At the end of the day, we have a maximum salary in mind, if we feel they're the right person but a little over our maximum salary we can then make the decision as to whether to stretch to their demands or not.
What do we hope for?
First and foremost we're hoping for someone to join the team at The Site Doctor's HQ but failing that, we're be happy to get a clearer idea of what people are looking for in their roles so we know what to talk about in our future job postings.
As I think this is also a better way of looking at the recruitment process (the focus being on your new employee rather than just what you need) I hope that other companies take heed and start looking at the way they conduct their recruitment processes. I realise that not everyone has this luxury but they could at least focus a little more on what's in it for the candidate, I think it would be the start of a better (and longer term) working relationship for both parties.
Fix Visual Studio’s crappy HTML formatting and automatic addition of id when pasting
Tuesday, April 19, 2011 5:56:59 PM (GMT Daylight Time, UTC+01:00)
Today I discovered two settings in Visual Studio that are about to transform my life (yes I realise that by just writing that I need to get out more.).
Anyway, the first stops Visual Studio formatting you code like this:
And transforms it into this:
To sort: Open Visual Studio, go to "Tools" -> "Options" -> "Text Editor" -> HTML -> "Formatting" and look for the button "Tag Specific Options" (in the bottom right). Click this button and you should get a window that looks like this:
Expand out "Default Settings" and then click "Client tag supports contents" and change "Line breaks" from "Before, after opening and after closing" to "Before and after" on "Client tag supports contents" and "Server tag supports contents".
This second one is another of those annoying bug bears of mine which is where Visual Studio insists on adding an id to every control you paste in -not something I really want in most cases. Anyway, sticking in the "Text Editor" -> "HTML" settings area, go to "Miscellaneous" and you'll see one there "Auto ID elements on paste in Source view" -uncheck that and click "OK" to save and apply your settings.
Looks like Visual Studio will become a decent HTML editor after all.