<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1782230902150018312</id><updated>2011-08-01T09:15:59.786-05:00</updated><category term='Research Log'/><category term='Python'/><category term='Delorme'/><category term='Scientific Computing'/><category term='Linux'/><category term='Matlab'/><category term='Version Control'/><category term='Matplotlib'/><category term='OpenScience'/><category term='GPS'/><category term='Software'/><category term='Earthmate'/><category term='Gentoo'/><title type='text'>Am I coming or going?</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dopplershifted.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dopplershifted.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>DopplerShift</name><uri>http://www.blogger.com/profile/16826161112140114226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1782230902150018312.post-5843396017554625198</id><published>2010-11-03T22:57:00.001-05:00</published><updated>2010-11-03T22:57:58.891-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Research Log'/><title type='text'>Research Log for 2010/11/03</title><content type='html'>Here's what I got done this evening:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Figured out that there was nothing actually wrong with my code.&lt;/li&gt;&lt;li&gt;Verified that my calculation of co-polar cross-correlation (RhoHV) produces reasonable values once the integration is done in double precision. (0.994008 to 1.00000)&lt;/li&gt;&lt;li&gt;Committed the calculation of RhoHV to the scattering library:&amp;nbsp;&lt;a href="https://github.com/dopplershift/Scattering/commit/8a8eb797802b6ee8cfbe267c064a0a1c9cd7e4b4"&gt;https://github.com/dopplershift/Scattering/commit/8a8eb797802b6ee8cfbe267c064a0a1c9cd7e4b4&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Learned a lot about fixing git commits :(&lt;/li&gt;&lt;/ul&gt;Next TODOs:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Learn how to use git better so I'm not so "special" with it.&lt;/li&gt;&lt;li&gt;Finish implementation of time-series simulation using cross-correlation coefficient (Galati et al. 1995 paper)&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1782230902150018312-5843396017554625198?l=dopplershifted.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dopplershifted.blogspot.com/feeds/5843396017554625198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1782230902150018312&amp;postID=5843396017554625198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/5843396017554625198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/5843396017554625198'/><link rel='alternate' type='text/html' href='http://dopplershifted.blogspot.com/2010/11/research-log-for-20101103.html' title='Research Log for 2010/11/03'/><author><name>DopplerShift</name><uri>http://www.blogger.com/profile/16826161112140114226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1782230902150018312.post-5346037458594488841</id><published>2010-11-03T21:09:00.000-05:00</published><updated>2010-11-03T21:09:30.449-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Version Control'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenScience'/><category scheme='http://www.blogger.com/atom/ns#' term='Scientific Computing'/><title type='text'>Frustration and more frustration</title><content type='html'>It's taking a great deal of personal restraint to keep from setting my laptop on fire at the moment.&lt;br /&gt;&lt;br /&gt;After many months of *ahem* time off from my Ph.D. work, I've been getting after it over the last month. &amp;nbsp;For the past couple of weeks, I've been trying to see why some data I generated for my prospectus looked very odd. Frustrated, I did the runs again tonight and everything turned out fine and look as expected--which was unexpected. Flabbergasted at the wasted time, I decided to poke around and see what possibly could have changed to fix it--I don't like miracles when it comes to software. Here's the relevant SVN log (log of changes for the unfamiliar):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;------------------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;r306 | rmay | 2010-03-21 13:23:45 -0500 (Sun, 21 Mar 2010) | 1 line&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Fix missing factor when calculating unattenuated power.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;------------------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;r307 | rmay | 2010-03-21 14:55:43 -0500 (Sun, 21 Mar 2010) | 1 line&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Fix jarbled output fields due to bad ordering of dimensions. (Due to me ignoring what was done in arps_reformat.) &amp;nbsp;Also work around numpy bug when trying to save attributes in pupyere with a single character.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;------------------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;r308 | rmay | 2010-03-22 13:29:58 -0500 (Mon, 22 Mar 2010) | 1 line&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Change units back now that numpy has been fixed.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;------------------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;r309 | rmay | 2010-03-26 16:44:45 -0500 (Fri, 26 Mar 2010) | 1 line&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Fix bug generation of 2-moment interpolation coordinates. Also improve interpolation by using points logarithmically (instead of linearly) distributed for number concentration. &amp;nbsp;Also fix problem where we divide fall speed by 0, results in bad values for velocity (and phase, breaking time series generation).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;------------------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;r310 | rmay | 2010-03-26 16:45:28 -0500 (Fri, 26 Mar 2010) | 1 line&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Make commas_reformat copy out the model's reflectivity by default. &amp;nbsp;It's a useful diagnostic.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;r309 is the change that I'm pretty sure fixed the bug. Now, since I'm such a proponent of reproducible research and good scientific software packages, I went to the effort of putting the version of my code that generates the data files. Here's what I see when I look at one of those files:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;:VersionNumber = "0.8.dev306" ;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That 306 represents the SVN revision number. Bonus points if you realize what's wrong there. If not, what that means is that I did all my nice data runs for my General Exam without actually using the most recent (and "correct") version of the code. Oops.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While I'm pretty torqued off at myself for wasting quite a bit of time chasing a ghost (and for some reason not installing my newest code before running), not to mention using bad data files for some recent plots, hopefully this provides a good use case and motivation for some good scientific software practices. Namely, using version control and and putting version information in my data files allowed me to at least diagnose what went wrong. &amp;nbsp;Without this information, I would have simply had to chalk up the fact that my code is producing the right answer to "magic"...or the code gnomes. If you're not already using version control and putting sufficient information into your data files, you need to start right now.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;No, I'm serious. Do. It. Now. I'd recommend either:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Git:&amp;nbsp;&lt;a href="http://git-scm.com/"&gt;http://git-scm.com/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Subversion:&amp;nbsp;&lt;a href="http://subversion.tigris.org/"&gt;http://subversion.tigris.org/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;This event reminds me that I don't take notes on my research worth anything. If I'd had notes, maybe I would have read them and seen something about an important bug fix that I made 7 months ago. &amp;nbsp;To rectify this, I'm going to start using this blog to log and take research notes. &amp;nbsp;If nothing else, it should be entertaining to go back and read when I'm done, to laugh at all the times things blew up. Or cry.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1782230902150018312-5346037458594488841?l=dopplershifted.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dopplershifted.blogspot.com/feeds/5346037458594488841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1782230902150018312&amp;postID=5346037458594488841' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/5346037458594488841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/5346037458594488841'/><link rel='alternate' type='text/html' href='http://dopplershifted.blogspot.com/2010/11/frustration-and-more-frustration.html' title='Frustration and more frustration'/><author><name>DopplerShift</name><uri>http://www.blogger.com/profile/16826161112140114226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1782230902150018312.post-1389187372974705869</id><published>2009-08-23T17:58:00.001-05:00</published><updated>2009-08-23T18:06:56.321-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenScience'/><title type='text'>Why linux rocks</title><content type='html'>I recognize the fact that linux has it's flaws in comparison with the other operating systems, but I think I found something that is easier to do on a default linux install.&amp;nbsp; I was flying home and had a copy of a Science 2.0 panel video on my laptop. (Good video, you can see that here: &lt;a href="http://www.vimeo.com/6077540"&gt;http://www.vimeo.com/6077540&lt;/a&gt;).&amp;nbsp; But importantly is how I ended up 'watching it'.&amp;nbsp; Since it was just a panel, the video was rather pointless and I would have essentially had my whole laptop up running down its battery just so I could listen.&amp;nbsp; Thanks to ffmpeg, which is installed as a dependency for media programs, I was able to do this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;ffmpeg -i open-science.flv -f mp3 -ab 131072 -vn open-science.mp3&lt;/blockquote&gt;and harvest the audio out of the video.&amp;nbsp; From my previous experience on windows, doing tihs would have either been impossible or taken hours to find the right utility.&amp;nbsp; It just struck me as how simple it was to already have the right tool default on linux.&amp;nbsp; As a result, was able to take a video and listen to it on my mp3 player.&amp;nbsp; That's just cool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1782230902150018312-1389187372974705869?l=dopplershifted.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dopplershifted.blogspot.com/feeds/1389187372974705869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1782230902150018312&amp;postID=1389187372974705869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/1389187372974705869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/1389187372974705869'/><link rel='alternate' type='text/html' href='http://dopplershifted.blogspot.com/2009/08/why-linux-rocks.html' title='Why linux rocks'/><author><name>DopplerShift</name><uri>http://www.blogger.com/profile/16826161112140114226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1782230902150018312.post-3332687106976292450</id><published>2008-09-24T13:11:00.002-05:00</published><updated>2008-09-24T13:14:19.254-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scientific Computing'/><title type='text'>What kind of computing does science really need?</title><content type='html'>&lt;a href="http://www.stsci.edu/institute/itsd/information/streaming/archive/EngineeringColloquium2008/GregWilson092208Hi"&gt;Here's&lt;/a&gt; a talk by Greg Wilson of the University of Toronto that pretty well captures what I think about how computing in the sciences really needs to be done, rather than the focus on bigger supercomputers.&lt;br /&gt;&lt;br /&gt;Other options (Low Res or podcast) available &lt;a href="http://www.stsci.edu/institute/itsd/information/streaming"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://www.stsci.edu/institute/itsd/information/streaming"&gt;&lt;/a&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class="on down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1782230902150018312-3332687106976292450?l=dopplershifted.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dopplershifted.blogspot.com/feeds/3332687106976292450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1782230902150018312&amp;postID=3332687106976292450' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/3332687106976292450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/3332687106976292450'/><link rel='alternate' type='text/html' href='http://dopplershifted.blogspot.com/2008/09/what-kind-of-computing-does-science.html' title='What kind of computing does science really need?'/><author><name>DopplerShift</name><uri>http://www.blogger.com/profile/16826161112140114226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1782230902150018312.post-7162193541473185473</id><published>2008-07-15T14:31:00.004-05:00</published><updated>2008-07-15T14:59:53.431-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Matplotlib'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Organic Code Development</title><content type='html'>I always find it amusing how some of my best coding happens so organically. That is to say, there is no true overarching design usually, just an end goal. Take for instance, my latest creation. I've been working on adding support for wind barbs to the python plotting library&lt;a href="http://matplotlib.sourceforge.net/"&gt; matplotlib &lt;/a&gt;. I initially tried to design it well, think about where the natural breaks in the code would be and then just build these smaller pieces. This worked for some of the simple things, but in the complexities of figuring out transformations and coordinate systems, it got to be a real bear to work top down. Perhaps things like stub functions and other mock objects might have been able to help here, but that's beyond my software development skill set at the moment.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So out went that approach, and I started with the simple goal of getting a single barb to appear on the plot, using the most direct and manual way possible. Once that was achieved, I added a couple more to the test and made sure that they scaled right, and were positioned properly. From here then some refactoring occurred and things were broken into more logical groups, and manual hard coded things were replaced with more flexible (and arguably) simple code. Here's the (more or less) final result.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5223330171912977506" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_c0yu0ISy2Xo/SHz_HfFz_GI/AAAAAAAAAAM/Eqqj1hTQ98s/s320/barbs.png" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;I now have 320 lines of commented and documented code ("borrowing" a lot of the documentation and input processing from a similar matplotlib function, quiver). I'm just amused that this kind of procedure always seems to work better for me. I was stuck for days trying to get this working, trying to figure out where to begin. It was so much easier to start with a simple, small goal and build on it. Then again, this might work better for me because I'm a scientist who codes rather than a software engineer/developer. It could also be because every time I do something like this, I'm learning a new API or even an entirely new library. Maybe if I finally developed a deep expertise with something, I might be able to think at a slightly higher level....nah. :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I think I've really only ever succeeded in designing &lt;strong&gt;and implementing&lt;/strong&gt; one project, my &lt;a href="http://weather.ou.edu/~rmay/research.html"&gt;radar emulator &lt;/a&gt;. While it turned out well, it's not a design that at this point I'm in love with (though I'm stuck with it at this point). Then again, I started that in 2003, when I was far less experienced. Another project I've been kicking around in my head forever, a simple data visualization program, is persistently stuck in the design phase. Granted, it's predecessor grew organically and became unwieldy, but that was C++, where refactoring is a nightmare. But it did have the benefit of actually &lt;strong&gt;existing&lt;/strong&gt; in code and being (somewhat) useful, which is more than I can say for an idea floating around in my head.&lt;br /&gt;&lt;br /&gt;Anyhow, less rambling, more code! On to Skew-T's!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1782230902150018312-7162193541473185473?l=dopplershifted.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dopplershifted.blogspot.com/feeds/7162193541473185473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1782230902150018312&amp;postID=7162193541473185473' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/7162193541473185473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/7162193541473185473'/><link rel='alternate' type='text/html' href='http://dopplershifted.blogspot.com/2008/07/organic-code-development.html' title='Organic Code Development'/><author><name>DopplerShift</name><uri>http://www.blogger.com/profile/16826161112140114226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_c0yu0ISy2Xo/SHz_HfFz_GI/AAAAAAAAAAM/Eqqj1hTQ98s/s72-c/barbs.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1782230902150018312.post-3637730699334526655</id><published>2008-07-15T10:27:00.003-05:00</published><updated>2008-07-15T10:38:00.337-05:00</updated><title type='text'>Links for the day (aka. Other people's stuff)</title><content type='html'>A couple of posts of other people that resonate well with me:&lt;br /&gt;&lt;a href="http://www.johndcook.com/blog/2008/07/15/getting-to-the-bottom-of-things/"&gt;http://www.johndcook.com/blog/2008/07/15/getting-to-the-bottom-of-things/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I think this one hits the nail on the head about multi-tasking and information overload. Also explains why the days that I manage to ignore Google reader and Thunderbird for extended periods of time are my most productive, even though the actual total time spent doing either isn't any less. I probably would see great productivity gains if I managed to restrict how often I look at either of those. I've noticed this summer just how hard it is to get back in a groove on something once you've gotten out, both taking 5 minutes away from intensive coding or taking a multi-day (week?) break from a certain topic. Our brains are like computers in a way, there's only so much you can keep readily accessible.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bitecode.co.uk/2008/07/my-views-on-python/"&gt;http://bitecode.co.uk/2008/07/my-views-on-python/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There's not much more I can add here, python just rocks. :) I can't believe there was once upon a time that I did analysis and even generated images using only C (and maybe *shudder* Excel).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1782230902150018312-3637730699334526655?l=dopplershifted.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dopplershifted.blogspot.com/feeds/3637730699334526655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1782230902150018312&amp;postID=3637730699334526655' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/3637730699334526655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/3637730699334526655'/><link rel='alternate' type='text/html' href='http://dopplershifted.blogspot.com/2008/07/couple-of-posts-of-other-people-that.html' title='Links for the day (aka. Other people&apos;s stuff)'/><author><name>DopplerShift</name><uri>http://www.blogger.com/profile/16826161112140114226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1782230902150018312.post-6438074553885051824</id><published>2008-07-01T15:10:00.003-05:00</published><updated>2008-07-01T15:25:48.739-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Matlab'/><title type='text'>Programmatically saving Matlab figures</title><content type='html'>This problem has been bugging me a long time, and I've finally nailed it. So doing a whole bunch of Matlab processing, and instead of saving each figure by hand using the GUI, which can be tedious after more than a few figures, you'd like to have your code include these steps. (Using python and matplotlib of course, this is simple). Matlab does have the &lt;code&gt;saveas&lt;/code&gt; to allow doing this, but it has two drawbacks for me:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;When I save figures, I usually maximize them so that the spacing looks better and I get higher resolution figures&lt;/li&gt;&lt;li&gt;Regardless of the maximization, &lt;code&gt;saveas&lt;/code&gt; resizes everything and you get (usually) a bad mix of spacing and font sizes.  So many of my figures have labels and things that look like crap, with tick labels overlapping each other and other issues like this.  At least, that's my experience using Matlab on Linux.  At any rate, &lt;code&gt;saveas&lt;/code&gt; does not normally give me figures I want to hand in with a homework assignment, let alone a presentation or a publication.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;I have found a couple of nuggets that allow me to programmatically create graphics just like the ones I would have on screen.  The first nugget, which solves the 2nd problem of resizing is as follows:&lt;/p&gt;&lt;p&gt;&lt;code&gt;set(fig, 'PaperPositionMode', 'auto')&lt;/code&gt;&lt;/p&gt;&lt;p&gt;where &lt;code&gt;fig&lt;/code&gt; is your figure handle.  You can also just pass &lt;code&gt;gcf&lt;/code&gt;.  This wonderful little command, according to the Matlab documentation (where this was buried): "...ensures that the printed version is the same size as the onscreen version.  With &lt;code&gt;PaperPositionMode&lt;/code&gt; set to &lt;code&gt;auto&lt;/code&gt; MATLAB does not resize the figure to fit the current value of the &lt;code&gt;PaperPosition&lt;/code&gt;."  Fantastic.&lt;/p&gt;&lt;p&gt;The second nugget is a way to set the figure size to fill the screen (I found this one in the Mathworks file share through a Google search):&lt;/p&gt;&lt;p&gt;&lt;code&gt;set(fig,'units','normalized','outerposition',[0 0 1 1]);&lt;/code&gt;&lt;/p&gt;&lt;p&gt;You may or may not want to save and restore the original value of units around this call.  At any rate, with these two commands, I can now create figures with my code that look how I want them without requiring any intervention on my part using the GUI.  That's wonderful for making my workflow better.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1782230902150018312-6438074553885051824?l=dopplershifted.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dopplershifted.blogspot.com/feeds/6438074553885051824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1782230902150018312&amp;postID=6438074553885051824' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/6438074553885051824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/6438074553885051824'/><link rel='alternate' type='text/html' href='http://dopplershifted.blogspot.com/2008/07/programmatically-saving-matlab-figures.html' title='Programmatically saving Matlab figures'/><author><name>DopplerShift</name><uri>http://www.blogger.com/profile/16826161112140114226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1782230902150018312.post-6471879072418715459</id><published>2008-04-24T10:10:00.005-05:00</published><updated>2008-04-24T10:33:07.515-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delorme'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Earthmate'/><category scheme='http://www.blogger.com/atom/ns#' term='GPS'/><title type='text'>Delorme Earthmate LT-40 and Linux</title><content type='html'>I just got the new Delorme Earthmate LT-40.  It works pretty well, getting a location lock under windows much more quickly the old version I had (Earthmate USB predating the LT-20).  I think it took ~ 5minutes from a completely cold start to get a differential GPS lock.  I also noticed last night that it managed to get a 3D lock while I was sitting in my living room.  Very impressive, as I only had it plugged in to test that I could actually see it, I didn't actually expect it to work. :)&lt;br /&gt;&lt;br /&gt;However, it did not work for me under Linux using the 2.6.24 kernel.  I plugged it in, it was recognized by the cypress_m8 usb-to-serial driver and the /dev/ttyUSB0 device was created.  However, trying to cat this device resulted in no output.  A bit of googling showed these threads relating to the Earthmate LT-20:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://http://ubuntuforums.org/archive/index.php/t-220821.html"&gt;http://ubuntuforums.org/archive/index.php/t-220821.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.mail-archive.com/linux-usb-devel@lists.sourceforge.net/msg52237.html"&gt;http://www.mail-archive.com/linux-usb-devel@lists.sourceforge.net/msg52237.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A few posts to the linux-usb list and I was directed to this patch series:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://marc.info/?l=linux-usb&amp;amp;m=120269692129718&amp;amp;w=2"&gt;Cypress_m8 Patch 1: Feature Buffer Fixes&lt;/a&gt;&lt;br /&gt;&lt;a href="http://marc.info/?l=linux-usb&amp;amp;m=120269692229727&amp;amp;w=2"&gt;Cypress_m8 Patch 2: Packet Format&lt;/a&gt;&lt;br /&gt;&lt;a href="http://marc.info/?l=linux-usb&amp;amp;m=120269702729797&amp;amp;w=2"&gt;Cypress_m8 Patch 3: Get Config Unsafe for LT-20&lt;/a&gt;&lt;br /&gt;&lt;a href="http://marc.info/?l=linux-usb&amp;amp;m=120269692229724&amp;amp;w=2"&gt;Cypress_m8 Patch 4: Null Check&lt;/a&gt;&lt;br /&gt;&lt;a href="http://marc.info/?l=linux-usb&amp;amp;m=120269692329730&amp;amp;w=2"&gt;Cypress_m8 Patch 5: Limit Baud Rate to &lt;= 4800&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Patch #3 is the important one here, but needs the first 2 to be applied easily.  I've assembled them together into easily used diffs &lt;a href="http://weather.ou.edu/%7Ermay/linux/cypress_m8_lt20_patches.tar.bz2"&gt;here&lt;/a&gt;.  Those looking for a quick fix should simply comment out the call to&lt;br /&gt;&lt;blockquote&gt;cypress_set_dead(port);&lt;/blockquote&gt;at line 408 (at least it is for 2.6.24) of the file drivers/usb/serial/cypress_m8.c.&lt;br /&gt;&lt;br /&gt;Thanks go Mike Isely for writing the patches and directing me to them.  This series of patches is slated to go into 2.6.26.&lt;br /&gt;&lt;br /&gt;So for anyone looking to use their new Earthmate LT-40 (or even LT-20) under Linux, there is hope.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1782230902150018312-6471879072418715459?l=dopplershifted.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dopplershifted.blogspot.com/feeds/6471879072418715459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1782230902150018312&amp;postID=6471879072418715459' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/6471879072418715459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/6471879072418715459'/><link rel='alternate' type='text/html' href='http://dopplershifted.blogspot.com/2008/04/delorme-earthmate-lt-40-and-linux.html' title='Delorme Earthmate LT-40 and Linux'/><author><name>DopplerShift</name><uri>http://www.blogger.com/profile/16826161112140114226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1782230902150018312.post-2035827934458733594</id><published>2007-10-05T12:26:00.000-05:00</published><updated>2007-10-05T12:55:06.443-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gentoo'/><title type='text'></title><content type='html'>For you Gentoo users out there, if you have problems with Adobe Reader (acroread) saying that some rights have been disabled because the document was changed, try re-emerging acroread with the 'ldap' USE flag enabled:&lt;br /&gt;&lt;br /&gt;USE='ldap' emerge -av acroread&lt;br /&gt;&lt;br /&gt;This oddly named useflag (in this case) enables the Adobe Security Plugin, which coincidentally, enables the rights management.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1782230902150018312-2035827934458733594?l=dopplershifted.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dopplershifted.blogspot.com/feeds/2035827934458733594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1782230902150018312&amp;postID=2035827934458733594' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/2035827934458733594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/2035827934458733594'/><link rel='alternate' type='text/html' href='http://dopplershifted.blogspot.com/2007/10/for-you-gentoo-users-out-there-if-you.html' title=''/><author><name>DopplerShift</name><uri>http://www.blogger.com/profile/16826161112140114226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1782230902150018312.post-2243107594445087156</id><published>2007-09-13T15:32:00.001-05:00</published><updated>2007-09-13T15:33:36.138-05:00</updated><title type='text'>ACML Troubles</title><content type='html'>For those of you using ACML out there, here's a good note:&lt;br /&gt;&lt;br /&gt;Don't use the int64 version of ACML unless you're using INTEGER*8 in your fortran code.  Otherwise, you'll get random crashes.  This is in the user guide somewhere, but should probably be made explicit when choosing which to download.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1782230902150018312-2243107594445087156?l=dopplershifted.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dopplershifted.blogspot.com/feeds/2243107594445087156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1782230902150018312&amp;postID=2243107594445087156' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/2243107594445087156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/2243107594445087156'/><link rel='alternate' type='text/html' href='http://dopplershifted.blogspot.com/2007/09/acml-troubles.html' title='ACML Troubles'/><author><name>DopplerShift</name><uri>http://www.blogger.com/profile/16826161112140114226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1782230902150018312.post-5555161291433058358</id><published>2007-09-06T10:48:00.000-05:00</published><updated>2007-09-06T10:49:41.183-05:00</updated><title type='text'>Nerd Test V2.0</title><content type='html'>Why not one more random internet test?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nerdtests.com/nt2ref.html"&gt;&lt;br /&gt;&lt;img src="http://www.nerdtests.com/images/badge/nt2/c285a3728e37bf34.png" alt="NerdTests.com says I'm an Uber Cool Nerd King.  What are you?  Click here!" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It's good to be the king. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1782230902150018312-5555161291433058358?l=dopplershifted.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dopplershifted.blogspot.com/feeds/5555161291433058358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1782230902150018312&amp;postID=5555161291433058358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/5555161291433058358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/5555161291433058358'/><link rel='alternate' type='text/html' href='http://dopplershifted.blogspot.com/2007/09/nerd-test-v20.html' title='Nerd Test V2.0'/><author><name>DopplerShift</name><uri>http://www.blogger.com/profile/16826161112140114226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1782230902150018312.post-2448309191711429547</id><published>2007-07-09T14:29:00.000-05:00</published><updated>2007-07-09T14:34:16.845-05:00</updated><title type='text'>I have a blog!</title><content type='html'>So I've moved into the 21st century  and started a blog, wheee!&lt;br /&gt;In the future, this space will be filled with interesting research snippets, cool and horrifying bits of code, or anything else I seem to find interesting/funny/horrifying.&lt;br /&gt;&lt;br /&gt;In the mean time, I leave you with this:&lt;br /&gt;&lt;br /&gt;January 20th, 2009 -- The end of an error&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1782230902150018312-2448309191711429547?l=dopplershifted.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dopplershifted.blogspot.com/feeds/2448309191711429547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1782230902150018312&amp;postID=2448309191711429547' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/2448309191711429547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1782230902150018312/posts/default/2448309191711429547'/><link rel='alternate' type='text/html' href='http://dopplershifted.blogspot.com/2007/07/i-have-blog.html' title='I have a blog!'/><author><name>DopplerShift</name><uri>http://www.blogger.com/profile/16826161112140114226</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
