<?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>Wed, 04 Jan 2012 08:06:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.3</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<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="http://www.ghidinelli.com/wp-content/uploads/2010/08/beastie_boys_hate_letter.jpg"><img src="http://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="http://www.ghidinelli.com/wp-content/uploads/2009/09/darpagrandchallenge.png"><img src="http://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="http://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>
		<item>
		<title>My 2008 Annual Report &#8211; Year in Review</title>
		<link>http://www.ghidinelli.com/2009/03/01/my-2008-annual-report-year-in-review</link>
		<comments>http://www.ghidinelli.com/2009/03/01/my-2008-annual-report-year-in-review#comments</comments>
		<pubDate>Sun, 01 Mar 2009 19:15:14 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Food]]></category>
		<category><![CDATA[Italian Citizenship]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Web/Internet]]></category>
		<category><![CDATA[annualreport]]></category>

		<guid isPermaLink="false">http://www.ghidinelli.com/?p=487</guid>
		<description><![CDATA[A 2008 retrospective.  A good way to feel accomplished and get excited about 2009.]]></description>
			<content:encoded><![CDATA[<p><em style="background-color: #eee">Ok, it&#8217;s March 1st.  I forgot this was in my drafts folder awaiting final polish but it&#8217;s time to set it free before it comes my 2008-2009 annual report.</em>  </p>
<p>Two thousand and eight was a blur for me &#8211; it seemed like a pretty good year but I was inspired by my <a href="http://www.ghidinelli.com/wp-content/uploads/2009/02/dopplr_ghidinelli_2008.pdf">Dopplr annual report</a> to look more closely at what it entailed.  Here&#8217;s what I found:</p>
<h2>High Level Statistics</h2>
<ul>
<li>Traveled 51,306km in 11 trips including one <a href="http://www.ghidinelli.com/go/trips/transsyberia08">around-the-world</a> for three weeks</li>
<li>Wrote <a href="http://www.ghidinelli.com/2008">76 blog posts</a>, mostly about <a href="http://www.ghidinelli.com/c/webinternet">technology</a></li>
<li>Struggled with living in the <a href="http://maps.google.com/maps?f=q&#038;source=s_q&#038;hl=en&#038;geocode=&#038;q=aventino+apartments,+los+gatos,+ca&#038;sll=37.25009,-121.969879&#038;sspn=0.048098,0.077248&#038;g=200+winchester+circle,+los+gatos,+ca&#038;ie=UTF8&#038;ll=37.263124,-121.961288&#038;spn=0.09618,0.154495&#038;z=13&#038;iwloc=A">surburbs</a></li>
<li>Succumbed to <a href="http://www.facebook.com/people/Brian-Ghidinelli/667226934">Facebook</a></li>
<li>Learned to <a href="http://en.wikipedia.org/wiki/Hypermiling">hypermile</a> truck to cope with $5/gal diesel prices</li>
</ul>
<h2>Now, in Technicolor Detail</h2>
<ol>
<li><a href="http://www.ghidinelli.com/wp-content/uploads/2009/02/img_3683.jpg"><img src="http://www.ghidinelli.com/wp-content/uploads/2009/02/img_3683-150x150.jpg" alt="Jennifer snowmobiling in Vancouver" title="Jennifer snowmobiling in Vancouver" width="150" height="150" class="alignright" /></a>January
<ul>
<li>Technically it was 2007, but I surprised Jennifer for her NYE birthday with our a trip to <a href="http://www.ghidinelli.com/life/main.php?g2_itemId=24797">Vancouver</a></li>
<li>We celebrated my dad&#8217;s 60th birthday in Winters with family at the Buckhorn.  Also celebrated arriving alive having navigated flooded country roads en route.</li>
<li>On January 11th, I proposed to Jennifer in the Santa Clara Rose Gardens and she accepted!  We&#8217;re getting married this April.</li>
</ul>
</li>
<li><a href="http://www.ghidinelli.com/wp-content/uploads/2009/02/img_3705.jpg"><img src="http://www.ghidinelli.com/wp-content/uploads/2009/02/img_3705-150x150.jpg" alt="ANSI art exhibit in San Francisco" title="ANSI art exhibit in San Francisco" width="150" height="150" class="alignright" /></a>February
<ul>
<li>Went back in time for a modern-day ANSI art exhibit; something I didn&#8217;t think I would ever see.</li>
<li>Mark and I had a booth for <a href="http://www.MotorsportReg.com">MotorsportReg.com</a> at the SCCA National Convention in San Antonio, Texas.  It was a great event for us.</li>
<li>I took one day off in February.</li>
</ul>
</li>
<li>March
<ul>
<li>Traveled to Salt Lake City to present at a BMW CCA conference.  Went snowboarding at <a href="http://www.snowbird.com">Snowbird</a> and my burning legs told me I was way out of shape.</li>
<li>I took one day off in March.</li>
</ul>
</li>
<li>April
<ul>
<li>In April I was working around the clock, eating microwave dinners at the office, trying to complete a major rearchitecture of MSR that was already months behind schedule.</li>
<li>Attended the Indo-Japanese wedding of Brian and Mala Masuda in Santa Barbara.  Had some of the best wedding food ever!</li>
</ul>
</li>
<li><a href="http://www.ghidinelli.com/life/main.php?g2_view=core.DownloadItem&#038;g2_itemId=25005&#038;g2_serialNumber=2"><img src="http://www.ghidinelli.com/life/main.php?g2_view=core.DownloadItem&#038;g2_itemId=25004&#038;g2_serialNumber=2" width="150" alt="Camping at Shaver Lake" class="alignright" /></a>May
<ul>
<li>Released major rearchitecture of MotorsportReg.com May 3rd.  Had performance issues but, like usual, worked around the clock to resolve.  Saving grace was incredible customer goodwill earned from years of great customer service &#8211; the bump in the road was forgiven.</li>
<li>Spent rest of month recovering.</li>
<li>Steven graduated with his Masters in Florida.  Congrats!</li>
<li>Actually had fun at my 10-year college reunion at <a href="http://www.scu.edu">Santa Clara University</a>.</li>
<li>Memorial day camping at Shaver Lake near Yosemite.  It was cold, rainy and miserable, but we still managed to have fun defeating the elements with blue-tarp-o-mania and waiting for Dan and Dacia to arrive.</li>
</ul>
</li>
<li><img src="http://www.ghidinelli.com/life/main.php?g2_view=core.DownloadItem&#038;g2_itemId=27429&#038;g2_serialNumber=2" width="150" height="113" alt="Relaxing in Puerto Vallarta, Mexico" class="alignright" />June
<ul>
<li>Decided being out of shape sucked, joined the Jewish Community Center gym around the corner from my house.</li>
<li>Traveled for R&#038;R to Puerto Vallarta for five days.  Injured my back boogie boarding in 2 feet of water.  Made gym membership useless.</li>
<li>Dexter, our tuxedo rescue cat, arrived from Utah to much rejoicing.</li>
<li>Drove my racing kart for the second time in six plus months.  There goes the racing season&#8230;</li>
</ul>
</li>
<li><a href="http://www.ghidinelli.com/life/main.php?g2_itemId=26379"><img src="http://www.ghidinelli.com/life/main.php?g2_view=core.DownloadItem&#038;g2_itemId=25116&#038;g2_serialNumber=2" height="100" width="150" alt="St. Basil's Cathedral, Moscow, Russia" class="alignright" /></a>July
<ul>
<li>Jennifer and I spent a day at the Fitzgerald Marine Reserve enjoying wine and cheese on the beach.  Watched sea lions lounge around.</li>
<li>Left on a three-week around-the-world trip to cover the 2008 TransSyberia Rally from Moscow, Russia to Ulaanbaatar, Mongolia for SpeedTV.com courtesy of my friend Marshall Pruett.</li>
<li>Slept in the Moscow Kempinsky looking out window at St. Basil&#8217;s Cathedral and the Kremlin.</li>
<li>Flew in a Soviet-era helicopter to watch the first stage of the rally race.</li>
<li>Visited cousin Patrick in Rome.</li>
<li>Took overnight train to Munich and stayed with former business partner Rob who was interning with IDEO.</li>
<li><a href="http://www.ghidinelli.com/life/main.php?g2_itemId=28440"><img src="http://www.ghidinelli.com/life/main.php?g2_view=core.DownloadItem&#038;g2_itemId=28441&#038;g2_serialNumber=2" class="alignright" /></a>Went to Hockenheim to see the Formula 1 German Grand Prix!  Bought Kevin a sweet Red Bull hat that I secretly wanted to keep.</li>
<li>Flew to Mongolia via Beijing, China.  Two weeks before the Olympics, I went to Tiananmen Square and completed a hat trick of communist capital photos (Vietnam, Russia, China).</li>
<li>Explored the countryside of Mongolia and watched the final stage of the rally.  American team disappointingly broke down the day before the final stage.  Flew back to California.</li>
<li>A sad day: returned Dexter the cat to the rescue shelter.  He spent his entire time with us under the bed or dinner table and needed other cats to feel comfortable.</li>
</ul>
</li>
<li>August
<ul>
<li>Labor Day weekend in San Francisco for food and touring and a trip on the Niles Canyon Wine Train near Fremont.  Jennifer tricked me into my first pedicure complete with a glass of chardonnay.  Ffffffabulous!</li>
<li>Jennifer was hospitalized with a kidney infection.  It was scary for awhile but everything turned out OK.  Kaiser Permanente did a great job taking care of her.</li>
<li>After three years of putting together paperwork, my dad, brother and I applied for <a href="http://www.ghidinelli.com/italian-citizenship">dual Italian citizenship</a> at the Embassy in San Francisco.</li>
<li>Flew to Las Vegas for Jason&#8217;s bachelor party-pa-looza</li>
</ul>
</li>
<li><a href="http://www.ghidinelli.com/life/main.php?g2_itemId=29123"><img src="http://www.ghidinelli.com/life/main.php?g2_view=core.DownloadItem&#038;g2_itemId=29124&#038;g2_serialNumber=2" alt="Jason and Nicole get married in Morgan Hill" width="150" height="113" class="alignright" /></a>September
<ul>
<li>Just three weeks later, I became an official dual citizen of Italy!  So much for lazy Europeans!</li>
<li>Kevin and Natalie chowed down with us at the Kendall-Jackson Heirloom Tomato Festival.</li>
<li>Celebrated my 32nd birthday.  Jennifer buys me a bike and tells me to get on it.  Embarrassing.</li>
<li>Surprised my mom for her 60th birthday with her parents and a cousin in Redding.</li>
<li>Was a groomsman in Jason and Nicole&#8217;s wedding in Morgan Hill.  Got my boogie on.</li>
</ul>
</li>
<li><img src="http://www.ghidinelli.com/wp-content/uploads/2008/10/italianopassaporto.jpg" width="134" alt="Italian Passport from citizenship Jure Sanguinis" class="alignright" />October
<ul>
<li>Received my Italian passport and right to work and live in the EU.  Sweet, sweet success.</li>
<li>Working with Mark Mazelin, got serious about <a href="http://cfpayment.riaforge.org">cfpayment</a>, my open source project for credit card and e-check processing for ColdFusion developers.
<li>After twelve months of planning and execution, gave up on trying to reach <a href="https://www.pcisecuritystandards.org/">PCI DSS</a> credit card security compliance in a two-man startup.  Outsourced to the tune of $2k/month.</li>
<li>Cried like a failure for the balance of the month.</li>
</ul>
</li>
<li><a href="http://www.ghidinelli.com/wp-content/uploads/2009/03/dsc_3777.jpg"><img src="http://www.ghidinelli.com/wp-content/uploads/2009/03/dsc_3777-150x150.jpg" alt="dsc_3777" title="dsc_3777" width="150" height="150" class="alignright" /></a>November
<ul>
<li>Recovering from boogie boarding gone wrong, signed up with Jennifer for <a href="http://www.fusegym.com">Fuse Gym</a> boot camp.</li>
<li>Voted for Barack Obama on November 4th</li>
<li>Made a foursome of it with Kevin and Natalie for the almighty three-michelin star restaurant <a href="http://www.frenchlaundry.com/">The French Laundry</a>.  Having achieved such highs (and emptied my wallet at a supersonic rate), readied ourselves to die (happy).</li>
<li>Relocated our mystery Christmas tree farm using Google Maps and felled our second annual Silvertip (the only <em>real</em> Christmas tree)</li>
<li>Having left most of our holiday decorations in storage, went for the &#8220;modern&#8221; look of little more than lights.</li>
<li>Got busted by the Aventino apartment complex for having lights on our balcony.  Fascists: 1, Brian: 0.</a></li>
</ul>
</li>
<li><a href="http://www.ghidinelli.com/wp-content/uploads/2009/03/img_4422.jpg"><img src="http://www.ghidinelli.com/wp-content/uploads/2009/03/img_4422-150x150.jpg" alt="img_4422" title="img_4422" width="150" height="150" class="alignright" /></a>December
<ul>
<li>Raced as part of four-driver Team Bimmerworld in the NASA <a href="http://www.nasa25hour.com/">25 Hours of Thunderhill</a> enduro achieving a goal I set <a href="http://www.ghidinelli.com/go/trips/25-hour-enduro">several years ago</a>.</li>
<li>We took our engagement photos with <a href="http://www.tanjalippertphotographer.com">Tanja Lippert</a>&#8230; this wedding thing is getting serious.</li>
<li>Took a rock climbing class at REI in Saratoga.</li>
<li><img src="http://www.ghidinelli.com/wp-content/uploads/2009/03/copy-of-img_4427-150x150.jpg" alt="copy-of-img_4427" title="copy-of-img_4427" width="150" height="150" class="alignright" />Jennifer&#8217;s niece Zoey stayed with us right before Christmas; we made cookies and took her to see the <a href="http://www.realtown.com/LiveInLosGatos/blog/lifestyle/vasona-parks-festival-of-lights">Festival of Lights</a>.  Experienced schizophrenic alternating squeals of joy and crying for mommy.</li>
<li>Celebrated Kevin&#8217;s 30th birthday in style in San Francisco after having a great dinner at <a href="http://www.fishandfarmsf.com/">Fish and Farm</a> with Jason and Nicole.  Partied with Spec Miata master Jason Hoover before he moved to Atlanta.  Dan showed up, because he knows everyone.  Went big, went home (to hotel) and puked my brains out.</li>
<li>Spent two days recovering.</li>
<li>Celebrated Jennifer&#8217;s 33rd birthday with a house party</li>
</ul>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.ghidinelli.com/2009/03/01/my-2008-annual-report-year-in-review/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Definition of a Product Manager</title>
		<link>http://www.ghidinelli.com/2009/02/14/definition-of-a-product-manager</link>
		<comments>http://www.ghidinelli.com/2009/02/14/definition-of-a-product-manager#comments</comments>
		<pubDate>Sat, 14 Feb 2009 19:25:04 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Web/Internet]]></category>

		<guid isPermaLink="false">http://www.ghidinelli.com/?p=618</guid>
		<description><![CDATA[
This slide by Adam Nash of LinkedIn via Christina that describes the skills of a successful Product Manager for a web company.  It graphs what I love about my job as an entrepreneur:  the opportunity to participate in many disciplines.   This week I coded a major new feature, negotiated a travel [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ghidinelli.com/wp-content/uploads/2009/02/pdma_adam_nash_product_manager.gif"><img src="http://www.ghidinelli.com/wp-content/uploads/2009/02/pdma_adam_nash_product_manager-300x229.gif" alt="pdma_adam_nash_product_manager" title="pdma_adam_nash_product_manager" width="300" height="229" class="alignright" /></a></p>
<p>This slide by Adam Nash of LinkedIn via <a href="http://www.eleganthack.com">Christina</a> that describes the skills of a successful Product Manager for a web company.  It graphs what I love about my job as an entrepreneur:  the opportunity to participate in many disciplines.   This week I coded a major new feature, negotiated a travel booking commission deal and put together a 15-minute video for a convention next week.  Oh, and I answered some customer support email too.</p>
<p>Is a product manager just an entrepreneur with a support organization?  Or put another way, is an entrepreneur a product manager with a support organization of themselves?</p>
<p>I feel lucky to do what I do.  I don&#8217;t love my job every day, like being in the office today for the fourth or fifth Saturday in a row, but I&#8217;d far rather be passionate and working overtime than be apathetic from 9-5.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ghidinelli.com/2009/02/14/definition-of-a-product-manager/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lowering the barrier to contributing to open source projects</title>
		<link>http://www.ghidinelli.com/2009/01/21/lowering-the-barrier-contributing-open-source-projects</link>
		<comments>http://www.ghidinelli.com/2009/01/21/lowering-the-barrier-contributing-open-source-projects#comments</comments>
		<pubDate>Wed, 21 Jan 2009 19:33:13 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Web/Internet]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://www.ghidinelli.com/?p=515</guid>
		<description><![CDATA[People get an ego stroke by seeing their name in the credits of something.  We all love it.  Yet how many of us have contributed code to an open source project they didn&#8217;t start?  I can&#8217;t tell you how many times I have considered contributing to a project I use only to [...]]]></description>
			<content:encoded><![CDATA[<p>People get an ego stroke by seeing their name in the credits of something.  We all love it.  Yet how many of us have contributed code to an open source project they didn&#8217;t start?  I can&#8217;t tell you how many times I have considered contributing to a project I use only to be completely baffled by how to get started.  If you&#8217;re some kind of rock-star developer or you enjoy copious free time, these may not be issues for you.  But every project looking for contributors (and show me a project that isn&#8217;t&#8230;) should be spending some effort on lowering the barrier to entry and keeping the learning curve shallow.</p>
<p>I came across <a href="http://www.mozilla.org/projects/calendar/faq.html#DEVELOP">this example on the Mozilla Calendar project</a> today and it does a great job of introducing the process so that even a novice developer could poke around with the source.  That poking might lead to a small patch.  That small patch would get her name in the credits.  That ego boost might lead to bigger contributions which might eventually generate a future project leader.  There&#8217;s a lot of talk about the long tail of customer acquisition and market sizing but I think more talk should focus on the long tail of cultivating people and projects.</p>
<p>What are you doing to help people pick up something you&#8217;ve created and run with it?  It could be a tool, library or even an API you&#8217;ve published.  If open source projects could find a way to increase contributions just 10%, it could be a watershed shift for community produced software.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ghidinelli.com/2009/01/21/lowering-the-barrier-contributing-open-source-projects/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Please build a&#8230; PCI DSS compliant Secure Proxy</title>
		<link>http://www.ghidinelli.com/2008/10/06/please-build-a-pci-dss-compliant-secure-proxy</link>
		<comments>http://www.ghidinelli.com/2008/10/06/please-build-a-pci-dss-compliant-secure-proxy#comments</comments>
		<pubDate>Mon, 06 Oct 2008 21:16:40 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Web/Internet]]></category>

		<guid isPermaLink="false">http://www.ghidinelli.com/?p=224</guid>
		<description><![CDATA[Let&#8217;s talk about being an e-commerce company.  We have this fun thing called PCI DSS that has a few hundred security and procedural requirements for anyone taking credit cards.  Then we have third party integrations like product fulfillment that require us, as the intermediary, to pass around the credit card number to complete [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s talk about being an e-commerce company.  We have this fun thing called <a href="https://www.pcisecuritystandards.org/">PCI DSS</a> that has a few hundred security and procedural requirements for anyone taking credit cards.  Then we have third party integrations like product fulfillment that require us, as the intermediary, to pass around the credit card number to complete the transaction.  </p>
<p>So here&#8217;s the catch-22; you want to use a <a href="http://www.braintreepaymentsolutions.com/pci-dss-compliance">secure vault option</a> that eliminates the &#8220;storage, transmission or processing&#8221; of credit cards from your network so that PCI DSS does not meaningfully impact you.  But you need the credit card number in order to ship it off to your fulfillment or third-party partner.  What to do?</p>
<p>The answer is a secure proxy combined with secure remote data storage.  We need to be able to transparently put sensitive data like credit card numbers and expiration dates into an encrypted vault without the number traversing our network.  This part exists today.  But we also need the ability to tell the PCI DSS-compliant server to take that credit card number and send it somewhere else, <em>without the number ever coming back to our network</em>.</p>
<p>In order to scale, the proxy must not be customized on an API-by-API basis.  Rather it should be generic and be customized by configuration.  As a user of the secure proxy, I would define my API endpoint via a secure web interface (Thanks to <a href="http://www.pbell.com">Peter Bell</a> for ideas here).  This lets the proxy operator grab my endpoint and add an appropriate outbound firewall rule.  Specifying the endpoint prevents a compromised server from arbitrarily sending data off to hackerz.ru.   Each of my proxy requests would include at least three options:</p>
<ol>
<li>GET or POST</li>
<li>Request format like SOAP, REST, RPC-XML, etc.</li>
<li>Key/value pairs to send along as parameters</li>
</ol>
<p>With this proxy, I could relay my sensitive data to any server on the Internet facilitating integration with vendors who won&#8217;t or can&#8217;t write their own integrations.  A <a href="http://www.braintreepaymentsolutions.com">payment gateway</a>, a <a href="http://www.shipwire.com/">third-party fulfillment center</a>, an <a href="http://www.worldspan.com">airline booking engine</a>, whatever.  I could specify placeholders for data to be pulled from the secure vault to be included in the request.  The secure proxy API would let us control a remote PCI DSS-compliant server putting our entire network out of scope and reducing our compliance requirements to obtaining a certificate from the secure proxy operator to satisfy <a href="http://pcidssfaq.org/forum/showthread.php?t=195">requirement 12.8</a>.</p>
<p>For startups and small organizations, this approach would protect sensitive data for a minimum of cost and effort.  Compliance is a major time and money suck for any organization but especially so for small teams who are trying to focus on building a successful business.  For large organizations with ample internal resources, this approach may still be valuable as it offloads the liability associated with sensitive data to a third party.  Oh doesn&#8217;t <a href="http://www.msnbc.msn.com/id/21454847/">TJ MAXX wish</a> they had one of these?</p>
<p>Thoughts?  Anyone else need one of these?  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ghidinelli.com/2008/10/06/please-build-a-pci-dss-compliant-secure-proxy/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Yahoo axes falling currently&#8230;</title>
		<link>http://www.ghidinelli.com/2008/02/12/yahoo-axes-falling-currently</link>
		<comments>http://www.ghidinelli.com/2008/02/12/yahoo-axes-falling-currently#comments</comments>
		<pubDate>Tue, 12 Feb 2008 22:52:07 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Web/Internet]]></category>

		<guid isPermaLink="false">http://www.ghidinelli.com/2008/02/12/yahoo-axes-falling-currently/</guid>
		<description><![CDATA[Heard via friends inside that Yahoo! is cutting loose lots of people today as speculated in the news recently.  People are being called into conference rooms and dismissed.  Apparently the severance package pays out through May so it&#8217;s a relatively &#8220;soft&#8221; landing.  Tough times for the Y.
]]></description>
			<content:encoded><![CDATA[<p>Heard via friends inside that Yahoo! is cutting loose lots of people today as speculated in the news recently.  People are being called into conference rooms and dismissed.  Apparently the severance package pays out through May so it&#8217;s a relatively &#8220;soft&#8221; landing.  Tough times for the Y.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ghidinelli.com/2008/02/12/yahoo-axes-falling-currently/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

