Archive for October, 2009

Blog Seperator
October 29th, 2009

What Kind of Programmer Are You?

How to identify programmers and cope with their different coding styles.

Everybody has their only personal touch when it comes to pumping out code. Oftentimes the difference is negligible since similar work items are usually delegated to one programmer or department, minimizing the chance that you will ever have to sort through their source since it ‘appears to work’. Having to decipher another person’s code can be time consuming and runs the risk of erroneous implementation of code. Being able to recognize a particular programmer’s style is the first step to successfully utilizing their work for your benefit. Listed below are a number of different programming styles that you are likely to come across in your workplace along with their distinguishing traits.

The Clutter Bug:

More often than not this type of programmer can be identified by looking at their workspace alone. These ‘cluster-coders’ lack organization and are more concerned with results than upholding standards. Clutter Bugs are the product of loosely defined business requirements, poor fundamental programming education (or a personal indifference towards accepted programming methodology), and not enough team experience. The Clutter Bug gets a bad rap, because they often are the most intelligent programmers. Most Clutter Bugs know their code like the back of their hands and given a conflict can resolve it promptly. Other symptoms include inconsistent lunch schedules, late hours, and unkempt hair.

The Dungeon Master:

These programmers assume that others will adopt and follow their programming styles down to which data structures they use. The Dungeon Master is resilient to change and is always ready to defend their work with a lengthy list of reasons why their style is superior to yours. They are quickly irritable when dealing with other persons’ code, and will become quickly lost if too much or too little whitespace is present. Individually they might stand out from the crowd, but when working within a team environment they oftentimes become the nitpicker and inhibit work from getting completed by requiring that all deliverables meet their standards first and not the clients’. Some Dungeon Masters are the product of the Dinosaur mental block (can’t teach an old dog new tricks), but more often than not they are just prideful and have an insurmountable prejudice.


The Spatially Aware:

If there was a beauty pageant for code-writing the Spatially Aware would win every time, however they might fumble when asked how they would use their code to better the project. The primary flaw of the Spatially Aware is that they probably have spent more time organizing their code than writing it. Some of them are tightly bound by the instructions of their first programming teacher while others simply have some form of textual spacing Obsessive Compulsive Disorder. This type of programmer may make it extremely easy for you to find what you need from their code, but they will struggle immensely with your code if you have not mashed your “tab” button to death. They also tend to waste valuable time making code look presentable even though the client will never touch the source.

The Shape Shifter:

Always looking for a new and improved way to perform the same old trick, the Shape Shifter will solve the same problem three different ways in three different places. Their included files list usually has to be placed within a collapsible tag to keep it from taking up half the page. The hardest part about dealing with a Shape Shifter’s code is learning how their code works or learning the foreign resource they decided to pull in. Other programmers struggle with Shape Shifter code, because it requires them to learn alternative ways of implementing a solution that they are already capable of doing with tried and tested logic. Shape Shifters are usually technical bookworms, random bloggers, and tend to jump into a problem headfirst without analyzing the needs of the project first.

The T-1000:

In the brain/processor of the T-1000, coding standards are expendable. Opening up a T-1000’s code is like opening a Windows Media Video file with notepad. Class and variable names look more like serial codes than descriptive titles, lines of code run together, and commenting is, in the programmer’s opinion, unnecessary. These programmers are living machines and should be watched carefully when working on a team project, especially if you have employees with the last name of “Connor”. If you’re delegating an entire project to a T-1000 rest assured that it will function correctly, but do not expect great documentation. T-1000’s can understand anybody else’s code, but others will struggle to understand the simplest statement of a T-1000 program.

While it is impossible to unite all coders under one programming standard, it is very easy to alleviate several issues that may occur between clashing programmer mentalities by implementing and enforcing rudimentary practices. This can be as simple as defining naming standards, having a logic flow associated with work items (aka use cases), or enforcing good commenting. Below are a number of steps that can assist in tightening the nuts and bolts on your development team:

  1. Create a predevelopment process where overall project analysis and design is performed. This includes designing database schema, use cases, naming conventions, and business rules.
  2. If your team is large, or your projects expansive enough, you may consider developing a business-specific software development cycle where project workflow can be custom-tailored to your business’s needs and methodology.
  3. Getting your developers to discuss their ideas openly in Developer Meetings can help establish what kind of standards are necessary for your workforce, and will also promote constructive technical discussion between programmers.
  4. Commenting is a simple and easy way to describe what your code does. This is the only reason commenting exists…so use it!
  5. Documentation is painful to compile, but it will save your developers time, your end users even more time, and your customer support department 50% on their phone bill.

In order to get the most out of your developers it is important to recognize the differences and utilize the strengths of your team members. Being able to identify what type of programmers you are working with will save you time, money, and minimize the need for oversight. Taking some of these proposed precautionary steps can drastically increase the efficiency of your development team and also increase the conviviality of your workplace.

