<?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>Physion Consulting Blog</title>
	<atom:link href="http://blog.physionconsulting.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.physionconsulting.com</link>
	<description>from the Physion Consulting team</description>
	<lastBuildDate>Fri, 20 Aug 2010 21:18:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Sending multi-byte values from Python to an Arduino board</title>
		<link>http://blog.physionconsulting.com/?p=61</link>
		<comments>http://blog.physionconsulting.com/?p=61#comments</comments>
		<pubDate>Wed, 18 Aug 2010 14:10:42 +0000</pubDate>
		<dc:creator>Barry</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.physionconsulting.com/?p=61</guid>
		<description><![CDATA[Python code for sending multi-byte values across a serial connection to Arduino hardware.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.arduino.cc/">Arduino</a> is an open-source electronics prototyping platform. Several of our clients are using Arduino systems to build custom embedded components for scientific data acquisition. Arduino systems are cheap, flexible and quite easy to program using a specialized C-dialect and a pleasant IDE that comes with the Arduino SDK.</p>
<p>Many Arduino boards have a serial-over-USB connection for communicating with a host computer. We often use <a href="http://pyserial.sourceforge.net/">pyserial</a> to communicate with these systems from <a href="http://python.org">Python</a>. It&#8217;s not obvious how to send multi-byte values (such as Python integers) across the serial connection to an Arduino board, however. Todd Stavish wrote some nice code to send multi-byte values for one of our projects and read those values on the Arduino side using C unions:</p>
<p><a href="http://blog.stavi.sh/python-code-that-writes-a-multibyte-value-lon">http://blog.stavi.sh/python-code-that-writes-a-multibyte-value-lon</a></p>
<pre><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: small;"><span style="line-height: 19px; white-space: normal;"><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; font-size: small;"><span style="line-height: 18px; white-space: pre;">
</span></span></span></span></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.physionconsulting.com/?feed=rss2&amp;p=61</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Physion Consulting is Hiring</title>
		<link>http://blog.physionconsulting.com/?p=62</link>
		<comments>http://blog.physionconsulting.com/?p=62#comments</comments>
		<pubDate>Wed, 28 Jul 2010 22:35:23 +0000</pubDate>
		<dc:creator>Barry</dc:creator>
				<category><![CDATA[physion]]></category>

		<guid isPermaLink="false">http://blog.physionconsulting.com/?p=62</guid>
		<description><![CDATA[Do you want to help change the face of basic science? Physion Consulting is hiring full time developers in the Boston, MA area to work on our upcoming scientific data management system. Demonstrable ability in software engineering, an interest in basic science and an appetite for learning are the only requirements. A CS degree or [...]]]></description>
			<content:encoded><![CDATA[<p>Do you want to help change the face of basic science? Physion Consulting is hiring full time developers in the Boston, MA area to work on our upcoming scientific data management system. Demonstrable ability in software engineering, an interest in basic science and an appetite for learning are the only requirements. A CS degree or experience in a basic science lab are great.</p>
<p>We&#8217;re a self-funded startup, with paying customers. We care about our developers, offer competitive pay, full medical &amp; dental benefits and a great work environment. We&#8217;ll gladly help you set up an internship in a lab or pay for classes if you&#8217;d like to learn more about the science our customers are doing.</p>
<p>Interested? <a href="email:jobs@physionconsulting.com.">Send</a> us your CV. We&#8217;d love to see a link to your blog too.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.physionconsulting.com/?feed=rss2&amp;p=62</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NSF to require Data Management Plans from funded labs</title>
		<link>http://blog.physionconsulting.com/?p=56</link>
		<comments>http://blog.physionconsulting.com/?p=56#comments</comments>
		<pubDate>Tue, 18 May 2010 18:23:22 +0000</pubDate>
		<dc:creator>Barry</dc:creator>
				<category><![CDATA[Data Management]]></category>
		<category><![CDATA[nsf]]></category>

		<guid isPermaLink="false">http://blog.physionconsulting.com/?p=56</guid>
		<description><![CDATA[New data management plan requirements from the NSF.]]></description>
			<content:encoded><![CDATA[<p>The National Science Foundation recently <a href="http://www.nsf.gov/news/news_summ.jsp?cntn_id=116928&amp;org=NSF" target="_blank">announced</a> that, beginning around October, 2010, all research proposals will require a data management plan.</p>
<p>It just so happens that Physion Consulting has a data management system in the pipeline. Stay tuned…</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.physionconsulting.com/?feed=rss2&amp;p=56</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GTM + TestMerge.app = UI testing bliss</title>
		<link>http://blog.physionconsulting.com/?p=23</link>
		<comments>http://blog.physionconsulting.com/?p=23#comments</comments>
		<pubDate>Fri, 05 Jun 2009 21:00:46 +0000</pubDate>
		<dc:creator>Barry</dc:creator>
				<category><![CDATA[Core Plot]]></category>
		<category><![CDATA[TestMerge.app]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[CorePlot]]></category>
		<category><![CDATA[oss]]></category>
		<category><![CDATA[TestMerge]]></category>

		<guid isPermaLink="false">http://blog.physionconsulting.com/?p=23</guid>
		<description><![CDATA[I'm pleased to announce TestMerge.app, a tool that I've developed as part of the Core Plot project to aid managing the output of the Google Toolbox for Mac (GTM) framework.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pleased to announce TestMerge.app, a tool that we&#8217;ve developed as part of the <a href="http://code.google.com/p/core-plot/" target="_self">Core Plot</a> project to aid managing the output of the Google Toolbox for Mac (<a href="http://code.google.com/p/google-toolbox-for-mac/" target="_self">GTM</a>) framework.</p>
<h3>Download</h3>
<p>You can download TestMerge.app from the Core Plot <a href="http://core-plot.googlecode.com/files/TestMerge.app_2009-06-05.dmg">downloads</a> section or build from source by pulling from the Core Plot repository (hg clone https://core-plot.googlecode.com/hg/ core-plot).</p>
<h3>Using TestMerge</h3>
<p>GTM&#8217;s image and state comparison macros generate named rendered output of NS/UIViews, CALayers, NSWindows or the encoded state of NSObjects respectively. If an existing reference file of the same already exists in the test bundle&#8217;s Resources/ folder, the new output is compared against the reference with the test failing in the case that there is a mismatch (pixel-by-pixel or text) between the files. If no reference file exists, a new output file is generated. The GTM test macros make unit testing UI&#8217;s almost too easy. In Core Plot, we generate tens or hundereds of outputs from these macros on each test run.</p>
<p>When tests fail because the generated output doesn&#8217;t match the reference output, users of GTM&#8217;s test macros must manually compare the reference and output files, decide which to keep, then move files appropriately if needed. Since the failed output has a &#8216;_Failed&#8217; suffix appended to the image/encoded state file&#8217;s name, the developer must rename the file if moving it to overwrite the existing reference file. Clearly, this can become a little cumbersome and will eventually lead to bit rot of the reference files.</p>
<p>Enter TestMerge.app. Taking the path to the folder of reference images and the path to the folder of output images in $TM_REFERENCE_PATH and $TM_OUTPUT_PATH environment variables respectively, TestMerge.app presents a UI for browsing and selecting from the reference/output comparisons. Only new output files (those with no corresponding reference) or failed output files (those that do not match their reference) are shown by TestMerge. Selecting a name on the left panel will show the reference and output for the image or state file with that name.</p>
<dl id="attachment_41" class="wp-caption alignright" style="width: 310px;">
<dt class="wp-caption-dt"><img class="size-medium wp-image-41" title="testmerge-image" src="http://blog.physionconsulting.com/wp-content/uploads/blog.physionconsulting.com/2009/06/testmerge-image-300x142.png" alt="Screenshot of TestMerge image comparison" width="300" height="142" /></dt>
<dd class="wp-caption-dd">Screenshot of TestMerge image comparison</dd>
</dl>
<p class="mceTemp">In the screenhot shown at the right (of TestMerge showing the output of its own unit tests), a named image pair is selected in the left pane. The referenc image is then shown on the left and the new output is shown on the right with the pixel differences highlighted in red. Encoded state output is shown similarly (though no fancy highlighting is done on the text diff yet).</p>
<p class="mceTemp">Selecting &#8220;Select Reference&#8221; from the &#8220;Merge&#8221; menu selects the existing reference as the correct image or state (indicating a true test failure). Conversely, selecting &#8220;Select Output&#8221; from the &#8220;Merge&#8221; menu marks the new output as the correct new reference image/state (indicating that the programs out has changed and the test needs to be updated to match this new, correct, output).</p>
<p class="mceTemp">A blue outline indicates the selected file (reference or output) in the right pane.</p>
<p class="mceTemp">When you quit TestMerge, you&#8217;ll be promted to commit the choices you&#8217;ve made. If you selected the reference file for a pair, the new output will be deleted. If you selected the new output for a pair, the old reference file will be replaced (after appropriately renaming the output file). If you made no selection for a pair, both files will be left untouched. Obviously choosing to not commit the selections leaves all files untouched.</p>
<p class="mceTemp">You&#8217;ll still have to manually add new reference files to your Xcode project unit test target, and you&#8217;ll have to add new files to your SCM, but TestMerge can&#8217;t do it all on the first version or there&#8217;d be nothing left to work on.</p>
<p class="mceTemp">That&#8217;s it. A simple tool for a simple job.</p>
<p class="mceTemp">The Core Plot (and TestMerge) projects are already configured to run TestMerge automatically after each unit test run. To do the same in your Xcode project, add a Run Script build phase after the Run Script build phase that calls your test runner. In the new phases&#8217; script use</p>
<pre class="mceTemp"># Run TestMerge to merge GTM output, if necessary

export TM_REFERENCE_PATH=${PROJECT_DIR}/TestResources
export TM_OUTPUT_PATH=~/Desktop

TEST_MERGE_PATH/TestMerge.app/Contents/MacOS/TestMerge</pre>
<p>You&#8217;ll have to modify the export lines to give the appropriate paths for your project. GTM&#8217;s output goes to ~/Desktop by default. You&#8217;ll also have to replace the TEST_MERGE_PATH with the appropriate path on your system.</p>
<p>Please file issues on the Core Plot issues <a href="http://code.google.com/p/core-plot/issues/list">tracker</a>. Happy testing!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.physionconsulting.com/?feed=rss2&amp;p=23</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deprecating scikits.ann in favor of scipy.spatial</title>
		<link>http://blog.physionconsulting.com/?p=17</link>
		<comments>http://blog.physionconsulting.com/?p=17#comments</comments>
		<pubDate>Mon, 18 May 2009 16:44:32 +0000</pubDate>
		<dc:creator>Barry</dc:creator>
				<category><![CDATA[scikits]]></category>
		<category><![CDATA[scipy]]></category>

		<guid isPermaLink="false">http://blog.physionconsulting.com/?p=17</guid>
		<description><![CDATA[Now that scipy.spatial has a very competent KDTree implementation (in both python an C versions), Rob and I feel that it&#8217;s probably best to stop development of the ANN wrapper. It&#8217;s in a workable state and the code won&#8217;t be going anywhere, but any of our future efforts will go towards scipy.spatial. Give it a [...]]]></description>
			<content:encoded><![CDATA[<p>Now that scipy.spatial has a very competent KDTree implementation (in both python an C versions), Rob and I feel that it&#8217;s probably best to stop development of the ANN wrapper. It&#8217;s in a workable state and the code won&#8217;t be going anywhere, but any of our future efforts will go towards scipy.spatial. Give it a try.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.physionconsulting.com/?feed=rss2&amp;p=17</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Container performance in Matlab</title>
		<link>http://blog.physionconsulting.com/?p=15</link>
		<comments>http://blog.physionconsulting.com/?p=15#comments</comments>
		<pubDate>Wed, 21 Jan 2009 17:39:19 +0000</pubDate>
		<dc:creator>Barry</dc:creator>
				<category><![CDATA[matlab]]></category>

		<guid isPermaLink="false">http://blog.physionconsulting.com/?p=15</guid>
		<description><![CDATA[A colleague has been fighting with Matlab&#8217;s new object-oriented language features and Matlab&#8217;s hybrid pass-by-value and pass-by-reference semantics. His findings are quite interesting.]]></description>
			<content:encoded><![CDATA[<p>A colleague has been fighting with Matlab&#8217;s new object-oriented language features and Matlab&#8217;s hybrid pass-by-value and pass-by-reference semantics. His <a href="http://dacc.exaptic.com/2009/01/matlab-hacking-oo-and-performance-meta-programming/">findings</a> are quite interesting.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.physionconsulting.com/?feed=rss2&amp;p=15</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>SciPy 2008 Proceedings online</title>
		<link>http://blog.physionconsulting.com/?p=14</link>
		<comments>http://blog.physionconsulting.com/?p=14#comments</comments>
		<pubDate>Tue, 23 Sep 2008 18:38:00 +0000</pubDate>
		<dc:creator>Barry</dc:creator>
				<category><![CDATA[scipy]]></category>

		<guid isPermaLink="false">http://blog.physionconsulting.com/?p=14</guid>
		<description><![CDATA[The proceedings of the 2008 SciPy conference are now online. The articles provide a snapshot of some of the great work being done using SciPy as well as valuable references for SciPy users. Gaël Varoquaux has done a great job getting the whole collection in shape. Thanks Gaël!]]></description>
			<content:encoded><![CDATA[<p>The proceedings of the 2008 SciPy conference are now <a href="http://conference.scipy.org/proceedings/SciPy2008/">online</a>. The articles provide a snapshot of some of the great work being done using SciPy as well as valuable references for SciPy users. Gaël Varoquaux has done a great job getting the whole collection in shape. Thanks Gaël!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.physionconsulting.com/?feed=rss2&amp;p=14</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data type and byte order conversions for NSData using the STL</title>
		<link>http://blog.physionconsulting.com/?p=13</link>
		<comments>http://blog.physionconsulting.com/?p=13#comments</comments>
		<pubDate>Sun, 16 Mar 2008 22:52:00 +0000</pubDate>
		<dc:creator>Barry</dc:creator>
				<category><![CDATA[cocoa]]></category>

		<guid isPermaLink="false">http://blog.physionconsulting.com/?p=13</guid>
		<description><![CDATA[We&#8217;ve been spoiled working in Python&#8217;s numpy array library. Converting data types or byte order for numeric data in a numpy array is trivial (thanks to the work of numpy&#8217;s authors of course). When we&#8217;re in Objective-C land, the inability to change data types or byte orders on NSData instances is frustrating. So we&#8217;ve written [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been spoiled working in Python&#8217;s <a href="http://numpy.scipy.org/">numpy</a> array library. Converting data types or byte order for numeric data in a numpy array is trivial (thanks to the work of numpy&#8217;s authors of course). When we&#8217;re in Objective-C land, the inability to change data types or byte orders on NSData instances is frustrating. So we&#8217;ve written a short C++ header that provides templated functions for converting the data type and/or byte order of numeric data stored in NSData/NSMutableData instances. I think it might be useful for others who don&#8217;t want to (re)learn C++ and the STL. Writing code in Objective-C to accomplish the same functionality is a mess of if/then/else or switch statements. Every job has a tool and C++ templates seem to be the best tool for this job (numpy&#8217;s authors have a similar solution using a code generator to keep things all in C).</p>
<div>For the brave and or insterested, take a look at <a href="http://rieke-server.physiol.washington.edu/~barry/code/NumericDataTypeConversions.h">NumericDataTypeConversions.h </a> (BSD license). Bug reports or patches are welcome. Since it&#8217;s a C++ header, any Objetive-C file that includes it will have to have the .mm extension (or otherwise ensure that the file is compiled as Objective-C++). Happy coding.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.physionconsulting.com/?feed=rss2&amp;p=13</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>scikits.ann in PyPI</title>
		<link>http://blog.physionconsulting.com/?p=11</link>
		<comments>http://blog.physionconsulting.com/?p=11#comments</comments>
		<pubDate>Thu, 31 Jan 2008 02:58:00 +0000</pubDate>
		<dc:creator>Barry</dc:creator>
				<category><![CDATA[scikits]]></category>
		<category><![CDATA[scipy]]></category>

		<guid isPermaLink="false">http://blog.physionconsulting.com/?p=11</guid>
		<description><![CDATA[After several folks had trouble getting the scikits.ann egg from the server listed in previous posts, I&#8217;ve uploaded the source and OS X 10.5 egg to PyPI. You can now install it via easy_install. Of course, you can still get it via the scikits SVN.]]></description>
			<content:encoded><![CDATA[<p>After several folks had trouble getting the scikits.ann egg from the server listed in previous posts, I&#8217;ve uploaded the source and OS X 10.5 egg to PyPI. You can now install it via easy_install. Of course, you can still get it via the <a href="http://scipy.org/scipy/scikits/wiki">scikits</a> SVN.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.physionconsulting.com/?feed=rss2&amp;p=11</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>ANN namespace madness</title>
		<link>http://blog.physionconsulting.com/?p=10</link>
		<comments>http://blog.physionconsulting.com/?p=10#comments</comments>
		<pubDate>Wed, 30 Jan 2008 00:36:00 +0000</pubDate>
		<dc:creator>Barry</dc:creator>
				<category><![CDATA[scikits]]></category>
		<category><![CDATA[scipy]]></category>

		<guid isPermaLink="false">http://blog.physionconsulting.com/?p=10</guid>
		<description><![CDATA[I hadn&#8217;t checked the scikits Developer&#8217;s Trac recently. Apparently it&#8217;s now OK to use non-BSD (but OSI approved) licenses in the scikits namespace. So I&#8217;ve moved our ANN wrapper back. You can get it from the scikits SVN or via easy_install -f http://rieke-server.physiol.washington.edu/~barry/python/ scikits.ann if you&#8217;re on OS X 10.5.]]></description>
			<content:encoded><![CDATA[<p>I hadn&#8217;t checked the scikits Developer&#8217;s Trac recently. Apparently it&#8217;s now OK to use non-BSD (but OSI approved) licenses in the scikits namespace. So I&#8217;ve moved our ANN wrapper back. You can get it from the <a href="http://scipy.org/scipy/scikits">scikits</a> SVN or via</p>
<div>
<pre>easy_install -f http://rieke-server.physiol.washington.edu/~barry/python/ scikits.ann</pre>
<p>if you&#8217;re on OS X 10.5.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.physionconsulting.com/?feed=rss2&amp;p=10</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
