<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en"><title type="text">16cards</title><link rel="alternate" type="text/html" href="http://16cards.com" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/16cards" /><subtitle type="text">no significant tagline</subtitle><updated>2009-09-29T13:58:07+00:00</updated><generator uri="http://wordpress.org/">WordPress</generator><feedburner:info uri="16cards" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><id>http://16cards.com/feed/atom/</id><geo:lat>35.797882</geo:lat><geo:long>-78.797029</geo:long><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2F16cards" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2F16cards" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2F16cards" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/16cards" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2F16cards" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2F16cards" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2F16cards" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><entry><title type="html">$3.00</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/16cards/~3/A5sH7TUTrWU/" /><category term="Tumble" /><author><name>brandon</name><uri>http://16cards.com</uri></author><updated>2009-09-29T06:58:07-07:00</updated><id>http://16cards.com/2009/09/29/3-00/</id><summary type="html">I just spent $1.25 on a King Size Reese&amp;#8217;s Peanut Butter Cups. 4 cups. Concentrated energy bursts throughout the day. I find they make me more productive. Worth the price for getting work done, not worth the price for my waist line. :)
Tweetie for iPhone is about to release version 2. Existing users will need [...]</summary><content type="html" xml:base="http://16cards.com/2009/09/29/3-00/">&lt;p&gt;I just spent $1.25 on a King Size Reese&amp;#8217;s Peanut Butter Cups. 4 cups. Concentrated energy bursts throughout the day. I find they make me more productive. Worth the price for getting work done, not worth the price for my waist line. :)&lt;/p&gt;
&lt;p&gt;Tweetie for iPhone is about to release version 2. Existing users will need to pay $3 for the app. Version 1 is a pleasure to use. Reviews are all position about the new one.&lt;/p&gt;
&lt;p&gt;Only, there is a &lt;a href="http://justanotheriphoneblog.com/wordpress/iphone-software/tweetie-2-new-app-will-spit-on-existing-old-app-users"&gt;very vocal minority&lt;/a&gt; claiming they have been wronged by the makers of Tweetie for charging &amp;#8220;full&amp;#8221; price.&lt;/p&gt;
&lt;p&gt;Don&amp;#8217;t make me laugh.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s $3.&lt;/p&gt;
&lt;p&gt;My rule of thumb is that when you use a durable good daily, you should always be willing to pay at least your aggregated three meals for the day.&lt;/p&gt;
&lt;p&gt;Which, interesting enough, is what traditional Mac apps that fill a niche. Roughly $20 to $50.&lt;/p&gt;
&lt;p&gt;The iPhone app store seems to have introduced a new set of economics. And expectations from users. All of sudden $3 is a huge deal. Almost as if the scaled down interface has a direct relationship with price but an inverse relationship with entitlement.&lt;/p&gt;
&lt;p&gt;I think what has happened is that app producers, in an effort to dominate a particular market segment, either gave away apps for free or gave away significant updates to paid apps for free. Now that the app store economy is stabilizing somewhat from its initial, incredible growth, app producers are beginning to introduce back into the system sustainable revenue practices&amp;#8230; like charging a reasonable price commensurate with their good&amp;#8217;s usefulness.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m sorry. When users are crying foul, demanding a discount on $3, something entirely different is wrong. To the degree that economic textbooks may reflect on this point in history. There will be some term for this attitude and behavior of paying customers to expect discounts on useful goods they see everyday to cost less than a BigMac that they see only once.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/16cards?a=A5sH7TUTrWU:tiucTf3XfvM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/16cards?a=A5sH7TUTrWU:tiucTf3XfvM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?i=A5sH7TUTrWU:tiucTf3XfvM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/16cards/~4/A5sH7TUTrWU" height="1" width="1"/&gt;</content><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://16cards.com/2009/09/29/3-00/</feedburner:origLink></entry><entry><title type="html">Speaking to our children</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/16cards/~3/qF3o2QUdEkg/" /><category term="Tumble" /><author><name>brandon</name><uri>http://16cards.com</uri></author><updated>2009-09-04T05:55:44-07:00</updated><id>http://16cards.com/?p=194</id><summary type="html">There seems to be a lot of hoopla about our country&amp;#8217;s President speaking to students next September 8th. And, of course, right wing parents have used this to further convince themselves that Obama&amp;#8217;s motivation is to spread socialist propaganda and turn children against their parents.
At the center of the conspiracy theories are two documents produced [...]</summary><content type="html" xml:base="http://16cards.com/2009/09/03/speaking-to-our-children/">&lt;p&gt;There seems to be a lot of hoopla about our country&amp;#8217;s President speaking to students next September 8th. And, of course, right wing parents have used this to further convince themselves that Obama&amp;#8217;s motivation is to spread socialist propaganda and turn children against their parents.&lt;/p&gt;
&lt;p&gt;At the center of the conspiracy theories are two documents produced by the Department of Education to assist teachers in stimulating student minds. One document is for Pre-K through 6th grade while the other is for 7th to 12th. Each contains similarly worded, but age appropriate, questions and constructive activities in an attempt to make the speech more likely to make an impact on our nation&amp;#8217;s future generation.&lt;/p&gt;
&lt;p&gt;Only I have one small concern. Some blogs I&amp;#8217;ve read are &lt;a href="http://www.docstoc.com/docs/10582301/President-Obama"&gt;linking to a version&lt;/a&gt; of the Pre-K to 6th grade document that is hosted on non-authoritative servers. However, &lt;a href="http://www.ed.gov/teachers/how/lessons/prek-6.pdf"&gt;the official document&lt;/a&gt; is provided by the Department of Education.&lt;/p&gt;
&lt;p&gt;The reason the other document concerns me is that there are two parts in the content that are different. One is minor and negligible. However, the other deserves attention.&lt;/p&gt;
&lt;p&gt;In particular, the unofficial document, second bullet in the &amp;#8220;Extension of the Speech&amp;#8221; section, contains the following sentence:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;#8220;Write letters to themselves about what they can do to help the president.&amp;#8221;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Whereas the official document has this sentence in the same location:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;#8220;Write letters to themselves about how they can achieve their short-term and long-term education goals.&amp;#8221;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Worst case scenario holds that someone deliberately modified the text to incite right wing parents.&lt;/p&gt;
&lt;p&gt;Best case scenario is that the unofficial document is an earlier draft, reviewers felt that &amp;#8220;help the president&amp;#8221; in fact would be controversial despite it addressing students helping the president in his goals for education.&lt;/p&gt;
&lt;p&gt;In other words, &amp;#8220;help the president&amp;#8221; in the context of the speech&amp;#8217;s subject matter, not the president&amp;#8217;s general policies. Which, therefore, in my view attests to why Barak Obama wants to talk to my daughter, along with the rest of the country&amp;#8217;s students&amp;#8230;&lt;/p&gt;
&lt;p&gt;No Child Left Behind was/is about schools owning the education experience in our country and being held accountable through standardized tests and school, district, and state report cards of key indicators for &amp;#8220;progress&amp;#8221; and &amp;#8220;success&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Obama&amp;#8217;s emerging education policy will turn NCLB on its head and redirect the ultimate responsibility for education in the individual. In the words of the official document linked above&amp;#8230; &amp;#8220;short-term and long-term education goals&amp;#8221;. Which is really where is should be.&lt;/p&gt;
&lt;p&gt;Isn&amp;#8217;t education ultimately a life-long process? Is our educational system preparing us for that? Hasn&amp;#8217;t our country incorrectly emphasized certain subjects (math, science) while diminishing others (art, dance, music, physical education)? Shouldn&amp;#8217;t education be more about self-discovery and equipping our youth with the skills to adapt and succeed in our ever changing world? Instead we glorify students that are narrowly talented and call them the &amp;#8220;smart&amp;#8221; ones.&lt;/p&gt;
&lt;p&gt;I believe the content Obama will deliver on September 8th will focus on helping students shape their own education and be joint partners in it with parents and teachers.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/16cards?a=qF3o2QUdEkg:MjmoGMg9ts4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/16cards?a=qF3o2QUdEkg:MjmoGMg9ts4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?i=qF3o2QUdEkg:MjmoGMg9ts4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/16cards/~4/qF3o2QUdEkg" height="1" width="1"/&gt;</content><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://16cards.com/2009/09/03/speaking-to-our-children/</feedburner:origLink></entry><entry><title type="html">Last Day</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/16cards/~3/TSim_nELTts/" /><category term="Tumble" /><author><name>brandon</name><uri>http://16cards.com</uri></author><updated>2009-07-01T20:44:03-07:00</updated><id>http://16cards.com/?p=187</id><summary type="html">After nearly four years with IBM, the day has arrived. My final day with IBM as my employer.
During my time at IBM I found the BlueMail to be the most usable email and calendar client. I religiously tagged all my saved emails.
And so I generated a tag cloud of all my emails. I think it [...]</summary><content type="html" xml:base="http://16cards.com/2009/07/01/last-day/">&lt;p&gt;After nearly four years with IBM, the day has arrived. My final day with IBM as my employer.&lt;/p&gt;
&lt;p&gt;During my time at IBM I found the &lt;a href="http://www.research.ibm.com/social/projects_bluemail.html"&gt;BlueMail to be the most usable email and calendar client&lt;/a&gt;. I religiously tagged all my saved emails.&lt;/p&gt;
&lt;p&gt;And so I generated a tag cloud of all my emails. I think it is pretty indicative of what&amp;#8217;s itching my brain during my IBM tenure:&lt;/p&gt;
&lt;p&gt;&lt;div id="attachment_188" class="wp-caption alignnone" style="width: 845px"&gt;&lt;img class="size-full wp-image-188" title="Brandon Smith's Wordle" src="http://16cards.com/wp-content/uploads/2009/07/brandon-smith-wordle.gif" alt="Brandon Smith's Wordle" width="835" height="328" /&gt;&lt;p class="wp-caption-text"&gt;Brandon Smith&amp;#39;s Wordle&lt;/p&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="Wordle: My 4 years" href="http://www.wordle.net/gallery/wrdl/979832/My_4_years"&gt;Image generated by the fine work of Wordle.net&lt;/a&gt;&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/16cards?a=TSim_nELTts:mcZQsi4-85s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/16cards?a=TSim_nELTts:mcZQsi4-85s:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?i=TSim_nELTts:mcZQsi4-85s:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/16cards/~4/TSim_nELTts" height="1" width="1"/&gt;</content><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://16cards.com/2009/07/01/last-day/</feedburner:origLink></entry><entry><title type="html">New Glasses</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/16cards/~3/aKinmmlkpKo/" /><category term="Tumble" /><author><name>brandon</name><uri>http://16cards.com</uri></author><updated>2009-06-24T17:55:07-07:00</updated><id>http://16cards.com/?p=167</id><summary type="html">I am leaving IBM and joining Bandwidth.com.
When Joe Gregorio exited my team at IBM during the summer of 2007, he opaquely announced that he was joining Google by outlining that his job moves coincided with road construction providing faster routes to his previous employer.
I recently got a new pair of glasses. Here I am with [...]</summary><content type="html" xml:base="http://16cards.com/2009/06/24/new-glasses/">&lt;p&gt;I am &lt;a href="http://twitter.com/BrandonSmith/status/2313095199"&gt;leaving IBM&lt;/a&gt; and joining Bandwidth.com.&lt;/p&gt;
&lt;p&gt;When Joe Gregorio exited my team at IBM during the summer of 2007, he &lt;a href="http://bitworking.org/news/229/Roads"&gt;opaquely announced that he was joining Google&lt;/a&gt; by outlining that his job moves coincided with road construction providing faster routes to his previous employer.&lt;/p&gt;
&lt;p&gt;I recently got a new pair of glasses. Here I am with my daughter just two weeks ago:&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-168" title="Brandon and Brooklyn" src="http://16cards.com/wp-content/uploads/2009/06/brandon-10.jpg" alt="Brandon and Brooklyn" width="350" height="232" /&gt;&lt;/p&gt;
&lt;p&gt;And then I began to talk with my wife about when I got new glasses throughout my life. I could not help notice the irony that within weeks of a major life event, I got a new pair of glasses. I am reminded of Christopher Guest teasing Eugene Levy on the commentary track of &amp;#8220;A Mighty Wind&amp;#8221; of Levy&amp;#8217;s peculiarity of selecting glasses before filming.&lt;/p&gt;
&lt;h3&gt;Junior High.&lt;/h3&gt;
&lt;p&gt;Upon graduating from elementary school, it was soon discovered that I needed glasses. I was quite young, and the late 80&amp;#8217;s was not exactly kind to the optically challenged community:&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-171" title="brandon-1" src="http://16cards.com/wp-content/uploads/2009/06/brandon-1.jpg" alt="brandon-1" width="350" height="381" /&gt;&lt;/p&gt;
&lt;p&gt;Today&amp;#8217;s youth have a much better selection of stylish frames.&lt;/p&gt;
&lt;p&gt;I should note that I went through about a dozen of these frames. It was not long before my mother realized the economics of purchasing the warranty that covered broken frames. Replacing fractured frames became so commonplace during this stage of my life that I would go to the store to get them refitted on my bike. I do not recall whether I thought it was a good idea to ride my bike with impaired vision.&lt;/p&gt;
&lt;h3&gt;High School.&lt;/h3&gt;
&lt;p&gt;Awkwardness is one of several words I would describe myself during high school. I think I may have predated Harry Potter with the frames I had during this period of my life.&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-172" title="brandon-2" src="http://16cards.com/wp-content/uploads/2009/06/brandon-2.jpg" alt="brandon-2" width="350" height="261" /&gt;&lt;/p&gt;
&lt;p&gt;Nevertheless, I did play football. Between my freshman and sophomore year, I bulked up with my weight lifting. Further, glasses do not exactly go well with the football field. Thus, I would often wear contacts. Except I am petrified of touching my eye. Even to this day. My mother would pin me down on the ground, pry open an eye and jab in the contact until it stuck. I did not make it easy.&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-173" title="brandon-3" src="http://16cards.com/wp-content/uploads/2009/06/brandon-3.jpg" alt="brandon-3" width="350" height="302" /&gt;&lt;/p&gt;
&lt;h3&gt;Abroad.&lt;/h3&gt;
&lt;p&gt;Between high school and college I went abroad to South Africa for two years like many do from my church. During this time I got my first &amp;#8220;modern&amp;#8221; pair of glasses (and stopped parting my hair).&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-174" title="brandon-4" src="http://16cards.com/wp-content/uploads/2009/06/brandon-4.jpg" alt="brandon-4" width="350" height="247" /&gt;&lt;/p&gt;
&lt;h3&gt;Undergraduate degree. And the band.&lt;/h3&gt;
&lt;p&gt;Throughout my undergraduate degree at Arizona State University I played the bass guitar for the band Before Braille. (We just released an album of unreleased tracks, it is pretty good.) I definitely took on an &amp;#8220;indy&amp;#8221; look at this time of my life.&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-170" title="DSC00065" src="http://16cards.com/wp-content/uploads/2009/06/DSC00065.jpg" alt="DSC00065" width="350" height="263" /&gt;&lt;/p&gt;
&lt;h3&gt;Married. Masters degree.&lt;/h3&gt;
&lt;p&gt;I got married and got serious about school and finished at Arizona State. Which led me to pursuing my masters degree at Carnegie Mellon. Just before starting graduate school I wanted a more academic look.&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-176" title="brandon-6" src="http://16cards.com/wp-content/uploads/2009/06/brandon-61.jpg" alt="brandon-6" width="350" height="213" /&gt;&lt;/p&gt;
&lt;h3&gt;IBM.&lt;/h3&gt;
&lt;p&gt;I had just completed graduate school before joining IBM and had gotten new glasses. I remember feeling compelled to get glasses with a more &amp;#8220;professional&amp;#8221; look. In retrospect, they were boring. The glasses were the memory kind that bend back into shape. Here I am with my girls. They are quite active which proved useful for the flexible frames.&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-169" title="brandon-8" src="http://16cards.com/wp-content/uploads/2009/06/brandon-8.jpg" alt="brandon-8" width="350" height="332" /&gt;&lt;/p&gt;
&lt;h3&gt;Bandwidth.com&lt;/h3&gt;
&lt;p&gt;Which leads me back to my transition to Bandwidth.com next week.&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-177" title="Photo 21" src="http://16cards.com/wp-content/uploads/2009/06/Photo-21.jpg" alt="Photo 21" width="350" height="200" /&gt;&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/16cards?a=aKinmmlkpKo:zFmmFEcUgOo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/16cards?a=aKinmmlkpKo:zFmmFEcUgOo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?i=aKinmmlkpKo:zFmmFEcUgOo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/16cards/~4/aKinmmlkpKo" height="1" width="1"/&gt;</content><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://16cards.com/2009/06/24/new-glasses/</feedburner:origLink></entry><entry><title type="html">Welcome back and welcoming Dave</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/16cards/~3/1qrccSft-7U/" /><category term="Tumble" /><author><name>brandon</name><uri>http://16cards.com</uri></author><updated>2009-03-13T12:38:27-07:00</updated><id>http://16cards.com/?p=130</id><summary type="html">Nearly a year since any activity on this blog. It has been far too long. I had high hopes on recording my thoughts as I traverse through the technical side of my life. (I contribute frequently with my wife on our family blog.) I recorded one such thought and got my hand slapped. In retrospect, [...]</summary><content type="html" xml:base="http://16cards.com/2009/03/13/welcome-back-and-welcoming-dave/">&lt;p&gt;Nearly a year since any activity on this blog. It has been far too long. I had high hopes on recording my thoughts as I traverse through the technical side of my life. (I contribute frequently with my wife on our family blog.) I recorded &lt;a href="http://16cards.com/2007/05/22/enterprise-vs-consumer-ibms-false-distinction/"&gt;one&lt;/a&gt; such thought and got my hand slapped. In retrospect, I used stronger, more confrontational language than necessary. In fact, there were several blog posts done in frustration. Yet I cowered. Decided my thoughts were not being received well. And abandoned efforts.&lt;/p&gt;
&lt;p&gt;I am going to try again. This time, however, I plan to do write ups that are less about the abstract and more about what I am actually doing. Before I felt a topic needed some grandiose raison d&amp;#8217;être that fit into an even larger story arc in order to qualify as worth of posting. I now realize that that is not necessary. I&amp;#8217;ve learned effective bloggers have passion, not an agenda.&lt;/p&gt;
&lt;p&gt;One person I respect, among many, in how he blogs about what he works on is Dave Johnson of Roller fame. He posts on project status, architecture, reblogs content as appropriate, with commentary. In other words, it seems to be an extension of himself. As a blog should be.&lt;/p&gt;
&lt;p&gt;I don&amp;#8217;t know &lt;a href="http://rollerweblogger.org/roller/page/about"&gt;Dave Johnson&lt;/a&gt; personally, not having the occasion to meet him. Yet I&amp;#8217;ve followed his blog for years, as well as &lt;a href="http://rollerweblogger.org/project/"&gt;Roller&lt;/a&gt; and, more recently, &lt;a href="https://socialsite.dev.java.net/"&gt;Project SocialSite&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Dave is joining IBM. I hope to find an excuse to &lt;a href="http://rollerweblogger.org/roller/entry/joining_ibm"&gt;work with Dave&lt;/a&gt; at some point.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/16cards?a=1qrccSft-7U:mtHaCN_7YRA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/16cards?a=1qrccSft-7U:mtHaCN_7YRA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?i=1qrccSft-7U:mtHaCN_7YRA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/16cards/~4/1qrccSft-7U" height="1" width="1"/&gt;</content><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://16cards.com/2009/03/13/welcome-back-and-welcoming-dave/</feedburner:origLink></entry><entry><title type="html">Project Zero in the cloud</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/16cards/~3/MS6BvuvgDsk/" /><category term="Enterprise Web 2.0" /><category term="Project Zero" /><category term="cloud computing" /><category term="cloudcomputing" /><category term="projectzero" /><author><name>brandon</name><uri>http://16cards.com</uri></author><updated>2008-04-09T17:39:50-07:00</updated><id>http://16cards.com/?p=102</id><summary type="html">Michael Kimsal reviews Google&amp;#8217;s App Engine and calls out Project Zero as being likely candidate for IBM to join the trend towards cloud computing&amp;#8230;
I, too, would love to see Project Zero in the cloud as well.
</summary><content type="html" xml:base="http://16cards.com/2008/04/09/project-zero-in-the-cloud/">&lt;p&gt;Michael Kimsal reviews Google&amp;#8217;s App Engine and calls out Project Zero as being likely candidate for IBM to join the trend towards cloud computing&amp;#8230;&lt;/p&gt;
&lt;p&gt;I, too, would love to see &lt;a href="http://www.projectzero.org"&gt;Project Zero&lt;/a&gt; in the cloud as well.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/16cards?a=MS6BvuvgDsk:9_SiZN2xq7s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/16cards?a=MS6BvuvgDsk:9_SiZN2xq7s:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?i=MS6BvuvgDsk:9_SiZN2xq7s:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/16cards/~4/MS6BvuvgDsk" height="1" width="1"/&gt;</content><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://16cards.com/2008/04/09/project-zero-in-the-cloud/</feedburner:origLink></entry><entry><title type="html">&amp;#8230;and so the pranks begin&amp;#8230;</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/16cards/~3/113sSBDX_bk/" /><category term="Tumble" /><author><name>brandon</name><uri>http://16cards.com</uri></author><updated>2008-03-31T19:15:38-07:00</updated><id>http://16cards.com/?p=100</id><summary type="html">I was hoping that April Fools&amp;#8217; jokes on the Web would be passe this year. First I spotted this year. Of course, no hoax can ever top Google&amp;#8217;s Pigeon Rank.
</summary><content type="html" xml:base="http://16cards.com/2008/03/31/and-so-the-pranks-begin/">&lt;p&gt;I was hoping that April Fools&amp;#8217; jokes on the Web would be passe this year. First I &lt;a href="http://www.techcrunch.com/2008/03/31/why-were-suing-facebook-for-25-million-in-statutory-damages/"&gt;spotted this year&lt;/a&gt;. Of course, no hoax can ever top &lt;a href="http://www.google.com/technology/pigeonrank.html"&gt;Google&amp;#8217;s Pigeon Rank&lt;/a&gt;.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/16cards?a=113sSBDX_bk:Py8yahhUhls:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/16cards?a=113sSBDX_bk:Py8yahhUhls:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?i=113sSBDX_bk:Py8yahhUhls:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/16cards/~4/113sSBDX_bk" height="1" width="1"/&gt;</content><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://16cards.com/2008/03/31/and-so-the-pranks-begin/</feedburner:origLink></entry><entry><title type="html">phpBB on Project Zero</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/16cards/~3/HIcK1i9NlKw/" /><category term="Java" /><category term="Tumble" /><category term="PHP" /><category term="Project Zero" /><author><name>brandon</name><uri>http://16cards.com</uri></author><updated>2008-03-31T10:03:27-07:00</updated><id>http://16cards.com/?p=99</id><summary type="html">
Somehow this flew under my radar. Sad, considering I am on the project. Project Zero is starting to become self-hosted (to the extent it makes sense, of course) with its own support forum running phpBB on the Project Zero runtime itself.
So I went and dug deeper&amp;#8230;
Back in January, Rob Nicholson and Iain Lewis posted that [...]</summary><content type="html" xml:base="http://16cards.com/2008/03/31/phpbb-on-project-zero/">&lt;p&gt;&lt;img src='http://16cards.com/media/zero-plus-php.png' alt='' class='alignright' /&gt;&lt;/p&gt;
&lt;p&gt;Somehow this flew under my radar. Sad, considering I am on the project. Project Zero is starting to become self-hosted (to the extent it makes sense, of course) with its own &lt;a href="https://www.projectzero.org/forum/index.php"&gt;support forum running phpBB on the Project Zero runtime itself&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So I went and dug deeper&amp;#8230;&lt;/p&gt;
&lt;p&gt;Back in January, &lt;a href="http://www.projectzero.org/blog/index.php/2008/01/13/phpbb-running-on-project-zero/"&gt;Rob Nicholson&lt;/a&gt; and &lt;a href="http://www.projectzero.org/blog/index.php/2008/01/24/running-phpbb-from-the-project-zero-commandline/"&gt;Iain Lewis&lt;/a&gt; posted that phpBB now runs on Project Zero&amp;#8217;s PHP runtime.&lt;/p&gt;
&lt;p&gt;Getting a major PHP application, such as phpBB, running on Project Zero&amp;#8217;s PHP runtime implemented in Java is quite impressive. But as I dug deeper, I came across a blog post from just a few days ago. SugarCRM is also running on Project Zero. That&amp;#8217;s huge!!&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/16cards?a=HIcK1i9NlKw:z1APGPY6w3c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/16cards?a=HIcK1i9NlKw:z1APGPY6w3c:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?i=HIcK1i9NlKw:z1APGPY6w3c:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/16cards/~4/HIcK1i9NlKw" height="1" width="1"/&gt;</content><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://16cards.com/2008/03/31/phpbb-on-project-zero/</feedburner:origLink></entry><entry><title type="html">Idempotent</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/16cards/~3/qnKTMkDKinI/" /><category term="Tumble" /><author><name>brandon</name><uri>http://16cards.com</uri></author><updated>2008-01-15T04:40:56-08:00</updated><id>http://16cards.dreamhosters.com/2008/01/15/idempotent/</id><summary type="html">UPDATE: It seems Network Solutions has turned off their search &amp;#8220;feature&amp;#8221; where they register the domain you just searched.
Here is a fun little experiment&amp;#8230;

