<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Approaching the Dewpoint</title>
	
	<link>http://dewpoint.snagdata.com</link>
	<description>Clouds, enterprise systems, cooking, cancer and any other shiny objects that catch my eye</description>
	<pubDate>Sun, 01 Mar 2009 21:05:14 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/ApproachingTheDewpoint" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>The World is Missing a Hero</title>
		<link>http://feedproxy.google.com/~r/ApproachingTheDewpoint/~3/wiV1UCA18wE/</link>
		<comments>http://dewpoint.snagdata.com/2009/02/28/the-world-is-missing-a-hero/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 15:37:17 +0000</pubDate>
		<dc:creator>tjs</dc:creator>
		
		<category><![CDATA[Cancer]]></category>

		<category><![CDATA[acor]]></category>

		<category><![CDATA[sarcoma]]></category>

		<guid isPermaLink="false">http://dewpoint.snagdata.com/?p=264</guid>
		<description><![CDATA[&#8220;Find GENUINE sarcoma expertise, be relentless, put together a plan and execute it.  Handle the emotional fall-out later. Denial will get you killed.&#8221; That was the standard mode of operation for Dr. Doreen Kossove, known to many simply as Dr. Dee.  When someone new showed up seeking treatment advice after finding out they had cancer she attacked. If [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-278" title="Doreeen" src="http://dewpoint.snagdata.com/wp-content/uploads/2009/02/picture-10.png" alt="Doreeen" width="216" height="209" />&#8220;Find GENUINE sarcoma expertise, be relentless, put together a plan and execute it.  Handle the emotional fall-out later. Denial will get you killed.&#8221; That was the standard mode of operation for Dr. Doreen Kossove, known to many simply as Dr. Dee.  When someone new showed up seeking treatment advice after finding out they had cancer she attacked. If you asked for her help you better be ready. She had lots of sound advice and dished it out with a fury. She hated cancer and incompetent medical care. If she felt you weren&#8217;t taking matters into your own hands and making sure you got the proper care watch out! Many faced Madame Brimstone&#8217;s relentless push for them to do the right thing.</p>
<p>It&#8217;s hard to estimate how many lives she touched during her own 8 year battle with cancer. Few who came to any of the <a href="http://acor.org">ACOR</a> lists she was on seeking help didn&#8217;t find a ready response from Dr Dee.</p>
<blockquote><p>As we have seen so clearly since the announcement of her passing,<br />
Doreen was truly unique. She exemplified how an educated and engaged<br />
patient can transform the odds of thousands of other patients by<br />
showing them how to use information and peer support to best navigate<br />
the healthcare system. She started as an Leiomyosarcoma patient but<br />
very quickly she became MUCH MORE. Her information-rich website was<br />
and remains amazing and is always the first entry to show up when you<br />
google &#8220;leiomyosarcoma&#8221;.  Right from the beginning Doreen changed the<br />
outlook of this list and directed this community to a more<br />
scientifically oriented group, to the benefit of countless people who<br />
often do not understand how powerful her influence has been.</p>
<p>If you think this is a fitting way to remember Doreen, please help us by making a donation either online at  <a href="http://www.acor.org/donate/now/drdee.html">http://www.acor.org/donate/now/drdee.html</a> or by sending a check to ACOR, marked &#8220;Dr. Dee Memorial Site&#8221;. If you make your donation online, Alison Woodman &amp; Doreen&#8217;s daughter will be<br />
instantly notified.</p></blockquote>
<p><em>Gilles Frydman, founder <a href="http://acor.org">ACOR</a></em></p>
<p>I&#8217;m not sure how many ACOR lists Dr Dee was on but she was on every one I ever joined, dishing out advice in her special way. Sometimes so ill she was completely bed ridden. Seemingly tireless as she led countless folks down the right treatment and care path.</p>
<p>I found the <a href="http://acor.org">ACOR</a> sarcoma list shortly after being diagnosed with cancer. Dr Dee was one of several folks who immediately reached out to me and started feeding me detailed instructions on how to proceed. They guided me through the next week and a half when my diagnosis changed 4 times. First dx, DFSP (dermatofibrosarcoma protuberans) with a Fibrosarcoma component. Then, Leiomyosarcoma (LMS). The third type actually escapes me at the moment! Then, with the aid of Dr. Dee and others the best sarcoma pathologist in the country figured it out, malignant glomus (glomangiosarcoma). I also was pretty much ordered (under threat of death) to get to a sarcoma center. I went to <a href="http://www.mdanderson.org/">MD Anderson Cancer Center</a> in Houston and <a href="http://www.moffitt.org/">Moffitt Cancer Center</a> in Tampa. Second opinions are also vital as Dr. Dee was quick to point out. That will be five years ago in a little over a month. Had I stuck with the original course recommended by my local oncologist I&#8217;m not entirely sure I&#8217;d still be alive.</p>
<p>CNN coverage of her death: <a href="http://www.cnn.com/2009/HEALTH/02/26/ep.kossove.tribute.leiomyosarcoma/index.html">The life and death of an Empowered Patient - CNN.com</a></p>
<p>She always ended her notes with: &#8220;Together we are more, and more effective.&#8221; Madame Brimstone is gone and we all are a little less.  The world is missing a hero.</p>
]]></content:encoded>
			<wfw:commentRss>http://dewpoint.snagdata.com/2009/02/28/the-world-is-missing-a-hero/feed/</wfw:commentRss>
		<feedburner:origLink>http://dewpoint.snagdata.com/2009/02/28/the-world-is-missing-a-hero/</feedburner:origLink></item>
		<item>
		<title>Monitoring EC2 Assets</title>
		<link>http://feedproxy.google.com/~r/ApproachingTheDewpoint/~3/wz2QLJ6N-j8/</link>
		<comments>http://dewpoint.snagdata.com/2009/01/15/monitoring-ec2-assets/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 02:47:33 +0000</pubDate>
		<dc:creator>tjs</dc:creator>
		
		<category><![CDATA[Cloud computing]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[AWS]]></category>

		<category><![CDATA[EC2]]></category>

		<category><![CDATA[simpledb]]></category>

		<guid isPermaLink="false">http://dewpoint.snagdata.com/?p=229</guid>
		<description><![CDATA[<img class="alignright size-medium wp-image-237" title="rubberbandball" src="http://dewpoint.snagdata.com/wp-content/uploads/2009/01/rubberbandball-270x300.jpg" alt="rubberbandball" width="270" height="300" />We're evaluating using <a title="EC2" href="http://aws.amazon.com/ec2/">Amazon's EC2</a> (Elastic Computing Cloud) to fire off full instances of our system for both dev and QA. That involves multiple servers and databases, it's a non trivial task. I think <a title="rightscale" href="http://www.rightscale.com/">RightScale</a> is a great service which we'll probably use if we move forward but at this point during testing and discovery I decided to muck around at a lower level. RightScale provides a very nice Ruby library to access AWS services.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-237" title="rubberbandball" src="http://dewpoint.snagdata.com/wp-content/uploads/2009/01/rubberbandball-270x300.jpg" alt="rubberbandball" width="270" height="300" /><span class="drop_cap">W</span>e&#8217;re evaluating using <a title="EC2" href="http://aws.amazon.com/ec2/">Amazon&#8217;s EC2</a> (Elastic Computing Cloud) to fire off full instances of our system for both dev and QA. That involves multiple servers and databases, it&#8217;s a non trivial task. I think <a title="rightscale" href="http://www.rightscale.com/">RightScale</a> is a great service which we&#8217;ll probably use if we move forward but at this point during testing and discovery I decided to muck around at a lower level. RightScale provides a very nice Ruby library to access AWS services.</p>
<p>So I wrote a simple ruby script that tracks changes in aws assets. Stuck it in a cron job and it notifies me by e-mail whenever there&#8217;s a change on our account.<span id="more-229"></span></p>
<p>To get started grab the ruby gem</p>
<pre>gem install right_aws</pre>
<p>I decided to use <a title="SimpleDB" href="http://aws.amazon.com/simpledb/">SimpleDB</a> to store state and history. Turned out to work really well. I&#8217;m digging the schemaless DB approach for this type of thing. It&#8217;s something I&#8217;m going to explore for other uses.</p>
<p>The script is simple</p>
<ol>
<li>Iterate over the assets tracked</li>
<li>Load the info from EC2</li>
<li>Load the stored info in SDB and compare</li>
<li>Report any changes</li>
<li>Update SDB</li>
<li>Rinse, repeat</li>
</ol>
<p>Lots more to build but this was a nice start and showed the right_aws gem is a capable library for building a complete set of tools to manage your Amazon Web Services account. The best bet is to go with RightScale and then just add functionality you need that RightScale doesn&#8217;t provide (shouldn&#8217;t be much).</p>

<div class="wp_codebox"><table width="100%" ><tr id="p2291"><td class="code" id="p229code1"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'right_aws'</span>
&nbsp;
LOG_FILE = <span style="color:#996600;">'/tmp/ec2.log'</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> AWS
    <span style="color:#9966CC; font-weight:bold;">def</span> initialize <span style="color:#006600; font-weight:bold;">&#40;</span>argv, id, key<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
        <span style="color:#9966CC; font-weight:bold;">if</span> argv.<span style="color:#9900CC;">size</span> <span style="color:#006600; font-weight:bold;">&amp;</span>gt; <span style="color:#006666;">1</span>
            print_help
            <span style="color:#CC0066; font-weight:bold;">exit</span> <span style="color:#006666;">1</span>
        <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
        <span style="color:#008000; font-style:italic;"># List of resources to track</span>
        <span style="color:#008000; font-style:italic;">#  0 - resource name</span>
        <span style="color:#008000; font-style:italic;">#  1 - resources AWS id</span>
        <span style="color:#008000; font-style:italic;">#  2 - [optional] name of the describe function in right_aws describ_[name]</span>
        <span style="color:#008000; font-style:italic;">#      Only needed if it's not describe_[resource name]</span>
        <span style="color:#008000; font-style:italic;">#  3 - [optional] name of parameter to the describe function</span>
        <span style="color:#0066ff; font-weight:bold;">@items</span> = <span style="color:#006600; font-weight:bold;">&#91;</span>
                <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'images'</span>, <span style="color:#996600;">'aws_id'</span>, <span style="color:#996600;">&quot;images_by_owner&quot;</span>, <span style="color:#996600;">&quot;self&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>,
                <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'instances'</span>, <span style="color:#996600;">'aws_instance_id'</span><span style="color:#006600; font-weight:bold;">&#93;</span>,
                <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'volumes'</span>, <span style="color:#996600;">'aws_id'</span><span style="color:#006600; font-weight:bold;">&#93;</span>,
                <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'security_groups'</span>, <span style="color:#996600;">'aws_group_name'</span><span style="color:#006600; font-weight:bold;">&#93;</span>,
                <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'snapshots'</span>, <span style="color:#996600;">'aws_id'</span><span style="color:#006600; font-weight:bold;">&#93;</span>,
                <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'key_pairs'</span>, <span style="color:#996600;">'aws_key_name'</span><span style="color:#006600; font-weight:bold;">&#93;</span>
        <span style="color:#006600; font-weight:bold;">&#93;</span>
&nbsp;
        <span style="color:#9966CC; font-weight:bold;">if</span> argv.<span style="color:#9900CC;">size</span> == <span style="color:#006666;">1</span>
            <span style="color:#9966CC; font-weight:bold;">if</span> argv<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span> == <span style="color:#996600;">'-h'</span>
                print_help
                <span style="color:#CC0066; font-weight:bold;">exit</span> <span style="color:#006666;">0</span>
            <span style="color:#9966CC; font-weight:bold;">elsif</span> argv<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span> == <span style="color:#996600;">'-d'</span>
                create_sdb_domains id, key
                <span style="color:#CC0066; font-weight:bold;">exit</span> <span style="color:#006666;">0</span>
            <span style="color:#9966CC; font-weight:bold;">else</span>
                <span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">&quot;Unknown option: &quot;</span>, argv<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span>, <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>&quot;</span>
                print_help
                <span style="color:#CC0066; font-weight:bold;">exit</span> <span style="color:#006666;">0</span>
            <span style="color:#9966CC; font-weight:bold;">end</span>
        <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
        <span style="color:#0066ff; font-weight:bold;">@sdb</span> = <span style="color:#6666ff; font-weight:bold;">RightAws::SdbInterface</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>id, key, <span style="color:#006600; font-weight:bold;">&#123;</span>:multi_thread =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; <span style="color:#0000FF; font-weight:bold;">true</span>, <span style="color:#ff3333; font-weight:bold;">:logger</span> =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; <span style="color:#CC00FF; font-weight:bold;">Logger</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>LOG_FILE<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
        <span style="color:#0066ff; font-weight:bold;">@ec2</span> = <span style="color:#6666ff; font-weight:bold;">RightAws::Ec2</span>.<span style="color:#9900CC;">new</span> id, key, <span style="color:#006600; font-weight:bold;">&#123;</span>:logger =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; <span style="color:#CC00FF; font-weight:bold;">Logger</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>LOG_FILE<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
        check_for_updates
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">def</span> print_help
        <span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">&quot;usage: #{$0} [options] <span style="color:#000099;">\n</span>&quot;</span>
        <span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>&quot;</span>
        <span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\t</span> -h this message<span style="color:#000099;">\n</span>&quot;</span>
        <span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\t</span> -d create sdb domains<span style="color:#000099;">\n</span><span style="color:#000099;">\n</span>&quot;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">def</span> check_for_updates
        <span style="color:#0066ff; font-weight:bold;">@ec2_data</span> = <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>
        <span style="color:#0066ff; font-weight:bold;">@sdb_data</span> = <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
        <span style="color:#0066ff; font-weight:bold;">@items</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>i<span style="color:#006600; font-weight:bold;">|</span>
            key = i<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span>
&nbsp;
            meth_name = <span style="color:#996600;">'describe_'</span> <span style="color:#006600; font-weight:bold;">+</span> i<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">2</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">||</span>=key
            ec2m = <span style="color:#0066ff; font-weight:bold;">@ec2</span>.<span style="color:#9900CC;">method</span><span style="color:#006600; font-weight:bold;">&#40;</span>meth_name<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
            <span style="color:#0066ff; font-weight:bold;">@ec2_data</span><span style="color:#006600; font-weight:bold;">&#91;</span>key<span style="color:#006600; font-weight:bold;">&#93;</span> = convert_to_hash<span style="color:#006600; font-weight:bold;">&#40;</span>ec2m.<span style="color:#9900CC;">call</span><span style="color:#006600; font-weight:bold;">&#40;</span>i<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>, i<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
            <span style="color:#0066ff; font-weight:bold;">@sdb_data</span><span style="color:#006600; font-weight:bold;">&#91;</span>key<span style="color:#006600; font-weight:bold;">&#93;</span> = sdb_get<span style="color:#006600; font-weight:bold;">&#40;</span>key.<span style="color:#9900CC;">to_s</span>.<span style="color:#9900CC;">upcase</span><span style="color:#006600; font-weight:bold;">&#41;</span>
            compare<span style="color:#006600; font-weight:bold;">&#40;</span>@ec2_data<span style="color:#006600; font-weight:bold;">&#91;</span>key<span style="color:#006600; font-weight:bold;">&#93;</span>, <span style="color:#0066ff; font-weight:bold;">@sdb_data</span><span style="color:#006600; font-weight:bold;">&#91;</span>key<span style="color:#006600; font-weight:bold;">&#93;</span>, key.<span style="color:#9900CC;">to_s</span>.<span style="color:#9900CC;">upcase</span><span style="color:#006600; font-weight:bold;">&#41;</span>
        <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">def</span> create_sdb_domains<span style="color:#006600; font-weight:bold;">&#40;</span>id, key<span style="color:#006600; font-weight:bold;">&#41;</span>
        <span style="color:#0066ff; font-weight:bold;">@sdb</span> = <span style="color:#6666ff; font-weight:bold;">RightAws::SdbInterface</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>id, key, <span style="color:#006600; font-weight:bold;">&#123;</span>:multi_thread =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; <span style="color:#0000FF; font-weight:bold;">true</span>, <span style="color:#ff3333; font-weight:bold;">:logger</span> =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; <span style="color:#CC00FF; font-weight:bold;">Logger</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>LOG_FILE<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
        <span style="color:#0066ff; font-weight:bold;">@items</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>i<span style="color:#006600; font-weight:bold;">|</span>
            domain = i<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">to_s</span>.<span style="color:#9900CC;">upcase</span>
            <span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">'Creating domain: '</span>, domain, <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>&quot;</span>
            <span style="color:#0066ff; font-weight:bold;">@sdb</span>.<span style="color:#9900CC;">create_domain</span> domain
            <span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">'Creating domain: '</span>, domain, <span style="color:#996600;">&quot;_ARCHIVE<span style="color:#000099;">\n</span>&quot;</span>
            <span style="color:#0066ff; font-weight:bold;">@sdb</span>.<span style="color:#9900CC;">create_domain</span> domain <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">'_ARCHIVE'</span>
        <span style="color:#9966CC; font-weight:bold;">end</span>
        <span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">'Domains created.<span style="color:#000099;">\n</span>'</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#--------------- SDB Routines ------------------#</span>
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">def</span> sdb_save<span style="color:#006600; font-weight:bold;">&#40;</span>domain, id, attributes<span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#0066ff; font-weight:bold;">@sdb</span>.<span style="color:#9900CC;">put_attributes</span> domain, id, attributes
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">def</span> sdb_delete<span style="color:#006600; font-weight:bold;">&#40;</span>domain, id, v<span style="color:#006600; font-weight:bold;">&#41;</span>
        <span style="color:#008000; font-style:italic;"># Archive it first</span>
        sdb_save<span style="color:#006600; font-weight:bold;">&#40;</span>domain<span style="color:#006600; font-weight:bold;">+</span><span style="color:#996600;">'_ARCHIVE'</span>, id, v<span style="color:#006600; font-weight:bold;">&#41;</span>
        <span style="color:#0066ff; font-weight:bold;">@sdb</span>.<span style="color:#9900CC;">delete_attributes</span><span style="color:#006600; font-weight:bold;">&#40;</span>domain, id<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">def</span> sdb_get<span style="color:#006600; font-weight:bold;">&#40;</span>domain<span style="color:#006600; font-weight:bold;">&#41;</span>
        v = <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>
        results = <span style="color:#0066ff; font-weight:bold;">@sdb</span>.<span style="color:#9900CC;">query</span><span style="color:#006600; font-weight:bold;">&#40;</span>domain<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:items</span><span style="color:#006600; font-weight:bold;">&#93;</span>
        results.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>id<span style="color:#006600; font-weight:bold;">|</span>
            v<span style="color:#006600; font-weight:bold;">&#91;</span>id<span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#0066ff; font-weight:bold;">@sdb</span>.<span style="color:#9900CC;">get_attributes</span><span style="color:#006600; font-weight:bold;">&#40;</span>domain, id<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:attributes</span><span style="color:#006600; font-weight:bold;">&#93;</span>
        <span style="color:#9966CC; font-weight:bold;">end</span>
        v
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#--------------- EC2 Routines ------------------#</span>
&nbsp;
    <span style="color:#008000; font-style:italic;"># ec2 describe calls just returns an array of attributes for each entry</span>
    <span style="color:#008000; font-style:italic;"># pull out the key and use that in a hash key, attributes</span>
    <span style="color:#9966CC; font-weight:bold;">def</span> convert_to_hash<span style="color:#006600; font-weight:bold;">&#40;</span>list, id_var<span style="color:#006600; font-weight:bold;">&#41;</span>
        h = <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>
        list.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>v<span style="color:#006600; font-weight:bold;">|</span>
            <span style="color:#9966CC; font-weight:bold;">if</span> v<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:aws_created_at</span><span style="color:#006600; font-weight:bold;">&#93;</span> != <span style="color:#0000FF; font-weight:bold;">nil</span>
                v<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:aws_created_at</span><span style="color:#006600; font-weight:bold;">&#93;</span> = v<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:aws_created_at</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">to_s</span>
            <span style="color:#9966CC; font-weight:bold;">end</span>
            h<span style="color:#006600; font-weight:bold;">&#91;</span>v<span style="color:#006600; font-weight:bold;">&#91;</span>id_var.<span style="color:#9900CC;">intern</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span> = v
        <span style="color:#9966CC; font-weight:bold;">end</span>
        h
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">def</span> report_change <span style="color:#006600; font-weight:bold;">&#40;</span>id, name, action, note<span style="color:#006600; font-weight:bold;">&#41;</span>
        <span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">&quot;Asset #{id} : #{name} : #{action} : #{note}<span style="color:#000099;">\n</span>&quot;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">def</span> compare<span style="color:#006600; font-weight:bold;">&#40;</span>ec2_list, sdb_list, domain<span style="color:#006600; font-weight:bold;">&#41;</span>
        <span style="color:#008000; font-style:italic;"># see if everything ec2 reports is in our db</span>
        ec2_list.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>k, v<span style="color:#006600; font-weight:bold;">|</span>
            <span style="color:#9966CC; font-weight:bold;">if</span> sdb_list<span style="color:#006600; font-weight:bold;">&#91;</span>k<span style="color:#006600; font-weight:bold;">&#93;</span> == <span style="color:#0000FF; font-weight:bold;">nil</span>
                v<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'added_date'</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">new</span>.<span style="color:#9900CC;">gmtime</span>.<span style="color:#9900CC;">to_s</span>
                sdb_list<span style="color:#006600; font-weight:bold;">&#91;</span>k<span style="color:#006600; font-weight:bold;">&#93;</span> = v
                sdb_save<span style="color:#006600; font-weight:bold;">&#40;</span>domain, k, sdb_list<span style="color:#006600; font-weight:bold;">&#91;</span>k<span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
                report_change domain.<span style="color:#9900CC;">capitalize</span>.<span style="color:#CC0066; font-weight:bold;">chop</span>, k, <span style="color:#996600;">&quot;added&quot;</span>, v<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'added_date'</span><span style="color:#006600; font-weight:bold;">&#93;</span>
            <span style="color:#9966CC; font-weight:bold;">end</span>
        <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
        <span style="color:#008000; font-style:italic;"># see if everything the db reports is in ec2</span>
        sdb_list.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>k, v<span style="color:#006600; font-weight:bold;">|</span>
            <span style="color:#9966CC; font-weight:bold;">if</span> ec2_list<span style="color:#006600; font-weight:bold;">&#91;</span>k<span style="color:#006600; font-weight:bold;">&#93;</span> == <span style="color:#0000FF; font-weight:bold;">nil</span>
                v<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'removed_date'</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">new</span>.<span style="color:#9900CC;">gmtime</span>.<span style="color:#9900CC;">to_s</span>
                report_change domain.<span style="color:#9900CC;">capitalize</span>.<span style="color:#CC0066; font-weight:bold;">chop</span>, k, <span style="color:#996600;">&quot;removed&quot;</span>,
                        <span style="color:#996600;">&quot;Created: #{v['added_date']} Removed: #{v['removed_date']}&quot;</span>
                sdb_delete<span style="color:#006600; font-weight:bold;">&#40;</span>domain, k, v<span style="color:#006600; font-weight:bold;">&#41;</span>
            <span style="color:#9966CC; font-weight:bold;">end</span>
        <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
aws = AWS.<span style="color:#9900CC;">new</span> ARGV, <span style="color:#996600;">'your access key'</span>, <span style="color:#996600;">'your secret key'</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://dewpoint.snagdata.com/2009/01/15/monitoring-ec2-assets/feed/</wfw:commentRss>
		<feedburner:origLink>http://dewpoint.snagdata.com/2009/01/15/monitoring-ec2-assets/</feedburner:origLink></item>
		<item>
		<title>CloudCamp Indianapolis</title>
		<link>http://feedproxy.google.com/~r/ApproachingTheDewpoint/~3/83UK2o95g-U/</link>
		<comments>http://dewpoint.snagdata.com/2009/01/06/cloudcamp-indianapolis/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 20:39:50 +0000</pubDate>
		<dc:creator>tjs</dc:creator>
		
		<category><![CDATA[Cloud computing]]></category>

		<guid isPermaLink="false">http://dewpoint.snagdata.com/?p=222</guid>
		<description><![CDATA[There&#8217;ll be a CloudCamp in Indianapolis on January 28th. Judging from reports from CloudCamps in other cities it&#8217;s worth attending if you&#8217;re in the area.
]]></description>
			<content:encoded><![CDATA[<p><img src="http://dewpoint.snagdata.com/wp-content/uploads/2009/01/picture-5-300x74.png" alt="picture-5" title="picture-5" width="300" height="74" class="alignright size-medium wp-image-226" />There&#8217;ll be a <a href="http://www.cloudcamp.com/?page_id=264">CloudCamp in Indianapolis</a> on January 28th. Judging from reports from CloudCamps in other cities it&#8217;s worth attending if you&#8217;re in the area.</p>
]]></content:encoded>
			<wfw:commentRss>http://dewpoint.snagdata.com/2009/01/06/cloudcamp-indianapolis/feed/</wfw:commentRss>
		<feedburner:origLink>http://dewpoint.snagdata.com/2009/01/06/cloudcamp-indianapolis/</feedburner:origLink></item>
		<item>
		<title>A bit of a stretch?</title>
		<link>http://feedproxy.google.com/~r/ApproachingTheDewpoint/~3/1QStCJHUmwc/</link>
		<comments>http://dewpoint.snagdata.com/2008/11/08/a-bit-of-a-stretch/#comments</comments>
		<pubDate>Sat, 08 Nov 2008 15:57:51 +0000</pubDate>
		<dc:creator>tjs</dc:creator>
		
		<category><![CDATA[Cloud computing]]></category>

		<category><![CDATA[clouds]]></category>

		<guid isPermaLink="false">http://dewpoint.snagdata.com/?p=203</guid>
		<description><![CDATA[The hype parade continues. Cloud computing is the answer to almost any problem we&#8217;re facing. Yes, even global warming! Cloud Ave has just posted a classic hype fluff post titled Barack Obama and Cloud Computing. It goes a bit over the top trying to show how Obama&#8217;s policy are a big plus for cloud computing. Double hype alert! [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://dewpoint.snagdata.com/wp-content/uploads/2008/11/hypedrink.jpg"><img class="alignright size-full wp-image-207" title="hypedrink" src="http://dewpoint.snagdata.com/wp-content/uploads/2008/11/hypedrink.jpg" alt="" width="85" height="200" /></a>The hype parade continues. Cloud computing is the answer to almost any problem we&#8217;re facing. Yes, even global warming! <a href="http://www.cloudave.com">Cloud Ave</a> has just posted a classic hype fluff post titled <a href="http://www.cloudave.com/link/barack-obama-and-cloud-computing">Barack Obama and Cloud Computing</a>. It goes a bit over the top trying to show how Obama&#8217;s policy are a big plus for cloud computing. Double hype alert! Both are new and show promise but have yet to be put to the test.</p>
<p>All the hype reminds me of the hype Aspect oriented programming (AOP) went through climaxing around 2004.  AOP hype reached it peak when Daniel Sabbah, CTO of IBM Software said when speaking about AOP, &#8220;It is vital for our survival&#8221;. Blink. Cool stuff? Yeah. Really useful in some cases? Yeah? Vital to the survival of a multibillion dollar corporation? Blink. Oh, maybe he just meant programming in general!? Blink. In the end AOP is a useful tool in some specific places, the hype is gone and IBM has moved on to other things being vital for their survival (Blue Cloud?).</p>
<p>The dewpoint has hit and there&#8217;s one massive fog bank rolling in. Proceed with caution.</p>
]]></content:encoded>
			<wfw:commentRss>http://dewpoint.snagdata.com/2008/11/08/a-bit-of-a-stretch/feed/</wfw:commentRss>
		<feedburner:origLink>http://dewpoint.snagdata.com/2008/11/08/a-bit-of-a-stretch/</feedburner:origLink></item>
		<item>
		<title>Drawing a Grid in a UITableView</title>
		<link>http://feedproxy.google.com/~r/ApproachingTheDewpoint/~3/mDzYb238sjY/</link>
		<comments>http://dewpoint.snagdata.com/2008/10/31/drawing-a-grid-in-a-uitableview/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 19:36:07 +0000</pubDate>
		<dc:creator>tjs</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[grid]]></category>

		<category><![CDATA[objectivec]]></category>

		<category><![CDATA[uitableview]]></category>

		<guid isPermaLink="false">http://dewpoint.snagdata.com/?p=8</guid>
		<description><![CDATA[
UITableView is probably the most used view on the iPhone. It&#8217;s flexible and the UI is ideally suited to use on the iPhone. There are lots of examples on how to add multiple items to a UITableViewCell. However, I needed to present some data in a more traditional spreadsheet style grid. The results worked well [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/picture-6.png"><img class="size-full wp-image-161 alignright" title="iPhone Grids" src="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/picture-6.png" alt="" width="273" height="485" /></a><strong></strong></p>
<p><strong>UITableView</strong> is probably the most used view on the iPhone. It&#8217;s flexible and the UI is ideally suited to use on the iPhone. There are lots of examples on how to add multiple items to a UITableViewCell. However, I needed to present some data in a more traditional spreadsheet style grid. The results worked well and enabled me to pack a lot of information on the screen that was very hard to follow without the vertical grid. I&#8217;ll show a very simplified version here you can use to add vertical lines to your UITableView.</p>
<p><span id="more-8"></span></p>
<p>First we need to create a subclass of UITableViewCell. This is so we can override drawrect and draw our lines and to add an array to hold a list of positions where we&#8217;ll draw the lines.</p>

<div class="wp_codebox"><table width="100%" ><tr id="p86"><td class="code" id="p8code6"><pre class="objc" style="font-family:monospace;"><span style="color: #a61390;">@interface</span> MyTableCell <span style="color: #002200;">:</span> UITableViewCell <span style="color: #002200;">&#123;</span>
	<a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/"><span style="color: #400080;">NSMutableArray</span></a> <span style="color: #002200;">*</span>columns;
<span style="color: #002200;">&#125;</span>
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>addColumn<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>CGFloat<span style="color: #002200;">&#41;</span>position;
<span style="color: #a61390;">@end</span></pre></td></tr></table></div>

<p>In this simplified example we&#8217;ll leave the positioning of the actual text in the cells in the UITableViewController and place it manually (full source code is attached at the end). We&#8217;re just providing a mechanism for drawing vertical lines to make a grid.  Column locations are added by calling addColumn:</p>

<div class="wp_codebox"><table width="100%" ><tr id="p87"><td class="code" id="p8code7"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>addColumn<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>CGFloat<span style="color: #002200;">&#41;</span>position <span style="color: #002200;">&#123;</span>
	<span style="color: #002200;">&#91;</span>columns addObject<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSNumber_Class/"><span style="color: #400080;">NSNumber</span></a> numberWithFloat<span style="color: #002200;">:</span>position<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#125;</span></pre></td></tr></table></div>

<p>Now lets override drawRect. In it we grab the current graphics context and set the line color and width. Then we iterate over our columns array drawing a line from the top of the cell row to the bottom at each position stored in the array.</p>

<div class="wp_codebox"><table width="100%" ><tr id="p88"><td class="code" id="p8code8"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>drawRect<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>CGRect<span style="color: #002200;">&#41;</span>rect <span style="color: #002200;">&#123;</span>
	CGContextRef ctx <span style="color: #002200;">=</span> UIGraphicsGetCurrentContext<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span>;
	<span style="color: #11740a; font-style: italic;">// Use the same color and width as the default cell separator for now</span>
	CGContextSetRGBStrokeColor<span style="color: #002200;">&#40;</span>ctx, <span style="color: #2400d9;">0.5</span>, <span style="color: #2400d9;">0.5</span>, <span style="color: #2400d9;">0.5</span>, <span style="color: #2400d9;">1.0</span><span style="color: #002200;">&#41;</span>;
	CGContextSetLineWidth<span style="color: #002200;">&#40;</span>ctx, <span style="color: #2400d9;">0.25</span><span style="color: #002200;">&#41;</span>;
&nbsp;
	<span style="color: #a61390;">for</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">int</span> i <span style="color: #002200;">=</span> <span style="color: #2400d9;">0</span>; i <span style="color: #002200;">&amp;</span>lt; <span style="color: #002200;">&#91;</span>columns count<span style="color: #002200;">&#93;</span>; i<span style="color: #002200;">++</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
		CGFloat f <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#40;</span><span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSNumber_Class/"><span style="color: #400080;">NSNumber</span></a><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#91;</span>columns objectAtIndex<span style="color: #002200;">:</span>i<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span> floatValue<span style="color: #002200;">&#93;</span>;
		CGContextMoveToPoint<span style="color: #002200;">&#40;</span>ctx, f, <span style="color: #2400d9;">0</span><span style="color: #002200;">&#41;</span>;
		CGContextAddLineToPoint<span style="color: #002200;">&#40;</span>ctx, f, self.bounds.size.height<span style="color: #002200;">&#41;</span>;
	<span style="color: #002200;">&#125;</span>
&nbsp;
	CGContextStrokePath<span style="color: #002200;">&#40;</span>ctx<span style="color: #002200;">&#41;</span>;
&nbsp;
	<span style="color: #002200;">&#91;</span>super drawRect<span style="color: #002200;">:</span>rect<span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#125;</span></pre></td></tr></table></div>

<p>To add columns to the view just call</p>
<pre>[cell addColumn:50];</pre>
<p>when you&#8217;re building each cell.</p>

<div class="wp_codebox"><table width="100%" ><tr id="p89"><td class="code" id="p8code9"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span>UITableViewCell <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>tableView<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UITableView <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>tableView cellForRowAtIndexPath<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSIndexPath_Class/"><span style="color: #400080;">NSIndexPath</span></a> <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>indexPath <span style="color: #002200;">&#123;</span>
&nbsp;
	<a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/"><span style="color: #400080;">NSString</span></a> <span style="color: #002200;">*</span>MyIdentifier <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/"><span style="color: #400080;">NSString</span></a> stringWithFormat<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;MyIdentifier %i&quot;</span>, indexPath.row<span style="color: #002200;">&#93;</span>;
&nbsp;
	MyTableCell <span style="color: #002200;">*</span>cell <span style="color: #002200;">=</span> <span style="color: #002200;">&#40;</span>MyTableCell <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#91;</span>tableView dequeueReusableCellWithIdentifier<span style="color: #002200;">:</span>MyIdentifier<span style="color: #002200;">&#93;</span>;
&nbsp;
	<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>cell <span style="color: #002200;">==</span> <span style="color: #a61390;">nil</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
		cell <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>MyTableCell alloc<span style="color: #002200;">&#93;</span> initWithFrame<span style="color: #002200;">:</span>CGRectZero reuseIdentifier<span style="color: #002200;">:</span>MyIdentifier<span style="color: #002200;">&#93;</span> autorelease<span style="color: #002200;">&#93;</span>;
&nbsp;
		UILabel <span style="color: #002200;">*</span>label <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>UILabel	alloc<span style="color: #002200;">&#93;</span> initWithFrame<span style="color: #002200;">:</span>CGRectMake<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">0.0</span>, <span style="color: #2400d9;">0</span>, <span style="color: #2400d9;">30.0</span>,
														   tableView.rowHeight<span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span> autorelease<span style="color: #002200;">&#93;</span>;
		<span style="color: #002200;">&#91;</span>cell addColumn<span style="color: #002200;">:</span><span style="color: #2400d9;">50</span><span style="color: #002200;">&#93;</span>;
		label.tag <span style="color: #002200;">=</span> LABEL_TAG;
		label.font <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>UIFont systemFontOfSize<span style="color: #002200;">:</span><span style="color: #2400d9;">12.0</span><span style="color: #002200;">&#93;</span>;
		label.text <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/"><span style="color: #400080;">NSString</span></a> stringWithFormat<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;%d&quot;</span>, indexPath.row<span style="color: #002200;">&#93;</span>;
		label.textAlignment <span style="color: #002200;">=</span> UITextAlignmentRight;
		label.textColor <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>UIColor blueColor<span style="color: #002200;">&#93;</span>;
		label.autoresizingMask <span style="color: #002200;">=</span> UIViewAutoresizingFlexibleRightMargin |
		UIViewAutoresizingFlexibleHeight;
		<span style="color: #002200;">&#91;</span>cell.contentView addSubview<span style="color: #002200;">:</span>label<span style="color: #002200;">&#93;</span>; 
&nbsp;
		label <span style="color: #002200;">=</span>  <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>UILabel	alloc<span style="color: #002200;">&#93;</span> initWithFrame<span style="color: #002200;">:</span>CGRectMake<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">60.0</span>, <span style="color: #2400d9;">0</span>, <span style="color: #2400d9;">30.0</span>,
															tableView.rowHeight<span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span> autorelease<span style="color: #002200;">&#93;</span>;
		<span style="color: #002200;">&#91;</span>cell addColumn<span style="color: #002200;">:</span><span style="color: #2400d9;">120</span><span style="color: #002200;">&#93;</span>;
		label.tag <span style="color: #002200;">=</span> VALUE_TAG;
		label.font <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>UIFont systemFontOfSize<span style="color: #002200;">:</span><span style="color: #2400d9;">12.0</span><span style="color: #002200;">&#93;</span>;
		<span style="color: #11740a; font-style: italic;">// add some silly value</span>
		label.text <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/"><span style="color: #400080;">NSString</span></a> stringWithFormat<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;%d&quot;</span>, indexPath.row <span style="color: #002200;">*</span> <span style="color: #2400d9;">4</span><span style="color: #002200;">&#93;</span>;
		label.textAlignment <span style="color: #002200;">=</span> UITextAlignmentRight;
		label.textColor <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>UIColor blueColor<span style="color: #002200;">&#93;</span>;
		label.autoresizingMask <span style="color: #002200;">=</span> UIViewAutoresizingFlexibleRightMargin |
		UIViewAutoresizingFlexibleHeight;
		<span style="color: #002200;">&#91;</span>cell.contentView addSubview<span style="color: #002200;">:</span>label<span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#125;</span>
&nbsp;
	<span style="color: #a61390;">return</span> cell;
<span style="color: #002200;">&#125;</span></pre></td></tr></table></div>

<p>That&#8217;s it. Being a bit dense I beat my head on my desk a few days before it become obvious how blindingly simple it really was. A lot was just learning ObjectiveC and how UIKit works in general. I&#8217;m now working on a GridTableView library that will add a good bit of functionality and ease of use. I&#8217;ll post it here.</p>
<p><a href="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/grids.zip">Here&#8217;s the source code.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dewpoint.snagdata.com/2008/10/31/drawing-a-grid-in-a-uitableview/feed/</wfw:commentRss>
		<feedburner:origLink>http://dewpoint.snagdata.com/2008/10/31/drawing-a-grid-in-a-uitableview/</feedburner:origLink></item>
		<item>
		<title>Making Bacon</title>
		<link>http://feedproxy.google.com/~r/ApproachingTheDewpoint/~3/4K-8Od_4DiM/</link>
		<comments>http://dewpoint.snagdata.com/2008/10/23/making-bacon/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 00:00:00 +0000</pubDate>
		<dc:creator>tjs</dc:creator>
		
		<category><![CDATA[Cooking]]></category>

		<category><![CDATA[bacon]]></category>

		<category><![CDATA[smoker]]></category>

		<guid isPermaLink="false">http://dewpoint.snagdata.com/?p=37</guid>
		<description><![CDATA[Lisa I’m going to become a vegetarian
Homer Does that mean you’re not going to eat any pork?
Lisa Yes
Homer Bacon?
Lisa Yes Dad
Homer Ham?
Lisa Dad all those meats come from the same animal
Homer Right Lisa, some wonderful, magical animal!
One of my latest cooking fads is making my own bacon. It&#8217;s very easy (especially with a good smoker) and the results are outstanding. Pork belly is [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong>Lisa</strong> <em>I’m going to become a vegetarian</em><br />
<strong>Homer</strong> <em>Does that mean you’re not going to eat any pork?</em><br />
<strong>Lisa </strong><em>Yes</em><br />
<strong>Homer </strong><em>Bacon?</em><br />
<strong>Lisa </strong><em>Yes Dad</em><br />
<strong>Homer </strong><em>Ham?</em><br />
<strong>Lisa </strong><em>Dad all those meats come from the same animal</em><br />
<strong>Homer </strong><em>Right Lisa, some wonderful, magical animal!</em></p></blockquote>
<p><a href="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/img_1072.jpg"><img class="alignright size-medium wp-image-69" style="margin-right: 4px; margin-left: 4px; border: 4px solid #000000;" title="Niman Ranch Pork Belly" src="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/img_1072-300x225.jpg" alt="" width="240" height="180" /></a>One of my latest cooking fads is making my own bacon. It&#8217;s very easy (especially with a good smoker) and the results are outstanding. Pork belly is pretty easy to come by, ask your local butcher and he should have some. However for some truly awesome bacon get fresh belly from <a href="http://nimanranch.com/control/main/index.html">Niman Ranch</a>. Their farm raised pork is just outstanding.</p>
<p> <span id="more-37"></span></p>
<p> </p>
<p><a href="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/img_1075.jpg"><img class="alignright size-medium wp-image-68" style="margin-right: 4px; margin-left: 4px; border: 4px solid #000000;" title="Applying Cure" src="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/img_1075-300x225.jpg" alt="" width="240" height="180" /></a>First step is to apply some cure. I use a dry cure (I&#8217;ve tried wet cures and haven&#8217;t liked the resulted nearly as much). In this picture I&#8217;m using a purchased cure Buckboard bacon cure which is actually a cure for making bacon from pork butts and shoulders but works fine for belly. Since I did this batch I&#8217;ve started using the cure recipe from Michael Rulman&#8217;s Charcuterie.</p>
<p>8 ounces sugar<br />
1 pound kosher salt<br />
2 ounces pink salt (aka Curing Salt or sodium nitrite)</p>
<p>If I&#8217;m making breakfast bacon I&#8217;ll add maple syrup or dark brown sugar. For non breakfast bacon you can get creative with any number of savory spices.</p>
<p><a href="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/img_1076.jpg"><img class="alignright size-medium wp-image-67" style="border-top-width: 4px; border-right-width: 4px; border-bottom-width: 4px; border-left-width: 4px; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; margin-right: 4px; margin-left: 4px; float: right;" title="Curing" src="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/img_1076-300x225.jpg" alt="" width="240" height="180" /></a>After applying the cure the belly is put in 2 gallon zip lock bags and put in the refrigerator for 5-7 days turning the belly over every other day to keep the juices that form in contact with the meat. First time I made bacon the juices worried me (I was doing a dry cure after all!) so I drained it. Wrong move, that juice is good, keep it in contact with the meat.</p>
<p> </p>
<p> </p>
<p><a href="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/img_1119.jpg"><img class="alignright size-medium wp-image-66" style="border-top-width: 4px; border-right-width: 4px; border-bottom-width: 4px; border-left-width: 4px; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; margin-right: 4px; margin-left: 4px; float: right;" title="Ready to smoke" src="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/img_1119-300x225.jpg" alt="" width="240" height="180" /></a>Once it&#8217;s cured I take the belly out of the bags, rinse than dry on racks in the refrigerator for a day. Here they are all set and ready to go into the smoker.</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p><a href="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/img_1120.jpg"><img class="alignright size-medium wp-image-65" style="border-top-width: 4px; border-right-width: 4px; border-bottom-width: 4px; border-left-width: 4px; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; margin-right: 4px; margin-left: 4px; float: right;" title="Into the Bradley" src="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/img_1120-225x300.jpg" alt="" width="225" height="300" /></a>Into the <a href="http://bradleysmoker.com/">Bradley</a>. 210 degrees F. Apple wood pucks.</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p><a href="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/img_1122.jpg"><img class="alignright size-medium wp-image-64" style="border-top-width: 4px; border-right-width: 4px; border-bottom-width: 4px; border-left-width: 4px; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; margin-right: 4px; margin-left: 4px; float: right;" title="Smoking" src="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/img_1122-300x225.jpg" alt="" width="240" height="180" /></a>Two hours in.</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p><a href="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/img_1123.jpg"><img class="alignright size-medium wp-image-63" style="margin-top: 4px; margin-bottom: 4px; border: 4px solid black;" title="Smoke" src="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/img_1123-300x225.jpg" alt="" width="240" height="180" /></a>6 hours later I pulled them when the internal temp hit 160 degrees. Let them cool for a bit then remove the rind.</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p><a href="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/img_1131.jpg"><img class="alignright size-medium wp-image-62" style="margin-top: 4px; margin-bottom: 4px; border: 4px solid black;" title="Bacon!" src="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/img_1131-300x225.jpg" alt="" width="240" height="180" /></a>The finished product. Slice, cook, eat!</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p style="text-align: center;">As Mr T would say.<a href="http://baconation.com/"><img class="aligncenter size-medium wp-image-142" title="mr_t_bacon" src="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/mr_t_bacon-210x300.jpg" alt="" width="210" height="300" /></a>Head over to <a href="http://baconation.com/" target="_blank">Bacon Nation</a> for more bacon fun.</p>
]]></content:encoded>
			<wfw:commentRss>http://dewpoint.snagdata.com/2008/10/23/making-bacon/feed/</wfw:commentRss>
		<feedburner:origLink>http://dewpoint.snagdata.com/2008/10/23/making-bacon/</feedburner:origLink></item>
		<item>
		<title>Google Protocol Buffers</title>
		<link>http://feedproxy.google.com/~r/ApproachingTheDewpoint/~3/AZp1rYgwk6w/</link>
		<comments>http://dewpoint.snagdata.com/2008/10/21/google-protocol-buffers/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 15:00:28 +0000</pubDate>
		<dc:creator>tjs</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[idl]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[protobuf]]></category>

		<category><![CDATA[rpc]]></category>

		<guid isPermaLink="false">http://dewpoint.snagdata.com/?p=82</guid>
		<description><![CDATA[We've been planning on moving to a new messaging protocol for a while. We've looked at a lot of different solutions but had enough issues with every proposed solution to date that we haven't made a decision. JR Boyens pointed us to Google's announcement Protocol Buffers: Google's Data Interchange Format in July....]]></description>
			<content:encoded><![CDATA[<p><a href="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/googlecode.png"><img class="alignright size-medium wp-image-119" style="margin: 2px;" title="Google Code" src="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/googlecode.png" alt="" width="153" height="55" /></a>We&#8217;ve been planning on moving to a new messaging protocol for a while. We&#8217;ve looked at a lot of different solutions but had enough issues with every proposed solution to date that we haven&#8217;t made a decision. JR Boyens pointed us to Google&#8217;s announcement <a href="http://google-opensource.blogspot.com/2008/07/protocol-buffers-googles-data.html">Protocol Buffers: Google&#8217;s Data Interchange Format</a> in July. Glanced at it but then it got lost in the everyday noise. Recent work on a project caused it to get more attention. I like what I see.</p>
<p>As part of a new offering we decided to add in our new messaging direction. We&#8217;re processing realtime voice conversations. Some of our major considerations are:</p>
<p><span id="more-82"></span></p>
<ol>
<li><strong>Latency and Performance</strong> - Latency matters to us. A LOT. I&#8217;m including not only network transport but also memory and CPU. The total time it takes for a message to get from it&#8217;s native format in the sender to it&#8217;s native format in the receiver.  We&#8217;re dealing with real time voice communications, too much latency and best case is the callers experience suffers. Our labor model is also sensitive to even small changes in latency. The smaller the latency the more efficient we are, the happier our client&#8217;s customers are and the more money we make. As greedy capitalist we see that as a good thing.</li>
<li><strong>Versioning</strong> - Our current system has no versioning. Yeah, short sighted on my part. We have to fix it so it&#8217;s required for any new message protocol. Protobuf fits our needs on this nicely. Different versions have to coexist and interoperate. We could do this on a different layer than the messaging but it makes sense to me to keep it at this level.</li>
<li><strong>Java and C++</strong> - Language independence is cool and all but in practice if the protocol support Java and C++ we&#8217;re good to go. Maybe I&#8217;m being a bit myopic but my feeling is the likely hood that whatever we choose will expand to support more languages in the future is very high if it supports several today.</li>
<li><strong>Internal</strong> - We control the end points. I don&#8217;t care if the schema is external to the data package. In fact, for our use case that&#8217;s a plus. For any external services we&#8217;ll still expose those using the usual standards. Internally our applications will be using PB for their messaging format.</li>
</ol>
<div>In short, we&#8217;re all about high volume low latency messages.</div>
<h3>
<div><a href="http://code.google.com/apis/protocolbuffers/" target="_blank">Google Protocol Buffers</a></div>
</h3>
<blockquote>
<div>Protocol buffers are a flexible, efficient, automated mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages. You can even update your data structure without breaking deployed programs that are compiled against the &#8220;old&#8221; format.</div>
<div>
<p>Protocol buffers have many advantages over XML for serializing structured data. Protocol buffers:</p>
<ul>
<li>are simpler</li>
<li>are 3 to 10 times smaller</li>
<li>are 20 to 100 times faster</li>
<li>are less ambiguous</li>
<li>generate data access classes that are easier to use programmatically</li>
</ul>
</div>
</blockquote>
<div>Seems like a decent fit. OK, actually an awesome fit. One of our developers has been doing some testing. It&#8217;s impressive.</div>
<h3>Alternatives</h3>
<h4><a href="http://www.json.org/">JSON</a></h4>
<p>To me protobuf feels like compiled JSON. They are very similar.  The main difference being JSON sends data over the wire in text format verses protobuf&#8217;s binary format. The latter has the advantage of a smaller size and being faster for a computer to parse.</p>
<h4><a href="http://en.wikipedia.org/wiki/ASN.1" target="_blank">ASN.1</a></h4>
<p>Why not ASN.1? Seems like one of the best choices. Well understood and widely used. Sure the full ASN.1 specification is complex but we&#8217;d only need a small subset. I&#8217;m still struggling with this one a bit. Tool support seems a bit better in protobuf and it&#8217;s definitely simpler.</p>
<h4><a href="http://developers.facebook.com/thrift/" target="_blank">Thrift</a></h4>
<p>Facebook&#8217;s Thrift is very similar to protobuf. Not surprising since the main author interned at Google. It&#8217;s a strong offering and recently became an <a href="http://incubator.apache.org/thrift/" target="_blank">Apache project</a>. Nice stuff. Stuart Sierra has a nice comparison on his blog, <a title="Permanent Link: Thrift vs. Protocol Buffers" rel="bookmark" href="http://stuartsierra.com/2008/07/10/thrift-vs-protocol-buffers">Thrift vs. Protocol Buffers</a>. Another worthy contender but not a big enough advantage to stop the internal momentum protobuf already has.</p>
<h4><a href="http://www.hdfgroup.org" target="_blank">HDF5</a></h4>
<p>The HDF wiki has an entry <a href="http://wiki.hdfgroup.org/Google+Protocol+Buffers+and+HDF5" target="_self">Google Protocol Buffers and HDF5</a> that concludes:</p>
<blockquote><p>In summary, Protocol Buffers and HDF5 were designed to serve different kinds of data intensive applications: a network based transient message system, and a high performance data storage system for very large datasets such as multi-dimensional images, respectively. That said, both 1) offer open source technologies that can reduce data management headaches for individual developers and projects, 2) increase the ability to share data through the use of well-defined binary formats and supporting libraries that run on a variety of platforms, and 3) provide the ability to access data stored with “older” versions of the data structures.</p></blockquote>
<p>Different design goals. HDF5 doesn&#8217;t fit our needs as well. </p>
<h4><a href="http://hessian.caucho.com/">Hessian</a></h4>
<p>The Hessian protocol has the following design goals:</p>
<ul class="text">
<li>It must not require external IDL or schema definitions, i.e. the protocol should be invisible to application code.</li>
<li>It must be language-independent.</li>
<li>It must be simple so it can be effectively tested and implemented.</li>
<li>It must be as fast as possible.</li>
<li>It must be as compact as possible.</li>
<li>It must support Unicode strings.</li>
<li>It must support 8-bit binary data (i.e. without encoding or using attachments.)</li>
<li>It must support encryption, compression, signature, and transaction context envelopes.</li>
</ul>
<p>I still haven&#8217;t figured out how/if you can version your messages. Can you add and remove fields and still have compatibility (backwards and forwards)?  Cool effort, still feels very rough in places. Another worthy effort to consider.</p>
<h4><a href="http://www.zeroc.com/">ZeroC ICE</a></h4>
<p>At it&#8217;s core it&#8217;s</p>
<blockquote><p>The Ice core library. Among many other features, the Ice core library manages all the communication tasks using a highly efficient protocol (including protocol compression and support for both TCP and UDP), provides a flexible thread pool for multi-threaded servers, and offers additional functionality that supports extreme scalability with potentially millions of Ice objects.</p></blockquote>
<p>ICE is a comprehensive middleware system. It can even use PB as it&#8217;s messaging layer. It&#8217;s messaging layer doesn&#8217;t handle adding or removing fields as well as PB. We don&#8217;t need the RPC side of ICE. Just not a good fit for us.</p>
<h4><a href="http://en.wikipedia.org/wiki/Service_Data_Objects" target="_self">SDO</a></h4>
<p>Service Data Objects provides a rather ambitious messaging architecture. It&#8217;s concerns aren&#8217;t speed and efficiency. The <a href="http://www.osoa.org/download/attachments/287/SDO+V2.1+White+Paper.pdf?version=1">SDO V2.1 White Paper</a> states</p>
<blockquote><p>SDO is intended to create a uniform data access layer that provides a data access solution for heterogeneous data sources in an easy-to-use manner that is amenable to tooling and frameworks.</p></blockquote>
<p>Interesting, not a fit.</p>
<h4><a href="http://developer.cisco.com/web/cuae/etch">Cisco Etch</a></h4>
<p>Primary focus is an RPC implementation, not a messaging protocol. Steve Vinoski summarized it nicely in <a title="Permanent Link: Just What We Need: Another RPC Package" rel="bookmark" href="http://steve.vinoski.net/blog/2008/05/22/just-what-we-need-another-rpc-package/">Just What We Need: Another RPC Package</a>. In fairness Steve had some negative thoughts on PB also in <a title="Permanent Link: Protocol Buffers: Leaky RPC" rel="bookmark" href="http://steve.vinoski.net/blog/2008/07/13/protocol-buffers-leaky-rpc/">Protocol Buffers: Leaky RPC</a>. However, his concerns are around the undefined RPC features Google put in PB, not the IDL type aspects of PB.</p>
<h4>
<div>Some other XML based protocol</div>
</h4>
<div>Yeah, I know the problem with XML isn&#8217;t XML it&#8217;s with the parsers. Cute argument. Getting my message from native format on one system to native format on another as fast as possible is what matters to me. So oddly enough parsers are part of the equation. Yeah, jaxb is fast but just how fast?</div>
<div>
<p>Remember, we&#8217;re all about high volume low latency messages. It&#8217;s not a focus for XML. Yep, no one will take issue with that statement!</p>
<h4>Binary XML</h4>
<p>Enough said. Next.</p>
<h4>Corba/IIOP</h4>
<p>Well defined IDL, a bit complicated (because it addresses a wide range of issues).  Built in to the JDK! Not designed for speed or efficiency. Bad fit.</p>
<h3>Conclusion</h3>
<p>Several good choices. I&#8217;m sure there&#8217;s others I missed. We&#8217;re going with protobuf. Early tests by our developers have been very impressive. Google fan bois can rejoice and the Google haters gripe. In the meantime we&#8217;ve got a job to do.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://dewpoint.snagdata.com/2008/10/21/google-protocol-buffers/feed/</wfw:commentRss>
		<feedburner:origLink>http://dewpoint.snagdata.com/2008/10/21/google-protocol-buffers/</feedburner:origLink></item>
		<item>
		<title>Empowering the cancer patient</title>
		<link>http://feedproxy.google.com/~r/ApproachingTheDewpoint/~3/WoCcfxX-k60/</link>
		<comments>http://dewpoint.snagdata.com/2008/10/15/empowering-the-cancer-patient/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 22:37:14 +0000</pubDate>
		<dc:creator>tjs</dc:creator>
		
		<category><![CDATA[Cancer]]></category>

		<guid isPermaLink="false">http://dewpoint.snagdata.com/?p=10</guid>
		<description><![CDATA[Christine Gray has written a great article, Online cancer resources invaluable for empowering parents of sick children, on The Health Care Blog....]]></description>
			<content:encoded><![CDATA[<p><a href="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/mri.jpg"><img class="alignright size-medium wp-image-76" style="margin-left: 4px; margin-right: 4px; border: 4px solid black;" title="mri" src="http://dewpoint.snagdata.com/wp-content/uploads/2008/10/mri-300x194.jpg" alt="" width="300" height="194" /></a>Christine Gray has written a great article, <a href="http://www.thehealthcareblog.com/the_health_care_blog/2008/10/pediatric-cance.html">Online cancer resources invaluable for empowering parents of sick children</a>, on <a href="http://www.thehealthcareblog.com/the_health_care_blog/">The Health Care Blog</a>. Her story is a valuable lesson not only for parents of children diagnosed with cancer but for everyone that hears the unfortunate phrase &#8216;it was malignant&#8217;. We have outstanding treatment options for every type of cancer but it&#8217;s a mistake to think you&#8217;ll get it by just going to the oncologist you were referred to. You may, but it&#8217;s up to you the patient to make sure.</p>
<p>I quickly learned that even though I had a kind, well regarded doctor, he didn&#8217;t have the expertise to handle my case. What I needed was a team of physicians that see hundreds of cases a year of my type of cancer. A team, not a doctor. Treatment frequently covers a lot of disciplines, surgery, chemo and radiation. I eventually landed at <a href="http://www.moffitt.org/" target="_blank">Moffitt Cancer Center</a> and met with a surgeon. He told me what he thought my treatment plan would be but quickly qualified &#8220;I can&#8217;t do anything until the full cancer board approves your plan.&#8221; I didn&#8217;t have to go to each type of doctor, records in hand, and hear what they thought their part of the treatment should be. I had a team, all meeting together and determining the best course of action. </p>
<p>Don&#8217;t be passive! Richard Bloch summed it up nicely:</p>
<blockquote><p>Hamilton Jordan, White House Chief of Staff under President Jimmy Carter, upon being diagnosed with cancer at the age of 41, stated, &#8220;One of my closest friends is a doctor, and he came to see me one day and said, ‘You&#8217;re going to have to manage your own damn medical care.&#8217; That shocked me. It put a sense of burden and responsibility on me that I wasn&#8217;t sure I could exercise properly. But as I saw things unfold, I saw he was right. Although it was tempting to stay at (the hospital) and be among all my friends, and the (hospital) doctors thought they could do as good a job as anybody, I realized there were many choices to be made, and I had to make them for myself.&#8221;   <a href="http://www.blochcancer.org/fighting/chap1.html">Fighting Cancer</a> by R. A. Bloch</p></blockquote>
<p>You&#8217;re going to have to manage your own care but you do not need to do it alone. Use the resources Christine listed. Become a Google fiend. Find out what&#8217;s valid science and what&#8217;s quackery. Act.</p>
]]></content:encoded>
			<wfw:commentRss>http://dewpoint.snagdata.com/2008/10/15/empowering-the-cancer-patient/feed/</wfw:commentRss>
		<feedburner:origLink>http://dewpoint.snagdata.com/2008/10/15/empowering-the-cancer-patient/</feedburner:origLink></item>
	</channel>
</rss>
