<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A0MGSX44eyp7ImA9WhBUEUQ.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615</id><updated>2013-04-28T21:37:08.033-04:00</updated><category term="arduino" /><category term="plans" /><category term="math" /><category term="technical" /><category term="clojure" /><category term="web" /><category term="C" /><category term="programming" /><category term="UI" /><category term="XML" /><category term="xmonad" /><category term="android" /><category term="iphone" /><category term="jobs" /><category term="python" /><category term="opinion" /><category term="haskell" /><category term="mac" /><category term="zsh" /><category term="email" /><category term="tv" /><category term="iOS" /><category term="fossil" /><category term="football" /><category term="fiction" /><category term="ZFS" /><category term="bitchin" /><title>Mired in code</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.mired.org/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.mired.org/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>51</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/MiredInCode" /><feedburner:info uri="miredincode" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CUYBQ347fip7ImA9WhBQFUs.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-8701079316411192200</id><published>2013-03-17T19:25:00.000-04:00</published><updated>2013-03-17T19:32:32.006-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-17T19:32:32.006-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C" /><category scheme="http://www.blogger.com/atom/ns#" term="arduino" /><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>Idiomatic C and Arduino</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/8701079316411192200/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=8701079316411192200&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/8701079316411192200?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/8701079316411192200?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/WfReexUN4EQ/idiomatic-c-and-arduino.html" title="Idiomatic C and Arduino" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/KQp694Om1pE/default.jpg" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">The few of you who read this blog regularly will be wondering
    about "C". Not Python, not some new-fangled functional language,
    but good old-fashioned C, the workhorse language of the last 30
    years or so. That's because I'm talking Arduino, and C - sorta
    kinda - is the language of choice for that platform.

