<?xml version="1.0" encoding="utf-8"?>
        <?xml-stylesheet type="text/css" href="http://bbot.org/blog/styles/feed.css"?>
<rss version="2.0"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:admin="http://webns.net/mvcb/"
 xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title>the bblog</title>
<atom:link href="http://bbot.org/blog/rss.xml" rel="self" type="application/rss+xml" />
<link>http://bbot.org/blog</link>
<description>complaining, nerdery, errata</description>
<dc:language>en-us</dc:language>
<dc:creator>Samuel Bierwagen</dc:creator>
<dc:date>2012-05-11T00:27:47-04:00</dc:date>
<admin:generatorAgent rdf:resource="http://nanoblogger.sourceforge.net" />

<item>
<link>http://bbot.org/blog/archives/2012/05/01/come_on_up_get_your_extremely_impractical_ideas_here/</link>
<guid isPermaLink="true">http://bbot.org/blog/archives/2012/05/01/come_on_up_get_your_extremely_impractical_ideas_here/</guid>
<title>come on up, get your extremely impractical ideas here</title>
<dc:date>2012-05-01T13:25:01-04:00</dc:date>
<dc:creator>Samuel Bierwagen</dc:creator>
<dc:subject> important, Engineering</dc:subject>
<description><![CDATA[<p>So I've got a dumb idea, and in the hopes of getting it out of my head, I'm going to write a blog post about it.

<p>In 2006, <a href="http://www.dansdata.com/modularcar.htm">Daniel Rutter wrote about the "genset" option for the t/zero vaporware electric car.</a> The basic idea was this: A plug-in hybrid, but with the gasoline engine on a trailer. If you're taking a short trip, then you don't take the genset with you, because you don't need the weight. If you're going on a long trip, then you hook up the trailer, and enjoy the long range and fast refueling that a gasoline engine gives you. (Note that this scheme means you'll have a fairly large genset sitting around at home, which spends most of its time not being used.) This is part one.

<p>Part two: Heat engines have a surprisingly low maximum theoretical efficiency. The endoreversible heat engine efficiency equation is thus: (units are absolute degrees, Kelvin or Rankine)

<p><img alt="Endoreversible heat engine effciency equation" src="http://bbot.org/blog-images/heat-eq.png" width=112 height=51>

<p>The problem is that the Earth just isn't <i>cold</i> enough. Room temperature is 300 Kelvin! You're not going to want <i>T<sub>h</sub></i> to go much above 830K, or else you'll be producing nitrogen oxides in the exhaust. This gives a final endoreversible efficiency of 0.40. That's the maximum thermodynamic efficiency, and there ain't no way to beat thermodynamics.

<p>You can bend the rules a little, though. It's impossible to extract any more mechanical work from the waste heat, but it's still <i>heat,</i> you can use it for things that don't need low-entropy heat sources. Like, say keeping a house warm, or heating water.

<p>This is called <a href="https://en.wikipedia.org/wiki/Cogeneration">Cogeneration,</a> and depending on how you do it, you can get up to 90% total thermal efficiency. A popular home cogeneration system is the <a href="http://www.marathonengine.com/intro_eco.html">MicroCHP furnace,</a> a natural gas turbine that provides hot water and forced-air heating from its waste heat outflow. It can also run as a backup generator during power outages, in which case it vents waste heat outside.

<p>The synthesis of these ideas is obvious: Make a plug-in hybrid whose engine is a cogenerating furnace built around a multi-fuel gas turbine.

<p>A brilliant idea! There are some problems.

<p><b>1.)</b> MicroCHP turbines are designed to run on natural gas only. The "multi-fuel" version would be a second generation product. The first gen would have problems: the natural gas fueling infrastructure in the United States is a lot more sparse than the liquid-fuels infrastructure.

<p><b>2.)</b> The turbine is going to want a lot of cooling. Does a trailer get enough airflow?

<p><b>3.)</b> How well does the turbine tolerate road vibration?

<p><b>4.)</b> There's a user design problem: for a cogenerating furnace to work well, you want it at the center of your house, where all the waste heat goes to keeping you warm. This essentially means that every user of this car has to have an insulated, attached garage, or else they'll be losing some efficiency.

<p><b>5.)</b> There's a user interface problem: You can drive out of the garage with the trailer attached easily enough, but you'll then have to back into the garage, trailer first, and then reattach all the connections. Manually. Every time you want to use it.

<p><b>6.)</b> There's a use-case problem: Every time you drive away with the turbine, you drive away with the house's sole source of heat and hot water. Fine with a single-occupancy home, might be a problem for a family.

<p><b>7.)</b> It is certain that in the near future, cripplingly heavy taxes will be applied to fossil-fueled vehicles. Will this count as one? Maybe?

<p><b>8.)</b> This idea isn't terribly original. There's a lot of prior art here. Getting a patent will be an uphill battle.

<p>So, there. Eight reasons why I'm talking about this idea in a blog post, rather than a room of serious men in suits.]]></description>

