Best Served Cold

Web design and development

We pride ourselves on producing high quality websites that fully conform to the highest web standards. Our sites are accessible and search engine friendly, making sure that all our sites have the best possible chance of succeeding where so many others fail.

Apps galore

This has been a very busy couple of weeks! We’re in the process of updating our 101bestandroidapps.com website and at the same time we’ve launched 2 new 101best sites:

101bestblackberryapps.com

101bestiphoneapps.com

These are the first 101best sites that are built around our brand new backend system that will allow for future enhancements and upgrades to be implemented more frequently and easily.

We’re going to be writing more about these websites in the coming days and weeks as we’re very excited about the future of the 101best idea. Just a couple of weeks ago 101bestwebsites.com broke through the 1,000 visitor a day mark – almost exactly a year since launch. We’re hoping to emulate that success with our 101best application sites.

You can follow the new submissions on Twitter or RSS and we have lots of plans to make the sites bigger and better. If you have any ideas or thoughts about how to make them better, or even a 101best site that you’d like to see, why not let us know…

How to make a iPhone App

Ever wondered how to make an iPhone Application?

Well so did we! Having never really even used a Mac, this is going to be some challenge!

Check out the 101 iPhone Apps Blog for more information

Using PHP CGI on a managed server

Recently we have had to change hardware for some of our sites due to high traffic rates, so we opted for a managed solution to cut down on the administration and responsibility of managing our own systems.

Whilst having a managed solution has many key advantages, it also provides a series of problems. The most prominent issue for us was how configurable the software was, both MySQL and PHP. The server in question was on MySQL version 4.0 which doesn’t allow sub queries, so we had to change the code to use joins instead, but more importantly, the PHP version was only 4 where we really needed version 5! The solution: a PHP CGI.

After creating a php.cgi and php.ini file in a /cgi-bin/ directory at a root level, we then needed to create an override in the apache configuration to utilise them. Not as easy as you might think when mixed with an MVC system with it’s own mod rewrite capability.

Here’s what we came up with:
.htaccess:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^(.*) http://%1/$1 [R,L]

