Archive for September, 2009

Blog Seperator
September 30th, 2009

How to Make eFriends

Benefitting from Virtual Development Communities

Are you lonely? Tired of looking for solutions to particular programming issues without having any reliable sources? Sure you’ve got the latest version of “Your-Programming-Language-Here for Dummies”, but manuals and APIs tend to lack substance and examples. For nerds like us it’s like high school prom all over again. Fortunately, there are others like you longing to rid themselves of the indecipherable semantic garble that has bottlenecked open-member solution sources.

Utilizing technical forums and blogs to learn about development questions used to be a painstakingly difficult process that first required hours of intensive searching before even finding relevant posts. Of course, there was always the 50/50 chance of there being no solution, advice, or response at all! Finding a reputable open-discussion source has become easier with time as developers began to realize the necessity for such resources and started integrating more and more functionality into their web-based newsletters and virtual communities. A few examples of such communities are stackOverflow, a free language-independent developer discussion forum, and Experts Exchange, a subscription based discussion forum with extended services and assistance.

These rich communities can be seen as archives of wizardly knowledge, endowing us with otherwise non-existent knowledge and providing tried and tested methodology. These grandfathers of discrete mathematics and algorithmic analysis (with their punch cards and pocket protectors) are met with the modern day programmer in one environment, blending knowledge with youthful ingenuity and energy. It is no wonder that software companies have made such communities a staple to their processes as it provides immediate feedback, user testing, and allows for announcements concerning their products. For the individual user these communities can have limitless potential. Developers are exposed to new technologies, collaborate on ideas with like-minded developers, and collectively contribute to a rich and diverse technology base.

Getting involved in these communities not only provides developers with an additional resource to turn to when confronting programming obstacles, but also extends their capacity to understand other programming styles. While at first this may seem to pose a threat to the unification of programming styles and semantics, it actually has the opposite effect. The need for a concise terminology when dealing with programming and development is critical in being able to discuss and work with others. As people become more involved with these communities they begin to pick up on the lingo frequently used by other users and start integrating it into their own questions and solutions to better describe their problems or answers. In this manner users are not only learning coding solutions but are also adapting more widely used terms and concepts, which, in turn, increases their potential as developers.

For several developers pride and skepticism are grand deterrents to participating in such community-based solution sources. To those who fall under this category I challenge you to really flex your programming muscle by solving the convoluted and complex issues of others (and in return showing off that hubris of yours). One great addition to these emerging discussion forums and blogs is the integration of social-networking components such as instant messaging, friend/relation managers, and (for those prideful people) ranking systems based on your activity and the accuracy of your responses/posts. Personally, my favorite example of such integrated functionality is on the ASP.Net site which provides tutorials, videos, discussion forums, a relation manager, software toolkits, and a reflective ranking system (but then again the .Net framework is my niche).

So whether you are looking for a simple solution to a required introductory programming course, writing your dissertation on Quantum Computing Theory, or just an ASP.Net developer for a small company building web-applications in a flour mill, there is much to learn from these grand archives of information. You never know when you will meet that certain someone that lights up your life…or at least knows one method call that simplifies your program by a couple hundred lines.

September 30th, 2009 in Fun, Nerd Matrix | Comments (0)
Blog Seperator
September 24th, 2009

Email Marketing … Pass It On

Before social network sites like Facebook, MySpace, LinkedIn and Twitter became household names around the world, it was good old-fashioned email that connected us all. Instead of the quick 140-character Twitter update or Facebook status update, you’d type a few paragraphs about your week or your day and send to a group of your closest friends via email. Then the Reply All option was used over and over and everybody was officially updated and connected. In the business world, the growth of email marketing exploded as companies realized the instantaneous messaging to customers, prospects and the general public was incredibly cost-effective compared to the magazine or TV ad they had previously purchased. It was also a new way to segment and target specific audiences with very personal and meaningful messages.

Email marketing continues today as a very important piece to most businesses’ marketing arsenal – if used the right way.

However, the landscape has changed a bit with the popularity of the social media sites mentioned above. And it’s changing email marketing from a “direct response” and “top-down communication” tool to more of an engagement and sharable piece of communication between companies and the public.

