Design Focus

Friday Focus 02/27/09: Peeking Through

Transparency, translucency, opacity: we have designs that are peeking through this week on Friday Focus.

Designs of the Week

Seven Sparrows

The combination of robin’s egg blue and bird silhouettes is becoming more popular these days—dare I say because of Twitter, but this design is beautiful in its own right. I love the treatment on the hyperlinks, a graphical element also found in the logo, the “contact me” sign, and the handwritten blurb.

Centrul Crestin Caleb

If you’re playing with transparency, why not use a striking background image that’ll show through? I like that the logo is centered at the top, while the background is a one-point perspective shot. Great warm hues, too.

166 Perry Street

Interesting use of the coverflow effect: instead of scrolling vertically, you’re browsing through a virtual stack of pages. (Not exactly sure why, but it makes for an interesting experience.) The changing background colors are an interesting touch.

Peter Pearson's Design Portfolio

So where’s the use of transparency here? It’s not very obvious, but when you use the javascript scrolling effect by clicking on the arrows, you’ll notice that striped wavy lines seem to fade in and out. Now that’s an interesting use of an overlaying translucent PNG which also doubles as a transition animation as you move from one screen to another. Bravo!

Social Media Weekly

Design7 Interface Design Techniques to Simplify and De-clutter Your Interfaces
Because simplicity is always trickier than complexity.

Programming7 Fresh and Simple Ways to Test Cross-Browser Compatibility
From screenshots to actual apps, ensure your sites are working to the T with these tools.



Blurring the Lines Between Themes and Plugins

One of the things I have been noticing lately regarding WordPress themes is how many features they are now incorporating. It seems that themes are trying to make up for the lack of built-in features that a large user-base seems to want. Things as simple as uploading header and background images, or as complex as showing blocks of text to only search engine visitors are quickly becoming common in premium, paid and free WordPress themes.

People seem to expect more and more that WordPress themes are going to take on the onus of managing features that were once plugins.

In recently releasing my own WordPress theme, WPUnlimited, I have integrated many of the things I use every day into the core of the theme, making sure that as WordPress is upgraded, there won’t be a delay waiting for a plugin author to get around to dealing with any one plugin that I need. It is all contained with a theme, which makes things both more simple, and provides more pressure to keep it at the cutting edge.

I have been asking myself if it makes sense to continue to blur the lines. Will WordPress themes build in so many features that people don’t need, thus contributing to the bloat that people say WordPress already inherently has? Should designers, and theme developers take on the responsibility of making sure features that were once relegated to plugins work?

There is something to be said for being able to quickly, and easily integrate and use features without editing PHP code, worrying about opening up theme files, and trying to figure out where to place function calls, or code snippets.

I, personally, like not having to do such things, and I think that one issue that the WordPress project community tried to fix was the issue of having to code things, by using widgets, but widgets aren’t the answer for everything, and there are still a number of people unable to edit their WordPress theme effectively cutting them off from a wide variety of plugins that would fulfill their needs.

Should the WordPress project be to blame for not providing enough built-in default theme hooks for plugin authors to take advantage of? Or the plugin authors for not finding ways to make using their plugins in an easier way? Or should WordPress theme authors, do as I did, and integrate as many features as possible into their themes, taking on the onus of not only developing a theme, but the most popular features that WordPress bloggers expect?

And if so, then where does the line get drawn? How many features should be packed into a WordPress theme, before stopping and relegating them to being plugins instead?

How have other communities separated the need for features to work with designs and the core of the blogging software or CMS?



Sidebars that Rock

