Falling foul of special characters

These days its pretty standard to require support for multiple languages and special characters on your website. But it’s still terribly easy to trip up and make mistakes, usually indicated by weird characters popping up across your web content. Here’s a few tips on how to sort out your character encoding.
Continue reading “Falling foul of special characters”

Designers vs Developers

Last Thursday I participated in the latest CamCreative meetup, an evening of debate entitled “Designers vs Developers”. The evening was run by Nick Welsh who had prepared a number of problems that designers have with devs and vice versa. The idea was these questions would be discussed by the audience in roughly two halves of designers and devs and then Steve O’Connor (designer camp) and I (developer camp) would air our collected views to varied heckling.
Continue reading “Designers vs Developers”

Standards marching on

With the launch of the iPad one of the striking things to me is its reliance on web standards. Apple’s own Technical Note on preparing websites for the iPad specifically states web developers should be using web standards for audio and video, specifically the HTML5 video and audio tags. If a large corporation like Apple is basically forcing web developers to use standards-based techniques to deliver content like video, chances are people will listen.

In this day and age you’d think standards was the assumed approach for all web agencies. From my experience, hardly so. Only last week I encountered two appalling coded sites via potential clients. One using tables for layout with no meaningful ALT text for images, the other a single image in a page with no text behind it (a 100% wide image too, which technically would work on an iPhone or iPad but be pretty much unreadable to everyone!). Both of which were from companies who claim to build websites as part of their professional services.

After following tweets from what sounded like an excellent An Event Apart, I heard about Eric Meyer’s talk on using media queries to deliver specific CSS depending on the device width or orientation. This means it’s possible to create flexible layouts for desktop and mobile simply with CSS (i.e. switching between a three column layout for desktop and a one column for mobile). Another great reason for using standards when developing for mobile or the iPad.

You can find out more about device orientation on Peter-Paul Koch’s site. There’s a summary of Eric’s talk over at Luke Wroblewski’s blog.

Multiple accounts for my.rackspace.com

We host most of our client sites at Rackspace so we have a fair few servers and different accounts we need to login with whenever accessing the my.rackspace.com portal.

While the site has a cookie to remember the last entered account number and username, it doesn’t help if you have half a dozen different accounts you need to login with on a frequent basis. Switching browsers can be impractical and remembering the account IDs can just get tiring.

To solve this problem I created the My.Rackspace bookmarklet for logging in with multiple accounts. When clicked it takes you to my.rackspace.com. If you’re already there, it displays a select list of your different accounts and populates the login form once you’ve chosen.
Continue reading “Multiple accounts for my.rackspace.com”

Finding the Apache user in PHP

In PHP, knowing what the Apache user is on your webserver is very useful. Anything that writes a file to the server for example sessions, uploading files or other temporary file operations, needs to have the destination folder writeable by Apache. If you’re developing locally that’s not usually a problem. But as soon as you’re out in the real world file permission issues can sometimes be a pain.

If you’re having difficulties finding out what the Apache user is try this simple script to help you out.

It basically writes a small temporary file, checks the owner username, gets rid of the file and prints the Apache username to the screen. It should work on PHP4 and PHP5.

$tmpFilename = tempnam('/tmp', 'TEST');
$handle = fopen($tmpFilename, 'w');
fwrite($handle, 'testdata');
fclose($handle);
$info = posix_getpwuid(fileowner($tmpFilename));
$apacheUser = $info['name'];
unlink($tmpFilename);
echo "The Apache user is $apacheUser";

There’s also a small PHP source file you can easily download and use: getApacheUser.phps