Before, with traditional tactics, companies PUSHED the message on their customers, and then with the growth of search marketing, paid search and blogging companies were PULLING their customers into the message. Now, by engaging and sharing information across networks, those PUSH and PULL tactics should change to into more of a CONVERSATION participant.

By building email marketing pieces with “Forward to a Friend” options and Facebook Share buttons and/or Twitter links, companies can make it easy for their audience to pass it on. So, instead of ending up buried in the inbox of one person, they have the ability to forward it to their circle of friends and contacts because the message is compelling and engaging – not just an advertisement or promotion.

Some tips to remember:

  • Brands were once defined in a board room of people wearing expensive suits – today brands are shaped and molded in the marketplace through social dialogue.
  • The corporate executives don’t have as much control as in the past with their brands unless they are deeply involved in that dialogue.
  • Instead of focus groups and surveys, social media and email marketing strategies allow for immediate and constant 24/7 insight into what people think about your brand or products. The web never sleeps and thoughts and opinions can spread faster than ever because of it.
  • By making your message worthy enough to share amongst friends and contacts, companies can show their relevancy to the times and build trust between them and their customers.
  • The long newsletter style is a thing of the past now that the social dialogue is the accepted way of the world. Write your message similar to how we talk to each other.
  • Continuously monitor what’s being said about your brand and your competitors – don’t end up surprised.
  • And finally, when using the Shared Links and Icons that come with Facebook, LinkedIn and Digg, place those pieces prominently on your email messages. This can be tested over time to find the most effective location and stick with it.
September 24th, 2009 in Marketing | Comments (0)
Blog Seperator
September 17th, 2009

Got a Niche? Scratch It!

Creating a Web site that caters to the masses isn’t easy. Most of your broad-appeal sites like espn.com, cnn.com or similar monsters have the backing of major established companies willing to put down large amounts of capital to see them succeed. That can’t always be the case for someone who wants to start up a site and see it grow into a success. That’s why the key to online success is finding a niche market and giving them what they need.

The real beauty of the World Wide Web is that you have billions and billions of bytes of information dedicated to just about anything you can think of. If you look around the Internet, how many times have you thought to yourself, “wow, there’s actually someone out there that likes this stuff?” The best part is that there is still room for more!

Want to check the value of that vintage Partridge Family lunchbox that’s been sitting in your closet for a decade? No problem. Sites like www.collectorlunchboxes.com can point you in the right direction. Or maybe you just need to find out the date that Stan Musial played his last game for the St. Louis Cardinals. Yep, baseball-reference.com is there to help you out (September 29, 1963 by the way).

That’s really the key to success when starting up a new Web business. You have to ask yourself what need exists out there that you can fill. And in the ultimate example of finding a niche, there’s a whole collection of sites out there designed to just help you find a niche market!

The easiest place to find your niche is your own personal interests. In 1999, I started a Web site called rotojunkie.com. This Web site was dedicated to fantasy baseball and football. I started the site because fantasy sports was a big hobby of mine and just happened to be a huge niche market. After 10 years, the site had exploded with thousands of registered members and millions of views each month. It wasn’t rocket science.

Just find something you have an interest in, share that interest with the world and make it happen. The recipe for online success just might be that easy.

September 17th, 2009 in Web Business Basics 101 | Comments (0)
Blog Seperator
September 17th, 2009

The Power Of NETworking

Ha ha ha, I just did a play on words. Get it? NET-working, you know the Internet? Anyone… (crickets – chirp- chirp – chirp)? Tough crowd. Anyhow, the subject of this particular blog is taking the age old practice of networking and deciphering how you can/should/better not ever do with a website to make it your networking clone. That way you can make contacts while you sleep, which is a beautiful thing.

I stole a few tips from a previous article, so like any good writer I will give this writer their due credit. However, we will take their networking tips and turn them into web related information.

#1 - Select a few key associations or organizations and participate actively. This is certainly a big one. There are good times and bad times to promote other websites. I probably wouldn’t advise posting a link to a direct competitor’s website, but if you have a valued-added way to do this then I am all for it (your price is lower, see here kind of thing). Likewise, don’t let your site become a highway of billboards 70 miles long for everything from baseball to knitting associations. I am also going to say this: DO NOT EVER DO RANDOM LINK EXCHANGES or link exchanges period for that matter. There is no real long term value and in the end if someone comes to you with this offer you are going to get the short end of the stick! The key here is to create a “network” of associations, groups or companies that are directly related to your product or service and are widely known as the experts of the field you are in (if you are not). It’s okay to send people away from your site, if you are giving them good information. I promise they will come back to you. With this handful of great websites, find out how you can cross promote each other by adding content about what they do and likewise if they can reciprocate it’s a win/win situation.

