02.9.12

Solving a Responsive Design Problem

Responsive design offers a great solution for those people who do not have a full mobile version of their website ready. With ecommerce it is extremely important that as many people as possible can see and buy your products. After all that is why your site is there. There is nothing worse than having to struggle to use a website on an iphone. At a very minimum your customer should be able to buy from a mobile device. Why would you try and stop them?

Read the full article on Solving a Responsive Design Navigation Problem the Bleep Systems Blog

| Posted in links | No Comments »
09.26.11

What Is the Best Way to Structure the Checkout Process?

A question that keeps cropping up recently is from customers who want to know the best way to structure the checkout process. Firstly you should never stray from the globally accepted online shopping metaphor which is how all good web stores operate and how most people would expect to buy a product. Some stores insist on putting obstacles in the way like signing in, but all this will do is, well, get in peoples way …

Read more on the Bleep Systems Blog

 

| Posted in links | No Comments »
09.21.11

Search Site Analytics in Ecommerce

Any searchable ecommerce site is sitting on top of hugely valuable and usually under-exploited data: logs that capture what users are searching for, how often each query was searched, and how many results each query retrieved. Search queries are gold: they are real data that show us exactly what users are searching for in their own words.

Read the full post on the Bleep Systems site

| Posted in links | No Comments »
08.25.11

Thanks Steve

The news that Steve Jobs has stepped down as CEO of Apple made me think of my favorite Steve Jobs quote

“Your time is limited, so don’t waste it living someone else’s life. Don’t be trapped by dogma — which is living with the results of other people’s thinking. Don’t let the noise of others’ opinions drown out your own inner voice. And most important, have the courage to follow your heart and intuition. They somehow already know what you truly want to become. Everything else is secondary.”[Stanford commencement speech, June 2005]

I’ve kept this for a number of years now and it helps me to remember where I’m going or more importantly where I should be going.

08.18.11

Checklist of webmaster error notifications

After reading ‘The Quick Website Launch Checklist’ after finding it on Hacker News I wanted to share my thoughts on one of the checklist points that was discussed:

4. Admins get error emails when site error happens.

If you are the admin of a site what type of error emails would you be interested in getting? In my case it is everything possible. If you are going to do this I would suggest setting up an additional mailbox or filtering the emails because you will get a lot. The right approach might be an email digest of some sort delivered once or twice a day.

So what would I have on the list. It is possible to divide into two categories.

User Triggered

What sort of things can users generate that we as admins would be interested in. A hell of a lot. These people are the lifeblood of your business. Their actions decide if you live or die. You should be paying attention.

1. Failed Logins

Easy to record. You can tell how many people are having a problem getting into your site. If they can’t get in they are not using your product. A spike in failed logins might also indicate a security threat of some sort.

2. Parallel Logins

Sites that provide access to some type of content need to look at this one. What can normally happen is that one user will sign up and pay and then email out the log in details to his whole department or group of friends to use. Stopping parallel logins might be hard but at least you know who is doing it.

3. 404 Pages

Real time emails of 404 pages that hit a certain threshold can help you identify a traffic source. If you all of a sudden hit 20 404′s for the same URI you know something isn’t right.

4. SQL injection style searches

Search data analytics should be pretty important to anyone with a search box on their site. So should detecting any kind security breach or attempt. Running a simple regex over you search terms should allow you detect any funny business here.

5. Registration Milestones

See how well things are going by getting your site to email you every x amount of new sign ups. Getting a few of these each day might make you smile.

Server Triggered

1. High CPU load

Stay informed when your server is working hard. Get the balance right and this one could tell you when things are about to get busy – giving you plenty of warning to roll out the contingency plan.

2. Bandwidth Alert

You might pay heavily for extra bandwidth consumed. I know bandwidth costs a fortune in some countries. If you still have half the month to go it might be worth negotiating a better deal.

3. Site Down

There can be many reasons for this but knowing that while you sleep you have an alert system setup. Try Siteuptime.com or Pingdom.com

4. Database not connected

Another potential break point is the database connectivity. It is possible for the database to fail independently of the web server, so its always reassuring to have this one covered too.

| Posted in systems, webapp | No Comments »
08.3.10

Your Professional Half Life

The term half-life is commonly known as the mathematical and scientific description of exponential or gradual decay and comes from the slightly longer term “half-life period” which has origins back to 1907*.