Do a search for a random domain on GoDaddy.com. I chose networksolutionsactuallyregisterseverydomainsearched.com. If the domain has been taken, think of another one.
Then go to Network Solutions and do the search on the [...]</summary><content type="html" xml:base="http://16cards.com/2008/01/15/idempotent/">&lt;p&gt;UPDATE: It seems Network Solutions has turned off their search &amp;#8220;feature&amp;#8221; where they register the domain you just searched.&lt;/p&gt;
&lt;p&gt;&lt;del datetime="2008-01-15T12:38:00+00:00"&gt;Here is a fun little experiment&amp;#8230;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Do a search for a random domain on &lt;a href="http://godaddy.com"&gt;GoDaddy.com&lt;/a&gt;. I chose &lt;code&gt;networksolutionsactuallyregisterseverydomainsearched.com&lt;/code&gt;. If the domain has been taken, think of another one.&lt;/li&gt;
&lt;li&gt;Then go to &lt;a href="http://www.networksolutions.com/index.jsp"&gt;Network Solutions&lt;/a&gt; and do the search on the same domain. Note that the domain is still available.&lt;/li&gt;
&lt;li&gt;Now go back to GoDaddy.com and search one more time.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hmmm. Seems Network Solutions searches are not &lt;a href="http://en.wikipedia.org/wiki/Idempotent"&gt;idempotent&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;/del&gt;&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/16cards?a=qnKTMkDKinI:Ver3DvWxbLo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/16cards?a=qnKTMkDKinI:Ver3DvWxbLo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?i=qnKTMkDKinI:Ver3DvWxbLo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/16cards/~4/qnKTMkDKinI" height="1" width="1"/&gt;</content><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><feedburner:origLink>http://16cards.com/2008/01/15/idempotent/</feedburner:origLink></entry><entry><title type="html">concocting slang</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/16cards/~3/bxRP3SF17mk/" /><category term="Tumble" /><author><name>brandon</name><uri>http://16cards.com</uri></author><updated>2009-05-05T17:05:20-07:00</updated><id>http://16cards.com/2008/01/08/concocting-slang/</id><summary type="html">
tuba
The greatest instrument known to man 