October 29th, 2009 in Web Development, Web Business Basics 101 | Comments (0)
Blog Seperator
October 22nd, 2009

Useful Magento Links

Magento is great for e-commerce sites, but it can be difficult to learn. Here are a few Magento links I’ve found useful in my Magento development:

  • Richard Castera’s Magento snippets Great, simple code for doing things like running an SQL query against the database, getting the current category, and one my most- used ones, adding a product to the cart via querystring.
  • Explore Magento Another piece of code I regularly use is gives me the ability to run my own custom code outside of Magento. This can be extremely useful if you have a specialized page not within the main Magento framework. You can find detailed instructions here.
  • Magento Database Diagram - Although it’s for version 1.16, this diagram is very useful if you want to run your own SQL queries in Magento. It saved me a lot of headache when trying to figure out how to join products, images, and prices for a custom query.
  • LoonyBlurb - Custom Layout Templates
    If you work with Magento for very long, you’ll find yourself needing to create custom layout templates. This blog makes that easy to do.
  • Finally, my favorite site for Magento snippets: Snippi.net. Unfortunately, it’s been down for the past two days–let’s hope it’s only a temporary setback. If the link works for you, it is the best repository for short, one-line snippets–from doing everything like removing an item from the cart, grabbing a product thumbnail image, or getting session data about a logged-in user.

Got more? Let us know!

October 22nd, 2009 in Nerd Matrix | Comments (1)
Blog Seperator
October 19th, 2009

Breaking It Down

One of the most difficult parts of any Web project is establishing an accurate timeline for completion of the project. There are so many unknown factors that can creep up during a project that will inevitably delay the project.

So how do you try and account for these factors and establish a schedule you can count on? The simple answer is to break a project down to its smallest pieces and project those items.

It’s so much easier to put a time estimate on a task that has been broken down into its pieces. For example, let’s say one of the big project tasks is to develop a shopping cart. That’s a pretty daunting task to try and slap a time estimate on if you don’t know all the individual pieces that make up that task. So, the best thing to do is take that tasks, break it down and then project those smaller pieces. So in our shopping cart example, I might break it down like this:

• Build front-end shopping cart graphics – 4 hours
• Install shopping cart software – 12 hours
• Integrate software with merchant account – 8 hours

Of course, I can then break these tasks down into their pieces as well if I don’t think I can accurately gauge their times as well. Then I can simply add up my times to get an idea of how long a big task will actually take me.

When I begin working with a client, the first topic I discuss is the specific list of site features and the sitemap. My goal of tackling this subject is to get an idea of all the different components that will make up a project. My next step is to break all these items into their individual tasks. Only then can I accurately estimate a timeline for a project.

Creating a timeline can be intimidating. When you have some many items to get done and so many moving pieces that are always threatening to derail your project, the best bet is to deconstruct the project. Put times to items and then do your best to stick to them. That’s the key to effectively establishing a project timeline you can live with.

October 19th, 2009 in Web Business Basics 101 | Comments (0)
Blog Seperator
October 15th, 2009

Three Great Linux Server Distros

This is a hot topic, at least among nerds lurking about various tech forums around the ‘net. Every nerd has their favorite distro, 72 reasons why, and are willing to stake their reputation on it. Basically, they are distro fan-boys. They argue, fight, start flame wars, and spread more confusion than actual fact in their attempt to support what they believe to be the best of all server distributions.

Really what it comes down to is preference. For the most part, all Linux distributions are built on the same foundation with the same software. Each distribution modifies the software somewhat, which is where the controversy comes in. So it is with some fear and trepidation I throw my hat into the ring.

I’ve picked three that I like and explored each. In the spirit of Open Source Software, I’ve only selected distributions that are free of charge and conform to current Open Standards. Each has it’s ups and downs. Each fits one niche better than the other.

CentOS

Description:
CentOS is a fully open source version of Red Hat’s Enterprise Linux. It takes out all the proprietary modifications and software and leaves the Open Source core intact.

Pros:
STABLE, STABLE, STABLE! CentOS is rock solid stable. It only uses packages that are time tested and fully checked for security leaks. It comes with a fairly air tight SELinux configuration (OS level security) and has a good firewall set up from the get-go. CentOS also comes with some good graphical tools for administering your system.

Cons:
The stability comes with a price. CentOS uses packages that are much older compared to other distributions. That means that new cutting edge features are not there. A prime example is PHP, the current release of CentOS defaults to the 5.1 versions. Magento, a lifeBLUE favorite, as well as many other great PHP applications require 5.2 to run properly. CentOS is also a pain to configure at times.

Conclusion:
CentOS is the way to go if you need stability. Not so much if you need the latest packages and want to step quite a ways away from the default configurations.

