<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>2009 on John Paulett</title><link>https://www.johnpaulett.com/posts/2009/</link><description>Recent content in 2009 on John Paulett</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 18 Dec 2009 02:13:17 +0000</lastBuildDate><atom:link href="https://www.johnpaulett.com/posts/2009/index.xml" rel="self" type="application/rss+xml"/><item><title>jsonpickle 0.3.1 Released</title><link>https://www.johnpaulett.com/2009/jsonpickle-031-released/</link><pubDate>Fri, 18 Dec 2009 02:13:17 +0000</pubDate><guid>https://www.johnpaulett.com/2009/jsonpickle-031-released/</guid><description>&lt;p>&lt;a href="http://jsonpickle.github.com/">jsonpickle&lt;/a>, the powerful library for
serializing complex object graphs in Python to JSON, had a major
milestone this week with the official release of 0.3.1, available on
&lt;a href="http://pypi.python.org/pypi/jsonpickle/">PyPi&lt;/a> with documentation and
full release notes at &lt;a href="http://jsonpickle.github.com/">http://jsonpickle.github.com/&lt;/a>. We have migrated
from the Google Code site to the new Github site at
&lt;a href="http://github.com/jsonpickle/jsonpickle">http://github.com/jsonpickle/jsonpickle&lt;/a>.&lt;/p>
&lt;p>This release represents nearly a year of development from multiple
contributors. Some of the major highlights of the release include
supporting a wider variety of objects, supporting the pickle protocol's
set and get state methods, and allowing the use and addition of any
Python JSON backend (e.g. demjson, simplejson, django.util.simplejson,
etc.). Please be aware that backwards compatibility for the 0.2.0 format
JSON is not guaranteed.&lt;/p></description></item><item><title>HTML to reStructuredText in Python using Pandoc</title><link>https://www.johnpaulett.com/2009/html-to-restructured-text-in-python-using-pandoc/</link><pubDate>Fri, 16 Oct 2009 00:32:18 +0000</pubDate><guid>https://www.johnpaulett.com/2009/html-to-restructured-text-in-python-using-pandoc/</guid><description>&lt;p>During the conversion of my blog from Wordpress to a custom Django-based
system, I wanted to move from HTML markup to
&lt;a href="http://docutils.sourceforge.net/rst.html">reStructuredText&lt;/a> (partly to
make it easier to publish &lt;a href="http://sphinx.pocoo.org/">Sphinx&lt;/a>
documentation to my blog).&lt;/p>
&lt;p>While it is dead simple to convert reStructuredText to HTML, going the
other way is more difficult. Luckily,
&lt;a href="http://johnmacfarlane.net/pandoc/">Pandoc&lt;/a>, the swiss army knife for
converting between markup formats, can do a nice job converting HTML to
reStructuredText.&lt;/p>
&lt;p>I wrote a custom Django Command to parse a Wordpress XML export file and
store the blog entries. The relevant code to convert HTML to
reStructuredText is very simple. It simply makes a subprocess call to
the Pandoc command and retrieves the command's output. Make sure you
have Pandoc installed (in Ubuntu, &lt;code>sudo apt-get install pandoc&lt;/code> will
work).&lt;/p></description></item><item><title>reStructuredText Widget in Django Admin</title><link>https://www.johnpaulett.com/2009/restructuredtext-widget-in-django-admin/</link><pubDate>Thu, 15 Oct 2009 03:44:55 +0000</pubDate><guid>https://www.johnpaulett.com/2009/restructuredtext-widget-in-django-admin/</guid><description>&lt;p>While Django has &lt;a href="http://docs.djangoproject.com/en/dev/ref/contrib/#ref-contrib-markup">great
support&lt;/a>
for rendering standard markup languages, sometimes it can be difficult
editing documents using a markup in the Django Admin. Several others
(&lt;a href="http://code.google.com/p/django-tinymce/">1&lt;/a>,
&lt;a href="http://code.djangoproject.com/wiki/AddWYSIWYGEditor">2&lt;/a>,
&lt;a href="http://www.fictitiousnonsense.com/archives/22">3&lt;/a>) show how easy it is
to edit Markdown, Textile, and even HTML, in the Django Admin using a
WYSIWYG editor, such as &lt;a href="http://markitup.jaysalvat.com/home/">markItUp!&lt;/a>
or &lt;a href="http://tinymce.moxiecode.com/">TinyMCE&lt;/a>.&lt;/p>
&lt;p>Unfortunately, reStructuredText is not well support by most WYSIWYG
editors. Nevertheless, we can improve the experience of editing
reStructuredText in the Django Admin. One of the biggest improvements is
switching the Textarea to use a monospace font to avoid issues caused by
the heading underlines being too short. We can also customize the size
of the Textarea.&lt;/p></description></item><item><title>Mocking Groovy's HTTPBuilder</title><link>https://www.johnpaulett.com/2009/mocking-groovys-httpbuilder/</link><pubDate>Thu, 15 Oct 2009 00:22:19 +0000</pubDate><guid>https://www.johnpaulett.com/2009/mocking-groovys-httpbuilder/</guid><description>&lt;p>I ran into a head-scratcher today when trying to unit test some
&lt;a href="http://groovy.codehaus.org/">Groovy&lt;/a> code. The code under test
interacts with an HTTP web service using Groovy's great
&lt;a href="http://groovy.codehaus.org/modules/http-builder/">HTTPBuilder&lt;/a>, which
wraps Apache's
&lt;a href="http://hc.apache.org/httpcomponents-client/">HttpClient&lt;/a>. Obviously, I
wanted to mock the interaction with the HTTP server to limit the scope
of my tests.&lt;/p>
&lt;p>Groovy makes it easy to create simple &lt;a href="http://groovy.codehaus.org/Groovy+Mocks">mocks using
maps&lt;/a>. To mock a class with a
map, one must create a map which is keyed by the methods names to be
tested and storing closures for the mock method implementation. For
example, if we wish to mock out the HTTPBuilder, which has a &amp;quot;post&amp;quot;
method, we can accomplish it using the map defined by &lt;code>mapMock&lt;/code>.&lt;/p></description></item><item><title>Master's Thesis &amp; Open-Source Tool</title><link>https://www.johnpaulett.com/2009/masters-thesis-open-source-tool/</link><pubDate>Thu, 23 Jul 2009 03:00:49 +0000</pubDate><guid>https://www.johnpaulett.com/2009/masters-thesis-open-source-tool/</guid><description>&lt;p>On July 15th, I successfully defended my Master's Thesis in &lt;a href="http://dbmi.mc.vanderbilt.edu/">Biomedical
Informatics&lt;/a> at Vanderbilt University.
This defense was the culmination of 2 years of work. The thesis focuses
on extracting organizational structure and relationships from the &lt;a href="http://en.wikipedia.org/wiki/Audit_trail">audit
logs&lt;/a> of &lt;a href="http://en.wikipedia.org/wiki/Hospital_information_system">clinician
information
systems&lt;/a>. This
work has potential applications in the improvement of delivery of care
and improving the security of patients private medical data.&lt;/p>
&lt;p>As part of this work, I developed an open-source tool for analyzing
audit logs. Licensed under an &lt;a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache 2.0
License&lt;/a>, the
Healthcare Organizational Relational Network Extraction Toolkit (HORNET)
is a Python framework for plugins that analyze healthcare audit logs.
The tool is fully functional, but is not yet polished enough for use by
healthcare administrators.&lt;/p></description></item><item><title>Programming Clojure Review</title><link>https://www.johnpaulett.com/2009/programming-clojure-review/</link><pubDate>Thu, 09 Jul 2009 16:38:32 +0000</pubDate><guid>https://www.johnpaulett.com/2009/programming-clojure-review/</guid><description>&lt;p>&lt;img src="programming-clojure.jpg" alt="&amp;ldquo;Programming Clojure&amp;rdquo; book cover">&lt;/p>
&lt;p>When Stuart Halloway's &lt;a href="http://www.amazon.com/Programming-Clojure-Pragmatic-Programmers-Halloway/dp/1934356336">Programming
Clojure&lt;/a>
came out in May, I picked up a copy and have been reading through it and
practicing with the &lt;a href="http://projecteuler.net/">Project Euler&lt;/a> problems.&lt;/p>
&lt;p>First off, it is a great book! Second off, it introduces a seriously
interesting programming language.&lt;/p>
&lt;p>&lt;a href="http://clojure.org/">Clojure&lt;/a> is a
&lt;a href="http://en.wikipedia.org/wiki/Lisp_(programming_language)">Lisp&lt;/a> dialect
designed to run on &lt;a href="http://en.wikipedia.org/wiki/Java_Virtual_Machine">Java Virtual
Machine&lt;/a> (JVM). This
combination is what makes Clojure very powerful: you get the power of a
mature virtual machine with access to any existing Java libraries,
combined with the dynamic, functional style of Lisp. Imagine being able
to continue to use the code and libraries you any others have spent
years developing from a new programming environment.&lt;/p></description></item><item><title>Install Eclipse Galileo (3.5) on Ubuntu Jaunty (9.04)</title><link>https://www.johnpaulett.com/2009/install-eclipse-galileo-3-5-on-ubuntu-jaunty/</link><pubDate>Fri, 26 Jun 2009 16:13:40 +0000</pubDate><guid>https://www.johnpaulett.com/2009/install-eclipse-galileo-3-5-on-ubuntu-jaunty/</guid><description>&lt;p>Eclipse 3.5, codenamed &amp;quot;Galileo,&amp;quot; was released this week! While there
is a &lt;a href="https://launchpad.net/~eclipse-team">team&lt;/a> actively working on
building an Ubuntu &lt;a href="https://launchpad.net/~eclipse-team/+archive/ppa">deb
package&lt;/a>, they do not
yet have a package yet for Eclipse 3.5. I put together some super simple
instructions for installing Eclipse 3.5.&lt;/p>
&lt;p>I am going to perform a per-user installation into my home-directory. If
multiple people use eclipse on the same computer, you may want to modify
these instructions to install into &lt;em>/opt/&lt;/em>. I am going to put the
installable in &lt;em>~/bin/packages/eclipse3.5&lt;/em>. First, create the
installation directory (change according to your own tastes)&lt;/p></description></item><item><title>Vanderbilt Projects in the News</title><link>https://www.johnpaulett.com/2009/vanderbilt-projects-in-the-news/</link><pubDate>Sat, 20 Jun 2009 13:17:17 +0000</pubDate><guid>https://www.johnpaulett.com/2009/vanderbilt-projects-in-the-news/</guid><description>&lt;p>Some of the projects that I have been involved in at Vanderbilt
University's Informatics Center have been featured in the news
recently:&lt;/p>
&lt;ul>
&lt;li>The New York Times had &lt;a href="http://bits.blogs.nytimes.com/2009/03/18/the-doctor-will-brms-you-now/">a
feature&lt;/a>
about our use of the ILOG (now IBM) business rules engine to send
out pager or SMS messages to physicians when patients have critical
lab results.&lt;/li>
&lt;li>Infection Control Today had &lt;a href="http://www.infectioncontroltoday.com/hotnews/sepsis-detection-and-management.html">an
article&lt;/a>
about our Sepsis detection application which monitors patients'
vital signs and lab results in real time to alert physician to
patients who may have &lt;a href="http://en.wikipedia.org/wiki/Sepsis">sepsis&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>tdaemon and virtualenv</title><link>https://www.johnpaulett.com/2009/tdaemon-and-virtualenv/</link><pubDate>Tue, 16 Jun 2009 04:22:46 +0000</pubDate><guid>https://www.johnpaulett.com/2009/tdaemon-and-virtualenv/</guid><description>&lt;p>I ran across &lt;a href="http://github.com/brunobord/tdaemon/">tdaemon&lt;/a>, which
automatically runs your test suite when you make a change to your source
code. It is very helpful when developing. One issue I had was running
the tests when tdaemon needs to monitor a huge number of files (as
occurs when I have a
&lt;a href="http://pypi.python.org/pypi/virtualenv">virtualenv&lt;/a> environment in the
same directory, which has more than 100MB of code and binaries). I
committed a &lt;a href="http://github.com/johnpaulett/tdaemon">few changes&lt;/a> to
tdaemon to allow the user to ignore any directories. For instance, if
you want to ignore a virtualenv directory called &amp;quot;env&amp;quot; and the
&amp;quot;build&amp;quot; and &amp;quot;dist&amp;quot; directories from distutils:&lt;/p></description></item><item><title>Move to johnpaulett.com</title><link>https://www.johnpaulett.com/2009/move-to-johnpaulettcom/</link><pubDate>Sat, 13 Jun 2009 21:04:46 +0000</pubDate><guid>https://www.johnpaulett.com/2009/move-to-johnpaulettcom/</guid><description>&lt;p>I have moved this blog to &lt;a href="http://johnpaulett.com">johnpaulett.com&lt;/a>.
Links to all old posts should still work.&lt;/p></description></item><item><title>Automated Testing Presentation</title><link>https://www.johnpaulett.com/2009/automated-testing-presentation/</link><pubDate>Fri, 17 Apr 2009 22:30:08 +0000</pubDate><guid>https://www.johnpaulett.com/2009/automated-testing-presentation/</guid><description>&lt;p>&lt;object style="margin:0px" width="425" height="355">&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=automatedtesting-090417112904-phpapp02&amp;stripped_title=automated-testing" />&lt;param name="allowFullScreen" value="true"/>&lt;param name="allowScriptAccess" value="always"/>&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=automatedtesting-090417112904-phpapp02&amp;stripped_title=automated-testing" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355">&lt;/embed>&lt;/object>&lt;/p></description></item><item><title>Getting Started with (Distributed) Version Control</title><link>https://www.johnpaulett.com/2009/getting-started-with-distributed-version-control/</link><pubDate>Fri, 03 Apr 2009 21:50:33 +0000</pubDate><guid>https://www.johnpaulett.com/2009/getting-started-with-distributed-version-control/</guid><description>&lt;p>I gave a short talk on using a distributed version control system. The
slides are &lt;a href="http://www.slideshare.net/johnpaulett/getting-started-with-distributed-version-control">available on
SlideShare&lt;/a>
under a Creative Commons license.&lt;/p>
&lt;p>&lt;object style="margin:0px" width="425" height="355">&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=versioncontrollightning-090401151609-phpapp02&amp;stripped_title=getting-started-with-distributed-version-control" />&lt;param name="allowFullScreen" value="true"/>&lt;param name="allowScriptAccess" value="always"/>&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=versioncontrollightning-090401151609-phpapp02&amp;stripped_title=getting-started-with-distributed-version-control" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355">&lt;/embed>&lt;/object>&lt;/p></description></item><item><title>Parsing HL7 with Python</title><link>https://www.johnpaulett.com/2009/parsing-hl7-with-python/</link><pubDate>Sat, 10 Jan 2009 11:23:26 +0000</pubDate><guid>https://www.johnpaulett.com/2009/parsing-hl7-with-python/</guid><description>&lt;p>I've had a need to parse Health Level 7 (HL7) version 2.x messages from
Python, thus I created
&lt;a href="http://www.bitbucket.org/johnpaulett/python-hl7/wiki/Home">python-hl7&lt;/a>.
The library allows for easy, key-based access of all the elements in an
HL7 message. See the &lt;a href="http://blog.7oars.com/2009/01/announcing-python-hl7.html">release
announcement&lt;/a>
for download information.&lt;/p>
&lt;p>&lt;a href="http://en.wikipedia.org/wiki/HL7">HL7&lt;/a> is a communication protocol and
message format for health care data. It is the de facto standard for
transmitting data between clinical information systems and between
clinical devices. The version 2.x series, which is often is a pipe
delimited format is currently the most widely accepted version of HL7
(version 3.0 is an XML-based format).&lt;/p></description></item></channel></rss>