Web Apps vs. Client-Server Apps. Which Solution Is Right for You?

March 10th, 2010 by Eric Rowell No comments »

Whether you’re building a software application for fun, designing them for your own small company, or architecting a major system in a corporate setting, it’s important to understand what type of application your next big project is going to be.  Should it be a web application (thin client) or a client-server application (thick client)?  The purpose of this post is to cover the major differences between each solution, discuss the resulting pros and cons for each, and then formulate a general rule of thumb for determining whether a particular software application should be built as a thin or thick client.

What exactly are thin and thick clients?

Web applications, sometimes called “thin client” solutions, perform business tasks through a web interface. This usually involves viewing and manipulating data in a database.  These solutions are typically deployed on an intranet or extranet, with access restricted by user logins and passwords.

Client-Server applications, or “thick client” solutions, are solutions that reside on the client’s machine. The server side usually has a middle layer inbetween the client and the database which is called a “3-tier” solution.

Pros of Thin Clients

  • Easy to distribute.  If your users have a browser, they have access to your application.
  • Can run in mobile devices.

Cons of Thin Clients

  • Can vary wildly from browser to browser in terms of HTML rendering and JavaScript behavior.  If you are developing an application intended for an audience without a standardized browser (like the general public) you will generally be developing an app that must be compatible with IE6, IE7, IE8, Firefox, Safari, and Google Chrome.  This can add a lot of overhead to development time.
  • Performs poorly when the app has extensive GUI logic and view manipulations.

Pros of Thick Clients

  • Will run exactly the same from system to system. 
  • Will have access to system privileges.
  • Performs very well when the app has extensive GUI logic and view manipulations.

Cons of Thick Clients

  • Difficult to distribute and maintain software versions.  Requires an overhead of version management and software updates.

Rules of thumb for choosing a software solution

If you are developing an application for the general public and the user interface is very light, you should definitely choose a web application solution.

If you are developing an app for a company that requires extensive GUI logic and view manipulations (like handling a large dynamic data cube or rendering complex 3D graphics) you should definitely choose a client-server solution.

*side note: you may also want to look into hybrid solutions called RIAs (rich internet applications) which are applications that are deployed like a thin client but don’t actually run in the browser (therefore making them browser independent).  Adobe Flash 4 and Microsoft Silverlight are the two major competitors for this type of solution.

Exclusive Interview with the Creators of LaterBro.com

March 9th, 2010 by Eric Rowell No comments »

After an in depth search for the best Twitter scheduling app available, I’ve found that LaterBro.com is by far the most innovative, convenient, and easy to use tool out there. I was fortunate enough to score an email interview with the creators of LaterBro, Timothy Kelleher and Joost Ruyter, who were more than willing to give me, and the rest of the world, a glimpse into LaterBro’s vision for success and philosophical principals that have helped shape the application into what it is today.

TP: What inspired you to create LaterBro?

TK: I initially had the idea after the thought that when you are doing the things you love you don’t want to get out your phone and ‘tweet’.
Then I thought about the multiple uses of this sort of application e.g. scheduling links (so you don’t bombard your friends), tweeting in different time zones, reminders etc

As a UX Designer I came from the interface approach first, I wanted it to be super simple and clean. I wanted to create an app for a normal person not a social media douche bag who follows 18,837 people.
It was for the simple guy who wanted to send a Tweet Later.

After my initial design/sketch I looked into it a bit more and discovered that Joost had already created a similar site. I showed him my Interface idea, he actually liked it and thought I was legit. So we collaborated on the project over about 9 months. He did all the sites smarts and I just told him to change the colours and created some icons.

TP: How have you measured its success?

TK: I tend to measure it by visits, but Joost keeps pointing out to me that it is users we are after. I get kicks seeing people sending messages from the app on the Twitter time line ‘Sent from laterbro.com’.

It was just a fun project for me and never a chore so the fact it is working it is a success to me.
I think that if you want to create an application you should design something you would use and love not with a focus to create revenue… at least that is what someone told me.