For those not familiar with it, Arduino is an open source hardware platform&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=WfReexUN4EQ:Z4q0Cm1m1Gk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=WfReexUN4EQ:Z4q0Cm1m1Gk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=WfReexUN4EQ:Z4q0Cm1m1Gk:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=WfReexUN4EQ:Z4q0Cm1m1Gk:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/WfReexUN4EQ" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2013/03/idiomatic-c-and-arduino.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYCRnw9eyp7ImA9WhNUEE4.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-8255975099743859663</id><published>2012-12-31T00:38:00.000-05:00</published><updated>2013-01-01T04:39:27.263-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-01T04:39:27.263-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="tv" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><title>3d printers and the thing store</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/8255975099743859663/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=8255975099743859663&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/8255975099743859663?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/8255975099743859663?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/2H6vPn_tEZk/3d-printers-and-thing-store.html" title="3d printers and the thing store" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">    A recent discussion about 3d printers led me to thinking about what they can do now, and what they might do in the future, and where it might go. I thought of something I hadn't seen mentioned before, and am now going to justify why I think it's the important part of how 3d printers are going to change the world.    Predicting the future is easy - it's going to be just like the past, except &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=2H6vPn_tEZk:WeXJhnYsFAc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=2H6vPn_tEZk:WeXJhnYsFAc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=2H6vPn_tEZk:WeXJhnYsFAc:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=2H6vPn_tEZk:WeXJhnYsFAc:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/2H6vPn_tEZk" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2012/12/3d-printers-and-thing-store.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cBRX8yfCp7ImA9WhNVEk0.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-5984484900298684120</id><published>2012-12-22T14:37:00.000-05:00</published><updated>2012-12-22T14:37:34.194-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-22T14:37:34.194-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="haskell" /><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><title>Type checking for algorithmic errors</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/5984484900298684120/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=5984484900298684120&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/5984484900298684120?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/5984484900298684120?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/KMGp6842M40/type-checking-for-algorithmic-errors.html" title="Type checking for algorithmic errors" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">While listening to a recent podcast about Yesod - a web framework designed to be type safe - the host commented that he didn't buy into static type checking, because it was neither necessary nor sufficient, as it couldn't catch algorithmic bugs. While he's right that static typing isn't necessary - otherwise dynamic languages wouldn't work - or sufficient - it can't catch all bugs, he's wrong in &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=KMGp6842M40:7ab41s0WiCg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=KMGp6842M40:7ab41s0WiCg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=KMGp6842M40:7ab41s0WiCg:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=KMGp6842M40:7ab41s0WiCg:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/KMGp6842M40" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2012/12/type-checking-for-algorithmic-errors.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMNSXs7eCp7ImA9WhNQFkQ.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-8267457563432647304</id><published>2012-11-23T14:04:00.001-05:00</published><updated>2012-11-23T14:04:58.500-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-11-23T14:04:58.500-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="jobs" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="tv" /><category scheme="http://www.blogger.com/atom/ns#" term="math" /><title>The changing nature of my identity</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/8267457563432647304/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=8267457563432647304&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/8267457563432647304?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/8267457563432647304?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/wFfYJsTZL18/the-changing-nature-of-my-identity.html" title="The changing nature of my identity" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">    When I was in school, a large chunk of my self-identification
    was as a geek and a hacker. The former was more accurately a
    "computer geek", and the latter was something I was proud to be
    called by talented computer people. As time has gone by,
    those labels have been redefined in ways that I don't really
    identify with. So I'm going to rant a little about how programmers
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=wFfYJsTZL18:MQy6bygYuXo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=wFfYJsTZL18:MQy6bygYuXo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=wFfYJsTZL18:MQy6bygYuXo:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=wFfYJsTZL18:MQy6bygYuXo:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/wFfYJsTZL18" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2012/11/the-changing-nature-of-my-identity.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUFQHs8eyp7ImA9WhNUEE4.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-2197353087315619105</id><published>2012-08-21T12:51:00.000-04:00</published><updated>2013-01-01T04:40:11.573-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-01T04:40:11.573-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="haskell" /><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="jobs" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>Monads in Python</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/2197353087315619105/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=2197353087315619105&amp;isPopup=true" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/2197353087315619105?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/2197353087315619105?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/E8W9t6_PzpM/monads-in-python-just-quick-note-based.html" title="Monads in Python" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>2</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">Just a quick note based on a recent Aha moment, showing
that learning Haskell is improving my Python coding.C# and Python's string.findI'm translating some C# into Python for a client, because -
well, C# just isn't suited to big data problems. They keep running
into problems with it, and asked me to come aboard to redo this in
Python. This code involves lots of string processesing. It
translates &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=E8W9t6_PzpM:zsD0KeVJ9jo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=E8W9t6_PzpM:zsD0KeVJ9jo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=E8W9t6_PzpM:zsD0KeVJ9jo:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=E8W9t6_PzpM:zsD0KeVJ9jo:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/E8W9t6_PzpM" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2012/08/monads-in-python-just-quick-note-based.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQBRnwzfyp7ImA9WhVXGU4.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-7183207902877244646</id><published>2012-04-20T12:12:00.000-04:00</published><updated>2012-04-20T12:12:37.287-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-20T12:12:37.287-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>Processes - a modern approach to concurrency</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/7183207902877244646/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=7183207902877244646&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/7183207902877244646?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/7183207902877244646?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/tR12HyjzO_k/processes-modern-approach-to.html" title="Processes - a modern approach to concurrency" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">I seem to keep running into an assumption that the only
    solution for concurrent operations is having multiple threads of
    control in a shared address space - aka "threading". This is in
    spite of this model having the rather nasty downside of exposing
    everything in memory to shared access and modification, making it
    very easy to inadvertently write ill-behaved code. It's as easy&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=tR12HyjzO_k:nBpOY15YWaU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=tR12HyjzO_k:nBpOY15YWaU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=tR12HyjzO_k:nBpOY15YWaU:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=tR12HyjzO_k:nBpOY15YWaU:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/tR12HyjzO_k" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2012/04/processes-modern-approach-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYFRXc_eCp7ImA9WhVXFUQ.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-2993923585118588225</id><published>2012-04-16T11:28:00.000-04:00</published><updated>2012-04-16T11:28:34.940-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-16T11:28:34.940-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="XML" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>Converting Python from the dom to etree</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/2993923585118588225/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=2993923585118588225&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/2993923585118588225?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/2993923585118588225?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/dT5dO5qIfnI/converting-python-from-dom-to-etree.html" title="Converting Python from the dom to etree" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">

