<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2412539259025916215</id><updated>2011-12-29T16:13:31.124-08:00</updated><title type='text'>Nerd Pod</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>77</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-9005233737947900577</id><published>2011-09-28T12:21:00.000-07:00</published><updated>2011-09-28T12:44:43.172-07:00</updated><title type='text'>Getting Started with HL7v3</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-3LnZYhOIuhI/ToN1jRk9b1I/AAAAAAAAAYU/Gk7fzD1Q9zQ/s1600/hl7-humor.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-3LnZYhOIuhI/ToN1jRk9b1I/AAAAAAAAAYU/Gk7fzD1Q9zQ/s1600/hl7-humor.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Someone asked me how to get started learning HL7v3 and I thought, hmmm...&lt;br /&gt;&lt;br /&gt;I went looking for a simple definition, and the best I could find was from&amp;nbsp;&lt;a href="http://www.pcmag.com/encyclopedia_term/0,2542,t=HL7&amp;amp;i=44294,00.asp"&gt;PC Magazine&lt;/a&gt;:&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: Verdana,Arial,Helvetica,sans; font-size: 13px;"&gt;(&lt;b&gt;H&lt;/b&gt;ealth&amp;nbsp;&lt;b&gt;L&lt;/b&gt;evel&amp;nbsp;&lt;b&gt;7&lt;/b&gt;) ANSI-accredited standards for electronically defining clinical and administrative data in the healthcare&amp;nbsp;industry from Health Level Seven International (www.hl7.org). HL7 provides standards for messaging, electronic records, decision&amp;nbsp;support&amp;nbsp;queries, medicine labels and the visual integration of data from different applications.&lt;br /&gt;&lt;br /&gt;The "7" in the name comes from&amp;nbsp;application&amp;nbsp;layer 7 in the OSI model, which is the highest level where programs talk to each other. HL7 does not deal with the lower levels of the OSI model, which are the transport and&amp;nbsp;network&amp;nbsp;protocols.&lt;/span&gt;&lt;/blockquote&gt;Okay, so where to start.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;RIM&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Reference Information Model. You can represent anything with this, all the basic building blocks organized by structure but not use case. It is typically implemented in XML, and can therefore be represented by an XML schema, or by a set of interfaces in an OO programming language.&lt;br /&gt;&lt;br /&gt;The RIM can be thought of as the data and workflow model. The HL7 Standards Blog did a good brief description of this, and I would recommend reading their blog post, &lt;a href="http://www.hl7standards.com/blog/2011/05/31/hl7-v3-rim-is-it-really-that-intimidating/"&gt;HL7 V3 RIM: Is it Really That Intimidating? &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The RIM consists of actors, actions, relationships, roles, and entities. Everything happening in the course of care is an Act, and each Act may have any number of Participations, Roles, and Relationships between Entities. For another overview, see the HL7 Australia page on &lt;a href="http://www.hl7.org.au/HL7-V3-Resources.htm"&gt;HL7 V3 Resources&lt;/a&gt;. Obviously this is as generalizable as possible, so to do useful things it is necessary to constrain the model in different ways, which leads us to the Clinical Document Architecture (CDA).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;CDA&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;The standard for representing clinical documents using the all-purpose RIM. The Clinical Document Architecture ... the actual data structures we use in representing health information. Where the RIM represents structures, CDA organizes those structures into use cases.&amp;nbsp;CDA R1 is finalized. R2 is not done yet. At least, the standard isn't finalized and is subject to change.&lt;br /&gt;&lt;br /&gt;There are many standards documents within the CDA model, but they can be divided in two categories. There are the building blocks which define document components, and there are the documents themselves, which aggregate the components into complete clinical documents. &lt;br /&gt;&lt;br /&gt;Two commonly used building blocks are C83 sections, and C80 code sets. Most clinical documents can be thought of as collections of C83 sections, with data encoded as prescribed by the corresponding C80 specification.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At the 2009 Connect Seminar, a simple diagram of the CDA standard relationships was given as part of a presentation. The full presentation may be downloaded from &lt;cite&gt;&lt;a href="http://www.connectopensource.org/"&gt;www.connectopensource.org&lt;/a&gt; (&lt;a href="http://www.connectopensource.org/sites/connectopensource.osuosl.org/files/CONNECT_ContentPayload.ppt"&gt;PowerPoint&lt;/a&gt;):&lt;/cite&gt; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-P1Fmc04ZOjM/ToNwk28ZKqI/AAAAAAAAAYQ/a4n1HMnwE2s/s1600/cda-tree.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="187" src="http://3.bp.blogspot.com/-P1Fmc04ZOjM/ToNwk28ZKqI/AAAAAAAAAYQ/a4n1HMnwE2s/s400/cda-tree.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;You can see the different types of documents&lt;br /&gt;&lt;ul&gt;&lt;li&gt;C28 - Emergency Care Summary&lt;/li&gt;&lt;li&gt;C32 - Summary Documents using HL7 Continuity of Care Document (CCD)&lt;/li&gt;&lt;li&gt;C38 - Patient Level Quality Data Document&lt;/li&gt;&lt;li&gt;C48 - Encounter Document&lt;/li&gt;&lt;li&gt;C78 - Immunization Document&lt;/li&gt;&lt;li&gt;C84 - Consult and History &amp;amp; Physical Note&lt;/li&gt;&lt;/ul&gt;These documents are all defined in terms of which C83 components they contain.&lt;br /&gt;&lt;br /&gt;There are many more types of documents, covering a wide range of use cases. A full list of the CDA document standards can be found on the &lt;a href="http://www.hitsp.org/"&gt;HITSP Site&lt;/a&gt;. You can also see my earlier blog post about &lt;a href="http://nerdpod.blogspot.com/2011/04/on-demand-ccds-continuity-of-care.html"&gt;how CCDs are built&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Really, that's all you need to get started. Learn the RIM, choose the HITSP CDA documents applicable to your use case, and study the C83 sections and C80 codes needed. Then you're ready to get to work. Happy coding!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-9005233737947900577?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/9005233737947900577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=9005233737947900577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/9005233737947900577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/9005233737947900577'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2011/09/getting-started-with-hl7v3.html' title='Getting Started with HL7v3'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-3LnZYhOIuhI/ToN1jRk9b1I/AAAAAAAAAYU/Gk7fzD1Q9zQ/s72-c/hl7-humor.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-3595065356966219512</id><published>2011-07-22T09:46:00.000-07:00</published><updated>2011-07-22T09:49:01.871-07:00</updated><title type='text'>Java 7 Launch Event</title><content type='html'>Java 7 is scheduled to be GA this summer. A video of the official announcement can be found here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/us/corporate/events/java7/index.html"&gt;http://www.oracle.com/us/corporate/events/java7/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A summary of Java 7 features (my rough notes from the talk):&lt;br /&gt;&lt;br /&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;JSR 292 - invokedynamic - the davinci machine&lt;/span&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;more languages on jvm, new bytecode, dynamic languages&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;Project Coin JSR 334&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;small changes, syntactic sugar, String in switch, constructor generic inference, multi-catch, try with resources to properly close all resources&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;Concurrency and collections updates JSR 166y&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;lightweight fork/join framework&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;network and file system JSR 203&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;zip and jar archives&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;enhanced JMX agent and mbeans from jrockit&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;security: elliptic curve cryptography, TLS 1.2, DEP&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;unicode 6.0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;Windows Server 2008 support&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;JDK7 to be released July 28&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="border-collapse: separate; color: rgb(0, 0, 0);  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-family:Tahoma;font-size:medium;"  &gt;JDK8 to include jigsaw, closures late 2012 - possible  JSON serialization&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-3595065356966219512?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/3595065356966219512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=3595065356966219512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/3595065356966219512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/3595065356966219512'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2011/07/java-7-launch-event.html' title='Java 7 Launch Event'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-1664810267240505435</id><published>2011-06-27T21:05:00.000-07:00</published><updated>2011-07-01T08:19:37.252-07:00</updated><title type='text'>Yet Another Google Health Memorial Blog</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;h1&gt;Me Too! Me Too!&lt;/h1&gt;&lt;/div&gt;&lt;div&gt;I wanted to wait at least a few days to let everyone else pile on Google Health before I threw in my two cents from the peanut gallery. Of course there has been plenty of I told you so, should have listened, and here's where we went wrong, all rightfully so. If you want to hear that, buy me a drink sometime. Right now I don't want to repeat what's already been said, except for what deserves to be repeated: I will trust my doctor and primary care facility to store my medical records, and no one else. That is the only way it will work. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, let me add this: Google Health was too generic. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h1&gt;Specialization is Your Friend&lt;/h1&gt;&lt;/div&gt;&lt;div&gt;The comparison has been made between "tethered" and "untethered" PHRs. It would seem logical that providers want to keep patients - more treatment means more revenue - and that makes people tend to build patient portals which drive patients into their own institutions (and profit centers) and not to their competitors. I don't look at it this way. I think each provider facility is so specialized that they look at a general-purpose PHR and think, "This isn't exactly what my patients need." If it's not exactly what the patient needs, it's useless, possibly harmful. Even among the few large makers of traditional EHR systems, every single installation is different and highly customized. Why wouldn't patient systems be just as specialized?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Every hospital has its specialties, its centers of excellence, and a patient population more or less centered around what it does well. Let's say, for example, a referral hospital specializes in transplants. They are in the best position to design a PHR-type system with the features that transplant patients need, and transplant patients will flock there for treatment with or without a PHR. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Say another hospital treats a lot of cystic fibrosis patients. They, too, have an idea of a different set of features that will serve their patient population best, and if they are very good, it is entirely possible that nearly every cystic fibrosis patient in the country will have an account on their patient portal. One only needs to look at primary care facilities such as Kaiser, the VA, and Palo Alto Medical Foundation to see the first hints of how this can work.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you start out by defining your patient population as "everyone," how are you going to even think about what features are needed most? Most common denominator? Most efficacious numerator? It's a recipe for stasis and mediocrity. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Precisely what problem were they trying to solve? It's easier from an engineering standpoint to define the problem in terms of data. After all, Google's stock and trade as a company is moving and analyzing data in large amounts, so naturally they tackled the health record head-on by building a nearly exact replica of a standard patient summary document and not much else.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What we have here is not a health record problem, it's a health visualization problem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h1&gt;Physician, Heal Thy Computer&lt;/h1&gt;&lt;/div&gt;&lt;div&gt;It's going to be up to the clinicians to figure out what patients need, and can use, from web technology. If you are a physician and have a great idea, you will have no trouble finding talented engineers to build it for you. Even if you have a lousy idea - like Google Health proved to be - you can see there's no shortage of talent, dedication, and know-how to make it happen. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What we need is something that lets clinicians with good ideas implement them, on their own EHR systems, in small pieces. Up to this point, if you wanted something as simple as a glucose monitoring chart for your diabetes patients, it took a lot of work just to build infrastructure around getting the data from its various sources and loading it into a web application. What if you could devote 90% of development time to data visualization, instead of data plumbing? Then we can let a thousand flowers bloom.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What if, eventually, patient records could aggregate from diverse sources into your system, making your patient portal a place to store, view, and analyze a &lt;i&gt;personal health record&lt;/i&gt; for as long as you have patient consent to keep it within your facility? What if the PHR was an entity of pure data, and followed the patient from system to system? As long as you have a primary care facility, would you even need a Google Health? &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Engineering is a marvelous and noble profession, but clinicians are coming from the more important - and complicated - side of the equation. I've been programming since I was 12 years old and the most difficult, complicated, incomprehensible system I've ever come across is health care, only to hear a respected, practicing physician look at computer diagrams and say, "I don't know that technical stuff." Yes you do. Healthcare is all technical stuff. Anyone who can understand medicine enough to practice it, can go on to say, "I know what these particular patients need from a medical record." That's who will be driving the technology forward. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Google Health is dead. The PHR is just getting started.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-1664810267240505435?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/1664810267240505435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=1664810267240505435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1664810267240505435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1664810267240505435'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2011/06/yet-another-google-health-memorial-blog.html' title='Yet Another Google Health Memorial Blog'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-1157046905865436593</id><published>2011-06-24T21:12:00.000-07:00</published><updated>2011-06-24T21:50:25.253-07:00</updated><title type='text'>Hey @fitbit ur doin it rong</title><content type='html'>That new fitbit device looks pretty nifty. It even has "social." You can connect with your friends, and it keeps a leader board for you all to watch. The past week, the past month, that's the game. I don't see a lot of action there. I'd rather have some good casual games, small enough to fit in a game with friends one afternoon.&lt;br /&gt;&lt;br /&gt;For example, take the famous 24 Hours of LeMans race, where drivers race on a track for exactly 24 hours, at which point whoever completed the most laps wins. You can do the same thing with a pedometer, and you can use any time period: a day, an afternoon, a week - as long as somebody gets to say, "Ready, set... Go!" When the time is up, whoever has been most active wins. After all, being active is what fitbit measures.&lt;br /&gt;&lt;br /&gt;Can everyone play? Even couch potatoes?&lt;br /&gt;&lt;br /&gt;Yes, if you do a good job handicapping the races, like you would in the game of golf. For example, I walk a lot -- 45 minutes to and from work every day, plus to the store and everywhere else. I drive maybe once a week. My friend leads a rather more sedentary lifestyle, to put it mildly. How can we compete against each other? The game could analyze our past fitbit records and use that level to assign a handicap for each player. I don't play golf but I think that's how it works.&lt;br /&gt;&lt;br /&gt;This will make real competitions possible, regardless of lifestyle or current fitness level. How would you feel knowing you could beat your marathon-running buddy in a fitbit race?&lt;br /&gt;&lt;br /&gt;That's it, casual competition with friends, each of us playing to our own level of health. If fitbit can do that, I'll buy one just because my friends are doing it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-1157046905865436593?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/1157046905865436593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=1157046905865436593' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1157046905865436593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1157046905865436593'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2011/06/hey-fitbit-ur-doin-it-rong.html' title='Hey @fitbit ur doin it rong'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-1078785829486040969</id><published>2011-04-19T22:04:00.001-07:00</published><updated>2011-06-24T21:32:58.658-07:00</updated><title type='text'>Google Data.gov - How Hard is That?</title><content type='html'>&lt;div&gt;&lt;i&gt;Never before in human history has democracy had the tools available, where ordinary voters can so easily examine the workings of government in such detail. We are seeing the first few steps in a larger change in the fundamental way this information is managed.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.google.com/publicdata/home"&gt;Google Public Data Explorer&lt;/a&gt; launched February, 2011.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Tax day has come and gone and my dear old Uncle Sam and I have settled our accounts for another year. Everyone has an Uncle Sam, a nice old guy who doesn't manage his money so well so I help him out once in a while, just to, you know, make ends meet. You can't say no to Uncle Sam, with his white beard and stove pipe hat.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I don't know politics but I do know the Internet, which is full of crazy political rants. If you want to lose faith in humanity, just go to the Internet, find people who identify with a political party, and read what they writes about the other. Good times.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But hey, real issues, real money. What do I know?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What do I know just changed dramatically. Imagine if every dollar spent in the government, every receipt, every outlay, were recorded and place at my fingertips. What if I could chart all the government expenditures and revenues using any level of detail or axis of measure I choose?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can get a taste of this with Google Public Data Viewer. It lets you mouse over the data, select, and change the perspective or data sets as fast as you want. The tools are here and only getting better. The only barrier now is getting everything concerning public policy into these data sets. In some ways, the process has been managed with all the bureaucratic efficiency one would expect, but what has been done is now rightfully mine to peruse and inform my vote. It's the citizens' data really, the taxpayers paid for it, and we own it. Let's take a look.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I decided to start with the phrase often heard lately: "We don't have a revenue problem, we have a spending problem." I bet if I can chart the various government expenditures, I'd agree with that. You can find the &lt;a href="http://www.google.com/publicdata/overview?ds=z6tggkh2adod2s_"&gt;Federal Finances Dataset&lt;/a&gt; in the Google public data explorer &lt;a href="http://www.google.com/publicdata/directory"&gt;Dataset Directory&lt;/a&gt;. I started with something simple: net outlays by year.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/-eWf5ttmFZZM/Ta5qA5RDlZI/AAAAAAAAAJQ/b7Sr6670E-c/s1600/Screen%2Bshot%2B2011-04-19%2Bat%2B9.41.04%2BPM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 232px;" src="http://3.bp.blogspot.com/-eWf5ttmFZZM/Ta5qA5RDlZI/AAAAAAAAAJQ/b7Sr6670E-c/s400/Screen%2Bshot%2B2011-04-19%2Bat%2B9.41.04%2BPM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5597527950473008530" /&gt;&lt;/a&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/-eWf5ttmFZZM/Ta5qA5RDlZI/AAAAAAAAAJQ/b7Sr6670E-c/s1600/Screen%2Bshot%2B2011-04-19%2Bat%2B9.41.04%2BPM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;Yikes! It sure does look like we have a spending problem!. I also noticed how social security follows a relatively smooth upward curve, while the others have more little ups and downs. Everything's going up, except the few things everybody talks about cutting: science, education, agriculture, and energy - those programs behave the way I like my own budget, with a set price that doesn't go up every year.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now what happens to those numbers if we compared them to the size of our economy? After all, we have more people, bigger cities, more jets, more of everything. So in terms of taking a percentage of our collective wages, what does our government look like?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-CNCDs0dBZz4/Ta5p7F6fOLI/AAAAAAAAAJI/DJ5b5DF2pdI/s1600/Screen%2Bshot%2B2011-04-19%2Bat%2B9.41.29%2BPM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 235px;" src="http://4.bp.blogspot.com/-CNCDs0dBZz4/Ta5p7F6fOLI/AAAAAAAAAJI/DJ5b5DF2pdI/s400/Screen%2Bshot%2B2011-04-19%2Bat%2B9.41.29%2BPM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5597527850788796594" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-CNCDs0dBZz4/Ta5p7F6fOLI/AAAAAAAAAJI/DJ5b5DF2pdI/s1600/Screen%2Bshot%2B2011-04-19%2Bat%2B9.41.29%2BPM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;Everything changes. Social Security isn't up nearly as much as I thought, the smaller programs are actually down, and the only thing that's really going up is health care. Maybe it is urgent, after all, maybe we should look at reform, as opposed to the plan I like to call repeal-and-replace-maybe-later-if-we-get-around-to-it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Other than health care, really, the only spending problem we have is that we have to spend less and less every year. That's not how most people people like to manage their household finances, is it? &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, how about those taxes? If we can prove we have a spending problem, we can conversely prove that we do not have a revenue problem, simply by charting the taxes with a few clicks of the mouse.&lt;/div&gt;&lt;div&gt;&lt;img src="http://2.bp.blogspot.com/-yrlqYEppOIU/Ta-6Q3dNuQI/AAAAAAAAAJY/qRnFOmo1CDc/s400/Screen%2Bshot%2B2011-04-20%2Bat%2B10.01.14%2BPM.png" style="cursor:pointer; cursor:hand;width: 400px; height: 233px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5597897660771973378" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-uH35MXRbjaM/Ta5pc9fcZsI/AAAAAAAAAJA/vAm5nkiG1Xw/s1600/Screen%2Bshot%2B2011-04-19%2Bat%2B9.48.09%2BPM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;There's the revenue, and in terms of how big a piece of our pie it's around 20 percent, maybe less. I notice income tax - both personal and corporate - rise and fall relative to the state of the economy, while social security and the others (not shown here) have kept relatively steady. The peak revenue overall was 20% in 2000, which coincides with the peak budget surplus.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-ThlxP_bhbjg/Ta5pWntfU3I/AAAAAAAAAI4/7QQBRy_Qo5Y/s1600/Screen%2Bshot%2B2011-04-19%2Bat%2B9.59.13%2BPM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 233px;" src="http://2.bp.blogspot.com/-ThlxP_bhbjg/Ta5pWntfU3I/AAAAAAAAAI4/7QQBRy_Qo5Y/s400/Screen%2Bshot%2B2011-04-19%2Bat%2B9.59.13%2BPM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5597527224205923186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The point is, if I'm going to look at these issues and form opinions, let alone vote and try to convince others to vote with me, I better to do it with data. Whatever conclusions I ultimately reach, I'm going to know more with it than without it. That's probably the best I can do. Twitizen @abuaardvark once tweeted, "Sometimes I feel like the entire Internet is an exercise in documenting confirmation bias theory," or, as noted Wrongologist Kathryn Shulz points out, being wrong about something doesn't actually feel bad. It's only realizing you're wrong that feels bad.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;!--copy and paste--&gt;&lt;object width="446" height="326"&gt;&lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;param name="bgColor" value="#ffffff"&gt; &lt;param name="flashvars" value="vu=http://video.ted.com/talk/stream/2011/Blank/KathrynSchulz_2011-320k.mp4&amp;amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/KathrynSchulz-2011.embed_thumbnail.jpg&amp;amp;vw=432&amp;amp;vh=240&amp;amp;ap=0&amp;amp;ti=1126&amp;amp;lang=eng&amp;amp;introDuration=15330&amp;amp;adDuration=4000&amp;amp;postAdDuration=830&amp;amp;adKeys=talk=kathryn_schulz_on_being_wrong;year=2011;theme=how_the_mind_works;theme=new_on_ted_com;theme=master_storytellers;theme=a_taste_of_ted2011;event=A+Taste+of+TED2011;tag=Culture;tag=failure;&amp;amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;"&gt;&lt;embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgcolor="#ffffff" width="446" height="326" allowfullscreen="true" allowscriptaccess="always" flashvars="vu=http://video.ted.com/talk/stream/2011/Blank/KathrynSchulz_2011-320k.mp4&amp;amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/KathrynSchulz-2011.embed_thumbnail.jpg&amp;amp;vw=432&amp;amp;vh=240&amp;amp;ap=0&amp;amp;ti=1126&amp;amp;lang=eng&amp;amp;introDuration=15330&amp;amp;adDuration=4000&amp;amp;postAdDuration=830&amp;amp;adKeys=talk=kathryn_schulz_on_being_wrong;year=2011;theme=how_the_mind_works;theme=new_on_ted_com;theme=master_storytellers;theme=a_taste_of_ted2011;event=A+Taste+of+TED2011;tag=Culture;tag=failure;"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-1078785829486040969?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/1078785829486040969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=1078785829486040969' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1078785829486040969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1078785829486040969'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2011/04/datagov-how-hard-is-that.html' title='Google Data.gov - How Hard is That?'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-eWf5ttmFZZM/Ta5qA5RDlZI/AAAAAAAAAJQ/b7Sr6670E-c/s72-c/Screen%2Bshot%2B2011-04-19%2Bat%2B9.41.04%2BPM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-4558115034952826386</id><published>2011-04-13T20:31:00.000-07:00</published><updated>2011-04-14T16:12:34.412-07:00</updated><title type='text'>Health Information System as Data Conduit</title><content type='html'>&lt;div&gt;A health information exchange is a device that moves medical information from one authorized entity to another. Ultimately, these "authorized entities" are people who need to examine medical records, but an authorized entity may also refer to a device, for example a computer you use to manipulate and work with medical records. Anything that holds a copy for a period of time falls under this category and must therefore follow the rules. Secure transmission is essentially a solved problem, and may be treated in a separate data transmission layer. While consent and authorization rules may get complicated, at any given time an entity may or may not have authorization to view a piece of medical information. When you request protected health information (PHI) it is delivered from a repository to you, across a network. While you are working with the PHI, you keep a copy in your sphere of control. The data exists in its secure repositories, and in your immediate control, and nowhere in between.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anywhere PHI may be stored and used must be secure. Yes, it's great to have all that important information zipping around everywhere, but first, do no harm. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is a diagram of the basic information flow.&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-KN0ZOLYRhrc/TaZr3Uy6-eI/AAAAAAAAAIw/J6loD9qD-5Y/s1600/Screen%2Bshot%2B2011-04-13%2Bat%2B8.36.05%2BPM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 365px;" src="http://4.bp.blogspot.com/-KN0ZOLYRhrc/TaZr3Uy6-eI/AAAAAAAAAIw/J6loD9qD-5Y/s400/Screen%2Bshot%2B2011-04-13%2Bat%2B8.36.05%2BPM.png" alt="" id="BLOGGER_PHOTO_ID_5595278185273686498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;When you want to work with a patient's medical record, you request a copy from a repository (maybe more than one) and it is delivered from the repository to you without leaving a trace anywhere in between. No copies, no caching, nothing. When you're done, all that PHI disappears completely from you local system, leaving only those copies stored in secure repositories within the health care system.&lt;/p&gt;&lt;p&gt;A health care professional (provider) is authorized to view a particular piece of PHI for a period of time. When a device or person becomes "de-authorized" to view a record, for example when a provider "logs out," then that PHI should be gone, leaving nothing of itself anywhere in the system. If a patient changes providers, then the consent rules change accordingly. Most commonly, consent is given for a finite period of time and will expire unless explicitly renewed. (This medical record will self-destruct on July 13, 2011.) PHI always exists in the secure repository and the patient, that is to say the person whose medical record it is (the "owner" of that medical record), is permanently authorized to handle the PHI and give or take away consent.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;An ideal medical record, therefore, knows who is and isn’t authorized to see it at any given time, and is kind enough to politely decline to be transmitted or remove itself from an unauthorized system.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-4558115034952826386?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/4558115034952826386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=4558115034952826386' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/4558115034952826386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/4558115034952826386'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2011/04/health-information-system-as-data.html' title='Health Information System as Data Conduit'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-KN0ZOLYRhrc/TaZr3Uy6-eI/AAAAAAAAAIw/J6loD9qD-5Y/s72-c/Screen%2Bshot%2B2011-04-13%2Bat%2B8.36.05%2BPM.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-7901527791710028528</id><published>2011-04-07T21:11:00.000-07:00</published><updated>2011-04-08T09:41:07.824-07:00</updated><title type='text'>On Demand CCDs: Continuity of Care</title><content type='html'>&lt;style type="text/css"&gt; p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px} span.s1 {letter-spacing: 0.0px} &lt;/style&gt;   &lt;p class="p1"&gt;&lt;span class="s1"&gt;At Axolotl, we dynamically generate template based CDA documents from various data sources. &lt;/span&gt;&lt;/p&gt; &lt;p class="p2"&gt;&lt;span class="s1"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="p1"&gt;&lt;span class="s1"&gt;One commonly transmitted document is the CCD, or Continuity of Care Document.  This is a summary document, its intended purpose to have enough information, well organized, to preserve the continuity of patient care between different care providers. &lt;/span&gt;&lt;/p&gt; &lt;p class="p2"&gt;&lt;span class="s1"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="p1"&gt;&lt;span class="s1"&gt;The way I approach template-based CDA is to first look at the document as a container for health data, and construct the empty container first.&lt;/span&gt;&lt;/p&gt; &lt;p class="p2"&gt;&lt;span class="Apple-style-span" style=";font-family:Georgia,serif;font-size:16px;"  &gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-1-RZwUMVBcQ/TZ6Lm7PlKbI/AAAAAAAAAIo/w1prZKJ5OFE/s1600/CCD-outline-1.gif"&gt;&lt;img style="cursor: pointer; width: 400px; height: 293px;" src="http://1.bp.blogspot.com/-1-RZwUMVBcQ/TZ6Lm7PlKbI/AAAAAAAAAIo/w1prZKJ5OFE/s400/CCD-outline-1.gif" alt="" id="BLOGGER_PHOTO_ID_5593061288095066546" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="s1"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt; &lt;style type="text/css"&gt; p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px} span.s1 {letter-spacing: 0.0px} &lt;/style&gt;   &lt;p class="p1"&gt;&lt;span class="s1"&gt;You can see it has, first, the necessary meta-data. Source, destination, attribution, author, the time period this document covers, any confidentiality instructions, and other information about this document. &lt;/span&gt;&lt;/p&gt; &lt;p class="p2"&gt;&lt;span class="s1"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="p1"&gt;&lt;span class="s1"&gt;Then it has the patient demographics and a list of all healthcare providers involved in the care described, and all doctors who provided care during the covered period. &lt;/span&gt;&lt;/p&gt; &lt;p class="p2"&gt;&lt;span class="s1"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="p1"&gt;&lt;span class="s1"&gt;The largest part is the clinical information itself. This document is a container, and the clinical section is meant to contain a list of clinical sections. &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-_E9lNy7V2NU/TZ6LenGscGI/AAAAAAAAAIg/KSkXHGz8Yas/s1600/CCD-outline-2.gif"&gt;&lt;img style="cursor: pointer; width: 400px; height: 293px;" src="http://3.bp.blogspot.com/-_E9lNy7V2NU/TZ6LenGscGI/AAAAAAAAAIg/KSkXHGz8Yas/s400/CCD-outline-2.gif" alt="" id="BLOGGER_PHOTO_ID_5593061145250132066" border="0" /&gt;&lt;/a&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-_E9lNy7V2NU/TZ6LenGscGI/AAAAAAAAAIg/KSkXHGz8Yas/s1600/CCD-outline-2.gif"&gt;&lt;/a&gt;  &lt;style type="text/css"&gt; p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica} span.s1 {letter-spacing: 0.0px} &lt;/style&gt;   &lt;p class="p1"&gt;&lt;span class="s1"&gt;A section can be thought of as a smaller CDA entity in and of itself, and just as the document is composed of smaller pieces. It has template identifiers, a title, a human readable narrative text in an html-like format, and a number of entries. Each entry represents a single clinical event.&lt;/span&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-rrGNfhi2-1I/TZ6LIzYAyLI/AAAAAAAAAIY/-ACH0RbHbVM/s1600/CCD-outline-3.gif"&gt;&lt;img style="cursor: pointer; width: 400px; height: 293px;" src="http://4.bp.blogspot.com/-rrGNfhi2-1I/TZ6LIzYAyLI/AAAAAAAAAIY/-ACH0RbHbVM/s400/CCD-outline-3.gif" alt="" id="BLOGGER_PHOTO_ID_5593060770586871986" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-rrGNfhi2-1I/TZ6LIzYAyLI/AAAAAAAAAIY/-ACH0RbHbVM/s1600/CCD-outline-3.gif"&gt;&lt;/a&gt;  &lt;style type="text/css"&gt; p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica} span.s1 {letter-spacing: 0.0px} &lt;/style&gt;   &lt;p class="p1"&gt;&lt;span class="s1"&gt;You can subclass the section into the different categories of clinical information, thereby putting a complete summary into a list of clinical sections.&lt;/span&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-IgZwP643k9Y/TZ6LCkpQx9I/AAAAAAAAAIQ/SB9fMPk7L6c/s1600/CCD-outline-4.gif"&gt;&lt;img style="cursor: pointer; width: 400px; height: 293px;" src="http://3.bp.blogspot.com/-IgZwP643k9Y/TZ6LCkpQx9I/AAAAAAAAAIQ/SB9fMPk7L6c/s400/CCD-outline-4.gif" alt="" id="BLOGGER_PHOTO_ID_5593060663553476562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;style type="text/css"&gt; p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px} span.s1 {letter-spacing: 0.0px} &lt;/style&gt;   &lt;p class="p1"&gt;&lt;span class="s1"&gt;The entries, themselves, have a wide variety of forms, so we subclass them into different types of entries for the various sections, support entries for the support section, insurance plan entries for the payers section, allergy entries for the alerts section, and so on.&lt;/span&gt;&lt;/p&gt; &lt;p class="p2"&gt;&lt;span class="s1"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="p1"&gt;&lt;span class="s1"&gt;If you need to build a CCD, or any template-based CDA document, that’s an approach to think about. &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-7901527791710028528?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/7901527791710028528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=7901527791710028528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/7901527791710028528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/7901527791710028528'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2011/04/on-demand-ccds-continuity-of-care.html' title='On Demand CCDs: Continuity of Care'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-1-RZwUMVBcQ/TZ6Lm7PlKbI/AAAAAAAAAIo/w1prZKJ5OFE/s72-c/CCD-outline-1.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-817056119635453451</id><published>2011-02-26T16:09:00.000-08:00</published><updated>2011-06-24T21:45:19.310-07:00</updated><title type='text'>1998</title><content type='html'>&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, Arial, default; font-size: 13px; line-height: 17px; "&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 15px; white-space: pre-wrap; "&gt;The following story is true, if somewhat apocryphal.&lt;br /&gt;&lt;br /&gt;In 1998, with a whirlwind of buzz and activity swirling around outside, my life was buried in programming. Day and night, all hours, building exciting new things that never existed before. To see the newfound power of the web used in real businesses, watching the web grow exponentially. New discoveries, new inventions, seemed to come by the hour. Hacking, hacking, hacking. My whole life I had a love of programming, and it felt like this was my moment. It was pure magic.&lt;br /&gt;&lt;br /&gt;Which is not to say it was all work. Once in a while I might find a glass of wine next to my computer. I take a sip of wine and go back to work. Hack, hack, hack, it's all coming together, all the connections, the logical structure. Another sip of wine. Hack, hack the structure became a little less logical, recursion became loopy and I was getting tipsy. I stop. I look at the wine, I look at the computer, then I look up. It's 5pm on a Friday and the weekend has begun. I turn off the computer, pick up my glass of wine and step outside.&lt;br /&gt;&lt;br /&gt;Our office was situated in one of those quaint downtown main streets that exist up and down the peninsula. We had a store front converted to hipster office space, and on a typical Friday after work, we could just move some chairs and tables outside for an impromptu cafe, with wine and cheese, talking about the future of the web, or maybe hearing an old war story from the ARPAnet days.&lt;br /&gt;&lt;br /&gt;My neighbors, Bill and Christine, had a starship bridge in their home. We would gather to watch Star Trek on the view screen and maybe play around with Bill’s battlebot. Some evenings we would attend a meeting of the recently-formed Web Guild, and some nights, we would find out about a big dot-com launch party that everybody was crashing.&lt;br /&gt;&lt;br /&gt;I don’t remember the company, and I’m not sure if I knew at the time. but It was a free party with a live band south of Market and that’s all we needed to know. It wasn’t an open bar - none of that irresponsibly excessive burn rate wasting investors' money here! No, we each got two drink tickets at the door and the rest was cash. The band was playing, the place was thumping. Jello Biafra - of Dead Kennedys fame - jumped up on stage to join the band for a song. In his hand he had a large roll of those drink tickets, which he unspooled out into the crowd. I must have had a strip of tickets ten feet long, which I hung on my shoulders like a bandoleer. I walked up the the prettiest girl I saw and said, “Wow, the market hasn’t been this good since 1928! Can I buy you a drink?”&lt;br /&gt;&lt;br /&gt;And that’s what it was really like in 1998. Or was it '99? Hard to tell, sometimes. Hard to tell.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 15px; white-space: pre-wrap; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-817056119635453451?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/817056119635453451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=817056119635453451' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/817056119635453451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/817056119635453451'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2011/02/1998.html' title='1998'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-1719369184012738230</id><published>2011-02-19T16:20:00.000-08:00</published><updated>2011-02-19T16:58:10.335-08:00</updated><title type='text'>Visualizing Open Health Data with Fusion Tables</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-nFVJE6UZUOw/TWBmtVc5anI/AAAAAAAAAII/kR7DysVmGuc/s1600/Screen%2Bshot%2B2011-02-19%2Bat%2B4.55.23%2BPM.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 302px;" src="http://1.bp.blogspot.com/-nFVJE6UZUOw/TWBmtVc5anI/AAAAAAAAAII/kR7DysVmGuc/s400/Screen%2Bshot%2B2011-02-19%2Bat%2B4.55.23%2BPM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5575569267723168370" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;This post will describe a simple way to take health data, as curated in my last blog post, and visualize it using Fusion Tables (a Google Labs product). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A more sophisticated visiualization may be done with Fusion Tables and the Google Maps API, as detailed in the &lt;a href="http://code.google.com/apis/fusiontables/docs/developers_guide.html#Geo"&gt;API Developer's Guide, Geo Section&lt;/a&gt;, but for this simple example we will create some maps by hand.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We start with the spreadsheet of CHSI data, by loading into Fusion Tables. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-EH52aNhMV5s/TWBgJx-9wsI/AAAAAAAAAIA/xMBUSxS65Ek/s1600/fusion-spreadsheet.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 201px;" src="http://3.bp.blogspot.com/-EH52aNhMV5s/TWBgJx-9wsI/AAAAAAAAAIA/xMBUSxS65Ek/s400/fusion-spreadsheet.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5575562059837194946" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-EH52aNhMV5s/TWBgJx-9wsI/AAAAAAAAAIA/xMBUSxS65Ek/s1600/fusion-spreadsheet.png"&gt;&lt;/a&gt;We then select the Visualize-&gt;Intensity Map option from the menu.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-6DhPrfBpcx8/TWBfeFOfmgI/AAAAAAAAAH4/5UvLlcm6WPI/s1600/fusion-visualize.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 229px;" src="http://2.bp.blogspot.com/-6DhPrfBpcx8/TWBfeFOfmgI/AAAAAAAAAH4/5UvLlcm6WPI/s400/fusion-visualize.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5575561309088356866" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-6DhPrfBpcx8/TWBfeFOfmgI/AAAAAAAAAH4/5UvLlcm6WPI/s1600/fusion-visualize.png"&gt;&lt;/a&gt;First, we are going to create heat maps of the various health status indicators. For example, average life expectancy, or ALE averaged by state produces a state-by-state map where states with the longer average life expectancy appears darker in color.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-pz0-ulPbV1c/TWBfdj_kbHI/AAAAAAAAAHw/2n7R3ougiUg/s1600/fusion-aggregate.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 253px;" src="http://1.bp.blogspot.com/-pz0-ulPbV1c/TWBfdj_kbHI/AAAAAAAAAHw/2n7R3ougiUg/s400/fusion-aggregate.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5575561300167388274" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-pz0-ulPbV1c/TWBfdj_kbHI/AAAAAAAAAHw/2n7R3ougiUg/s1600/fusion-aggregate.png"&gt;&lt;/a&gt;The way this works is fairly simple. Fusion Tables simply averages the county data by state and translates the result to a number. It scales the numbers by color, as we see below. In this example there is no data for Washington State so it appears completely white.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-H13w5-7ptIM/TWBfdssWz2I/AAAAAAAAAHo/2EUS7CDgi04/s1600/fusion-map.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 303px;" src="http://3.bp.blogspot.com/-H13w5-7ptIM/TWBfdssWz2I/AAAAAAAAAHo/2EUS7CDgi04/s400/fusion-map.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5575561302502723426" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Next, we can create a scatter chart comparing two variables. &lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-H13w5-7ptIM/TWBfdssWz2I/AAAAAAAAAHo/2EUS7CDgi04/s1600/fusion-map.png"&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-IO7CcM6tJeU/TWBfdZPq7gI/AAAAAAAAAHg/cMVdoerDpX4/s1600/fusion-scatter.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 227px;" src="http://2.bp.blogspot.com/-IO7CcM6tJeU/TWBfdZPq7gI/AAAAAAAAAHg/cMVdoerDpX4/s400/fusion-scatter.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5575561297282133506" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-IO7CcM6tJeU/TWBfdZPq7gI/AAAAAAAAAHg/cMVdoerDpX4/s1600/fusion-scatter.png"&gt;&lt;/a&gt;In this chart, we compare the average life expectancy on the Y-axis to the annual number of unhealthy days (by air quality) on the X-axis. As one might expect, areas of higher pollution have lower life expectancy.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-CtyC2it2ZAI/TWBfdAtxRsI/AAAAAAAAAHY/GZz6S2k4_fs/s1600/fusion-scatter-graph.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 306px;" src="http://4.bp.blogspot.com/-CtyC2it2ZAI/TWBfdAtxRsI/AAAAAAAAAHY/GZz6S2k4_fs/s400/fusion-scatter-graph.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5575561290697492162" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;This is just a quick and simple visualization of open data. Later we will go more in depth and refine our visualizations to extract useful and actionable information.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-1719369184012738230?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/1719369184012738230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=1719369184012738230' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1719369184012738230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1719369184012738230'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2011/02/visualizing-open-health-data-with.html' title='Visualizing Open Health Data with Fusion Tables'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-nFVJE6UZUOw/TWBmtVc5anI/AAAAAAAAAII/kR7DysVmGuc/s72-c/Screen%2Bshot%2B2011-02-19%2Bat%2B4.55.23%2BPM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-4291054127435292223</id><published>2011-02-10T20:13:00.001-08:00</published><updated>2011-02-19T15:10:55.996-08:00</updated><title type='text'>Curating Open Health Data with Google Refine</title><content type='html'>&lt;div&gt;In a &lt;a href="http://nerdpod.blogspot.com/2011/02/open-and-linked-data.html"&gt;previous post&lt;/a&gt;, I briefly discussed the meaning and implications of open, linked data. Today I will discuss some work I did at a &lt;a href="http://health2challenge.org/code-a-thon/san-francisco-bay-area/"&gt;recent Health 2.0 Hackathon&lt;/a&gt; with a particular data set.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;The Tools&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;CHSI&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;I decided to start with the &lt;a href="http://www.communityhealth.hhs.gov/"&gt;Community Health Status Indicators&lt;/a&gt; from HHS. I was familiar with this data set, having written a brief &lt;a href="http://h4h.healthtap.com/pages/45155?"&gt;developer's guide&lt;/a&gt; for the first Health 2.0 Hackathon last fall. This is from &lt;a href="http://www.hhs.gov/open/"&gt;HealthData.gov&lt;/a&gt;, part the government's ongoing "open government" initiative under President Obama and national CTO Aneesh Chopra.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;Freebase&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;a href="http://www.freebase.com/"&gt;Freebase&lt;/a&gt; is an open semantic web database. This is the "linked data" part of our exercise. An explanation of what linked data is can be found at &lt;a href="http://linkeddata.org/"&gt;LinkedData.org&lt;/a&gt; and we won't deal with it in depth except to make connections between the open data released by HHS and real world data in the semantic web.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;Google Refine&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;a href="http://code.google.com/p/google-refine/"&gt;Google Refine&lt;/a&gt; (formerly GridWorks) is a tool for curating, reducing, and linking data using Freebase. Using Google Refine we can take an ordinary spreadsheet, correlate it with semantic data sets in Freebase, and create sets of triples for import into Freebase itself. For this exercise, I created a "base" or&lt;/span&gt;domain of data in Freebase called &lt;a href="http://www.freebase.com/view/base/chsibase"&gt;CHSI&lt;/a&gt;. However, for the first session the challenge of translating tabular data into triples is one that could not be addressed in the time allotted.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;The Process&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;The first step is to take a set of data in CSV format and import it into Google Refine as a new project. &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://2.bp.blogspot.com/-PfyOgG9KF2c/TWBCgOAjTjI/AAAAAAAAAGw/tWF41T3i-sE/s400/new-project.png" style="cursor:pointer; cursor:hand;width: 400px; height: 255px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5575529459968331314" /&gt;&lt;div&gt;This is easy enough and produces a spreadsheet in the familiar fashion.&lt;br /&gt;&lt;img src="http://2.bp.blogspot.com/-ei8ZNbSnPIg/TWBCgZd2U6I/AAAAAAAAAG4/hpdEN1CGAXk/s400/refine-spreadsheet.png" style="cursor:pointer; cursor:hand;width: 400px; height: 154px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5575529463044002722" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, creating a spreadsheet is just the first step. The real magic happens when we link data in this spreadsheet to semantic data in Freebase. The act of linking data to the real world is called reification, and in Freebase this is done through the "reconcile" function. By clicking on the menu (arrow) icon on a column header, we see a number of menu options, one of which is "Start reconciling..."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://3.bp.blogspot.com/-rul6Bu209uo/TWBCgVev57I/AAAAAAAAAHA/8vJIMBKx3kw/s400/reconcile-state.png" style="cursor:pointer; cursor:hand;width: 385px; height: 358px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5575529461974034354" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first thing to reconcile is the state. This is easy for Freebase to reason through, as state names are unique and easily recognized. After reconciling, we see each state name is now hyperlinked. We can follow the hyperlink to the Freebase entry for that state.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next, we want to reconcile counties. The CHSI data is arranged by county, so we can get a fine-grained view of the nation's health data geographically. To reconcile county, we go through the same process.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-zH0Ge2FY_F8/TWBCgmNO39I/AAAAAAAAAHI/LtDvMlcmYTU/s1600/reconcile-county.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 255px;" src="http://3.bp.blogspot.com/-zH0Ge2FY_F8/TWBCgmNO39I/AAAAAAAAAHI/LtDvMlcmYTU/s400/reconcile-county.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5575529466463969234" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the next illustration, you see Freebase has recognized county name, and gives you the default of US County as the semantic data type for that column. If you just reconcile on the name, you'll get a hit-or-miss on the reification, so we want to give Freebase a little more information about this data element. In this case, we can include another column as an extra hint. For our additional column we select state name and start typing in the relationship "contained by." As you start typing, Freebase auto-completes the relationship.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-zH0Ge2FY_F8/TWBCgmNO39I/AAAAAAAAAHI/LtDvMlcmYTU/s1600/reconcile-county.png"&gt;&lt;/a&gt;&lt;img src="http://1.bp.blogspot.com/-kEn0VcyejzI/TWBCg8bHiGI/AAAAAAAAAHQ/vHGUYccl5c4/s400/reconcile-county-in-state.png" style="cursor:pointer; cursor:hand;width: 400px; height: 251px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5575529472427788386" /&gt;&lt;br /&gt;&lt;br /&gt;After going through this process, we have hyperlinks in the state and county name columns. These link directly to Freebase and are now semantically linked to their respective entities. Now we can add more columns based on data in Freebase. If you go to the Freebase entry for a county, you will see a number of data elements listed such as GDP, population, pollution levels, household income, adjoining counties, geographical features (the "contained in" relationship") and many others. All of these can be added as additional columns in your spreadsheet. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In my next post, I will discuss visualizing this data.&lt;br /&gt;&lt;br /&gt;For more information on using Google Refine, see Jeni's blog post &lt;a href="http://www.jenitennison.com/blog/node/145"&gt;Using Freebase Gridworks to Create Linked Data&lt;/a&gt;.&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-4291054127435292223?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/4291054127435292223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=4291054127435292223' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/4291054127435292223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/4291054127435292223'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2011/02/curating-open-health-data-with-google.html' title='Curating Open Health Data with Google Refine'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-PfyOgG9KF2c/TWBCgOAjTjI/AAAAAAAAAGw/tWF41T3i-sE/s72-c/new-project.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-6217506984055052352</id><published>2011-02-10T20:09:00.000-08:00</published><updated>2011-02-10T20:41:23.316-08:00</updated><title type='text'>Open and Linked Data</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_M_7azHKAR1U/TVS5IBii-kI/AAAAAAAAAFo/CzwqMKqho9g/s1600/open-data-word-cloud.jpeg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 123px;" src="http://1.bp.blogspot.com/_M_7azHKAR1U/TVS5IBii-kI/AAAAAAAAAFo/CzwqMKqho9g/s200/open-data-word-cloud.jpeg" border="0" alt="" id="BLOGGER_PHOTO_ID_5572282186467572290" /&gt;&lt;/a&gt;I confess, I love buzzwords. I find them fascinating. Their implications their history, and what makes them buzzy in the first place. Two of my current favorites are what's known as "Open Data" and "Linked Data." Two fundamentally different concepts that work together.&lt;div&gt;&lt;p class="p2"&gt;&lt;span class="s1"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p2"&gt;&lt;span class="s1"&gt;&lt;b&gt;Open Data&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p2"&gt;&lt;span class="s1"&gt;Open data means governments and other organizations are releasing data sets to the public domain, and making them accessible in various formats. The hope is that if we have enough open data, clever people will find new and useful applications for it. The old saw “Information wants to be free” applies here. Moreover, it is to everyone’s benefit that information be free. The more information we have, the better and more informed decisions we can make.&lt;/span&gt;&lt;/p&gt; &lt;p class="p2"&gt;&lt;span class="s1"&gt;&lt;b&gt;Linked Data&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p2"&gt;&lt;span class="s1"&gt;Linked data is in a literal sense the semantic web. Each data point is assigned a URI, and relationships between URIs are defined using semantic triples. For example, the County of Santa Clara in California may be represented with a URI:&lt;/span&gt;&lt;/p&gt; &lt;p class="p3"&gt;&lt;span class="s2"&gt;&lt;a href="http://www.freebase.com/view/en/santa_clara_county"&gt;http://www.freebase.com/view/en/santa_clara_county&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p2"&gt;&lt;span class="s1"&gt;The state of California:&lt;/span&gt;&lt;/p&gt; &lt;p class="p3"&gt;&lt;span class="s2"&gt;&lt;a href="http://www.freebase.com/view/en/california"&gt;http://www.freebase.com/view/en/california&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p2"&gt;&lt;span class="s1"&gt;And the country of USA:&lt;/span&gt;&lt;/p&gt; &lt;p class="p3"&gt;&lt;span class="s2"&gt;&lt;a href="http://www.freebase.com/view/en/united_states"&gt;http://www.freebase.com/view/en/united_states&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p2"&gt;&lt;span class="s1"&gt;A simple relationship “contained in” is then assigned: Santa Clara is containe&lt;/span&gt;&lt;/p&gt;&lt;p class="p2"&gt;&lt;span class="s1"&gt;d in California. California is contained in USA. Therefore, Santa Clara is contained in USA. With this very simple set of relationships, we can list all the counties in a given state, or all the counties in the country. We can add other relationships, which we shall detail later.&lt;/span&gt;&lt;/p&gt; &lt;p class="p2"&gt;&lt;span class="s1"&gt;Linked Data is an open platform. Relationships can be defined and queried without restriction.&lt;/span&gt;&lt;/p&gt; &lt;p class="p2"&gt;&lt;span class="s1"&gt;&lt;b&gt;Open Data and Government 2.0&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p2"&gt;&lt;span class="s1"&gt;When it comes to government data sets, the underlying principle is that this data belongs to the people, the citizens of each country. The broad hope is that if all the world’s governments make their public data available we can create semantic relationships and make new discoveries about how government and na&lt;/span&gt;tions function, and develop better ideas of how they can be improved, removing inefficiencies, lowering costs, and improving effectiveness of public programs. It is possible, indeed likely, that we will find other unrelated uses for open data, for example in the area of making healthy decisions.&lt;/p&gt; &lt;p class="p2"&gt;&lt;span class="s1"&gt;The UK is leading in these efforts, its program headed by Sir Tim Berners Lee. More information on the UK Open Data Project can be found here:&lt;/span&gt;&lt;/p&gt; &lt;p class="p3"&gt;&lt;span class="s2"&gt;&lt;a href="http://data.gov.uk/"&gt;http://data.gov.uk/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p2"&gt;&lt;span class="s1"&gt;In [date], the US Department of Hea&lt;/span&gt;lth and Human Services (HHS) announced [summary], making a number of data sets public with plans to release more as they become available. In particular, Medicare and Medicaid cost and outcome data is put forward, as well as a number of metrics to measure the health status of communities.&lt;/p&gt;&lt;p class="p2"&gt;&lt;span class="s1"&gt;HHS has partnered with Health 2.0 and other organizations to create the Health 2.0 Developer Challenge.&lt;/span&gt;&lt;/p&gt;&lt;p class="p2"&gt;&lt;span class="s1"&gt;http://health2challenge.org&lt;/span&gt;&lt;/p&gt;&lt;p class="p2"&gt;&lt;span class="s1"&gt;The implications of open and linked data are clear. If you are considering mov&lt;/span&gt;&lt;span class="s1"&gt;ing to another city, wouldn’t you want to know the quality of the air, water, education system, and health care? If you cou&lt;/span&gt;ld compare these factors to other locations would you possibly make a better decision on where to live, work and raise a family? And shouldn’t we all have access to this information? The data is there. It is only left to us to turn that data into information, information into knowledge, knowledge into wisdom, and wisdom into a better way of life.&lt;/p&gt;&lt;p class="p2"&gt;&lt;img src="http://2.bp.blogspot.com/_M_7azHKAR1U/TVS9aQK-mRI/AAAAAAAAAGY/1PzqKO5gvho/s400/2010-01-WCMFN_OpenData%2B%25281%2529.gif" style="cursor:pointer; cursor:hand;width: 331px; height: 400px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5572286897679407378" /&gt;&lt;/p&gt;&lt;p class="p2"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="p2"&gt;&lt;a href="http://www.blackberrycool.com/2010/05/13/open-data-the-role-of-government-in-fostering-smartphone-applications/"&gt;Open Data: The Role of Government in Fostering Smartphone Applications&lt;/a&gt;&lt;/p&gt;&lt;p class="p2"&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-6217506984055052352?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/6217506984055052352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=6217506984055052352' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/6217506984055052352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/6217506984055052352'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2011/02/open-and-linked-data.html' title='Open and Linked Data'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_M_7azHKAR1U/TVS5IBii-kI/AAAAAAAAAFo/CzwqMKqho9g/s72-c/open-data-word-cloud.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-7364128426419577879</id><published>2010-11-16T19:51:00.000-08:00</published><updated>2010-11-16T21:33:10.902-08:00</updated><title type='text'>Quick and Dirty Home Multimedia</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_M_7azHKAR1U/TONXOPYZ_mI/AAAAAAAAAFI/b_gCpBVneUk/s1600/music_mac.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 150px; height: 200px;" src="http://3.bp.blogspot.com/_M_7azHKAR1U/TONXOPYZ_mI/AAAAAAAAAFI/b_gCpBVneUk/s200/music_mac.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5540367868754525794" /&gt;&lt;/a&gt;&lt;br /&gt;I was going to call this, "How to build your own GoogleTV/AppleTV (but not as good)... for free (except for the stuff you have to buy)."&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've been thinking about this a while. A smart phone could make a great universal remote. Add a little computer to store, retrieve, find, and play your music and movies, pull in content from the outside, plug it into a nice stereo and you're set. Forget physical media. Digital copy is where it's at. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;Thinking about the "entertainment center" from basic principles, I decided to start with music, figuring it's a simpler problem to solve and a really good solution can be expanded to video. I've used Apple's own Remote app for a while, and it's good but not quite enough. I want more than just iTunes, I want Internet radio, podcasts, and anything I can fit on the hard drive and play. I figure a Mac mini is flexible and unobtrusive enough, it can all be done with software, and it has digital audio which I can feed into my home stereo (a low-power but great sounding surround sound job). That's another thing, I bought this stereo with a gazillion inputs, and now I only use one. I call that progress.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now on to the software.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://2.bp.blogspot.com/_M_7azHKAR1U/TONRbymd1_I/AAAAAAAAAE4/lLcE2ToVDsA/s200/Screen%2Bshot%2B2010-11-16%2Bat%2B7.50.58%2BPM.png" style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 165px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5540361504477272050" /&gt;&lt;/div&gt;&lt;div&gt;Just about every radio station is streaming on the web somewhere. All I needed was an easy way to point a web browser to the URLs of their streaming sources. I used Sqworl.com because it's simple, it's cloudy (I can make changes to my Sqworl pages from anywhere and use them on a little computer on the shelf which is now music central), and because it generates thumbnails of each site automatically, creating an easy push-button interface.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once I signed up for a Sqworl account, I added my favorite music links: KFOG San Francisco, WWOZ New Orleans, Pandora, etc. This is going to be the face of my remote. Not bad for a quick and dirty UI.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://1.bp.blogspot.com/_M_7azHKAR1U/TONRnhjVwSI/AAAAAAAAAFA/DNIzf84mgGk/s200/Screen%2Bshot%2B2010-11-16%2Bat%2B7.47.24%2BPM.png" style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 125px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5540361706059186466" /&gt;&lt;/div&gt;&lt;div&gt;I also needed a remote desktop, so I can configure and maintain the little music mac from my desktop computer, and besides a lot of this is trial-and-error. On a Mac this is done through VNC (Virtual Network Computing). There are a number of VNC apps, some free some not. I use Vine Viewer from TestPlant. It's $30 but has some advanced remote administration features. I like that stuff, not everyone does.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once I could operate the music mac remotely, it doesn't need a monitor, keyboard, or mouse - but I keep them handy in a nearby closet in case something goes wrong. VNC requires a server on the music mac and client on the desktop computer, where I'll be working from unless the server stops running, in which case I'll need that keyboard, mouse, and monitor.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://3.bp.blogspot.com/_M_7azHKAR1U/TONgxVfwWhI/AAAAAAAAAFY/iF8GqLICIek/s200/Screen%2Bshot%2B2010-11-16%2Bat%2B8.56.14%2BPM.png" style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 118px; height: 200px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5540378367296035346" /&gt;&lt;/div&gt;&lt;div&gt;Now for the remote. I decided to try Mobile Mouse from RPA Tech. This allows you to use your mobile phone as a wireless mouse or trackpad and click those big Sqworl buttons on the screen. That screen could be a remote desktop, say across the room or even in another room, or it could be a digital TV right there, but you do need a display. If you decide to attach a TV, you could make another Sqworl page linking to Hulu, Netflix, or whatever. If you use a remote computer, you can have it run the mouse server too. The Mobile Mouse Pro includes audio and video controls, much like your standard DVR remote, and uses the accelerometer so you can wave it in the air while chanting Hogwarts incantations if that's your thing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There's the quick and dirty - and extensible - home multimedia kit. Two client-server programs, a neat little bookmarking site, and a smart phone. Just add content.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-7364128426419577879?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/7364128426419577879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=7364128426419577879' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/7364128426419577879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/7364128426419577879'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2010/11/quick-and-dirty-home-multimedia.html' title='Quick and Dirty Home Multimedia'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_M_7azHKAR1U/TONXOPYZ_mI/AAAAAAAAAFI/b_gCpBVneUk/s72-c/music_mac.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-182578889879168971</id><published>2010-09-01T19:59:00.001-07:00</published><updated>2010-09-01T22:14:52.445-07:00</updated><title type='text'>Freebase at Google</title><content type='html'>Kirrily Robert of Freebase (and now Google) gave a presentation at this month's GTUG meeting,  describing the technology stack, queries, and data management.&lt;br /&gt;&lt;br /&gt;This is a collection of information gathered at the talk, though it is mostly just an amalgamated Twitter feed. Still, there are links to all the resources one would need to get starting programming against the Freebase platform.&lt;br /&gt;&lt;br /&gt;Freebase has been around for years and was recently acquired by Google. It uses a semantic web model of linked data with dynamic ontologies, more or less. It features a public REST API whose parameter is a structured query (which can be treated as a subset of SPARQL) and returns results in JSON format. It can also return results in RDF.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.freebase.com/"&gt;http://blog.freebase.com&lt;/a&gt;&lt;br /&gt;Twitter: @fbase&lt;br /&gt;&lt;br /&gt;one example of a site using Freebase data is &lt;a href="http://www.tippify.com/"&gt;http://www.tippify.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Metaweb Query Language MQL (pronounced like pickle) used to access Freebase data &lt;a href="http://ow.ly/2ygTN"&gt;http://ow.ly/2ygTN&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Freebase MQL Query Editor available online &lt;a href="http://www.freebase.com/app/queryeditor"&gt;http://www.freebase.com/app/queryeditor&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;best supported library is freebase-python &lt;a href="http://ow.ly/2ygZf"&gt;http://ow.ly/2ygZf&lt;/a&gt; and there are others too &lt;a href="http://ow.ly/2yh0n"&gt;http://ow.ly/2yh0n&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Online Freebase App Editor &lt;a href="http://acre.freebase.com/"&gt;http://acre.freebase.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Acre is also a server-side javascript application framework for Freebase &lt;a href="http://acre.freebase.com/"&gt;http://acre.freebase.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Freebase 102 demo application done using Acre &lt;a href="http://freebase102demo.freebaseapps.com/"&gt;http://freebase102demo.freebaseapps.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Full data dumps of every fact and assertion in Freebase are available weekly &lt;a href="http://ow.ly/2yhd8"&gt;http://ow.ly/2yhd8&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;the Freebase RDF Service &lt;a href="http://rdf.freebase.com/"&gt;http://rdf.freebase.com/&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;RABJ (pronounced like cabbage) Redundant Array of Brains in a Jar &lt;a href="http://ow.ly/2yhhE"&gt;http://ow.ly/2yhhE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Freebase Gridworks for dealing with messy tabular data and cleaning it up &lt;a href="http://ow.ly/2yhpO"&gt;http://ow.ly/2yhpO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kirrily Robert @skud runs a regular Freebase meetup in San Francisco too &lt;a href="http://www.meetup.com/sf-freebase/"&gt;http://www.meetup.com/sf-freebase/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;OpenCalais can give you freebase identifiers as part of its analysis. Some news organizations (NYTimes, UK Guardian) have built linked data APIs which can be integrated in a mash-up with Freebase or other linked data applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-182578889879168971?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/182578889879168971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=182578889879168971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/182578889879168971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/182578889879168971'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2010/09/freebase.html' title='Freebase at Google'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-8851454969449728829</id><published>2010-05-10T23:00:00.000-07:00</published><updated>2010-05-13T21:35:46.272-07:00</updated><title type='text'>No, I Did Not Write This on my iPad</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;First the Obvious&lt;/span&gt;&lt;br /&gt;Flash doesn't work, who cares. At Stanford Med we had a "No Flash" rule (much to the relief of the many underpowered older workstations). In general the web browser is no Firefox. Then again a lot of web sites aren't great either. You can turn on the browser debug and watch the Javascript errors fly by, especially the newsy sites with lots of ads. Some sites still think it's a phone and direct you to a mobile version that looks ridiculous on a 10" screen. I suspect a lot of that will improve over time. I know I can live without Flash, but the other day I heard about this roundtable discussion on the subject of the iPad starring one of my favorite technology journalists. I went to the site to watch and it said "Flash required." D'oh!&lt;br /&gt;&lt;br /&gt;The second most obvious, this is a device for content consumption, not creation. I can type upwards of 100wpm on a good day, but on this touch screen I hunt and peck. Or I hold it with both hands and try to type with my thumbs. Gestures are excellent for navigating content. To write a blog post I need a keyboard.&lt;br /&gt;&lt;br /&gt;As far as battery life, I haven't a clue. It lasts so long I forget to plug it in. I haven't put it down long enough to fully charge it, or used it long enough to fully drain it, so that should tell you something.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Less Obvious&lt;/span&gt;&lt;br /&gt;I don't believe in the "game changer" but I do believe in devices that help you make the plays. For me the real value of the iPad is technical documentation, and the first apps I looked for are document reading and annotation. Study is not a new thing, it's just easier if I can get up from my computer. The more time I spend reading these things the better. Since buying the iPad I have a much better understanding of the JBoss application server and emerging HIT standards (my employer will be happy to know).&lt;br /&gt;&lt;br /&gt;Browsing the apps, it's pretty clear the development shops haven't had a  lot of time with the iPad. Its UI capabilities are far from fully  realized, and many apps are rushed and somewhat buggy. I can hardly blame them, trying to build on a simulator in a few weeks, the actual device sight unseen. Until you hold the thing and use a good touch gesture interface, it's hard to know what it can do, or even what it should do.&lt;br /&gt;&lt;br /&gt;Another thing I noticed is that Apps which crash, tend to crash when the orientation changes. If you QA iPad apps for a living, do us all a favor and spin the thing around. A lot. See what happens to your video pointers in the middle of complex operations.&lt;br /&gt;&lt;br /&gt;The apps that are well done, are really really neat.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Apps I Like&lt;/span&gt;&lt;br /&gt;There are a few I like so far:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Zillow&lt;/span&gt;. If you want to see a demonstration of good use of the iPad UI elements, install this app. If you are building your own iPad app, study this one first. It has a full gesture map, listings you can change by touching the map, and a photo gallery in the corner. The real trick is, you can navigate in each of the screen elements independently, or together.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;NPR&lt;/span&gt; is another good example of independent but related components. Each news category has its own scrollable library. I like it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Kindle&lt;/span&gt;, no kidding. They've had more practice with this form factor than anyone. It's free, and my already-purchased kindle books moved right over.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;iAnnotate&lt;/span&gt;. I have a lot of issue with the UI, especially the navigation. Pan and zoom tend to blank the screen so often it might actually stop being annoying, except it never stops being annoying. The table of contents widget is downright unusable. There is no forward and back button, no bread crumbs. Loading documents into it is a pain. In general it desperately needs a Version 2.0. That said, it's the app I'm using most. Simply because it lets me read and annotate PDFs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;iTeleport&lt;/span&gt; is so far the most usable remote desktop app I've tried on the iPad. It works well enough to do simple things which is all I really want to do without a keyboard anyway.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;WolframAlpha&lt;/span&gt; on the iPhone is possibly the best pocket calculator ever, and I have high hopes for the iPad version. Right now, though, it's just a big iPhone app. Get it anyway.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;GoodReader&lt;/span&gt; is a decent PDF reader. Smoother pan and zoom but the iPad needs a tree element for the table of contents like Adobe Acrobat, and not that iPhone multi-menu navigator. Ick.&lt;br /&gt;&lt;br /&gt;I'm tempted to buy &lt;span style="font-style: italic;"&gt;Omnigraffle&lt;/span&gt;, and I'm sure one of these days I'll need to draw a diagram, maybe a system diagram, a workflow, high level software design, or... okay I just bought it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Pandora&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;Radio.com&lt;/span&gt; are great, but useless without multitasking. Next fall I'll be able to use them with OS 4 if the rumors are correct. Until then it's just silly to turn on the radio and not be able to do anything else.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What I Really Want&lt;/span&gt;&lt;br /&gt;The iPhone remote could do so much more on an iPad. I'm sure Apple is porting it but there's more. I want to run Internet radio, pandora, last.fm, and iTunes on my home computer and be able to change the channel without getting up from the morning paper (also on the iPad). So far there's not an app for that.&lt;br /&gt;&lt;br /&gt;Guest mode. Has anybody else asked for this? I would like to be able to lock certain applications without locking the whole thing. People come over, want to use it, whatever, especially if it's the sound system remote. Is there some reason why I can't put a passcode on email, facebook, twitter, and other personal apps? Then everyone can browse the web, check the stars, or calculate differential equations, and I don't have to worry about people reading my email.&lt;br /&gt;&lt;br /&gt;That's it. The apps are obviously 1.0, the multi-touch interface has yet to be fully exploited, and I'll probably be filing a lot of bug reports with some of these software makers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-8851454969449728829?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/8851454969449728829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=8851454969449728829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8851454969449728829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8851454969449728829'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2010/05/no-i-did-not-write-this-on-my-ipad.html' title='No, I Did Not Write This on my iPad'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-1942553445334794372</id><published>2010-02-02T20:19:00.001-08:00</published><updated>2010-02-02T20:44:04.871-08:00</updated><title type='text'>#Haiti and Disaster Response 2.0</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_M_7azHKAR1U/S2j5j180dDI/AAAAAAAAAEo/0zq4spJGX3Y/s1600-h/hermosa.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 240px; height: 178px;" src="http://2.bp.blogspot.com/_M_7azHKAR1U/S2j5j180dDI/AAAAAAAAAEo/0zq4spJGX3Y/s200/hermosa.jpg" alt="" id="BLOGGER_PHOTO_ID_5433867344595416114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;How do you process and respond to thousands of emergencies in a small area with few open roads and no hospitals? Haiti faced this problem and for once somebody had an answer.&lt;br /&gt;&lt;br /&gt;Ushahidi.com, established in 2008 to report human rights abuses and election fraud in some very dangerous parts of the world, has a system. Send a text message, report an incident. Within 24 hours, text message capability had been restored and Ushahidi had a feed of all messages, available via RSS.&lt;br /&gt;&lt;br /&gt;What I see coming out of this is a large collection of incidents, each with a location (geographic latitude and longitude), a time, and a short bit of text. The next piece is to sort. Twitter taught us about hash-tags like #britneyspears or #omg, but here someone came up with a clever system. A set of emergency tags that a computer can search and sort into a full logistics map.&lt;br /&gt;&lt;br /&gt;#need vs #have: If you need food, water, medical attention, you add #need to your message. If you have food to share you write #have.&lt;br /&gt;&lt;br /&gt;#open vs #closed: This can apply to roads, bridges, hospitals, very useful to people who have a truckload of water and need to get it somewhere.&lt;br /&gt;&lt;br /&gt;#injured, #trapped, etc: Rescue teams need to know where people need rescue and what type of tools to bring.&lt;br /&gt;&lt;br /&gt;So there we have live reports from the field from anyone with a mobile phone. Rescue teams have their map, doctors can decide where to establish field hospitals, and the trucks with supplies know where they are needed and how best to get there.&lt;br /&gt;&lt;br /&gt;Lest you dismiss this as more Web 2.0 Twitterish nonsense, know that the U.S. State Department is using this data, along with nearly every other government and NGO responding to the crisis.&lt;br /&gt;&lt;br /&gt;Sound good? It's not done yet. Crisis Commons has been holding meetings around the country with people who want to help build this. This is a several orders of magnitude improvement in large-scale emergency response, but the effort is just getting underway.&lt;br /&gt;&lt;br /&gt;Silicon Valley people are motivated and thanks to the San Andreas fault, may find themselves a future test case.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-1942553445334794372?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/1942553445334794372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=1942553445334794372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1942553445334794372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1942553445334794372'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2010/02/haiti-and-disaster-response-20.html' title='#Haiti and Disaster Response 2.0'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_M_7azHKAR1U/S2j5j180dDI/AAAAAAAAAEo/0zq4spJGX3Y/s72-c/hermosa.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-1094314604147236206</id><published>2010-01-25T21:49:00.000-08:00</published><updated>2010-03-04T19:48:17.747-08:00</updated><title type='text'>I was going to write some technical documentation, but I guess I got sidetracked</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span style="font-size:180%;"&gt;&lt;br /&gt;Melllvar and the Red Shirts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;An Unauthorized Star Trek Adventure Tale&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;“Captain, I’m picking up a distress call.” Uhuru looked up from her console, concern on her face. “It’s coming from the caves inside that planet.”&lt;br /&gt;&lt;br /&gt;Captain James Tiberius Kirk was watching the planet’s horizon on the view screen. There, he thought, an undiscovered world, even now, some, ten years, after its, discovery. He knew danger lay ahead. “We’re going to need a team of men in red shirts. Spock, Bones, come with me. We’re beaming down.”&lt;br /&gt;&lt;br /&gt;Meanwhile, thousands of miles below the planet's surface, and just below the opposite surface, countless cave tunnels twisted and turned, intersected, circled back and dead ended, as tunnels are wont to do. But in one place, they intersected. Sparkly lights twirled and sparkled as seven humanoid figures materialized into the away team. Spock, Bones, Captain Kirk, and four ensigns wearing red shirts.&lt;br /&gt;&lt;br /&gt;“We better split up.” Kirk surveyed the tunnels. “You in the red shirt, you go down that tunnel.”&lt;br /&gt;&lt;br /&gt;“Yes sir, captain!” He was new.&lt;br /&gt;&lt;br /&gt;“You, in the other red shirt, go down the next tunnel.”&lt;br /&gt;&lt;br /&gt;“Do I have to? I mean, yes sir.”&lt;br /&gt;&lt;br /&gt;The two remaining ensigns looked at each other nervously. Kirk turned to them and prepared to assign the most important mission of all.&lt;br /&gt;&lt;br /&gt;“Now listen carefully. There’s a third tunnel. Right there. You’ve received the best training Star Fleet Community College has to offer, you have matching red shirts, I think you know what to do. Spock, Bones, and I will stay here and do some tricorder stuff. Bleep bleep bloop.”&lt;br /&gt;&lt;br /&gt;Down in one of a thousand caves, dark, silent, forbidding, two flashlight beams appeared around a corner and two men, strangers to this underground world, crept forward in bright red shirts. One of them spoke.&lt;br /&gt;&lt;br /&gt;“Join Star Fleet my old man said, see the galaxy he said. What I don’t get is how --Aaaaaaaaaaaaa!!!”&lt;br /&gt;&lt;br /&gt;Silence.&lt;br /&gt;&lt;br /&gt;Splat!&lt;br /&gt;&lt;br /&gt;The ensign had disappeared. His companion spun his flashlight around, down to a three foot wide hole in the floor.&lt;br /&gt;&lt;br /&gt;“That wasn’t there a second ago!” He watched in horror as the hole slowly began to vanish. Rock materialized where the hole was, there was solid floor again. A second later solid granite began to materialize within the entire tunnel where the last remaining ensign was standing in his red shirt. The tunnel was filled, crushing him. A muffled and very short scream could be heard coming from somewhere inside the solid rock.&lt;br /&gt;&lt;br /&gt;From where Bones was standing, the screams were much louder.&lt;br /&gt;&lt;br /&gt;“Dammit Jim, we’ve lost another away team! And what’s that mysterious green glow?”&lt;br /&gt;&lt;br /&gt;A light grew from the tunnel ahead, and from within that tunnel came a glowing cloud, all cloudy and glowing.&lt;br /&gt;&lt;br /&gt;Bones turned to the Vulcan, “Well my fine green-blooded friend, what does your logic say now?”&lt;br /&gt;&lt;br /&gt;“Logically, Doctor McCoy, this is a being of pure energy.”&lt;br /&gt;&lt;br /&gt;“I am Melllvar," the energy being said in a cave-filling voice, "and I am your biggest fan!”&lt;br /&gt;&lt;br /&gt;Kirk considered for a moment before asking, “Melllvar, what do you want from us?”&lt;br /&gt;&lt;br /&gt;Melllvar’s glowing cloud-like energy field rose to the ceiling. They could see he was holding something. “I want you to read this fan script I wrote.”&lt;br /&gt;&lt;br /&gt;Spock, being wise and diplomatic and logical too said, “Oh, we don’t read scripts. You’ll have to send that to the agency.”&lt;br /&gt;&lt;br /&gt;Melllvar's green energy field glowed brighter. “I won’t!”&lt;br /&gt;&lt;br /&gt;Kirk stepped forward, “But you must. Union rules, you know. Don’t worry, it’s just a formality.”&lt;br /&gt;&lt;br /&gt;Melllvar laughed the laugh that only a being of pure energy who built caves with his mind could laugh, and the entire crew was overcome by the creepy willies, even those in orbit aboard the Star Ship Enterprise.&lt;br /&gt;&lt;br /&gt;“You fools! You don’t have to read my script, because you are already in it! Don’t you see? I am all powerful in this world which I created with my mind and I can--”&lt;br /&gt;&lt;br /&gt;“Wait hold on.”&lt;br /&gt;&lt;br /&gt;“My mom’s calling me. But I’ll be back!!!”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:180%;"&gt;The End... ?&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-1094314604147236206?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/1094314604147236206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=1094314604147236206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1094314604147236206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1094314604147236206'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2010/01/i-was-going-to-write-some-technical.html' title='I was going to write some technical documentation, but I guess I got sidetracked'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-4994340363529682485</id><published>2009-12-04T19:04:00.000-08:00</published><updated>2009-12-04T20:07:46.462-08:00</updated><title type='text'>Upgrading my IDE</title><content type='html'>Ah, upgrade time. Always interesting to see exactly what plugins and libraries I have installed and then making sure they're still installed afterwords.&lt;br /&gt;&lt;br /&gt;Eclipse plugins:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Scala&lt;/li&gt;&lt;li&gt;Groovy&lt;/li&gt;&lt;li&gt;Pydev&lt;/li&gt;&lt;li&gt;OxygenXML&lt;br /&gt;&lt;/li&gt;&lt;li&gt;GWT/GAE&lt;/li&gt;&lt;li&gt;Mylyn&lt;/li&gt;&lt;li&gt;Subversion&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Libraries:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Jena&lt;/li&gt;&lt;li&gt;Aperture&lt;br /&gt;&lt;/li&gt;&lt;li&gt;GData&lt;/li&gt;&lt;li&gt;Google Collections&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Not bad, a nice little mix I think.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-4994340363529682485?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/4994340363529682485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=4994340363529682485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/4994340363529682485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/4994340363529682485'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/12/upgrading-my-ide.html' title='Upgrading my IDE'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-8081492943263645545</id><published>2009-09-05T11:11:00.000-07:00</published><updated>2009-09-15T07:47:08.959-07:00</updated><title type='text'>I Was a Teenage Heavy Metal Nerd</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_M_7azHKAR1U/Sq1XOQ_eOqI/AAAAAAAAAEc/0AuYT-_MqX4/s1600-h/talknerdytome.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 200px;" src="http://3.bp.blogspot.com/_M_7azHKAR1U/Sq1XOQ_eOqI/AAAAAAAAAEc/0AuYT-_MqX4/s200/talknerdytome.jpg" alt="" id="BLOGGER_PHOTO_ID_5381053032368585378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The first song I ever programmed a computer to play was Black Sabbath's Iron Man. It was a TI-99/4A, and no big trick, given the reference of musical notes to frequency, the simple sound commands (and even simpler melody). Sometimes when I sit down to a big/daunting/exciting/fun software project I'll start by playing Iron Man on iTunes. Since Apple introduced the genius button, I can build a custom playlist starting with Iron Man and continuing with a pseudo-random selection my favorite old school metal bands.&lt;br /&gt;&lt;br /&gt;One summer in college I had an internship at the National Radio Astronomy Observatory in Green Bank, WV. As a side project I was helping put together a computer readout system for one of NRAO's oldest radio telescopes, which I tested by plugging my walkman directly into the instrument. For the first tests the CD was Type O Negative and that 40' telescope is now part of their high school science summer camp.&lt;br /&gt;&lt;br /&gt;Heavy metal nerds, rock on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-8081492943263645545?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/8081492943263645545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=8081492943263645545' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8081492943263645545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8081492943263645545'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/09/i-was-teenage-heavy-metal-nerd.html' title='I Was a Teenage Heavy Metal Nerd'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_M_7azHKAR1U/Sq1XOQ_eOqI/AAAAAAAAAEc/0AuYT-_MqX4/s72-c/talknerdytome.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-2975398102074566828</id><published>2009-08-23T20:23:00.000-07:00</published><updated>2009-08-23T21:35:38.026-07:00</updated><title type='text'>More and Better Links</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span style=";font-family:verdana;font-size:180%;"  &gt;Plugging In&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_M_7azHKAR1U/SpIVbOl-sPI/AAAAAAAAAEU/cldtLfZezcY/s1600-h/Picture+2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 112px;" src="http://3.bp.blogspot.com/_M_7azHKAR1U/SpIVbOl-sPI/AAAAAAAAAEU/cldtLfZezcY/s200/Picture+2.png" alt="" id="BLOGGER_PHOTO_ID_5373380862924468466" border="0" /&gt;&lt;/a&gt;I am at the moment marveling at an order of magnitude improvement in information flow. Not only volume, but also the tools to filter, route, search, organize, and share.&lt;br /&gt;&lt;br /&gt;So here's a few links of interest coming through the feeds lately.&lt;br /&gt;&lt;h4&gt;&lt;a rel="nofollow" class="taggedlink " href="http://mashable.com/2009/08/21/13-twitter-tools/"&gt;TWEET IDEAS: 13 Things to Do on Twitter Besides Tweet&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;a href="http://www.g2reports.com/issues/advisory/advisory/mark_terry/345-1.html"&gt;Personal Health Records - Who are the key PHR providers and how are they handling lab results?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Soon we will all be &lt;a rel="nofollow" class="taggedlink " href="http://e-patients.net/"&gt;e-Patients&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Me, I'm working at one of those &lt;a href="http://projecthealthdesign.typepad.com/project_health_design/2009/08/hies-are-beginning-to-link-patients-directly-to-their-own-health-data.html"&gt;HIEs beginning to link patients directly to their own health data&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;While the government attempts to &lt;a href="http://healthmgmtrx.blogspot.com/2008/10/breaking-news-congress-wants-to-create.html"&gt;pave the way for a national health information network&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So we can all have our own Personal Health Records (PHR).&lt;br /&gt;&lt;br /&gt;&lt;a rel="nofollow" class="taggedlink " href="http://healthblog.vitraag.com/"&gt;A view from inside the HealthVault — Reviving The Health Revolution&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a rel="nofollow" class="taggedlink " href="http://healthblog.vitraag.com/2009/07/understanding-vocabularies-2-healthvault-recommendations/"&gt;Understanding Vocabularies #2 – HealthVault Recommendations&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" class="taggedlink " href="http://healthblog.vitraag.com/2009/03/working-with-healthvault-xml-apis/"&gt;Working with HealthVault XML APIs — Reviving The Health Revolution&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.aperio.com/2009/08/google-health-vs-microsoft-healthvault.html"&gt;Google Health v Microsoft Healthvault&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;The whole world is interested in this:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.pbs.org/wgbh/pages/frontline/sickaroundtheworld/"&gt;Healthcare around the world, there are innovations to consider (PBS)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.slideshare.net/saschboris/digital-healthcare-participatory-healthcare"&gt;Digital Healthcare, Participatory Healthcare (Germany)&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;From Twitter, I got a report from &lt;a href="http://www.ihealthbeat.org/"&gt;iHealthBeat&lt;/a&gt; on &lt;a href="http://www.ihealthbeat.org/Articles/2009/8/20/Health-Plans-Tap-Social-Media-Tools-To-Boost-Customer-Relations.aspx"&gt;the use of Twitter in Healthcare&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.hospitalimpact.org/index.php/2009/08/19/title_13"&gt;Also, a discussion of social media in healthcare.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And that's just the past few weeks. How about a medical wiki like &lt;a rel="nofollow" class="taggedlink " href="http://www.medpedia.com/"&gt;Medpedia&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;Speaking of wikis, try the &lt;a rel="nofollow" class="taggedlink " href="http://kmbw.pbworks.com/Wiki101"&gt;Knowledge Mobilization Works Wiki / Wiki101&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Not to mention the reference manuals, I'm a JEE/SOA type guy, so...&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a rel="nofollow" class="taggedlink " href="https://jax-ws.dev.java.net/nonav/2.1/docs/UsersGuide.html"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;JAX-WS RI 2.1 FCS-- Users Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" class="taggedlink " href="http://www.ebxml.org/"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;ebXML - Enabling A Global Electronic Market&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://andyschwartz.wordpress.com/2009/07/31/whats-new-in-jsf-2/"&gt;What's New in JSF 2? From the blog of Andy Schwartz&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;That's enough for now. I expect we will all get better at managing information, channel it from many sources into the most useful format we can manage. As the tools improve so does my skill at using them.&lt;br /&gt;&lt;a href="http://andyschwartz.wordpress.com/2009/07/31/whats-new-in-jsf-2/"&gt; &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-2975398102074566828?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/2975398102074566828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=2975398102074566828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/2975398102074566828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/2975398102074566828'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/08/more-and-better-links.html' title='More and Better Links'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_M_7azHKAR1U/SpIVbOl-sPI/AAAAAAAAAEU/cldtLfZezcY/s72-c/Picture+2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-1223260398773872180</id><published>2009-08-16T13:02:00.000-07:00</published><updated>2009-08-17T07:33:50.625-07:00</updated><title type='text'>A Funny Thing Happened on Facebook</title><content type='html'>It looks like people are busy recreating their old haunts online, and the whole gang is showing up.&lt;br /&gt;&lt;br /&gt;I've been finding pages like the Dead Cafe Poet's Society dedicated to the gone-but-not-forgotten Las Vegas coffee house scene (yes such a thing did exist), and a group called Las Vegas Alternative Scene: the 1990s which is really just a collection of people who used to hang out in places like the Enigma, Cafe Copioh, Double Down Saloon, and the KUNV DJ booth. I'm looking through photos, finding old familiar faces, and clicking on them. I am literally getting in touch with people through a picture.&lt;br /&gt;&lt;br /&gt;High School? Yeah, we got 'em. Ever re-connect with people by clicking on a 4th grade class photo? In true social network style, you connect with one old friend, look through their friends and photos, and pretty soon the gang's all here.&lt;br /&gt;&lt;br /&gt;Before you know it, this will seem normal. Staying in touch will be the default, and all our friendships will last a lifetime. If it's not facebook, it will be something else, but the technology is proven to work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-1223260398773872180?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/1223260398773872180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=1223260398773872180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1223260398773872180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1223260398773872180'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/08/funny-thing-happened-on-facebook.html' title='A Funny Thing Happened on Facebook'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-7437056617320550420</id><published>2009-08-11T08:17:00.001-07:00</published><updated>2009-08-11T08:58:47.970-07:00</updated><title type='text'>What a PHR Should Never Do</title><content type='html'>What would you do if you discovered a company you never heard of &lt;a href="http://hmrx.posterous.com/google-phr-users-please-check-your-account-no"&gt;had access to your medical records&lt;/a&gt;? Well, if you were &lt;a href="http://www.siliconvalley.com/news/ci_13027427"&gt;at the Googleplex up all night coding&lt;/a&gt;, you might be furiously tweeting and calling everyone on the Google Health team you can think of saying WTF. Second, you would listen to the voice at the next laptop over saying DON'T PANIC because there has to be a good explanation.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hmrx.posterous.com/got-it-google-health-users-only-link-if-you-i"&gt;And there is, sort of.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Turns out, the system wasn't hacked, nothing was stolen, but this is still a big issue. According to HIPAA standards you must explicitly give people access to  your records for a limited amount of time. You must "opt in" to every application. There's this one application, which operates on an "opt out" basis. So you install an iPhone app, sign in to your GHealth account, and voila! Your records are linked to an affiliated web application you did not install.&lt;br /&gt;&lt;br /&gt;Bad, bad, bad.&lt;br /&gt;&lt;br /&gt;This is exactly the fear expressed when PHRs first came on the scene, and it didn't help when Google adds to their sales pitch that btw, since we're not a healthcare organization we're not really bound by HIPAA.&lt;br /&gt;&lt;br /&gt;Technically this is not a violation by GH, but they could make some simple changes to force explicit permission for any account linking. Allowing this implicint linking is just not acceptable. The good news is they are working on a fix.&lt;br /&gt;&lt;br /&gt;I have plenty of complaints about GH but... BUT... they are the ONLY PHR which has a public API to encourage and foster innovation, so I'm grateful for that. Everyone working on PHR applictions in the open-source community is grateful, and face it, PHRs are so new, we need all the crowdsourcing we can get. Upcoming FOSS applications like ChiefMedicalOfficer, Health Wave, and Patient Aware Wave demoed this past weekend are proof of the value in that.&lt;br /&gt;&lt;br /&gt;Google has been, and continues to be very responsive to the developer community. That's good news on the Don't Be Evil front.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-7437056617320550420?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/7437056617320550420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=7437056617320550420' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/7437056617320550420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/7437056617320550420'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/08/what-phr-should-never-do.html' title='What a PHR Should Never Do'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-1516143416324335225</id><published>2009-08-04T19:57:00.000-07:00</published><updated>2009-08-04T19:59:53.995-07:00</updated><title type='text'>I Am Become Cliche</title><content type='html'>I drive my Audi hatchback down the exit marked "Downtown San Jose" and a sign showing NASDAQ's current value greets me. I have a Daffy Duck kooshball for my desk and a flying spaghetti monster on my car. How did it come to this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-1516143416324335225?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/1516143416324335225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=1516143416324335225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1516143416324335225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1516143416324335225'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/08/i-am-become-cliche.html' title='I Am Become Cliche'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-1615262095979910595</id><published>2009-07-31T07:27:00.000-07:00</published><updated>2009-07-31T07:56:05.787-07:00</updated><title type='text'>Patient Identifiers as Functional Equations</title><content type='html'>Not long ago I was talking to the CIO of a major hospital - won't say which one ;) - and describing how the Brazilian national EMR uses URIs to render unnecessary the traditional names, addresses, and other identifiers which many people in the Amazon River Basin simply don't have.&lt;br /&gt;&lt;br /&gt;URI - Universal Resource Identifier.&lt;br /&gt;&lt;br /&gt;His reaction surprised me. First, that he had not heard of this, a &lt;a href="http://nerdpod.blogspot.com/2009/01/brazilian-national-emr.html"&gt;nationwide paperless medical record system&lt;/a&gt;, the largest open source project in the world, funded in part by the United Nations global health fund. I came across it through the open source Java community. Then he asked, "Why can't we have a universal identifier?"&lt;br /&gt;&lt;br /&gt;So right now I am telling you to forget about universal identifiers. Not in this country. Instead start thinking about something better:&lt;br /&gt;&lt;br /&gt;Organizational identifiers and computational inferences of equivalency.&lt;br /&gt;&lt;br /&gt;I just started studying the IHE technical framework, and I have not yet dug into the guts of the live system, but I'm already getting the feeling that this approach is more in line with how I have been thinking about things.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-1615262095979910595?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/1615262095979910595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=1615262095979910595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1615262095979910595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1615262095979910595'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/07/patient-identifiers-as-functional.html' title='Patient Identifiers as Functional Equations'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-4243775803113069893</id><published>2009-07-30T16:54:00.000-07:00</published><updated>2009-07-31T06:54:52.312-07:00</updated><title type='text'>Semantic Search Done Right</title><content type='html'>Someone gets it...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sig.ma/"&gt;http://sig.ma/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sigma, Semantic Information Mash-up, from our friends at DERI in Galway. This is a glimpse into the power of semantic search. It will not look like regular search. It will not look like Google. It will not be a simple ranking of keyword matches. It will not, in short, be one dimensional.&lt;br /&gt;&lt;br /&gt;Sematic web, the web of data, is multi-dimensional. The days of one-dimensional search ranking are drawing to a close. I don't know what the UI will ultimately look like, but when we finally get there you will search by starting with an idea, and from that idea you move in one direction or another to other related ideas. Your sources will be ranked according to relevance and reliability. You will find new, related concepts. Keyword homonyms will no longer be an issue. This is where the web is going.&lt;br /&gt;&lt;br /&gt;Tag your pages now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-4243775803113069893?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/4243775803113069893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=4243775803113069893' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/4243775803113069893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/4243775803113069893'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/07/semantic-search-done-right.html' title='Semantic Search Done Right'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-3586817970112267793</id><published>2009-07-23T18:31:00.001-07:00</published><updated>2009-12-04T20:17:12.322-08:00</updated><title type='text'>My Google Interview: Epilogue</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_M_7azHKAR1U/SmkPFd9PvBI/AAAAAAAAAD8/fPOKEqTSrIM/s1600-h/google_badge.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 106px;" src="http://4.bp.blogspot.com/_M_7azHKAR1U/SmkPFd9PvBI/AAAAAAAAAD8/fPOKEqTSrIM/s200/google_badge.jpg" alt="" id="BLOGGER_PHOTO_ID_5361833417976560658" border="0" /&gt;&lt;/a&gt;I could put this badge next to a stock ticker to show the exact moment the economy went into free-fall, dragging Google's stock price and hiring budget down with it. Do I have great timing, or what? I guess you can't be in the right place at the right time every time.&lt;br /&gt;&lt;br /&gt;A few weeks after the rejection - and my free t-shirt - I got an email from Google. It was a customer satisfaction survey! They wanted to know what I thought of the interview process, how it could be improved, etc. Did I apply for a job, or buy a home stereo? Personally I thought the whole process was great, and so were the people involved. Of the phone interview I said, "It was an efficient exchange of relevant information, exactly what I look for in a technical  interview." The interviewers got high marks from me.&lt;br /&gt;&lt;br /&gt;I never had to fill out a customer satisfaction survey after a job interview before. Sometimes I really like Google.&lt;br /&gt;&lt;br /&gt;I was talking to Kevin, who co-organizes SV-GTUG, the developer group for all things Google in Silicon Valley. He was rejected three times. Would I apply again? Probably not. I'm glad Google exists, but I'm going in a different direction now, and I am happy to be just another silicon valley software engineer. I think it's a pretty cool thing to be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-3586817970112267793?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/3586817970112267793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=3586817970112267793' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/3586817970112267793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/3586817970112267793'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/07/my-google-interview-epilogue.html' title='My Google Interview: Epilogue'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_M_7azHKAR1U/SmkPFd9PvBI/AAAAAAAAAD8/fPOKEqTSrIM/s72-c/google_badge.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-1484479445111675119</id><published>2009-07-22T23:40:00.001-07:00</published><updated>2009-07-31T12:13:22.845-07:00</updated><title type='text'>Gallery - Window on the body: CT scans become art - New Scientist</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_M_7azHKAR1U/SnNCFJ9_nlI/AAAAAAAAAEE/21NWiWh0FoE/s1600-h/what-lies-behind-our-nose1.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 175px;" src="http://1.bp.blogspot.com/_M_7azHKAR1U/SnNCFJ9_nlI/AAAAAAAAAEE/21NWiWh0FoE/s200/what-lies-behind-our-nose1.jpg" alt="" id="BLOGGER_PHOTO_ID_5364704237471112786" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.newscientist.com/gallery/dn17411-art-made-in-a-ct-scanner"&gt;Gallery - Window on the body: CT scans become art - New Scientist&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Shared via &lt;a href="http://addthis.com/"&gt;AddThis&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-1484479445111675119?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/1484479445111675119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=1484479445111675119' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1484479445111675119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1484479445111675119'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/07/gallery-window-on-body-ct-scans-become.html' title='Gallery - Window on the body: CT scans become art - New Scientist'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_M_7azHKAR1U/SnNCFJ9_nlI/AAAAAAAAAEE/21NWiWh0FoE/s72-c/what-lies-behind-our-nose1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-169153176984906091</id><published>2009-07-17T18:26:00.001-07:00</published><updated>2009-12-04T20:14:13.172-08:00</updated><title type='text'>My Google Interview, Part 2</title><content type='html'>"Everyone knows about the crazy benefits at Google," I said, "but the truth is I'm only interested in one benefit, and that's 20% time. I'll take a job as janitor if you let me spend 20% of my time working on a research and development project of my choice."&lt;br /&gt;&lt;br /&gt;So began my series of conversations with Google. I knew that would be a good selling point, but it was also true. I had some ideas and could think of no better place to develop them. Access to the resources, talent, and knowledge base within the Gooogleplex was my #1 reason for wanting to work there. All the other stuff you hear about - free food, car washes, volleyball, the purpose of that is to make it a good place to stay and code 24 hours straight.&lt;br /&gt;&lt;br /&gt;I like smart people, and I like solving computer problems, so the all-day on-site interview was very enjoyable. The HR recruiter greeted me in the lobby and asked if I'd ever been to the Googleplex before. I replied that I had actually been there the previous Tuesday. In fact I'm down there probably once or twice a month just through my involvement in the developer community.&lt;br /&gt;&lt;br /&gt;I'm not going to discuss the interview itself or say anything in violation of the NDA I signed, but let me answer the most common questions. First, I did not get a tour of the Googleplex. Through the entire day I saw the lobby, the cafeteria, and a conference room. Like I said, I'm in Building 43 often, the one with the model of Spaceship One hanging from the ceiling. I do have a funny story involving Spaceship One, the X Prize, and William Shatner that I didn't get to share, but that's my only regret there. Second, no they did not ask goofy questions. I know Google has a reputation for doing that but it wasn't the case. The questions were very good, relevant to the job, and clearly tested my knowledge and skill. Third, being grilled all day was not stressful. It was fun. At the end of the day I felt great. I got to show off and fill up whiteboards with drawings and show that I know how to solve the kinds of problems they need solved. Finally, to answer the big question and remove any remaining suspense, I did not get the job.&lt;br /&gt;&lt;br /&gt;I got a call a week and a half later and knew that was too soon to be a yes. They said it was a close decision. It's okay. I know more or less where I went wrong, I'm in good company, and I'm convinced I could get the job if I interview again. Also this was during their big stock slide and they had an unofficial hiring freeze and were laying off contractors. In any case I feel good enough getting as far as you can possibly get without actually getting an offer. It tells me they think I'm good enough to work there, and that's good enough for me.&lt;br /&gt;&lt;br /&gt;The day after the rejection I called back and said if I can't have the job can I at least have a free t-shirt.&lt;br /&gt;&lt;br /&gt;I got it.&lt;br /&gt;&lt;br /&gt;Do I know how to negotiate or what?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-169153176984906091?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/169153176984906091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=169153176984906091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/169153176984906091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/169153176984906091'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/07/my-google-interview-part-2.html' title='My Google Interview, Part 2'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-4405734278710116077</id><published>2009-07-17T07:55:00.001-07:00</published><updated>2009-07-18T22:29:12.778-07:00</updated><title type='text'>My Google Interview, Part 1</title><content type='html'>Google has a famous (infamous?) hiring process: long waits, weird questions, or so I heard. My experience was markedly different. Someone put me in touch with Google HR, I sent my CV, and I almost immediately heard back. Later that week I had my initial phone screen, which went really well. The following day she asked when I would be available for a phone interview. I gave her some inconvenient times this week, and said anytime next week. From this point onward, I was actually putting them off. I knew it was going to be a tough technical interview, and I wanted time to study.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_M_7azHKAR1U/SmCLngfT8rI/AAAAAAAAAD0/EXyI5qG7CRg/s1600-h/books.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 150px; height: 200px;" src="http://4.bp.blogspot.com/_M_7azHKAR1U/SmCLngfT8rI/AAAAAAAAAD0/EXyI5qG7CRg/s200/books.jpg" alt="" id="BLOGGER_PHOTO_ID_5359437067423314610" border="0" /&gt;&lt;/a&gt;Some of the books I studied:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Art of Computer Programming&lt;/span&gt; (Knuth), volume 1, sections 1.1-1.3, working all the exercises, for a math and algorithm refresher.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Introduction to Algorithms&lt;/span&gt;, the canonical college textbook.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Practice of Programming&lt;/span&gt; (Kernighan and Pike), an excellent book.&lt;br /&gt;&lt;br /&gt;Sun Certification guides for Java and JEE.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Design Patterns in Java&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;Core J2EE Patterns&lt;/span&gt;, and the Gang of Four book.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Effective Java&lt;/span&gt;, if you are a Java programmer and have not read this book, read it now.&lt;br /&gt;&lt;br /&gt;The "Fielding Dissertation" on the REST interface and other ACM/IEEE technical papers.&lt;br /&gt;&lt;br /&gt;...and many others! For the next 2 weeks it looked like a library exploded in my house.&lt;br /&gt;&lt;br /&gt;Phone interview came and went great. It was given by a Dutch engineer who's job at Google is to classify pornography. The questions were challenging and tested my knowledge of algorithms, Java, and problem-solving. Mostly centered around search, sort, and general programming practice, he seemed impressed when I answered one question with an "except when..." and pulled out a bit of trivia on how the JVM deals with pointers to arrays of primitive types in a pass-by-value scenario. Ha! The guy is quizzing me and he had to look something up.&lt;br /&gt;&lt;br /&gt;Two days later I was invited for an on-site interview.&lt;br /&gt;&lt;br /&gt;Again, I gave them the, "Well this week is booked but how about next week" stall to give me still more time to study. They were merciful and scheduled it for Friday.&lt;br /&gt;&lt;br /&gt;About this time, I'm feeling really special. I sent an email to my friends, one of whom had already interviewed at Google, which led to the following exchange.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class="BwDhwd"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="zyVlgb XZlFIc"&gt;&lt;table class="O5Harb"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="xUReW"&gt;&lt;span class="JDpiNd"&gt;&lt;br /&gt;&lt;img class="ilX2xb QrVm3d" id="upi" name="upi" jid="twilson650@gmail.com" src="http://mail.google.com/mail/images/cleardot.gif" height="16" width="16" /&gt;&lt;/span&gt;&lt;h3 class="EP8xU" style="color: rgb(0, 104, 28);"&gt;&lt;span email="twilson650@gmail.com"&gt;From: Tom Wilson&lt;/span&gt;&lt;/h3&gt; &lt;span class="tQWRdd"&gt;to &lt;span email="silver@novelx.com" class="Zv5tZd"&gt;Charles&lt;/span&gt;, &lt;span email="elana_wallenstein@hotmail.com" class="Zv5tZd"&gt;Elana&lt;/span&gt;, &lt;span email="lorirosoff@yahoo.com" class="Zv5tZd"&gt;Lori&lt;/span&gt;, &lt;span email="agm3783@att.net" class="Zv5tZd"&gt;Alex&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;td class="i8p5Ld"&gt;&lt;div class="XZlFIc"&gt;&lt;span id=":47" class="rziBod" title="Fri, Sep 19, 2008 at 1:28 PM" alt="Fri, Sep 19, 2008 at 1:28 PM"&gt;Sep 19&lt;/span&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class="i8p5Ld"&gt;&lt;div class="JbJ6Ye"&gt;&lt;table style="width: 16px; height: 25px;" class="gQ8wIf" id=":45"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="cTzXV LtBCcf t9K9Me" idlink=""&gt;&lt;img class="DC6qBf" src="http://mail.google.com/mail/images/cleardot.gif" /&gt;&lt;/td&gt;&lt;td class="t9K9Me"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="wtnCQd tP6gIf t9K9Me"&gt;&lt;img class="S1nudd" src="http://mail.google.com/mail/images/cleardot.gif" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;I got an on-site interview (with Google) scheduled for next Friday.&lt;br /&gt;&lt;br /&gt;Yay!&lt;br /&gt;&lt;br /&gt;-tom&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;&lt;table class="BwDhwd"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="zyVlgb XZlFIc"&gt;&lt;table class="O5Harb"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="xUReW"&gt;&lt;span class="JDpiNd"&gt;&lt;img class="Jx04sb QrVm3d" id="upi" name="upi" jid="elana_wallenstein@hotmail.com" src="http://mail.google.com/mail/images/cleardot.gif" height="16" width="16" /&gt;&lt;/span&gt;&lt;h3 class="EP8xU" style="color: rgb(121, 6, 25);"&gt;&lt;span email="elana_wallenstein@hotmail.com"&gt;From: Elana Silver&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;&lt;span class="tQWRdd"&gt; &lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;td class="i8p5Ld"&gt;&lt;div class="XZlFIc"&gt; &lt;span id=":4e" class="rziBod" title="Fri, Sep 19, 2008 at 1:36 PM" alt="Fri, Sep 19, 2008 at 1:36 PM"&gt;Sep 19 &lt;/span&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class="i8p5Ld"&gt;&lt;div class="JbJ6Ye"&gt;&lt;table class="gQ8wIf" id=":4c"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="cTzXV LtBCcf t9K9Me" idlink=""&gt;&lt;img class="DC6qBf" src="http://mail.google.com/mail/images/cleardot.gif" /&gt;&lt;/td&gt;&lt;td class="cTzXV t9K9Me" idlink=""&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="t9K9Me"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="wtnCQd tP6gIf t9K9Me"&gt;&lt;img class="S1nudd" src="http://mail.google.com/mail/images/cleardot.gif" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; Make sure to figure how how many pandas can fit on a cruise liner before you get there. Also, how many prime numbers there are between 17 and 775.&lt;br /&gt;&lt;br /&gt;Congrats!&lt;br /&gt;&lt;br /&gt;&lt;table class="BwDhwd"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="zyVlgb XZlFIc"&gt;&lt;table class="O5Harb"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="xUReW"&gt;&lt;h3 class="EP8xU" style="color: rgb(0, 104, 28);"&gt;&lt;span email="twilson650@gmail.com"&gt;From: Tom Wilson&lt;/span&gt;&lt;/h3&gt; &lt;span class="tQWRdd"&gt;to &lt;span email="elana_wallenstein@hotmail.com" class="Zv5tZd"&gt;Elana&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;td class="i8p5Ld"&gt;&lt;div class="XZlFIc"&gt;&lt;span id=":40" class="rziBod" title="Fri, Sep 19, 2008 at 7:55 PM" alt="Fri, Sep 19, 2008 at 7:55 PM"&gt;7:55 PM &lt;/span&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class="i8p5Ld"&gt;&lt;div class="JbJ6Ye"&gt;&lt;table class="gQ8wIf" id=":3y"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="cTzXV LtBCcf t9K9Me" idlink=""&gt;&lt;img class="DC6qBf" src="http://mail.google.com/mail/images/cleardot.gif" /&gt;&lt;/td&gt;&lt;td class="cTzXV t9K9Me" idlink=""&gt;&lt;div class="SvrlRe"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="t9K9Me"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="wtnCQd tP6gIf t9K9Me"&gt;&lt;img class="S1nudd" src="http://mail.google.com/mail/images/cleardot.gif" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Good idea!&lt;br /&gt;&lt;br /&gt;1.&lt;br /&gt;google search: cruise liner deadweight tonnage&lt;br /&gt;10,000 tons at 100 cu ft/ton = 1,000,000 cu ft of cargo space.&lt;br /&gt;&lt;br /&gt;google search: panda transport cage size&lt;br /&gt;45cm x 40 cm x 45 cm (red panda)&lt;br /&gt;= 1.48ft x 1.31ft x 1.48ft = 2.87 cu ft&lt;br /&gt;&lt;br /&gt;1,000,000 cu ft / 2.87 cu ft&lt;br /&gt;&lt;br /&gt;= 348,000 pandas.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2.&lt;br /&gt;That would be 131 prime numbers. Algorithm follows.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;static public ArrayList getPrimes(Integer lowerBound, &lt;br /&gt;      Integer upperBound) {&lt;br /&gt;   int i, j, notPrime;&lt;br /&gt;   int[] n = new int[upperBound - lowerBound + 1];&lt;br /&gt;   // list all numbers&lt;br /&gt;   for (i = lowerBound; i &amp;lt;= upperBound; i++) { &lt;br /&gt;      n[i - lowerBound] = i; &lt;br /&gt;   } &lt;br /&gt;   // remove non-primes &lt;br /&gt;   for (i = 2; i &amp;lt;= upperBound / 2; i++) { &lt;br /&gt;      j = 2; &lt;br /&gt;      while ((notPrime = i * j++) &amp;lt= upperBound) { &lt;br /&gt;         if (notPrime &amp;gt;= lowerBound)&lt;br /&gt;            n[notPrime - lowerBound] = 0;&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;   // put remaining numbers in a list&lt;br /&gt;   ArrayList primeNumbers = new ArrayList();&lt;br /&gt;   for (i = lowerBound; i &amp;lt; upperBound; i++) {&lt;br /&gt;      if (n[i-lowerBound] != 0)&lt;br /&gt;         ArrayList.add(n[i-lowerBound]);&lt;br /&gt;   }&lt;br /&gt;   return primeNumbers;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-4405734278710116077?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/4405734278710116077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=4405734278710116077' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/4405734278710116077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/4405734278710116077'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/07/my-google-interview-part-1.html' title='My Google Interview, Part 1'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_M_7azHKAR1U/SmCLngfT8rI/AAAAAAAAAD0/EXyI5qG7CRg/s72-c/books.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-6362150609347239636</id><published>2009-06-01T21:26:00.001-07:00</published><updated>2009-06-30T21:07:05.455-07:00</updated><title type='text'>SQL Gymnastics</title><content type='html'>Every medical professional has a set of specialties, stored here in an expertise table. This uses a temporary table to define a sequence which is too complex for an ORDER BY clause. Older records are sorted by OrderNo and have SequenceNo=0, and newer records are ordered by SequenceNo. To complicate matters, records are grouped by facility where these specialties are practiced. We group each expertise together and work out the sorting, then build a new expertise table denormalizing these fields so the first five can be placed in a table optimized for fast access. This code was never used.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;CREATE VIEW mso_test.ipd2MedProfExpertise AS&lt;br /&gt;WITH ExpertiseList AS (&lt;br /&gt; SELECT&lt;br /&gt;    row_number() over (&lt;br /&gt;       order by Med_Prof_Record_No, SequenceNo, OrderNo&lt;br /&gt;    ) AS 'RowNumber',&lt;br /&gt;    Expertise,&lt;br /&gt;    Med_Prof_Record_No,&lt;br /&gt;    FacCode&lt;br /&gt; FROM mso_test.Med_Prof_Expertises&lt;br /&gt;)&lt;br /&gt;SELECT&lt;br /&gt; e1.Med_Prof_Record_No,&lt;br /&gt; e1.FacCode,&lt;br /&gt; e1.Expertise AS Expertise1,&lt;br /&gt; e2.Expertise AS Expertise2,&lt;br /&gt; e3.Expertise AS Expertise3,&lt;br /&gt; e4.Expertise AS Expertise4&lt;br /&gt;FROM ExpertiseList e1&lt;br /&gt;LEFT OUTER JOIN&lt;br /&gt; ExpertiseList e2 ON (&lt;br /&gt;    e2.Med_Prof_Record_no = e1.Med_Prof_Record_No AND&lt;br /&gt;    e2.FacCode = e1.FacCode AND&lt;br /&gt;    e2.RowNumber &gt; e1.RowNumber&lt;br /&gt; )&lt;br /&gt;LEFT OUTER JOIN&lt;br /&gt; ExpertiseList e3 ON (&lt;br /&gt;    e3.Med_Prof_Record_no = e1.Med_Prof_Record_No AND&lt;br /&gt;    e3.FacCode = e1.FacCode AND&lt;br /&gt;    e3.RowNumber &gt; e2.RowNumber&lt;br /&gt; )&lt;br /&gt;LEFT OUTER JOIN&lt;br /&gt; ExpertiseList e4 ON (&lt;br /&gt;    e4.Med_Prof_Record_no = e1.Med_Prof_Record_No AND&lt;br /&gt;    e4.FacCode = e1.FacCode AND&lt;br /&gt;    e4.RowNumber &gt; e3.RowNumber&lt;br /&gt; )&lt;br /&gt;GO&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-6362150609347239636?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/6362150609347239636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=6362150609347239636' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/6362150609347239636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/6362150609347239636'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/06/sql-gymnastics.html' title='SQL Gymnastics'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-5961946025184282164</id><published>2009-05-11T10:09:00.000-07:00</published><updated>2009-06-01T07:31:22.625-07:00</updated><title type='text'>I Dream of SQL</title><content type='html'>The dream was solid white. In front of me, hundreds maybe thousands of lines of code were scrolling upwards, too fast to read, like I was holding down the arrow key. It was SQL code with color syntax highlighting and a musical accompaniment. As each line of code scrolled past, each word would light its own color and play its own note, like a player piano, like the old days when you could place a transistor radio next to the CPU and hear the loops and jumps in your program. It sounded terrible. Out of key, out of tune, no rhythm or melody at all. Just a jumble of notes blurring into white noise.&lt;br /&gt;&lt;br /&gt;There I was with three sheets of player piano music, written entirely in SQL code, one for each of the three major subsystems, side by side, all scrolling together. Each word in the code would light its own color and play its own note as it flew past, too fast to pay attention to the individual SQL statements, but I could see the code structure and indentation as rhythm, the overall form as tonality, and I could see the three part harmony. Nice to know those music classes are good for more than just singing around the campfire.&lt;br /&gt;&lt;br /&gt;First I had to arrange the structure so that the three were in rhythm with each other. Once the three database structures matched, I then transposed them to the same key. At that point bulk copies could work efficiently, but the melodies still needed work. I made my arrangements through the night, sleeping soundly, until I had a beautiful song I could enjoy. It sounded great. I played the entire composition several times but to this day do not remember how it goes.&lt;br /&gt;&lt;br /&gt;I woke up in the morning and went to work, refactoring and rewriting the SQL code until it matched the previous night's arrangement. By mid-afternoon I was running my first data synchronization tests. It worked.&lt;br /&gt;&lt;br /&gt;The hospital had its enterprise data model.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-5961946025184282164?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/5961946025184282164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=5961946025184282164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/5961946025184282164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/5961946025184282164'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/05/i-dream-of-sql.html' title='I Dream of SQL'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-3391191840316999007</id><published>2009-05-10T12:42:00.000-07:00</published><updated>2009-05-29T16:02:06.625-07:00</updated><title type='text'>Dreaming in Code</title><content type='html'>I bought the book Dreaming in Code by Scott Rosenberg not long after it was published, and it's been sitting on my shelf, unread, ever since. I've read a lot of books on computer history - in fact, most all of them covering the period from the 1970s to the 1990s. After I arrived here in 1997 I've been close to many of the historic events that comprise a whole new series of books. This one, though, I should read for two reasons:&lt;br /&gt;&lt;br /&gt;One, it's about the pitfalls and mistakes that can bring down a large software project. Some of the reviews said it can hit too close to home, but also make you feel better, as some of the top minds in the industry are not immune to the same mistakes.&lt;br /&gt;&lt;br /&gt;Two, I have actually dreamed in code, which is the story I want to tell.&lt;br /&gt;&lt;br /&gt;It was late in the early phase of a big project and I was responsible for building a multi-source enterprise data model for the entire hospital. The tools at my disposal were a SQL database, bulk data copies, stored procedures, and data transforms using a view/copy mechanism I developed for the physician directory years earlier - which was to be adapted one of three major portions of the enterprise architecture, the other two being physical locations and services provided.&lt;br /&gt;&lt;br /&gt;The main problem was data flow.&lt;br /&gt;&lt;br /&gt;I struggled for weeks with various data models, trying to fit them together, integrating the different source systems, keep the updates moving reliably from staging to production, catching errors before they do, and making the whole thing easy for one person to oversee.&lt;br /&gt;&lt;br /&gt;Everything I tried either caused conflicting changes to overwrite each other, or entire data copies to fail. Each of the three main subsystems: physician, location, service, was an entire application data model in and of itself, and they were interlinked in increasingly complex ways. The end result, if it worked, would be amazing. Whether you're looking for a service, a doctor, or the nearest location for either, all the connections would be there.&lt;br /&gt;&lt;br /&gt;If it worked.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(to be continued)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-3391191840316999007?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/3391191840316999007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=3391191840316999007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/3391191840316999007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/3391191840316999007'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/05/dreaming-in-code.html' title='Dreaming in Code'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-3681512752949929612</id><published>2009-04-29T23:01:00.000-07:00</published><updated>2009-04-29T23:19:28.814-07:00</updated><title type='text'>Old School Coding</title><content type='html'>&lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=9132061"&gt;ComputerWorld has an article on things programmers did in the old days and probably won't miss.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Spaghetti code, GOTO, and the FORTRAN idioms, I remember them well. Punch cards were a bit before my time. The one thing I don't miss is programming entirely in emacs and vi. Modern IDEs with code completion and visual modeling (and now semantic resource management) are a huge time saver. First code completion blew my mind, it was like the documentation automatically opened to exactly the right page as I typed. My taped-together copy of K&amp;amp;R C could go on the shelf. Now with visual modeling, I can rearrange my program structure to my heart's content before writing a single line of code. Don't even get me started on refactoring. It was impossible. Of course, with UNIX I didn't have to worry about the 8+3 file name limit, although I did write some TSR  (terminate-stay-resident) programs in x86 assembly. I remember writing the UNIX "more" command for DOS with my own twist on error handling. Instead of "File not found" it would print, "So the bartender says, that's no file that's my wife!" What can I say, I was a rambunctious young scamp. I thought my home-built overclocked 286 with  co-processor (I couldn't settle for just integer math, could I?) was total cyberpunk. It had a giant hard drive that sounded like a jet engine taking off when I booted. Even so, it was mostly a dumb terminal for the University supercomputers. The Convex C-220 had an awesome debugger. I managed to avoid Windows almost entirely until the late 90s when I moved to Silicon Valley.&lt;br /&gt;&lt;br /&gt;Slow computers? I remember a scientist in the early 90s complaining about fast computers. In the old days, he'd say, he could load his data, run the program, and go off for a nice lunch. When he got back he'd have his results. Now, he'd complain, a data reduction that took 2 hours now completes in 20 minutes, hardly time to do anything! Also something about VMS being God's own operating system, while younglings like myself thought UNIX was God's own operating system.&lt;br /&gt;&lt;br /&gt;Ah, memories...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-3681512752949929612?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/3681512752949929612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=3681512752949929612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/3681512752949929612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/3681512752949929612'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/04/old-school-coding.html' title='Old School Coding'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-5442667946554486768</id><published>2009-04-28T15:14:00.000-07:00</published><updated>2009-04-29T07:39:45.691-07:00</updated><title type='text'>Enterprise 2.0</title><content type='html'>The new buzzword - Enterprise 2.0, refers to private, internal social networks, for example when employees don't use Twitter, they use a twitter-like application kept safely behind the firewalls with all the access and security control applied for any internal communication. Google's find-an-expert is an early example of this. Twitter-like applications for internal communication may or may not be useful, but some kind of internal IM definitely is.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.readwriteweb.com/archives/forrester_predicts_enterprise20_grow_decline.php#more"&gt;ReadWriteWeb&lt;/a&gt; has more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-5442667946554486768?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/5442667946554486768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=5442667946554486768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/5442667946554486768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/5442667946554486768'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/04/enterprise-20.html' title='Enterprise 2.0'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-5904759916676402300</id><published>2009-04-28T14:37:00.000-07:00</published><updated>2009-04-28T15:12:44.271-07:00</updated><title type='text'>More Healthcare IT Articles</title><content type='html'>Some recent articles on Healthcare IT and the EMR...&lt;br /&gt;&lt;br /&gt;Improving EMR Usability: &lt;a href="http://www.emrupdate.com/forums/t/18108.aspx?PageIndex=1"&gt;Part 1&lt;/a&gt;, &lt;a href="http://www.emrupdate.com/forums/t/18353.aspx"&gt;Part 2&lt;/a&gt;, &lt;a href="http://www.emrupdate.com/forums/t/18878.aspx"&gt;Part 3&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://histalk2.com/2009/01/31/what-usability-is-and-how-to-recognize-it/"&gt;What Usability Is and How to Recognize It&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.businessweek.com/magazine/content/09_18/b4129030606214.htm"&gt;The Dubious Promise of Digital Medicine (Business Week)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.syleum.com/2009/03/17/healthcare-data-model/"&gt;The Data Model That Nearly Killed Me&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-5904759916676402300?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/5904759916676402300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=5904759916676402300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/5904759916676402300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/5904759916676402300'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/04/new-reading.html' title='More Healthcare IT Articles'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-8884189993968409165</id><published>2009-04-16T08:24:00.000-07:00</published><updated>2009-04-16T08:29:18.874-07:00</updated><title type='text'>Mylyn</title><content type='html'>Trying out Mylyn and Tasktop and I love it. Everyone on my project is required to use Mylyn now, and Tasktop, we're doing the free trial to integrate bugzilla, OPAS (our corp help desk system), calendars (for releases and help desk tickets), and cvs. This incorporates a lot of the ideas I've been toying with around the semantic desktop project. Now when I go back to that bug I worked on a month ago, I see exactly the files involved (say 5 files in 3 different projects among hundreds), supporting documentation, even web resources. Regardless of the source system, it's all URIs. Exactly right.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-8884189993968409165?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/8884189993968409165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=8884189993968409165' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8884189993968409165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8884189993968409165'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/04/mylyn.html' title='Mylyn'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-6858994055467455199</id><published>2009-03-25T19:36:00.001-07:00</published><updated>2009-03-28T19:36:10.164-07:00</updated><title type='text'>The Memory Box</title><content type='html'>I do lots of stuff online, and lots offline. I have documents on my desktop and web pages I open. Where is that google app engine account I got when it was beta and haven't touched since? It's in my browser history, still. Dated documents, bookmarks, emails, user history. All the related material is there, but how to find it? How to organize it? How to crawl the different things I've done on my laptop any one of which I may wish to recall at some later date? That programming library I installed last month? Where is the API, tutorial, and article I found on some google search at the time? It's all in my little electronic box of memories. I need a web of remembering.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.semanticdesktop.org/"&gt;semanticdesktop.org&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-6858994055467455199?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/6858994055467455199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=6858994055467455199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/6858994055467455199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/6858994055467455199'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/03/memory-box.html' title='The Memory Box'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-5343375998741294181</id><published>2009-03-10T10:53:00.001-07:00</published><updated>2009-03-10T14:48:35.585-07:00</updated><title type='text'>Identity Blog</title><content type='html'>Somewhere along my Googlings I came across the subject of digital identity, which I found days later in a long-forgotten browser tab. Save it! It looks like good reading for later.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.identityblog.com/"&gt;Kim Cameron's Identity Blog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The page I had bookmarked, &lt;a href="http://www.identityblog.com/stories/2004/12/09/thelaws.html"&gt;THE LAWS OF IDENTITY&lt;/a&gt;, I landed there looking at what people are saying about the term Enterprise 2.0, which far as I can tell is attempting to utilize Web 2.0 social features - blogs, chat, Ergos-Bacon numbers, etc - into a private Intranet setting. The real question is: how do employees use it day-to-day to help them in their jobs? We need a usability study similar to &lt;a href="http://webhome.cs.uvic.ca/%7Egtzan/seng310Spring2005/palm_pilot.pdf"&gt;what Jeff Hawkins did when designing the Palm Pilot&lt;/a&gt;. The &lt;a href="http://webword.com/moving/businesscase.html"&gt;case for usability&lt;/a&gt; is easy to make, and &lt;a href="http://bmrc.berkeley.edu/courseware/cs160/fall98/projects/Video-email/GROUP/proto.html"&gt;lo-fi prototyping&lt;/a&gt; can be invaluable in getting a product started in the right direction.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-5343375998741294181?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/5343375998741294181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=5343375998741294181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/5343375998741294181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/5343375998741294181'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/03/identity-blog.html' title='Identity Blog'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-2580859363544304164</id><published>2009-03-04T11:20:00.000-08:00</published><updated>2009-03-28T19:11:36.860-07:00</updated><title type='text'>UML Primer</title><content type='html'>I'm not as keen on sqworl anymore, so I'm just going to list some cool blog links here.&lt;br /&gt;&lt;br /&gt;First, I like this &lt;a href="http://edn.embarcadero.com/article/31863"&gt;practical UML primer&lt;/a&gt;. Even if you already know this, it's good review. I've been reviewing the basics on a lot of things lately.&lt;br /&gt;&lt;br /&gt;For more excellent reading on software development in general, there is a collection of essays known as &lt;a href="http://www.joelonsoftware.com/"&gt;Joel on Software.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(85, 26, 139); text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-2580859363544304164?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/2580859363544304164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=2580859363544304164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/2580859363544304164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/2580859363544304164'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/03/uml-primer.html' title='UML Primer'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-3901317883937452487</id><published>2009-03-04T09:40:00.000-08:00</published><updated>2009-03-05T07:18:33.729-08:00</updated><title type='text'>Some Thoughts on Healthcare Web Strategy</title><content type='html'>&lt;p class="MsoNormal"&gt;What is a good technology strategy and how does it relate to a good business strategy? How does one determine which technology initiatives deliver the most bang-for-the-buck? Everyone knows the proper application of IT can save money by automating the most labor-intensive processes, by streamlining inefficiencies, and it can improve services and make money by bringing and keeping more customers. To fit our organization’s more altruistic goals, it can improve medical care, for example making the referral process faster, and it can offer patient services that enhance overall care. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;What follow are some examples web technologies and how they can be of use. This is not what we “ought” to do, but is meant to illustrate some of the issues and factors to consider when developing a web strategy.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style=";font-family:&amp;quot;;"&gt;The New Yellow Pages&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;What doctors specialize in my child’s condition and practice within 20 miles of my home? Now only show me the ones with an available appointment time this week. This query is based on a new search technology, less than ten years old, but growing rapidly in widespread use. It works by transposing graph patterns, but it can be thought of as traversing the relationship from condition to specialty, specialty to doctor, doctor to clinic, and doctor to schedule. This does not replace relational databases or traditional keyword-based web search, but it does provide a new and very useful way to query data. Some data such as schedules, location, and contact information can all be retrieved from existing systems, some will need to be created and maintained. For example, how does a doctor tell the system that he practices at a certain clinic?&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Using the URL-as-URI data model (Berners-Lee, 1999), he simply logs in, opens a web browser to the clinic home page, and clicks, “I practice here.” &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Successful IT initiatives are evolutionary, not revolutionary, and what has been described so far is something that can be built on top of software currently in use at LPCH. It utilizes existing web content, data stores, and applications, and adds some new tools developed by HP Labs and Stanford Bioinformatics. Rather than wholesale system development, it would be constructed by adding a sequence of small feature enhancements to the existing physician search (Java version). For example, first the links between doctors and clinics (and specialties) provide a two-way reference and additional web content for each, and vCard support can provide the distance calculus and input for map APIs. Each of these is a useful feature in and of itself. If later combined with the vCal API to Microsoft Outlook or Cerner scheduling, one could find matches within a set of preferred appointment times. This is a natural growth of, and not a replacement for, technology that already works. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;As a part of a larger enterprise directory, this can be combined with a variant of the FEA-RM enterprise architecture ontology (Allemang, et al, 2004), which uses a set of polymorphic nested containers, more or less independent sub-trees inheriting one of two transitive properties: comprises and comprisedOf. If A contains B, and B contains C, then A contains C and C is part of B and A. With those rules available, all a manager should have to do is add a contractor or new employee to her group, and this person is automatically also a member of the correct cost center, department, and organization, instantly appearing in all appropriate directory listings. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;b style=""&gt;&lt;span style=";font-family:&amp;quot;;"&gt;Information Transformation &lt;i style=""&gt;(the perspective you need)&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;A doctor, a nurse, and a patient all look at the same set of data, but not in the same way. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;The broad goal of IT in any organization is to get the right information to the right people at the right time, and this role is even more critical in the medical field. Therefore we must take a close examination of the transformative properties of web technology.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The web is ultimately about the serialization and de-serialization of data. That was its original design intent, and that is the essence of its power today. Serialization is defined as the transformation of data from within an IT system (a database or application, for example) to a transmittable document (say, a web page or XML message). With this S/DS comes transform. There are many transforms and many data markup standards on the web today. So much, that in web systems design, build-by-restriction is as important as build-by-feature (Fielding, 2000). There are many possible serializations of a given data set, and engineers choose the one they think is best for the purpose at hand. The key to good design is selecting the most efficient transform between your data set and each of its intended uses.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;An effective serialization must be designed in the context of those two data structures. In the case of patient data at LPCH, the source data structure is defined, with the Cerner EMR being the “source of truth.” Likewise, one serialization target, namely physicians, is also defined as it appears in the Cerner physician-facing UI. MDPortal, being targeted at physicians, mirrors this closely, with the patient census list being the only notable departure from the source data structure. Another serialization target, patients and families, is not so well-defined. Many PHR systems mirror the traditional data stores of healthcare, which may be deftly used in the hands of professionals, but become unwieldy to the average person. The ideal patient/family care workflow – and the most effective data structure transformations to facilitate that workflow – is not a well-solved problem industry-wide. The first team to solve it will gain a sizeable market advantage and remove one of the last barriers to widespread PHR adoption.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style=";font-family:&amp;quot;;"&gt;Communication&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Much has been made of the advent of the social network, and it is indeed a significant development. So much so, that it becomes important to look at other times in history when new technology has facilitated, changed, and reshaped the nature of communication. The core principles of the past were not in fact overturned, and those who succeeded did so by adapting those principles to the new environment. The new media also tends to adapt itself to the existing world, as is the case with the size of a standard hardcover book or the shape of the iPod. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;This time, the new tool is the relationship graph, which differentiates itself from group membership as well as traditional broadcast communication. As the traditional media broadcast goes to as wide an audience as possible without regard to relationship, membership, but possibly with regard to location, the social network sends communications to friends and friends-of-friends, regardless of location or other factors. Relationships can be friends, former patients, donors, employees, or anyone on an opt-in basis, but to a computer they are simply connections. Social networks store these relationships as graphs, and communications travel outward along these connections, usually no more than one or two Bacon Units (BU) away, a BU being the Erdos-Bacon number of an audience member (Milgram, 1967). &lt;/p&gt;  &lt;p class="MsoNormal"&gt;The most effective communication strategy will use all the available tools in concert. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;It is also important for a healthcare organization to remember what information is under control, and what is not. The typical Web 2.0 business model – and this includes social networks – is to collect user information, most commonly but not always for advertisements. What happens on our servers is under our control, and the information can be archived for auditing, or it can be destroyed for confidentiality. User activity that happens on hospital servers (or those of business partners) can be kept private, activity “in the wild” cannot. This includes conversations, group memberships, activities, applications, and click-through. While social networking is shaping up to be a powerful communication tool, I keep to a standard rule of thumb: Don’t say anything on Facebook you wouldn’t say in a crowded room with the advertising industry’s brightest young analysts standing next to you taking notes. Also they have everyone’s email address. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style=";font-family:&amp;quot;;"&gt;Process&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;A lot of documentation is (or should be) created during the lifecycle of an IT project. Even the most detailed conversation about an architectural software model is no substitute for a simple UML diagram. From the first inception phases, everything must be documented, and written for an intended audience who might not have you there to explain it. Upon project completion, this documentation should tell a story, and the title of that story, “&lt;u&gt;How We Built This Thing (so you can too)&lt;/u&gt;,” from which operations manuals can be distilled. Along with the deliverable working system, a complete development and testing environment must be provided. The artifacts produced in a normal project lifecycle should lead naturally to these results.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;“A problem well-stated is a problem half-solved.” Everyone understands the importance of good requirements. However, there is more than one way to present a given set of requirements. The most effective way to state requirements often depends on the technology used as well as the business need. An iterative process, starting with a first order approximation of business needs and technology capabilities, followed by refinement and convergence has proven successful in the past, and will continue to be successful in the future.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-3901317883937452487?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/3901317883937452487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=3901317883937452487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/3901317883937452487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/3901317883937452487'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/03/some-thoughts-on-healthcare-web.html' title='Some Thoughts on Healthcare Web Strategy'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-2112128693142814836</id><published>2009-01-28T16:48:00.000-08:00</published><updated>2009-01-28T16:50:08.360-08:00</updated><title type='text'>More Squirrels and Network Tools</title><content type='html'>I created a new sqworl page with some bookmarks. I call it &lt;a href="http://sqworl.com/?i=584080"&gt;Stanford Life (for a computer geek)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;And now for something completely different...&lt;br /&gt;&lt;br /&gt;Network measurement tools!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://measurementlab.net/"&gt;http://measurementlab.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-2112128693142814836?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/2112128693142814836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=2112128693142814836' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/2112128693142814836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/2112128693142814836'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/01/more-squirrels-and-network-tools.html' title='More Squirrels and Network Tools'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-4484742445844445049</id><published>2009-01-27T17:40:00.001-08:00</published><updated>2009-01-27T17:40:20.891-08:00</updated><title type='text'>I Like Squirrels</title><content type='html'>When I heard Google is discontinuing their notebook plugin (among other products), I went looking for a replacement. Last night I found Sqworl, which launched late last year and is a way way better tool for research, documentation (APIs and such), and reference material (semantic web ontologies, for example). Looks like it has everything I need, except easy import/export of my existing bookmarks.&lt;br /&gt;&lt;br /&gt;The site is:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqworl.com/"&gt;http://sqworl.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For an explanation/review, see:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.techcrunch.com/2009/01/16/elevator-pitch-friday-sqworl-one-link-to-rule-them-all/"&gt;http://www.techcrunch.com/2009/01/16/elevator-pitch-friday-sqworl-one-link-to-rule-them-all/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I created a simple sample documenting Google's famous development process:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqworl.com/?i=cdc23d"&gt;http://sqworl.com/?i=cdc23d&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-4484742445844445049?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/4484742445844445049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=4484742445844445049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/4484742445844445049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/4484742445844445049'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/01/i-like-squirrels.html' title='I Like Squirrels'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-3223255222685457815</id><published>2009-01-16T18:35:00.000-08:00</published><updated>2009-01-16T18:38:56.535-08:00</updated><title type='text'>I Know This!</title><content type='html'>Sometimes when I face a really difficult problem, I have to look at it and say, "It's easy!" and then figure out why it's easy.&lt;br /&gt;&lt;br /&gt;FRINITE NOW KTHXBYE&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-3223255222685457815?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/3223255222685457815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=3223255222685457815' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/3223255222685457815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/3223255222685457815'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/01/i-know-this.html' title='I Know This!'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-5514429500598866017</id><published>2009-01-15T18:05:00.000-08:00</published><updated>2009-07-31T07:57:24.310-07:00</updated><title type='text'>The Brazilian National EMR</title><content type='html'>I was at a party the other night, having a lively discussion about the state of technology with James Gosling of Sun Microsystems and...&lt;br /&gt;&lt;br /&gt;I'm sorry, but I've always wanted to start a blog post like that. Does that make me a geek? Or a nerd?&lt;br /&gt;&lt;br /&gt;Anyway, we were discussing the Brazilian Healthcare IT system, which as it turns out has a number of interesting features, for example:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It is completely paperless, you do everything on a computer or cell phone, and everybody in Brazil has a cell phone.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;By data-linking doctors' prescriptions with pharmacy refill orders, it all but eliminated drug fraud.&lt;/li&gt;&lt;li&gt;It can track influenza outbreaks in real time.&lt;/li&gt;&lt;li&gt;Your personal health record works just as well if you're a tribesman with no name living in a canoe on the Amazon River.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It is the world's largest open source project.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;More on that later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-5514429500598866017?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/5514429500598866017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=5514429500598866017' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/5514429500598866017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/5514429500598866017'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/01/brazilian-national-emr.html' title='The Brazilian National EMR'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-4699086936243081417</id><published>2009-01-10T06:39:00.001-08:00</published><updated>2009-01-15T18:40:05.808-08:00</updated><title type='text'>KDE</title><content type='html'>Installed KDE 4.1 on my Ubuntu 8.10 virtual machine. I'm digging this virtual machine stuff, I'm starting to wonder how I ever got along running multiboot OS on bare hardware - though I did like that bootloader that showed pictures of an apple and two penguins on startup.&lt;br /&gt;&lt;br /&gt;The NEPOMUK semantic desktop foundation is also installed, now once I set up eclipse with the C++ APIs I can get to work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-4699086936243081417?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/4699086936243081417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=4699086936243081417' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/4699086936243081417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/4699086936243081417'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2009/01/kde.html' title='KDE'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-6248036075083343375</id><published>2008-11-18T21:54:00.001-08:00</published><updated>2008-11-18T22:02:48.980-08:00</updated><title type='text'>Catchup on Updates</title><content type='html'>I finally got around to installing Ubuntu 8.10 and Eclipse Ganymede. I'm pretty much starting over with Ubuntu, as it's going to be a server project in parallel with OpenSolaris. So far I'm still planning to do the bulk of my development in mach-BSD, that is OS X.&lt;br /&gt;&lt;br /&gt;Still working on the Swing app with Netbeans. UI v2 will feature new embedded browser panes and more controls.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-6248036075083343375?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/6248036075083343375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=6248036075083343375' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/6248036075083343375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/6248036075083343375'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/11/catchup-on-updates.html' title='Catchup on Updates'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-4444532376142105742</id><published>2008-11-03T19:41:00.000-08:00</published><updated>2008-11-03T19:44:47.491-08:00</updated><title type='text'>Predicates Chosen</title><content type='html'>Orthogonal technically means "at right angles" but I've heard the term used loosely to mean what I was driving at: providing maximum coverage of the problem set with the least amount of overlap. Conceptually, logical right angles might allow one to compose a two-element query where each element can be adjusted independently with linear variation in the results. Conceptually linear? That's why it's more a contemplation, a notion, rather than a rigorous proof. These thoughts lead to what I can call my best educated guess.&lt;br /&gt;&lt;br /&gt;After much contemplation, I have my predicates.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-4444532376142105742?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/4444532376142105742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=4444532376142105742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/4444532376142105742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/4444532376142105742'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/11/predicates-chosen.html' title='Predicates Chosen'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-5679800494589683328</id><published>2008-11-01T16:27:00.000-07:00</published><updated>2008-11-01T16:39:29.742-07:00</updated><title type='text'>My ideal MacBook</title><content type='html'>Sweet new macbooks, faster bus and memory, new trackpad, and what i really need in the dark, a backlit keyboard. Sure would like to gets me one with 4GB RAM and the largest HD option. Then I'd install some stuff...&lt;br /&gt;&lt;br /&gt;First VMWare, Windows XP and Ubuntu 8.10 (desktop and server), bringing the number of operating systems on this laptop to 4.&lt;br /&gt;&lt;br /&gt;I'm partial to BSD, so I'd pretty much have my development tools in OS X.&lt;br /&gt;&lt;br /&gt;MySQL for the data store...&lt;br /&gt;&lt;br /&gt;Eclipse with JBoss, Hibernate, Jena, Jersey... also in Eclipse, pydev and Oxygen plugins.&lt;br /&gt;&lt;br /&gt;Netbeans with Glassfish and those same framework libraries...&lt;br /&gt;&lt;br /&gt;XCode with the iPhone SDK.&lt;br /&gt;&lt;br /&gt;Glassfish and JBoss on the Ubuntu server, where I deploy the applications I build. The Ubuntu desktop iscuz i can haz a learneding enviroment for Ubuntu.&lt;br /&gt;&lt;br /&gt;Windoze just in case, and until I find a suitable open source replacement for Visio.&lt;br /&gt;&lt;br /&gt;Okay, I just described my current black macbook, but the 'lumin' ones are sweet. That's what I'd do with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-5679800494589683328?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/5679800494589683328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=5679800494589683328' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/5679800494589683328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/5679800494589683328'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/11/my-ideal-macbook.html' title='My ideal MacBook'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-936653798030089867</id><published>2008-10-06T23:03:00.000-07:00</published><updated>2009-01-16T19:03:59.326-08:00</updated><title type='text'>Orthogonal Predicates</title><content type='html'>A first foray into semantic web could be a small set of initial predicates. For example, a museum might ask what are the most notable ways two artifacts, events, or people can be related. Person A invented artifact B, and so on. The question then arises, what is the most useful small set of predicates for a given application? How do you minimize their number while maximizing functional versatility?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-936653798030089867?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/936653798030089867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=936653798030089867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/936653798030089867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/936653798030089867'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/10/orthogonal-predicates.html' title='Orthogonal Predicates'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-5537692244871162646</id><published>2008-09-30T19:32:00.000-07:00</published><updated>2008-10-01T10:09:05.597-07:00</updated><title type='text'>RDFa and Its Subsets</title><content type='html'>For any semantic web site, RDFa or similar tags will be added to web pages multiple times for multiple reasons. Families of predicates can work together, and predicate relationships not used by a particular application are effectively invisible to it.&lt;br /&gt;&lt;br /&gt;For example, a person looking at the web page, i.e. the visual markup, would not see the non-visual RDFa markup. Likewise, one app might use location-centric relationships and not care about accompanying information. Another app might look at the same page and grab only the bibliographic connections. Part of installing a semantic web application, then, is to initialize the pages with necessary markings. The surface area of a semantic web application is the complete set of tags that it reads and writes. Tags are added, modified, and deleted as the business evolves changes.&lt;br /&gt;&lt;br /&gt;Non-interference is an important property.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-5537692244871162646?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/5537692244871162646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=5537692244871162646' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/5537692244871162646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/5537692244871162646'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/09/rdfa-and-its-subsets.html' title='RDFa and Its Subsets'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-554243080622319753</id><published>2008-09-30T19:13:00.000-07:00</published><updated>2009-05-29T16:06:52.670-07:00</updated><title type='text'>Interoperability of Domain-Specific Ontologies</title><content type='html'>Families of predicates can work together, and predicate relationships not used by a particular application are effectively invisible to it.&lt;br /&gt;&lt;br /&gt;As the simplest possible example, compare visual markup and RDFa mixed together on the same XHTML page. A person looking at the web page is utilizing the visual markup, but would not see the non-visual RDFa markup. Likewise, one app might use location-centric relationships and not care about accompanying information. Another app might look at the same page and grab only the bibliographic connections. Domain-Specific Ontologies can work independently in this way, each with its own XSLT data extraction.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-554243080622319753?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/554243080622319753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=554243080622319753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/554243080622319753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/554243080622319753'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/09/domain-specific-ontologies-and.html' title='Interoperability of Domain-Specific Ontologies'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-8780051720954096582</id><published>2008-08-29T01:25:00.001-07:00</published><updated>2008-10-01T10:11:11.977-07:00</updated><title type='text'>Now that Oracle Bought BEA</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_M_7azHKAR1U/SLeyntQW2oI/AAAAAAAAACI/Bh3J4Rc-LU8/s1600-h/oracle_bea_stack.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_M_7azHKAR1U/SLeyntQW2oI/AAAAAAAAACI/Bh3J4Rc-LU8/s320/oracle_bea_stack.jpg" alt="" id="BLOGGER_PHOTO_ID_5239853086701705858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is their application stack road map or whatever. The former BEA products are circled.&lt;br /&gt;&lt;br /&gt;Oracle has more information on their &lt;a href="http://www.oracle.com/technology/tech/soa/cab/oraclesoacab-webinar07-08-08oraclbearoadmap.pdf"&gt;road map&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-8780051720954096582?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/8780051720954096582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=8780051720954096582' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8780051720954096582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8780051720954096582'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/08/now-that-oracle-bought-bea.html' title='Now that Oracle Bought BEA'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_M_7azHKAR1U/SLeyntQW2oI/AAAAAAAAACI/Bh3J4Rc-LU8/s72-c/oracle_bea_stack.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-918577869995158606</id><published>2008-08-12T20:15:00.001-07:00</published><updated>2008-08-12T20:16:03.069-07:00</updated><title type='text'>Mac Isn't UNIX Under The Covers</title><content type='html'>It's UNIX. Those covers are UNIX applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-918577869995158606?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/918577869995158606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=918577869995158606' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/918577869995158606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/918577869995158606'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/08/mac-isnt-unix-under-covers.html' title='Mac Isn&apos;t UNIX Under The Covers'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-491069739559814998</id><published>2008-08-08T16:38:00.000-07:00</published><updated>2008-08-13T18:38:10.611-07:00</updated><title type='text'>My MacBook is a Programming Machine</title><content type='html'>I'm really happy with the way my MacBook is shaping up. It's jet black and looks slick. It has 4GB of memory, and when they say it's UNIX under the covers I say rip off the covers. First, the iLife stuff needs to go. That's not why I bought a sleek black laptop and slapped a big white UNIX sticker on it. Yes, it still does iTunes and photos and all that, but that's all in the Applications folder. My OS Dock, that most prominent feature of the Mac GUI holding a dozen or so easy-to-reach applications on a cool-looking translucent shelf? Mine is arranged a little different from most.&lt;br /&gt;&lt;br /&gt;Starting from the right:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;X11, because unix guy needs his terminal windows&lt;/li&gt;&lt;li&gt;Eclipse is my most-used Java development environment, running Tomcat for quick MVC work and JBoss for the more involved JEE.&lt;/li&gt;&lt;li&gt;Oxygen XML Editor&lt;/li&gt;&lt;li&gt;XCode with the latest SDK for the iPhone (which is in fact the world's best remote control)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Google Earth&lt;/li&gt;&lt;li&gt;Firefox&lt;/li&gt;&lt;li&gt;NetBeans, with built in Glassfish JEE server&lt;/li&gt;&lt;li&gt;Emacs&lt;/li&gt;&lt;/ul&gt;Starting from the left I have the OS management stuff:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Finder is of course the quickest way to look through stuff&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Spaces for even more desktop room&lt;/li&gt;&lt;li&gt;VMWare Fusion - currently only Windows XP is installed, but I have OpenSolaris ready to install and should probably download Fedora at some point&lt;/li&gt;&lt;li&gt;System Preferences, which I always seem to be tweaking for some reason or another&lt;/li&gt;&lt;/ul&gt;I run MySQL from a terminal window because I feel I have more control that way. And then there's iLife or MS Office in the Applications folder if I ever need them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-491069739559814998?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/491069739559814998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=491069739559814998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/491069739559814998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/491069739559814998'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/08/my-macbook-is-developer-machine.html' title='My MacBook is a Programming Machine'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-1905272852420865498</id><published>2008-07-05T17:43:00.000-07:00</published><updated>2008-07-06T11:37:13.610-07:00</updated><title type='text'>The Schema Is Data</title><content type='html'>Apparently a defined ontology is not a precondition of semantic data capability. The process of tagging content relationships with triples (or n-tuples in the MetaWeb system) defines ontology on the fly.&lt;br /&gt;&lt;br /&gt;Schema is data. Data defines schema. Graph stores are fundamentally different from relational data stores. Of course, it seems so simple now ;)&lt;br /&gt;&lt;br /&gt;Blame my vast experience in the SQL methodology: define a data structure optimized to certain use cases, and your application is locked in. With semantic n-tuple tagging, the data structure is constantly changing, and searches navigate the relationship edges regardless of the underlying structure. As tags are added, the ontology grows. Two different ontologies can be combined by defining relationships between related topics and combining identical topics. In this way the relationship graph grows and new data paths are created.&lt;br /&gt;&lt;br /&gt;The RDF triple can be described in terms of traditional data stores if you consider cell-by-cell storage; the subject is the row identifier, the predicate is the column identifier, and the object is the data field. In RDF, this is represented in three URIs. Triples are mathematically extremely simple and powerful, but for those of us who made a career in traditional data systems, it takes some getting used to. But the upshot is SPARQL can execute natural language queries with a fraction of the complexity required with traditional SQL.&lt;br /&gt;&lt;br /&gt;How promising is it? I hear NASA is creating a semantic web knowledge base to power a 30 year plan to put a man on Mars. A biosciences knowledge base went online a few weeks ago. Everyone is asking about it, and the semantic web standards are still being defined.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-1905272852420865498?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/1905272852420865498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=1905272852420865498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1905272852420865498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1905272852420865498'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/07/schema-is-data.html' title='The Schema Is Data'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-2773347378519029924</id><published>2008-06-17T20:32:00.000-07:00</published><updated>2008-06-27T07:42:18.058-07:00</updated><title type='text'>Six Semantic Pieces</title><content type='html'>Useful content + Ontology description language + triplet tags + visual tags + UI code + personal search agent. Am I getting close? Encapsulate objects on data entry. Modular xhtml in presentation templates. Move along relationship arcs or standard top/left menu bar interface. Winning is the most efficient tagging. What's the best way to tie in executable code? Remote portlets? Exactly how bad can they muck up the equation?&lt;br /&gt;&lt;br /&gt;The agent is pure software.&lt;br /&gt;&lt;br /&gt;It seems to be the way things are going. There has been a lot of movement in the semantic web lately, and it looks promising. First you define your ontologies. Then you tag your content. Then you build a personal search agent to your preferences. Will it work? Some very smart people seem to think so. It's an awful lot of tagging, and the interplay between ontological relationships and the constantly changing web content is hard to fathom. For things like people directories it's straightforward enough (Jill is a member of HR, John is a member of Jill's team, this is Jill's phone number, etc) but what about scientific research? Is it just a brute force memex?&lt;br /&gt;&lt;br /&gt;And if it does work, why hasn't it happened yet? The first barrier to entry is the engineering of ontological processing engines. Ontologies exist out there, and are easy enough to define, but to make them machine-processable, is a challenge. Then comes the monumental task of tagging all that content. Sees daunting, but the task of building a web site for every business in the country once seemed impossibly huge, also. If it's useful to people, they will do it. And may the best ontological tagging graph traversal engine win.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-2773347378519029924?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/2773347378519029924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=2773347378519029924' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/2773347378519029924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/2773347378519029924'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/06/six-semantic-pieces.html' title='Six Semantic Pieces'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-588898322529615468</id><published>2008-06-16T22:16:00.000-07:00</published><updated>2008-06-17T20:31:55.904-07:00</updated><title type='text'>Pre-Semantic</title><content type='html'>Suddenly it seems what she did made sense, but not in the usual way. Structure, yes, important, but confusing to those who need to see it differently. Usable, yes, but not the way you want. Yet. But when other systems need to talk, there in parallel. Agents need only find it once. Tag. Describe. Relate. Triplets can do that. Using services as a central pivot not such a bad idea. Tag the functional mechanics in triplet spans, but keep the user friendly visible, with number one use case front and center. In the end it was not a failure, but a stake in the ground. Shape of things to come. We can use it after all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-588898322529615468?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/588898322529615468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=588898322529615468' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/588898322529615468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/588898322529615468'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/06/pre-semantic.html' title='Pre-Semantic'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-8847139007905464170</id><published>2008-06-14T11:36:00.001-07:00</published><updated>2008-06-14T22:28:31.265-07:00</updated><title type='text'>So Much Tech, So Little Time</title><content type='html'>Fifteen years after the public debut of the world wide web, the rate of technological change is only increasing. For a software engineer there are a number of things to know, watch, learn, and re-learn.&lt;br /&gt;&lt;br /&gt;Start with the fundamentals: informatics, the hard science and math of software from O(n) all the way to NP-Complete, and keep up with the rapidly evolving standards on emerging technologies.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.w3.org/2001/sw/"&gt;The Semantic Web&lt;/a&gt; stands ready to revolutionize the way we retrieve data across the web. They have a &lt;a href="http://www.w3.org/TR/2008/NOTE-hcls-kb-20080604/"&gt;prototype knowledge base for life sciences&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oasis-open.org/home/index.php"&gt;OASIS (Organization for the Advancement of Structured Information Systems&lt;/a&gt; is working to promote open standards. Of particular interest is their web services standards. Remote portlets through web services fits nicely into a fully cross-platform SOA technology set. &lt;a href="http://www.oasis-open.org/specs/index.php"&gt;A complete list of standards can be found here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.swebok.org/"&gt;IEEE SWEBOK (Software Engineering Body Of Knowledge)&lt;/a&gt; has everything you need to know about the software development process. Pick your methodology: Waterfall, Spiral, RUP, Agile, Extreme, Wing Dings, with adequate documentation it's all good.&lt;br /&gt;&lt;br /&gt;There's the application servers:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/websphere/zones/was/"&gt;IBM WebSphere&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dev2dev.bea.com/wlserver/"&gt;BEA WebLogic&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dev2dev.bea.com/"&gt;BEA has a developer site&lt;/a&gt; with lots of good info. &lt;a href="http://developer.apple.com/"&gt;So does Apple&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As for web servers, &lt;a href="http://httpd.apache.org/"&gt;Apache&lt;/a&gt; is the only one you need. I'll be upgrading to v2.2 soon.&lt;br /&gt;&lt;br /&gt;Portal Servers! The framework is even more powerful with remote portlets and a workflow engine.&lt;br /&gt;&lt;br /&gt;SOA - Service Oriented Architecture, the approach to software infrastructure is very important. SOA makes the integration of disparate systems much more manageable.&lt;br /&gt;&lt;br /&gt;Data Services (DSP, Hibernate) and the associated XQuery and SQL. Database design is a big part of the job. Data dictionaries, meta-tables, normalized and denormalized relational tables. Data structures are the foundation upon which software is built.&lt;br /&gt;&lt;br /&gt;Web Services and WS-* message level security. Transport-level security is handled at the system level, message-level security at the application level.&lt;br /&gt;&lt;br /&gt;Workflow engines and the BPEL (Business Process Execution Language) specification.&lt;br /&gt;&lt;br /&gt;Is just one development environment ever enough? How about Eclipse for Java, XCode for Objective-C, HTMLkit for web markup and scripting, XMLspy for XML.&lt;br /&gt;&lt;br /&gt;For healthcare, there's the HL7 standard. As more advanced HL7 services are brought online, getting the right information to the right people at the right time will become automatic. Caregivers will have information retrieval agents that present the most relevant (AI inference) part of the medical record upon patient admission, and can also search and retrieve on command. There's CCR (Continuity of Care Record) already implemented in pilot programs for transmitting the medical record produced by each visit.&lt;br /&gt;&lt;br /&gt;What about the social web, which in math terms is network where nodes are people, edges are personal relationships, and the distance between any two nodes is measured in degrees of Kevin Bacon (Bacon Units). Web 2.0? Or just a big advertising agency? Stay Tuned.&lt;br /&gt;&lt;br /&gt;Webtop applications! AJAX, JavaScript, and the associated frameworks. This is how a web application can mimic the controls of any software UI, finally doing away with the limitations of page-level server requests.&lt;br /&gt;&lt;br /&gt;All the meanwhile, one must keep working on better object oriented design and program optimization. The languages to be fluent in are Java, C, C++, Objective-C, C#. Scripting languages such as Perl, Python, Ruby, unix shell do certain things really well. REST interfaces, EJB calls, and web services are all good choices for different remote functions. The right tool for the right job.&lt;br /&gt;&lt;br /&gt;I have a lot more reading to do.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-8847139007905464170?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/8847139007905464170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=8847139007905464170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8847139007905464170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8847139007905464170'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/06/so-much-tech-so-little-time.html' title='So Much Tech, So Little Time'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-7084901182844299129</id><published>2008-06-06T07:54:00.000-07:00</published><updated>2008-06-06T08:16:06.999-07:00</updated><title type='text'>Some Thoughts on Social Media</title><content type='html'>I probably shouldn't admit I have a facebook page. Or if I do, say it's for research purposes only.&lt;br /&gt;&lt;br /&gt;This is, in fact, a new kind of media, so there's insight to be gained by its use. It has roots in collaboration tools and can be used as such; however, its intended purpose is "digital identity," to put yourself and your social circle online. You can now keep in touch with friends essentially forever, without effort, even if you move half way around the world. That alone is a rather astonishing new development.&lt;br /&gt;&lt;br /&gt;Another unique property of social media is that audiences are built along relationship lines, so any message I send out goes to my friends first, then their friends, and so on. Not exactly the evening news. More like gossip on rocket skates.&lt;br /&gt;&lt;br /&gt;Then there is the impression management angle, where a good storyline (the news feed, wall, posted items) can make you appear hip, one of the cool kids. For example, you might hide the news feed item about being an NSYNC fan, and move your Sonic Youth playlist to the top (or is Sonic Youth still hip these days?)&lt;br /&gt;&lt;br /&gt;Finally, as people add likes and dislikes to their profile, those can be applied in various ways. Big money is betting on targeted advertising, and they're right. The $15 billion valuation of facebook is based on the per-share price Microsoft paid for a less that 2% stake. The revenue model is proven, but that doesn't mean facebook is worth as much as the Ford Motor Co. The impression I get is the facebook guys play hardball when it comes to capital investments, and Microsoft doesn't mind overpaying for early entry to the market.&lt;br /&gt;&lt;br /&gt;Nobody really knows what all this will look like. So any wacky idea is as likely to be right as the next. Also, there are still a lot of competitors. There hasn't been a big shakeout yet, meaning it's too early to tell. I recommend checking out Ning (&lt;a href="http://www.ning.com/" target="_blank" rel="nofollow"&gt;http://www.ning.com/&lt;/a&gt;) for those interested in the mechanics of it.&lt;br /&gt;&lt;br /&gt;Related Stories:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;a href="http://www.webguild.org/2008/06/how-to-make-500000-month-on-facebook.php"&gt; How To Make $500,000 A Month On Facebook (Silicon Valley Webguild)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://adage.com/cmostrategy/article?article_id=127430"&gt;Don't Just Follow the Latest Media Trends (Advertising Age)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-7084901182844299129?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/7084901182844299129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=7084901182844299129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/7084901182844299129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/7084901182844299129'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/06/some-thoughts-on-social-media.html' title='Some Thoughts on Social Media'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-8128200574325388194</id><published>2008-06-03T21:29:00.000-07:00</published><updated>2008-06-03T21:38:08.326-07:00</updated><title type='text'>Goosh - The Unofficial Google Shell</title><content type='html'>Someone wrote a command line google interface. A command shell. To google. It's cool.&lt;br /&gt;&lt;br /&gt;Go to &lt;a href="http://goosh.org/"&gt;http://goosh.org&lt;/a&gt; and see.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:lucida grande;font-size:85%;" class="less"  &gt;Goosh goosh.org 0.4.4-beta #1 Tue, 03 Jun 08 22:59:00 UTC Google/Ajax&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;    &lt;span style=";font-family:lucida grande;font-size:85%;" class="info"  &gt;Welcome to goosh.org - the unofficial google shell.&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;  &lt;span style=";font-family:lucida grande;font-size:85%;"  &gt; This google-interface behaves similar to a unix-shell.&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:lucida grande;font-size:85%;"  &gt; You type commands and the results are shown on this page.&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;script type="text/javascript"&gt; // &lt;!-- var gmail = "gmail.com"; document.write("&lt;&lt;a href="'mailto:grothkopp" subject="goosh.org'" style="'text-decoration:none;"&gt;grothkopp"+"@"+gmail+"&lt;/a&gt;&gt;"); //--&gt; &lt;/script&gt;&lt;span style=";font-family:lucida grande;font-size:85%;"  &gt; goosh is written by Stefan Grothkopp  &lt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;a href="mailto:grothkopp@gmail.com?subject=goosh.org" style="text-decoration: none; color: rgb(0, 0, 0);"&gt;grothkopp@gmail.com&lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:lucida grande;font-size:85%;"  &gt;&gt; &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:lucida grande;font-size:85%;"  &gt; it is NOT an official google product!&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;   &lt;script type="text/javascript"&gt; // &lt;!-- lang ='en';document.write("Your language has been set to: "+lang+" (use &lt;span class="'info'"&gt;lang&lt;/span&gt; to change it)"); //--&gt; &lt;/script&gt;&lt;span style=";font-family:lucida grande;font-size:85%;"  &gt;Your language has been set to: en (use &lt;/span&gt;&lt;span style=";font-family:lucida grande;font-size:85%;" class="info"  &gt;lang&lt;/span&gt;&lt;span style=";font-family:lucida grande;font-size:85%;"  &gt; to change it) &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;  &lt;span style=";font-family:lucida grande;font-size:85%;"  &gt;  Enter &lt;/span&gt;&lt;span style=";font-family:lucida grande;font-size:85%;" class="info"  &gt;help&lt;/span&gt;&lt;span style=";font-family:lucida grande;font-size:85%;"  &gt; or &lt;/span&gt;&lt;span style=";font-family:lucida grande;font-size:85%;" class="info"  &gt;h&lt;/span&gt;&lt;span style=";font-family:lucida grande;font-size:85%;"  &gt; for a list of commands. &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;    &lt;span style=";font-family:lucida grande;font-size:85%;"  &gt;guest@goosh.org:/web&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-8128200574325388194?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/8128200574325388194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=8128200574325388194' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8128200574325388194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8128200574325388194'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/06/google-shell.html' title='Goosh - The Unofficial Google Shell'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-2608362549171063375</id><published>2008-05-19T21:59:00.000-07:00</published><updated>2008-06-06T07:44:24.403-07:00</updated><title type='text'>Google Health Launches</title><content type='html'>It's live. Open for business. The first two hospitals to offer a CCR export to your PHR: Cleaveland Clinic and Beth Israel. More will follow suit, I'm sure. I wish Google luck and may the best PHR win.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://googlesystem.blogspot.com/2008/05/google-health-launches.html"&gt;The Announcement&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The blogs are a-twitter, sort of... &lt;a href="http://www.technorati.com/posts/33bk5mjgaCLE5PFYFgmrNN%2F25EoxJbPvX6fxA4I0oTI%3D"&gt;Technorati has a few hits&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.grahamazon.com/2007/08/patients-should-not-control-their-medical-record/"&gt;There's also a snarky but good discussion on this blog by a local med student. Go Trees, beat Cal, etc.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The app itself has a ways to go. Google Minimalism probably isn't what I want to manage my health. In fact, it looks like the application my team built five years ago, but less sophisticated (sorry Google -- you know it's true). For one thing we apply existing access rules derived from the EMR itself. We also have the best find-a-doctor, but whatever. Clearly Google's intent is not to create a consumer product, but a reference implementation for all those start-ups and dreamers looking at the size of the health care market right now. At this point anyone could hit on the killer app. All you need is an SDK, the right idea, one computer and a lot of gumption. Nobody knows what online health care will look like yet. It's sure not going to look like those paper charts designed in the 1800s that doctors will continue using until we come up with something better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-2608362549171063375?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/2608362549171063375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=2608362549171063375' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/2608362549171063375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/2608362549171063375'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/05/google-health-launches.html' title='Google Health Launches'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-8911378733605719962</id><published>2008-05-04T09:48:00.000-07:00</published><updated>2009-05-29T16:08:54.866-07:00</updated><title type='text'>We Are All Proactive Now</title><content type='html'>I think the term "proactive" should be taken off the list of buzzwords. I have heard that word so much lately I think we should just bite the bullet and make it an honorary member of our everyday lexicon.&lt;br /&gt;&lt;br /&gt;I remember a time when the word was reserved for thinking outside the box, stepping out of the comfort zone, shifting the paradigm, or (more specifically) incompetent people trying to sound smart. Lately, though, with increasing productivity demands of the modern workplace, the word is being thrown rapid fire around every corner of the office.  No longer a special case, proactiveness is now expected as an everyday proactivity. And it's become a freebie score in Buzzword Bingo.&lt;br /&gt;&lt;br /&gt;I don't see why proactive is such a special concept anyway, it only means doing things actively. Can things be done any other way? Sure, I can be inactive or reactive or even surrealistically quasi-active, but when what you're after is good old fashioned get-r-done gumption-fueled tenacity, nothing beats being proactive.&lt;br /&gt;&lt;br /&gt;Besides, when you think about it, proactive is really just a polite way of saying, "You know what to do, just get off your ass and do it!"&lt;br /&gt;&lt;br /&gt;At my workplace, we are constantly reminding each other to be proactive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-8911378733605719962?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/8911378733605719962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=8911378733605719962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8911378733605719962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8911378733605719962'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/05/we-are-all-proactive-now.html' title='We Are All Proactive Now'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-5409129615307255328</id><published>2008-05-04T09:28:00.001-07:00</published><updated>2008-12-12T21:03:04.834-08:00</updated><title type='text'>The Pilot Collection Grows</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_M_7azHKAR1U/SB3lirXzPwI/AAAAAAAAABg/tWgJQKck1uw/s1600-h/pilot+collection.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_M_7azHKAR1U/SB3lirXzPwI/AAAAAAAAABg/tWgJQKck1uw/s320/pilot+collection.jpg" alt="" id="BLOGGER_PHOTO_ID_5196561928976285442" border="0" /&gt;&lt;/a&gt;I was down at Weird Stuff yesterday and they had a huge box of old PDAs. Now this is one focus of my collection, so sifted through those boxes until after closing time. I found a nice set of m-series devices and an original US Robotics cradle. Here you can see my newly expanded collection arranged on the coffee table.&lt;br /&gt;&lt;br /&gt;Starting at the bottom left, going counter-clockwise: US Robotics Pilot 1000, the grand-daddy of them all; A Palm IIIe Special Edition (this one got me through the 90s in geek style); a Palm VII Wireless; Palm IIIc (their first color PDA), and finally the m-series: m100, m150, and m130.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-5409129615307255328?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/5409129615307255328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=5409129615307255328' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/5409129615307255328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/5409129615307255328'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/05/pilot-collection-grows.html' title='The Pilot Collection Grows'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_M_7azHKAR1U/SB3lirXzPwI/AAAAAAAAABg/tWgJQKck1uw/s72-c/pilot+collection.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-1129355695928159154</id><published>2008-04-20T18:35:00.000-07:00</published><updated>2008-12-12T21:03:04.995-08:00</updated><title type='text'>A Delicious Beverage</title><content type='html'>Coupa Cafe in downtown Palo Alto likes to get fancy with their beverages. A latte like this plus the wi-fi makes it a good place to unwind after work.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_M_7azHKAR1U/SAvv3jjy79I/AAAAAAAAABQ/ImbODRa1dVU/s1600-h/latte.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_M_7azHKAR1U/SAvv3jjy79I/AAAAAAAAABQ/ImbODRa1dVU/s320/latte.jpg" alt="" id="BLOGGER_PHOTO_ID_5191506733191851986" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-1129355695928159154?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/1129355695928159154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=1129355695928159154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1129355695928159154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1129355695928159154'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/04/delicious-beverage.html' title='A Delicious Beverage'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_M_7azHKAR1U/SAvv3jjy79I/AAAAAAAAABQ/ImbODRa1dVU/s72-c/latte.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-972210415999835668</id><published>2008-04-17T17:44:00.000-07:00</published><updated>2008-04-19T19:29:10.596-07:00</updated><title type='text'>King of Kong</title><content type='html'>Turns out the guy who wrote Donkey Kong for the Atari has &lt;a href="http://www.dadhacker.com/blog/?p=987"&gt;blogged about it&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-972210415999835668?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/972210415999835668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=972210415999835668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/972210415999835668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/972210415999835668'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/04/donkey-kong.html' title='King of Kong'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-4145640755149471454</id><published>2008-04-16T21:13:00.000-07:00</published><updated>2008-12-12T21:03:05.945-08:00</updated><title type='text'>Classic Computers and Me</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_M_7azHKAR1U/SAbP0JgQKmI/AAAAAAAAAAo/EoE8qOYerH0/s1600-h/atari2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer;" src="http://1.bp.blogspot.com/_M_7azHKAR1U/SAbP0JgQKmI/AAAAAAAAAAo/EoE8qOYerH0/s320/atari2.jpg" alt="" id="BLOGGER_PHOTO_ID_5190064115402418786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You may be wondering about the Donkey Kong.&lt;br /&gt;&lt;br /&gt;Like many things, it started in the '90s. That's when I found myself in Silicon Valley surrounded by all these strange new "computers." Not traditional computers, but compu-gadgets. Things that go beep. Some fit in the palm of your hand and they were being invented all around me, I only had to reach out and grab them. Next thing I knew, I had a nice little collection of devices. Hey, my friend would say, if you like that you'll love this. Next thing I know I own Data General DG-1, fully loaded marvel of engineering and circa 1984, a miracle of rapid obsolescence. You can see where this is going. I began collecting anything interesting or unusual. I learned computer history, serial numbers, feature sets and options, prototypes. Study, tinker, hack. I signed up for volunteer work at the Computer History Museum where I learned how to properly handle, restore, and preserve them.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_M_7azHKAR1U/SAbRW5gQKnI/AAAAAAAAAAw/f9Eb7U8sJVc/s1600-h/DSC00194.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_M_7azHKAR1U/SAbRW5gQKnI/AAAAAAAAAAw/f9Eb7U8sJVc/s320/DSC00194.jpg" alt="" id="BLOGGER_PHOTO_ID_5190065811914500722" border="0" /&gt;&lt;/a&gt;These are some classic touch-screen devices from the 1990s and the genesis of this hobby. On the left is an Apple eMate. They took a Newton and fit it into a laptop form for kids. This one is a prototype and was field tested by the 11 year old daughter of one of Apple's engineers. It still has a letter to mom and dad and some doodles in its flash memory. You can see an Apple promotional wristwatch next to it. In the middle is a 3Com Audrey, an "Internet Appliance" built in the Judy Jetson style. It has a wireless keyboard and when you have email, the clear stylus on top blinks like an antennae. To the right is the Palm IIIe Special Edition that got me through the dot com bubble with hip tech cred. I had the Star Trek communicator sound effects installed. I flipped it open and said beam me up Scotty way more than I should have. I have since found a US Robotics Pilot (the predecessor of them all!), a IIIc Color, and a Palm VII Wireless which has special sentimental value as I built the developer site for that puppy.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_M_7azHKAR1U/SAbTf5gQKoI/AAAAAAAAAA4/ame7tcEkMcY/s1600-h/apple2c.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer;" src="http://4.bp.blogspot.com/_M_7azHKAR1U/SAbTf5gQKoI/AAAAAAAAAA4/ame7tcEkMcY/s320/apple2c.jpg" alt="" id="BLOGGER_PHOTO_ID_5190068165556578946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This Apple //c with the rare flat-panel display was just a good deal on eBay. I couldn't pass up the chance to own one! It's complete with the original software, manuals, carrying case, and a lapel pin.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Finally, my most funnest toy...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_M_7azHKAR1U/SAbULJgQKpI/AAAAAAAAABA/gMdHrF9RJXA/s1600-h/atari26.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_M_7azHKAR1U/SAbULJgQKpI/AAAAAAAAABA/gMdHrF9RJXA/s320/atari26.jpg" alt="" id="BLOGGER_PHOTO_ID_5190068908585921170" border="0" /&gt;&lt;/a&gt;Have you played Atari today? That was their slogan. That's a 2600 and a 400 with a large collection of games and a 1979 color television, all on a rolling TV cart. Nothing in this picture was built after 1984. It's a period piece I put together for the vintage computer festival. Everything is there and it all works. I enjoy a game of Joust once in a while. Or Warlords if company is over.&lt;br /&gt;&lt;br /&gt;You can see in the view from the top, it has the vintage switches on proud display. Even some Atari corporate swag. Now that's home computer history!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_M_7azHKAR1U/SAbVsJgQKqI/AAAAAAAAABI/GK642pUkrg8/s1600-h/atari27.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_M_7azHKAR1U/SAbVsJgQKqI/AAAAAAAAABI/GK642pUkrg8/s320/atari27.jpg" alt="" id="BLOGGER_PHOTO_ID_5190070575033232034" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-4145640755149471454?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/4145640755149471454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=4145640755149471454' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/4145640755149471454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/4145640755149471454'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/04/classic-computers-and-me.html' title='Classic Computers and Me'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_M_7azHKAR1U/SAbP0JgQKmI/AAAAAAAAAAo/EoE8qOYerH0/s72-c/atari2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-8257421411661446176</id><published>2008-04-09T10:21:00.001-07:00</published><updated>2008-06-06T07:50:07.274-07:00</updated><title type='text'>We Are All Architects Now</title><content type='html'>Computer Science legend Edsgar W. Dijkstra expounds on overuse of the term software engineer. Apparently at some point the job title of analyst/programmer didn't sound good enough so with a little help from HR, programmers became software engineers. Dijkstra's laments that engineer used to imply a master's degree and now it's a community college certificate. Nowadays even engineer doesn't carry the prestige it used to, and everyone is clamouring for the title software architect. You lose, Dijkstra!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cs.utexas.edu/users/EWD/transcriptions/EWD11xx/EWD1165.html"&gt;SOFTWARE ENGINEERING AIN'T WHAT IT USED TO BE&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-8257421411661446176?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/8257421411661446176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=8257421411661446176' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8257421411661446176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8257421411661446176'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/04/everyone-is-architect-now.html' title='We Are All Architects Now'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-2664082350368806872</id><published>2008-04-07T21:08:00.000-07:00</published><updated>2008-04-07T21:13:21.033-07:00</updated><title type='text'>Multitainment</title><content type='html'>Watching  TV on mute, playing music, browsing the web, and other fun activities together as one composite entertainment application. A home appliance mash-up. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-2664082350368806872?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/2664082350368806872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=2664082350368806872' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/2664082350368806872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/2664082350368806872'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/04/multitainment.html' title='Multitainment'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-3489122578989792155</id><published>2008-03-22T14:36:00.000-07:00</published><updated>2008-03-22T14:40:14.293-07:00</updated><title type='text'>Linux on the new Macbook</title><content type='html'>I'm writing this email using 64 bit Linux on my MacBook. I found the instructions here:&lt;br /&gt;&lt;br /&gt;https://help.ubuntu.com/community/MacBook&lt;br /&gt;&lt;br /&gt;https://help.ubuntu.com/community/MacBook_Santa_Rosa&lt;br /&gt;&lt;br /&gt;Took a while to get wireless working. For older MacBooks you can compile your own device driver. Easy, huh? My wireless chipset is not natively supported yet. I had to use a wrapper around the Windows driver.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://ubuntu-tutorials.com/2007/10/24/how-to-enable-wireless-networking-on-the-macbook-ubuntu-710/&lt;br /&gt;&lt;br /&gt;Next step is to install BEA development tools. I found instructions here:&lt;br /&gt;&lt;br /&gt;http://dev2dev.bea.com/blog/wgroth2/archive/2006/07/ubuntu_and_bea.html&lt;br /&gt;&lt;br /&gt;Downloading now (via wireless!). We'll see how it goes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-3489122578989792155?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/3489122578989792155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=3489122578989792155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/3489122578989792155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/3489122578989792155'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/03/linux-on-new-macbook.html' title='Linux on the new Macbook'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-6377288543798875230</id><published>2008-03-20T22:44:00.000-07:00</published><updated>2009-12-04T20:23:17.693-08:00</updated><title type='text'>Ten Years in Silicon Valley</title><content type='html'>Originally posted on MySpace Dec 31, 2007:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                                           Dec 31, 1997 - Dec 31, 2007: Ten Years in Silicon Valley&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;My Top Ten Silicon Valley Memories of the Past Ten Years.&lt;br /&gt;&lt;br /&gt;10. Riding on top of a Battlebot in the parking lot yelling yee-haw ala Slim Pickens in Dr Strangelove.&lt;br /&gt;9. Star Trek Parties with a bunch of nerds who converted their family room into a star ship bridge, complete with giant view screen, captain's chairs, working computer terminals, simulated ion tubing, and the latest in lite-brite display technology.&lt;br /&gt;8. Early admittance to the vintage arcade festival, where I played Asteroids in front of a wall of cheesy 80s music videos.&lt;br /&gt;7. Playing with some of the first portable MP3 players. They held like 5 or 10 songs!&lt;br /&gt;6. Late night at a Dot-Com Launch Party, holding a ten foot length of drink tickets acquired from Jello Biafra, buying drinks for every increasingly attractive girl in the place and yelling, "Oh yeah! The stock market hasn't been this good since 1928!"&lt;br /&gt;5. Talking to a Palm Pilot engineer about the new Palm III, looking and opening exactly like a Star Trek communicator, with sound effects, asking whether it was really quite nerdy enough. And if you must know, I had the IIIe Special Edition. With sound effects.&lt;br /&gt;4. Telling Steve Wozniak -- notorious prankster -- about a computer prank I liked to pull when I was a kid.&lt;br /&gt;3. Summer 1999, Friday, 5pm, sitting outside our downtown office, sipping wine and discussing the past, present and future of the web.&lt;br /&gt;2. Late nights, coding furiously, hopped up on organic Kona coffee.&lt;br /&gt;&lt;br /&gt;And finally, my top silicon valley memory of the past ten years...&lt;br /&gt;&lt;br /&gt;1. Driving into a parking lot in Stanford for the first time around 2pm on New Year's Eve, dreaming of the future.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-6377288543798875230?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/6377288543798875230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=6377288543798875230' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/6377288543798875230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/6377288543798875230'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/03/10-years-in-silicon-valley.html' title='Ten Years in Silicon Valley'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-3560123950327710085</id><published>2008-03-20T22:29:00.000-07:00</published><updated>2008-03-20T22:34:36.676-07:00</updated><title type='text'>Garfield minus Garfield</title><content type='html'>Something else that would never exist without the Internet...&lt;br /&gt;&lt;a href="http://garfieldminusgarfield.tumblr.com/"&gt;&lt;br /&gt;http://garfieldminusgarfield.tumblr.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-3560123950327710085?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/3560123950327710085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=3560123950327710085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/3560123950327710085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/3560123950327710085'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/03/garfield-minus-garfield.html' title='Garfield minus Garfield'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-2875227198461132947</id><published>2008-03-18T23:21:00.000-07:00</published><updated>2008-03-18T23:23:08.866-07:00</updated><title type='text'>I cannot blog from my iPhone</title><content type='html'>&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-2875227198461132947?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/2875227198461132947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=2875227198461132947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/2875227198461132947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/2875227198461132947'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2008/03/i-cannot-blog-from-my-iphone.html' title='I cannot blog from my iPhone'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-1329290163807140050</id><published>2007-07-11T19:41:00.000-07:00</published><updated>2008-06-06T07:52:02.802-07:00</updated><title type='text'>More iPhone. Yay! yippie... hoo...rah...(?)</title><content type='html'>Wow, that iPhone sure has some &lt;a href="http://www.youtube.com/watch?v=VLo1USJIkgY"&gt;NEAT FEATURES&lt;/a&gt; (as seen on Conan).&lt;br /&gt;&lt;br /&gt;Sure it can do that, but &lt;a href="http://www.engadget.com/2007/07/10/will-it-blend-the-iphone-smoothie/"&gt;WILL IT BLEND?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More people are &lt;a href="http://www.techonline.com/product/underthehood/200900080"&gt;taking it apart&lt;/a&gt;, but what interests me is Apple's &lt;a href="http://developer.apple.com/technotes/tn2002/tn2075.html"&gt;power management systems&lt;/a&gt;, and not just because I spent all day Saturday listening to the Live Earth Internet broadcast.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-1329290163807140050?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/1329290163807140050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=1329290163807140050' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1329290163807140050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/1329290163807140050'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2007/07/more-iphone-yay-yippie-hoorah.html' title='More iPhone. Yay! yippie... hoo...rah...(?)'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-8554620111251314115</id><published>2007-07-11T07:28:00.001-07:00</published><updated>2007-07-11T07:29:12.009-07:00</updated><title type='text'>Apple v Apple</title><content type='html'>The real reason the Beatles are suing Apple Computer:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=jcVS9ssNYVQ"&gt;http://www.youtube.com/watch?v=jcVS9ssNYVQ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-8554620111251314115?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/8554620111251314115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=8554620111251314115' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8554620111251314115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8554620111251314115'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2007/07/apple-v-apple.html' title='Apple v Apple'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-2946488943847940527</id><published>2007-07-10T15:21:00.001-07:00</published><updated>2007-07-11T07:29:35.662-07:00</updated><title type='text'>A Websphere Blog</title><content type='html'>&lt;a href="http://www.skywayradio.com/"&gt;http://www.skywayradio.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-2946488943847940527?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/2946488943847940527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=2946488943847940527' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/2946488943847940527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/2946488943847940527'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2007/07/websphere-blog.html' title='A Websphere Blog'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-8844550837003744064</id><published>2007-07-10T13:17:00.000-07:00</published><updated>2007-07-11T07:30:19.542-07:00</updated><title type='text'>Tim Berners-Lee and the Semantic Web</title><content type='html'>Just for hysterical raisins, the original proposal for the world wide web:&lt;br /&gt;&lt;a href="http://info.cern.ch/Proposal.html"&gt;&lt;br /&gt;http://info.cern.ch/Proposal.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And a recent interview with Tim about the "semantic web"&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.itworld.com/Tech/4535/070709future/index.html"&gt;http://www.itworld.com/Tech/4535/070709future/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There have been some interesting articles in ACM/IEEE pubs about relational documents on the web, but lunchtime is over.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-8844550837003744064?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/8844550837003744064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=8844550837003744064' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8844550837003744064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8844550837003744064'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2007/07/tim-berners-lee-and-semantic-web.html' title='Tim Berners-Lee and the Semantic Web'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-8473409043017290312</id><published>2007-07-09T17:43:00.000-07:00</published><updated>2007-07-11T19:41:52.800-07:00</updated><title type='text'>iPhone</title><content type='html'>Awesome step by step how to take apart an iPhone. I swear I will never understand why some people don't want to take things apart.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ifixit.com/Guide/iPhone"&gt;http://www.ifixit.com/Guide/iPhone&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Or access the device using an interactive shell&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hackint0sh.org/forum/showthread.php?t=1408"&gt;http://hackint0sh.org/forum/showthread.php?t=1408&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And apparently the root password is "alpine" Gee I wonder what neighborhood burger joint they were having beers at when they came up with that?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-8473409043017290312?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/8473409043017290312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=8473409043017290312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8473409043017290312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/8473409043017290312'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2007/07/iphone.html' title='iPhone'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2412539259025916215.post-7732665472627863355</id><published>2007-07-06T08:55:00.001-07:00</published><updated>2007-07-06T14:16:29.632-07:00</updated><title type='text'>Alternating Colors in a List</title><content type='html'>A bit of display code I came up with.&lt;br /&gt;&lt;br /&gt;The problem: Your (database-driven) web page has a very long list of items and you want to make it easier to view.&lt;br /&gt;&lt;br /&gt;The solution: Alternate background colors on each row, or preferably every third row, or fourth.&lt;br /&gt;&lt;br /&gt;It's easy enough to alternate colors every other row, with code like this:&lt;br /&gt;&lt;br /&gt;rowcount = 0&lt;br /&gt;&lt;list&gt;&lt;br /&gt;if (rowcount++ % 2) rowcolor = grey else rowcolor = white&lt;br /&gt;&lt;list color="rowcolor"&gt;...&lt;br /&gt;next item&lt;br /&gt;&lt;/list&lt;br /&gt;&lt;br /&gt;But I find that looks too busy. What if I want to have three lines of grey and then three lines of white? Given that I'm keeping the variable rowcount, I can simply modify the equation from:&lt;br /&gt;&lt;br /&gt;if (rowcount % 2)&lt;br /&gt;&lt;br /&gt;which, given the modulus of 2 will return a 0 if the rowcount is even, and 1 if the rowcount is odd; instead, try this:&lt;br /&gt;&lt;br /&gt;if ((rowcount / 3) % 2)&lt;br /&gt;&lt;br /&gt;What does this do? Well, first it divides the current row number by 3, no remainder. that means the first 3 rows (if you start with 0) divided by 3 will be 0, the next 3 will be 1, the next 3 will be 2, etc. The result of this divide will be alternating odd or even. That's where the modulus 2 comes in. Then you have a binary value alternating between 0 and 1 every 3 rows.&lt;br /&gt;&lt;br /&gt;You can also divide by 4, 5, or any number to increase the number of rows in each color block.&lt;br /&gt;&lt;br /&gt;I'll be looking for an example of a site that does this. The one I did is internal only, so no link here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2412539259025916215-7732665472627863355?l=nerdpod.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nerdpod.blogspot.com/feeds/7732665472627863355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2412539259025916215&amp;postID=7732665472627863355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/7732665472627863355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2412539259025916215/posts/default/7732665472627863355'/><link rel='alternate' type='text/html' href='http://nerdpod.blogspot.com/2007/07/alternating-colors-in-list.html' title='Alternating Colors in a List'/><author><name>Tom Wilson</name><uri>https://profiles.google.com/116345141615324670116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0Wj47VDnPg0/AAAAAAAAAAI/AAAAAAAAAX0/1pteICND5ew/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