They’re de rigueur in almost all blogs and websites these days- and yet so many sidebars seem like afterthoughts, simply columns of clutter where one sticks everything that doesn’t go on the rest of the site. Are sidebars the web equivalent of a kitchen junk drawer? They don’t have to be- with these tips for creating sidebars that rock:

  • Group like with like. This is probably the most important thing you can do for your sidebar. Separate your sidebar into “sections”, and when you need to add something, take the extra time to put it in its proper place. Group each section under a clear heading (e.g. “Awards I’ve Won”, or “Recent Posts”)
  • Make sure it’s wide enough. Nothing turns me off faster than a sidebar with banners or text that bleeds into the main content area. Try to plan ahead: think you’ll place 125×125 ads? Make sure your sidebar is larger than that.
  • Don’t make the text too small. Text on sidebars are traditionally smaller than that of the page’s main content- and for good reason. Still, try not to go too small with this text. Your visitors with bad eyesight- myself included- will appreciate it.
  • If your navigation menu is on your sidebar, make it obvious. The navigation menu is probably the single thing your visitors will be looking for the most, so don’t disappoint.
  • Include the “usual suspects”. For blogs, this means: RSS links, category links, links to recent posts, and a search box. A little “About Me” blurb is always welcome- and you might also want to link to your most popular posts or a list of recent comments, but don’t go too crazy here… there is such a thing as too many ways to browse a site.
  • Ads. Yes- this is where one traditionally places ads… something I believe I’ve recently commented on.
  • Finally, blogrolls and outward links belong on your sidebar, too- again, make sure it’s obvious that these are links to pages off your site. You want your visitors to know that they’ll be leaving your site if they click on these.

A truly rockin’ sidebar to me is one that’s useful and usable for your visitors, while also reflecting some of your personality. How do you design your sidebars? Do you include your Twitter feed? The music you’re currently listening to?



Hey Sandboxers, How About an Update! (OR How to Update the Sandbox Theme to Work With WordPress 2.7)


Note: This post is intended to be a little tongue-in-cheek although the author himself does not claim to be funny at all. Please read with your humor-glasses on.

Bump, bump. Hey Sandboxers, yeah you, Scott and Andy. WordPress 2.7 has been out for a while now and we still don’t have an update to Sandbox. I mean we’ve got sticky posts now, and threaded comments, and a new logout tag. I think it’s about time we had a talk.

I went and told all these nice folks to use Sandbox and we don’t even get a little logout love? It is the best theme out there, with all of its wonderfully plain goodness and classes-to-the-max and whatnot. I’d say it’s about time for version 1.7.

Oh, and while you’re at it how about updating the Drupal version too and hitting up the Movable Type guys about getting theirs in line with the changes. And why not add one single place to get Sandbox for ANY CMS out there. It could be a veritable template Mecca, but I digress.

It’s not like you have anything better to do anyway, right? Ok, I’ll make the first move, here’s how I did it in WordPress…

In basically every template file (404, archive, archives, attachment, author, category, image, index, links, page, single, and tag), replace





Ok so you lose all those date classes but the hentry is still there and now we’ve got stickies! Yay!

The other order of business, is of course the logout link on the comment form. She don’t work. Is broke. We need to replace this:

get_bloginfo(‘wpurl’) . ‘/wp-login.php?redirect_to=’ . get_permalink()

with this:


…presses Easy Button.

Ok, the last thing: threaded comments. That’s pretty cool stuff, but optional IMO. So imma leave that one to you guys. Okay okay it’s just because I’m too lazy to recode comments.php. But seriously the whole comments loop got some great changes that make all this stuff a heckofalot easier.

So if you could please do that, k thx bye. 😉

On a more serious note, has anyone here tried out the new commenting loop? How are you implementing threaded comments in WordPress?



Achieve Your Big Goals With Incremental Persistence

John Reese has a great reminder for anyone trying to achieve big goals. He writes:

In order for you to accomplish anything in life you have to learn the power of INCREMENTAL SUCCESS. Let me explain how it works…

It doesn’t matter what you want to accomplish… making a million dollars, losing 50 pounds, learning to speak French, etc. In order for you to accomplish what it is that you want you MUST achieve your goal incrementally. There’s no other way for it to happen – it’s IMPOSSIBLE.

Later on in his article, he gives this very practical advice:

If you are trying to accomplish anything… you must do something every single day towards accomplishing your goal.

As web workers, I’m sure we have goals and some of them are probably pretty big. We have goals that can, at times, seem daunting.  We review our goals and they can seem to big. Will we ever reach them?  Can we reach them?

The Answer is Not Motivation

Many people look for tips to get them motivated.  But motivation is not the answer. John C. Maxwell, a leadership expert and prolific book author, is quoted as saying:

The whole idea of motivation is a trap. Forget motivation. Just do it. Exercise, lose weight, test your blood sugar, or whatever. Do it without motivation. And then, guess what. After you start doing the thing, that’s when the motivation comes and makes it easy for you to keep on doing it.

