When it comes to planning a technology application, you can't beat low tech. Given that I run a web technology company clients are often surprised that I rarely use my computer when planning a user interface. Instead I opt to create paper prototypes using a pen, paper, scissors and scotch tape. There are a number of reasons why this just works better.
First and foremost, there's nothing faster than sketching things out. While some people may agree that it's fast, they may say it's less efficient because you have to get everything right the first time - however with scissors and scotch tape you can pick and choose what you want, adding and combining elements easily. NOTE: previously I just used scissors and left elements floating so that I could share them between pages, however after a lot of experimenting I've found it's better to fix things in place.
Outside of speed, very few things are more visceral and easier for a client (or co-worker) to relate to than a paper prototype. Using a pen and paper, you take several things out of the equation that often hang people up. Color is not an issue and neither is font treatment. People who might otherwise feel they can't participate can start weighing in, making them feel like they are more part of the process and helping to gain buy in.
Tuesday, April 01, 2008
Paper Prototypes
Monday, March 31, 2008
Apache redirect to single page
When moving things around on a server, sometimes you need to take the server down. However rather than throwing a 404 or just timing out, it's nice to serve a single page to the user that says something along the lines of "we'll be right back".
The best way that I've found to do this on the Apache web server is through a little creative use of the RedirectMatch function in the mod_alias module. Since I'm running my server as virtual hosts this can get a little tricky.
The first step is creating an html page and then putting it in your document root (whatever the webserver displays). Then the next step is to modify the Apache config like so (the addition is in bold):
Here's an example:
<VirtualHost *:80>
ServerName www.mydomain.com
ServerAlias mydomain.com
RedirectMatch /[^t](.)*\.html http://www.mydomain.com/downmessage.html
...
Other stuff goes in here
...
</VirtualHost>
The RedirectMatch does a little regular expression match to find all the html pages that don't start with the letter "t". This keeps us from getting trapped in a recursive loop that causes the server to timeout. By keeping it html page (or whatever extension you're using: php, asp, etc) you allow the webserver to continue serving images, css.
Definitely keep in mind that this is a simple regular expression and won't pickup URLs that are in subdirectories. For more information checkout the documentation on mod_alias or regular expressions.
New Authorize.net Test URL
It came as a surprise to me, when without making any changes to my Authorize.net class (using API 3.1) began to fail silently without returning any error information. This started around March 31, 2008. First being suspicious that someone had modified the code I went through my svn repository and I was unable to find anything that might have changed.
After digging around for several hours and verifying that it wasn't limited to a single site, one of my developers, Tom Wheeler managed to find the problem: after four years the test URL that we had is no longer valid. Fortunately the fix (once we found it) was rather simple - just update the URL:
old URL: https://certification.authorize.net/gateway/transact.dll
new one: https://test.authorize.net/gateway/transact.dll
After making the change, everything is working as it should be. Thank goodness Authorize keeps all of developers up-to-date with their API changes... :-P
In case you need more you can see the development sample php code here.
Thursday, January 03, 2008
Online Tax Landscape Changing
The internet has long been a place of refuge for people looking to avoid paying sales tax (but who are willing to pay shipping!). For years sales tax on internet purchases has worked like so: a merchant charges sales tax only on purchases made within a state where they have a physical presence. The tax paid is per the merchant's location within the state including all city and county taxes (if any). Any purchases made outside the state are not charged tax, with the understanding that the individual is responsible to pay whatever sales tax would be due.
You don't have to be a rocket scientist to realize that almost nobody pays these taxes, so as growth of out of state internet sales has increased, state sales tax income overall has decreased. That may be changing however.
A project called the Streamline Sales Tax Project (SSTP), is gathering states who are interested in collecting sales tax from online transactions based on the shipping destination. This means a merchant in California can and should collect Washington sales tax for all purchases made from buyers in Washington. In order to make this extra overhead more appealing to merchants, the SSTP offers a single registration point for all participating states (which currently number 22).
Long term (if this catches on) this will be good news for residents in Alaska, Delaware, Montana, New Hampshire and Oregon as it would mean they wouldn't need to pay sales tax on any online purchases, regardless of where they are made. However as it is there is still a long way to go and little incentive for merchants. Membership is currently voluntary in member states and completely irrelevant for merchants in non-member states.
That said, online merchants should keep an eye out for this one as compliance could potentially require an overhaul of every online cart in the United States.
Friday, June 29, 2007
Congratulations to FantasySportsLive.com!!
Being wrapped up with development and the demands of a growing business has made it that much harder to keep up with our posts. But we've just crossed the finish line with our latest project, so it seemed like a perfect opportunity to post up and let you know where we've been.
So what have we been working on so furiously for the past 3 months?
Ladies and gentleman, boys and girls, sports fans of all ages . . . please welcome FantasySportsLive.com to the crossroads of sports and the internet. As they say, they're "rewriting the rules of fantasy sports." And they are well on their way to creating a revolution in how fantasy sports games are played.
How does one go about creating a revolution in the massive arena of fantasy sports that's currently controlled by every major media outlet (Yahoo, ESPN, et. al) you can think of? Like so many of the projects that have caused a revolution among internet users, all it takes is one good idea. Take something that millions of people are involved in and point that focus in a new direction.
Let's face it. Unless you're a statistical junkie, putting together a fantasy team for the course of a professional season can be way too much work. Not to mention, if you don't land a couple of superstars, then you get to spend the season in the cellar. With FSL, you get to manage a team for a day instead of the season. You make some bad draft choices? There's always tomorrow. Your star player pulls a hammy? Dump him and pick up that kid who's headed for Rookie of the Year honors.
It's always an exciting time when you get help a client bring their vision to life. This time, we got to talk about sports while we were working.
Friday, March 16, 2007
Yurth.com
A lot of buzz is going around about video on the web. Now that watching video on your computer is an everyday occurrence the real question is how do you get to it. There is a ton of original content that is uploaded to YouTube everyday, but with the exception of a few videos that take off most of that video just sits around collecting virtual dust.
Enter Yurth.com. Yurth is a very simple concept - it takes video uploaded to it's servers and let's people browse the video via a map. This simple (but brilliant concept) suddenly takes video that might have otherwise fallen through the cracks and immediately makes it relevant to the thousands of people in the area where the video was shot. Local homegrown video suddenly has a home AND a cool way to browse it.
Thursday, February 15, 2007
The Web Development Cupcake
At a recent user interface conference I took a day-long seminar that focused on project planning. Among other things, a reoccurring theme was the scarcity of resources on any development project. Even in a situation with limitless money and people (a little imagination is required here), time is always a critical factor. Given these limits the question arises, what should the development effort focus on?
The most typical answer is to build the all the features first and then focus on the really unique stuff in later phases. If you are creating a MySpace clone, the first thing you need to build is the user login and the ability to customize pages. If you are building a YouTube competitor, you focus on the video player and easy sharing of video. While this sounds sensible, it is actually a recipe for failure.
The thought process with this sort of phased development follows a house building mentality, where you pour the foundation, then put up the walls, then lay down the roof, etc. The trouble with using this metaphor is that nobody is actually living in the house while it is being built. This makes it a bad one for web development and software development in general. Baking (as 37signals has shown us) is a much better metaphor.
Using a baking metaphor, the phased development approach that I mentioned above is like baking a cake and releasing it without any filing or icing. Later phases may distinguish the project by adding interesting "non-core" features, but who is going to want to use an application that offers nothing unique? Who is going to buy a cake with no icing?
A better approach then, is to aim for a complete desire able application starting with the first phase. But how to do this when as we've established resources are limited? The answer is to identify the project cupcake. The offering that provides enough of the cake (the core) and enough of the icing (interesting stuff) to provide an appetizing morsel. Once the cupcake is identified it not only provides a focus for limited resources, but also serves to deliver a viable product offering faster than is otherwise possible. That means getting user particpation, establishing brand presence and possibly generating revenue - faster. No matter what your resources, it's easier to bake a cupcake than a wedding cake.
Friday, February 02, 2007
Toggling checkboxes using a master
Have you ever seen a list where you could toggle all of the checkboxes by hitting a master switch? I sure have. And I've had a devil of a time writing a clean script to do that when ever I needed one. I just recently came up with a nifty little JavaScript function that does just that:
function toggleCheckboxes(check)The code for the master checkbox would look something like this:
{
targetForm = document.getElementById("tableBody");
inputs = targetForm.getElementsByTagName("input");
for( var i=0;i<inputs.length;i++ )
{
if( inputs[i].type == "checkbox" )
{
inputs[i].checked = check;
}
}
}
<input onclick="toggleCheckboxes(this.checked)" type="checkbox" />This code means you don't have to put in special classes for each of the check boxes.