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

<channel>
	<title>burkeware.com</title>
	<atom:link href="http://blog.burkeware.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.burkeware.com</link>
	<description>Writing buggy code, so you don&#039;t have to.</description>
	<lastBuildDate>Sun, 22 Jan 2012 21:11:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>What are the first 10 consecutive digits of e that form a prime number?</title>
		<link>http://blog.burkeware.com/2012/01/what-are-the-first-10-consecutive-digits-of-e-that-form-a-prime-number/</link>
		<comments>http://blog.burkeware.com/2012/01/what-are-the-first-10-consecutive-digits-of-e-that-form-a-prime-number/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 21:11:00 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[groovy]]></category>

		<guid isPermaLink="false">http://blog.burkeware.com/?p=176</guid>
		<description><![CDATA[After seeing some sample Google Interview Questions that included this question, I couldn&#8217;t resist the challenge&#8230; def bigE&#40;&#41; &#123; BigDecimal e = new BigDecimal&#40;1.0G&#41; BigDecimal temp = new BigDecimal&#40;1.0G&#41; for &#40;int i in 1..100&#41; &#123; temp *= i e += new BigDecimal&#40;&#34;1&#34;&#41; .divide&#40;temp, new java.math.MathContext&#40;10000&#41;&#41; &#125; return e.toString&#40;&#41; &#125; &#160; def isPrime&#40;long n&#41; &#123; if [...]]]></description>
			<content:encoded><![CDATA[<p>After seeing some sample <a href="http://www.cracked.com/blog/6-google-interview-questions-and-6-you-can-answer/" target="_blank">Google Interview Questions</a> that included this question, I couldn&#8217;t resist the challenge&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="groovy" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">def</span> bigE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #aaaadd; font-weight: bold;">BigDecimal</span> e <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">BigDecimal</span><span style="color: #66cc66;">&#40;</span>1.0G<span style="color: #66cc66;">&#41;</span>
  <span style="color: #aaaadd; font-weight: bold;">BigDecimal</span> temp <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">BigDecimal</span><span style="color: #66cc66;">&#40;</span>1.0G<span style="color: #66cc66;">&#41;</span>
  <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span> i <span style="color: #b1b100;">in</span> <span style="color: #cc66cc;">1</span>..<span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    temp <span style="color: #66cc66;">*=</span> i
    e <span style="color: #66cc66;">+=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">BigDecimal</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #66cc66;">&#41;</span>
         .<span style="color: #006600;">divide</span><span style="color: #66cc66;">&#40;</span>temp, <span style="color: #000000; font-weight: bold;">new</span> java.<span style="color: #006600;">math</span>.<span style="color: #006600;">MathContext</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10000</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">return</span> e.<span style="color: #006600;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">def</span> isPrime<span style="color: #66cc66;">&#40;</span><span style="color: #993333;">long</span> n<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>n <span style="color: #66cc66;">&lt;</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">false</span>
  <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>n <span style="color: #66cc66;">==</span> <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">||</span> n <span style="color: #66cc66;">==</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span> <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">true</span>
  <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>n<span style="color: #66cc66;">%</span>2 <span style="color: #66cc66;">==</span> <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">||</span> n<span style="color: #66cc66;">%</span>3 <span style="color: #66cc66;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">false</span>
  <span style="color: #993333;">long</span> sqrtN <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">long</span><span style="color: #66cc66;">&#41;</span><span style="color: #aaaadd; font-weight: bold;">Math</span>.<span style="color: #006600;">sqrt</span><span style="color: #66cc66;">&#40;</span>n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">+</span><span style="color: #cc66cc;">1</span>
  <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">long</span> i<span style="color: #66cc66;">=</span>6L<span style="color: #66cc66;">;</span> i <span style="color: #66cc66;">&lt;</span> sqrtN<span style="color: #66cc66;">;</span> i <span style="color: #66cc66;">+=</span> <span style="color: #cc66cc;">6</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>n<span style="color: #66cc66;">%</span><span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">-</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">==</span> <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">||</span> n<span style="color: #66cc66;">%</span><span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">+</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">false</span>
  <span style="color: #66cc66;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">true</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">def</span> firstPrimeBySize<span style="color: #66cc66;">&#40;</span>n<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #aaaadd; font-weight: bold;">String</span> e <span style="color: #66cc66;">=</span> bigE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span> i <span style="color: #b1b100;">in</span> <span style="color: #cc66cc;">2</span>..<span style="color: #006600;">e</span>.<span style="color: #663399;">size</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">-</span>n<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #aaaadd; font-weight: bold;">String</span> chunk <span style="color: #66cc66;">=</span> e.<span style="color: #006600;">substring</span><span style="color: #66cc66;">&#40;</span>i,i<span style="color: #66cc66;">+</span>n<span style="color: #66cc66;">&#41;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>isPrime<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">BigDecimal</span><span style="color: #66cc66;">&#40;</span>chunk<span style="color: #66cc66;">&#41;</span>.<span style="color: #CC0099;">toLong</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #ff0000;">&quot;$chunk at position $i&quot;</span>
    <span style="color: #66cc66;">&#125;</span>
  <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">assert</span> firstPrimeBySize<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">==</span> <span style="color: #ff0000;">&quot;7427466391 at position 100&quot;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.burkeware.com/2012/01/what-are-the-first-10-consecutive-digits-of-e-that-form-a-prime-number/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jsonpretty: handy when playing with web services</title>
		<link>http://blog.burkeware.com/2011/10/jsonpretty-handy-when-playing-with-web-services/</link>
		<comments>http://blog.burkeware.com/2011/10/jsonpretty-handy-when-playing-with-web-services/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 20:15:50 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[openmrs]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://blog.burkeware.com/?p=170</guid>
		<description><![CDATA[I just ran into a handy little utility: jsonpretty. $sudo gem install json jsonpretty While $curl -i http://localhost:8081/openmrs-standalone/ws/rest/v1/catalog gives you something like this: {"catalog":[{"name":"Cohort","operations":[{"name":"GET http://localhost:8081/openmrs/ws/rest/v1/cohort?q","description":"Fetch all non-retired that match this parameter"},{"name":"GET http://localhost:8081/openmrs/ws/rest/v1/cohort/{uuid}","description":"Fetch by unique uuid"},{"name":"GET http://localhost:8081/openmrs/ws/rest/v1/cohort","description":"Fetch all non-retired"},{"name":"POST http://localhost:8081/openmrs/ws/rest/v1/cohort","description":"Create with properties in request"},{"name":"POST http://localhost:8081/openmrs/ws/rest/v1/cohort/{uuid}","description":"Edit with given uuid, only modifying properties in request"},{"name":"DELETE http://localhost:8081/openmrs/ws/rest/v1/cohort/{uuid}?!purge","description":"Delete this object [...]]]></description>
			<content:encoded><![CDATA[<p>I just ran into a handy little utility: <a href="https://github.com/nicksieger/jsonpretty" title="jsonpretty">jsonpretty</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">$sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> json jsonpretty</pre></div></div>

<p>While</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">$curl</span> <span style="color: #660033;">-i</span> http:<span style="color: #000000; font-weight: bold;">//</span>localhost:<span style="color: #000000;">8081</span><span style="color: #000000; font-weight: bold;">/</span>openmrs-standalone<span style="color: #000000; font-weight: bold;">/</span>ws<span style="color: #000000; font-weight: bold;">/</span>rest<span style="color: #000000; font-weight: bold;">/</span>v1<span style="color: #000000; font-weight: bold;">/</span>catalog</pre></div></div>

<p>gives you something like this:</p>
<p><code style="text-align:left;white-space:normal;word-wrap: break-word">{"catalog":[{"name":"Cohort","operations":[{"name":"GET http://localhost:8081/openmrs/ws/rest/v1/cohort?q","description":"Fetch all non-retired that match this parameter"},{"name":"GET http://localhost:8081/openmrs/ws/rest/v1/cohort/{uuid}","description":"Fetch by unique uuid"},{"name":"GET http://localhost:8081/openmrs/ws/rest/v1/cohort","description":"Fetch all non-retired"},{"name":"POST http://localhost:8081/openmrs/ws/rest/v1/cohort","description":"Create with properties in request"},{"name":"POST http://localhost:8081/openmrs/ws/rest/v1/cohort/{uuid}","description":"Edit with given uuid, only modifying properties in request"},{"name":"DELETE http://localhost:8081/openmrs/ws/rest/v1/cohort/{uuid}?!purge","description":"Delete this object from the database"},{"name":"DELETE http://localhost:8081/openmrs/ws/rest/v1/cohort/{uuid}?purge","description":"Delete this object from the database"}],"url":"http://localhost:8081/openmrs/ws/rest/v1/cohort","representations":[{"name":"ref","properties":["uuid","display","links"]},{"name":"default","properties":["uuid","name","description","voided","memberIds","links"]},{"name":"full","properties":["uuid","name","description","memberIds","voided","auditInfo","links"]}]},{"name":"CohortMember","operations":[{"name":"GET http://localhost:8081/openmrs/ws/rest/v1/cohort/{parentUuid}/members/{uuid}","description":"Fetch by unique uuid"},{"name":"GET http://localhost:8081/openmrs/ws/rest/v1/cohort/{parentUuid}/members","description":"Fetch all non-retired"},{"name":"POST http://localhost:8081/openmrs/ws/rest/v1/cohort/{parentUuid}/members","description":"Create with properties in request"},{"name":"POST http://localhost:8081/openmrs/ws/rest/v1/cohort/{parentUuid}/members/{uuid}","description":"Edit with given uuid, only modifying properties in request"},{"name":"DELETE http://localhost:8081/openmrs/ws/rest/v1/cohort/{parentUuid}/members/{uuid}?!purge","description":"Delete this object from the database"},{"name":"DELETE http://localhost:8081/openmrs/ws/rest/v1/cohort/{parentUuid}/members/{uuid}?purge","description":"Delete this object from the database"}],...</code></p>
<p>adding jsonpretty:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">$curl</span> <span style="color: #660033;">-i</span> http:<span style="color: #000000; font-weight: bold;">//</span>localhost:<span style="color: #000000;">8081</span><span style="color: #000000; font-weight: bold;">/</span>openmrs-standalone<span style="color: #000000; font-weight: bold;">/</span>ws<span style="color: #000000; font-weight: bold;">/</span>rest<span style="color: #000000; font-weight: bold;">/</span>v1<span style="color: #000000; font-weight: bold;">/</span>catalog <span style="color: #000000; font-weight: bold;">|</span> jsonpretty</pre></div></div>

<p>gets you something much prettier:</p>

<div class="wp_syntax"><div class="code"><pre class="json" style="font-family:monospace;">{
  &quot;catalog&quot;: [
    {
      &quot;name&quot;: &quot;Cohort&quot;,
      &quot;operations&quot;: [
        {
          &quot;name&quot;: &quot;GET http://localhost:8081/openmrs/ws/rest/v1/cohort?q&quot;,
          &quot;description&quot;: &quot;Fetch all non-retired that match this parameter&quot;
        },
        {
          &quot;name&quot;: &quot;GET http://localhost:8081/openmrs/ws/rest/v1/cohort/{uuid}&quot;,
          &quot;description&quot;: &quot;Fetch by unique uuid&quot;
        },
        {
          &quot;name&quot;: &quot;GET http://localhost:8081/openmrs/ws/rest/v1/cohort&quot;,
          &quot;description&quot;: &quot;Fetch all non-retired&quot;
        },
        {
          &quot;name&quot;: &quot;POST http://localhost:8081/openmrs/ws/rest/v1/cohort&quot;,
          &quot;description&quot;: &quot;Create with properties in request&quot;
        },
        {
          &quot;name&quot;: &quot;POST http://localhost:8081/openmrs/ws/rest/v1/cohort/{uuid}&quot;,
          &quot;description&quot;: &quot;Edit with given uuid, only modifying properties in request&quot;
        },
        {
          &quot;name&quot;: &quot;DELETE http://localhost:8081/openmrs/ws/rest/v1/cohort/{uuid}?!purge&quot;,
          &quot;description&quot;: &quot;Delete this object from the database&quot;
        },
        {
          &quot;name&quot;: &quot;DELETE http://localhost:8081/openmrs/ws/rest/v1/cohort/{uuid}?purge&quot;,
          &quot;description&quot;: &quot;Delete this object from the database&quot;
        }
      ],
      &quot;url&quot;: &quot;http://localhost:8081/openmrs/ws/rest/v1/cohort&quot;,
      &quot;representations&quot;: [
        {
          &quot;name&quot;: &quot;ref&quot;,
          &quot;properties&quot;: [
            &quot;uuid&quot;,
            &quot;display&quot;,
            &quot;links&quot;
          ]
        },
        {
          &quot;name&quot;: &quot;default&quot;,
          &quot;properties&quot;: [
            &quot;uuid&quot;,
            &quot;name&quot;,
            &quot;description&quot;,
            &quot;voided&quot;,
            &quot;memberIds&quot;,
            &quot;links&quot;
          ]
        },
        {
          &quot;name&quot;: &quot;full&quot;,
          &quot;properties&quot;: [
            &quot;uuid&quot;,
            &quot;name&quot;,
            &quot;description&quot;,
            &quot;memberIds&quot;,
            &quot;voided&quot;,
            &quot;auditInfo&quot;,
            &quot;links&quot;
          ]
        }
      ]
    },
    ...</pre></div></div>

<p>Nice!  Thank you jsonpretty! <img src='http://blog.burkeware.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.burkeware.com/2011/10/jsonpretty-handy-when-playing-with-web-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Displaying OpenMRS observations using Groovy</title>
		<link>http://blog.burkeware.com/2011/07/displaying-openmrs-observations-using-groovy/</link>
		<comments>http://blog.burkeware.com/2011/07/displaying-openmrs-observations-using-groovy/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 17:15:08 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[groovy]]></category>
		<category><![CDATA[openmrs]]></category>
		<category><![CDATA[tip]]></category>

		<guid isPermaLink="false">http://blog.burkeware.com/?p=163</guid>
		<description><![CDATA[I wanted to list out some observations for a patient and used the following Groovy script: def sql&#40;s&#41; &#123;admin.executeSQL&#40;s,true&#41; &#125; &#160; patientIdentifier = &#34;999-3&#34; // a test patient, of course &#160; sql&#40;&#34;&#34;&#34; select date(o.obs_datetime), (select name from concept_name where concept_id=o.concept_id limit 1) as question, case c.datatype_id when 1 /* numeric */ then cast(o.value_numeric as char) [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted to list out some observations for a patient and used the following Groovy script:</p>

<div class="wp_syntax"><div class="code"><pre class="groovy" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">def</span> sql<span style="color: #66cc66;">&#40;</span>s<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>admin.<span style="color: #006600;">executeSQL</span><span style="color: #66cc66;">&#40;</span>s,<span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#125;</span>
&nbsp;
patientIdentifier <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;999-3&quot;</span> <span style="color: #808080; font-style: italic;">// a test patient, of course</span>
&nbsp;
sql<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;&quot;&quot;
select
date(o.obs_datetime),
(select name from concept_name where concept_id=o.concept_id limit 1) as question,
case c.datatype_id
when 1  /* numeric  */ then cast(o.value_numeric as char)
when 2  /* coded    */ then (select min(name) from concept_name where concept_id=o.value_coded)
when 3  /* text     */ then value_text
when 6  /* date     */ then cast(date(o.value_datetime) as char)
when 7  /* time     */ then cast(time(o.value_datetime) as char)
when 8  /* datetime */ then cast(o.value_datetime as char)
when 10 /* boolean  */ then if(o.value_numeric=1,'TRUE','FALSE')
else '?'
end as answer
from
obs o
left outer join
concept c
on c.concept_id=o.concept_id
where
o.person_id = (select patient_id from patient_identifier where identifier = '$patientIdentifier' limit 1)
order by
o.obs_datetime desc
&quot;&quot;&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #663399;">collect</span><span style="color: #66cc66;">&#123;</span> it.<span style="color: #663399;">join</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;: &quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#125;</span>.<span style="color: #663399;">join</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;n&quot;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>which generated output like this:</p>
<pre>
2011-02-18: PATIENT HAD SEX IN LAST 6MO: TRUE
2011-02-18: PlAN FOR METHOD OF FAMILY PLANNING, DETAILED: ?
2011-02-18: QUANTITY: 5
2011-02-18: FAMILY PLANNING METHOD PLAN: INITIATION
2011-02-18: METHOD OF FAMILY PLANNING: ECPS
2011-02-18: HIV DISCLOSURE TO ANYONE, SPECIFIC: OTHER HOUSEHOLD MEMBER
2011-02-18: REASON FOR REFUSAL - FAMILY PLANNING: TRYING TO CONCEIVE NOW
2011-02-18: PlAN FOR METHOD OF FAMILY PLANNING, DETAILED: ?
2011-02-18: METHOD OF FAMILY PLANNING: MALE CONDOMS
2011-02-18: QUANTITY: 5
2011-02-18: FAMILY PLANNING METHOD PLAN: INITIATION
2011-02-18: METHOD OF FAMILY PLANNING: BTL
2011-02-18: FREETEXT, GENERAL: POSITIVE
2011-02-18: REASON FOR REFUSAL - FAMILY PLANNING: ABSTINENCE
2011-02-18: FAMILY PLANNING: TRUE
2011-02-18: REVIEW OF MEDICAL HISTORY: ICTERUS
2011-02-18: PATIENT REPORTED PROBLEM: YES
2011-02-18: CURRENT MEDICATIONS: ALUVIA
2011-02-18: REVIEW OF MEDICAL HISTORY: DEPRESSION
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.burkeware.com/2011/07/displaying-openmrs-observations-using-groovy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sometimes you need a little web server</title>
		<link>http://blog.burkeware.com/2011/07/sometimes-you-need-a-little-web-server/</link>
		<comments>http://blog.burkeware.com/2011/07/sometimes-you-need-a-little-web-server/#comments</comments>
		<pubDate>Sun, 03 Jul 2011 04:32:18 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[openmrs]]></category>

		<guid isPermaLink="false">http://blog.burkeware.com/?p=156</guid>
		<description><![CDATA[Here&#8217;s a simple jetty server using a short Groovy script: @Grab(group='org.mortbay.jetty', module='jetty-embedded', version='6.1.14') import org.mortbay.jetty.* import org.mortbay.jetty.servlet.* import groovy.servlet.* import javax.servlet.* import javax.servlet.http.* class MyServlet extends HttpServlet { void doPost(HttpServletRequest request, HttpServletResponse response) { println "--- Received ${new Date()}n" + request.getParameter('data') } } def server = new Server(8888) def root = new Context(server, "/", Context.SESSIONS) [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a simple jetty server using a short <a href="http://groovy.codehaus.org/Download">Groovy</a> script:</p>
<pre>@Grab(group='org.mortbay.jetty', module='jetty-embedded', version='6.1.14')

import org.mortbay.jetty.*
import org.mortbay.jetty.servlet.*
import groovy.servlet.*
import javax.servlet.*
import javax.servlet.http.*

class MyServlet extends HttpServlet  {
  void doPost(HttpServletRequest request, HttpServletResponse response) {
    println "--- Received ${new Date()}n" + request.getParameter('data')
  }
}

def server = new Server(8888)
def root = new Context(server, "/", Context.SESSIONS)
root.setResourceBase(".")
root.addServlet(new ServletHolder(new MyServlet()), "/")
server.start()</pre>
<p>Running the script with groovy AtlasServer.groovy will accept HTTP POSTs at the designated port (8888) and dump posted data to the screen.  For example:</p>
<pre>$ curl -X POST -d "data=Hello world!" http://localhost:8888/</pre>
<p>should dump &#8220;Hello world!&#8221; to the screen.  Press Ctrl+C to abort the server.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.burkeware.com/2011/07/sometimes-you-need-a-little-web-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flowsheet Code Jam in Chennai</title>
		<link>http://blog.burkeware.com/2011/01/flowsheet-code-jam-in-chennai/</link>
		<comments>http://blog.burkeware.com/2011/01/flowsheet-code-jam-in-chennai/#comments</comments>
		<pubDate>Sat, 15 Jan 2011 21:19:18 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[hackathon]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[openmrs]]></category>

		<guid isPermaLink="false">http://blog.burkeware.com/?p=140</guid>
		<description><![CDATA[Here&#8217;s a shout out to our friends at ThoughtWorks. They had a code jam on the Flowsheet Module a few weeks ago and knocked out over half a dozen key tickets in a single day as well as making progress on others. The Flowsheet Module is being installed into OpenMRS at AMPATH in Kenya to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.burkeware.com/wp-content/uploads/2011/01/Flowsheet-Code-Jam1.jpg"><img class="size-medium wp-image-147 alignright" title="Flowsheet Code Jam" src="http://blog.burkeware.com/wp-content/uploads/2011/01/Flowsheet-Code-Jam1-300x234.jpg" alt="" width="300" height="234" /></a>Here&#8217;s a shout out to our friends at <a href="http://www.thoughtworks.com/">ThoughtWorks</a>.  They had a code jam on the <a href="http://wiki.openmrs.org/x/rBEz">Flowsheet Module</a> a few weeks ago and knocked out over half a dozen key tickets in a single day as well as making progress on others.  The Flowsheet Module is being installed into <a href="http://openmrs.org">OpenMRS</a> at <a href="http://medicine.iupui.edu/kenya/hiv.aids.html">AMPATH</a> in Kenya to allow both data managers and providers convenient access to their patients&#8217; data and to help improve the efficiency and quality of care for the over 300,000 patients within the system&#8230; thanks to: Khaarthigha S, Rajiv RA, Pavithra K, Geetha B, Saravana K, Arvind Kumar C, Senthil V S, Prabha P, Shanum, Ponnulingam R, Alexal, Vinoth KR, Nithyan, Gobinath T, Balaji G, Ragavan G, and Chandru.  You all rock!  And it looks like you had some fun in the process.  I especially enjoyed the image of two laptops per lap!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.burkeware.com/2011/01/flowsheet-code-jam-in-chennai/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Swipe down to close tab in FF4</title>
		<link>http://blog.burkeware.com/2010/11/swipe-down-to-close-tab-in-ff4/</link>
		<comments>http://blog.burkeware.com/2010/11/swipe-down-to-close-tab-in-ff4/#comments</comments>
		<pubDate>Tue, 16 Nov 2010 23:19:30 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[firefox]]></category>
		<category><![CDATA[tip]]></category>

		<guid isPermaLink="false">http://blog.burkeware.com/?p=137</guid>
		<description><![CDATA[Just upgraded to Firefox 4 beta 7 on my MacBook Pro and the (three finger) swipe down gesture I had grown to love (thanks to Will Henderson&#8217;s MultiClutch), suddenly became a &#8220;show tab view&#8221; gesture.  This is no good!  I&#8217;ve already become accustomed to swiping down to close tabs in Firefox. A little googling, and [...]]]></description>
			<content:encoded><![CDATA[<p>Just upgraded to <a href="http://www.mozilla.com/en-US/firefox/4.0b7/releasenotes/">Firefox 4 beta 7</a> on my MacBook Pro and the (three finger) swipe down gesture I had grown to love (thanks to Will Henderson&#8217;s <a href="http://wcrawford.org/2008/02/28/everytime-i-think-about-you-i-touch-my-cell/">MultiClutch</a>), suddenly became a &#8220;show tab view&#8221; gesture.  This is no good!  I&#8217;ve already become accustomed to swiping down to close tabs in Firefox.</p>
<p>A little googling, and I was able to get back my swipe-down-to-close-tab gesture and move the show tab view gesture to SHIFT + swipe down:</p>
<ol>
<li>Open up a tab and browse to &#8220;about:config&#8221; to bring up the Firefox configuration &#8212; proceed at your own risk.</li>
<li>Type &#8220;gesture&#8221; in the Filter field to filter down to gesture-related preferences.</li>
<li>You should see the preference <strong>browser.gesture.swipe.down</strong> of type <strong>string</strong> set to value <strong>Browser:ShowTabView</strong>.</li>
<li>Right-click on the preference name and select <strong>New &#8211;&gt; String</strong> from the context menu.</li>
<li>Enter <strong>browser.gesture.swipe.down.shift</strong> as the new preference name.</li>
<li>Enter <strong>Browser:ShowTabView</strong> as the new preference&#8217;s value.</li>
<li>So, now you have added a SHIFT + swipe down gesture (swiping three fingers down while holding down the shift key) to perform the default function of swipe down.  Now we take back our swipe down gesture&#8230;</li>
<li>Double-click on the value of the <strong>browser.gesture.swipe.down</strong> preference and change it to <strong>cmd_close</strong>.</li>
<li>You&#8217;re done!  Swipe down and the about:config tab should disappear.  Hold down shift while swiping down and you&#8217;ll see the tab view.</li>
</ol>
<p>Now that gestures are supported on Firefox, I no longer need MultiClutch settings for Firefox.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.burkeware.com/2010/11/swipe-down-to-close-tab-in-ff4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Fisherman</title>
		<link>http://blog.burkeware.com/2010/10/the-fisherman/</link>
		<comments>http://blog.burkeware.com/2010/10/the-fisherman/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 14:42:35 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[family]]></category>
		<category><![CDATA[dad]]></category>
		<category><![CDATA[fishing]]></category>
		<category><![CDATA[tale]]></category>

		<guid isPermaLink="false">http://blog.burkeware.com/?p=128</guid>
		<description><![CDATA[The fish he caught&#8230; and the story he told&#8230;]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">The fish he caught&#8230;</p>
<p style="text-align: center;"><a href="../wp-content/uploads/2010/10/p_2592_1936_57DF5C93-D04F-4417-B55A-54214F438591.jpeg"><img class="size-full wp-image-364 aligncenter" src="../wp-content/uploads/2010/10/p_2592_1936_57DF5C93-D04F-4417-B55A-54214F438591.jpeg" alt="" width="224" height="300" /></a></p>
<p style="text-align: center;">and the story he told&#8230;</p>
<p style="text-align: center;"><a href="../wp-content/uploads/2010/10/p_2592_1936_C9A3AFDF-EFDC-4E12-B1CA-A9934F48D7D0.jpeg"><img class="size-full wp-image-364 aligncenter" src="../wp-content/uploads/2010/10/p_2592_1936_C9A3AFDF-EFDC-4E12-B1CA-A9934F48D7D0.jpeg" alt="" width="224" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.burkeware.com/2010/10/the-fisherman/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iPad Pro</title>
		<link>http://blog.burkeware.com/2010/04/ipad-pro/</link>
		<comments>http://blog.burkeware.com/2010/04/ipad-pro/#comments</comments>
		<pubDate>Sat, 17 Apr 2010 16:25:53 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[ipad]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://blog.burkeware.com/?p=120</guid>
		<description><![CDATA[Own a MacBook Pro and an iPad?  Tired of carrying around both?  Meet the iPad Pro. I&#8217;m looking forward to the day when the monitor of my MacBook Pro becomes an iPad.  No extra things to carry around.  If you want to run to a quick meeting or browse on the couch, just snap off [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.burkeware.com/wp-content/uploads/2010/04/ipad-pro.jpg"><img class="aligncenter size-medium wp-image-121" title="ipad-pro" src="http://blog.burkeware.com/wp-content/uploads/2010/04/ipad-pro-300x195.jpg" alt="" width="300" height="195" /></a></p>
<p>Own a MacBook Pro <em>and</em> an iPad?  Tired of carrying around both?  Meet the iPad Pro.</p>
<p>I&#8217;m looking forward to the day when the monitor of my MacBook Pro becomes an iPad.  No extra things to carry around.  If you want to run to a quick meeting or browse on the couch, just snap off your monitor and go (it&#8217;s an iPad).  Miss your keyboard, DVD drive, extra ports, extra battery life, etc.?  Just plug your iPad back onto the iPad Pro base and you&#8217;ve got a full laptop.  Keep a cloth in your bag to wipe off those fingerprints and stop freaking out when people touch your monitor &#8212; it&#8217;s a multitouch monitor, after all.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.burkeware.com/2010/04/ipad-pro/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Improving OpenMRS Code Review</title>
		<link>http://blog.burkeware.com/2010/04/improving-openmrs-code-review/</link>
		<comments>http://blog.burkeware.com/2010/04/improving-openmrs-code-review/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 20:07:24 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[openmrs]]></category>

		<guid isPermaLink="false">http://blog.burkeware.com/archives/118</guid>
		<description><![CDATA[Trying to figure out how we can improve the efficiency of our code reviews.&#160; Finding some interesting stuff on the web&#8230; Like this article: Limit the checklist to 7±2 items.&#160; Automate the automate-able and let existing code review data drive the list of common mistakes. Here is a list of articles, white-papers, and documentation around [...]]]></description>
			<content:encoded><![CDATA[<p>Trying to figure out how we can improve the efficiency of our code reviews.&nbsp; Finding some interesting stuff on the web&#8230;</p>
<p>Like <a href="http://www.eetasia.com/ART_8800544104_499495_NT_080bd63e.HTM">this article</a>: Limit the checklist to 7±2 items.&nbsp; Automate the automate-able and let existing code review data drive the list of common mistakes.</p>
<p><a href="http://smartbear.com/codecollab-white-paper.php">Here</a> is a list of articles, white-papers, and documentation around peer code review.&nbsp; Hmmm. Several resources, but not enough time to look at them all.</p>
<p>Some nice pointers <a href="http://smartbear.com/codecollab-white-paper.php">here</a>, but nothing game changing.</p>
<p>A good summary article <a href="http://smartbear.com/codecollab-white-paper.php">here</a>.
<ul>
<li>Review fewer than 200-400 lines of code at a time</li>
<li>Aim for less than 300-500 LOC/hour</li>
<li>Not more than 60-90 minutes at a time</li>
<li>Authors annotate prior to review</li>
<li>Establish quantifiable goals and capture metrics to improve the process (I&#8217;m noticing a theme here)</li>
<li>Checklists are good</li>
<li>Verify that defects are fixed</li>
<li>Managers must foster a good code review culture in which finding defects is viewed positively.</li>
<li>Beware the “Big Brother” effect.</li>
<li>The Ego Effect: Do at least some code review, even if you don’t have time to review it all.</li>
<li>Lightweight-style code reviews are efficient, practical, and effective at finding bugs.</li>
</ul>
<p>And <a href="http://kerneltrap.org/mailarchive/linux-kernel/2008/5/1/1686484">here</a> (and <a href="http://kerneltrap.org/mailarchive/linux-kernel/2008/4/30/1677474">here</a>) is an interesting take by Torvalds that Paul found.
<ul>
<li>There <span style="font-style: italic;">will</span> be bugs.&nbsp; Don&#8217;t aim for zero.</li>
<li>&#8220;Same goes for &#8216;we should all just spend time looking at each others patches and trying to find bugs in them&#8217;. That&#8217;s not a solution, that&#8217;s a drug-induced dream you&#8217;re living in.&#8221;</li>
</ul>
<p>Plan on talking with developers to brainstorm on it&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.burkeware.com/2010/04/improving-openmrs-code-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dad</title>
		<link>http://blog.burkeware.com/2009/11/114/</link>
		<comments>http://blog.burkeware.com/2009/11/114/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 05:17:19 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.burkeware.com/?p=114</guid>
		<description><![CDATA[It appears that the folks at Shapiro&#8217;s Deli are almost as proud of Dad as I am&#8230;]]></description>
			<content:encoded><![CDATA[<p>It appears that the folks at <a href="http://www.shapiros.com/">Shapiro&#8217;s Deli</a> are almost as proud of Dad as I am&#8230;</p>
<p><img class="aligncenter size-full wp-image-113" title="Dad-Shapiros" src="http://blog.burkeware.com/wp-content/uploads/2009/11/Dad-Shapiros.png" alt="Dad-Shapiros" width="514" height="541" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.burkeware.com/2009/11/114/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