Overview
As part of a technology upgrade for an application, I recently rewrote a collection of Python classes to use xml.etree instead of xml.dom. The application used pretty much all of the libraries: reading in xml strings to create in-memory representations, then searching them for various values. Taking a non-xml data structure and creating an xml representation of that, then writing it &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=dT5dO5qIfnI:izG4kSPcbhI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=dT5dO5qIfnI:izG4kSPcbhI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=dT5dO5qIfnI:izG4kSPcbhI:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=dT5dO5qIfnI:izG4kSPcbhI:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/dT5dO5qIfnI" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2012/04/converting-python-from-dom-to-etree.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUBSH07fSp7ImA9WhVSEEo.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-4023621816757658199</id><published>2012-03-06T18:57:00.000-05:00</published><updated>2012-03-06T18:57:39.305-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-06T18:57:39.305-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><title>Configuration with Python class objects</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/4023621816757658199/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=4023621816757658199&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/4023621816757658199?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/4023621816757658199?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/1d2kcyyjHfU/configuration-with-python-class-objects.html" title="Configuration with Python class objects" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">Another old bit of writing. While the space used for the demonstration - web applications - is now thoroughly dominated by template engines and frameworks, the core concepts are still valid. Resurrected by request.

Abstract

The requirements for configuring a complex program include such
things as separate namespaces for different parts of the program; the
ability to configure an object as like &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=1d2kcyyjHfU:WAgd3iryKm0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=1d2kcyyjHfU:WAgd3iryKm0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=1d2kcyyjHfU:WAgd3iryKm0:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=1d2kcyyjHfU:WAgd3iryKm0:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/1d2kcyyjHfU" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2012/03/configuration-with-python-class-objects.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QCRH0yeSp7ImA9WhVTF08.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-4423023186484806507</id><published>2012-03-02T15:49:00.000-05:00</published><updated>2012-03-02T15:49:25.391-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-02T15:49:25.391-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><category scheme="http://www.blogger.com/atom/ns#" term="iphone" /><title>The political implications of the iOS App Store</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/4423023186484806507/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=4423023186484806507&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/4423023186484806507?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/4423023186484806507?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/FKVLcsge1u4/political-implications-of-ios-app-store.html" title="The political implications of the iOS App Store" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">You may well be wondering how a something like an online
    software store can have political implications. The answer is
    that the infrastructure that makes it work can, at least in the
    ongoing war on
    general purpose computing. If you aren't familiar with this
    war, read the article.
    
    By delivering iOS with the App Store as the only authorized
    means of adding software,&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=FKVLcsge1u4:zVoo6d4nMI8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=FKVLcsge1u4:zVoo6d4nMI8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=FKVLcsge1u4:zVoo6d4nMI8:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=FKVLcsge1u4:zVoo6d4nMI8:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/FKVLcsge1u4" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2012/03/political-implications-of-ios-app-store.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEINRX07eyp7ImA9WhVTEkU.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-1006857593569384169</id><published>2012-02-26T13:56:00.000-05:00</published><updated>2012-02-26T13:56:34.303-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-26T13:56:34.303-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="haskell" /><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="math" /><title>An evaluation of Haskell</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/1006857593569384169/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=1006857593569384169&amp;isPopup=true" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/1006857593569384169?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/1006857593569384169?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/3rawNJeyPEg/evaluation-of-haskell.html" title="An evaluation of Haskell" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>3</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">I've now been writing Haskell code on and off in my spare time
    for most of a year. I've done small calculations in the REPL, and
    written a few small utilities. I still don't think I'm an expert
    in the language, but do think I've gotten enough of it under my
    belt to evaluate it compared to the other languages I've used.
  
    First comment: I don't think this will ever be an &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=3rawNJeyPEg:orlZifkDYVI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=3rawNJeyPEg:orlZifkDYVI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=3rawNJeyPEg:orlZifkDYVI:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=3rawNJeyPEg:orlZifkDYVI:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/3rawNJeyPEg" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2012/02/evaluation-of-haskell.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQGQHY8fyp7ImA9WhRVGEk.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-2769266308502861446</id><published>2012-01-17T19:42:00.000-05:00</published><updated>2012-01-17T19:42:01.877-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-17T19:42:01.877-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="football" /><title>An analysis of FBS controversies: Part III, the solution</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/2769266308502861446/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=2769266308502861446&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/2769266308502861446?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/2769266308502861446?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/CMG05aXDiIc/analysis-of-fbs-controversies-part-iii.html" title="An analysis of FBS controversies: Part III, the solution" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">While the title is "the solution", this is, of course, my
    proposed solution. The problem to be solved is that the current system
    leaving "deserving" teams out of the playoff creates
    controversies.
    
    Why a playoff is not the solution
    
    A playoff would seem to be the obvious solution, but there are
    some real reasons not to change. Ignoring the financial interests,
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=CMG05aXDiIc:RERmf5MyXwA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=CMG05aXDiIc:RERmf5MyXwA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=CMG05aXDiIc:RERmf5MyXwA:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=CMG05aXDiIc:RERmf5MyXwA:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/CMG05aXDiIc" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2012/01/analysis-of-fbs-controversies-part-iii.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEABQXY_cSp7ImA9WhRVFkU.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-4088047506331266353</id><published>2012-01-15T22:20:00.013-05:00</published><updated>2012-01-15T23:05:50.849-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-15T23:05:50.849-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="football" /><title>An analysis of FBS controversies: Part II, the analysis</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/4088047506331266353/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=4088047506331266353&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/4088047506331266353?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/4088047506331266353?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/kMoXIdbsYvU/analysis-of-fbs-controversies-part-ii.html" title="An analysis of FBS controversies: Part II, the analysis" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">Now that I have a tool that can report on how much controversy
    any given scheme would have, I can start looking at numbers!
    
    Which seasons?

    First, I have to decide the range of seasons to check. The
    earliest season I can use is 1872. See the writeup
    on the code for a discussion of why 1869 through 1871 can't be
    used. An argument could be made that I should start with &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=kMoXIdbsYvU:58ROCh8HGxk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=kMoXIdbsYvU:58ROCh8HGxk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=kMoXIdbsYvU:58ROCh8HGxk:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=kMoXIdbsYvU:58ROCh8HGxk:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/kMoXIdbsYvU" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2012/01/analysis-of-fbs-controversies-part-ii.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMGRn08cSp7ImA9WhRUEEQ.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-739948239566021691</id><published>2012-01-13T15:48:00.001-05:00</published><updated>2012-01-20T16:03:47.379-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-20T16:03:47.379-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="haskell" /><category scheme="http://www.blogger.com/atom/ns#" term="football" /><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="math" /><title>An analysis of FBS controversies: Part I, the code</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/739948239566021691/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=739948239566021691&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/739948239566021691?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/739948239566021691?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/jLGR9viYC10/analysis-of-fbs-controversies-part-i.html" title="An analysis of FBS controversies: Part I, the code" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">America's college Football Bowl Subdivision (FBS) has a history
    of controversy when it comes to picking a champion. And a history
    of proposed solutions. I've decided to examine how well those
    solutions would have worked if applied to previous seasons.

    The football background

    If you're a football fan, you can skip this section.

    The FBS has one unusual property. Unlike &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=jLGR9viYC10:yFVPC6DFTq8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=jLGR9viYC10:yFVPC6DFTq8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=jLGR9viYC10:yFVPC6DFTq8:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=jLGR9viYC10:yFVPC6DFTq8:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/jLGR9viYC10" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2012/01/analysis-of-fbs-controversies-part-i.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MCQng6eip7ImA9WhVXGEU.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-5554223674119613089</id><published>2011-11-23T15:00:00.002-05:00</published><updated>2012-04-19T20:24:23.612-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-19T20:24:23.612-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="haskell" /><category scheme="http://www.blogger.com/atom/ns#" term="mac" /><category scheme="http://www.blogger.com/atom/ns#" term="UI" /><category scheme="http://www.blogger.com/atom/ns#" term="xmonad" /><title>Why the Mac UI sucks</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/5554223674119613089/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=5554223674119613089&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/5554223674119613089?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/5554223674119613089?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/1UJvQP_-fqc/why-mac-ui-sucks.html" title="Why the Mac UI sucks" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">The problem

    One of my ex-bosses - a very sharp man whom I respect immensely
    - says that one of the problems with X
    is that there are too many choices for window managers. This causes
    people to waste time trying different window managers and playing
    with configurations rather than actually doing work.

    The second part of that statement is certainly true - people do
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=1UJvQP_-fqc:bxlqbWWs6w4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=1UJvQP_-fqc:bxlqbWWs6w4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=1UJvQP_-fqc:bxlqbWWs6w4:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=1UJvQP_-fqc:bxlqbWWs6w4:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/1UJvQP_-fqc" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2011/11/why-mac-ui-sucks.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcEQHczcCp7ImA9WhVSFk4.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-8119592868506613538</id><published>2011-10-28T13:11:00.001-04:00</published><updated>2012-03-13T05:46:41.988-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-13T05:46:41.988-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="haskell" /><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>Leveraging Haskell's derived classes.</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/8119592868506613538/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=8119592868506613538&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/8119592868506613538?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/8119592868506613538?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/lIK2uHfkNTA/leveraging-haskells-derived-classes.html" title="Leveraging Haskell's derived classes." /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">One of the mantras of dynamic languages is "Minimize boilerplate". By boilerplate they mean repeated code sequences that just change a few names. A typical example is the setter/getter methods of Java objects - at least most of  them. Python, for example, deals with those by providing a decorater that turns an attribute get or set into a method invocation. This eliminates the primary motivation &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=lIK2uHfkNTA:_5_jc55wyas:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=lIK2uHfkNTA:_5_jc55wyas:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=lIK2uHfkNTA:_5_jc55wyas:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=lIK2uHfkNTA:_5_jc55wyas:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/lIK2uHfkNTA" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2011/10/leveraging-haskells-derived-classes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcCRXs6fSp7ImA9WhVSFk4.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-304561680093984611</id><published>2011-10-20T00:36:00.001-04:00</published><updated>2012-03-13T05:47:44.515-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-13T05:47:44.515-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>"More Power" is not always a good thing</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/304561680093984611/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=304561680093984611&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/304561680093984611?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/304561680093984611?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/fAK5y4U0A8s/more-power-is-not-always-good-thing.html" title="&quot;More Power&quot; is not always a good thing" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">In Succinctness is
  Power, Paul Graham ponders why Python — or any language
  — would choose readability over power. He isn't sure
  what is meant by regularity, and discusses several
  definitions of readability, but never gets to what I think is
  the core of the what Paul Prescod meant by his statement.
  
  Readability isn't simply about the line or character
  counts that Paul talks about. &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=fAK5y4U0A8s:1kMljJ67YbY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=fAK5y4U0A8s:1kMljJ67YbY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=fAK5y4U0A8s:1kMljJ67YbY:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=fAK5y4U0A8s:1kMljJ67YbY:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/fAK5y4U0A8s" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2011/10/more-power-is-not-always-good-thing.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ACQHk6eyp7ImA9WhdbEE0.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-4155786714550790389</id><published>2011-10-06T18:28:00.013-04:00</published><updated>2011-10-07T13:49:21.713-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-07T13:49:21.713-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="math" /><title>Satisfaction</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/4155786714550790389/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=4155786714550790389&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/4155786714550790389?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/4155786714550790389?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/KP5w3DrJCpo/satisfaction.html" title="Satisfaction" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">I was listening to a podcast review of the game Dark Souls, and the reviewer gave it a near-perfect score of 9.5 out of 10. He believes that it will be a contender for one or more Game of the Year awards. What was interesting was that he didn't think the game was fun. Instead, it was frustrating, rewarding and satisfying. The problems the game presented were frustrating, but so well done that &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=KP5w3DrJCpo:t2AJvAEhDiM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=KP5w3DrJCpo:t2AJvAEhDiM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=KP5w3DrJCpo:t2AJvAEhDiM:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=KP5w3DrJCpo:t2AJvAEhDiM:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/KP5w3DrJCpo" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2011/10/satisfaction.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcNQnc7fyp7ImA9WhVSFk4.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-5646901889336405121</id><published>2011-09-21T15:37:00.001-04:00</published><updated>2012-03-13T05:48:13.907-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-13T05:48:13.907-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>The myth of "costs nothing"</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/5646901889336405121/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=5646901889336405121&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/5646901889336405121?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/5646901889336405121?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/DQYBaz7DVks/myth-of-costs-nothing.html" title="The myth of &quot;costs nothing&quot;" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">A common argument to hear when a new feature is proposed for some program or programming language is "If you don't use it, it costs nothing." This argument is generally false, and I'm getting tired of hearing it. So I'm going to explain why it's false here where I can easily refer to it.

