Call us Toll-Free:
Email us

You created a rock solid specification document and posted it on,, or any of the other freelancer sites.

Within a matter of hours, you have dozens of bids from software engineers around the world.

All of them carefully reviewed your specification document and made sure it's a perfect fit for their skills before submitting their bid, right?


Canned Bids

Winning projects as a freelancer, is a numbers game. The more projects you bid on, the more likely you are to win a few.

Based on this logic, you should try to bid on as many projects as possible.

Unfortunately a lot of freelancers abuse the system, creating scripts for automatically submitting canned bids, to all new projects in their category.

Take a closer look at the bids you received. Do they mention anything specific about -your- project? Or could the same bid very well apply to any other project in this category?

Eliminating canned bids

In most cases, you don't want to work with a freelancer who didn't even take the time to read your specification document and submitted a canned bid, without ever stopping to think if this is a good fit with their skill-set.

One trick I use to easily detect and eliminate canned bids, is adding a request in the body of the specification document, that goes something like this:

When you bid on this project
, start your bid with " is great", so that I know you actually took the time to read this spec. This helps me in eliminating canned bids.

If the freelancers bid doesn't include this text, I immediately know it's a canned bid.

Sometimes even though they didn't include the text, the freelancer might catch my attention with a stellar feedback review history. At that point, I give them a simple test, that usually goes like this:


After you get rid of the canned bids, you're left with freelancers who took the time to carefully review the specification document.

Open a message board and ask them the following questions -

1. Do you have experience creating similar apps/websites?
2. Can you share with me links to your previous work?
3. Do you have experience working with the programming language and platform I described in the document?
4. Who will be doing the actual work?
5. What milestones do you suggest?
6. How much time do you expect it will take to complete this project?
7. How will we communicate during this time?

If the freelancer answers to all of the above questions are satisfactory, shortlist them.

Pay close attention to their communication skills, how long it takes between each reply, how detailed are they and how well you understand them.

Communication is key.

Pick the best two or three

Narrow down the best matches, to a list of two or three freelancers.

You are going to award the project to all of them at the same time.

The freelancer who creates the best result, will be the one you'll continue to the following projects with.

Yes - I am suggesting you actually award and pay two or three freelancers.

Think of it as "cost of doing business". It's an essential price to pay, for finding the perfect fit for your needs.

You'll thank me later.
If you were building a new home, would you jot down your ideas for the house in a short Word document, then send them over to construction workers and expect everything to work out well?

Of course not.

And yet, when it comes to software development, most people do exactly this.

They expect a simple unabridged outline of their thoughts, should be all an accomplished software engineer would need to get the job done.

Architects and Builders

Software engineers need a detailed specification document to work by.

In the real world, when you build a house, you would start with an architect. Your architect's job is to translate your vision into a diagram, with detailed measurements and notes about which materials to use.

A builder then takes the diagram prepared by the architect, orders the required materials, creates a work plan, rounds up the construction workers to do the work and manages them on a day-to-day basis, until the work is completed to your satisfaction.

Product Managers and Project Managers

In the software development world, these two roles are played by a Product Manager and a Project Manager.

The Product Manager's role is to translate your vision, into a language software engineers can understand, using very detailed descriptions, screenshots and visuals, not leaving any room for interpretation.

This document is called a Specification Document. Getting it right is the first step in ensuring your project will be a success.

The Project Manager's role is to manage the software engineers until they successfully build a working program that works looks and feels exactly as described in the specification document.

The Specification document

Ideally, it would be best if you have a professional help you with preparing the specification document.

Try to reach out to a Product Manager, who has experience in preparing such documents.

If you don't have access to a Product Manager, your next best option is to reach out to an experienced software engineer and ask for his/her help.

A good specification document should at minimum include these parts:

1. Overview

Explain what this project is about. Who are the users, what function does it fill and what is the value proposition.

2. Goals

Detailed list of goals. Be as specific as possible about what you want to accomplish with this project.

Include screenshots and examples of similar websites/services as necessary.

3. Technical specification

Define the programming language you want the software engineers to use, the target platform and tools they should use

