<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Minority Opinions</title>
	<atom:link href="http://eswald.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://eswald.wordpress.com</link>
	<description>Not everyone can be mainstream, after all.</description>
	<lastBuildDate>Wed, 25 Jan 2012 03:19:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='eswald.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Minority Opinions</title>
		<link>http://eswald.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://eswald.wordpress.com/osd.xml" title="Minority Opinions" />
	<atom:link rel='hub' href='http://eswald.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Language Ambiguity</title>
		<link>http://eswald.wordpress.com/2012/01/24/language-ambiguity/</link>
		<comments>http://eswald.wordpress.com/2012/01/24/language-ambiguity/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 03:19:45 +0000</pubDate>
		<dc:creator>eswald</dc:creator>
				<category><![CDATA[Politics]]></category>

		<guid isPermaLink="false">http://eswald.wordpress.com/?p=492</guid>
		<description><![CDATA[As a programmer, physicist, and engineer, I&#8217;m used to words with precise meanings in certain contexts.  Surprisingly, that skill has also helped me learn to skim legal documents.  Sure, I use that skill most often for software license statements, but it has also come in handy for patent terms, buying a house, and taxes. This [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=492&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As a programmer, physicist, and engineer, I&#8217;m used to words with precise meanings in certain contexts.  Surprisingly, that skill has also helped me learn to skim legal documents.  Sure, I use that skill most often for software license statements, but it has also come in handy for patent terms, buying a house, and taxes.</p>
<p><span id="more-492"></span>This year, I noticed part of the form that hadn&#8217;t applied before now:</p>
<blockquote><p>No. of children on 6c who [...] did not live with you due to divorce or separation (see instructions)</p></blockquote>
<p>Unfortunately, the instructions are more concerned with defining divorce or separation than with clarifying what the statement means. Pop quiz: Which is more appropriate?</p>
<ol style="list-style-type:upper-latin;">
<li>Number of children who lived with you, but not due to divorce or separation; or</li>
<li>Number of children who did not live with you, but would have had it not been for a divorce or separation.</li>
</ol>
<p>I&#8217;m fairly certain that the first answer I came up with was wrong. Certain enough to have scoured instructions and re-read the form until I realized my mistake.</p>
<p>The worst part is that someone probably spent serious time trying to make that line as precise as possible while still fitting in the space available for it.  My confusion is exactly the kind of thing that is cleared up almost automatically in verbal communication, through small cues of emphasis or through questions, but legal language has to be understandable in written form, preferably without any external help.</p>
<p>Perhaps I would have made a good patent lawyer, but I doubt it would have been as enjoyable as programming.  The bugs are so much harder to fix.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eswald.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eswald.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/eswald.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/eswald.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/eswald.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/eswald.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/eswald.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/eswald.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/eswald.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/eswald.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/eswald.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/eswald.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/eswald.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/eswald.wordpress.com/492/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=492&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://eswald.wordpress.com/2012/01/24/language-ambiguity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d7e4b135453e58ce86964bac55ab3f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eswald</media:title>
		</media:content>
	</item>
		<item>
		<title>Git Velocity</title>
		<link>http://eswald.wordpress.com/2012/01/17/git-velocity/</link>
		<comments>http://eswald.wordpress.com/2012/01/17/git-velocity/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 21:54:19 +0000</pubDate>
		<dc:creator>eswald</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://eswald.wordpress.com/?p=488</guid>
		<description><![CDATA[After playing around with the number of lines in my recent git commits, I&#8217;ve found something that makes my work look roughly linear.  The key is to take the logarithm of the number of lines per commit, before adding them together.  That changes the graph from a completely useless set of stairs: To a much [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=488&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After playing around with the number of lines in <a title="Beeminding Git" href="http://eswald.wordpress.com/2012/01/10/beeminding-git/">my recent git commits</a>, I&#8217;ve found something that makes my work look roughly linear.  The key is to take the logarithm of the number of lines per commit, before adding them together.  That changes the graph from a completely useless set of stairs:</p>
<p><a href="http://eswald.files.wordpress.com/2012/01/stair-step.png"><img class="aligncenter size-full wp-image-489" title="Commit Lines" src="http://eswald.files.wordpress.com/2012/01/stair-step.png?w=700&#038;h=412" alt="" width="700" height="412" /></a></p>
<p>To a much more gradual slope:</p>
<p><a href="http://eswald.files.wordpress.com/2012/01/linear.png"><img class="aligncenter size-full wp-image-490" title="Logarithmic commit points" src="http://eswald.files.wordpress.com/2012/01/linear.png?w=700&#038;h=419" alt="" width="700" height="419" /></a></p>
<p>Vacations and slow times are highly visible against a background of steady progress with occasional spurts.  The huge cliffs are now well integrated into slopes of a few commits each; yes, the graph is a bit steeper in those areas, but it&#8217;s not clearly dominated by a small set of points.</p>
<p>In this particular case, the value added to the total by each commit is ROUND(LN(LINES+2)*10), where LINES is the number of lines added or changed.  The 2 is necessary for zero-line commits, since zero itself is undefined for logarithms.  It could be 1, causing such commits to contribute nothing at all, but I like the extra punch that the second fake line gives you.  The rounding is simply to yield integers, in case I want to store the results in a text file sometime, and the 10 is a convenient scaling factor to avoid nasty truncations at lower line counts.</p>
<p>The trend line shows a velocity of just over 80 points a day, or 112 points per weekday.  Those points are more or less meaningless as indications of work, but at least say that I&#8217;ve been doing <em>something</em>.  To make my quota for a single day would take 16 zero-line commits, 8 two-liners, 4 commits of 14 lines each, 2 of 256 lines, or a single commit of almost seventy thousand lines.  The three huge ones above top out at 104 points each.</p>
<p>That these counts encourage smaller commits is probably a good thing.  Small changes are easy to verify, and make it easier to see the purpose for a given line.  Massive commits are more likely to have unintended consequences, particularly when they&#8217;re caused by accidentally committing everything at once, instead of just the piece you were most recently working on.</p>
<p>It&#8217;s still possible to game the system, of course, by running through loads of nearly meaningless changes, or even by breaking up one logical changeset into single lines, because it counts only quantity, not quality.  It&#8217;s probably best that you leave it for personal use.  On the other hand, if Github or someone wanted to pick it up as an alternative metric, I would not be opposed.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eswald.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eswald.wordpress.com/488/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/eswald.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/eswald.wordpress.com/488/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/eswald.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/eswald.wordpress.com/488/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/eswald.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/eswald.wordpress.com/488/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/eswald.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/eswald.wordpress.com/488/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/eswald.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/eswald.wordpress.com/488/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/eswald.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/eswald.wordpress.com/488/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=488&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://eswald.wordpress.com/2012/01/17/git-velocity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d7e4b135453e58ce86964bac55ab3f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eswald</media:title>
		</media:content>

		<media:content url="http://eswald.files.wordpress.com/2012/01/stair-step.png" medium="image">
			<media:title type="html">Commit Lines</media:title>
		</media:content>

		<media:content url="http://eswald.files.wordpress.com/2012/01/linear.png" medium="image">
			<media:title type="html">Logarithmic commit points</media:title>
		</media:content>
	</item>
		<item>
		<title>Beeminding Git</title>
		<link>http://eswald.wordpress.com/2012/01/10/beeminding-git/</link>
		<comments>http://eswald.wordpress.com/2012/01/10/beeminding-git/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 01:42:00 +0000</pubDate>
		<dc:creator>eswald</dc:creator>
				<category><![CDATA[Employment]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://eswald.wordpress.com/?p=482</guid>
		<description><![CDATA[After trying out Beeminder to get me to write more, I considered having it make sure I was getting actual work done at work.  Nearly everything we do is in a repository, lately git, so it made sense to base a graph on commits.  Sure, I could base it on time spent, but that&#8217;s even [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=482&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After <a title="Akrasial Motivation" href="http://eswald.wordpress.com/2012/01/03/akrasial-motivation/">trying out Beeminder</a> to get me to write more, I considered having it make sure I was getting actual work done at work.  Nearly everything we do is in a repository, lately <code>git</code>, so it made sense to base a graph on commits.  Sure, I could base it on time spent, but that&#8217;s even harder; I have utterly failed to get accurate counts of the time I spend on anything.  Besides, the results are more important than the process.</p>
<p>With that decided, there are two key metrics that commits give you: The number of commits, or the number of lines changed.  If you do anything resembling a large amount of work on a single commit, the former is grossly understated.  With any amount of copy-and-paste or other trivial changes, the latter is grossly overstated.  Together, they can give you some sort sense of what was happening, but for graphing, they&#8217;re probably more lies than reality.  They can also be easily gamed, so never, ever, use this as the basis of any sort of payroll or employment decision.</p>
<p><span id="more-482"></span>That said, I came up with a simple commit hook to count the lines added or changed by a commit, format it in the style of a Beeminder line, and append it to a file.  I have actually used that file to see what I was working on during a given time period. It uses the repository&#8217;s directory name as a convenient project tag; I could have had it look at <code>.git/description</code>, but that file has an unfortunate tendency to keep its default &#8220;Unnamed repository&#8221; message. Removed lines are ignored, because they don&#8217;t usually represent real work on my part. It also has an unfortunate tendency to duplicate rebased commits, but those can be spotted by having a date entirely out of order.</p>
<pre style="overflow:scroll;">#!/bin/sh
#
# Count the number of lines changed,
# writing them out in Beeminder format.

cd "`dirname $0`/../.."
repo="`basename $PWD`"

git show --numstat --date=short | \
  perl -w -e '$date = ""; $lines = 0; $comment = "";' \
  -e 'while (&lt;&gt;) { /^Date: +([-\d]+)/ and $date = $1 and $date =~ y/-/ /; $comment or /^ +(.*)/ and $comment = $1; /^(\d+)/ and $lines += $1; }' \
  -e 'print qq($date $lines "'"$repo"': $comment"\n);' \
  &gt;&gt; ~/Documents/commit-lines.log</pre>
<p>A graph of my work for the last six months shows the real problem:</p>
<p><a href="http://eswald.files.wordpress.com/2012/01/commit-lines.png"><img class="aligncenter size-full wp-image-483" title="commit-lines" src="http://eswald.files.wordpress.com/2012/01/commit-lines.png?w=700&#038;h=411" alt="" width="700" height="411" /></a></p>
<p>Yes, there are three commits worth over twenty thousand lines each.  One was an upgrade of a third-party component, one included a large number of static assets from another team, and the third merged the branch that included the second commit.  Removing those three gives the graph a bit more texture, but there are still a few large outliers.</p>
<p>Maybe I can salvage something from it, perhaps by taking a logarithm, but it really hasn&#8217;t been important enough.  Nevertheless, it might be interesting to someone.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eswald.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eswald.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/eswald.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/eswald.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/eswald.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/eswald.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/eswald.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/eswald.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/eswald.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/eswald.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/eswald.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/eswald.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/eswald.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/eswald.wordpress.com/482/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=482&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://eswald.wordpress.com/2012/01/10/beeminding-git/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d7e4b135453e58ce86964bac55ab3f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eswald</media:title>
		</media:content>

		<media:content url="http://eswald.files.wordpress.com/2012/01/commit-lines.png" medium="image">
			<media:title type="html">commit-lines</media:title>
		</media:content>
	</item>
		<item>
		<title>Akrasial Motivation</title>
		<link>http://eswald.wordpress.com/2012/01/03/akrasial-motivation/</link>
		<comments>http://eswald.wordpress.com/2012/01/03/akrasial-motivation/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 03:54:50 +0000</pubDate>
		<dc:creator>eswald</dc:creator>
				<category><![CDATA[Lifestyle]]></category>

		<guid isPermaLink="false">http://eswald.wordpress.com/?p=477</guid>
		<description><![CDATA[My significant other just started a productivity blog as a motivational tool.  It&#8217;s been helping us both get things done around the house, almost by virtue of being there.  Part of that may be that it&#8217;s being read by family members who want to know more about our life and kids. This one isn&#8217;t, as [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=477&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My significant other just started a productivity blog as a motivational tool.  It&#8217;s been helping us both get things done around the house, almost by virtue of being there.  Part of that may be that it&#8217;s being read by family members who want to know more about our life and kids.</p>
<p>This one isn&#8217;t, as far as I know.  In fact, it&#8217;s read by almost nobody.  I&#8217;ve considered submitting it, or at least certain of its categories, to an aggregator or two, but that&#8217;s not really its point.  The point is that I need to write.</p>
<p>But I&#8217;m a procrastinator, so I spent a couple of years posting only here and there, until I read a post on <a title="How To Do What You Want: Akrasia and Self-Binding" href="http://blog.beeminder.com/akrasia/">self-binding</a> by Daniel Reeves.  I signed up for the <a href="http://beeminder.com/">Beeminder</a> service it described, and was greeted with the happy news that a bot could even fill out the graph for me, from my blog&#8217;s feed.  It took a bit to get things rolling, but I eventually got into a habit of posting once a week.  Granted, my procrastination led me to habitually let the graph touch the bottom of the yellow brick road before posting, but I was more or less on track.</p>
<p>However, sometime during this process, the post-processing bot stopped filling things out.  By that time, I had the graph in my head, so my posting schedule kept on track, but my page on the site has flatlined.  Worse, I think I&#8217;ve missed a week or two, so I&#8217;m probably below the yellow brick road for real.</p>
<p>Therefore, I&#8217;m hereby making a new commitment.  I will post once per week for this whole year.  More specifically, I will maintain a rate of at least one post per full seven days from this date.  If I slip from that schedule, I will donate USD$500 toward development of beeminder.com, to Beeminder LLC.  That&#8217;s enough that the manager of my money will freak out, but not so much that we&#8217;ll be in serious trouble of missing a bill payment.</p>
<p>I think I can do it, but it will probably still be tough sometimes.  One of these days, it may be important to admit that I have money riding on it, but I hope to avoid that fate.  I haven&#8217;t even admitted yet that I have a blog of my own&#8230;</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eswald.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eswald.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/eswald.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/eswald.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/eswald.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/eswald.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/eswald.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/eswald.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/eswald.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/eswald.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/eswald.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/eswald.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/eswald.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/eswald.wordpress.com/477/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=477&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://eswald.wordpress.com/2012/01/03/akrasial-motivation/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d7e4b135453e58ce86964bac55ab3f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eswald</media:title>
		</media:content>
	</item>
		<item>
		<title>French Peas</title>
		<link>http://eswald.wordpress.com/2011/12/27/french-peas/</link>
		<comments>http://eswald.wordpress.com/2011/12/27/french-peas/#comments</comments>
		<pubDate>Wed, 28 Dec 2011 03:38:08 +0000</pubDate>
		<dc:creator>eswald</dc:creator>
				<category><![CDATA[Food]]></category>
		<category><![CDATA[Lifestyle]]></category>

		<guid isPermaLink="false">http://eswald.wordpress.com/?p=470</guid>
		<description><![CDATA[This recipe has been a family tradition from my mother&#8217;s family, but I had never done it myself until this year. (My siblings and I had specialized responsibilities, but the one who normally does peas was visiting in-laws this year.) Now I get to decide whether to continue the tradition. Ingredients 4 slices bacon 4 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=470&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This recipe has been a family tradition from my mother&#8217;s family, but I had never done it myself until this year. (My siblings and I had specialized responsibilities, but the one who normally does peas was visiting in-laws this year.) Now I get to decide whether to continue the tradition.</p>
<h3>Ingredients</h3>
<ul>
<li>4 slices bacon</li>
<li>4 green onions, chopped</li>
<li>1 cup finely shredded lettuce</li>
<li>1 Tbsp flour</li>
<li>1 cube chicken bullion</li>
<li>½ cup water</li>
<li>16 oz. peas</li>
<li>1 small can water chestnuts</li>
<li>¼ tsp salt</li>
</ul>
<h3>Directions</h3>
<p>Fry the bacon in a large skillet over high heat until browned on edges. Drain the excess fat. Add the green onions, lettuce, and flour; cook over medium-high heat until some of the lettuce turns transparent, stirring frequently. Add bullion and water, and cook until thick. Add peas, water chestnuts, and salt; cook until peas are tender.</p>
<p>Makes 5-6 servings.</p>
<h3>Comments</h3>
<p>For six adults and three children, we doubled the recipe and had plenty left over. My spouse finds it a bit soggy, so it might be largely nostalgia for me. Nevertheless, I might experiment with less water and possibly different kinds of lettuce. Given that a co-worker has recently sung the praises of kale, that could be a good place to start.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eswald.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eswald.wordpress.com/470/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/eswald.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/eswald.wordpress.com/470/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/eswald.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/eswald.wordpress.com/470/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/eswald.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/eswald.wordpress.com/470/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/eswald.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/eswald.wordpress.com/470/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/eswald.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/eswald.wordpress.com/470/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/eswald.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/eswald.wordpress.com/470/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=470&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://eswald.wordpress.com/2011/12/27/french-peas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d7e4b135453e58ce86964bac55ab3f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eswald</media:title>
		</media:content>
	</item>
		<item>
		<title>Infinitely Iterable Permutations</title>
		<link>http://eswald.wordpress.com/2011/12/20/infinitely-iterable-permutations/</link>
		<comments>http://eswald.wordpress.com/2011/12/20/infinitely-iterable-permutations/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 03:08:05 +0000</pubDate>
		<dc:creator>eswald</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://eswald.wordpress.com/?p=465</guid>
		<description><![CDATA[For some crazy reason that didn&#8217;t end up needing it, I decided to write a permutation generator that could accept an infinite sequence.  After a bit of experimentation, I managed something based on the second sample permutations() implementation in the itertools documentation.  It will still chew up unbounded amounts of memory and time, but always spits [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=465&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For some crazy reason that didn&#8217;t end up needing it, I decided to write a permutation generator that could accept an infinite sequence.  After a bit of experimentation, I managed something based on the second sample <code>permutations()</code> implementation in <a title="Itertools module: permutations()" href="http://docs.python.org/library/itertools.html#itertools.permutations">the <code>itertools</code> documentation</a>.  It will still chew up unbounded amounts of memory and time, but always spits out as many permutations as it can before collecting a new element from the input sequence.</p>
<p><span id="more-465"></span></p>
<pre>from itertools import product

def iperms(iterable, r):
    r'''Permutation generator.
        Differs from itertools.permutations() in that it accepts infinite iterables;
        that also causes it to return results in a different order, and require r.

        &gt;&gt;&gt; ' '.join(map(''.join, iperms('ABCD', 2)))
        'AB BA AC BC CA CB AD BD CD DA DB DC'

        &gt;&gt;&gt; from itertools import count, imap, islice
        &gt;&gt;&gt; ' '.join(map(''.join, islice(iperms(imap(str, count(3)), 2), 20)))
        '34 43 35 45 53 54 36 46 56 63 64 65 37 47 57 67 73 74 75 76'

        &gt;&gt;&gt; from itertools import count, imap, islice
        &gt;&gt;&gt; ' '.join(map(''.join, islice(iperms(imap(str, count(3)), 3), 18)))
        '345 354 435 453 534 543 346 356 364 365 436 456 463 465 536 546 563 564'
    '''#"""#'''
    n = 0
    pool = []
    for item in iterable:
        pool.append(item)
        n += 1
        for indices in product(range(n), repeat=r):
            iset = set(indices)
            if len(iset) == r and n-1 in iset:
                yield tuple(pool[i] for i in indices)</pre>
<p>Yes, it could be optimized; there are a whole lot of <code>product()</code> results that are simply thrown out.  If I were using it for something important, I would work on it some more, but I just don&#8217;t care enough right now.  The two-item case in particular displays a pattern that looks easily optimizable, but the addition of more elements seems to defeat that.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eswald.wordpress.com/465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eswald.wordpress.com/465/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/eswald.wordpress.com/465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/eswald.wordpress.com/465/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/eswald.wordpress.com/465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/eswald.wordpress.com/465/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/eswald.wordpress.com/465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/eswald.wordpress.com/465/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/eswald.wordpress.com/465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/eswald.wordpress.com/465/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/eswald.wordpress.com/465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/eswald.wordpress.com/465/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/eswald.wordpress.com/465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/eswald.wordpress.com/465/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=465&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://eswald.wordpress.com/2011/12/20/infinitely-iterable-permutations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d7e4b135453e58ce86964bac55ab3f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eswald</media:title>
		</media:content>
	</item>
		<item>
		<title>Licensing the Ubiquitous</title>
		<link>http://eswald.wordpress.com/2011/12/13/licensing-the-ubiquitous/</link>
		<comments>http://eswald.wordpress.com/2011/12/13/licensing-the-ubiquitous/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 03:48:45 +0000</pubDate>
		<dc:creator>eswald</dc:creator>
				<category><![CDATA[Lifestyle]]></category>
		<category><![CDATA[Politics]]></category>

		<guid isPermaLink="false">http://eswald.wordpress.com/?p=218</guid>
		<description><![CDATA[In local culture, everyone is expected to drive.  Nothing highlighted that more than when I let my license lapse for a couple of years.  (I had moved from another state, and had no car, but the licensing process as documented seemed to require a driving test in my own vehicle.  That it didn&#8217;t was a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=218&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In local culture, everyone is expected to drive.  Nothing highlighted that more than when I let my license lapse for a couple of years.  (I had moved from another state, and had no car, but the licensing process as documented seemed to require a driving test in my own vehicle.  That it didn&#8217;t was a welcome surprise.)  Using any other form of documentation invites even more suspicion and odd looks than the simple fact of not owning a car.</p>
<p>Fortunately, we also expect all drivers to have had proper training.  Far too many people are killed by vehicles as it is; I shudder to think what would happen if we just let everyone behind the wheel as soon as they were legally old enough.  Yet somehow, we do just that for several other dangerous activities.  Perhaps the difference is the number of innocent bystanders who could get hurt.  A new driver, after all, is less likely to kill himself than the child he didn&#8217;t notice playing in the street.</p>
<p><span id="more-218"></span>Similar could be said for other licensed activities.  Several professions, for example; doctors in particular could get people killed without the proper training, and have been impersonated by quacks and charlatans for centuries.  A bogus lawyer, engineer, or even car mechanic could get you into deeper trouble than you started with; each has a licensing body in various principalities, but may be unregulated in others.  Schools and universities, or their individual programs, can be accredited by various standards organizations; failure to do so can lead to leaving alumni without job potential.</p>
<p>Yet there are other important activities that aren&#8217;t commonly licensed.  I have a license to be a parent, complete with mandatory training, but we let almost anybody raise their own children as long as they aren&#8217;t obviously horrible at it.  Some poor children end up with lasting damage from poor parenting, while others simply emerge completely unprepared for the realities of life.  Would it be better to offer, or even require, training for every new or potential parent?  Would it be just?  Could we at least offer community-sponsored child care by highly trained, well paid tutors?  Or at least legally recognize that proper childcare is not an unskilled labor?</p>
<p>We could go even earlier, to sex itself.  Some form of sex education is routinely offered in this country, but only with consent of a legal guardian.  Even at that, it usually misses a few critical components, such as identification of a bad relationship before it gets to that point, or what a woman really needs out of it.  Some programs even omit descriptions of contraceptive measures, much less their limitations, leading the unlearned teens toward the route of maximum panic: reckless abortion.  How many fewer children would be conceived if people were led through the hard decisions beforehand?</p>
<p>In some cases, even that activity has an earlier stage: alcohol consumption.  This one is perhaps the worst of all for a form of regulation that can lead to abuse.  You&#8217;re not allowed to touch the stuff until a certain age, at which point it&#8217;s suddenly no holds barred.  This gets compounded by certain religious groups who espouse abstinence without explanation, leaving children with no example of responsible drinking, while television and advertising frequently play up appealing aspects.  Is it any wonder, then, that a certain number of college students kill themselves by binging?  What if one needed a license to purchase alcohol, with its own training classes?</p>
<p>At some point, yes, the number of licenses could get ridiculous.  They really could be tied into one card, though, as long as relevant agencies had connections to a state database that stored who is licensed for what.  That would also allow for quick and easy revocations when one gets abused, and with stored photos can also serve as an anti-counterfeiting measure.  For bonus points, it lets non-drivers use their identification card without the odd looks; only police, dealerships, and vehicle rental agencies even need to know, so it doesn&#8217;t need to be printed on the card.  I wouldn&#8217;t even have needed a second card when I finally got around to taking the written test; an updated computer entry would have sufficed.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eswald.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eswald.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/eswald.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/eswald.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/eswald.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/eswald.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/eswald.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/eswald.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/eswald.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/eswald.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/eswald.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/eswald.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/eswald.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/eswald.wordpress.com/218/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=218&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://eswald.wordpress.com/2011/12/13/licensing-the-ubiquitous/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d7e4b135453e58ce86964bac55ab3f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eswald</media:title>
		</media:content>
	</item>
		<item>
		<title>Languages I&#8217;ve Learned: Professional Development</title>
		<link>http://eswald.wordpress.com/2011/12/06/languages-ive-learned-professional-development/</link>
		<comments>http://eswald.wordpress.com/2011/12/06/languages-ive-learned-professional-development/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 05:07:40 +0000</pubDate>
		<dc:creator>eswald</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://eswald.wordpress.com/?p=207</guid>
		<description><![CDATA[After a short time of playing with esoteric programming languages, I&#8217;ve found myself learning relatively few outside of a real use case.  Most of this next batch were directly inspired by school, hobby, or work projects.  I actively use at least half of them; more than the first two sets combined.  However, this set also covers more [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=207&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After a short time of <a title="Languages I’ve Learned: Experimental Phase" href="http://eswald.wordpress.com/2011/11/29/languages-ive-learned-experimental-phase/">playing with esoteric programming languages</a>, I&#8217;ve found myself learning relatively few outside of a real use case.  Most of this next batch were directly inspired by school, hobby, or work projects.  I actively use at least half of them; more than the first two sets combined.  However, this set also covers more time than the first two, nearly reaching a decade.</p>
<h3><span id="more-207"></span>Maple</h3>
<p>An early course in my Physics program was centered entirely around learning Maple.  There were some physics lessons thrown in here and there, but they were mostly supplemental, having been covered in more depth by the course we were supposed to be taking at the same time.  Naturally, I found it ridiculously easy, and ended up supervising a section in later years.  The program itself was useful throughout my time at the university, particularly given that most physics professors would accept Maple printouts for homework.  Since then, I&#8217;ve rarely missed it, though I still remember it fondly.</p>
<h3>PHP</h3>
<p>An online game in which I participated mentioned having a problem with part of the site, so I offered to help.  When they sent the source, I recognized something that looked like Perl, so I dashed off some quick code without bothering to install an environment.  It didn&#8217;t work.  Since then, I&#8217;ve learned quite a bit of the language, though I still have to check the website frequently for parameter order and a few other things.  It&#8217;s a perfect language for a small dynamic web page; unfortunately, it ends up getting used a bit beyond that sweet spot.  The site I maintain for work, for example, keeps bumping its boundaries; I&#8217;ve lost track of the number of lame hacks we wish weren&#8217;t necessary.</p>
<h3>SQL</h3>
<p>PHP works almost hand-in-hand with MySQL, so that&#8217;s the database flavor I find myself using most often.  At one point, my employer paid for me to attend a MySQL conference, which has paid off tremendously for both of us.  The key takeaway: Think in terms of sets, joining them both to limit and to collect related data.</p>
<h3>Matlab</h3>
<p>Where Maple excels at symbolic processing, Matlab works wonders with numeric data.  These courses involved something resembling real experiments, though they were still as much about the program as about the physics.  If I were actually into numeric experimentation, I might still be using it.</p>
<h3>Haskell</h3>
<p>I made an honest attempt to use Haskell for a major hobby project, and utterly failed.  I also attempted to enter a weekend competition almost designed for functional languages, and failed.  Yes, there&#8217;s something elegant about functional programming, but it&#8217;s certainly not the usability aspect.  Perhaps the worst part was having been denied the ability to print debugging statements, before having learned about unit testing.</p>
<h3>Bash</h3>
<p>I had used Bash from the command line on several computers, but not until installing LFS did I truly use it as a programming language.  I&#8217;m now much quicker to cut a quick script out of any repetitive set of commands, and even use for loops on the command line.  The height of my ability must have been I took up <a title="Fixing Unix/Linux/POSIX Filenames" href="http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html">David A. Wheeler&#8217;s challenge</a> to create a reasonable GLOBIGNORE pattern that ignores files with leading dashes, leading dots, and control characters.  A few years later, I was honestly surprised to see my name when I came across the article again.</p>
<h3>Verilog</h3>
<p>At one point, I thought I would follow my father&#8217;s footsteps into the hardware realm.  I&#8217;ve designed one computer chip and manufactured another, but Verilog simulations are the closest I&#8217;ve come to see a design come to life.  Software results are just so much more immediately accessible that I haven&#8217;t yet looked back.  Perhaps someday I will; perhaps memristors will make hardware more interesting than software.</p>
<h3>Python</h3>
<p>I have sung <a title="Five reasons to love Python" href="http://eswald.wordpress.com/2011/03/21/five-reasons-to-love-python/">Python&#8217;s praises</a> before, and <a title="Five things to hate about Python" href="http://eswald.wordpress.com/2011/03/23/five-things-to-hate-about-python/">complained about its flaws</a>, both because it remains my favorite language of all.  It supports object-oriented programming or functional programming without being anal about it, it actively encourages clean and readable code, and it has libraries for just about everything under the sun.  I reach for it automatically for almost anything more complicated than a Bash script, unless the language is mandated by use case or company policy.</p>
<h3>JavaScript</h3>
<p>After several years of despising JavaScript on principles of security and accessibility, and perhaps a bit on having used eLinks as a primary browser, I finally started using it myself.  It has many of Python&#8217;s strengths, combined with a few of its own, but also has some annoying quirks.  What has truly made the difference for me is the availability of libraries like <a title="Prototype JavaScript Framework" href="http://prototypejs.org/">Prototype</a> and <a href="http://jquery.com/">jQuery</a>, though I can still do a few interesting things without them.</p>
<h3>ActionScript</h3>
<p>Our company needs to use Flash for a feature that still doesn&#8217;t exist in HTML 5, and at one point decided to make an entire application in Flex.  I was mostly tasked with the back end, but still had to reach into the front just to get the two talking to each other.  Since completion, maintenance has fallen to me while the rest of the team moved on to the next product.  There have been several surprises along the way, and I&#8217;m coming to despise both the time of compilation and the type declarations, but it&#8217;s not a bad a language overall.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eswald.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eswald.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/eswald.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/eswald.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/eswald.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/eswald.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/eswald.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/eswald.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/eswald.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/eswald.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/eswald.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/eswald.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/eswald.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/eswald.wordpress.com/207/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=207&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://eswald.wordpress.com/2011/12/06/languages-ive-learned-professional-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d7e4b135453e58ce86964bac55ab3f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eswald</media:title>
		</media:content>
	</item>
		<item>
		<title>Languages I&#8217;ve Learned: Experimental Phase</title>
		<link>http://eswald.wordpress.com/2011/11/29/languages-ive-learned-experimental-phase/</link>
		<comments>http://eswald.wordpress.com/2011/11/29/languages-ive-learned-experimental-phase/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 06:36:36 +0000</pubDate>
		<dc:creator>eswald</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://eswald.wordpress.com/?p=205</guid>
		<description><![CDATA[Somehow, I had learned at least ten programming languages before attending college.  However, some of them were very limited in scope, and not all of them have endured.  That&#8217;s even more true of the next batch, all learned within my first two years at a major university. Java Certain programming courses were taught using Java, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=205&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Somehow, I had learned <a title="Languages I’ve Learned: The Early Years" href="http://eswald.wordpress.com/2011/11/22/languages-ive-learned-the-early-years/">at least ten programming languages</a> before attending college.  However, some of them were very limited in scope, and not all of them have endured.  That&#8217;s even more true of the next batch, all learned within my first two years at a major university.<br />
<span id="more-205"></span></p>
<h3>Java</h3>
<p>Certain programming courses were taught using Java, perhaps due to its rising status in industry significance at the time.  It was generally simpler and safer than C++, though even more annoyingly verbose at times.  It also felt slow, and its graphical widgets, though easy to use, were universally ugly.  I understand that its warts have been alleviated over the years, but that doesn&#8217;t make me want to go back any time soon.</p>
<h3>HTML</h3>
<p>So it isn&#8217;t technically a programming language, but HTML is an important markup language that had been very useful over time, both for website production and for data collection.  Unfortunately, I&#8217;ve tried to force several things into it that really should have been left to programs designed for producing printable documents.  I&#8217;ve also written screen scrapers using regular expressions in Perl.  I&#8217;d like to think that I&#8217;ve learned better, but I&#8217;m probably still abusing it somehow.  I&#8217;ve certainly been abusing the related XML, partly due to learning about JSON just a tad too late.</p>
<h3>Visual Basic</h3>
<p>Through some odd sequence of events that I no longer care to remember, I ended up using Visual Basic as a glue language from within Excel, launching a program to run a series of tests on a product that doesn&#8217;t seem to have entered the mainstream market, collecting the results, and producing pretty graphs.  It also came in handy a couple of other times while I still used Windows on a regular basis, though the Excel connection is still my primary use case for it.</p>
<h3>Vim Script</h3>
<p>It&#8217;s amazing these days to think that I programmed before learning Vim.  It&#8217;s equally amazing to think that people do so without extensive customization.  My .vim directory sports over ninety files, many of them specific to one of a few dozen languages and text formats.  True, most of them contain nothing more than settings, variable definitions, and key mappings, and half of the rest is taken from <a href="http://www.vim.org/">Vim tips and scripts</a> or adapted from the runtime, but there are at least a few examples of real programming in there.</p>
<h3>CCScript</h3>
<p>While one online game was down for an extended period of time, I was introduced to <a href="http://vgaplanets.com/">VGA Planets</a>.  Naturally, I discovered the most complicated way to play it, wasting hours on scripts to save me a few minutes of tedium per turn.  That was made possible by <a title="Planets Command Center" href="http://phost.de/~stefan/pcc.html">PCC</a>, the most powerful client program available, which seemed to give me an edge in the game that never finished.  Sadly, I haven&#8217;t played since.  This language is interesting in the way it guesses what a bare equal sign means, with <code>:=</code> and <code>==</code> operators to force the issue when necessary.</p>
<h3>INTERCAL</h3>
<p>The specification for the <a href="http://www.muppetlabs.com/~breadbox/intercal/intercal.txt">Compiler Language With No Pronounceable Acronym</a> should be required reading for any budding Linux hacker.  If nothing else, it displays an interesting perspective on the issues of its day.  The difference between EBCDIC and ASCII, for example, or the limitations of punch cards and teletypes, or the finicky nature of all compilers.  Granted, I haven&#8217;t even attempted to write anything significant in it; simply wrapping my head around the operators has been tricky enough.</p>
<h3>Befunge</h3>
<p>If INTERCAL was designed to be unique, that must have been taken as a challenge.  A Befunge program looks more like a cross between a roguelike and a word search than something that should be executed.  This is where Vim&#8217;s mode division truly shines, with liberal use of the <code>hjkl</code> keys and <code>r</code> operator.</p>
<h3>BF</h3>
<p>I must have been hooked on esoteric languages by this point, because there is only one other reason to learn brainfuck: To prove that some other language or program is Turing-complete.  Then again, with only eight instructions, it&#8217;s almost impossible to forget.</p>
<h3>Wierd</h3>
<p>Meant to be the ultimate answer to minimalism of instruction set size, it cheats a bit by using relative location.  Of all the (relatively) useless esoterics, this one has been the most fun to write for.  At one point, I even started a graphical editor for it, but never convinced it to stretch the wires properly.  I&#8217;ve also written an interpreter for a modest extension of the language, which I might even release sometime.</p>
<h3>REBOL</h3>
<p>I honestly tried to use REBOL as a serious language.  I even fiddled with a Vim syntax file for it.  There&#8217;s something alluring about the promise of natural language as input, and easy graphics with fun colored widgets.  I never really found a reason to stick with it, though, and have forgotten everything I once knew.</p>
<p>To be continued&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eswald.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eswald.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/eswald.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/eswald.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/eswald.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/eswald.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/eswald.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/eswald.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/eswald.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/eswald.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/eswald.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/eswald.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/eswald.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/eswald.wordpress.com/205/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=205&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://eswald.wordpress.com/2011/11/29/languages-ive-learned-experimental-phase/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d7e4b135453e58ce86964bac55ab3f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eswald</media:title>
		</media:content>
	</item>
		<item>
		<title>Languages I&#8217;ve Learned: The Early Years</title>
		<link>http://eswald.wordpress.com/2011/11/22/languages-ive-learned-the-early-years/</link>
		<comments>http://eswald.wordpress.com/2011/11/22/languages-ive-learned-the-early-years/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 13:02:26 +0000</pubDate>
		<dc:creator>eswald</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://eswald.wordpress.com/?p=202</guid>
		<description><![CDATA[Somehow, it has failed to surprise me to learn a new programming language in a week.  Once the fact was pointed out, I figured it might have been from the sheer number of languages I&#8217;ve seen.  I won&#8217;t claim to be able to program in all of them, particularly not without a manual, nor do [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=202&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Somehow, it has failed to surprise me to learn a new programming language in a week.  Once the fact was pointed out, I figured it might have been from the sheer number of languages I&#8217;ve seen.  I won&#8217;t claim to be able to program in all of them, particularly not without a manual, nor do I still use many, but I&#8217;m familiar with over thirty.</p>
<p>These are, as nearly as I can recall, the first ten that I learned, listed in roughly chronological order.</p>
<h3><span id="more-202"></span>BASIC</h3>
<p>In third grade, we were introduced to programming by copying arithmetical expressions and other minor statements into old green and black computers.  I&#8217;m not sure how much sank in, but I&#8217;ve actually learned a bit of the language since then.  It&#8217;s completely obsolete now.</p>
<h3>Pascal</h3>
<p>The family computer lived in my room for some time while growing up.  Included in its paraphernalia was a set of Pascal manuals.  Dad tried to teach me once, but I was still too young to completely understand.  Still, I somehow learned the basic syntax, and even remember the distinction between procedures and functions.  Mostly, though, it has come up in the context of converting strings between C format (nul-terminated) and Pascal format (length-prefixed) when using Macintosh system calls.</p>
<h3>HyperTalk</h3>
<p>Junior High had a &#8220;programming&#8221; class that turned out to be entirely on <a href="http://en.wikipedia.org/wiki/HyperCard">HyperCard</a>.  The first few lessons were more about the interface than about the script.  I&#8217;m not sure how much everyone else learned, but I breezed through every lesson and tried to explore the limits of what could be done.  The teacher wasn&#8217;t nearly as impressed as I thought he would be with my final project, but at least two others would later enjoy what I could accomplish with the program.</p>
<h3>Redcode</h3>
<p>How I came to have a copy of <a href="http://en.wikipedia.org/wiki/Core_War">Core War</a> for the old Macintosh is beyond me, but I managed to spend quite a bit of time on it.  My only remotely good warrior abused an instruction that doesn&#8217;t even exist in current versions, as well as the relative spacing between the two competitors.  I didn&#8217;t think of it as an introduction to assembly language, but it probably helped me later on.</p>
<h3>RPL</h3>
<p>Where most students in my high school had TI calculators, I had the HP 48G.  I was also frequently bored in math class.  That led to lots of time playing around to see what I could do, which included a password protection scheme, a couple of games, and early work on <a title="Python Pythagorean Triple Generator" href="http://eswald.wordpress.com/2010/02/25/pythagorean-triple-generator/">listing Pythagorean triples</a>.</p>
<h3>C</h3>
<p>High school let me study a real language in a sort of supervised independent study program, with two other students.  I don&#8217;t recall how exactly we settled on C, but it became useful for both console and graphical programs.  I highly recommend learning it simply to understand a computer&#8217;s memory model.  Sadly, the only remaining copies of my work from this era are on a password-protected zip disk that I can no longer access.  Since then, I&#8217;ve continued using it for minor programs and open-source patches, some of which are still relevant.</p>
<h3>C++</h3>
<p>To be honest, I first learned C++ as a sort of C with objects.  The more it breaks from this model, the less I like it, even if certain features can make some things easier.  I hear that Qt makes it nice to work with, though.</p>
<h3>Excel 4 macros</h3>
<p>At one point, I abused Excel as a database of sorts, programming it to do a few useful things for me.  The language was interesting because it was typed in a spreadsheet column, using the cells to the left and right as storage and parameters.  I was a bit sad to see that future Excel versions no longer support the language, even if the new one is more powerful.</p>
<h3>Perl</h3>
<p>My first job was an internship with a major computer company, who somehow had failed to procure a workstation by my start date.  So my first week was spent with the camel book.  Basically all I did was a simpler command-line interface to a complex command-line simulation program, setting parameters for each night and parsing the results.  I still occasionally use Perl for tasks slightly too complex for grep, sed, and cut, but it&#8217;s been several years since I was fluent.</p>
<h3>QuickBasic</h3>
<p>Organizing a silent auction left my family with first pick of the unsold items, including an old laptop.  It came with Windows 3.1 and a copy of QuickBasic, complete with example programs.  For some reason, it was on that machine that I first experimented with cryptography.  After it died, I&#8217;ve only seen the language used in one other context, to enhance the output of another program.  The next version of that program included similar functionality, so even that use is probably dead now.</p>
<p>To be continued&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eswald.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eswald.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/eswald.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/eswald.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/eswald.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/eswald.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/eswald.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/eswald.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/eswald.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/eswald.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/eswald.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/eswald.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/eswald.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/eswald.wordpress.com/202/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=eswald.wordpress.com&amp;blog=1653952&amp;post=202&amp;subd=eswald&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://eswald.wordpress.com/2011/11/22/languages-ive-learned-the-early-years/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3d7e4b135453e58ce86964bac55ab3f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eswald</media:title>
		</media:content>
	</item>
	</channel>
</rss>