And I&amp;#8217;m sure Tuba News would agree.
Which reminds me. If you haven&amp;#8217;t checked out the Google Chart API, you must. That project is the tuba. With the recent ChartMaker available, it reminds me where SaaS is going.
</summary><content type="html" xml:base="http://16cards.com/2008/01/08/concocting-slang/">&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;&lt;a href="http://www.urbandictionary.com/define.php?term=tuba&amp;amp;defid=1032623#1032623"&gt;tuba&lt;/a&gt;&lt;/strong&gt;
&lt;dd&gt;The greatest instrument known to man &lt;/dd&gt;
&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;And I&amp;#8217;m sure &lt;a href="http://www.tubanews.com/index.php"&gt;Tuba News&lt;/a&gt; would agree.&lt;/p&gt;
&lt;p&gt;Which reminds me. If you haven&amp;#8217;t checked out the &lt;a href="http://code.google.com/apis/chart/"&gt;Google Chart API&lt;/a&gt;, you must. That project is the tuba. With the recent &lt;a href="http://google-code-updates.blogspot.com/2008/01/chartmaker-tool-for-google-chart-api.html"&gt;ChartMaker&lt;/a&gt; available, it reminds me where SaaS is going.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/16cards?a=bxRP3SF17mk:lQBu8BKAkaE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/16cards?a=bxRP3SF17mk:lQBu8BKAkaE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?i=bxRP3SF17mk:lQBu8BKAkaE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/16cards/~4/bxRP3SF17mk" height="1" width="1"/&gt;</content><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://16cards.com/2008/01/08/concocting-slang/</feedburner:origLink></entry><entry><title type="html">Misunderstanding REST, part 2</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/16cards/~3/mPVsYGHv5aY/" /><category term="Enterprise Web 2.0" /><author><name>brandon</name><uri>http://16cards.com</uri></author><updated>2007-12-17T05:12:43-08:00</updated><id>http://16cards.com/2007/12/17/misunderstanding-rest-part-2/</id><summary type="html">From Amazon SimpleDB homepage:
GET, PUT or DELETE items in your domain