That’s why I like John’s advice of doing something daily to move your goals forward.  This allows you to build momentum and start achieving progress.  Even if your progress is small, at least you’re actually going somewhere.  Plus, you’ve learned something along the way, which you can leverage to do more effective work.

Finally, don’t worry if your daily effort is small.  You might’ve had a busy day so you weren’t able to do much towards reaching your goals.  Yet, small efforts consistently done over time have a way of adding up to something substantial.

So, what are you going to do today?

Or, better yet, what have you done today?


Design Focus

Friday Focus 02/20/09: One Page Portfolios

It’s one page portfolios this week on Friday Focus. And you just know there has to be some JavaScript-y effects when that happens. An added twist: let’s alternate between designs that are dirty and clean!

Designs of the Week

Diego Latorre

It may look chaotic on first glance, perhaps because of all the details, but if you stay on this site longer it feels organized, well-thought. I kind of wish the designer used the same type in the lefthand menu as the one in the content sections, but grunge is about breaking the rules.


For a company that was just formed from merging two big ones, this site is surprisingly simple. I like that they featured their client manifesto before their actual clients. It’s a great way to get to know the company better. And of course, the fuchsia makes the clean, boxy look pop.

Joseh Griffin

I’m not too happy about the type choice on this site, but I do like the interaction and the content. For example, there’s a whole screen that illustrates the designer’s skill levels, which is important information for his potential clients.

Berliner Webdesigner

Very simple but very effective. The spacing between blocks of text, the sizes of the headers and body text, everything just looks modern and professional. However, I wish one could jump to the different sections on the page, and not just to the contact form. And of course there’s a carousel effect for the portfolio items.

NextExile Media

Again, no navigation cues here. Maybe I’m so used to the JavaScript scrolling effect that I feel it’s almost a requirement on one-page sites. Is it, though? Or am I too lazy to manually scroll now? Anyway, I like how different textures are being mixed on this site: at least two types of fabric, two types of torn paper, and even spilled liquid!

Social Media Weekly

Design10 tips for efficient design
“Being a good designer is not always enough to survive hard economic times. You need to be efficient too.”

ProgrammingLibraries and Examples for working with Canvas
Scripts that take advantage of the Canvas.



Bash Script for Updating Multiple WordPress Blogs

While WordPress has finally added core update in its latest 2.7 branch, there are still people out there that will need to update multiple blogs quickly, and if you are managing your blog installations with Subversion, you can go through and update them all very quickly.

Of course, to update multiple blogs, you’ll have to go through to each folder, run the proper Subversion command, and then move onto the next folder. This can be a time consuming process if you have more than five or six blogs to do for each release.

I have previously written a post on Geeks are Sexy about updating WordPress blogs with Subversion. Read that first if you aren’t using Subversion.

Bash Script

The easiest way to help automate simple tasks on a Linux web server is to Bash script it. This is a very simple scripting language that allows you to do commands and using simple looping and an array, you can quickly do those commands multiple times for multiple blogs.

When I was working for Bloggy Network, I used a similar script to upgrade upwards of forty WordPress powered blogs in less than five minutes.

The following script assumes that your blogs are all in sub-folders under where this script will be placed. If the blogs are in different locations, make sure to include that in your path determinations either when you assign array values or as another variable you can make use of.



for a in 1 2 3
echo “Giving ${blog[$a]} an Upgrade”
cd ${blog[$a]}
svn sw http://svn.automattic.com/wordpress/tags/2.7.1 .
cd ..

exit 0

This code basically creates an array, and then cycles through the array, going into each folder, and switching the blog to the latest version of WordPress. The only editing you’ll need to do to before using this script is change the blog variable, and change the tagged version number in the svn sw command. If you are using trunk, you don’t have to do this and instead of /tags/version.number you’d just put /trunk.

While I don’t recommend running on trunk, especially for your production blogs, I know many people that do.

If you add more items to the array, you have to make sure that you add more numbers to your for loop. So if there were ten items in the blog array, you would want to make sure to change the for a line to: for a in 1 2 3 4 5 6 7 8 9 10.

Bash scripting is a relatively simplistic language, but can be very powerful.

This script could be easily modified to include error checking, create a log file where you can look over which files were changed, and when they were last changed, and you could also make it so that when the script ran, it asked you for which version number to use in the switch command.

I have also used Bash scripting to upload the same plugins to a number of different blogs all at once, make edits to the .htaccess file, and delete certain files.

