<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Orange is my favorite color &#187; Business</title>
	<atom:link href="http://www.ghidinelli.com/c/business/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ghidinelli.com</link>
	<description></description>
	<lastBuildDate>Fri, 27 Jan 2017 17:45:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Interview with me on Cars Yeah Podcast</title>
		<link>http://www.ghidinelli.com/2015/01/12/interview-with-me-on-cars-yeah-podcast</link>
		<comments>http://www.ghidinelli.com/2015/01/12/interview-with-me-on-cars-yeah-podcast#comments</comments>
		<pubDate>Mon, 12 Jan 2015 17:37:55 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Racing]]></category>

		<guid isPermaLink="false">http://www.ghidinelli.com/?p=1619</guid>
		<description><![CDATA[Cars Yeah interviewed Brian Ghidinelli on business, cars and lessons learned.]]></description>
			<content:encoded><![CDATA[<p><img src="https://www.ghidinelli.com/wp-content/uploads/2015/01/carsyeah.jpg" alt="" title="Cars Yeah Podcast and Interviews" width="100" height="142" class="alignright size-full wp-image-1618" />Mark Greene from <a href="http://carsyeah.com/">Cars Yeah</a> interviewed me last week on business, cars and lessons learned.  We talked about what got me into cars in the first place, the one car I would buy if money was no object and what has me excited about the future of MotorsportReg.com:</p>
<p><a href="http://carsyeah.com/ourportfolio/brian-ghidinelli/">Brian Ghidinelli interview on Cars Yeah</a></p>
<p>It was a lot of fun!  Mark has interviewed hundreds of interesting business and motorsport personalities and to be included on the list is an honor.  Be careful &#8211; you might spend all day listening!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ghidinelli.com/2015/01/12/interview-with-me-on-cars-yeah-podcast/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding 4000 subscribers in 45 days</title>
		<link>http://www.ghidinelli.com/2014/09/01/4000-new-subscribers-in-45-days</link>
		<comments>http://www.ghidinelli.com/2014/09/01/4000-new-subscribers-in-45-days#comments</comments>
		<pubDate>Mon, 01 Sep 2014 21:49:14 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Web/Internet]]></category>

		<guid isPermaLink="false">http://www.ghidinelli.com/?p=1598</guid>
		<description><![CDATA[How 45 days of "testing" grew my email list by 53% after 9 years of "implementing".]]></description>
			<content:encoded><![CDATA[<p>I love researching things.  Learning about something new and finding the best way to approach a problem feeds the engineering part of my background.  I satisfy that by reading a ton and because of my online businesses, I read a lot of SaaS-related online marketing and sales material.   But sometimes I read more than I act.  As a recent example, in setting up the best possible go-to-market strategy for our new live timing app, <a href="http://racehero.io">RaceHero</a>, I ran out of time before vacation and lost weeks out of my marketing strategy by failing to kick it off before I left town.  That same &#8220;cobbler&#8217;s shoes&#8221; fate had befallen my email lists for the past 9 years.</p>
<p>This year I&#8217;ve been working to do more A/B testing.  A/B tests are mathematically-backed competitions between two or more options which are scored by the actions of the users.  They may also be the <a href="https://training.kalzumeus.com/newsletters/archive/why_you_do_not_ab_test">single highest ROI tactic for software companies</a>. These tests could be anything from a simple color change of a button (shocking, to what extent that can matter) all the way to a completely different web page.  I was first exposed to the technique back in 2001 at Yahoo! when I was helping redesign their search results but it wasn&#8217;t until the last 18 months I ran the first A/B test on <a href="http://www.motorsportreg.com">MotorsportReg.com</a>.  </p>
<p>Which brings me to how I grew one of my mailing lists by 53% in 45 days.  In the history of this 9-year old list, the last two months would make a hockey stick look like a rolling foothill.  This is like the face of a glacier where it meets into the ocean: a vertical line that reads like an error.</p>
<p>The technique is perhaps too simple to be valuable by itself: I put the signup form where many more people would see it in their routine use of our platform.  Previously, we had a few CTAs in our transactional emails and on our event calendar but the actual signup took place on a mailing lists screen under &#8220;My Account&#8221;.  Few people went there looking to add more email to their inbox so list growth was steady but slow.  Now, when users create a new account or reconfirm their details, they see checkboxes at the bottom of their personal information letting them opt-in to the lists.  Thousands of people see these screens every month and because the lists are valuable, thousands of them are signing on.</p>
<h2>&#8220;It was just a test&#8221;</h2>
<p>The obvious question is why didn&#8217;t we do this sooner?  The answer is because I wasn&#8217;t sure if these transactional flows were appropriate places to insert a list signup.  I had concerns that it might negatively impact registration conversion.  So I hemmed.  And I hawed.  And I periodically looked at the issue in our bug tracker but never quite got over the &#8220;ewwwww&#8221; feeling to put it in place.</p>
<p>That&#8217;s the beauty of A/B testing.  A feature request in our bug tracker is a stone being added to a wall with mortar: it becomes a seemingly permanent piece of your architecture, of your user interface and of your responsibility.  But an A/B test, why, <em>that&#8217;s just a test</em>!  We have made no commitments to keeping it around.  We&#8217;re not even sure we like it!   Implementation only took a few hours so we could rip it out at any time for any reason and respond, &#8220;It was just a test.&#8221;   Simply doing it, rather than talking about it, is <a href="http://lucasartoni.com/2014/08/28/the-rules-of-ab-testing-by-tyler-durden/">rule #2 of A/B testing fight club</a>.</p>
<p>Since it was just a test, we hoped for a nice bump to justify keeping it around.  We were blown away.  At the current rate, we will reach 25,000 subscribers (333% growth) by the end of 2015.  And because we have a large percentage of first-time participants come through our service, we should see a permanently scaled growth rate.   As an additional bonus, this list drives participation for our events so we&#8217;re creating a positive feedback loop for our event organizers and our bottom line too.</p>
<p>All because of a feature I was skeptical of &#8220;implementing&#8221; but happy to &#8220;test&#8221;.</p>
<p>Remember: making the call is making progress.   Doing is better than planning.   Execution is more valuable than ideas.   Look at your to-do list and find one or two things you&#8217;ve been putting off.  What can you do to &#8220;test&#8221; it (whatever that might mean in your case) to move it ahead and gain confidence in your choice?  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ghidinelli.com/2014/09/01/4000-new-subscribers-in-45-days/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy New Year</title>
		<link>http://www.ghidinelli.com/2012/12/31/happy-new-year</link>
		<comments>http://www.ghidinelli.com/2012/12/31/happy-new-year#comments</comments>
		<pubDate>Mon, 31 Dec 2012 21:54:33 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Racing]]></category>
		<category><![CDATA[Web/Internet]]></category>

		<guid isPermaLink="false">http://www.ghidinelli.com/?p=1521</guid>
		<description><![CDATA[2013: maximum attack!]]></description>
			<content:encoded><![CDATA[<p>2012 was like a bolt of lightning.  I hope 2013 is as exciting as Graham Hill taking pole at a wet Spa Francorchamps in 1965:</p>
<p><a href="http://www.flickr.com/photos/bestf1pictures/7892509328/lightbox/"><img src="https://www.ghidinelli.com/wp-content/uploads/2012/12/tumblr_mfwo63cndu1rnh3rzo1_1280-300x202.jpg" alt="Graham Hill, Spa Franchorchamps, 1965" title="Graham Hill, Spa Franchorchamps, 1965" width="300" height="202" class="aligncenter" /></a></p>
<p>Pic linked from <a href="http://wren2972.tumblr.com/image/39315178896">wren</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ghidinelli.com/2012/12/31/happy-new-year/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DoesWhat Interview</title>
		<link>http://www.ghidinelli.com/2012/09/05/doeswhat-interview</link>
		<comments>http://www.ghidinelli.com/2012/09/05/doeswhat-interview#comments</comments>
		<pubDate>Wed, 05 Sep 2012 18:20:58 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Racing]]></category>
		<category><![CDATA[Web/Internet]]></category>
		<category><![CDATA[startup]]></category>
		<category><![CDATA[travel]]></category>

		<guid isPermaLink="false">http://www.ghidinelli.com/?p=1491</guid>
		<description><![CDATA[My recent interview on startups, travel and motorsports is live on doeswhat.com]]></description>
			<content:encoded><![CDATA[<p>I was recently interviewed by Alex Hawke of DoesWhat.com &#8211; they have a very cool library of <a href="http://doeswhat.com">interviews with entrepreneurs</a> from the tech/software space.  There are a lot of big names and I feel privileged to be included.  I liked the questions that Alex asked &#8211; it gave me a chance to both look forward and reflect on how I got here.  </p>
<p>My favorite question was &#8220;What are you most excited about, auto racing, travel or startups?&#8221;  <a href="http://doeswhat.com/2012/08/29/interview-with-brian-ghidinelli-motorsportreg-com/">See what I said</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ghidinelli.com/2012/09/05/doeswhat-interview/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CFPAYMENT 1.0 Released!</title>
		<link>http://www.ghidinelli.com/2012/03/21/cfpayment-released</link>
		<comments>http://www.ghidinelli.com/2012/03/21/cfpayment-released#comments</comments>
		<pubDate>Thu, 22 Mar 2012 02:41:33 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[My Software]]></category>
		<category><![CDATA[Web/Internet]]></category>
		<category><![CDATA[cfpayment]]></category>

		<guid isPermaLink="false">http://www.ghidinelli.com/?p=1456</guid>
		<description><![CDATA[CFPAYMENT, a ColdFusion payment processing library, goes gold with a 1.0 release!]]></description>
			<content:encoded><![CDATA[<p>Payment processing is a lot of boilerplate code that isn&#8217;t much fun to write.  More importantly, when you make a mistake, it usually means a lost sale or, worse, a double charge you have to track down and refund.  </p>
<p>CFPAYMENT makes payment processing easy.  It&#8217;s a ColdFusion library modeled after Ruby&#8217;s ActiveMerchant that normalizes various payment gateways to give developers a single interface to process credit card and ACH transactions.  After years of production use and tens of millions of dollars processed, I&#8217;m proud to announce a 1.0 release is now available at <a href="http://cfpayment.riaforge.org/">cfpayment.riaforge.org</a>.</p>
<p>There&#8217;s a lot of hard work from many different folks that have made this a success.  If you&#8217;re interested in learning more, download the file and check out <em>docs/cfpayment.pdf</em> or hit up the Google group at <a href="http://groups.google.com/group/cfpayment">http://groups.google.com/group/cfpayment</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ghidinelli.com/2012/03/21/cfpayment-released/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Create contacts with the Batchbook API + ColdFusion</title>
		<link>http://www.ghidinelli.com/2010/08/30/create-contacts-batchbook-rest-api-coldfusion</link>
		<comments>http://www.ghidinelli.com/2010/08/30/create-contacts-batchbook-rest-api-coldfusion#comments</comments>
		<pubDate>Tue, 31 Aug 2010 00:47:50 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[My Software]]></category>
		<category><![CDATA[Web/Internet]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[CFHTTP]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://www.ghidinelli.com/?p=1112</guid>
		<description><![CDATA[Using the Batchbook REST API to create contact records from ColdFusion]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.batchblue.com/images/batchBookLogo.gif" width="286" height="49" class="alignright" />This is going to be mostly code because I don&#8217;t have time to really annotate much.  However, if you&#8217;re an Adobe ColdFusion developer and you also use (or are considering) the very good <a href="http://www.batchblue.com">Batchbook Social CRM</a> then you may also want to use their <a href="http://developer.batchblue.com/">REST API</a> in order to programmatically create or read your contact data.</p>
<p>While Batchbook does have the pretty cool <a href="http://batchblue.com/webforms.html">web forms</a> which can capture contact data from any ole web form, it doesn&#8217;t give you total flexibility with filling in customized data fields.  In our case, we wanted to create companies rather than individuals as part of a sales pipeline so we needed to have more control than the web forms currently allow.</p>
<h2>Start with a contact form</h2>
<p>Here&#8217;s the HTML form that we&#8217;re using &#8211; it still uses the original web form field names so all I&#8217;ve done here is changed the form ACTION to point at my CFM instead of Batchbook:</p>
<pre><code>&lt;form method="post" action="https://ourserver.com/form.cfm"&gt;
&lt;input type="hidden" name="location[address][country]" value="US" /&gt;
&lt;h2&gt;Sign-up Now!&lt;/h2&gt;
&lt;table class="form"&gt;
&lt;tr&gt;&lt;td&gt;&lt;label&gt;Company *&lt;/label&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;input type="text" name="company[name]" size="30" /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;label&gt;Account Type *&lt;/label&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;select name="supertags[sales first contact][plan]"&gt;&lt;option value=""&gt;Select a plan - you can change later&lt;/option&gt;&lt;option value="Plan 1"&gt;Plan Uno&lt;/option&gt;&lt;option value="Plan 2"&gt;Plan Dos&lt;/option&gt;&lt;option value="Plan 3"&gt;Plan Tres&lt;/option&gt;&lt;/select&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;label&gt;First Name *&lt;/label&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;input type="text" name="contact_details[first_name]" size="30" /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;label&gt;Last Name *&lt;/label&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;input type="text" name="contact_details[last_name]" size="30" /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;label&gt;Email *&lt;/label&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;input type="text" name="location[email]" size="30" /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;label&gt;Phone *&lt;/label&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;input type="text" name="location[phone]" size="30" /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;label&gt;Organization Address&lt;/label&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;input type="text" name="location[address][address_1]" size="30" /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;label&gt;Address 2&lt;/label&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;input type="text" name="location[address][address_2]" size="30" /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;label&gt;City, State Zip&lt;/label&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;input type="text" name="location[address][city]" size="15" /&gt;, &lt;input type="text" name="location[address][state]" size="4" /&gt; &lt;input type="text" name="location[address][zip_code]" size="10" /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;label&gt;Company URL&lt;/label&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;input type="text" name="location[website]" size="40" /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;label&gt;Do you have an existing service?  If so, which:&lt;/label&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;input type="text" name="supertags[sales first contact][existing_service]" size="40" /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;label&gt;Date of next event:&lt;/label&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;input type="text" name="supertags[sales first contact][date_of_first_event]" size="15" /&gt;&lt;br /&gt;&lt;small&gt;Format date like mm/dd/yyyy&lt;/small&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;label&gt;Questions/Comments&lt;/label&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;textarea name="supertags[sales first contact][customer_comments]" rows="10" cols="50"&gt;&lt;/textarea&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="submit"&gt;&lt;td&gt;&lt;input class="button" type="submit" value="Request Account" /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/form&gt;</code></pre>
<p>It&#8217;s the same contact form you&#8217;ve whipped up 100 times before.  If you&#8217;re using the built in web forms, the field names must match what is above.  If I was writing my form handler from scratch I would have selected more normalized names.  </p>
<p>Note that we a hidden field at the beginning &#8211; not all of the data must be user editable.  Of course, I could also just set it in my form handler.  The country value is a holdover from the original web form.</p>
<h2>Process those fields</h2>
<p>Our next step is to process that form submission with ColdFusion and use the Batchbook API to create my contacts and populate my custom data fields:</p>
<pre><code>&lt; !--- credentials ---&gt;
&lt;cfset variables.api_key = 'YOUR-SECURITY-KEY' /&gt;&lt; !--- get this from "Your Account", right column ---&gt;
&lt;cfset variables.root_uri = 'https://[YOUR HOST].batchbook.com/service' /&gt;

&lt;cfhttp url="#variables.root_uri#/companies.xml" method="post" username="#variables.api_key#" password="x" charset="UTF-8" timeout="30" throwonerror="no"&gt;
	&lt;cfhttpparam name="company[name]" value="#form['company[name]']#" type="formfield" /&gt;
	&lt;cfhttpparam name="company[notes]" value="" type="formfield" /&gt;
&lt;/cfhttp&gt;
&lt; !--- cfdump var="#cfhttp#" ---&gt;

&lt;cfif structKeyExists(cfhttp, "responseheader") AND isStruct(cfhttp.responseheader) AND structKeyExists(cfhttp.responseheader, "location")&gt;

	&lt;cfhttp url="#cfhttp.responseheader.location#" method="get" username="#variables.api_key#" password="x" charset="UTF-8" timeout="30" throwonerror="no"&gt;
	&lt;/cfhttp&gt;
	&lt; !--- cfdump var="#cfhttp#" ---&gt;

	&lt;cfset xmlCompany = xmlParse(cfhttp.fileContent) /&gt;
	&lt;cfset id = xmlCompany.company.id.xmlText /&gt;

	&lt; !--- now add location to company ---&gt;
	&lt;cfhttp url="#variables.root_uri#/companies/#id#/locations.xml" method="post" username="#variables.api_key#" password="x" charset="UTF-8" timeout="30" throwonerror="no"&gt;
		&lt;cfhttpparam name="location[label]" value="work" type="formfield" /&gt;
		&lt;cfhttpparam name="location[email]" value="#form['location[email]']#" type="formfield" /&gt;
		&lt;cfhttpparam name="location[website]" value="#form['location[website]']#" type="formfield" /&gt;
		&lt;cfhttpparam name="location[phone]" value="#form['location[phone]']#" type="formfield" /&gt;
		&lt;cfhttpparam name="location[street_1]" value="#form['location[address][address_1]']#" type="formfield" /&gt;
		&lt;cfhttpparam name="location[street_2]" value="#form['location[address][address_2]']#" type="formfield" /&gt;
		&lt;cfhttpparam name="location[city]" value="#form['location[address][city]']#" type="formfield" /&gt;
		&lt;cfhttpparam name="location[state]" value="#form['location[address][state]']#" type="formfield" /&gt;
		&lt;cfhttpparam name="location[postal_code]" value="#form['location[address][zip_code]']#" type="formfield" /&gt;
		&lt;cfhttpparam name="location[country]" value="#form['location[address][country]']#" type="formfield" /&gt;
	&lt;/cfhttp&gt;
	&lt; !--- cfdump var="#cfhttp#" ---&gt;

	&lt; !--- set default values for sales super tag and capture user-provided information ---&gt;
	&lt;cfset arrSuperTag = arrayNew(1) /&gt;
	&lt;cfset arrayAppend(arrSuperTag, "super_tag[existing_service]=#URLEncodedFormat(form['supertags[sales first contact][existing_service]'])#") /&gt;
	&lt;cfset arrayAppend(arrSuperTag, "super_tag[date_of_first_event]=#URLEncodedFormat(form['supertags[sales first contact][date_of_first_event]'])#") /&gt;
	&lt;cfset arrayAppend(arrSuperTag, "super_tag[customer_comments]=#URLEncodedFormat(form['supertags[sales first contact][customer_comments]'])#") /&gt;
	&lt;cfset arrayAppend(arrSuperTag, "super_tag[plan]=#URLEncodedFormat(form['supertags[sales first contact][plan]'])#") /&gt;
	&lt;cfset arrayAppend(arrSuperTag, "super_tag[requested_demo]=#URLEncodedFormat(form['supertags[sales first contact][requested_demo]'])#") /&gt;
	&lt;cfset arrayAppend(arrSuperTag, "super_tag[active]=true") /&gt;
	&lt;cfset arrayAppend(arrSuperTag, "super_tag[paperwork_sent]=false") /&gt;
	&lt;cfset arrayAppend(arrSuperTag, "super_tag[agreement_back]=false") /&gt;
	&lt;cfset arrayAppend(arrSuperTag, "super_tag[announced_on_facebook]=false") /&gt;
	&lt;cfset arrayAppend(arrSuperTag, "super_tag[buddy_check_complete]=false") /&gt;	

	&lt;cfhttp url="#variables.root_uri#/companies/#id#/super_tags/sales.xml" method="put" username="#variables.api_key#" password="x" charset="UTF-8" timeout="30" throwonerror="no"&gt;
		&lt;cfhttpparam type="header" name="Content-Type" value="application/x-www-form-urlencoded" /&gt;
		&lt;cfhttpparam type="body" value="#arrayToList(arrSuperTag, "&amp;")#" /&gt;
	&lt;/cfhttp&gt;
	&lt; !--- cfdump var="#cfhttp#" ---&gt;

	&lt; !--- create person---&gt;
	&lt;cfhttp url="#variables.root_uri#/people.xml" method="post" username="#variables.api_key#" password="x" charset="UTF-8" timeout="30" throwonerror="no"&gt;
		&lt;cfhttpparam name="person[first_name]" value="#form['contact_details[first_name]']#" type="formfield" /&gt;
		&lt;cfhttpparam name="person[last_name]" value="#form['contact_details[last_name]']#" type="formfield" /&gt;
		&lt;cfhttpparam name="person[company]" value="#form['company[name]']#" type="formfield" /&gt;
	&lt;/cfhttp&gt;
	&lt; !--- cfdump var="#cfhttp#" ---&gt;
&lt;/cfif&gt;</code></pre>
<p>Some notes about the above:</p>
<ul>
<li><strong>What&#8217;s my password?</strong>  Your password is X.  Or Y.  Or Z.  It doesn&#8217;t matter &#8211; Batchbook only authenticates you on your unique key which is sent as the username.  The password can be anything.</li>
<li>If you&#8217;re new to REST APIs, I suggest enabling the CFDUMPs as they will show you how data comes and goes.  Plus, you&#8217;ll see what the response headers look like (hint, they aren&#8217;t all <em>200 OK</em>s).</li>
<li><strong>Associating people with companies</strong> &#8211; there is no official way to do this.  Just make sure the &#8220;company&#8221; value for the person is a string match for the company record and Batchbook will make the magic happen on their end.</li>
<li>There is basically no error checking or exception handling here &#8211; I&#8217;ve got my code wrapped up in some try/catch and I fall back to sending an email to us if all else fails.  <strong>Plan for failure.</strong> At some point the API will be down or the Internet will break and you need to have a contingency plan when dealing with remote third parties.</li>
</ul>
<p>The above code took me a day or two of toying around to get working properly.  While the docs are pretty good, my experience is that API implementations never quite match their documentation.  Getting super tags to work (key to our sales process) took a lot of fooling around plus some assistance from the very helpful Eric Krause at Batchbook.</p>
<p>Next post will be how we&#8217;re integrating the results of this sales pipeline with <a href="http://www.emailcenterpro.com">Email Center Pro</a> to dynamically generate and send out contracts in preparation for our sales cycle this winter.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ghidinelli.com/2010/08/30/create-contacts-batchbook-rest-api-coldfusion/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Love or hate, create an impression</title>
		<link>http://www.ghidinelli.com/2010/08/18/love-or-hate-create-an-impression</link>
		<comments>http://www.ghidinelli.com/2010/08/18/love-or-hate-create-an-impression#comments</comments>
		<pubDate>Wed, 18 Aug 2010 21:48:31 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[Business]]></category>

		<guid isPermaLink="false">http://www.ghidinelli.com/?p=1108</guid>
		<description><![CDATA[Trust your gut.  The important part is that people are talking.]]></description>
			<content:encoded><![CDATA[<p><a href="https://www.ghidinelli.com/wp-content/uploads/2010/08/beastie_boys_hate_letter.jpg"><img src="https://www.ghidinelli.com/wp-content/uploads/2010/08/beastie_boys_hate_letter.jpg" alt="Everyone hates at some point" title="Beastie Boys back album cover from 'Some Old Bullshit'" width="571" height="771" class="alignnone" /></a><br />
This letter was written to the Beastie Boys early in their career.  Not a very flattering letter but the band went on to sell about a bazillion records anyways.</p>
<p>Don&#8217;t let a little bit of hate make you second guess yourself.  Success usually comes at the end of a very long road of perseverance.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ghidinelli.com/2010/08/18/love-or-hate-create-an-impression/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Endurance</title>
		<link>http://www.ghidinelli.com/2009/09/10/web-endurance</link>
		<comments>http://www.ghidinelli.com/2009/09/10/web-endurance#comments</comments>
		<pubDate>Thu, 10 Sep 2009 18:13:01 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Web/Internet]]></category>
		<category><![CDATA[consulting]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.ghidinelli.com/?p=941</guid>
		<description><![CDATA[Digital media is ephemeral but the discovery of an old consulting project is a quick trip down memory lane]]></description>
			<content:encoded><![CDATA[<p>One of the things I regularly lament is the lack of permanence on the web.  Especially when I had my design firm <a href="http://www.vfive.com">VFIVE</a>, often our client work would be replaced or disappear in as little as 12 months after we completed it.</p>
<p>That&#8217;s why I was surprised to get an email this morning from my buddy Trevor Peace who found our project for the <a href="http://www.darpa.mil/grandchallenge05/gcorg/index.html">2005 DARPA Grand Challenge</a> not just online but actually still functioning!  Fun to reminisce!  </p>
<p><a href="https://www.ghidinelli.com/wp-content/uploads/2009/09/darpagrandchallenge.png"><img src="https://www.ghidinelli.com/wp-content/uploads/2009/09/darpagrandchallenge-300x272.png" alt="2005 DARPA Grand Challenge website built by UIFocus/Brilliant Media" title="2005 DARPA Grand Challenge website built by UIFocus/Brilliant Media" width="300" height="272" class="aligncenter" /></a></p>
<p>We built a real-time Flash leaderboard that showed where the automated vehicles were on course from a GPS location feed.   This was one of the few projects that I worked on that was an &#8220;event&#8221;.  E.g., it wasn&#8217;t launched and then took on a life of its own.  Instead, the shelf life for this was just a few weeks with a particularly important 36 hours during the race through the desert near Primm, Nevada.  That kind of pressure brings new emphasis on testing.  Especially when your customer is the Department of Defense!</p>
<p>The lack of permanence on the web makes me envious of people who work with their hands for a living.  I&#8217;m sure this is a &#8220;grass is greener&#8221; feeling but the kind of work where you physically create or sell something has a lot of appeal to me at this stage of my life.  It&#8217;s also a lot easier to explain to your grandparents. <img src='http://www.ghidinelli.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ghidinelli.com/2009/09/10/web-endurance/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Amazon load balancing and server monitoring enhances stack</title>
		<link>http://www.ghidinelli.com/2009/05/18/amazon-load-balancing-and-server-monitoring-enhances-stack</link>
		<comments>http://www.ghidinelli.com/2009/05/18/amazon-load-balancing-and-server-monitoring-enhances-stack#comments</comments>
		<pubDate>Mon, 18 May 2009 15:09:31 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Web/Internet]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[cloud]]></category>

		<guid isPermaLink="false">http://www.ghidinelli.com/?p=714</guid>
		<description><![CDATA[New Amazon Web Services offer EC2 monitoring, load balancing and auto-scaling.  These tools make it easier to achieve high availability without a cost penalty.]]></description>
			<content:encoded><![CDATA[<p>I have been researching cloud computing over the past few months and evaluating the various vendors, service add-ons and pricing to see how it compares to our colocation solution.  While many people think of cloud computing as a way to do it cheaper, I came across a great quote (which I can&#8217;t find now) that basically said:</p>
<blockquote><p>Why would you expect someone to provide a higher level of availability and more features at a cost lower than you can do it yourself?</p></blockquote>
<p>You can argue about economies of scale but fundamentally it&#8217;s on the mark.  Amazon (and the other grid/cloud providers) have to pay for the same hardware and infrastructure that we do except they have even more strenuous requirements.  And since they&#8217;re not a charity, there has to be some profit in there, too.  </p>
<p>But many of the reasons to wait on cloud computing, at least the Amazon variety, changed today with the announcement of three new services:</p>
<ul>
<li><strong>CloudWatch</strong> &#8211; Web services-based resource and performance monitoring of EC2 services at $0.015/hr or $10.80/month.</li>
<li><strong>Auto Scaling</strong> &#8211; A key feature of add-on services like <a href="http://www.rightscale.com">RightScale</a>, Auto scaling will add or remove server instances on the fly.  Most web sites experience some amount of seasonality whether it be time of day, day of week or month of year and this will reduce costs by scaling up only as needed.  It&#8217;s included as part of CloudWatch.</li>
<li><strong>Elastic Load Balancing</strong> &#8211; Yes!  Instead of setting up an instance and running keepalived or haproxy to route traffic between multiple servers, Amazon now has load balancing at $0.025/hr or $18/month and it can span multiple availability zones (~physical data centers).  You also pay $0.008/GB of data transfer handled by the load balancer.  100GB/month would cost you $0.80.</li>
</ul>
<h2>Why is this news?</h2>
<p>It means EC2 just got cheaper as you scale up.</p>
<p>For my company, we run a two-node cluster primarily for high-availability.  To actually keep this highly available, we also have to run a pair of load balancers managed by <a href="http://www.keepalived.org">keepalived</a>.  This works quite well but it&#8217;s 4 separate boxes with power supplies and disks consuming power and taking up rack space.  Those are all the downsides to having your own rack space.  At least in California, power is the most expensive part of physical hosting and also the biggest restriction.  It took a <a href="https://www.ghidinelli.com/2007/12/12/state-of-the-silicon-valley-collocation-pricing">fairly exhaustive search</a> to find a datacenter where we could get 30A into a single cabinet.</p>
<p>If we had our current architecture in EC2 today, my interpretation is we could eliminate our two load balancers to save $144/month (small instances are ~$72/month) and replace them with $11 worth of Elastic Load Balancing.  If we added monitoring, we should be able to add web servers as demand dictates for additional savings by not having a second web server running 24/7.</p>
<p>Most smaller web companies want five nines but can&#8217;t afford it nor manage it.  Historically we run our service just short of 99.99% uptime which is fairly expensive and difficult to achieve but provides a scant 3.5 hours of downtime per year.  <em>Most companies can tolerate this</em>.  These new features of EC2 are making it inexpensive to take advantage of EC2s promise: on-demand scalability with high-availability.</p>
<h2>How to save money with EC2</h2>
<p>When I agreed it was insane to expect someone else to do something for you for less money, it was if you <em>compare apples to apples</em>.  Everyone has a base architecture that has something like a database server, web server and mail server.  You simply cannot expect to save much, if any, money in your initial configuration.  The only meaningful way to save money with cloud computing is to reduce the incremental step in costs as you add capacity.  If a colocated solution offers you additional 10 units of web server performance for $1000/month and you can buy the same performance in 1-unit increments for $100/month, then you save money anywhere between 10 and 20 units.  Virtualization and auto-scaling make it possible to reduce your investment to the minimum required capacity on a minute-by-minute basis to drive the most value from cloud hosting.  </p>
<p>I think it&#8217;s time to start running some tests&#8230; </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ghidinelli.com/2009/05/18/amazon-load-balancing-and-server-monitoring-enhances-stack/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Thought provoking entrepreneurial links for Friday</title>
		<link>http://www.ghidinelli.com/2009/05/08/thought-provoking-entrepreneurial-links</link>
		<comments>http://www.ghidinelli.com/2009/05/08/thought-provoking-entrepreneurial-links#comments</comments>
		<pubDate>Fri, 08 May 2009 21:35:51 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Web/Internet]]></category>

		<guid isPermaLink="false">http://www.ghidinelli.com/?p=692</guid>
		<description><![CDATA[Inspiration and insight from other entrepreneurs on startups and what it takes to succeed.  Great Friday reading.]]></description>
			<content:encoded><![CDATA[<p>None of these are new, but the fundamentals of being an entrepreneur or running a start up don&#8217;t really change.  I&#8217;ve been reading these the last few days as well as re-reading Seth Godin&#8217;s &#8220;The Dip&#8221; and reflecting on how my startup is doing:</p>
<ul>
<li>The erroneously named <a href="http://particletree.com/features/web-app-autopsy/">Web application autopsy</a> is actually a recap of a SXSW panel looking at four different companies at four different stages.  The interesting bit here is each company, <a href="http://www.wufoo.com">Wufoo</a>, <a href="http://www.blinksale.com">Blinksale</a>, <a href="http://www.feedburner.com">Feedburner</a> and <a href="http://www.regonline.com">RegOnline</a> each shared some hard numbers from their operations.</li>
<li>From there I read through to <a href="http://particletree.com/notebook/the-underbelly-of-a-web-app/">Underbelly of a web app</a>.  We have a lot of this stuff already taken care of &#8211; the billing, customer service and other automation pieces that make the actual operations of a company manageable.</li>
<li>The link about stat tracking caught my eye and pointed to Joe Kraus&#8217; <a href="http://www.brendonwilson.com/blog/2006/04/30/joe-kraus-confessions-of-a-startup-addict/">Confessions of a startup addict</a>.  This is not new by any means but I realized that we weren&#8217;t doing a very good job of tracking revenue by customer so I dropped into Eclipse and threw together a Statistics Service for my app that will generate this data for me broken out by plan and date.  Having metrics to gauge progress (and more importantly, motivate) is key to success but so easy to ignore.</li>
<li>Someone in one of these pages referenced <a href="http://startupschool.org">StartupSchool.org</a>, which is supposed to happen again in 2009.  I found a link to <a href="http://omnisio.com/startupschool08">videos of their talks</a> which I&#8217;m going to watch this weekend for some inspiration.</li>
</ul>
<p>Got any good business / startup / entrepreneurial readings?  I also came across <a href="http://billflagg.blogspot.com/">Bill Flagg&#8217;s blog</a> when I went looking for more info about RegOnline and the guy who participated in the panel.  It&#8217;s no surprise given my company is Motorsport<strong>Reg</strong>.com that I would be interested in the success of <strong>Reg</strong>Online.com.  I found Bill&#8217;s blog to be frighteningly similar to my own thoughts about the web, applications, customer service and so forth.  We seem to read a lot of the same books as well but what I found valuable about his posts were the amount of actual data and insight he shared from RegOnline&#8217;s operations.</p>
<p>P.S., when are you no longer a &#8220;startup&#8221;?  Time?  Revenue?  Ever?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ghidinelli.com/2009/05/08/thought-provoking-entrepreneurial-links/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