The first problem is that nothing is actually almost nothing. For the cost to be nothing, then the code paths&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=DQYBaz7DVks:b5ikYZra7Bs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=DQYBaz7DVks:b5ikYZra7Bs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=DQYBaz7DVks:b5ikYZra7Bs:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=DQYBaz7DVks:b5ikYZra7Bs:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/DQYBaz7DVks" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2011/09/myth-of-costs-nothing.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYHSH49cCp7ImA9WhVSFk4.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-8645995088739780407</id><published>2011-07-31T00:37:00.001-04:00</published><updated>2012-03-13T05:48:59.068-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-13T05:48:59.068-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="haskell" /><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>Eddie - shell scripting with Haskell</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/8645995088739780407/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=8645995088739780407&amp;isPopup=true" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/8645995088739780407?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/8645995088739780407?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/Lh8XcnBMDPQ/eddie-shell-scripting-with-haskell.html" title="Eddie - shell scripting with Haskell" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>4</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">The last few years have seen an increase in interest in functional programming languages, as they are better suited to dealing with the concurrency issues found on modern multi-core desktops. Functional programs have functions that are functions in the mathematical sense: the result depends only on the input parameters, with global state not playing a role. No global state means no global state &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=Lh8XcnBMDPQ:EfEl8mAPzP8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=Lh8XcnBMDPQ:EfEl8mAPzP8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=Lh8XcnBMDPQ:EfEl8mAPzP8:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=Lh8XcnBMDPQ:EfEl8mAPzP8:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/Lh8XcnBMDPQ" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2011/07/eddie-shell-scripting-with-haskell.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUCSH84fip7ImA9WhZUEkg.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-7393946460826287285</id><published>2011-06-05T01:44:00.007-04:00</published><updated>2011-06-05T02:11:09.136-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-05T02:11:09.136-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="haskell" /><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="plans" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="clojure" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>Dynamic types in a statically typed language</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/7393946460826287285/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=7393946460826287285&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/7393946460826287285?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/7393946460826287285?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/XKob14zBiDk/dynamic-types-in-statically-typed.html" title="Dynamic types in a statically typed language" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">
One of the more interesting surprises in Haskell was the regular expression library - or rather, libraries, as the same API can be used with a number of different regular expression engines. Before looking at that, let's look at a couple of more conventional languages.