If you have access to your server and can run Bash scripts, I suggest you play around with them, as they can be a great tool when the right circumstances rear their ugly head.



Getting Started With CSSDOC Commenting

CSSDOC is a commenting convention much like Java Doc and PHP Doc. It provides a standard way for developers to tag parts of a stylesheet with important meta information. Eventually it may be used to provide an enhanced interface in your favorite IDE. Although it is still in the draft phase, CSSDOC is a great way to clean up your stylesheets.


This is the basic block in which all comments will be placed. It has a very specific markup. The opening line has one forward slash followed by two asterisks. Each comment line thereafter should start with a single space an asterisk and one more space. Note: spaces do not show up in the examples unless you click the PLAIN TEXT link. Finally to end the block use a single space, one asterisk, and another forward slash.


A tag is a single at sign (@) followed by some text with no space. Most tags can be followed by a single space and some descriptive text, as follows:

* @tag This is a tag!

Additionally, each block may contain several lines that do not have tags. These lines are typically reserved for a title and long description:

* Descriptive Title
* Your long description would go here, before any of the tags.

File comment

Most designers want to put a little title block at the top of their stylesheets. It will usually include information about the author and creation date. There are a lot of tags, I have included the most common ones in the example below.

* Stylesheet title
* Your stylesheet description would go here.
* @project Name
* @version 1.0
* @author Name
* @copyright Year
* @license Type

Section and Subsection Comment

You can mark a section in your file with @section and @subsection tags. You can title these areas but I typically find myself dropping the title and just including the section name.

* @section Section

One thing that CSSDOC lacks is a method for defining visual delineation between sections in a stylesheet. This should be left to the IDE. Unfortunately, I am not aware of any IDEs that support CSSDOC. I suggest this simple compromise for the time being.

* ————————-
* @section Section
* ————————-

Visually it works pretty well. Someday CSS editors may incorporate the CSSDOC standard and render a visual indicator for section tags.

Bug/Workaround Comment

It’s a sad but true fact that we have to use hacks to fix browser display issues. Fortunately CSSDOC provides a great way to mark these sections of code.

* Why the fix is here
* @workaround or @bugfix
* @affected browser
* @valid yes or no

The workaround/bugfix syntax is a little confusing to me. Here is the explanation from the draft:

Bugfix: Should remove CSS-Rendering Problems without having bothersome effects.

Workaround: Some browsers need a reduced rendering because they are full of errors. A Workaround works around those Issues.

They list the Guillotine bug as a workaround and the disappearing list-background bug as a bugfix. I don’t get it. Instead, I would prefer to combine both tags into one, such as @hack or @fix.

You can also document the affected browser and whether or not the hack is valid. For a complete list of browser codes check the appendix in the draft.

I have wondered what to do about a simple hack, like a display:inline to prevent the double float margin bug. You don’t want to put it in a huge block of its own and you don’t want to put a CSSDOC block inside of a declaration. So what do you do? I don’t know. Maybe this will be addressed in the technical spec.

Other Useful Tags

  • @colordef: For notating colors. Follow it with a #color and a description of what it is used for.
  • @see: If you need to reference a website you can drop a link after this tag. It’s nice to give attribution.
  • @todo: I use this one all the time. Whenever you need to remember what you have to do next you can use this tag.


CSSDOC is a great way to standardize your stylesheet comments. It provides a nice framework for adding rich meta information to your CSS that might otherwise be lost. Someday we may even see it implemented in an IDE. If you are interested in finding out more, download the Public Draft.



How to monetize your blog without annoying your visitors

We’ve all seen it: websites and blogs that offer up great content suddenly becoming littered with ads. Sometimes it happens overnight- but more often than not, it starts slowly: an ad here, some Adsense there, another ad here, and so on- until the blog looks like it’s almost all ads, but you really can’t tell, since the ads look so much like the content. Sound familiar? When this happens, there’s just one thing I want to do: leave the site.

Now I’m not saying there’s anything wrong with monetizing your blog- not at all. Just that you can do it without necessarily uglifying your previously clean and beautiful site. Here, some tips to keep in mind when monetizing your blog:

Keep the ads relevant. If you blog about web hosting, feature ads from web hosting companies. If you blog about your pet labrador Mimi a lot, you want ads that will appeal to other labrador owners- maybe ads for dog biscuits or training videos. Services like Google Adsense, of course, make this easy: they’ll target the ads for you based on your content.

