The upside of a down review

There’s been a lot of buzz around Corvallis lately about local business reviews. Yelp has been a platform of choice for many of these reviews, as it provides a chance for patrons to put a quantitative star-value on their experience(s) and couple it with a qualitative comment, for browsers to pay heed. This pairing has worked quite well, and Yelp is getting much-deserved attention as a purveyor of the democratic process.

Cheerful Yelp Patron
However, not all businesses are equal (or even good), and this sometimes leads to a less-than-optimal review. The social-media Luddite shirks in fear that the negative reviews are open for all to see. His business may actually be influenced if someone sees it, and the less-discussed competition is likely to reap the rewards. In a fearful last-ditch effort, he calls out the reviewer as being biased and too influential, and he must repent by removing the review. Resigned, the reviewer admits that maybe he had a singular bad experience, and is willing to remove his bad review. After all, he doesn’t want to harm anyone’s business. He just thought that he finally found a place where he could be honest. With a sigh of relief, the Luddite settles back in his seat, content in the silence on the social media front. “I would rather have nothing said than something bad said,” he erroneously thinks.
Read the rest of this entry »

The Evolution of a professional web developer

Today, I reflected on websites I’ve built in the past and the tools I’ve come to deem essential along the way. Essentially, my evolution as a professional web developer.

When you first start a vocation, highlighting your strengths is the most pressing need. It’s difficult to stand apart from the crowd, differentiate yourself, and often justify that you’re worth the amount you charge. As you progress, your skills gain refinement, your strengths have been highlighted time and again, and the rate you charge is put to question less often.

Then there’s a shift in focus.

Some catastrophe occurs, or you’re put on the precipice of disaster. Inevitably, if you keep working in this profession, you recover, and the situation rights itself. But, you don’t want it to happen again. Hence, the shift in focus. Your weaknesses become the recipient of attention. Resources are allocated to fixing these weaknesses and tools are put in place to ensure success.
Read the rest of this entry »

Call to Engage

Most websites are designed to direct you towards a “call to action.” This may be a call to purchase, contact, subscribe, tweet, or download. “Click here” and your wildest fantasies will come true…

This is a very important component to brick and mortar businesses on the Web that need to quantitatively measure the number of contacts, revenue generated from each contact, and cost to acquire these contacts. For a digital downloads site, it’s an even cleaner and more direct route. Set up an Google Adwords campaign, measure the number of exposures, cost-per-click, clickthroughs, and the number of downloads or purchases. It’s a direct funnel with little wavering and clearly defined holes*.

The analytics funnel can be measured simply with numbers in, numbers out, and diversions along the way. 0-100% optimized.

What about blogs, online books in HTML, magazines, or art exhibitions and galleries? An argument can be made that for these types of sites, the goal is to get the user to engage more than it is to get the user to click, buy, or contact. If you are using a photo montage, slideshow, or writing thought-provoking blog articles, is your goal to ship the user away via a click, or to get her engaged, talking about your story, and believing in your vision? A “call to engage” is what this site needs. Design to lead the user into your story, captivate her with your photos, and rid the landscape of peripheral “calls to action.”

Most news sites follow a three or four-column approach to their website. This can be understood, as the news business model is tied around advertising. But, wouldn’t it be nice if you read your articles with big type, restful whitespace, and engaging pictures? Many follow the recipe, but forget that the signal gets lost for the noise when your reading one amongst four columns, and the highest contrasting elements on the page are the banner ads, trying to get you to click away and buy a cell phone.

The next time you redesign, consider if it would be most appropriate to have numerous and loud calls to action, or provoking and relaxing calls to engage.

*The attrition and loss of users along the way due to checkout abandonment, site bounces, or click-aways.

Smell the Roses

“Stop and Smell the Roses”

…is a famous saying to people who are constantly rushing from here to there, without any enjoyment of the process, no time to reflect on life. In recent history, this statement had validity. People were goal-driven, results-oriented, and didn’t pay attention to anything but the bottom line.

Then came the “Social Web.”