TP: What are your plans for the future of LaterBro?

TK: I have scheduled all our plans and you’ll see them over time. Seriously, I’m not sure where it will go, I don’t want to bloat it with functionality, I think that would kill the simplicity of it.

TP: In your own words, how is LaterBro different from other future tweet systems?

TK: It’s simple and kind of cheeky, it doesn’t try and sell a million features or have a blue theme or a bird logo or ‘Tweet’ in it’s domain name. It’s the guy you’d meet on the bus, not the social marketing guy who gives you his moo business card at a tweet-up.

Google vs. Microsoft in the Race for Cloud Computing Dominance

March 7th, 2010 by Eric Rowell No comments »

With Google’s recent acquisition of DocVerse, a product that allows real-time online sharing and simultaneous group editing of PowerPoint, Excel and Word documents, it’s becoming more and more apparent that not only are Google and Microsoft moving towards cloud computing, but they are in fact trying to take the whole pie for themselves. 

What is cloud computing?

Cloud computing is a way of computing, via the internet, that broadly shares computer resources instead of using individual software and storage on personal computers.  This form of computing allows people to collectively modify data simultaneously, while always having the most recent version of a particular file.  Cloud computing is a byproduct of the internet’s ability to link different services and resources together.

image source

What’s next for Google and Microsoft?

To really get an idea of where the two software giants are headed, let’s take a look of some of the things that have already happened as well as some of the things that can be sure to happen in the near future.

As of today, Microsoft is using 75% of its nearly 100,000 employees to work on cloud related projects.  Microsoft’s CEO, Steve Ballmer, says that within a year that percentage will grow to 90%.  The implication here is that Microsoft is obviously dedicating as much of its resources as possible to dominate the future of cloud computing.

March 5th 2009 – Google acquires DocVerse, a product that allows real-time online sharing and simultaneous group editing of Microsoft products.

In an attempt to overpower Google Apps, Microsoft is planning to make a portion of its upcoming Office 2010 a free cloud-based productivity platform.  In addition to this, Microsoft will be providing a free, online, light version of Microsoft products to Windows Live subscribers.

Google will release the free Google Chrome OS at the end of 2010, which is a cloud based operating system that stores all of your files and other data in a cloud, not on your local machine.  For more information about Google’s future agenda, click here.

Javascript Arrays

March 6th, 2010 by Eric Rowell No comments »

Javascript arrays are very handy data structures that allow you to easily create, retrieve, and modify a list of objects, usually strings. Let’s say that you are keeping track of a list of names. A good way to store a list of names is with an array. There are two ways to initialize an array.

var names=new Array();
names[0]=”Andie”;
names[1]=”Eric”;
names[2]=”Kusco”;

and

var names=new Array(“Andie”,”Eric”,”Kusco”);

The first example declares names as an empty array, and then sets the first three values of this array one by one.  The second example initializes an array by sending the Array constructor the values as parameters.  Both methods work the same.

Once you have an array, you may want to retrieve it’s contents.  The first element of an array has an index of 0, the second element has an index of 1, then 2,3,4, etc.  In the code above for example, The index of “Eric” is 1.  If we want to retrieve a value from the array, we do something like this:

var value=names[1];
alert(value);

The code above will alert “Eric” because value has been set to the element in the array names which has an index of 1, which corresponds to the value of “Eric”.

To modify an element in an array, you can do something like this:

names[0]=”Andrea”;

The code above will set the element in the arrray names with the index of 0 to “Andrea”. The array list now contains “Andrea”, “Eric”, and “Kusco”.

Javascript Timers

March 6th, 2010 by Eric Rowell No comments »

