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

<channel>
	<title>Developer3</title>
	<atom:link href="http://kire.notneb.net/feed" rel="self" type="application/rss+xml" />
	<link>http://kire.notneb.net</link>
	<description>who let this idiot out of his cage?</description>
	<pubDate>Tue, 21 Oct 2008 04:01:41 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>My brush with greatness</title>
		<link>http://kire.notneb.net/archives/65</link>
		<comments>http://kire.notneb.net/archives/65#comments</comments>
		<pubDate>Tue, 21 Oct 2008 04:01:41 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://kire.notneb.net/?p=65</guid>
		<description><![CDATA[Twitter is now my all time favorite Web 2.0 app. I know this is totally a childish moment and a bit of hero worship, but it is still great.

]]></description>
			<content:encoded><![CDATA[<p>Twitter is now my all time favorite Web 2.0 app. I know this is totally a childish moment and a bit of hero worship, but it is still great.</p>
<p><a href="http://kire.notneb.net/wp-content/uploads/2008/10/bursh-with-greatness.png"><img src="http://kire.notneb.net/wp-content/uploads/2008/10/bursh-with-greatness-300x96.png" alt="" title="bursh-with-greatness" width="300" height="96" class="alignnone size-medium wp-image-63" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://kire.notneb.net/archives/65/feed</wfw:commentRss>
		</item>
		<item>
		<title>Learning the hard way.</title>
		<link>http://kire.notneb.net/archives/54</link>
		<comments>http://kire.notneb.net/archives/54#comments</comments>
		<pubDate>Tue, 12 Aug 2008 16:20:17 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://kire.notneb.net/?p=54</guid>
		<description><![CDATA[Database backups are not a difficult thing, but they are tedious and only important when there is a crisis at hand. Recently we ran into a situation where backups failed to protect us from some worst practices and we had to scrape together the binlogs and old dumps to resurrect the table.

What follows is a true story although the names and places have been changed.]]></description>
			<content:encoded><![CDATA[<p>Database backups are not a difficult thing, but they are tedious and only important when there is a crisis at hand. Recently we ran into a situation where backups failed to protect us from some worst practices and we had to scrape together the binlogs and old dumps to resurrect the table.</p>
<p>What follows is a true story although the names and places have been changed.</p>
<p>At 13:45 a developer execute the following query<br />
<code><br />
DELETE FROM table<br />
return 159 rows effected<br />
</code> </p>
<p>He intended to execute a<code> SELECT * FROM table</code>, and just remove the <strong>WHERE</strong> clause from a previous query but it turned out to be a <code>DELETE FROM table WHERE ID = #</code>.</p>
<p>As soon as the trigger was pulled he realized his mistake. I was brought in to resurrect the data because I previously performed all backups.</p>
<p>Off we go.</p>
<ol>
<li>Stop replication</li>
<li>Flush logs</li>
<li>if you can do the processing on the server wonderful, other wise copy the binlogs to a recovery system.</li>
<li><code>mysqlbinlog -d mydb mysql-binlog.[0-9]* | sed &#8216;/table/,/;/!d&#8217; > recovery_file</code></li>
<li>start replication</li>
</ol>
<p>From the recovery_file we had a list of every statement issued against the table and we could replay all transactions to return the table to it&#8217;s original state with a little editing.</p>
<p>We are now reviewing our backup and recovery practices. I hope this was educational for you as it was for me.</p>
<p>I found the key point for the sed command in this <a href="http://sed.sourceforge.net/sedfaq4.html#s4.24">document</a>, and this <a href="http://www.grymoire.com/Unix/Sed.html">tutorial</a> helped greatly.</p>
]]></content:encoded>
			<wfw:commentRss>http://kire.notneb.net/archives/54/feed</wfw:commentRss>
		</item>
		<item>
		<title>Beyond REST session</title>
		<link>http://kire.notneb.net/archives/28</link>
		<comments>http://kire.notneb.net/archives/28#comments</comments>
		<pubDate>Sat, 02 Aug 2008 23:27:14 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[oscon08]]></category>

		<guid isPermaLink="false">http://kire.notneb.net/?p=28</guid>
		<description><![CDATA[When we talk about modern web APIs we are mostly talking about REST(http://en.wikipedia.org/wiki/REST). In the last couple of years it has easily become more popular than similar layers like XMLRPC and SOAP. While these protocols work in a number of situations many of the popular Web Applications like Flickr have begun to look for methods [...]]]></description>
			<content:encoded><![CDATA[<p>When we talk about modern web APIs we are mostly talking about REST(<a href="http://en.wikipedia.org/wiki/REST">http://en.wikipedia.org/wiki/REST</a>). In the last couple of years it has easily become more popular than similar layers like XMLRPC and SOAP. While these protocols work in a number of situations many of the popular Web Applications like Flickr have begun to look for methods that afford greater scalability than the those that use HTTP for data exchange. </p>
<p>Since HTTP is a stateless protocol it runs into problems when data changes occur. With HTTP the client must poll for new data, over, and over, and over, and over &#8230; Flickr threw up some numbers at the session that nailed home the challenges large web apps face. July alone Flickr had nearly 3 million requests from FriendFeed (a social content aggregator for your online presence), for 6000 users. Clearly this sort of traffic won&#8217;t fly as more people climb aboard.</p>
<p>The presenters, Evan Henshaw-Plath and Kellan Elliot proposed repurposing XMPP (typically an IM protocol) for the purposes of creating data streams for more efficient exchange. While REST is a constant request for new data, XMPP really is a subscription model, where a client establishes a session and listens for requested data. I don&#8217;t have their metrics handy, but the difference was remarkable, effectively shrinking the whole thing down to about 1% of the original traffic. </p>
<p>Their reason were:</p>
<ul>
<li>persistent connections
<li>
<li>stateful - less ID on each connection</li>
<li>designed to be event streaming protocol</li>
<li>natively frederated and asychronous</li>
<li>identity, security, and presence built in</li>
<li>jabber servers are built to do this</li>
</ul>
<p>They also used PubSub (<a href="http://www.xmpp.org/extensions/xep-0060.html">http://www.xmpp.org/extensions/xep-0060.html</a>), a protocol extension, to achieve the subscription model, and OAuth for authentication.</p>
<p>While this had little to do with my work, it was fascinating to hear how larger enterprising handle the scaling issues that inevitably plague any popular web app. We have tried to do data streams ourselves in a couple of situations using Flash&#8217;s XML Sockets, which work well except 1. it&#8217;s in Flash and 2. it doesn&#8217;t route through firewalls easily. I don&#8217;t necessarily think Flash is bad, but it is difficult to support at times. I thoroughly enjoyed the talk. Evan and Kellan have a great presentation style that makes them easy to relate to. </p>
<p>A couple of miscellaneous notes:<br />
The jid per user oauth authentication handles the identification of users.</p>
<p>XMPP Data service example</p>
<ol>
<li>hello world</li>
<ul>
<li>jabber:simple</li>
<li>xmpphp for php</li>
<li>smack javae</li>
</ul>
<li>jabber account</li>
<li> connect and send a message</li>
</ol>
<p><strong>Servers</strong></p>
<ul>
<li>ejabberd</li>
<li>djabberd</li>
<li>openfire/wildfire java server</li>
<li>tigase - java server</li>
</ul>
<p>When setting up a server, turn off lots of features, for example turn off open subscribing. For this sort of data streaming there is little need for the multitude of features that XMPP offers to IM clients.</p>
<p>Build a component example</p>
<ul>
<li>use a compnent XEP-0114</li>
<li>persistent talks over local socket</li>
<li>YAGNI: rosters. presence</li>
<li>Load balance</li>
</ul>
<p>Starling - no idea what this was about</p>
<p>OAuth over XMPP - delgation of identification</p>
]]></content:encoded>
			<wfw:commentRss>http://kire.notneb.net/archives/28/feed</wfw:commentRss>
		</item>
		<item>
		<title>Laika - Better EHR for all of us.</title>
		<link>http://kire.notneb.net/archives/41</link>
		<comments>http://kire.notneb.net/archives/41#comments</comments>
		<pubDate>Sat, 02 Aug 2008 19:20:11 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[oscon08]]></category>

		<guid isPermaLink="false">http://kire.notneb.net/?p=41</guid>
		<description><![CDATA[The medical industry has been struggling for years to determine how to exchange patient information in a uniform manner. Every entity has their own method for piecing together the mishmash of data they collect and filing it away for later use. Now, with governement agencies like Medicare/Medicaid (US) pushing hard on providers to fling themselves [...]]]></description>
			<content:encoded><![CDATA[<p>The medical industry has been struggling for years to determine how to exchange patient information in a uniform manner. Every entity has their own method for piecing together the mishmash of data they collect and filing it away for later use. Now, with governement agencies like Medicare/Medicaid (US) pushing hard on providers to fling themselves into the 21st Century and requires all providers to have EHRs by 2009 there has never been a more pressing need for consistent EHRs.</p>
<p>Enter Laika (<a href="http://laikaproject.org">http://laikaproject.org</a>); a test suite for Electronic Heath Records (EHR). Laika&#8217;s purpose is to support the accessibility of data for providers and patients. Publishers of EHRs using the C32 specification must have their data exports certified by the CCHIT (<a href="http://en.wikipedia.org/wiki/CCHIT">http://en.wikipedia.org/wiki/CCHIT</a>), which uses Laika for that exact purpose. Laika&#8217;s architecture consists of a Rails app up front with Java engines behind for the XML parsing. At this time they only support C32, but with other players entering the market they want to support the CCR standard as well and transforming between the two specifications.</p>
<p>The C32 specification is a combination of of both the CDA (Clinical Document Architecture) spec and CCD (Clinical Care Data).  These standards are governed by HL7/ATSM (<a href="http://en.wikipedia.org/wiki/HL7">http://en.wikipedia.org/wiki/HL7</a>), the industry gorilla when it comes to EHRs. A more recent cousin of the C32, the CCR (or Continuity of Care Record, http://en.wikipedia.org/wiki/Continuity_of_Care_Record), has struck the fancy of software behemoths Google in their Google Health (<a href="https://www.google.com/health/html/about/index.html">https://www.google.com/health/html/about/index.html</a>) system, and Microsoft&#8217;s Health Vault (<a href="http://en.wikipedia.org/wiki/HealthVault">http://en.wikipedia.org/wiki/HealthVault</a>). The main differences between the two are the document size and detail. As one would expect, the software companies prefer the lighter CCR standard while the industry backs the dense but more verbose C32.</p>
<p>This means that for my projects that as we continue to look at the clinical space we will have to eventually either consume or publish resident information in one of these two standards.</p>
<p>Additional Notes:<br />
would be interesting to see what avenues are open to the consumer market. Google&#8217;s plan</p>
<p>NIST provides transform tools<br />
HL7 has a style sheet</p>
]]></content:encoded>
			<wfw:commentRss>http://kire.notneb.net/archives/41/feed</wfw:commentRss>
		</item>
		<item>
		<title>Drupal login and SSL</title>
		<link>http://kire.notneb.net/archives/10</link>
		<comments>http://kire.notneb.net/archives/10#comments</comments>
		<pubDate>Sat, 03 May 2008 17:34:12 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[drupal apache web programming]]></category>

		<guid isPermaLink="false">http://kire.notneb.net/?p=10</guid>
		<description><![CDATA[After the last article, I discovered that the Drupal framework, while it works perfectly within a SSL context provides little in the way of helping developers direct their users into the secure site. In our application we provide some content to the public at large, but we also require the majority of the site in [...]]]></description>
			<content:encoded><![CDATA[<p>After the last article, I discovered that the Drupal framework, while it works perfectly within a SSL context provides little in the way of helping developers direct their users into the secure site. In our application we provide some content to the public at large, but we also require the majority of the site in a private context. This proved challenging because we didn&#8217;t want the expense of redirecting the common Joe Browser into the SSL when their casual experience wouldn&#8217;t require the overhead. Fortunately, after my last lesson in mod_rewrite I figured a clever approach to pushing authenticated users into the secure context.</p>
<p><code>RewriteCond %{REQUEST_URI} ^/user<br />
RewriteCond %{SERVER_PORT} ^80$<br />
RewriteCond ^(.*)$ https://example.com/$1 [L,R]</code></p>
<p>Since Drupal uses the same login section of the site, I was able to push the user under SSL when they went to log in. This doesn&#8217;t necessarily prevent them  from dropping out of SSL when theyenter the site, but it does mean that they will end up in the right place at the outset.</p>
]]></content:encoded>
			<wfw:commentRss>http://kire.notneb.net/archives/10/feed</wfw:commentRss>
		</item>
		<item>
		<title>Great minds, or how I learned to love mod_rewrite.</title>
		<link>http://kire.notneb.net/archives/9</link>
		<comments>http://kire.notneb.net/archives/9#comments</comments>
		<pubDate>Fri, 02 May 2008 03:28:52 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[apache programming web]]></category>

		<guid isPermaLink="false">http://kire.notneb.net/?p=9</guid>
		<description><![CDATA[Today we rushed to push out another site for our primary customer&#8217;s new facility opening tomorrow. Since it&#8217;s under the same umbrella organization we thought it best to use the subdomain form of the URL, rather than shoehorning it under the primary www site. Of course, within 10 minutes of the new users visiting the [...]]]></description>
			<content:encoded><![CDATA[<p>Today we rushed to push out another site for our primary customer&#8217;s new facility opening tomorrow. Since it&#8217;s under the same umbrella organization we thought it best to use the subdomain form of the URL, rather than shoehorning it under the primary www site. Of course, within 10 minutes of the new users visiting the site we were already finding users who could not help but add the &#8220;www&#8221; even though we never mentioned the prefix. So I decided that we should redirect the users to the &#8220;correct&#8221; form of the subdomain. After a little research, I discovered the joys of mod_rewrite solving this specific issue.  </p>
<p>Most sites want users to use the nearly ubiquitous &#8220;www&#8221; prefix. As Jeff Atwood mentioned in his post <a href="http://www.codinghorror.com/blog/archives/001109.html">on the topic</a>. It has become so pervasive in the web sector that it is nearly a non-entity; if you mention it you are being redundant. As Jeff argues, with the power of mod_rewrite penetrating even the ivory towers of IIS with add-ons like ISAPI Rewrite, we as developers must shoulder the responsibility to conform to our users behavior. It is so simple to gracefully handle the requests that not being flexible for our users is the ultimate crime.</p>
<p>In my experiment I had to tackle removing the &#8220;dub-dub-dub&#8221; prefix and sending the user the the stripped URL without. In most circumstances, the site maintainer will add the following to either the <em>httpd.conf</em> or to an <em>.htaccess</em><br />
<code><br />
  RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]<br />
  RewriteRule ^(.*)$ http://%1/$1 [L,R=301]<br />
</code><br />
The RewriteCond is effectively our if statement. If the requested host begins (^) with the world famous &#8220;www.&#8221;, followed by any number of characters &#8220;(.*)&#8221;, without regard to character case (&#8221;[NC]&#8220;), then go to our RewriteRule.</p>
<p>The RewriteRule then changes the whole mess into the previous argument without the &#8220;www&#8221; mess and informs the browser that the request is permanently redirected.</p>
<p>These two short lines change bizarre &#8220;http://www.kire.notneb.net&#8221; into the familiar &#8220;http://kire.notneb.net&#8221; once again righting the wrongs of &#8220;www&#8221; misuse.</p>
<p>I also found that even great sites like del.icio.us don&#8217;t permit the misdirection from &#8220;www&#8221;, which makes me wonder how far we have to go in our quest for better URL management.</p>
]]></content:encoded>
			<wfw:commentRss>http://kire.notneb.net/archives/9/feed</wfw:commentRss>
		</item>
		<item>
		<title>A little productivity.</title>
		<link>http://kire.notneb.net/archives/7</link>
		<comments>http://kire.notneb.net/archives/7#comments</comments>
		<pubDate>Thu, 03 May 2007 16:30:34 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
		
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://kire.notneb.net/?p=7</guid>
		<description><![CDATA[As much as I love Google&#8217;s Reader it is far to tempting a toy to leave just laying around to grab my attention at a weak moment.
To at least give me some sanity while I worked I wrote this little Greasemonkey  script that blocks Greader during my productive hours, 9-12 and 13-17. When I [...]]]></description>
			<content:encoded><![CDATA[<p>As much as I love Google&#8217;s <a href="http://www.google.com/reader/">Reader</a> it is far to tempting a toy to leave just laying around to grab my attention at a weak moment.</p>
<p>To at least give me some sanity while I worked I wrote this little <a href="http://www.greasespot.net/">Greasemonkey </a> script that blocks Greader during my productive hours, 9-12 and 13-17. When I try to go to the site I get redirected to a site that reminds me what I&#8217;m working on, in this case the Java Language reference.  You can easily add sites to black list through the <strong>Included Pages</strong> in the Greasemonkey management window.  And the script is so simple that anyone can modify it to fit their needs.</p>
<p><a href='http://kire.notneb.net/wp-content/uploads/2007/05/deathtogreaderuser.js' title='deathtogreader'>deathtogreader</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kire.notneb.net/archives/7/feed</wfw:commentRss>
		</item>
		<item>
		<title>iPod or go home?</title>
		<link>http://kire.notneb.net/archives/4</link>
		<comments>http://kire.notneb.net/archives/4#comments</comments>
		<pubDate>Wed, 10 Jan 2007 06:14:29 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://kire.notneb.net/?p=4</guid>
		<description><![CDATA[So after we purchased Carrie her new laptop (hp 2130us), we found out that it came with a $50 gift card.  So as a little Merry Christmas to me I thought I would pick up some variety of Digital Audio Player.  Everyone knows the iPod is the heavy in making this choice, but [...]]]></description>
			<content:encoded><![CDATA[<p>So after we purchased Carrie her new laptop (hp 2130us), we found out that it came with a $50 gift card.  So as a little Merry Christmas to me I thought I would pick up some variety of Digital Audio Player.  Everyone knows the iPod is the heavy in making this choice, but I&#8217;ve never been a fan of convention, and while the support and standards that have come to surround Apple&#8217;s little darling, I&#8217;ve always been a bit repulsed by the entire thing.  So the question is, where do I go from here.  I&#8217;ve pretty much concluded that there are really three choices I can make.</p>
<p>First up there is of course the iPod.  Everyone loves it, it&#8217;s everywhere, hacked and back, and has a great little interface.</p>
<p>Next we have the newest player on the block, Microsofts Zune.  With WiFi, FM, and a giant screen this is a likely contender, except for the fact this is MSs first attempt in the DAP market, and they notoriously have problems with first generation hardware.</p>
<p>Then there is the Creative Zen Vision:M, similar to the Zune without the WiFi.  Supports tons of formats and supposedly has a great screen.</p>
<p>Outside of the individual features my other requirements are something that will work under linux - preferably ubuntu, something I can use as a UMS drive.</p>
<p>Any thoughts?</p>
]]></content:encoded>
			<wfw:commentRss>http://kire.notneb.net/archives/4/feed</wfw:commentRss>
		</item>
		<item>
		<title>encore!</title>
		<link>http://kire.notneb.net/archives/1</link>
		<comments>http://kire.notneb.net/archives/1#comments</comments>
		<pubDate>Mon, 21 Aug 2006 04:44:16 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[After a hiatus of over 3 months I finally brought back the blog. I was tired of paying to host a large noisy machine in my office and didn&#8217;t want to deal with the headaches of babying the machine and the connection.  My father-in-law offered me hosting with his provider and I took him [...]]]></description>
			<content:encoded><![CDATA[<p>After a hiatus of over 3 months I finally brought back the blog. I was tired of paying to host a large noisy machine in my office and didn&#8217;t want to deal with the headaches of babying the machine and the connection.  My father-in-law offered me hosting with his provider and I took him up on the offer.  Many changes since the last time I posted.  My career path has shifted from ColdFusion to it&#8217;s roots in Java.</p>
]]></content:encoded>
			<wfw:commentRss>http://kire.notneb.net/archives/1/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