</item>
<item>
<link>http://bbot.org/blog/archives/2012/04/25/looking_ahead_to_our_glorious_future/</link>
<guid isPermaLink="true">http://bbot.org/blog/archives/2012/04/25/looking_ahead_to_our_glorious_future/</guid>
<title>looking ahead to our glorious future</title>
<dc:date>2012-04-25T07:48:40-04:00</dc:date>
<dc:creator>Samuel Bierwagen</dc:creator>
<dc:subject> Etc</dc:subject>
<description><![CDATA[<p><a href=http://www.esquire.com/features/young-people-in-the-recession-0412-3>"The War Against Youth"</a>

<blockquote>The youth vote still supports Obama, but in a chastened, conditional way. In hindsight, Obama's 2008 campaign looks like an indulgent fantasy in which the major conflicts in life simply don't exist. There may be no white America and no black America, no blue-state America and no red-state America, but one thing is clear: There is a young America and there is an old America, and they don't form a community of interest. One takes from the other. The federal government spends $480 billion on Medicare and $68 billion on education. Prescription drugs: $62 billion. Head Start: $8 billion. Across the board, the money flows not to helping the young grow up, but helping the old die comfortably. According to a 2009 Brookings Institution study, "The United States spends 2.4 times as much on the elderly as on children, measured on a per capita basis, with the ratio rising to 7 to 1 if looking just at the federal budget."<br><br>

[...]<br><br>

Cynicism rises to fill the emptied space of exaggerated and failed hope. It's all simple math. If you follow the money rather than the blather, it's clear that the American system is a bipartisan fusion of economic models broken down along generational lines: unaffordable Greek-style socialism for the old, virulently purified capitalism for the young. Both political parties have agreed to this arrangement: The Boomers and older will be taken care of. Everybody younger will be on their own. The German philosopher Hermann Lotze wrote in the 1870s: "One of the most remarkable characteristics of human nature is, alongside so much selfishness in specific instances, the freedom from envy which the present displays toward the future." It is exactly that envy toward the future that is new in our own time.<br><br>

And we will not talk about any of it. We will keep mum. We will hold our tongues lest we seem ageist, lest we seem bitter, lest we seem out of touch, lest we seem pessimistic, lest we seem divisive.<br><br>

[...]<br><br>

A generation now means an economic cohort — a moment in the cycle of rising and (mostly) falling economic data. The UK has 21.8 percent youth unemployment, France 22.8 percent, Hungary 26.1 percent, Italy 28.2 percent, Spain 47.8 percent. Around the world, young people are beginning to be defined by their unemployment: the mileuristas of Spain, "those who earn less than a thousand euros"; the NEETs of England, "not in employment, education, or training"; the hittistes of Tunisia, "those who lean against the wall." Revolutions or unmanageable riots have inevitably followed the rise of masses of bored, underemployed young people.</blockquote>

<p>(Don't forget <a href="http://exiledonline.com/silent-majority-millennials/">Connor Kilpatrick's list of objections</a> over at The Exiled.)

<p><a href=http://www.interfluidity.com/v2/3212.html>"Depression is a choice"</a> and <a href=http://www.interfluidity.com/v2/3283.html>"Two quick responses"</a>

<blockquote>We are in a depression, but not because we don’t know how to remedy the problem. We are in a depression because it is our revealed preference, as a polity, not to remedy the problem. We are choosing continued depression because we prefer it to the alternatives.<br><br>

Usually, economists are admirably catholic about the preferences of the objects they study. They infer desire by observing behavior, listening to what people do more than to what they say. But with respect to national polities, macroeconomists presume the existence of an overwhelming preference for GDP growth and full employment that simply does not exist. They act as though any other set of preferences would be unreasonable, unthinkable.<br><br>

But the preferences of developed, aging polities — first Japan, now the United States and Europe — are obvious to a dispassionate observer. Their overwhelming priority is to protect the purchasing power of incumbent creditors. That’s it. That’s everything. All other considerations are secondary. These preferences are reflected in what the polities do, how they behave. They swoop in with incredible speed and force to bail out the financial sectors in which creditors are invested, trampling over prior norms and laws as necessary. The same preferences are reflected in what the polities omit to do. They do not pursue monetary policy with sufficient force to ensure expenditure growth even at risk of inflation. They do not purse fiscal policy with sufficient force to ensure employment even at risk of inflation. They remain forever vigilant that neither monetary ease nor fiscal profligacy engender inflation. The tepid policy experiments that are occasionally embarked upon they sabotage at the very first hint of inflation. The purchasing power of holders of nominal debt must not be put at risk. That is the overriding preference, in context of which observed behavior is rational.<br><br>

[...]<br><br>

Affluent retirees depend heavily on asset wealth; Social Security cannot cover the lifestyles to which they’ve grown accustomed, and the expenses and commitments they’ve accumulated.<br><br>

Affluent older Americans hold a large proportion of their wealth in bonds and cash-like instruments (bank CDs, money market accounts). They also maintain significant positions in stock funds that might “do better when the economy does better”. But, unsurprisingly, retirees keep the wealth they most depend upon in safer, fixed income vehicles. The proportion they keep in stock funds tends to increase with wealth. [2] Since they can’t clip coupons, retirees rely upon asset sales and redemptions for income. They try to manage the pace of sales so they don’t outlive their capacity to maintain their lifestyles.<br><br>

Retirees living on asset wealth are very exposed to inflation. It’s an error, a fallacy of composition, to assume that the existence of hedges and “sophisticated vehicles” means that somehow everybody can be protected. Every debt contract imposes inflation risk that some party must bear. Stock markets get the press, but most financial claims on capital are structured as debt, all of which must be held, directly or indirectly, by some human (usually an old or rich human).<br><br>

[...]<br><br>

So people who intend to live off their nest eggs rely first and foremost on the “safety” of bonds. Expansionary policy is a hazard for them.</blockquote>

<p><a href=http://physics.ucsd.edu/do-the-math/2011/10/the-energy-trap/>"The Energy Trap"</a>

<blockquote>Many Do the Math posts have touched on the inevitable cessation of growth and on the challenge we will face in developing a replacement energy infrastructure once our fossil fuel inheritance is spent. The focus has been on long-term physical constraints, and not on the messy details of our response in the short-term. But our reaction to a diminishing flow of fossil fuel energy in the short-term will determine whether we transition to a sustainable but technological existence or allow ourselves to collapse. One stumbling block in particular has me worried. I call it The Energy Trap.<br><br>

In brief, the idea is that once we enter a decline phase in fossil fuel availability—first in petroleum—our growth-based economic system will struggle to cope with a contraction of its very lifeblood. Fuel prices will skyrocket, some individuals and exporting nations will react by hoarding, and energy scarcity will quickly become the new norm. The invisible hand of the market will slap us silly demanding a new energy infrastructure based on non-fossil solutions. But here’s the rub. The construction of that shiny new infrastructure requires not just money, but…energy. And that’s the very commodity in short supply. Will we really be willing to sacrifice additional energy in the short term—effectively steepening the decline—for a long-term energy plan? It’s a trap!</blockquote>]]></description>