Javascript timers can be very handy when developing advanced scripts.  I’ve found that timers are most useful when creating RIA (rich internet application) elements, like making a div fade out over a period of a few seconds, waiting a small period of time to show a div, or waiting a short period of time to initialize a specific Javascript function.  The key to creating a Javascript timer is the setTimeout() function.  It takes two parameters.  The first parameter is the function that the timer will call, and the second parameter is the number of milliseconds to wait before calling.  In the example below, when startTimer() is called, an alert will pop up after five seconds.

function startTimer() {
var t=setTimeout(“alert(‘5 seconds!’)”,5000);
}

It can also be very useful to cancel the timer event.  in the code above, we set the time to a variable t, so that it can be referenced in case we would like to stop the timer.  To do this, we will need to use the clearTimeout() function which only takes one parameter, the setTimeout() event, t.

function cancelTimer() {
clearTimeout(t);
}

Scottrade, We Like Your Service. But Please Update Your Site!

March 5th, 2010 by Eric Rowell No comments »

Last night I decided to create a Scottrade account to see if their services were comparable to TD Ameritrade’s services.  After creating an account and looking around for just a few minutes, I began to feel an overwhelming sensation that I was looking at web pages designed and built in the late 90’s.  I was really turned off by the experience, and decided to make a casual tweet this morning saying “Thanks Scottrade, you’ve helped us all remember how much a website can really suck.”  To my astonishment, a Scottrade representative saw the tweet, cross referenced the name on my Twitter account, and called my cell phone number while I was at work. 

The representative asked me about my tweet, and I just responded “well… I had a bad user experience and the site just seems really out dated” .  At the time, I was too dumbfounded by the call to really give an informative response.  Out of respect for Scottrade and their willingness to hear me out, I would just like to be clear that although I think Scottrade’s services are great, I really think that they should consider a website redesign.  Here are some of the things I noticed during my short visit at Scottrade.

Poor color scheme & lack of contrast

When Scottrade’s homepage first loaded, I felt like a purplish-pastel grenade had just gone off in my browser.  Everything is a different shade of purple.  Can we say overkill?  Sure, purple can be an okay color, but it’s absolutely a bad idea to overuse it as much as Scottrade has.  I’ve seen other poorly designed websites like this before, in which the designers used different shades of one color throughout the entire site.  From a design perspective, this is always a bad choice because it makes everything  look cloudy and murky.  Well designed websites use complementary colors and lots of high contrast to make different elements of the webpage stand out. 

I would recommend using one bold shade of purple, lots of white and black for contrast, and maybe hints of orange and green throughout the site to add an additional bit of contrast.  I would stay away from using hints of blue and red because they are too close to purple and add to the problem of murkiness.

Crappy login system

When I first created an account, I was doing it rather quickly and just assumed that my email address would be my login ID like every other website.  After breezing through the login process, I found myself on a login screen asking for my login number, of which I hadn’t written down.  I tried pressing the back button to get back to the account number that had shown up on a previous page, but your JavaScript kept forwarding me back to the login screen.  I thought that It wouldn’t be a big deal since all websites these days have a login and password retrieval feature.  To my astonishment, your site didn’t have this.  I was shocked quite frankly.  In frustration, I was going to try and call customer service only to realize that you aren’t open outside of business hours.  Already my experience was looking pretty grim, but I was determined to get into my account.  I then disabled my JavaScript from IE8, and then pressed the back button a number of times to find the screen that had my login number, saved it to notepad, and proceeded to login to my account.

Why in the world are you making your users remember a randomly generated login number?  What purpose could that possibly serve?  Just let users login with their email address, or at least a created login name.

Use of old web practices

After finally getting into my account, I quickly realized that Scottrade was very behind in web technology.  There was no evidence of any RIA (rich internet application) features to be found, including a very basic interactive tab system.  When you hover over the tabs, nothing happens.  It’s now 2010 guys, that’s unheard of.  The tabs need to light up, move, or something.  Anything.  I also noticed that all of your popups are just new browser windows.  Who does that anymore?  If you want to use a popup in your webpage, make it a floating div with a drag-able header bar and an “x” to close the window.  I was very perplexed to realize that your stock symbol look up, an arguably important feature to any trading system, was just an awkward new browser window.  To make things worse, once you found a stock symbol, you couldn’t click on it to automatically populate the appropriate text field.  Instead, you just had to remember what it was, close the browser window, and type the symbol into the text box.  Really?