#2 - Get to events early and plan to stay late. - Hmmm… I got nothing. Good news is your website is up 24/7. What a party animal!

#3 - Greet people you’ve met in the past. If you know there is another website that you can benefit from a networking partnership with, then “ask and ye shall receive.” If not keep asking and keep “greeting”, so to speak, until you can find the magic button that is a mutually value added relationship between the two websites. Now it goes without saying there is a fine line of persistence and pestering, but if you know you can provide value then it’s just a matter of getting it to the right person and/or seeing it through your eyes. Back up your reasoning with facts, data, pictures, stats, etc and just make sure you are always conveying the value of your proposition. Likewise don’t be cliché and send a poorly written email request. Find a way to get on the phone with someone, the right someone.

#4 - Follow up on leads. Always, always, always follow up with leads from your website. There is nothing worse than someone begging you for help and just ignoring them. It is likely that 50% of your web leads will not be looking for the exact service/price you are offering. If you have a good network and are good at what you do, then you can refer this potential customer to somewhere that can better assist them. Someday that lead might be looking for your services again and can now afford your prices. If you helped them when they were nothing, I promise you they are going to use you later.

#5 - Be generous about sharing business tips, referrals and leads with non-competitors. If someone is good enough to be part of your website network then they should be good enough for you to confidently send them any potential leads (see#4). If they are not then see #1. Its basically the ole’ scratch your back you scratch mine sort of thing. Its just good business.

Well I hope this has been beneficial for you. Always remember to stay on top of your networking and your NETworking duties.

September 17th, 2009 in Marketing, Web Business Basics 101 | Comments (0)
Blog Seperator
September 14th, 2009

Javascript Classes Made Easy(er)

Building Simple Javascript Classes

Three cheers for jQuery, Prototype, YUI, and other javascript libraries that have made the web developer’s life simpler. These libraries make doing what needs done straight forward and clean cut.

However, these little gems do not solve some of the basic “no-no’s” of javascript development.

  1. They simplify the namespaces issue, but they don’t make it go away.
  2. They often don’t do much to promote good programming patterns.
  3. They usually promote a procedural approach to solving problems, rather than a object oriented approach.

On that last note, the object oriented aspect of javascript is almost completely ignored by many developers. Most developers who user these libraries assume that the libraries have removed the need to learn this aspect of the language. Why learn it if you don’t have to?

Simply put, learning javascript as an object oriented language means the same thing as it does for every other language. Your code is generally cleaner, more reusable, and solves the horrors of namespaces (or lack thereof).

Since I’m nice, here’s a quick primer on how to create a javascript “class”.

First, create a variable that equals a function like this.

jsclass = function() {
    // Code goes here!
}

Next let’s create a few properties. Properties are variables that live inside the class and belong to it.


jsclass = function() {
    this.variable1 = "This is our first variable.";
    this.variable2 = "This is our second.";
}

Now we are going to add a few methods. Methods are functions that live inside the class and belong to it. We are going to allow the script that calls this little method to pass it an argument.


jsclass = function() {

    this.variable1 = "This is our first variable.";
    this.variable2 = "This is our second.";

    this.method1 = function(anArgument) {
        alert(anArgument);
    }

}

Wahoo! We now have a fully functional javascript class! It may not do much, but it works. Let’s test it. Create an HTML file and put this script in its head.

Next, throw this little bit of code into the same script block to create an object from our class.


newObject = new jsclass();

Next, in the body of your HTML document, create a button and add an onclick event as follows.


<input type="button" value="A Button" onclick="newObject.method1('Hello world.');" />

Now load your page and press the button. Prepare yourself as you are underwhelmed by a nice little alert box containing the industry standard and massively overused “Hello world”.

Now let’s do just one more thing to round out the basics of using javascript classes. Let’s use member functions and variables inside our class. We are going to change up our class just a bit so make sure to note the changes.