Ubuntu Server Edition

Description:
An up to date, customized distribution based on Debian (yet another distribution). It features easy installation of packages and many great tools to help you administer and configure your system.

Pros:
Ubuntu is easy. It is built to be a user-oriented distribution that makes configuring and administering a Linux server less painful. It features an easily customizable version of the Apache 2 web server, extensive selection of commonly used third party applications like phpMyAdmin, and a powerful tool to keep your system up to date. It also now features AppArmor, which is touted to be a new and improved version of SELinux. All of these features work together surprisingly well considering how cutting edge the packages are.

Cons:
Ubuntu has a VERY short support cycle for most of it’s versions. They do have a version marked as “Long Term Support” which is also kept up to date, so this can be avoided. Also, since Ubuntu uses cutting edge packages, a sys admin has to be very diligent in keeping the server up to date to avoid security gaps.

Conclusion:
Ubuntu is probably the best version for someone who is going to spend a lot of time administering and manipulating their server. Configuration is easy and it is simple to roll back changes if things don’t go right. Ubuntu is a bad choice for “install it and leave it” servers (which isn’t really a good idea, but people do it all the time).

Gentoo

Description:
Most sys admins are probably shaking their heads at this one. Gentoo is hard to learn, often complex, and takes a great deal of time to configure. However, it allows an unparalleled ability to configure, change, and manipulate the software on your server.

Pros:
Because of how the package system in Gentoo works, you can do nearly anything you need to do to the software and still use the package management to keep things up to date. With most distributions, Ubuntu and CentOS included, once you step away from standard packages and put in some of your own custom versions you cannot use the package manager for those packages. Not so with Gentoo. The package manager allows you to create and maintain your own customized versions of software. That means if you need a tweaked out web server with lots of custom hacks to support your web application, you can integrate it into the package manager and more easily manage new versions of the customized software you are using. Another great aspect is that Gentoo can have a very lean install. If you just want a file server, you can install Gentoo with the base system and the file server. Most other distributions you would have to uninstall many, many packages to get the same result.

Cons:
Gentoo is HARD. It has a steep learning curve. It also takes a really long time to get a working system (it usually takes me at least a day to get one server up and running). Also, since it allows so much configurability you can break things very badly and have to start over. Lastly, if you don’t know how to make Linux secure, your Gentoo won’t be secure. You are responsible to install and configure the available tools to make Gentoo hardened enough to be an outward facing server.

Conclusion:
If you need to customize, go with Gentoo. If you want to control every aspect of the server in detail, go with Gentoo. If you want easy, go somewhere else.

Overall Thoughts

You have about a billion choices when it comes to distributions for your Linux server. It is worth the time to ask the following questions:

  1. What is most important for the server? Is it stability, cutting edge features, or configurability?
  2. How complex is the server configuration going to be?
  3. How much time are you willing to spend keeping my server up to date and healthy?

If I was to go so far as to give some advice on choosing a server distribution, I’d say this: research your options and don’t get dragged into the hype. Figure out what your needs are first then find a distribution that best meets those needs.

Oh…and ignore the distro fan-boys.

October 15th, 2009 in Nerd Matrix | Comments (0)
Blog Seperator
October 13th, 2009

Get Inspired!

Everyone gets inspired differently, no matter if you’re a developer or designer, or even if you’re a painter or sculptor. The element we all have in common is the blank canvas we start our days with. To start off I’m going to talk about my second favorite way that I personally get inspired. My number one way is basically staring at the computer waiting for an idea to pop into my head, and seeing as that doesn’t give me much material to write about, we’ll skip that and go onto the next mode of inspiration. If you are about to design a site, with a specific look and feel in mind, chances are, that someone else has done it, and a pretty good chance that a million other people have done it. So the best thing to do is to check out what’s out there online.

Get Inspired, Tip 1:
Surf the web for comparable sites

First of all think of the “style” you’re looking to achieve or the “subject matter”. If it’s a particular audience you’re going for, such as athletes, look at sports sites such as, ESPN.com, Nike.com, NFL.com, NBA.com. They must be doing something right, so why not take a few pointers from the best in the biz. However, when looking for a very specific style, look and feel, I go straight to the answerer of all my questions, the search engine. For this latest design we completed at lifeBLUE we were going for a very retro/vintage look. So we typed phrases like “retro websites”, “vintage web design”, something along those lines. And we got hundreds of design examples, websites showcasing these styles, portfolio’s reflective of what we were looking for, etc. The sites became endless. Here are a handful of examples we found most appropriate for the look we were trying to accomplish:

retro1 retro2 retro3
retro4 retro5 retro6