4. Process flow

Step-by-step description of all the screens a typical end user will go through.

Include screenshots, or mockups - very important!

5. Technical architecture & coding convention

Explain the architecture of the product, which modules you want to have created and how they should interact with each other.

Provide a link to your preferred coding convention, so that it's easier to later manage the code.

6. Budget and timeframe

Your estimated budget and target timeframe for the project.
Ask the software engineers to confirm they can meet these, or work with you on reaching a mutually agreed-upon budget and timeframe, before the project starts.

7. Communication

Include contact information for your project manager (probably you) and be clear about expecting daily updates from the engineer, outlining the progress of the work.

Make yourself available via Skype, email, or phone.

Be sure you are responsive and insist on getting frequent progress reports, along with links to review the project at every milestone.

How to tell if you got it right

Similar to an architectural diagram, a good specification document leaves no room for interpretation.

Two different qualified software development teams, should be able to create the same result, if the specification document is sufficiently detailed.

Sublime Text Editor for PHP - a love story

Mike Peters, January 24, 2013
Sublime Text is a fast, sophisticated text editor for code.

Over the years we've tested numerous text editors, including Notepad, Notepad++, PHPStorm, Eclipse, jEdit, NetBeans, phpDesigner and PHPEdit...

Up until recently, PHPStorm and Notepad++ were our two favorites.

PHPStorm has a very extensive feature-set: syntax highlighting, autocomplete, refactoring, html wysiwyg mode, a built-in debugger and file indexing. But it's heavy. Slow. Bloated.

Notepad++ is fast, but it's missing a lot of the goodies found in PHPStorm.

Introducing Sublime Text

Sublime Text 2 combines the best of both worlds:

* Blazing fast
* Sexy
* Syntax Highlighting
* Code completion
* Multi-select and multi-edit
* Goto Anything
* Find and Replace in files
* Customizable via extensive plugin library


Step 1

Download the latest version of Sublime Text 2 here

Windows, Mac OS and Linux binaries are available.

Step 2

Install the Sublime Package Control, by launching the Sublime editor, selecting "View" - "Show Console" from the menu, then pasting this code directly into the console:

import urllib2
,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen(''+pf.replace(' ','%20')).read()); print('Please restart Sublime Text to finish installation')

Package Control is now installed. Close Sublime text editor and restart it for changes to take effect.

Step 3

Open Sublime text editor, click Ctrl-Shift-P and type "Install Package"

Search and install these packages, one by one. Simply type the package name and click it to install.

* SublimeCodeIntel
* SublimeLinter
* WordHighlight
* jQuery
* Prefixr
* Clipboard History

One other thing you're going to want to turn-on is the "Auto save" feature. Off by default, you can turn it on, by opening the "Preferences" - "Default" and setting save_on_focus_lost to true:

"save_on_focus_lost": true,

Step 4

Sublime PHP linter relies on PHP being installed on your machine.

If you haven't installed PHP earlier, grab it from

You'll want to get the Thread-safe ZIP version. Extract the ZIP file to a new "C:\Program files\php" folder.

Open Sublime editor Preferences menu, select the SublimeLinter Settings under "Preferences" - "Package Settings", locate the "sublimelinter_executable_map" block and enter the full path where PHP is installed.

For example:
"php" : "C:\\program files\\php\\php.exe"

Step 5

Install Soda-Theme to give Sublime a sexy dark look

Once installed, update your default theme under "Preferences" - "Settings" with:

"theme": "Soda Light.sublime-theme",
"soda_classic_tabs": true

Restart Sublime editor and you're good to go

Sublime Cheat Sheet

Open Folder: Opens list of all files on a left pane
Ctrl-P: Quickly find any file under your project
Ctrl-F: Find
Ctrl-H: Find/Replace in current file
Ctrl-Shift-F: Find/Replace in files
Ctrl-M: Jump to closing bracket
Ctrl-Shift-M: Select all content of current bracket
Ctrl-Z: Undo
Ctrl-Y: Redo
Ctrl-G: Goto line
Ctrl-S: Save current file
Ctrl-R: Goto symbol / function definition
Ctrl-Shift-D: Duplicate line
Alt-Shift-2: Split to two panes (shift-1 back to one)
Ctrl-2: Jump to pane 2 (Ctrl-1 jump to pane 1)
Ctrl-Shift-L: Multi select
Alt-F3: Select all occurrences of current word for multi edit