No flash statistics

I also noticed that all of the graphs are generated images, not interactive flash components.  These sorts of static images scream “no, I’m not a web 2.0 app and I don’t want to be, so leave me alone!”

I would recommend converting all of your statistical images into interactive flash components.  If you don’t want to fund the resources to build them from scratch, there are plenty of third party vendors that you could get a license from for pretty cheap.  www.fusioncharts.com is one great example.

Awkward scrolling

Another really strange thing I noticed is your use of scrollable sections, simulating iframes.  Your account pages are set up with three sections, a header section, left column section, and the right main content section.  I was astounded to see that in some pages, all three sections scrolled together, in other pages, the header section was stationary, and the left and right columns scrolled together, and yet in other pages, the header and left columns were stationary while the right section scrolled.  What’s going on here?  Was this an accident?  Did you have a different developer for each tab?

I would recommend removing the scrollable sections entirely.  It’s a very old fashioned way to structure a webpage.  Web 2.0 websites simply don’t use them.

Sorry Scottrade, but it’s time to redo your site.

image source

How to Overcome Banner Blindness

March 4th, 2010 by Eric Rowell No comments »

Every blogger knows the importance of banner click through rates on their web pages.  It’s not rocket science.  The more people that click on on a blogger’s ads, the more valuable the ad spaces become, and the more money the website makes.  The problem is, as the internet has evolved, so too has its users. 

What is banner blindness?

In the olden days of the internet (yes, I’m referring to ten years ago), people clicked on advertisements left and right because they didn’t know any better.  As people have become more accustomed to web page layouts, they’ve begun to learn which parts of the page are the most valuable.  It just so happens that since most websites place advertisements on the top, left, right, and bottom of a webpage (overkill!)  the “guts” of a web page are usually in the center.  Take a look at the heat map below, which measures eye tracking when visitors look at a webpage.

image source

The areas where users looked the most are colored red while the yellow areas indicate fewer views, followed by the least-viewed blue areas. Gray areas didn’t attract any fixations. Green boxes were drawn on top of the images after the study to highlight the advertisements. The phenomenon, coined by Dr. Jakob Nielsen in August of 2007, is referred to as banner blindness.  As you might guess, banner blindness basically means that visitors are “blind” to banners (advertisements), making them ineffective in terms of earning revenue. 

As internet users become more and more skilled at ignoring ads, ad driven websites (including blogs) are facing a growing crisis.  If internet users stop clicking on ads, then advertisers will stop renting ad spaces from publishers, and free content services and blogs will start to disappear.  What can we do to overcome banner blindness?

The golden rule for overcoming banner blindness

The trick to overcoming banner blindness is to do the opposite of what you might expect, make the advertisements less visible and look less like advertisements. The reason people have become so skilled at ignoring banners is because the ads are in the same locations from site to site, and they all look about the same.  They usually stand out from the rest of the page with an image that doesn’t match the rest of the site, or text that’s a different font, size, or color.

Since these ads stick out like sore thumbs, it’s easy for visitors to subconsciously block them out.  It’s kind of like telephone poles.  When you drive to work, how many telephone poles do you see?  Most likely, your answer will be “none” even though you pass by hundreds each and every day.  You don’t notice them because they don’t provide you with important information while driving from point A to point B. 

On the flip side, if you can incorporate advertisements inside your content instead of around it, you will see a much better click through rate.  A great example of this technique has just been implemented by Digg.com a few months ago.  If you take a look at Digg today, you’ll see a very cleverly disguised advertisement residing in the third Digg post of every page.  As visitors scroll through each page looking for content of interest, there’s a great chance they’ll click on the disguised Digg post, sending that user directly to an advertiser’s website.  As long as the user is being sent to a webpage containing useful content, It’s a win win situation. The visitor finds the information they were looking for and the publisher earns a small profit.