Python has a typical OO regex API: the module includes a couple of routines for creating regex objects or running common &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=XKob14zBiDk:_10e-sdPUMc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=XKob14zBiDk:_10e-sdPUMc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=XKob14zBiDk:_10e-sdPUMc:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=XKob14zBiDk:_10e-sdPUMc:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/XKob14zBiDk" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2011/06/dynamic-types-in-statically-typed.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUMRH86eSp7ImA9WhZXGUQ.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-2166215578411862046</id><published>2011-05-09T22:58:00.000-04:00</published><updated>2011-05-09T22:58:05.111-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-09T22:58:05.111-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="haskell" /><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="fossil" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><category scheme="http://www.blogger.com/atom/ns#" term="iphone" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Mobile development keeps getting bettter</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/2166215578411862046/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=2166215578411862046&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/2166215578411862046?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/2166215578411862046?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/gIIK-R_Gxko/mobile-development-keeps-getting.html" title="Mobile development keeps getting bettter" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">I just found a nifty web site/application for those who do mobile development - or just think about coding problems while running around town.

The folks at ideone.com have a pretty spiffy programmers tool - at least for small programs. It will compile (if needed) and execute a source text - possibly with standard input. They even have an API so "native" applications running on various devices &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=gIIK-R_Gxko:jsgox2SO3nw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=gIIK-R_Gxko:jsgox2SO3nw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=gIIK-R_Gxko:jsgox2SO3nw:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=gIIK-R_Gxko:jsgox2SO3nw:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/gIIK-R_Gxko" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2011/05/mobile-development-keeps-getting.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAESHs7fip7ImA9WhZQGUw.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-3444169260054697936</id><published>2011-04-27T09:58:00.000-04:00</published><updated>2011-04-27T09:58:29.506-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-27T09:58:29.506-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="haskell" /><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="plans" /><category scheme="http://www.blogger.com/atom/ns#" term="jobs" /><category scheme="http://www.blogger.com/atom/ns#" term="clojure" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="fossil" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><title>Why Haskell?</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/3444169260054697936/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=3444169260054697936&amp;isPopup=true" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/3444169260054697936?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/3444169260054697936?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/HQJakGNne4o/why-haskell.html" title="Why Haskell?" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>6</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">This should not be considered an expert overview of the language. It's a deep language, and I'm still learning it. This is a discussion of what I've seen so far to explain why I chose it.