Sounds RESTful? It isn&amp;#8217;t. In fact, when Amazon&amp;#8217;s SimpleDB went public on Friday, December 12, 2007, the opening paragraphs on its homepage claimed it &amp;#34;RESTfulness&amp;#34;. Now, after community backlash, the homepage seems to be mysteriously lacking such a claim and you must dig deeper into [...]</summary><content type="html" xml:base="http://16cards.com/2007/12/17/misunderstanding-rest-part-2/">&lt;p&gt;From &lt;a href="http://www.amazon.com/gp/browse.html?node=342335011"&gt;Amazon SimpleDB homepage&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;GET, PUT or DELETE &lt;i&gt;items&lt;/i&gt; in your domain&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sounds RESTful? &lt;a href="http://www.dehora.net/journal/2007/12/16/amazon-simpledb-non-rest-api/"&gt;It isn&amp;#8217;t&lt;/a&gt;. In fact, when Amazon&amp;#8217;s SimpleDB went public on Friday, December 12, 2007, the opening paragraphs on its homepage claimed it &amp;quot;RESTfulness&amp;quot;. Now, after community backlash, the homepage seems to be mysteriously lacking such a claim and you must dig &lt;a href="http://docs.amazonwebservices.com/AmazonSimpleDB/2007-11-07/DeveloperGuide/?"&gt;deeper into documentation&lt;/a&gt; to uncover such &lt;a href="http://bitworking.org/news/277/SimpleDB-is-GETSful"&gt;fallacies&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Amazon SimpleDB REST calls are made using HTTP GET requests. The Action query parameter provides the method called and the URI specifies the target of the call. Additional call parameters are specified as HTTP query parameters. The response is an XML document that conforms to a schema.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Some time ago I reviewed, what I believe, to be the &lt;a href="http://16cards.com/2006/08/17/misunderstanding-rest/"&gt;major misunderstandings about RESTful principles&lt;/a&gt;. I categorized three different &amp;quot;interpretations&amp;quot; of REST:&lt;/p&gt;
&lt;blockquote&gt;&lt;ol&gt;
&lt;li&gt;(Unicorn) REST describes those pure implementations that the fanboys aspire to (think Atom Publishing Protocol). These are only slightly more common than unicorns but more and more &amp;#8220;true&amp;#8221; REST implementations are appearing. &lt;/li&gt;
&lt;li&gt;(Anything HTTP that is not SOAP) REST is an umbrella labeling implementations that are riding the REST hype but have never read Fielding&amp;#8217;s dissertation. These are more appropriately called HTTP-POX. &lt;/li&gt;
&lt;li&gt;(Somewhere in between) REST &lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;Amazon clearly interprets REST as category #2.&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f736941b-dce4-4dbe-9c93-367ba4935fbd" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/simpledb%20rest%20amazon" rel="tag"&gt;simpledb rest amazon&lt;/a&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/16cards?a=mPVsYGHv5aY:LF1H-2d-qls:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/16cards?a=mPVsYGHv5aY:LF1H-2d-qls:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?i=mPVsYGHv5aY:LF1H-2d-qls:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/16cards/~4/mPVsYGHv5aY" height="1" width="1"/&gt;</content><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://16cards.com/2007/12/17/misunderstanding-rest-part-2/</feedburner:origLink></entry><entry><title type="html">Five Things</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/16cards/~3/Bj1VK8OfBKk/" /><category term="Uncategorized" /><author><name>brandon</name><uri>http://16cards.com</uri></author><updated>2007-10-02T17:36:56-07:00</updated><id>http://16cards.com/2007/09/27/five-things/</id><summary type="html">I was tagged by Joe Gregorio. A very long time ago. At the time my motive was to stop the viral madness. But, in sweeping out my drafts folder, I figured why not post the five things without &amp;#8216;tagging&amp;#8217; anyone else:

I lived in Durban, South Africa from 1997 to 1999 serving a mission for my [...]</summary><content type="html" xml:base="http://16cards.com/2007/09/27/five-things/">&lt;p&gt;I was &lt;a href="http://bitworking.org/news/Five_Things"&gt;tagged&lt;/a&gt; by Joe Gregorio. A very long time ago. At the time my motive was to stop the viral madness. But, in sweeping out my drafts folder, I figured why not post the five things without &amp;#8216;tagging&amp;#8217; anyone else:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I lived in &lt;a href="http://maps.google.com/maps/ms?ie=UTF8&amp;amp;hl=en&amp;amp;msa=0&amp;amp;ll=-29.276816,30.440369&amp;amp;spn=1.741687,2.900391&amp;amp;t=h&amp;amp;z=9&amp;amp;om=1&amp;amp;msid=117621609987943563644.00043afa1d37fbe490c80"&gt;Durban, South Africa&lt;/a&gt; from 1997 to 1999 serving a mission for my &lt;a href="http://www.lds.org"&gt;church&lt;/a&gt;. I&amp;#8217;m saddened that many of the life-long friendships I made there have already ended in the 8 years since due to the AIDS crisis in South Africa. It really is a tragedy.&lt;/li&gt;
&lt;li&gt;I have the most amazing wife and mother of my two children of 3 years and 9 months.&lt;/li&gt;
&lt;li&gt;I lack the confidence that many exhibit in this industry. This explains why many of my thoughts never get to this blog. I just need to write confidently.&lt;/li&gt;
&lt;li&gt;I like being the center of attention on my own terms. For example, I can be annoyingly outgoing in one setting only to appear extremely shy in another.&lt;/li&gt;
&lt;li&gt;I played bass guitar in &lt;a href="http://www.last.fm/music/Before+Braille"&gt;Before Braille&lt;/a&gt;, a now &lt;a href="http://www.beforebraille.com"&gt;defunct rock band&lt;/a&gt;. Toured our little hearts out but couldn&amp;#8217;t make a dent in the music industry. We opened for &lt;a href="http://www.jimmyeatworld.com/"&gt;Jimmy Eat World&lt;/a&gt;, the Used, and the Format, among others. It was a lot of fun and, if anything, touring months on end taught me that I wanted the married life. &lt;/li&gt;
&lt;/ol&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/16cards?a=Bj1VK8OfBKk:JtkN3I1etsI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/16cards?a=Bj1VK8OfBKk:JtkN3I1etsI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?i=Bj1VK8OfBKk:JtkN3I1etsI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/16cards/~4/Bj1VK8OfBKk" height="1" width="1"/&gt;</content><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://16cards.com/2007/09/27/five-things/</feedburner:origLink></entry><entry><title type="html">Entities are not resources</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/16cards/~3/fC1r68dS60g/" /><category term="Tumble" /><author><name>brandon</name><uri>http://16cards.com</uri></author><updated>2007-09-27T10:14:06-07:00</updated><id>http://16cards.com/2007/09/27/entities-are-not-resources/</id><summary type="html">I&amp;#8217;ve been thinking about data access a lot lately from two fronts:

Distributed&amp;#8211;in particular HTTP, siding primarily with standardizing on the Atom Publishing Protocol as the default implementation of REST 
In-process&amp;#8211;in particular Java

As a result of my pondering, I believe there are two larger classifications of applications in the real world:

Entity-oriented applications define a clear set [...]</summary><content type="html" xml:base="http://16cards.com/2007/09/27/entities-are-not-resources/">&lt;p&gt;I&amp;#8217;ve been thinking about data access a lot lately from two fronts:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Distributed&amp;#8211;in particular HTTP, siding primarily with standardizing on the Atom Publishing Protocol as the default implementation of REST &lt;/li&gt;
&lt;li&gt;In-process&amp;#8211;in particular Java&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As a result of my pondering, I believe there are two larger classifications of applications in the real world:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Entity-oriented applications define a clear set of entities for the application and use them for all operations. &lt;/li&gt;
&lt;li&gt;Data-oriented applications split up code in one logic layer and one data access layer. However, the data access layer manipulates the tables directly, not always passing through an entire entity representation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In my opinion, the data-oriented method is the way people actually code their applications. Recently, I&amp;#8217;ve spent time on a mailing list trying to teach the principles of REST, a highly arguable topic because it means different things to different people. To some, it means anything HTTP that isn&amp;#8217;t SOAP. To others, it is an architectural style, HTTP the way it was designed.&lt;/p&gt;
&lt;p&gt;I side with the later.&lt;/p&gt;
&lt;p&gt;So, in thinking about distributed data access in context of the discussions on this mailing list, I&amp;#8217;ve come to realize that people are cramming their traditional, in-process data access mindset into HTTP. Its not their fault, they&amp;#8217;ve been conditioned that way because of API creators.&lt;/p&gt;
&lt;p&gt;As an example, consider the typical scenario below:&lt;/p&gt;
&lt;p&gt;You have &lt;strong&gt;customer&lt;/strong&gt; and &lt;strong&gt;order&lt;/strong&gt; tables and need to display in a grid each customer and the total number of orders.&lt;/p&gt;
&lt;p&gt;In entity-oriented applications, there are two primitives: entity (or resource in REST) and lists of entities. Here, the developer codes to simply load all the customers. Then, in each customer entity, a link points to list of order entities.&lt;/p&gt;
&lt;p&gt;In data-oriented applications, most of the time, you will have a query in your access layer such as &amp;quot;SELECT c.name, count(o) FROM customer c INNER JOIN order o ON c.id = o.customer_id GROUP BY c.name&amp;quot;. The result of this query can not be mapped to an entity. If you want to use the result, you will need to one of the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bind the ResultSet to managable grid of sorts &lt;/li&gt;
&lt;li&gt;Load the ResultSet into some disconnected structure for later usage
&lt;ul&gt;
&lt;li&gt;DataSet &lt;/li&gt;
&lt;li&gt;XML &lt;/li&gt;
&lt;li&gt;other structure&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both solutions can lead to clean, well-defined applications. It all depends on your needs.&lt;/p&gt;
&lt;p&gt;In the data-oriented application, it is often hard to know what are the data structures that are passed across tiers because they may vary by implementation. For instance, Array for a single column select, XML for complex results, DataSet, custom classes (Hibernate, JPA).&lt;/p&gt;
&lt;p&gt;However, in entity-oriented appications, other problems may appear: performance, partial entity loading, complex database structure, etc.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/16cards?a=fC1r68dS60g:u9CPiymp9hg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/16cards?a=fC1r68dS60g:u9CPiymp9hg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?i=fC1r68dS60g:u9CPiymp9hg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/16cards/~4/fC1r68dS60g" height="1" width="1"/&gt;</content><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://16cards.com/2007/09/27/entities-are-not-resources/</feedburner:origLink></entry><entry><title type="html">User-driven, Pre-emptive APIs</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/16cards/~3/fNTP2ZczSuU/" /><category term="Tumble" /><author><name>brandon</name><uri>http://16cards.com</uri></author><updated>2007-09-25T10:46:14-07:00</updated><id>http://16cards.com/2007/09/25/user-driven-pre-emptive-apis/</id><summary type="html">Aneel makes an argument for &amp;#34;tools vs. methods&amp;#34;. To summarize, should tools enforce the methodology or methodology the tool.