Banner blindness, you’ve met your match.

PHP vs. Java – Which One Is the Better Web Language?

March 4th, 2010 by Eric Rowell No comments »

In my experience, it seems like Java is the web language of choice for corporations, and PHP is the web language of choice for people who own their own websites (i.e. small scale websites).  It also seems like both of these groups will swear by anything that their language, whether it be PHP or Java, is the supreme language of the universe.  I personally have experience with both PHP and Java, have owned my own websites (like www.treefrogpost.com), and have also worked at a large corporation as a Java developer.  The purpose of this post is to help explain the apparent segregation between both groups while providing some guidance as to which platform to choose depending on your situation.

Two sides, two perspectives

If you ask most Java developers what they think about PHP, they will probably tell you that it’s a very basic, unprofessional language that can be messy, lacks structure, doesn’t have a good IDE (integrated development environment) like Eclipse or RSA, and isn’t a good platform for a real website.  If you ask most PHP developers what they think about Java, they will probably say that it’s overly complex and cumbersome, and that it isn’t a good platform because development time is just too slow and tedious.  The truth is, both sides are correct. 

The difference between PHP and Java

The root of this dispute boils down to IDEs and how each language handles objects.  PHP didn’t support OOP (object oriented programming) until PHP4 and PHP5, but even then its support is very basic.  Java on the other hand is uniquely defined by its OOP nature, and is better suited for well structured websites that use an MVC (model view controller) architecture.  PHP is a much simpler language than Java, lacks a formidable IDE (so far), and lacks strong support for OOP. 

As a result, most new web programmers will turn to PHP simply because they don’t yet understand how IDE’s work, often times don’t understand OOP, and it’s much easier to learn.  Novice web programmers often times don’t yet understand MVC architecture, and just build their web pages by querying a SQL database and printing the results with for loops directly, all within one PHP file.

Java developers, on the other hand, are usually well trained, are very familiar with OOP, and understand how to use IDEs.  Since Java seems to be the most common web language used in the corporate setting, these groups of people usually work in teams and fully utilize the conveniences of IDE’s and OOP.

The best language depends on your development team

As a result, this debate ultimately boils down to how large your development team is.  If you’re building an entire website by yourself, or with a group of less than three people, PHP will probably be a better route because development is much faster, and you are less likely to step on your team member’s toes as you develop.  On the other hand, if you’re building a very complex system requiring a large team of developers, say five or more people, you will probably need a very well structured, standardized architecture, to ensure that all of your developers are on the same page, especially in a corporate setting where you could have dozens or even hundreds of developers working on the same website.

How to Make Money Online With an Ad Driven Website

March 2nd, 2010 by Eric Rowell 2 comments »

It seems like everyone and their uncle these days have some kind of get rich quick scheme to make money online, but very few of them (I would say less than 0.1%) actually understand how real online business models work, in particular with respect to ad driven business models.  The purpose of this post is to give people an overview of the two most common ad driven business models while providing some realistic expectations for each.

Free Service Ad Driven Model

This is by far the most difficult business model to accomplish.  A free service ad driven website is a site that is free to use that offers a valuable service like online search or social networking, and makes money from advertisers who place ads on their web pages.  Great examples of this business model are Google, Yahoo, Myspace, and Facebook.  In fact, the largest websites on the net in terms of unique hits per day are free service ad driven websites.

 Although this business model might initially seem very attractive because the upfront costs of getting the site up and running is very low (you don’t have to build a stock of inventory to resell for example), the cost of initially bringing visitors to your site is astronomically large (thousands or millions of dollars).  This is because you need an extremely large amount of traffic to earn revenue with an ad driven website.  On average, you will earn about $1 for every one thousand unique visitors.  That’s a lot of visitors!  To get this kind of traffic going, you will need to advertise your website (ironic I know) by paying for hundreds of thousands of new potential users.  In my experience, if you use a PPC program like Google Adwords, you’ll be paying $3-$5 per user.  Furthermore, if you wanted to make just $100 per month, you’ll need to build a website that can generate 100,000 hits per month! 