Make it look like an ad. Okay, I know you’re likely to get paid more if an unsuspecting visitor clicks on something thinking it’s part of your content and not an ad. The problem I have is with the word “unsuspecting”: by doing this, you’re fooling that visitor- and nobody likes being fooled. Let people know when an ad is an ad.

Choose ads that suit your design. Yes, you should make the ads look like ads- but at the same time, you don’t want them to stand out too much. The key is placing ads that complement your site- and that’s your content and your design.

Consider using RSS advertising. There are lots of sites I love reading, but hardly ever visit; I subscribe to their RSS feeds instead. Somehow, ads in RSS feeds don’t bother me as much. They’re usually unobtrusive, and if you have a good RSS subscriber base, can bring in a decent amount of money.

Do not use pop-up advertising. Ever.

Find other methods of monetization. You don’t have to place ads to make money off your blog- consider merchandising (CafePress, for example), affiliate sales (especially of products you review), or simply asking for donations (e.g. “Liked this post? Buy me a beer!”)

The most important thing is to be selective. You want your visitors to become regular visitors, and the best way to do that is to give them what they came for: not a bunch of messy ads, but your posts, your voice, your content.



How to Network With Popular Bloggers

In my last post, I talked about the effectiveness of connecting with popular bloggers. If you want more traffic and sales to your web business, landing a popular blogger as a client is great idea.

However, it can be difficult to get the attention of a popular internet personality. Here are some principles to consider.

Persistence is the Key

Because of their popularity, famous bloggers get contacted a lot. You’ll have to be persistent to get noticed and build a relationship with them. Now you don’t have to be overbearing but you do need to be consistent.

I think you should spend at least a month contacting a popular blogger before you pitch them with your services. Here are some ways to make those initial contacts.

Blog comments: If you comment consistently for a month, you should get the attention of a blogger. Some bloggers get a lot of comments on each post. For these bloggers, you can stand out from the crowd by being one of the first ones to comment.

Email: Most bloggers check their email so you’ll probably get noticed with your email message. However, email is also known for being a spam channel. Make sure to focus on them instead of yourself in your initial messages. I’ll talk more about this principle in the next section.

Twitter: Twitter has turned out to be a great way to network with many popular bloggers. In fact, some bloggers today are easier to contact through Twitter than email. Not everyone uses Twitter, but the number of Twitter users is rising by the minute.

Other social media sites: If they have a LinkedIn, MySpace, or Facebook account, you can connect with them through those sites. If they hang out at a forum, you can participate in the threads they start.

Blogging: If you want to make it easy to network with many people at the same time, you should start a blog. With a blog, you can contact anyone and point them to your blog so they can learn more about you. You won’t have to repeat your story over and over. Instead, you can just link to the relevant content on your blog. Also, some clients may find your blog through the search engines.

Focus on Them, Not Yourself

When you make the initial contacts, the temptation is to start talking about yourself and your business. However, this turns people off. Instead, focus first on them before yourself. You can do this in a couple of ways.

  • Find interesting and/or useful links in their industry and send it to them through email or twitter.
  • Share unique and useful tips.
  • Find mentions of them in the press and tell them about it.  This tactic has been effective for savvy offline networkers.
  • Ask them to do an interview.
  • Offer a quality guest post.
  • Ask them questions where they can help you or questions that can start a great discussion.
  • Link to their posts or and email them telling them about your links and complimenting them on their posts.
  • Submit or vote for their posts on a social voting site like Digg or StumbleUpon. Tell them about the submissions/votes and again compliment them on their posts.
  • Read their blog and find out if they have any goals.  Then, figure out a way to help them meet those goals.
  • Sometimes bloggers ask their audience questions through their blog or Twitter.  So, follow them on Twitter and subscribe to their RSS feed.  If they ask a question, try to answer it.

Ask For Referrals in Your Pitch

After a month of consistent relationship building, you can make your pitch.

Even if the blogger doesn’t need your services, you can leverage his fame by asking for referrals. (This is a good strategy regardless of the popularity of the blogger since many bloggers know other webmasters.)

When you make your pitch, ask them if they know of anyone who might need you services. They may not need your services but they might know some people who do.

