Responding to RFPs for Freelancers

(as presented to Freelance Camp Victoria #yyjfree)

Conference Info: Victoria Freelance Camp, October 24, 2011.

Key Terms

  • ITQ – Invitation to Quote, typically used for known products where only price is a consideration
  • RFQ/RFI – Request for Qualification/Request for Information, used for information gathering prior to a formal bid.
  • RFP – Request for Proposal, a formal bid for services where price and other factors are also considered.

In British Columbia, BC Bid is the primary source of procurement for the provincial government plus many munipaliteies, education instiutions and other public bodies.

Understanding the Process
Most purchases of any size require some form of procurement. Since ITQs are mostly for products (goods) not services, they won’t be discussed here. For the freelancer, you are typically looking for service oppourunties. If these are large then you can expect to see an RFP. I there is an ongoing need for certain skills (project management, document writting, ) this typically will be done through and annual, quarterly or ongoing RFQ followed by individual requests for bids to pre-qualifed bidders on an as needed basis. Completing an RFQ and getting on a bidders list is a good starting point for getting regular oppourtunities to bid on work. Most work involving bidder’s list require at least 3 bids and will be evaluated on price based on the assumption that all bidders are pre-qualified.

Responding to an RFP can be an extensive process requring a significant number of man hours to prepare a proper response. The costs of preparing the response is entirely the responsibility of the bidder and there is typically no option to recover these costs.

RFP responses will be measured on two factors; the mandatory requirements on a pass/fail basis, and the Desirable (scored) criteria. Any responses should clearly state that they meet the mandatory requirements. Example: if the mandatory is ‘must have a Business Address in the Province of BC’ then you should state the mandatory followed by your business address to show you meet that requirement. Just saying ‘Yes’ to a mandatory without stating how you meet that requirement leaves you at the mercy of the evaluator. If you fail to demonstrate you meet the mandatories then your bid will not be evaluated further.

One of the Mandatories is typically basic contract terms. By responding to an RFP you agree to enter into a contract based on the terms included in the RFP. It is important you understand the implicatons of the terms including things like Intelectual Property clauses, Waiver of Moral Rights, and Insurance/Indemnity clauses.

Desireable criteria are scored based on the stated criteria, one of which will be price. The other criteria are typically your business background/capabilities, the details of your solution, and references/examples of work.

Example:

Category Weight % Comment
Price 40–60% typically the largest factor
Capabilties 10–20% May be higher based on complexity
Approach 10–20% technical details, how well suited is the solution
References 5–10% May or may not be seperate, expect to give 3 client contact details of similar work

Tips and Hints

(no tricks – honest!)
Anyone may respond to a RFP..a vendor is any party (individual, business, or society) that is in the position of being able to sell goods or services to government

Procurements are designed to be open process so you should avail yourself of the oppourtunies to learn from any RFP process, even if you don’t end up submitting a bid. This includes asking questions. If there are areas of the RFP you are unclear of then you may send questions to the contact listed on the RFP document. In some cases questions will be addressed at a bidders meeting. In either case, your questions and anyone elses’s are posted along with any answers so everyone sees all the information. In some cases, the answer may be ‘we can’t answer that’ but there is no penality in asking. If there is a significant change as a result of questions or a bidders meeting then the RFP itself may be ammended. One of the common ammendments is to extend the date. An example would be if the results of a bidders meeting reveals details that significantly change your bid, then it is possible to ask for additional time. If there is sufficient reason or vendor request fot an extension typically a week or two might be added to the response time.

Cool Tools to Use

In the search to find more productivity out of all that computing hardware you buy here is a few examples. In a blog post today, Merlin Mann showed an example of how automated you can get some tasks with a little planning and frequent enough use to make the set up worth it.

This used a newer version of the old keyboard macro tools that have been around since the days of Wordperfect. Textexpander on the Mac and ActiveWords on the PC are the current day versions of these tools.

Recently I also started to appreciate the concept of a Clipboard manager. There are many of these on all platforms, my application launcher of choice LaunchBar provides a powerful clipboard history that allow you to stack up all the recent items copies and paste them back in any order.

Multi-site Drupal Install

While there are many online tools to maintain websites, after messing around with several, we’ve found two that seem to lead the pack for our needs. For singlar websites, WordPress is still one of the easiest content systems for individual users. The significant advantage there is the ease of updating the content in place through the Administrative interface. This includes installing plugins without the need to download and ftp packages.

For more complicated services, Drupal is one package that seems to have drawn an active community. While not having the simplicity of managment of WordPress, it does provide an economy of scale by serving multiple websites with a single install. So while you will spend a little more time with each update, up can keep a single code base of the core system, modules, and supporting files. <Drupal:Run multiple sites from the same code base>

In short the creation of multiple sites goes like this:

  1. Single Install in a web directory
  2. Point all domains to the same web directory
  3. Add seperate setting files for each site
    • sites/www.site1.com/settings.php
    • sites/www.site2.com/settings.php 
  4. Run the installers but browsing to each domain

Its then possible to move the core configuration data to a seperate location to make updates with minum need to move files around. See links below

(with thanks to @mysty for the links to @buddaboy’s multisite symbolic links tip )

Video:http://www.archive.org/details/DrupalCampUK

slides: http://www.ixis.co.uk/blog/drupal-multisites-session-slides

The crappy new version version – BC Ferries Widget

After a couple days of beating around with the old code from the Konfabulator version of the BC Ferries Webcam widget – I threw out the whole thing in favor of a from scratch Dashcode version. While Dashcode does have some nice templates and features – really going from scratch with your own thought pattern is where I needed to be. The new widget has a cleaner look and feel but also a much cleaner code. See the Software forum for the BC Ferries Widget or direct download link here.

BC Ferries Widget Image

The goals from here are

  • to redo the comments for future reference
  • save state of preferences – important for iPhone version opening and closing
  • Look at allowing for expansion by removing hard-coded references in favor of variable calls
  • Moving the core data outside the javascript to supporting plist file, then hopefully to an externally called XML documents so URL changes don’t require a code rewrite
  • Consider porting to Google or Windows Gadgets or maybe Adobe Air

Coding for OS X and iPhone – Part II

After fighting with Dashcode for about 24 hours, I quickly discovered that most of my problems involved overthinking the problems. For example, after scouring Google for solutions to load and reload images from the web into a image containter the answer was so trivial that I missed it several times.

URL = “http://www.example.com;
document.getElementById(‘picture’).src = URL;

Where “picture” is the name of the image container in the layout.

After fighting with Dashcode for about 24 hours, I quickly discovered that most of my problems involved overthinking the problems. For example, after scouring Google for solutions to load and reload images from the web into a image containter the answer was so trivial that I missed it several times.

URL = “http://www.example.com;
document.getElementById(‘picture’).src = URL;

Where “picture” is the name of the image container in the layout.

After looking at XMLrequestHTTP and other procedure calls, this was a rather trivial answer to something I beat my head against for 3 hours. It is clear the single issue about dealing with multiple types of object oriented programing is correctly identifying the object properties and there Getters and Setters.

BC Ferries WebCams Dashboard Widget available for download

BC Ferries WebCams on you iPhone can be reached by browsing to http://maxwest.net/releases/BCF/

Further developments on these and other projects will be posted to the Software Forum

Questions and comments to customer@maxwest.net

The crappy old version – BC Ferries Widget

A long time ago in a galaxy far away there was a concept of ‘Widgets’ taken from product lore and applied to the computer interface. The first widespread use I ever had was with a tool called Konfabulator (which today lives on as Yahoo Widgets)

A long time ago in a galaxy far away there was a concept of ‘Widgets’ taken from product lore and applied to the computer interface. The first widespread use I ever had was with a tool called Konfabulator (which today lives on as Yahoo Widgets)

There were a number of interesting applications but one I used as a frequent Ferry traveler was a webcam app that looked at the Ferry lineups. Orignally posted by Richard Smith based on an update of some Ottawa webcams widget. BC Ferries Widget – Yahoo It later broke when BC Ferries updated their site and in the absence of any other updates I stepped in and updated the code and redistributed it.

There are now about 20 different ‘widget-thing’ environments. When Apple subsumed the widget into the operating system with the inclusion of Dashboard. I made a feeble attempt to move my previous effort over. While it worked it was a bit of a cludge. (Slightly revised Dashboard version)

This largely ported the old Javascript code to the Dashboard environment as is. It doesn’t really use the standards of Apple’s Dashboard.

Enter Dashcode; this is the development environment that is availble from Apple Developer Connection to create Dashboard Widgets. It is laughingly simple in some respects and the ability creating a few one-off applications for your own use is a massively underutilized part of the OS X environment.

The other factor in Dashcode is it can also be used to deploy to the iPhone (+ iPod Touch). While coding has never been a main part of my work – the thought of creating tools that you can run on your cellphone is just too cool to pass up. So the short term goal is to re-write the old BC Ferries Widget using the standard conventions of Dashcode and hopefully port it as an iPhone app. Documenting what I can about the sucesses and failures for all to see – here.

Coding for OS X and iPhone – Part I

While there are a massive number of environments, scripting languages, and APIs that are designed to make programs lives ‘easier’, it is impossible to even keep up with more than a couple.

While you can get involved in several they all fall into a a relatively few categories

  • Application Programming – full blown implementation for desktop operating systems. Using a common programming language like C and yypically relying on the OS APIs to manage the user interaction

While there are a massive number of environments, scripting languages, and APIs that are designed to make programs lives ‘easier’, it is impossible to even keep up with more than a couple.

While you can get involved in several they all fall into a a relatively few categories

  • Application Programming – full blown implementation for desktop operating systems. Using a common programming language like C and yypically relying on the OS APIs to manage the user interaction
  • Web Application – Server side coding where the user interaction happens through a client usually a web browser.
  • Scripting – the use of a language that can apply to one or more environments to provide automation handle small process, lives within other environments
  • Widgets – programs that live within a reduced environment such as Adobe Air, Google Gadgets or Apple Dashboard

For those working in Mac environments (including iPhone) there are a host of common tools that meet those functions

  • XCode is the GUI tool for the primary Programming environment in Mac OS X, it uses Objective C as its language
  • DashCode is the Widget environment for both OS X and the iPhone
  • Automator is the GUI tool for scripting within the Operating systems and Applications

Provided you have a computer and operating system that supports the current tools. All of these are availble freely from Apple’s Developer Connection (subject to free registration)

In addition there are several good getting started sites

Resources

Stereo Bluetooth – iPhone 3.0

Hands up if you have had your iPod earbuds ripped out of your ears when you are walking, running, working out, or trying to get something out of a pocket or bag? Hate it? Well this is worth a try.

In a great (and overdue) addition to the iPhone – 3.0 adds A2DP support for Bluetooth Stereo Headsets. This allows you to cut the cord on headphones for both Phone calls and Music. Having regularly worn through more headset cords than you really want to talk about … this is an great alternative.

A couple of cautions however. While A2DP is supported – which adds all audio playback to the phone call handsfree functions, it doesn’t seem to support AVRCP – which provides remote iPod control. In trying the iogear Stereo Bluetooth (~$40 London Drugs) with a 16G iPhone 3G there was no problem answering a call, listening to audio, play/pause and volume. However the skip forward and back buttons would not work.

The other challenge of Bluetooth playback is the fact it requires some processing. There is noticable skipping of audio when the phone is doing something that taxes the processor. For example listening to audio and running MotionX GPS caused pauses in the audio for the first 10 min as the application was capturing and refining its GPS data (wireless data was also active). Likewise, if you are surfing the Internet this can happen as well. So in cases where Bluetooth + 3g/Wifi + GPS are all functioning at the same time. You are likely to have audio issues.

So for the serious listener, the wired headsets will still provide the highest quality playback. But if you can stand a odd blip here and there to cut the cord – it has some great benefits.

Doing ‘Local’ right

The fact that the Internet can bring you information from around the world is both interesting and captivating. For example, there is this newspaper in Lawrence Kansas that probably most people outside of the immediate area would never have heard about. The noteable exception is a lecture recorded by IT Conversations. In his talk to Integrated Media Association New Media Summit (another thing most would have never heard about), Rob Curley spoke eloquently about how his local media has specialized in delivering his community to his community. The whole world can read these online resources but the audience is the population (all 88,000) of Lawrence Kansas.

So in a rather circular path, it brings you back to a worldwide resource providing local service. There have been massive dollars spent and huge conferences held to discuss the value of ‘local’. But it really still remains a promise not a reality. In Canada there was an ad campaign to ‘save local tv’ conducted by CTV globemedia yet the British Columbia section of the CTV news site provides about 8 BC stories wrapped in 50% of a page of advertising, international news, and links to a multitude of other sections. They should learn something from Lawrence, Kansas.