As I mentioned, I'm not learning Haskell because I expect it to be a marketable skill; I'm learning Haskell because I expect it to improve my programming skills in general. That should happen because it's &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=HQJakGNne4o:O0AZBAC_5v4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=HQJakGNne4o:O0AZBAC_5v4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=HQJakGNne4o:O0AZBAC_5v4:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=HQJakGNne4o:O0AZBAC_5v4:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/HQJakGNne4o" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2011/04/why-haskell.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcHQ304cSp7ImA9WhZQGE0.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-8208091078173023998</id><published>2011-04-26T04:35:00.001-04:00</published><updated>2011-04-26T04:37:12.339-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-26T04:37:12.339-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="haskell" /><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="plans" /><category scheme="http://www.blogger.com/atom/ns#" term="jobs" /><category scheme="http://www.blogger.com/atom/ns#" term="clojure" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>Personal choices in marketability</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/8208091078173023998/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=8208091078173023998&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/8208091078173023998?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/8208091078173023998?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/iCPSIBVKU8o/personal-choices-in-marketability.html" title="Personal choices in marketability" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">Having figured out what skills are going to be in demand, the next step is to filter in your personal attributes: Which things you enjoy doing - I assume you're a programmer because you enjoy it, we certainly don't do it for the fame or money. Which things you are good at - in particular, what innate abilities might be required for some choice, and how well you do at those.