View 1 Comment(s)

Bing and Yahoo PPC Webinar

Adrian Singer, November 18, 2010
Free introductory webinar that covers the basics of Microsoft AdCenter and how you can drive traffic to your site from and


* An overview of advertising on Bing and Yahoo! Search with the Microsoft Advertising adCenter platform.
* Tips for setting up search, content, and mobile advertising campaigns.
* Bidding and budgeting best practices.
* Guidance on selecting keywords that will give your ads a better chance of reaching your target audience.

Date: Thursday, November 18, 2010
Time: 10:00 A.M. Pacific Time
Duration: One hour
Cost: Free

Signup here:

Recommended Web Shows

Adrian Singer, September 6, 2010
Happy Labor Day!

Got some time on your hands?

If you love technology, entrepreneurship and the world of online business, there are a few great web shows I'd like to recommend.

This Week In Tech (


This Week In Startups

This WeekIn Venture Capital

Software Projects, a New York based full-service Internet Marketing firm, is seeking a bright, articulate, detail-oriented, and technical applicant interested in joining our group of software professionals.

As a Technical Account Manager, you will work directly with clients, translating client vision into technical requirements, submit weekly plans, manage teams of engineers and oversee all software development work.

You will brain-storm with engineers, think outside the box, provide direction and leadership, while directly interacting with some of the best minds in our industry.

== Requirements:
* Excellent problem solving skills
* Leader, Motivator, Confidence, Energetic
* Superb communication skills with the know-how to verbalize ideas into technical requirements
* Minimum 2 years programming experience (PHP / C / Perl)
* Experience with FreeBSD/Linux a great plus

== Responsibilities:
* Translate client wants into requirements
* Plan projects, oversee software development
* Solve Problems
* Update clients on progress
* Maintain high client satisfaction

== Location:
You will be working from your home office for the first six months. After that time, you will have the option of relocating to one of our offices or continuing to work from home.

== Next steps:
Send an email to with your resume and let us know when is a good time to chat.

Didn't update your resume in the last 2 years? That's fine. It's all about your experience and skills! Send us a quick cover-letter and we'll follow-up.

Basic Web 2.0 Website Template

Dawn Rossi, June 24, 2009
10 years ago, a typical website included about 6 pages, with a home, about us, contact, privacy policy, terms & conditions and FAQ page.

While these are still Must have pages, nowadays, every decent website is expected to feature a blog / forum, photos, videos, social network links and do a better job of "telling the company's story", showing the people behind the site.

I was looking for a simple "push-button" solution to create a skeleton of such a site, but couldn't find one.

SPI does offer thousands of pre-made website templates, as well as custom website development, but I wanted a simple fully-functional template to help new clients get a quick-start with their websites.

Since I couldn't find any existing solution, I went ahead and created one, that covers it all:

* a complete website with a clean "Web 2.0" look&feel,
* Wordpress blog,
* vBulletin Forum,
* Social-network links,
* Navigation menu and
* Contact form

You can use my template to get this setup live, in 30 minutes or less.

Step 1: Register your profile on the social networks

Signup for Facebook, Youtube, Twitter, Digg, LinkedIn, TwitThis and FeedBurner.

Record your username (you'll need it later)

Step 2: Create Logo, Banner & Avatar

You're going to need a unique logo design and nice banner for your new website. Use these image specs and file names -

Top logo logo.png Dimensions: 240x88
Footer logo logo-footer.png Dimensions: 170x66
Post avatar post-avatar.png Dimensions: 24x51
Menu avatar menu-avatar.png Dimensions: 19x23
Top banner top-banner.png Dimensions: 728x90

Step 3: Install Website template

Download the web 2.0 website template

Extract it to your main website folder

The template includes easy to modify top.php, bottom.php and sidebar.php files, that control the header, menu system, footer and sidebar links. These three files are included on all pages.

Note: You can get the latest version of WordPress here. To keep this process streamlined, I've included WordPress as part of the zip file.

Step 4: Install Wordpress

WordPress is located under the /blog folder

Open the /blog/wp-config.php file and update it with your database settings (You'll have to change DB_NAME, DB_USER, DB_PASSWORD, DB_HOST)

If you installed the latest version of WordPress (as opposed to use the version included in the zip file), you'll have to make these additional changes:

(a) Install WordPress by pointing your browser to and follow the on screen instructions

(b) Update blog/wp-content/themes/default/header.php to:


(c) Update blog/wp-content/themes/default/footer.php to:


(d) Update blog/wp-content/themes/default/sidebar.php to:


(e) Update blog/wp-content/themes/default/index.php to:

(); ?>

  <div id="content" class="narrowcolumn" role="main">

  <?php if (have_posts()) : ?>

    <?php while (have_posts()) : the_post(); ?>

      <div <?php post_class() ?> id="post-<?php the_ID(); ?>">
        <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php
(); ?>"><?php the_title(); ?></a></h2>
        <small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small>

        <div class="entry">
          <?php the_content('Read the rest of this entry »'); ?>

        <p class="postmetadata">

          <ul class="foot">
            <li class="alpha"><?php edit_post_link('Edit', '', ' | '); ?> <?php
('No Comments »',
'1 Comment. Join the discussion »', '% Comments »'); ?>  </li>
            <li class="beta">
              <ul class="liaison">
                <li class="rss"><a href="<?=$RSSURL?>">RSS</a></li>
<li class="twitter"><script type="text/javascript" src="/js/twitthis.js"></script>
<script type="text/javascript">document.write('<a href="javascript:;" onclick="TwitThis.pop();">TwitThis</a>');</script></li>
                <li class="email"><a href="/contact">Email</a></li>


    <?php endwhile; ?>

    <div class="navigation">
      <div class="alignleft"><?php next_posts_link('« Older Entries') ?></div>
      <div class="alignright"><?php previous_posts_link('Newer Entries »') ?></div>

  <?php else : ?>

    <h2 class="center">Not Found</h2>
    <p class="center">Sorry, but you are looking for something that isn't here.</p>
    <?php get_search_form(); ?>

  <?php endif; ?>


<?php get_footer(); ?>

Step 5: Install vBulletin

Purchase a license to vBulletin ($180) and download it from

Extract vbulletin to a /forum folder on your server, then follow these steps:

(a) Rename includes/ to includes/config.php and update 'dbname', 'servername', 'username', 'password' with your database details.

(b) Open in your browser and follow the on-screen instructions (you'll need your vBulletin customer number to continue)

(c) Update the fetch_gzipped_text() function under forum/includes/functions.php to:

function fetch_gzipped_text($text, $level = 1)

(d) Open forum/global.php and locate this section in the file:

eval('$headinclude = "' . fetch_template('headinclude') . '";');
'$header = "' . fetch_template('header') . '";');
'$footer = "' . fetch_template('footer') . '";');

Replace these 3 lines with this section:

$buf = @ob_get_contents();
'$header = "$buf";'); 
$header .= "<div><div><div>";
$buf = @ob_get_contents();   
$buf .= @ob_get_contents();
'$footer = "$buf";');
$footer = "</div></div></div>".$footer;
'$headinclude = "";');

Step 6: Update images

Update the images in the /images folder with the ones you created in step 2

Step 7: Update company name, links

Update config.php with your company name, tagline, keywords and social network usernames.

It's important to set all the usernames as these will get populated on all of your pages. If you don't want to use a specific network, make sure you update bottom.php and top.php


In the future, I will update this template to include a built-in image gallery, the SPI FAQ service, the SPI Helpdesk service, Customer back-office and a video links manager.

View 3 Comment(s)
« Previous Posts

About Us  |  Contact us  |  Privacy Policy  |  Terms & Conditions