RewriteCond $1 !^(cgi-bin|index\.php|public|favicon\.ico|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

AddHandler php-cgi .php
Action php-cgi /cgi-bin/php5.cgi

In a nutshell:

  • Turn on symbolic links, the rewrite engine and set the base directory.
  • Get rid of the www. extension (not really needed on any site any more in our opinion!)
  • Rewrite everything back to the index.php file apart from stuff that needs access remotely, including the all important “cgi-bin” directory.
  • Now we’ve got our file ready to process, push it through the cgi and there you have it, everything in PHP5!

If you needed better performance, you could consider using fastCGI, or ask your service provider to upgrade their PHP apache module.

Any questions, don’t hesitate to contact us.

101 Best Android Apps

Keeping with the 101 theme – check out the best Google Android Apps. It’s a small start but we’re adding to it and have plenty of ideas to keep it fully updated. We launched the site this morning and have added almost 40 applications already.

101 Best Android Apps

BBPress and WordPress magic quotes!

Just a quick technical article to those of you who are trying to integrate BBPress and WordPress.

There are a number of odd little things which I thought I’d share after a couple of evenings of frustration!

Firstly, do BBPress 0.9 and WordPress 2.6.2 integrate? Urm, no. Seriously, don’t even try! There are a number of fundamental differences in the technology to do with the Cookie keys that make this pretty much impossible. Basically 2.6.2 has three Cookie keys with Salt, where as BBPress 0.9 is has two like the old WP technology.

We tried WordPress 2.6.2 with BBPress 1.0 (Alpha), but it’s just not stable enough to put anywhere with any real traffic, so decided to back pedal and use 2.5.1 with 0.9 to be on the safe side.

The second major problem we came up against after the WordPress-BBPress integration was the magic quotes. Because wordpress calls in the “bb-config.php” and related files for integration, in the “wp-config.php” file, all the stuff WordPress does to $_POST variables gets done by BBPress as well! To get round this, go to around line 388 in “wp-settings.php” file and hash out $_POST = add_magic_quotes($_POST); and hey presto! Mind you, this was on a Zeus server, other LAMP systems seem fine, but that’s probably php setup rather than the web server.

Countdown – 48 hours are up

It all started yesterday morning at 10am: Could we build a web app in 48 hours over one weekend, just two developers and lots of caffeine.

Find out for yourself:

101 Best Websites

Review of the weekend

The idea for the site was to create a CSS / Design / AJAX showcase site with a rating system to start with, several different categories and topics to allow for plenty of updates. The twist to the site is that we’ll only show the top 101 sites in any category and the 101st site will get the same attention as the 1st.

We started with just a basic design, an idea of what we wanted to achieve and plenty of ideas. First job was to create a blog to write up our experience – WordPress of course! (101bestwebsites.com/blog/). Next we had to get the registration process seamless, keep it simple but secure. We decided early on that visitors to the site would need to register to submit new sites – our future plans would mean that it would become more important as time goes on.

Then came the submission process – this turned out to be a lot harder than expected, especially with all the little extras we had planned. The breakthrough came late last night on discovery of websnapr and the screenshot technology they provide.

This morning saw a lot of progress, submissions were successful, a few visitors (but no submissions) and we now have the categories set up and topics getting close to completion.

Our final big push this evening will be to get the ratings system in place so the site can do it’s initial job! It’s been a busy, sometimes frustrating but overall successful and satisfying weekend… Not sure I’d do it again soon though 🙂

Find out all details of the weekend and what we managed to complete

101 Best Websites – Update

As mentioned in my previous post, we have decided to dedicate this weekend to building a fully functioning web app in 48 hours. If you’re keeping track and planning on checking out what we’re doing, the site is:

101 Best Websites

So far we have the basic design and layout, and a little bit of Javascript to get us started, you can even register and login – but that’s as far as we’ve got. You can keep up to date on the 101 Blog: http://101bestwebsites.com/blog/ which we hope to style up and keep updated over the weekend.

Please take a look and let us know what you think!

Updates

It’s been a busy but enjoyable day, lots of work, some frustration but we’re generally feeling pretty pleased with ourselves – it’s not over yet, but time for an update…

So far today we’ve installed WordPress and styled it up to match the site: 101 Best Websites blog, the registration process is working, you can log in, change your password, view your profile page and contact us with your thoughts on the contact form.

We’ve had a few visitors, though we were hoping for more – and a couple of unusual comments on forums about whether or not we should have launched an unfinished site(?). We’re not sure whether that person fully understood the concept!

The final part for today is to get the site submission process up and running so we can get showcase websites onto +101 (our nickname for the 101 Best Websites)… if we can manage that we are well on track for our target of finishing the site by 10pm tomorrow night.

We’ll keep you informed.

Accessibility in web design

Web accessibility is one of those areas of web design that is vague, hard to understand and, to a lot of people, hard to implement. With the range of browsers, mobile devices and huge numbers of people searching the internet every day, how can you design an attractive, usable site that is also accessible to everyone?

The answer lies in how you work and how a new website design is formed, from the initial mockups and design through to templates, coding and the final, live site.

At Best Served Cold we start the design process with a knowledge of web accessibility and strict xHTML/CSS coding in mind. From the beginning of each website build we look at how the site will need to work with different technologies and what we can do to make those technologies accessible.

By using a system called semantic markup we ensure that each website is readable by all web browsers – even PDAs and mobile phones. This system of coding a website coupled with the strict use of xHTML and CSS gives our sites a great start towards full accessibility standards.

By coding to WAI guidelines we also give all our sites a headstart with SEO as many of the best practices used to optimise for search engines are also at the heart of a fully accessible website.

If you’d like to know more about accessibility please contact us. We are also available to consult on all aspects of web accessibility from initial design and code through to recommendations on existing websites.

Developing a WordPress site

Over the last 6 months we’ve been working a lot on WordPress sites – designing, templating and coding new sites and working with existing sites to integrate seamlessly. This site is WordPress based and we try to keep it up to date with the latest accessibility and xHTML/CSS standards – even if the news isn’t updated as often as we’d like!

We’ve noticed that there are a lot of WordPress sites that deal with themes and plugins but not many people talk about converting an existing design or bespoke solution into a WordPress template.

By working with a new design or integrating an existing website’s template into WordPress you end up learning a lot more about the background code than you would otherwise. With this experience we’ve found that WordPress can be used to power much larger and more complicated sites than just a simple blog.

With some judicious use of pages, categories and sub-categories and a bit of tweaking of the background code we are now able to design and build quite complicated, fully updateable sites with WordPress that are easy to navigate, accessible, use strict xHTML/CSS standards and can be updated very simply.

If you would like to know more or find out if we can do something similar for your site, please contact us

Embedding PHP in SSJS pages

Probably not required by many, but I was working on a site recently which had been built totally in Server Side JavaScript (SSJS). It took me about an hour to work what SSJS is to begin with! But it appears that Server-side JavaScript refers to JavaScript that executes on the server rather than client side JavaScript (CSJS). Quite old and not used frequently, the first implementation was Netscape’s LiveWire which was used in the Enterprise Server 2.0 released in 1996.

The key advantage of this setup is for asynchronous interaction with the server (AJAX), however ASP and PHP can handle this type of interaction sufficiently now-a-days.

The client I was working for had most of their system set up in SSJS, but had a WordPress implementation on the same server using PHP and the client wanted to display their articles on their pages. So the issue I had was using two languages in the same page. After a day of fiddling around and working out the syntax of SSJS, I came up with this:

<% Response.Buffer = true ; var objXMLhttp = Server.CreateObject('Microsoft.XMLHTTP') ; var URL = "http://www.yourdomain.com/yourFile.php" ; objXMLhttp.Open("GET", URL, false) ; objXMLhttp.Send() ; if (objXMLhttp.status != 200) { // fire some sort of error exception } else { Response.Write(objXMLhttp.responseText) ; } %>

To briefly explain, using XMLHTTP, we create an object using the URL reference, if there’s an error (..status != 200), spit something out, otherwise display the content. You could of course close the object at the end of the script for good measure.
So you can call in any PHP or ASP file and plonk it in your SSJS page. You could of course do the same thing with a little JavaScript, but that wouldn’t show up in the source code of the page and would be very bad SEO (Search Engine Optimisation).