When you go to the people they recommend, you won’t be “cold calling”. Instead, you’ll say that the popular blogger referred them to you.

Finally, don’t be afraid to ask for referrals.  Once someone gets to know you, they’ll be glad to help.


Design Focus

Friday Focus 02/13/09: Blocky and 3D

It’s blocky and 3-dimensional designs this week on Friday Focus. Oh, and Happy Valentine’s Day!

Designs of the Week


I would say the looped stripes in the header and footer gives a very retro feel to the design. The blockiness makes things look stacked and modular, perfect for sidebar components and additional sections like comments.

Steve Wittens

This reminds me of a more recent 3d-abstract design trend in the early ’00s. But I like that the colors are more welcoming than they are cold, and that it’s a little crazy looking but not too crazy!

Startups in Turkey

The 3D effect here, on the other hand, is very subtle, and instead of building blocks you can feel folded paper. Red keeps the neutral tones more interesting.

I Can Watch Movies WordPress theme

I keep running into WordPress themes that match our weekly themes! Again, another very interesting one. Even the blockquote styling looks impressive. The details are devilish!

Social Media Weekly

Design17 Awesome And Colorful Resources For Valentine’s Day
Spread the love bug!

ProgrammingWhen can I use…
“Compatibility tables for features in HTML5, CSS3, SVG and other upcoming web technologies”



CodeIgniter and SimplePie

ci_logo_flameContinuing on my previous two CodeIgniter Posts, CodeIgniter: Interacting With a Database and CodeIgniter: PHP Development Fun – Part 1, I wanted to spend some time today talking about SimplePie and its integration into CodeIgniter. I still haven’t gotten my head around the Model part of the MVC system, so some of this might be incorrect, but it has worked for me thanks to how forgiving CodeIgniter is.

What is SimplePie

SimplePie is an easy to use class that allows you to interact with RSS feeds in a very simple manner. It is free and is used on many great projects. It will allow you to easily grab, parse and display content from RSS feeds.

Integration Instructions

  • Download simplepie.inc
  • Rename simplepie.inc to simplepie.php and save it to system/application/libraries folder.
  • load the library somewhere in your controller: $this->load->library(’simplepie’);
  • Reference SimplePie functions using $this->simplepie->function you want to use

My Notes

So what I have been slowly working on over the last few days is TenTopBlogs, my own limited version of something similar to AllTop.

One interesting thing that I wanted to do was have SimplePie automatically find the RSS feed, and use that to pull the last five items every time the page was loaded or the cached page expired.

At first, this seemed like a smart idea as any time anyone would change their feed location, SimplePie would find the new one, but an issue cropped up: some feeds didn’t work. Right now, Google is moving around feeds on Feedburner and SimplePie tried to pull information, but since the feed was just redirecting to another place, it returned nothing, and on my page, I had a blank box. This occurred more than a few times, also on sites with multiple feeds, it sometimes grabbed the first one, which in some cases wasn’t helpful.

I ended up having my application grab the RSS feed URL and store it in the database when I submitted a site in the back end. This allows me to change the feed URL and take control over my application. The downside being that the application isn’t able to react to feed URL changes on its own, but the upside is that it puts me able to easily fix any errors that crop up.

This is my Submit function that is used when I add a new site from my Administration panel.
function submit()
$name = $this->input->post(‘name’);
$siteurl = $this->input->post(‘url’);
$niche = $this->input->post(‘niche’);
$password = $this->input->post(‘password’);

$this->simplepie->cache_location = BASEPATH .’cache’;

$feedurl = $this->simplepie->subscribe_url();

$data = array(
‘name’ => $name,
‘url’ => $siteurl,
‘niche’ => $niche,
‘feedurl’ => $feedurl

if ($password == “4ll#yb4s3”)
$this->db->insert(‘sites’, $data);
} else {
echo “Sorry, wrong password”;

What you will see is that I go to the site and then I grab the RSS subscription location once there, all while using SimplePie’s built-in features. I didn’t have to code an extensive program that curled data from the target site, pulling the required data from the xhtml code.

It was very easy to have SimplePie discover the RSS feed for me. I must make note though that this didn’t always work. Some errors did crop up, but because I put the feed location in my database, I was able to manually correct them. If you were to deal with hundreds of feed locations, this could get annoying or tedious, so some error checking in the code would probably be beneficial.