Archive: July, 2006

Leaving an Audit Trail In Your Database

Part of your role as a database architect is to save users from themselves. It’s inevitable that critical records will get modified or deleted from time to time. If the system has more than one user, the frequency increases exponentially. It’s tempting to take the approach that if users are going to be liberal about destroying sensitive data, that it isn’t your fault (true) and it isn’t your problem (not entirely true).

Of course, any system with critical data is being backed up, but backup systems were primarily designed to restore an entire lost database. Very few packages make it easy to restore isolated pieces of data. In many cases you have to roll the entire database back to a moment in time before the data in question was modified or deleted, losing all the changes that have occurred since. A better solution is to make it difficult for users to permanently remove or overwrite vital information. Build audit trails into your database.

Read the rest of this entry »

Don’t Put All Your Revenue In One Basket

In one of my previous posts, Growing Little Customers Into Big Customers, I talk about the advantages of establishing an ongoing relationship with a customer that generates a lot of recurring work for you. If you take the thoughts in that article to an extreme, you might conclude that you should find one good customer and focus all your attention on them.

Read the rest of this entry »

Carnival of the Web #2

Jesse over at The Future of the Web has started up a blog carnival for topics of interest to web professionals. I’m impressed with the original thought behind the posts that appear in the latest edition of Carnival of the Web. I’m flattered that one of my posts, Pricing Your Web Design Service, is included. Two of my favorite items in this edition:

  • Unconscious Interface Design – Unconscious design refers to the practice of making design decisions out of habit instead of crafting a custom solution for the specific needs of your application.
  • Perfect Your Wordpress Title Tags – I like the specific code examples in this post. While the example specifically discusses sites that run on Wordpress, the reminder to give thought to your title tags is technology agnostic.

Update: Specific!

How to Get Your Visitors to Create Content for Your Website

Years ago, long before I ever heard of a blog, I wrote this article about allowing your visitors to leave comments on your web pages. Blogging software today makes this as easy as selecting a checkbox, but not too long ago it required an investment of time to set this sort of thing up. This article was an attempt to convince people of the benefits of allowing visitors to leave comments. I thought about trying to update it to reflect changes over the last few years, but the content still holds up pretty well.

I’ve read a lot about people disabling comments because the spam they can generate can be overwhelming. Comments or no comments? I suspect there is no single right answer for everybody, and it largely depends on the site. I thought it might be worth it to reprint this article, though, to recall some of the positives.

Read the rest of this entry »

Growing Little Customers Into Big Customers

When it comes to keeping the bills paid, it can be very useful to have a few cash cow customers. These guys and gals always seem to have more work to send your way. In the best possible scenario, they’re even willing to delay projects a month or two if you don’t have the available time right now because they want you and only you to handle all of their web design needs.

If you’re in the very early stages of your career, this may sound like a pleasant but very distant fiction. I want to tell you it isn’t as far away as you think.

Read the rest of this entry »

On Scalability: Expect to Grow

During the development of a project, you’ll repeatedly be faced with situations where there are multiple solutions to a problem. One choice is to create a robust answer that is reliable and will adapt well to the changing needs of the customer for the foreseeable future. Another option is a design that addresses the current needs of the system, but may not address variations that could appear down the road. This second option is frequently quicker to implement.

Read the rest of this entry »

Why You Should Use Fusebox

Fusebox isn’t a programming language. It’s a methodology that can be used whether your preferred language is ColdFusion, PHP, or ASP. You’re likely visiting a site designed with Fusebox when every page of the site is located at index.php. (Depending on the language you use, this may be index.cfm or index.asp. For the rest of this article I will use the php file extension, but Fusebox is not tied to the PHP language.) The arguments in the query string are the only thing that changes in the URL as you go from page to page. Unless you’re looking at the URL, you won’t even know that a site uses Fusebox.

You may be asking yourself, “If I invest the time to learn this methodology, what’s in it for me?” I can only speak from my own experience, but I’ve noticed a few perks that compel me to write with Fusebox whenever I have the option.

Read the rest of this entry »

Testing Your Design in Multiple Browsers

The Internet is truly miraculous. By defining a standard collection of tags and specifying how each should behave, the community ensured that all third-party browsers would render a web site exactly the same. Um… yeah.

I’ll go along with the part about the Internet being miraculous, but browsers rendering web sites the same? There isn’t even a universal consensus on HTML tags and their attributes. Don’t even think about Javascript or CSS. (Yes, IE6, I’m looking at you.)

What’s the answer? You could just throw blinking red text at the top of your site that reads, “This site is best viewed in MyFavoriteBrowser. Download it now!” Well, unless your product or service is directly related to a particular browser, this reeks of incompetence. It looks like you don’t have the chops to design a site that will operate correctly in all the major modern browsers.

Read the rest of this entry »