On my drive in to work today I was thinking about applying this principle to professions and/or different jobs. Working with the web, it is necessary to put aside time each day to read blogs / news sources just to stay remotely in sync with whats happening. It is a demanding profession in this respect. Going away for two or three weeks with no internet access can leave you feeling you’ve got a lot to catch up on. As a web developer you are not going to suffer that much from such a short time period but what about one, two or three years?

I want to define professional half-life as

The point in time in which negative effects in either knowledge or practice have occurred which have been caused by a period of absence from the role in question.

In web development it would be possible to notice degradation in both more generic practical areas like forgetting how to touch type, or remembering how to print screen in OSx to very specific knowledge like browser specific CSS rules and the finer points of an apache http.conf file for a production box. Your job’s half-life is concerned with not only remembering what you knew before, but also catching up with the things you didn’t know.

It would be difficult to give an actual time for professional half-life but if we look at a range of jobs we can classify them into at least 3 categories. Here are some quick examples.

Short Half-Life – Engineers, programmers, scientists, web developers.
Medium Half Life- Human resource managers, account handlers, police / fire service
Long Half Life – Hairdressers, refuse collectors, gardeners, receptionists

So what job do you do and what is its half-life ?

* (John Ayto, “20th Century Words” (1989), Cambridge University Press.)

Edit: Small discussion about this post on Hacker News

07.17.10

No Retainer. Seriously ?

I had a conversation today with a new colleague who told me that at his old agency, they didn’t use retainers.

What no retainers ? Seriously ?

If you’ve not come across the concept before (or perhaps you have another name for the same thing) I am defining a retainer as

A contract established between the agency and the client whereby the client pre-book the agency by purchasing x number of hours for the forthcoming months / year.

On the surface it may be tempting to think that the retainer benefits the agency more than the client, after all there are lots of agencies right? On closer inspection I would argue the opposite. While there are many agencies out there, once you’ve invested heavily in finding one you are happy with you need to make sure they commit to you as well as you committing to them. Failure to realise this will end up costing you more in the long term.

A retainer establishes a long term relationship

This much is obvious but not all the benefits of such relationships are so obvious. Consider the following:

  • You all know each other well. You’ve also probably been out socially on one or two occasions. Being relaxed and knowing the people you deal with daily will make a difference.
  • The agency knows it is in for the long term. They write better code and have more pride in their work. They know the people that will be replacing feature x,y and z are themselves. They have the opportunity to make things really nice.

Retainers guarantee relationships continue

Many clients think they have the upper hand in the relationship, but often with a good agency this is simply not true. The attitude of the marketing dept may be ‘of course the agency wants to work with us’ but without a retainer this has not been established. Agencies operate at a fixed capacity and the next big and exciting piece of work to come through the door may be just a little bit too good not to take. Without a retainer the agency can just walk away.

Retainers buy ideas

Buying 30 hours a month means it has to be filled. It is in the interests of both parties that this time gets used both this month and every month going forward. This should mean that both parties are spending plenty of time thinking how to fill it and this translates into ideas, lots of ideas.

Retainers buy priority

Without it you might end up at the back of the queue. We’re are often in the situation of having a full schedule for 3 months into the future. Without booking your work in by pre buying time, 3 months is a long time to wait.

Retainers cost you less in the long run

The cumulative effect of all of the above results in a tidy and efficient working relationship. The end result of this finely tuned machine will not only be financially beneficial but the effort required to get good ideas and a motivated team working on your site / product will be less.

07.16.10

Using BIT operations in PHP – an example

An extremely useful way of storing flags/values in PHP is to use bit operations which set the bits in a single integer value, which you can then test against. Often when a system grows, you need a flexible way of adding new flags with the minimum of impact. Using the method below, doing so is as easy as adding a new constant to your model and using it.

If we have the following constants defined in PHP (we usually store these in the model)

Then these are represented as bits like this

We can then go about setting the bits in variables, which we will later use to test against.

Using the bit map above, you can see why this happens.
If we take $iUser1 and do an ‘&’ with kListOne you get this

Doing an ‘&’ looks for bits that are set in both comparators and gives us 2 which is the value if kListOne, so we know they are subscribed to this.

I would be interested in knowing what other people use bit operators for, so feel free to comment below.