Now, it’s a matter of pulling from elements you admire in the design, adding your own touch, and piecing together your design ideas. Simple as that, right? Well maybe not “that” simple, but just by scoping out other site designs, you have managed to spark that creative fire and create a foundation for you to start designing from. If anything, it starts you off on the right foot and gives you a good boost!

And for the curious ones out there, here is what the final project looked like for lifeBLUE:

mompop

So, just take a few minutes (or this can sometimes turn into hours) and check out what’s out there. Maybe a trend you’re unaware of, a new design technique, or a simple tip or trick to try. The possibilities in this industry are endless, and change every day, so we’ve got to keep up. It doesn’t hurt to venture out and see what others are doing. Above all else, if you see an idea you like, just aim to make it better!

What websites get your creative juices flowin?

October 13th, 2009 in Web Design | Comments (0)
Blog Seperator
October 8th, 2009

Top 10 Problems With The Internet (Letterman Style)

Inspired by David Letterman himself, here is a look at the top 10 problems with the internet.

10. Great Scott! If you click the back button enough times you will be transported back to 1955.
9. Google will become self aware in the year 2010. The Apocalypse is near.
8. True Story:  It is possible to eventually run out of Internet.
7. Unfortunately scratch n’ sniff monitors have not yet been invented or…released.  Experts think this technology is being withheld by the military until it is to be declassified in the year 2025 for civilian use.
6. Using IE6 is like driving a Ford Model T.
5. People are stalking your Facebook account just as much as you are stalking them. Likewise your “ex” does look better than you.
4. You cannot build Facebook, YouTube, Myspace, or Google for $199 w/ free hosting.
3. Odds are you will never win that $50 gift card to Chili’s by correctly guessing the picture of Jennifer Aniston in a lineup with Whoopi Goldberg, Rosie O’Donnell, & Barbara Walters.
2. I am still waiting for my $1,234, 467.72 from Bill for forwarding the Microsoft Beta Test Email to 1,131 of my closest friends 12 years ago.
1. Your children know how to find what sites you visit better than you do.

October 8th, 2009 in Fun | Comments (0)
Blog Seperator
October 6th, 2009

SEO … It’s A Fierce Battle In The Trenches

In football, there are four quarters to a game – a beginning and an end – a winner and a loser – and usually another game right around the corner that you have a chance at winning or losing. A score is kept and it’s very easy to understand how points are awarded. Teams study their opponent and game plan against said opponent before even playing the game. And more times than not, it’s not just the skilled and flashy players that you see in the highlights that are the reasons for winning and losing. You have to look at what’s taking place at the line of scrimmage and the “big uglies” that block, push, tackle and hold all game that usually determines the outcome.

If the offensive line is pushed around then the quarterback is sacked, the running back can’t find holes to run through and it’s a low scoring affair. If the defensive line is beaten up, the ball zips right through them to the lighting-fast wide receivers running towards the goal line and the running backs have a field day breaking tackles and slashing their way around the field.

So for this exercise, we’ll equate the search engines to the line of scrimmage – and all the websites listed in the rankings as the linemen or the “big uglies” (no offense to the web designers, you do beautiful work.)

SEO or search engine optimization is like a football game that’s missing the game clock – meaning there is no end to the game, it’s ongoing and to have a chance to even lead the game and be at the top takes a relentless battle at the line of scrimmage where, thankfully, pushing, pulling, holding, and tripping is also penalized like in football. You should play by the rules or risk getting caught because of unnecessary roughness or just plain stupidity and illegal tactics.

It’s a never-ending battle at the line of scrimmage (search page) because, not only are the other linemen your direct competitors, you’re also competing against random websites that may include something similar to yours. Those sites might have a keyword that you have and out in the business world you are not really competitors at all. Unfortunately, search engines don’t know that and will lump you into the same group. That’s why optimizing your site on-page and off-page is so important for your business and it takes a lot of work to make that happen.

Try this to get an idea of what your website might be up against at the line of scrimmage: Go to Google and enter “fishing” as the search term, you’ll see the normal ranked sites at the bottom and the sponsored sites along the side – also notice this at the top “Results 1 - 10 of about 140,000,000 for fishing” and that indicates what you’re really up against. That’s 140 million webpages that Google has indexed as something related to “fishing”. Those are your competitors whether you like it or not if you have a fishing website (you better be using the best bait!)

And you can even narrow the search for more specific keywords and phrases like “framed prints” which isn’t as bad as fishing with only 5.4 million webpages within Google.

The important thing to remember is that SEO takes time, patience and constant work to take your site from the deep thousands or so within Google all the way to the first search page. Luckily, a majority of those 140 million fishing webpages are not being actively optimized like yours should be. So with some quality SEO work, you should see your site move up in the rankings and eventually be the “biggest ugly” of them all at the line of scrimmage pushing your weight around and leading this never-ending game.

October 6th, 2009 in SEO | Comments (0)