In order to successfully profit from a free service ad driven website, you will either need to be extremely wealthy, or have an investment firm backing you up.  However, if you’re fortunate enough to pull it off, your site could be worth millions of dollars in the long run.  This type of a business model is a high risk – high reward model.

Free Content Ad Driven Model

This business model usually refers to blogs, which is the most popular of the two models.  Unlike the free service ad driven model, you won’t have to spend any money to bring in visitors to your website.  This is because most of your visitors will find your site from a popular search engine like Google.  Since a blog is content based, and since search engines regularly crawl websites whose homepage content is updated frequently, a lot of people will come across your site just from surfing the net.

Blogging won’t make you a millionaire, but if you’re successful with it, you could supplement your income with an extra $1,000 a month or more.  In some cases, the best bloggers in the world can make a full time job out of blogging, earning up $100,000 a year.  Generally, a new blogger will start to see a noticeable revenue stream after blogging every day for six months.  After about one or two years of steady work, a proficient blogger can earn anywhere from $100 to $1,000 a month.  In other words, this is a very low risk – low reward business model.

For more information on creating your first blog, click here.

Most Common Mistakes That People Make When Starting an Online Business

March 2nd, 2010 by Eric Rowell 3 comments »

Although starting an online business can be fun and exciting, it’s important to begin your journey with realistic expectations.  Understanding the pitfalls that many inexperienced web entrepreneurs experience when starting out will help you to better prepare yourself for what’s to come.

Making a website is hard

Building a successful website requires web designers and programmers with raw talent and years of experience.  First of all, if you have a very limited technical background and are planning on building a website by yourself (kudos!), expect to spend a few years really learning the craft.  If you’re going to build a site that has any sort of chance rivaling your competition, your site will have to utilize every web 2.0 technology available.  You’ll need to learn HTML, CSS, JavaScript, AJAX, SQL, and a server scripting language like PHP, C#, or Java for starters.  You’ll also need a good image editor like Photoshop, and you might also need to learn Flash or Silverlight if you plan to build an RIA (rich internet application).  You can learn basic HTML in a day or so, but the others will take years of practice to really master.

If you build it, they will NOT come. 

The old saying “if you build it, they will come” unfortunately does not apply to the web world.  One of the most discouraging and frustrating facts about the web becomes very apparent for an inexperienced online entrepreneur when they launch their very first website.  After months of development it can be very exciting when your site has finally launched.  However, it’s also very discouraging when you realize that zero visitors are finding your website each and every day.  The hardest part about online business is marketing.  To successfully bring in new visitors to your website, you will need to understand SEO (search engine optimization), social media marketing, and PPC (pay per click) paid advertising programs just to name a few.  Unless you’re starting a blog, be prepared to spend thousands of dollars, if not millions, on online advertising.  Unless you’re exceptionally wealthy, you will need seed capital from an investment firm to get started.

Your website will never be finished

A lot of people who want to make it rich online think that a website is like a money making machine.  They think that once a website is built, it can virtually run itself and the money will just magically start rolling in month to month.  The reality is, a website is never really finished.  As any website grows, there will always be bugs to be fixed, enhancements to be made, pages to be redesigned, features to add, new web technologies to integrate, etc.  Whether you’re building a website by yourself, or have a team of programmers working by your side, your site will never be really be “finished”.  Owning a website is a lifetime commitment (unless of course you plan on selling it when it gets big!)

P.S. if you’re truly passionate about starting an online business, please don’t let this post deter you from chasing your dreams.  Just understand that it will take a lot of hard work, persistence, dedication, and confidence in yourself.  Good luck!