Tools need to move when we do. And they need to be made to be moved by us. But, not in a vacuum. The idea of user-driven innovation should be built into professional tools. In organizations where [...]</summary><content type="html" xml:base="http://16cards.com/2007/09/25/user-driven-pre-emptive-apis/">&lt;p&gt;Aneel makes an argument for &amp;quot;tools vs. methods&amp;quot;. To summarize, should tools enforce the methodology or methodology the tool.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Tools need to move when we do. And they need to be made to be moved by us. But, not in a vacuum. The idea of user-driven innovation should be built into professional tools. In organizations where policy and methodology comes down from on high, when a method-enforcing tool is modified by an end-user (hi!), the bigwigs should go: &amp;#x201C;huh, Bob is doing this differently.. wonder if he&amp;#x2019;s onto something?&amp;#x201D;. Then someone should go find out if he is. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Source: &lt;a href="http://joga.be/2006/12/05/tools-vs-methods/"&gt;tools vs. methods&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;IBM Rational has the concept of patterns built into the tool. Internally, IBM has contests (accompanied with decent rewards) for developing patterns for Rational.&lt;/p&gt;
&lt;p&gt;The same argument can be made for APIs in general. Can APIs be designed in such a flexible way that when a use case changes, so can the result when the API is invoked? &lt;em&gt;Can we ship with n patterns and best practices but leave the API wide open for anybody to plug in their own functionality?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;You bet we can. And then, falling back on Aneel&amp;#8217;s argument, once the bigwigs see that users are creating patterns, perhaps include it into the API as convenience methods.&lt;/p&gt;
&lt;h3&gt;Pluggable Data API&lt;/h3&gt;
&lt;p&gt;For instance, I&amp;#8217;m working on a data access API that wraps JDBC access and ships with &lt;a href="http://en.wikipedia.org/wiki/PureQuery"&gt;&lt;strong&gt;&lt;em&gt;IBM&amp;#8217;s pureQuery&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;. The main goals of the API is to enable &lt;strong&gt;clearer persistence code&lt;/strong&gt; by using code to describe what is being done instead of how it is being done. Second, drastically &lt;strong&gt;reduce the boilerplate code&lt;/strong&gt; associated with JDBC. Third, &lt;strong&gt;use collections and beans&lt;/strong&gt; rather than ResultSet. Fourth, &lt;strong&gt;do not be a full-featured object relational mapper&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s look at some of the methods available. The variable &amp;quot;data&amp;quot; in these examples are an instance of the &amp;quot;Data&amp;quot; interface, which defines these methods, and assumes it has been constructor injected with a DataSource.&lt;/p&gt;
&lt;p&gt;First, you can get a Map out of a table row:&lt;/p&gt;
&lt;pre&gt;Map&amp;lt;String,Object&amp;gt; brian = data.queryFirst(&amp;quot;SELECT * FROM person WHERE person.name=?&amp;quot;, &amp;quot;Brian&amp;quot;);&lt;/pre&gt;
&lt;p&gt;If you want to get at many rows:&lt;/p&gt;
&lt;pre&gt;List&amp;lt;Map&amp;lt;String,Object&amp;gt;&amp;gt; people = data.queryList(&amp;quot;SELECT * FROM person WHERE person.name LIKE ?&amp;quot;, &amp;quot;Br%&amp;quot;);&lt;/pre&gt;
&lt;p&gt;Second, you can get a POJO bean out of a table row:&lt;/p&gt;
&lt;pre&gt;Person brian = data.queryFirst(&amp;quot;SELECT * FROM person WHERE person.name=?&amp;quot;, Person.class, &amp;quot;Brian&amp;quot;);&lt;/pre&gt;
&lt;p&gt;Likewise, beans as from many rows:&lt;/p&gt;
&lt;pre&gt;List&amp;lt;Person&amp;gt; people = data.queryList(&amp;quot;SELECT * FROM person&amp;quot;, Person.class);&lt;/pre&gt;
&lt;p&gt;But what if you want to get a the result(s) of a single column, say from an aggregate function, for instance, you could retrieve a String by:&lt;/p&gt;
&lt;pre&gt;String name = data.queryFirst(&amp;quot;SELECT name FROM person WHERE person.name=?&amp;quot;, new ScalarRowFactory&amp;lt;String&amp;gt;(String.class),&amp;quot;Brandon&amp;quot;);&lt;/pre&gt;
&lt;p&gt;What&amp;#8217;s with the &amp;quot;ScalarFowFactory&amp;quot;, you ask? Well, I&amp;#8217;m glad you did. This is the pluggable part, where user-driven extendibility makes all the difference. It would be naive to think that an API could be created that would meet all needs for all people. In fact, I often tell my collegues I work with &lt;strong&gt;&lt;em&gt;&amp;quot;If you try to create for all, you provide value for none&amp;quot;.&lt;/em&gt;&lt;/strong&gt; That&amp;#8217;s worth repeating&amp;#8230;&lt;/p&gt;
&lt;h3&gt;&lt;font color="#666666"&gt;If you try to create for all, you provide for none.&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;This is the problem with JEE. It tries to boil the ocean and be the end all framework. Then we get lighter weight contenders like Spring and Co. Granted, with 1.4, we see reactive APIs for those uncomfortable with the heavyweight requirement imposed by JEE. Others see an easier method and create APIs to meet the need. Now JEE is adapting.&lt;/p&gt;
&lt;p&gt;So this is all about creating &lt;strong&gt;&lt;em&gt;pre-emptive APIs&lt;/em&gt;&lt;/strong&gt;. What is a pre-emptive API? It is an API that &lt;strong&gt;&lt;em&gt;leaves open doors for developers to customize&lt;/em&gt;&lt;/strong&gt; the programming experience. Yes, and that means allowing them to shoot themselves in the foot, too. Sure, we can provide convenience methods on top in the API itself, but it should not play a Microsoft and have special privileges that the user-driven portion does not.&lt;/p&gt;
&lt;p&gt;Would JEE be different had it been built with a pre-emptive APIs?&lt;/p&gt;
&lt;p&gt;So, in the above example, the Map and bean examples simply drive through the same methods that the String example did. They are simply helper methods.&lt;/p&gt;
&lt;p&gt;The API, however, is wide open. Methods can be of type queryFirst, queryList, queryIterator, or just plain query. queryFirst deals with one result. queryList deals with a collection of results and pre-processes results. queryIterator is like queryList but provides a lazy retrival of results on demand in user code and is more efficient in some situations.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/16cards?a=fNTP2ZczSuU:gUC_1cSv4NY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/16cards?a=fNTP2ZczSuU:gUC_1cSv4NY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?i=fNTP2ZczSuU:gUC_1cSv4NY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/16cards/~4/fNTP2ZczSuU" height="1" width="1"/&gt;</content><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://16cards.com/2007/09/25/user-driven-pre-emptive-apis/</feedburner:origLink></entry><entry><title type="html">Dumbledore Gets It, Why Doesn&amp;#8217;t Data?</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/16cards/~3/TnP5ooyi-LA/" /><category term="Tumble" /><author><name>brandon</name><uri>http://16cards.com</uri></author><updated>2007-09-25T08:39:39-07:00</updated><id>http://16cards.com/2007/09/25/dumbledore-gets-it-why-doesnt-data/</id><summary type="html">I&amp;#8217;m a big fan of Google Docs. One of my favorite features is &amp;#34;Revisions&amp;#34;: when a file is saved, an immutable state or versioned is saved and can be recalled. With a simple drop down box, I can restore a previous version.
Later, I&amp;#8217;m talking with my brother-in-law about upcoming features of Mac OS X 10.5. [...]</summary><content type="html" xml:base="http://16cards.com/2007/09/25/dumbledore-gets-it-why-doesnt-data/">&lt;p&gt;I&amp;#8217;m a big fan of &lt;a href="https://docs.google.com/"&gt;Google Docs&lt;/a&gt;. One of my favorite features is &amp;quot;Revisions&amp;quot;: when a file is saved, an immutable state or versioned is saved and can be recalled. With a simple drop down box, I can restore a previous version.&lt;/p&gt;
&lt;p&gt;Later, I&amp;#8217;m talking with my brother-in-law about upcoming features of Mac OS X 10.5. And we spend a good deal of time postulating how &lt;a href="http://www.apple.com/macosx/leopard/features/timemachine.html"&gt;Time Machine&lt;/a&gt; will change the world. (If you haven&amp;#8217;t checked out the UI twist on a fairly standard storage backup infrastructure.&lt;/p&gt;
&lt;p&gt;The other night, I finished Harry Potter and the Deathly Hallows. (Loved it, by the way). In this final chapter of Harry&amp;#8217;s tragic teenage angst, Harry brings us with him in to &lt;a href="http://harrypotter.wikia.com/wiki/Pensieve"&gt;the Pensieve&lt;/a&gt; just as he did in previous books to learn of critical plot details by &amp;#8216;experiencing&amp;#8217; firsthand other people&amp;#8217;s memories. A proxied flashback, if you will.&lt;/p&gt;
&lt;p&gt;And then it hits me.&lt;/p&gt;
&lt;p&gt;Why isn&amp;#8217;t all data modeled to be versioned? This universe we live in has one constant, we are on a linear timeline. (Yeah, yeah. Relativistic effects. But as far as I know, science has yet to coerce time to reverse, much less stand still.) Versions, memories, immutable state, what have you. We experience life as a series of observations. Conjuring a &amp;#8216;view&amp;#8217; of those observations is a &amp;#8216;memory&amp;#8217;. It seems so entwined with our very nature that it seems like major oversight that all data is not versioned.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/16cards?a=TnP5ooyi-LA:X1pFc-q_Jg8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/16cards?a=TnP5ooyi-LA:X1pFc-q_Jg8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/16cards?i=TnP5ooyi-LA:X1pFc-q_Jg8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/16cards/~4/TnP5ooyi-LA" height="1" width="1"/&gt;</content><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><feedburner:origLink>http://16cards.com/2007/09/25/dumbledore-gets-it-why-doesnt-data/</feedburner:origLink></entry></feed>