The Social Web gets us all to “Smell the Roses” much more than we used to. We may not acknowledge it, given our history and value for results. But, it’s permeated our culture. And, it may be to our detriment.

Take Facebook, for example. Last Month, Facebook exceeded Google in the number of U.S. visits, and (I’m sure) has a significant advantage in time spent on site.

What behaviors are the average Facebook user engaging in? Social interaction, gaming, browsing photographs, notes, comments, etc. From a user-experience perspective, this is largely “browsing.” There is a frequent lack of purpose, motivation, or driver behind each click. There is a limited number of conversions, and searching yields only the next page of browsing.

One of the more frequent complaints I hear about social media is one of spending too much time and getting nothing accomplished. With a user-interface and design ecosystem engineered to reward browsing, it’s apparent that social media can be both addictive and quantitatively unrewarding.

The results may speak otherwise. I have on frequent occasion received a lead or project due to social media interaction. However, the deal was closed outside the social media arena, and measuring the resources of input in getting that job was difficult.

Facebook, Twitter, and blogs all have value. But, there have been many days where I’ve been socially engaged and feel extremely connected, but accomplish nothing towards my goals. I urge you to be conscientious of your behaviors and the results of those behaviors. Awareness is the first step.

PHP Copyright

There’s little that annoys me as much as going to a website that is an authority on some subject, and it has an outdated copyright.

Here’s a very simple script to replace all of your copyrights, so that they are constantly updated with the latest year.

<p>Copyright 2007-<?php echo(date('Y'));?>.</p>

This is, of course, assuming that your copyright began in 2007. Replace 2007 with the year in which the copy was originally created.

How to find out if it’s just You

Yesterday, I met with a client who had a drop in contact requests for his product over the last month. We took a look at the website analytics, compared conversions, and indeed his numbers were down from the same month last year. We could assume economic shifts, weather changes, or voodoo curses may have caused this event. But, in order to get the real nitty gritty, I pulled out my toolbox of useful metric resources.

Here are a few resources we used to see whether the change is “just him”, the industry, or some type of Black Swan:

Keyword Trending

I look at top keywords, and how they are performing in Google Trends compared with last year/month. Google Insights, is another useful resource, where you can drill-down by geographic information, and compare terms.

SERPS

Take a look at the search results. Google sometimes shifts its algorithm, and you may lose the top spot to a site like Mahalo, or another site with new, updated and current information. Google’s Webmasters Tools gives a decent indication, but nothing beats a signed-out, cache-cleared search.

Analytics

Take a look at your own analytics. Check your traffic sources, search keywords, and look for significant changes. If you go up to change the date, you will be offered the option of increasing the timeline. I will sometimes look across multiple years to see the growth and trend for a particular site.

Competitive Intelligence

Use a site like Compete to compare your site with other competitors’ sites. Alexa does some CI as well.

Marketing Efforts

One place where I like to keep a pulse of the market is inside my Google Adwords account. If you use the keyword research tool under the tab “Opportunities,” you can get a measure for the average CPC bid, global/local searches, and approximately how much it is to enter the advertising market – which in turn will tell you how much your competitors are currently spending on advertising in the same industry. This tool provides a ton of information, I highly suggest keeping a good eye on it.

How to write CSS for a CMS

When writing CSS, it’s very important to pay attention to the “cascading” factor in your stylesheets, as opposed to simply adding style on top of style. When writing CSS for a content management system, it is vital to harness the strength of the cascade, and not repeat yourself.

I’m going to show you how I write stylesheets for content management systems, and minimize extraneous code, whilst keeping the design lean and purposeful.

Stylesheet Reset

First, I start with a clean stylesheet and link to a resetter. This makes sure that you start with a clean foundation, and remove all inherited styles from your browser, whether using IE, Firefox, Safari, Opera, Chrome, or otherwise. Here’s the one I use by Eric Meyer: base reset.

I link to it inside my style.css with the @import declaration, to package it with the media-dependent style.css that I’ve created.

@import url('reset.css');

Ems and relative sizing

Next, I’ll define the body style and a few generals for typography:

body {font-size: 62.5%; font-family: Georgia, Baskerville, serif; background: #FFF; color: #000;}

By setting the font-size to 62.5%, I am doing a baseline font reset to approximately 10 pixels. This allows me to size everything in my layout, line-height, margins, padding, and rest of the structure in “ems” which is the pixel-height of the capital letter em (10 pixels). So, for example, if I’d like to size my container to 960 pixels, I size it to 96ems.

#container {width: 96em; margin: 0 auto; text-align: left;}

This also is convenient for text-resizing in browsers. It allows for the layout to grow with the text.

Defining content

It’s important to clearly define content sections from layout, actionable, header, or navigation sections. Content sections are the editable regions where your client or you will be adding content with a rich-text editor through the administrative panel. For Wordpress, the default is #content.

Once you have defined the content section, it is important to define how general tags will be styled. For example, you need to account for how paragraphs, lists, headers, images, links, and blockquotes will look, because you don’t know what will be added in the future to these sections.

However, instead of simply styling the tags alone, you will want to style these as children of the section #content. The reason for this, is because if you define all paragraphs to have a margin of 20 pixels, then any paragraph tags in the header, sidebar, footer, or other non-content sections will also have this margin, whether you want it to or not.

Good:

#content p {font-size: 1.8em; line-height: 1.5; margin: 0 0 1.5em;}

Bad:

p {font-size: 1.8em; line-height: 1.5; margin: 0 0 1.5em;}

Next, you add style to all of the tags that need to be normally accounted for in a content section. I include a list of commonly added HTML tags on my setter stylesheet post. Now remember, you need to add #content before all of those tags, if you’re styling for a content management system.

Layout, navigation, etc.

You would then want to add style to the layout, navigation, header, and other sections of your site that are not directly editable. This will be much easier now that you defined all your tags specific to the content section. You won’t have to have many declarations like this:

#header p {margin: 0; padding: 0; background: transparent;}

These types of declarations run rampant in CMS stylesheets, simply used to override over-zealous style declarations from earlier stylesheets or from further up the page.

* Important: It is important to note that often users will nest ordered lists inside of unordered lists, images inside of blockquotes, and paragraphs inside of li’s. These need to be accounted for in the cascade. And, thinking ahead will prevent grossly over-sized text, whilst maintaining well-needed contrast.

Any tips I’m forgetting that you like to use?

Museo Sans 500

Today I switched my body font from Qlassik to Museo Sans 500. I also replaced the italic styles to Museo Sans 500 Italic. It’s a great-looking sans-serif font created by Jos Buivenga based on the Museo font.

Museo Sans font

I downloaded the fonts from MyFonts and created the @font-face stack through FontSquirrel.

Let me know what you think.

Chess Puzzles

Chess Puzzles is a website that I designed and strategically programmed for John Bain two and a half years ago. It’s still going strong, with over ten-thousand visitors monthly playing and participating in the daily puzzles.

Chess Puzzles

The website was built using Wordpress as a CMS, and the chess tactic engine was programmed using a custom Javascript library.

I’m still very proud of this project, and occasionally go back to do a mate in three.

Single-line CSS

This is somewhat of a personal post. “Personal” in the sense that the information is very subjective and not objective. However, I will try and persuade you of my opinion.

“CSS declarations should be written on a single line.” — me

p {font-size: 1.8em; line-height: 1.5; color: #000; margin: 0 0 1.5em;}

…as opposed to:

p {
font-size: 1.8em;
line-height: 1.5;
color: #000;
margin: 0 0 1.5em;
}

Here’s why:

  1. Conventional indenting styles, such as K&R or BSD Kernal Normal Form are originally for scripting or compiled languages that can nest calls. CSS very, very rarely nests declarations.
  2. CSS documents get extremely long, extremely fast.
  3. When scanning or modifying CSS, you search by tag, class, or ID, not by style.
  4. It reduces document size.

I’ve been writing single-line CSS for the last three years, and I’ve found it to be amazingly easier to read, edit, scan, and teach. I suggest trying it.

Check out my CSS and tell me what you think.