My tastes and skills
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=iCPSIBVKU8o:CzbAYUYsVjY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=iCPSIBVKU8o:CzbAYUYsVjY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=iCPSIBVKU8o:CzbAYUYsVjY:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=iCPSIBVKU8o:CzbAYUYsVjY:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/iCPSIBVKU8o" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2011/04/personal-choices-in-marketability.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4EQn4zfip7ImA9WhZQFUQ.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-972400419753592326</id><published>2011-04-23T18:15:00.000-04:00</published><updated>2011-04-23T18:15:03.086-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-23T18:15:03.086-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="jobs" /><category scheme="http://www.blogger.com/atom/ns#" term="clojure" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><category scheme="http://www.blogger.com/atom/ns#" term="iphone" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Keeping yourself marketable</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/972400419753592326/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=972400419753592326&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/972400419753592326?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/972400419753592326?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/6wG4mhMYV70/keeping-yourself-marketable.html" title="Keeping yourself marketable" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">A recent question on LinkedIn asked about the skill set to be working on if you're hoping to make yourself more marketable. This is something every professional programmer should be thinking about as long as they want to keep doing technical work. I've been thinking about this for a bit, and it ties into what I wanted to write about next in any case.

Before considering what skills you want to be&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=6wG4mhMYV70:rMGmISQlZkQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=6wG4mhMYV70:rMGmISQlZkQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=6wG4mhMYV70:rMGmISQlZkQ:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=6wG4mhMYV70:rMGmISQlZkQ:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/6wG4mhMYV70" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2011/04/keeping-yourself-marketable.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYFRX05eSp7ImA9WhZREkw.&quot;"><id>tag:blogger.com,1999:blog-3444118573883320615.post-5437024862707572311</id><published>2011-04-07T18:58:00.000-04:00</published><updated>2011-04-07T18:58:34.321-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-07T18:58:34.321-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="bitchin" /><category scheme="http://www.blogger.com/atom/ns#" term="technical" /><category scheme="http://www.blogger.com/atom/ns#" term="plans" /><category scheme="http://www.blogger.com/atom/ns#" term="clojure" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><title>Almost like a real web app</title><link rel="replies" type="application/atom+xml" href="http://blog.mired.org/feeds/5437024862707572311/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3444118573883320615&amp;postID=5437024862707572311&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/5437024862707572311?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3444118573883320615/posts/default/5437024862707572311?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MiredInCode/~3/u-3SeKDuNiI/almost-like-real-web-app.html" title="Almost like a real web app" /><author><name>Mike Meyer</name><uri>https://plus.google.com/117268648692246430887</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-MozMohHUyEc/AAAAAAAAAAI/AAAAAAAAAls/MFwZfgiVgS8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><content type="html">I took a long weekend over the first, and did the next round of changes to my X10 controller web app. The changes revolve around loading the config information from an SQL database rather than using lists wired into the code, and arranging things so that changed data could be reloaded without restarting the app. A database is normally a critical part of a web app, so this almost makes this a real&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=u-3SeKDuNiI:N3GkPIwiznQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=u-3SeKDuNiI:N3GkPIwiznQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MiredInCode?a=u-3SeKDuNiI:N3GkPIwiznQ:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MiredInCode?i=u-3SeKDuNiI:N3GkPIwiznQ:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MiredInCode/~4/u-3SeKDuNiI" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.mired.org/2011/04/almost-like-real-web-app.html</feedburner:origLink></entry></feed>