</item>
<item>
<link>http://bbot.org/blog/archives/2012/04/17/gcc_why_you_gotta_hurt_me_so/</link>
<guid isPermaLink="true">http://bbot.org/blog/archives/2012/04/17/gcc_why_you_gotta_hurt_me_so/</guid>
<title>gcc why you gotta hurt me so</title>
<dc:date>2012-04-17T08:11:59-04:00</dc:date>
<dc:creator>Samuel Bierwagen</dc:creator>
<dc:subject> nerdery</dc:subject>
<description><![CDATA[<p>I got tired of being apparently the last person in the world not to know C++. So I'm struggling through one of those stupid "Teach yourself X in only one hour a day" books, and because I'm me, I'm wasting a lot of time haring off on pointless tangents. Like, for one example, the auto operator.</p>
<p>From <a href="http://www.softwarequalityconnection.com/2011/06/the-biggest-changes-in-c11-and-why-you-should-care/">"The Biggest Changes in C++11 (and Why You Should Care)":</a></p>
<blockquote>
<p>In C++03, you must specify the type of an object when you declare it. Yet in many cases, an object&rsquo;s declaration includes an initializer. C++11 takes advantage of this, letting you declare objects without specifying their types:</p>
<code>auto x=0; //x has type int because 0 is int<br /> auto c='a'; //char<br /> auto d=0.5; //double<br /> auto national_debt=14400000000000LL;//long long</code></blockquote>
<p>This sounded like a new and innovative way to shoot yourself in the foot, so I gave it a try. And it works great! For&nbsp;<em>those examples,</em> and <em>those examples only.</em></p>
<pre class="prettyprint">auto Array[5] = { 1, 2, 3, 4, 5 };</pre>
<p>You'd think it would be pretty obvious that I want a five element array, initialized with 1 ... 5, right?</p>
<pre>$ g++ -pedantic -std=gnu++0x -Wall -Wextra -Werror foo4.cc
foo4.cc:5:33: error: unable to deduce &lsquo;std::initializer_list [5]&rsquo; from &lsquo;{1, 2, 3, 4, 5}&rsquo;</pre>
<p>C'mon, man. Please?</p>
<p>(There's also a really neat GCC feature called <a href="http://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html#Designated-Inits">designated initializers,</a> which offers an abridged syntax for initializing an array with sequential values. C only, sucker! Anyone using C++ can fuck off, apparently.)</p>
<p>GCC is also really bad at reading minds:</p>
<pre class="prettyprint">auto a = 3;
auto b = 2;

int main()
{
  cout &lt;&lt; a / b &lt;&lt; endl;
}</pre>
<p>Which, of course, outputs:</p>
<pre>$ compile foo5.cc &amp;&amp; ./a.out
1</pre>
<p>This is because an operation on an <code>int</code> will always output another <code>int</code>. I didn't really think it would be smart enough to use <code>float</code>s here, but I had hope.</p>]]></description>

</item>
<item>
<link>http://bbot.org/blog/archives/2012/03/30/fun_with_animated_images/</link>
<guid isPermaLink="true">http://bbot.org/blog/archives/2012/03/30/fun_with_animated_images/</guid>
<title>fun with animated images</title>
<dc:date>2012-03-30T15:29:30-04:00</dc:date>
<dc:creator>Samuel Bierwagen</dc:creator>

<description><![CDATA[<p>(Crossposted <a href="http://c1qfxugcgy0.tumblr.com/post/20178457569/anonymous-asked-what-kind-of-details-get-lost-i-dont">from my tumblr.</a> Hey, read <a href="http://c1qfxugcgy0.tumblr.com/post/20077831343/pornjunkyard-dumbthingswhitepplsay-fire">this other thing,</a> too!)
<p><a href="http://merrigo.tumblr.com/post/20129093803/what-kind-of-details-get-lost-i-dont-know-if-its">Anonymous asked: What kind of details get lost? I don&rsquo;t know if it&rsquo;s just me, but they literally look the same.</a>:</p>
<blockquote>
<p>It’s probably more noticeable to me, since I had been staring at them for hours while working on them, but the quality goes down dramatically:</p>
<p><img src="http://bbot.org/blog-images/merrigo.png"/></p>
<p>Whenever I post the animated version of something, I don’t know, I just hate seeing all the work I tried to do get all grainy and flat. :’\</p>
</blockquote>
<p>GIF is a fairly old format, standardized in 1989, and therefore has some quirks characteristic of its time. One of those is its support of color.</p>
<p>GIF is palette-based, it can display any color in the 24-bit RGB colorspace, but the actual <em>bitmap</em> only has 8 bits of intensity, which means the final image can only have 256 different colors. This is not obvious with flat-shaded illustrations, but becomes very obvious with gradients. Here&#8217;s a 24-bit PNG:</p>
<p><img src="http://bbot.org/blog-images/colorwheel.png"/></p>
<p>And the same thing, converted to GIF:</p>
<p><img src="http://bbot.org/blog-images/colorwheel.gif"/></p>
<p>Imagemagick tried very hard to make up for the difference in <a href="https://en.wikipedia.org/wiki/Color_gamut">gamut</a> using <a href="https://en.wikipedia.org/wiki/Dithering">dithering,</a> but that can only go so far.</p>
<p>You would reasonably expect that GIF would go the way of all the other dinosaur image formats, like XPM and PPM, except for one thing: it&#8217;s the only reasonably popular image format that supports animation.</p>
<p>You would expect PNG, the GIF replacement, to support animation: and indeed it does, as the <a href="https://en.wikipedia.org/wiki/MNG">MNG format</a>, first released 11 years ago.</p>
<p>(This is territory I don&#8217;t quite know as well: if I get anything wrong, speak up.)</p>
<p>As you may have noticed by the fact that it&#8217;s older than most Tumblr users, yet you&#8217;ve never heard of it, MNG hasn&#8217;t exactly taken the world by storm. There&#8217;s a couple reasons why:</p>
<p><strong>1.)</strong> <a href="https://en.wikipedia.org/wiki/Inter_frame">Many,</a> <a href="https://en.wikipedia.org/wiki/Motion_compensation">many,</a> <a href="https://en.wikipedia.org/wiki/Flexible_macroblock_ordering">many</a> are the clever tricks that can be used to compress video. GIF uses hardly any of them, MNG uses <a href="http://www.libpng.org/pub/mng/spec/#critical-define">quite a lot.</a> This means that its reference implementation is unusually large compared to most static image compression formats, simply because it does so much.</p>
<p><strong>2.)</strong> They named it MNG. When you&#8217;re writing something that uses GIFs, but doesn&#8217;t support GIF animation, then your software is broken, and your users will complain. You can explain to them that your software doesn&#8217;t actually need to use GIF animations, that the spec is a mess, and also that coding it would be really hard and you don&#8217;t <em>wanna</em>, and they will nod along, then dump your half-assed piece of shit, and go give their money to your competitors. Therefore, if you support GIF, you have to support GIF animation.</p>
<p>MNGs, however, aren&#8217;t PNGs. Different name, different library. MNG support doesn&#8217;t come free with importing libpng. Two separate and different things, with no possibility of confusion on the user&#8217;s end, and absolutely no incentive to support it on the developer&#8217;s end.</p>
<p><strong>3.)</strong> Programmers generally don&#8217;t like GIF animations. It&#8217;s terribly inefficient at compressing video, it can&#8217;t contain sound, most implementations don&#8217;t provide playback controls, it unnecessarily complicates a lot of image-display code that would otherwise be very simple&#8230; Basically, it poorly solves a problem that doesn&#8217;t exist. Why not just use a real video format, like AVI?</p>
<p>Additionally, GIF is often used by uneducated users to do stupid things. (eg: gifsets on tumblr, which replicate the functionality of a 10 second Youtube video by using 10 times the bandwidth; Blingee) If there&#8217;s anything programmers hate more than sunlight, it&#8217;s people solving problems badly. Witness the <a href="https://duckduckgo.com/?q=visual+basic+sucks">widespread hate for Visual Basic</a> <a href="http://thedailywtf.com/Articles/Slow,-Difficult-to-Code,-and-Buggy.aspx">and Access.</a> (Both Microsoft products, hmm.)</p>
<p><strong>4.)</strong> Up to the year 2003, Firefox could actually decode MNG. But because of #1, this required using a lot of code to support a feature used by essentially nobody, and the Firefox team is under <a href="https://news.ycombinator.com/item?id=3342291">constant fire</a> for their <a href="http://www.wired.com/software/coolapps/news/2007/05/firefox_bloat">awful, bloated codebase,</a> even though any modern web browser has to be enormously complex. So they ripped out that code and added a small hack to the PNG decoder that would recognize a series of PNG files pasted together as an image format. (<a href="http://bbot.org/blog/archives/2011/11/05/shooting_yourself_in_the_foot_with_great_verve_and_accuracy/">See also!</a>) This is the <a href="https://en.wikipedia.org/wiki/Animated_Portable_Network_Graphics">APNG</a> format.</p>
<p>This minor hack is quite similar to something Netscape did back in 1996, with the release of Netscape Navigator 2.0. Originally, GIF animations only played <em>once</em>. (Loops didn&#8217;t exist) The manifest uselessness of GIF animations, combined with the general jankiness of the implementation, meant that essentially nobody used them, like how <a href="http://stackoverflow.com/a/9947473/183142">nobody uses the physical units in CSS.</a></p>
<p>But! GIF has an Application Extension Block, which allows programs to set custom attributes in a somewhat standardized way. This allowed Netscape to add a field that specifies how many times you want the animation to repeat. (0 to 65535, 0 for &#8220;forever&#8221;. The field&#8217;s an unsigned <code>short</code>, of course.) This is also why every GIF animation on the internet contains the string <code>NETSCAPE2.0.</code></p>
<p>The <a href="http://www.joelonsoftware.com/articles/fog0000000018.html">architecture astronauts</a> of the libpng group were outraged. Those dirty <em>software vendors</em> had taken a perfectly functional piece of standards compliant code, and thrown it away just because it was huge and useless. Then they had the incredible effrontery to replicate one of the worse excesses of the Browser Wars! The bastards were siding with the Visual Basic crowd, rejecting a technically superior product for boring reasons of <em>practicality</em>.</p>
<p>Therefore libpng rejected the APNG extension, to show those jerks who&#8217;s boss. So here we are in the year 2012, stuck with 80s technology, because nobody can agree to use software that doesn&#8217;t suck.</p>
<p>This reminds me of an old truth about computers, which is, that computer novices hate computers.</p>
<p>As in, they hate the <em>machine</em>. Everywhere the novice looks, he is faced with bewildering complexity. Vast bulwarks of obtuse, impenetrable metaphors confront him at every turn, making even the <a href="http://www.joelonsoftware.com/uibook/chapters/fog0000000057.html">simplest task complex.</a> Even when he figures out how to force the machine to do what he wants it to do, by trial and painful error; vast and invisible forces can at any time rip the rug out from under his feet, and force him to begin again. Software updates, computer viruses, bit rot, inexplicable configuration changes, even mundane hardware failure. The computer is <a href="https://en.wiktionary.org/wiki/Cyclopean">cyclopean</a> and faceless, a machine paradoxically both indifferent and supremely malevolent. The computer <em>doesn&#8217;t care</em> about you want to do, and when it breaks, it breaks because it hates you. The ancient mistake of anthropomorphizing: the novice doesn&#8217;t understand the rules, and so sees intent where there is none.</p>
<p>The expert, on the other hand, likes computers. They do what you tell them. In a real and fundamental way, software can <a href="https://en.wikipedia.org/wiki/Formal_verification">be perfected.</a> There is no room for bugs in 2+3=5, and this can be extended to any piece of software. It&#8217;s all just math.</p>
<p>In fact, the only thing that stands in the way of the perfectability of software is the humans.</p>
<p>Any time the expert encounters a bug, or a mangled sentence, or a broken piece of software, she knows that a <em>human</em> did this.</p>
<p>When the HTML5 &lt;video&gt; tag is rendered useless by political infighting between Apple and People Who Aren&#8217;t Assholes, it&#8217;s not the fault of the <em>computers</em>. It&#8217;s the fault of the humans.</p>
<p>When Android phones <a href="http://www.bit-tech.net/news/2008/11/10/android-flaw-executes-typed-text/1">executed everything typed into them as root,</a> this was the fault of humans. When a Patriot antimissile battery <a href="https://en.wikipedia.org/wiki/MIM-104_Patriot#Failure_at_Dhahran">missed an incoming SCUD,</a> resulting in the deaths of 28 soldiers, this was the fault of humans.</p>
<p>Why are programmers such miserable bastards all the time? It&#8217;s because they get maybe two solid hours of <a href="https://en.wikipedia.org/wiki/Flow_(psychology)">flow</a> a day, and then have to descend from the platonic plane of pure math to deal with all the other stupid, willfully ignorant <em>humans.</em></p>]]></description>

</item>
<item>
<link>http://bbot.org/blog/archives/2012/03/18/fun_facts/</link>
<guid isPermaLink="true">http://bbot.org/blog/archives/2012/03/18/fun_facts/</guid>
<title>fun facts</title>
<dc:date>2012-03-18T07:22:43-04:00</dc:date>
<dc:creator><a href=&quot;http://bbot.org/&quot; rel=&quot;author&quot;>Samuel Bierwagen</a></dc:creator>
<dc:subject> nerdery</dc:subject>
<description><![CDATA[<p>Two things on Wikipedia today which I found mildly amusing.

<p>Did you know: The numeral system which the Western world refers to as <a href="https://en.wikipedia.org/wiki/Arabic_numerals">"Arabic"</a> numbers, are actually called "Indian" numbers by the Arab world? The numeral system used by Arabs is the <a href="https://en.wikipedia.org/wiki/Eastern_Arabic_numerals">Arabic-Indic system,</a> which shares a couple glyphs with Hindu-Arabic numerals, but, hilariously, represent completely different numbers? ٩ is 9, logically enough, but ٦ is 6, ٥ is 5, and ٤ is 4!

<p>Furthermore, did you know that India has <a href="https://en.wikipedia.org/wiki/Indian_numerals">a whole pile of numbering systems,</a> presumably just to confuse foreigners?

<p>Also, everybody older than 18 remembers the Y2K panic; when on January 1st, 2000, two digit year representations rolled over, and widespread chaos was predicted to occur when various computer systems would stop working. Of course, thanks to a great deal of money being spent, this did not happen. (Though there were some <a href="http://www.jwz.org/blog/2012/02/pre-millennium-tension-the-dali-clock-y2k-easter-egg/">pranks.</a>)

<p>Slightly more au courant nerds are aware of the year 2038 problem, when 32-bit Unix timestamps roll over. But did you know: <a href="https://en.wikipedia.org/wiki/Year_32,768_problem">there are a whole bunch of these problems?</a>

<p>In 2036, <a href="https://en.wikipedia.org/wiki/Network_Time_Protocol#NTP_timestamps">the timestamps in the NTP protocol,</a> which has been used for the last 25 years to synchronize the clocks of more or less every server on the internet, will roll over. On September 17, 2042, the internal clock used by IBM mainframes will roll over. (System/360 has <a href="http://qntm.org/zomg">a number of delightful idiosyncrasies,</a> thanks to 40 years of cruft.) The year field used by the Windows FAT filesystem will roll over in 2107. Four digit years will roll over in the year 10,000. Fun!

<p>Various minor errors have resulted from Y2K-like problems, but on other dates. Taiwan uses a calendar with year 1 set to 1912, which meant they saw their first three digit year in 2011: <a href="https://en.wikipedia.org/wiki/Y1C_Problem">the Y1C problem.</a> Some Unix programs threw errors on the <a href="https://en.wikipedia.org/wiki/Unix_billennium">Unix Billennium,</a> when Unix time hit 1000000000 on September 9th, 2001. (The events of two days later slightly overshadowed this.)

<p>Did you know: It's a miracle anything works at all?]]></description>

</item>
<item>
<link>http://bbot.org/blog/archives/2012/03/11/fun_with_spiders/</link>
<guid isPermaLink="true">http://bbot.org/blog/archives/2012/03/11/fun_with_spiders/</guid>
<title>fun with spiders</title>
<dc:date>2012-03-11T22:00:39-04:00</dc:date>
<dc:creator><a href=&quot;http://bbot.org/&quot; rel=&quot;author&quot;>Samuel Bierwagen</a></dc:creator>
<dc:subject> important, Game Design</dc:subject>
<description><![CDATA[<p>So I grepped my logs for everything that asks for robots.txt, <a href="http://bbot.org/spiders.txt">and the results were interesting.</a>

<p>Firstly, <b>there's a lot of spiders out there!</b>

<pre>$ grep "06/Mar" spiders.txt | wc -l
69</pre>

<p>When an article isn't trending, or I haven't posted lately, bbot.org does about 1200 hits and 300 uniques a day. Some spiders request robots.txt multiple times, but cloaked spiders don't request robots.txt at all, so it's a wash. This means that fully a fifth of my traffic is from machines.

<p>This is odd, because in terms of actual traffic, <b>Google is the only game in down.</b> 

<p>The traditional social contract between search engines and site owners is that you let them download your site, and in return, they drive traffic to you. This contract is broken, <a href=http://www.codinghorror.com/blog/2011/01/trouble-in-the-house-of-google.html>and has been for years.</a> <b>Google provides 99.98% of search traffic.</b>

<p>Microsoft, Yahoo, Gigablast and Blekko maintain fabulously comprehensive databases, updated regularly, which nobody ever uses. (DuckDuckGo strips referrer headers from their outgoing traffic, so they might be super popular, I have no way to know) This doesn't even count the <em>foreign-language</em> search engines, like Baidu, Soso Naver, Daum, or Yandex, who I also never ever see traffic from, since my site's in English.

<p>Now, <a href=http://www.archiveteam.org/index.php?title=Robots.txt>I don't use robots.txt,</a> but still. What a waste of time and money!

<p>Spiders can be roughly grouped into three groups: Google, Everybody else, and <b>spammers.</b> Brandwatch, Sitexploration, Seoprofiler, Linkdex, and Metadatalabs are all "SEO tools", which want to charge you money to get reports on their vague guess at how many people link to you. Spotinfluence even wants you to <i>sign in via Facebook</i> to begin using their site, and if you're dumb enough to do that, you deserve whatever they do to your profile.

<p>Some spiders don't take no for an answer.

<pre>208.115.113.85 - - [01/Mar/2012:14:09:51 -0500] "GET /robots.txt HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Ezooms/1.0; ezooms.bot@gmail.com)"
208.115.111.69 - - [01/Mar/2012:15:37:17 -0500] "GET /robots.txt HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Ezooms/1.0; ezooms.bot@gmail.com)"
208.115.113.85 - - [01/Mar/2012:18:24:34 -0500] "GET /robots.txt HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Ezooms/1.0; ezooms.bot@gmail.com)"
208.115.111.69 - - [01/Mar/2012:19:56:54 -0500] "GET /robots.txt HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Ezooms/1.0; ezooms.bot@gmail.com)"
208.115.113.85 - - [01/Mar/2012:22:02:14 -0500] "GET /robots.txt HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Ezooms/1.0; ezooms.bot@gmail.com)"</pre>

<p>Some <i>really</i> don't.

<pre>107.21.161.122 - - [06/Mar/2012:09:46:53 -0500] "GET /robots.txt HTTP/1.0" 404 169 "-" "linkdex.com/v2.0"
107.21.161.122 - - [06/Mar/2012:09:46:53 -0500] "GET /robots.txt HTTP/1.0" 404 169 "-" "linkdex.com/v2.0"
184.73.70.151 - - [06/Mar/2012:14:31:17 -0500] "GET /robots.txt HTTP/1.0" 404 169 "-" "linkdex.com/v2.0"
184.73.70.151 - - [06/Mar/2012:14:31:17 -0500] "GET /robots.txt HTTP/1.0" 404 169 "-" "linkdex.com/v2.0"
107.20.100.1 - - [06/Mar/2012:22:27:30 -0500] "GET /robots.txt HTTP/1.0" 404 169 "-" "linkdex.com/v2.0"
107.20.100.1 - - [06/Mar/2012:22:27:31 -0500] "GET /robots.txt HTTP/1.0" 404 169 "-" "linkdex.com/v2.0"
107.20.100.1 - - [06/Mar/2012:22:54:24 -0500] "GET /robots.txt HTTP/1.0" 404 169 "-" "linkdex.com/v2.0"
107.20.100.1 - - [06/Mar/2012:22:54:25 -0500] "GET /robots.txt HTTP/1.0" 404 169 "-" "linkdex.com/v2.0"</pre>

<p>I'm not sure what the rationale is for using such a short timeout is, or asking multiple times. Presumably if a robots.txt request returns a 404, and has been doing so for the last two years, one isn't going to appear five hours later. Google, on the other hand, only checks to see if I've changed my mind twice a day.

<p>While I've got my logs open, I'd like to complain about this: (original domain replaced with .su)

<pre>91.229.175.130 - - [11/Mar/2012:19:52:39 -0400] "GET /clubwearguru.su/blog/clubwearguru.su/archives/clubwearguru.su/2009/clubwearguru.su/07/clubwearguru.su/index.htmlhxxp://bbot.org/clubwearguru.su/blog/clubwearguru.su/archives/clubwearguru.su/2009/clubwearguru.su/07/clubwearguru.su/index.html HTTP/1.0" 404 169 "-" "Mozilla/4.0 (compatible; ICS)"</pre>

<p>This appears to request a valid page on my server, but with a domain inserted after every /. Does this actually work? Do people really automatically post their server logs online? The mind boggles.

<hr>

<p>If you liked this, you should donate! <a href=http://bbot.org/blog/archives/2012/03/09/donate_or_die_2012/>bbot.org is out of money,</a> and is not long for this world otherwise.

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick" /> <input type=
"hidden" name="hosted_button_id" value="47KW5AT4UX38E" />

<input type="image" src=
"https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif"
border="0" name="submit" alt=
"PayPal - The safer, easier way to pay online!" /> <img alt=""
border="0" src=
"https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1"
height="1" /></form>]]></description>

</item>
<item>
<link>http://bbot.org/blog/archives/2012/03/09/donate_or_die_2012/</link>
<guid isPermaLink="true">http://bbot.org/blog/archives/2012/03/09/donate_or_die_2012/</guid>
<title>donate or die 2012</title>
<dc:date>2012-03-09T19:27:50-04:00</dc:date>
<dc:creator><a href=&quot;http://bbot.org/&quot; rel=&quot;author&quot;>Samuel Bierwagen</a></dc:creator>
<dc:subject> important, Meta</dc:subject>
<description><![CDATA[<p>Well. So it's come to this. (Again.)

<p><a href=http://bbot.org/blog/archives/2011/01/24/wherein_bbot_begs_for_money/>Last year</a> I ran out of server money, and had to beg for funds. However, I'm no more employed than I back then, and I'm out of cash. Again.

<p>Midnight and p4ch3c0 stepped up with incredibly generous donations, but in the intervening 14 months, they have ascended bodily into Heaven, to hang out with the other saints, and the Catholic church has canonized their Earthly remains. So I can't shake them down for any more money. I tried talking to the Pope, but I could feel the force of his disapproving frown over the telephone, so no dice there.

<p><form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="47KW5AT4UX38E">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form></p>

<p>Bitcoin address: 1MjsXQNNXJNTbqis7yWVsShTiLa95aV6Mv

<p>bbot.org has no ads. It is entirely reader-supported.]]></description>

</item>
<item>
<link>http://bbot.org/blog/archives/2012/03/06/not_to_mention_road_salts_going_to_kill_it_after_a_decade/</link>
<guid isPermaLink="true">http://bbot.org/blog/archives/2012/03/06/not_to_mention_road_salts_going_to_kill_it_after_a_decade/</guid>
<title>not to mention road salt's going to kill it after a decade</title>
<dc:date>2012-03-06T20:27:23-04:00</dc:date>
<dc:creator><a href=&quot;http://bbot.org/&quot; rel=&quot;author&quot;>Samuel Bierwagen</a></dc:creator>
<dc:subject> important, Engineering</dc:subject>
<description><![CDATA[<p>So <a href="http://www.cartalk.com/content/mike-nuts-wanting-car-thats-built-last-and-last-and-last">CarTalk recently featured a question</a> from a guy who wanted a diesel car that would last 60 years, and 500,000 miles. (804,000 kilometres) The Tappet Brothers said he was crazy, that it was a dumb idea, but didn't actually answer the question.

<p>Now, it <i>is</i> a dumb question, but I'd like to try a stab at it.

<p>First of all, forget diesel. In fact, forget anything fueled by hydrocarbons. If you've glanced at the television in the last decade, you'd know that fossil fuels are a real bad long-term bet.

<p>This means going electric, and (in 2012), paying a fairly steep price premium. Electric cars are also a mixture of good and bad news, from a maintenance standpoint.

<p><b>The good:</b> Many, many fewer moving parts. An internal combustion engine is an unholy pile of camshafts, crankshafts, pistons, gears, and fans; many of which run at high speeds, close tolerances, and very high temperatures. Maintenance is ongoing, and nontrivial.

<p>In comparison, an induction motor has one moving part: the rotor. Over the course of 804,000 kilometres, you'll be going through a bunch of shaft bearings, but that's more or less it, for the motor. Plus, the extremely wide torque bands of electric motors mean that the gearboxes only need one or two gears, and if you use <a href="https://en.wikipedia.org/wiki/Wheel_hub_motor">hub motors,</a> and are willing to sacrifice high speed, you can run <i>direct drive.</i> This means the only consumable items on an electric car are the tires, the windshield wipers, and:

<p><b>The bad:</b> The battery.

<p>We've been trying to figure out a good way to store electricity for the last century, and so far, haven't made a whole lot of progress. The best of the best, <a href="https://en.wikipedia.org/wiki/Lithium-ion_battery">lithium-ion,</a> is both heavier, and more expensive, per joule than gasoline. They're prone to bursting into extremely vigorous lithium-metal fires when abused, slowly discharge themselves when left alone, and have surprisingly short lifetimes when heavily used. (Say, in a car) Deep discharges also burn battery lifetime, say, if you bought an electric car that advertised a hundred kilometre range, and tried to actually drive a hundred kilometres.

<p>Replacement costs are ball-punchingly steep: most of the cost of an electric car is in the battery pack, so replacing it is like buying most of a brand new car. If you drive it <i>very, very gently,</i> and never let it get below 50% charge, you'll probably be buying a new battery every 150,000 kilometres. At ~US$30,000 a pop, that adds up.

<p>There's a degree of amortization here: over time, battery technology will get better, but it's anybody's guess as to how <i>much</i> better it will get.

<p>In the article, Tom and Ray list off about a dozen features in today's cars that didn't exist 60 years ago. Power/ABS brakes, fuel injection, modern suspension technologies, etc etc. This is a bit disingenuous: there's very little room left for improvement, the gasoline car of 2012 is about as good as gasoline cars will ever be, except for one thing.

<p><a href="https://en.wikipedia.org/wiki/Autonomous_car">Autonomous cars.</a>

<p>The self driving car has been a staple of science fiction for the last, well, 60 years, but we're getting close. Real close. My wild-ass guess is that between DARPA and Google, the technology for driverless cars will be ready for prime time in five years.

<p>The wildcard here is the legal side. We could have cars that drive themselves flawlessly, but without laws that let them operate on the street, they'll be useless.

<p>Assuming we leap that hurdle, the big driver (ah ha ha) for autonomous car adoption will be insurance companies. And after driverless vehicles become common, we'll see laws that ban manual operation of vehicles anyplace where an out-of-control car could injure someone else.

<p>So, no, buying a car today that would be useful for 60 years is not going to be easy.]]></description>

</item>
<item>
<link>http://bbot.org/blog/archives/2012/02/29/protip/</link>
<guid isPermaLink="true">http://bbot.org/blog/archives/2012/02/29/protip/</guid>
<title>protip</title>
<dc:date>2012-02-29T17:16:59-04:00</dc:date>
<dc:creator><a href=&quot;http://bbot.org/&quot; rel=&quot;author&quot;>Samuel Bierwagen</a></dc:creator>
<dc:subject> nerdery</dc:subject>
<description><![CDATA[<p>Chainsawsuit 2012/02/29, <a href=http://chainsawsuit.com/2012/02/29/thanks-sybelifex/>"thanks sybelifex":</a>

<p><img width=700 height=250 src=http://bbot.org/blog-images/20120229.png>

<p>(<a href=http://optipng.sourceforge.net/>Optipng</a> made this file <a href=http://bbot.org/optipng.txt>45.46% smaller,</a> by the way. For a webcomic, that'd, what, reduce the total bandwidth bill by half?)

<p>Alright, Kris, this is <a href=http://chainsawsuit.com/tag/medication/>the third comic</a> you've done now about drug ads, and I'm gonna let you in on a little secret, here: That list of side effects is <i>legally mandated.</i>

<p>The Food and Drug Administration, shock of the century here, regulates <a href="https://en.wikipedia.org/wiki/Drug_advertising">direct to consumer drug advertising.</a> They've got <a href="http://www.fda.gov/Drugs/GuidanceComplianceRegulatoryInformation/Guidances/ucm064956.htm">a bunch of boring legal documents about this.</a>

<p>From <a href="http://www.fda.gov/downloads/Drugs/GuidanceComplianceRegulatoryInformation/Guidances/UCM070065.pdf">"Consumer-Directed Broadcast Advertisements":</a>

<blockquote>The purpose of this guidance is to describe an approach that FDA believes can fulfill the requirement for adequate provision in connection with consumer-directed broadcast advertisements for prescription drug and biological products. The approach presumes that such advertisements:<br><br>

[...]<br><br>

Present a fair balance between information about effectiveness and information about risk.<br><br>

  Include a thorough major statement conveying all of the product’s most important risk information in consumer-friendly language.<br><br></blockquote>

<p>They don't throw in that long list of side effects just for shits and giggles. They do it because it's the law! Jokes about side effect disclosures are about as hilarious as, "Wow, what's the deal with the Surgeon General's Warning on cigarette packs?" or "Isn't it weird that bottles of bleach are labeled <i>poison?</i> Isn't that <i>weird?</i>

<p>This ignores the fact that "side effect jokes" <a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/SideEffectsInclude">have been done a million, billion times before.</a> This is not the cutting edge of humor. Leave that dead horse alone. It no longer requires beating.]]></description>

</item>
<item>
<link>http://bbot.org/blog/archives/2012/02/24/the_pinnacle_of_evolution/</link>
<guid isPermaLink="true">http://bbot.org/blog/archives/2012/02/24/the_pinnacle_of_evolution/</guid>
<title>the pinnacle of evolution</title>
<dc:date>2012-02-24T21:43:44-04:00</dc:date>
<dc:creator><a href=&quot;http://bbot.org/&quot; rel=&quot;author&quot;>Samuel Bierwagen</a></dc:creator>
<dc:subject> important, Engineering, nerdery</dc:subject>
<description><![CDATA[<p>(<i>Attention conservation notice:</i> Nothing said here is at all novel.)</p>

<p>So Maciej Cegłowski <a href="http://idlewords.com/2012/02/bia%C5%82owie%C5%BCa_forest.htm">has updated his blog</a> for the first time in four months. Upon encountering the novel task of "actually generating HTML", his gimcrack blogging software sprayed a couple random posts across his RSS feed, one of which was the venerable <a href="http://idlewords.com/2010/03/scott_and_scurvy.htm">2010 essay on scurvy in Antarctic exploration.</a> Which, combined with some other things I've read recently, got me to thinking.

<p><a href="https://en.wikipedia.org/wiki/Vitamin_C">Vitamin C</a> is just C<sub>6</sub>H<sub>8</sub>0<sub>6</sub>. Carbon, hydrogen, oxygen. All the atoms are there in glucose, just in a slightly different pattern. You could drink sugar water all day and never get scurvy, if we could synthesize it ourselves.

<p>Except we can't, because ten million years ago a primate species discovered that they ingest enough vitamin C in the natural environment to get by without making it themselves.

<p>A regular sideshow on my other blog is finding terrible Tumblr themes, <a href="http://c1qfxugcgy0.tumblr.com/tagged/CSS-disasters">then picking apart their CSS.</a> I've learned a lot about CSS in the process, in the <a href="http://richrap.blogspot.com/2011/10/art-of-failure-when-3d-prints-go-wrong.html">"gaze upon this disaster, young one, and learn well its lessons"</a> sense. But even the most incompetently written theme isn't as poorly designed as <a href="https://en.wikipedia.org/wiki/Vasopressin">vasopressin,</a> which, among other things, controls:

<ol>
<li>Water permeability of distal tubule and collecting duct cells in the kidney.
<li>Increasing permeability of the inner medullary portion of the collecting duct to urea by regulating the cell surface expression of urea transporters.
<li><i>Memory formation.</i>
<li>Peripheral vasoconstriction as a response to blood loss from serious injury.
<li><b><i>Pair bonding.</i></b>
</ol>

<p>The same hormone that controls your blood pressure also determines if you can <i>form a relationship.</i>

<p>From <a href="https://en.wikipedia.org/wiki/Arginine_vasopressin_receptor_1A">"Arginine vasopressin receptor 1A":</a>

<blockquote>Homozygosity in allele 334 of RS3 is associated in men (but not women) with problems with pair-bonding behavior, measured by traits such as partner bonding, perceived marital problems, marital status, as well as spousal perception of marital quality.[19]<br><br>

In a study of 203 male and female university students, participants with short (308-325 bp) vs. long (327-342) versions of RS3 were less generous, as measured by lower scores on both money allocations in the dictator game, as well as by self-report with the Bardi-Schwartz Universalism and Benevolence Value-expressive Behavior Scales; although the precise functional significance of longer AVPR1A RS3 repeats is not known, they are associated with higher AVPR1A postmortem hippocampal mRNA levels.[5]</blockquote>

<p><i>Who the fuck designed this?</i> The answer is, of course, "nobody". The <a href="http://lesswrong.com/lw/kr/an_alien_god/">blind idiot god</a> of evolution cares not at all for <a href="https://en.wikipedia.org/wiki/Separation_of_concerns">separation of concerns,</a> or <a href="http://www.catb.org/jargon/html/E/elegant.html">design elegance,</a> it just cares about how many offspring are produced. For evolution, the person who died at the age of 29, with six children, and the person who lived for two hundred years and won six dozen Nobel prizes, but never had children, it considers the latter person to have <i>failed.</i>

<p>It's even a mistake to think of evolution as an "entity" with "intent" or "purpose": evolution is the simple historical fact that the genes of the organisms which produce more offspring are more frequent in the general population. And so we have <a href="http://sabre.ucsf.edu/docs/Science-2011-Wu-243-7.pdf">white blood cells that trigger diabetes when they <i>don't</i> have parasites to combat,</a> or the thousand and one autoimmune diseases of an environment that is <a href=http://en.wikipedia.org/wiki/Hygiene_hypothesis>too clean:</a> the blind flailing of an immune system fighting a battle that's already won.

<p>The human body is the ultimate <a href=http://en.wikipedia.org/wiki/Dependency_hell>tangle of dependencies,</a> nobody sat down with a clean sheet of paper and said, "Alright, I'll design this anthropomorphic replicator <a href=http://en.wikipedia.org/wiki/Gut_flora>so that bacteria outnumber the endogenous cells 10 to 1.</a>" No, of course not! But bacteria were endemic in the ancestral environment, and so they colonized the human body, just as they've colonized every square millimetre on the entire planet.

<p>It's almost amusing to watch the naturists <a href=http://en.wikipedia.org/wiki/Probiotics>try to spin this,</a> as if it's a good thing that fully 30% of fecal mass is bacteria! You had to <i>eat</i> that food, yet it's being wasted on making bacteria. A prime example of <a href=http://en.wikipedia.org/wiki/Hill_climbing>local maxima.</a> You could imagine a mutant human with stomach enzymes that could digest oligosaccharides itself, without needing bacteria-- but the bacteria are already there. There's no fitness advantage, all paths lead down from there, and evolution has no foresight. You need two unlikely mutations to occur in the same individual at the same time (oligosaccharidease and an immune response to whatever oligosaccharide bacteria we already use) to acquire a fitness advantage, and that coincidence will be vanishingly rare.

<p>A pretty safe bet is that two hundred years from now, the idea of "vitamins" will be a quaint anachronism. Having to consume minerals is going to <a href=http://en.wikipedia.org/wiki/Nuclear_transmutation>be with us for a while,</a> barring really surprising breakthroughs in nuclear reactor miniaturization; but the need to periodically ingest acorbic acid is a bug, which will be patched sooner rather than later.

<p><b>EDIT:</b> There were about a dozen comments calling out how terrible this post looked on mobile browsers. Sorry, guys! Fixed.]]></description>

</item>
</channel>
</rss>