jsclass = function(ourMessage) {

    this.userMessage = ourMessage;
    this.errorMessage = "No message sent.";

    this.method1 = function(anArgument) {
        alert(anArgument);
    }

    this.method2 = function() {
        if(this.userMessage=="") {
            this.method1(this.errorMessage);
        } else {
            this.method2(this.userMessage);
        }
    }

}

newObject1 = new jsclass("Hello world.");
newObject2 = new jsclass("");

Now add a second button to your HTML document.


<input type="button" value="Message" onclick="newObject1.method2();" />
<input type="button" value="Nothing" onclick="newObject2.method2();" />

Clicking the buttons will give you either the message you sent, or the error message contained within the class.

Before you say it, I know that this function is basically useless and could be easily done in other ways. However, when it comes to things like roll-overs, javascript classes can be a life saver. You can have multiple roll-overs on a page that use the same code for their functionality. You can then take that same class and use it on the next project you do easier than with a procedural approach.

So take the OO dive into javascript. You may find that some of the problems (like roll-overs, menus, etc.) that took a lot of convoluted javascript functions to get working become clean and easy when created as a class. Happy experimenting!

September 14th, 2009 in Nerd Matrix, Web Development | Comments (0)
Blog Seperator
September 8th, 2009

Installing Magento on a Go Daddy Server

There are tons of people, just like me and you, who have had problems installing Magento on any server, let alone a Go Daddy one. Among the horrible errors I received, these were the most common:

  • The server encountered an internal error or misconfiguration and was unable to complete your request.
  • Base table or view already exists
  • Column already exists, or Column already exists: magento_eav_attribute

After hours of trial and error, I’ve finally figured out how to get it done right.  Unfortunately a lot of the blogs and forums I read along the way had it figured out at some point too–but between Go Daddy changes and updates from Magento every fix requires tweaking along the way. I think the key is to find a version that works for someone, and stick with that. Lucky for us Magento keeps archived copies of all their installs.

Here are 11 straight-forward steps to installing Magento 1.3.2.1.

  • Sign up with a GoDaddy Linux account. I’ve read that any account will work, or that you have to at least have a Deluxe account. For this example I used the Deluxe account.
  • Create a new MySQL database using the Go Daddy Hosting Control Center. Be sure to make a note of your server name, username (which is also your database name), and password.
  • Download the latest release of Magento (1.3.2.3 worked great for me)
  • Download the sample data that goes with that release (also on that same page)
  • Add the custom php5.ini file (below) to your web root, or just create a new one and add these three lines:
    • register_globals = on
      allow_url_fopen = on
      cgi.fix_pathinfo =1
  • Copy both Magento zip files (the main application release and the sample data) you downloaded to your server root. It’s quicker to copy them there, then unarchive them using the Go Daddy File Manager. Unarchive both sets using the default path of “/”.
  • It may take a few minutes, but once everything is unarchived, you’ll want to copy any folders under “media” in the sample data to the main “/magento/media” folder.
  • Take the SQL file in the sample data, and paste it (or import it) into the database you created in step 2. It’ll take a while, and it will create over 200 tables.
  • In the “/magento” folder we’ll need to make a change to the .htaccess file (or you can download the custom one below)
    • Change “# Options -MultiViews” to “Options -MultiViews” (remove the “#”)
  • Now we need to change the permissions on a few of the folders in the main /magento directory. I used an FTP manager to do this, leave a comment if you need help. Change “/var”, “/app/etc”, and “/media” to 777, and make it recursive so that it does all child folders as well.
  • Browse to your site, http://www.yoursite.com/magento, and fill in the form. I chose my timezone and currency, and did not append the table names with anything. On the three checkboxes at the bottom, the only one I checked was the “rewrite” box. Click the button, and the installation will begin. It takes a few minutes, and you will probably get an error at some point in the install. Just ignore it by going back to your magento site (ie http://www.yoursite.com/magento). If you get to the point where you can create a Magento store username and password, you’re at the finish line.

Even after the install finished, the first time I went to the front side of my store, I received an error. I just refreshed the page and it went away. This happened to me on every install attempt. I think people get stuck because they immediately try to reinstall. Don’t. Just fight through it and refresh, or go back to the /magento directory and refresh your browser. I hope this tutorial saves you hours of headaches!

September 8th, 2009 in Web Development | Comments (23)