Sheffield company Technophobia has two important mantras it keeps in mind when developing applications:
1. Use the right tool for the job, and
2. YAGNI (You ain’t gonna need it)
These mantras were key for them when working to create a map based community website (I could tell you who it was for, but then I’d have to kill you. Sorry). Built in just 12 weeks with a small team, the site is built on the Microsoft platform but Technical Architect and Development Team Lead Jamie Hinton cherry picked the best tools and software (open source and closed source) to optimise the end result:
This was mainly due to how we were using that map and the constraints within Google maps as to how we could add markers. Bing maps allowed for arbitrary HTML to be added to a pin whereas Google maps needed the HTML to be within a pin bubble. There are ways around this with Google maps and an earlier API version but that is where the client decided the risks were too great at this point in the project.
The problem with Google is it can be a dangerous solution – if they change their API, however small a change, everything on the site could break and it would cost time and resources to fix it. We presented the risks to the client and eventually they understood they risked potentially annoy all their customers and waste time and money putting it right. The Bing API was much nicer – faster and more flexible, more developer friendly, so we were pleased we’d been able to persuade the client.”
The application pulls together a number of familiar features you’d find on many other community sites. The difference with this site is the ease with which it brings all the elements together to make a truly pleasurable, simple user experience. The site uses geo location based on the user’s IP address and geo tags every piece of content on the site, which ranges from the user’s profile, photo and video galleries and discussion threads to dealer information and local events, all relevant to where you define your ‘spiritual home’ (to maintain privacy and avoid would be car thieves finding out where you park your brand new beloved vehicle). Administrators don’t need to sign in and out of the application – one click and the admin view appears providing extended privileges (i.e. more buttons!) allowing them to moderate posts and discussions in context. The application integrates with parent company authentication so users manage the same credentials whichever sister site they’re on. All activity is tracked with a custom built service managing guest invitations, user reputation and number of posts, for example.
The architecture is service orientated (SOA) so each module is a service in its own right and therefore also pluggable. The team used Windows Communication Foundation (WCF) although it wasn’t necessarily their first choice:
“Creating a service orientated architecture was crucial to allow us to deliver the application to the client quickly. Each of the modules (discussions, gallery, content control etc) are pluggable and a third party could build a Twitter service which could easily be consumed by the website on the front end. It also means the application is scalable and if something goes wrong with one of the modules it won’t take the whole site down. We really wanted to use nServiceBus to make the services totally independent but ended up using WCF as it’s standard technology. Plus, it would have complicated the design at this stage (remember YAGNI!)” (Jamie, Technical Architect and Development Team Lead)
The website is completely open, so once you register you can chat to any other member (rather than just those you’ve accepted as friends per Facebook’s model) – and this presented a huge challenge for the development team. Jamie used standard protocols using a Jabba server called Openfire (a Java OSS) running in the back end. However the contact list was not scalable with Jabba. For the system to work it was crucial to know when users were online and when they’d signed out, so the team ended up using the .NET framework to add authenticated users to a huge dictionary of users and if they logged out or the session ended the system would automatically remove them. It was a simple solution to a potentially nightmarish problem.
“We intended to start simple with the search and as demand for more complex queries grew to start using Lucene but still use the existing database implementation as a fall back – but mainly to persist the search index as Lucene index can go wrong! Again it all comes back to keeping things simple and YAGNI!”
Here’s a list of the technologies used:
· .NET MVC 1 (2 was in Beta)
· C sharp
· NUnit testing framework
· ReSharper (‘the best plug-in in the world’ according to Jamie)
· SimplyVBUnit for functional testing
· Windows Communication Foundation (WCF)
“We used text editor, a Mac and Photoshop as the design tools” (Richard Jones, Lead UX Web Designer). “We needed a more rapid wire framing method so we used HTML and CSS so we could re-use the wireframes quickly and easily. We swapped out the .NET engine for Spark as this helped the designers so they didn’t get most of the set tags in the mark-up. Spark cuts out all the blocks and iterators and lets non-technical team members make substantial changes using the same logic. Spark revolutionised our development process as it was so rapid to develop to.”
At the end of our meeting I managed to grab Jamie on camera for a quick chat about how he finds working with so many different languages and tools on a day to day basis.