<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Flashes of Panic</title>
    <link rel="alternate" type="text/html" href="http://www.flashesofpanic.com/" />
    <link rel="self" type="application/atom+xml" href="http://www.flashesofpanic.com/atom.xml" />
   <id>tag:www.flashesofpanic.com,2013://1</id>
    <link rel="service.post" type="application/atom+xml" href="http://www.flashesofpanic.com/move/mt-atom.cgi/weblog/blog_id=1" title="Flashes of Panic" />
    <updated>2013-05-17T00:47:06Z</updated>
    <subtitle><![CDATA[&quot;A school is a factory is a poem is a prison is academia is boredom, with flashes of panic.&quot; &mdash; Joseph Brodsky]]></subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.33</generator>
 
<entry>
    <title>Running the 118th Boston Marathon</title>
    <link rel="alternate" type="text/html" href="http://www.flashesofpanic.com/panic/002610.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.flashesofpanic.com/move/mt-atom.cgi/weblog/blog_id=1/entry_id=2610" title="Running the 118th Boston Marathon" />
    <id>tag:www.flashesofpanic.com,2013://1.2610</id>
    
    <published>2013-05-17T00:45:59Z</published>
    <updated>2013-05-17T00:47:06Z</updated>
    
    <summary>If you want to run the 2014 Boston Marathon (a.k.a. the 118th), you have a tough road in front of you. I&amp;#8217;ve had a few people ask for advice for getting in. Until we hear more from the BAA, it...</summary>
    <author>
        <name>pjm</name>
        <uri>http://www.flashesofpanic.com</uri>
    </author>
            <category term="Running" />
    
    <content type="html" xml:lang="en" xml:base="http://www.flashesofpanic.com/">
        <![CDATA[<p>If you want to run the 2014 Boston Marathon (a.k.a. the 118th), you have a tough road in front of you. I&#8217;ve had a few people ask for advice for getting in. Until we hear more from the BAA, it boils down to: first, get a BQ. Second, get the best BQ you can. Third, pay attention.</p>

<p>There is a lot of discussion about the B.A.A. making allowances for the 118th, relaxing the standards or raising the entry cap. I&#8217;ll address this later. Until an official announcement is made, we&#8217;re playing by the usual rules, except that there are several thousand runners&#8212;those who weren&#8217;t able to finish the 117th when the finish line shut down&#8212;who <a href="http://www.baa.org/news-and-press/news-listing/2013/may/baa-issues-special-invitation-to-2013-boston-marathon-starters.aspx">will be offered automatic entry</a>, thus beginning to fill the field before registration even opens.</p>

<p>If you already have your BQ, that makes things easier. If you don&#8217;t have a BQ, <strong>you&#8217;ll need to chase one</strong> (and if you do have one, you may still want a better time; I&#8217;ll get to that later too). </p>

<p>Chances to chase standards are pretty sparse right now. The reason is pretty simple: in most of the country, it&#8217;s already too hot to run a fast marathon, and if it isn&#8217;t, it will be soon. Entry is scheduled to open <a href="http://www.baa.org/faq.aspx?keyword=When%20will%20registration%C2%A0open%20for%20the%202014%20Boston%20Marathon?">in September</a>, so there <em>may</em> be a chance to run a BQ in September (<a href="http://www.runnersworld.com/races/2014-boston-marathon-registration-faq">the actual opening date hasn&#8217;t been announced yet</a>), but October is almost certainly too late.</p>

<p>It <a href="http://www.runnersworld.com/races/boston-qualifier-quest-causes-uptick-in-marathon-registration">sounds like</a> relatively few people are trying to jump in marathons right away, which is sound; it may be possible to <em>finish</em> a marathon on a month&#8217;s training, but running a BQ is not that easy for most.</p>

<p>If you can be ready within six or eight weeks and can travel <em>anywhere</em>, some options open up. There&#8217;s Grandma&#8217;s in Minnesota, if that hasn&#8217;t filled; that&#8217;s in mid-June. Likewise the Mayor&#8217;s Midnight Sun Marathon in Anchorage, Alaska. There are plenty of races <a href="http://www.marathonguide.com/races/races.cfm">on the calendar</a> but many of them are e.g. trail marathons, actually known for being challenging due to heat, or otherwie tough qualifiers. (There should be extra points for anyone who gets a BQ at the <a href="http://www.johnnymiles.ca/">Johnny Miles Marathon</a>.)</p>

<p>Even if you&#8217;ve got a BQ under your belt already, the increased demand for the 118th may pose a challenge. It&#8217;s been a few years since a BQ meant your entry was assured; more recently, faster is better. Essentially, the faster your BQ, the earlier you get to register, and the more likely your registration will be successful. Therefore, there are BQs, good BQs (5-10 minutes faster than cutoff) and really good BQs (10+ minutes faster than cutoff).</p>

<p>If you&#8217;ve got a really good BQ, you&#8217;re probably in. If you&#8217;ve got a good one, I wouldn&#8217;t make promises, but you&#8217;re probably OK. <strong>If you don&#8217;t have a good BQ, you might want to think about improving it.</strong> For that, you&#8217;ll want to look deep into the summer, even into early September, with the idea of getting into great shape in the summer and hitting one out of the park as close to the registration opening date as you can. You could do worse than to look at Clarence DeMar for this one. (Someone needs to come up with a circuit of races named for Boston champions.)</p>

<p>Finally, <strong>pay attention</strong> and be ready to change plans if things come up which help you. I&#8217;ve already heard of one <a href="http://www.active.com/marathon/washington-crossing-pa/chasing-the-unicorn-2013">pop-up marathon</a> scheduled for late summer expressly to give people a shot at qualifying; odds are there will be more. Look for one with a speedy, <em>certified</em> course (I can&#8217;t emphasize this point enough), chip timing, and an early-morning start (or other accommodations for heat). It may even be a good idea to have a Plan A and a Plan B.</p>

<p>Now, about the BAA: One thing they understand is that while they own the Boston Marathon on paper, in practice it&#8217;s a sort of public trust. They are going to do whatever they can for the 118th, and I expect they are exploring the option of a one-time raising of the entry cap. (The idea of a lottery, the way they ran it in 1996, has been floated as well, but in my opinion that&#8217;s not going to go over well if they can&#8217;t first allow in all the BQs who wish to run, so if I wanted to run I would be looking for a BQ before I put my hopes in a lottery.)</p>

<p>The hangup is that the field limit is not set arbitrarily by the BAA; it&#8217;s a limit more or less imposed on them by the towns the course passes through, principally Hopkinton, which has to support the starting area. Hopkinton becomes the running community&#8217;s public urinal for a few hours every April and bears it with remarkable good grace, but they have much less open space now than they did in 1996. Staging 30,000 or 40,000 runners through that town, if it&#8217;s allowed to happen, will take a lot of time and patience.</p>

<p>If the cap is lifted for the 118th, we will all owe the towns, especially Hopkinton, a greater-than-usual debt of gratitude. So watch where you relieve yourself, please, and where you toss that empty gel packet. (I am still finding empty gel packets on the Natick roadsides a month after the race.)</p>

<p>The BAA is still clearing up the mess from the 117th, and they have a half-marathon to think about in October. I would not expect an announcement about the 118th until late June at the earliest, and July or August is more likely. Stay tuned, and if you want to run, start staking out that really good BQ.</p>
]]>
        
    </content>
</entry>
<entry>
    <title>&quot;Vehicle Protection Center&quot;: stay away!</title>
    <link rel="alternate" type="text/html" href="http://www.flashesofpanic.com/panic/002609.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.flashesofpanic.com/move/mt-atom.cgi/weblog/blog_id=1/entry_id=2609" title="&quot;Vehicle Protection Center&quot;: stay away!" />
    <id>tag:www.flashesofpanic.com,2013://1.2609</id>
    
    <published>2013-02-24T01:14:37Z</published>
    <updated>2013-02-24T01:28:08Z</updated>
    
    <summary>Paper spam, today. An official-looking mailer (fold side edges, then remove top stub to open) starting with bold, underlined text, &amp;#8220;THIS LETTER IS TO INFORM YOU that if your factory warranty has expired, you will be responsible for paying for...</summary>
    <author>
        <name>pjm</name>
        <uri>http://www.flashesofpanic.com</uri>
    </author>
            <category term="Spam" />
    
    <content type="html" xml:lang="en" xml:base="http://www.flashesofpanic.com/">
        <![CDATA[<p>Paper spam, today. An official-looking mailer (fold side edges, then remove top stub to open) starting with bold, underlined text, &#8220;<strong>THIS LETTER IS TO INFORM YOU</strong> that if your factory warranty has expired, you will be responsible for paying for any repairs.&#8221;</p>

<p>Read that sentence again, because I did. Rephrase it: &#8220;If your umbrella is closed, you will get wet when it rains.&#8221; When I read obfuscation like that, I get suspicious immediately. All caps <strong>PLEASE CALL IMMEDIATELY</strong> in the next block of the letter really raises my hackles, just because I get ornery when I feel like I&#8217;m being herded.</p>

<p>Sure enough, despite including the make, model (Honda) and year of one of our cars, this mailing had nothing to do with Honda, and probably not with any other manufacturer. In fine print at the bottom, &#8220;Vehicle Protection Center is an independent nationwide company marketing vehicle service contract on behalf of leading third party administrators.&#8221; Which means nothing. Third sentence of that paragraph: &#8220;Vehicle Protection Center is not affiliated with any auto dealer or manufacturer.&#8221;</p>

<p>Here&#8217;s the thing: I never had any intention of purchasing an extended warranty. I turned it down when we bought the vehicle. Our history is of driving cars for years&#8212;decades, now&#8212;beyond their warrantees, and if they break, <em>we pay for it</em>. (Revolutionary, I know.) So I looked these folks up online. Sure enough, I don&#8217;t have to scroll too far down in the search results to find a page titled <a href="http://getoutofdebt.org/48173/dont-be-fooled-by-this-vehicle-extended-warranty-mailer-from-vehicle-protection-center">&#8220;Don&#8217;t be fooled by this vehicle extended warranty mailer from Vehicle Protection Center&#8221;</a>.</p>

<p>This mailer is sleazy, and I&#8217;m posting this not because I think my regular readers would be fooled, but because I want that link above to come up closer to the top of search results.</p>
]]>
        
    </content>
</entry>
<entry>
    <title>The webmaster&apos;s guide to passwords</title>
    <link rel="alternate" type="text/html" href="http://www.flashesofpanic.com/panic/002607.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.flashesofpanic.com/move/mt-atom.cgi/weblog/blog_id=1/entry_id=2607" title="The webmaster's guide to passwords" />
    <id>tag:www.flashesofpanic.com,2012://1.2607</id>
    
    <published>2012-12-09T02:22:00Z</published>
    <updated>2012-12-09T02:35:00Z</updated>
    
    <summary>Here&amp;#8217;s the short summary: if you&amp;#8217;re storing user passwords unencrypted anywhere, you&amp;#8217;re doing it wrong. If you don&amp;#8217;t understand why, you should stick to using free open-source packages like Drupal and not roll your own login system. Also, if you&amp;#8217;re...</summary>
    <author>
        <name>pjm</name>
        <uri>http://www.flashesofpanic.com</uri>
    </author>
            <category term="Life as a Geek" />
    
    <content type="html" xml:lang="en" xml:base="http://www.flashesofpanic.com/">
        <![CDATA[<p>Here&#8217;s the short summary: if you&#8217;re storing user passwords unencrypted anywhere, you&#8217;re doing it wrong. If you don&#8217;t understand why, you should stick to using free open-source packages like Drupal and not roll your own login system. Also, if you&#8217;re not a webmaster, and you ever get an email from a website which provides your unencrypted password, you should know that this site is probably not doing a good job storing your password securely.</p>

<p>The problem is this: sites get hacked, and databases get compromised. Encrypting the connection (your SSL certificate, the https in the address bar, and all that) just protects the customer&#8217;s communication with your server. It&#8217;s nice that they&#8217;ve stopped crackers from harvesting passwords one by one as their users provide them, but what&#8217;s the point if a successful compromise of the server means everyone&#8217;s passwords are available to the cracker?</p>

<p>The first thing you need to know (if not understand) is that there are certain functions which are one-way; that is, the input cannot be determined by the output. Some of these are called hash functions. If you run a sufficiently strong hash function on a password, it is not possible to determine the password from the hash. (The output of a hash function is sometimes called a hash.) (Hash functions are like padlocks: some are stronger than others. But even a weak lock is better than none at all.)</p>

<p>&#8220;But wait,&#8221; the inexperienced webmaster says, &#8220;how can I tell if my user is providing the correct password when they return to the site?&#8221;</p>

<p>Well, think about it. They&#8217;ve stored a hash produced by running a hash function on their password. Why not run the same hash function on the password provided at login time and see if the resulting hash is the same as the one in the database? Problem solved.</p>

<p>(N.B. You might also want to <a href="https://en.wikipedia.org/wiki/Salt_" title="cryptography">read up on &#8220;salt.&#8221;</a>)</p>
]]>
        
    </content>
</entry>
<entry>
    <title>Tally another rodent</title>
    <link rel="alternate" type="text/html" href="http://www.flashesofpanic.com/panic/002606.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.flashesofpanic.com/move/mt-atom.cgi/weblog/blog_id=1/entry_id=2606" title="Tally another rodent" />
    <id>tag:www.flashesofpanic.com,2012://1.2606</id>
    
    <published>2012-11-20T02:37:08Z</published>
    <updated>2012-11-20T02:51:18Z</updated>
    
    <summary>Most of my public internet trail recently has been about little girls, and Izzy has not been getting his proper attention. Therefore, I should announce that this morning he presented for tagging his first mouse of the season. (Mouse hunting...</summary>
    <author>
        <name>pjm</name>
        <uri>http://www.flashesofpanic.com</uri>
    </author>
            <category term="Wishful thinking" />
    
    <content type="html" xml:lang="en" xml:base="http://www.flashesofpanic.com/">
        <![CDATA[<p>Most of my public internet trail recently has been about little girls, and Izzy has not been getting his proper attention.</p>

<p>Therefore, I should announce that this morning he presented for tagging his first mouse of the season. (Mouse hunting season in most of the states he&#8217;s lived in runs from September 1 to August 31.) This is his first mouse of his second decade of hunting.</p>

<p>I was thinking about his record today, and unless I&#8217;m forgetting some, of the six places we&#8217;ve lived with him, he&#8217;s caught mice in three, and in a fourth he caught three bats(!) which I count as <em>mice with wings</em>. He also caught a mouse once while visiting A&#8217;s parents, so I make his total somewhere around eight non-flying mice and three flying mice.</p>

<p>I have a hunch he&#8217;s not done in this house, either.</p>
]]>
        
    </content>
</entry>
<entry>
    <title>What if?</title>
    <link rel="alternate" type="text/html" href="http://www.flashesofpanic.com/panic/002605.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.flashesofpanic.com/move/mt-atom.cgi/weblog/blog_id=1/entry_id=2605" title="What if?" />
    <id>tag:www.flashesofpanic.com,2012://1.2605</id>
    
    <published>2012-11-12T14:21:11Z</published>
    <updated>2012-11-12T14:28:18Z</updated>
    
    <summary>I don&amp;#8217;t remember when I started reading XKCD regularly, but their new &amp;#8220;What If?&amp;#8221; feature has me stifling inappropriate laughter on a regular basis. An example: a recent piece on the probability of electoral ties compares the odds of nine...</summary>
    <author>
        <name>pjm</name>
        <uri>http://www.flashesofpanic.com</uri>
    </author>
            <category term="Web" />
    
    <content type="html" xml:lang="en" xml:base="http://www.flashesofpanic.com/">
        <![CDATA[<p>I don&#8217;t remember when I started reading <a href="http://xkcd.com/">XKCD</a> regularly, but their new <a href="http://what-if.xkcd.com/">&#8220;What If?&#8221;</a> feature has me stifling inappropriate laughter on a regular basis.</p>

<p>An example: a recent piece on the probability of electoral ties compares the odds of nine swing states all producing equal vote totals for the top two candidates with the odds of some fairly unlikely events, including being struck by a bale of cocaine dropped from an airplane, a tornado, and a meteorite strike. (Along the way we learn that a typical location in Florida &#8220;&#8230;experiences an average 1.4 picotornados per second &#8230; a Florida resident suffers an average of 0.64 femtodeaths per second from meteorite impacts &#8230; the average person in Florida is struck by an average of 29 zeptobales of cocaine per second&#8221; and the average income of a typical acre of Florida land derived from falling bales of cocaine.)</p>

<p>So if you like the <em>absurdum</em> part of <em>reductio ad absurdum</em>, you&#8217;ll like What If?</p>
]]>
        
    </content>
</entry>
<entry>
    <title>Now I know a little more about rake-pipeline</title>
    <link rel="alternate" type="text/html" href="http://www.flashesofpanic.com/panic/002604.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.flashesofpanic.com/move/mt-atom.cgi/weblog/blog_id=1/entry_id=2604" title="Now I know a little more about rake-pipeline" />
    <id>tag:www.flashesofpanic.com,2012://1.2604</id>
    
    <published>2012-10-26T01:42:12Z</published>
    <updated>2012-10-26T02:16:18Z</updated>
    
    <summary>I&amp;#8217;ve been doing a lot of work recently with a Javascript framework called Ember.js. In production, it asks the user to load a single Javascript file up front, and then runs the whole application in the browser. With a medium-sized...</summary>
    <author>
        <name>pjm</name>
        <uri>http://www.flashesofpanic.com</uri>
    </author>
            <category term="Life as a Geek" />
    
    <content type="html" xml:lang="en" xml:base="http://www.flashesofpanic.com/">
        <![CDATA[<p>I&#8217;ve been doing a lot of work recently with a Javascript framework called <a href="http://emberjs.com/" title="Ember.js">Ember.js</a>. In production, it asks the user to load a single Javascript file up front, and then runs the whole application in the browser. With a medium-sized or bigger project, you need some kind of build toolchain to take the many smallish code files you&#8217;re working on and bundle them up, both for production and also on an ad-hoc basis as you&#8217;re working. The toolchain I&#8217;m using is called <a href="https://github.com/livingsocial/rake-pipeline" title="Rake Pipeline"><code>rake-pipeline</code></a> (<code>rakep</code> for short) which is just some sugar layered over <code>rake</code> which is really just ruby scripting. </p>

<p>If you haven&#8217;t glazed over yourself by now, bear with me.</p>

<p>(Aside: All of this stuff has been generated by a culture of companies, mostly but not exclusively on the West Coast, building tools for their own use and then publishing the good stuff&#8212;whatever&#8217;s not central to their real business&#8212;free, open-source, for everyone else&#8217;s benefit. It&#8217;s pretty awesome and I try to contribute my own tweaks back when I can.)</p>

<p>If you haven&#8217;t used Ruby but are familiar with software, Rake is just <code>make</code> in Ruby. <code>rakep</code> reads an <code>Assetfile</code> which is the equivalent of <code>Rakefile</code> in Rake or <code>Makefile</code> in <code>make</code>. I hadn&#8217;t seen the syntax before but I could sort of suss out what was going on.</p>

<p>I&#8217;ve been using <code>git</code> post-commit hooks to generate a one-line Javascript file which contains a &#8220;version string&#8221; that&#8217;s just the hash of the most-recent git commit. Displaying this string in the application helps me tell if I&#8217;m looking at the most-recent version of the code, or an older build. However, if someone else doesn&#8217;t have my hooks installed, that file isn&#8217;t generated, and their application won&#8217;t load. I needed a better way.</p>

<p>First I looked at <a href="https://github.com/flamejs/flame.js" title="Flame.js">Flame.js</a>, a widget library for Ember which I&#8217;ve contributed to several times over the last few months. Flame generates a version constant by generating a temporary <code>version.js</code> file in ERb, Ruby&#8217;s built-in template language, using Ruby to send <code>git describe --always --dirty --tags</code> to the shell and planting that in a temporary .js file. Flame, however, uses its own Rake tasks to build its distribution versions, and runs Sprockets over all the input files to handle <a href="http://sass-lang.com/" title="Sass">Sass</a>, and <code>rakep</code> uses neither Sprockets nor Sass, (at least not explicitly). I couldn&#8217;t just borrow stuff from their <code>Rakefile</code>, nor could I drop an <code>.erb</code> file into my code directory and expect it to Just Work.</p>

<p>I looked at the filters that <em>were</em> included, and discovered that Yehuda Katz&#8217;s <code>rake-pipeline-web-filters</code> library (which was already in use - Katz is a core team coder for Ember) includes a Tilt filter. Tilt is a sort of &#8220;send me anything and I&#8217;ll decode it&#8221; filter, and it will handle ERb. So I explicitly required Tilt in my Assetfile, and added this block before encoding of Javascript began:</p>

<pre><code>  match 'lib/version.js.erb' do
    filter WebFilters::TiltFilter do |input|
      input.sub(/.js.erb/, '.js')
    end
  end
</code></pre>

<p>What that wound up doing was taking my <code>version.js.erb</code> file and generating a temporary <code>version.js</code> file which was then included along with the rest of the files as though it had been there all along. It&#8217;s not in with my regular code, so it doesn&#8217;t get committed to git itself, but it&#8217;s included in all the build files. And because the <code>Assetfile</code> is part of the project itself, anyone who builds the project (and has included all the requisite gems, has the right versions of Ruby, etc. etc. which they probably do if they&#8217;re building this) will get the appropriate version string in the application.</p>

<p>It&#8217;s a little thing, but I&#8217;m sort of proud of it. I could probably make that first line <code>match 'lib/*.js.erb'</code> and have it work on any <code>.erb</code> file in the directory, but it&#8217;s not needed so I won&#8217;t bother.</p>
]]>
        
    </content>
</entry>
<entry>
    <title>Which do you believe, the map or the GPS?</title>
    <link rel="alternate" type="text/html" href="http://www.flashesofpanic.com/panic/002603.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.flashesofpanic.com/move/mt-atom.cgi/weblog/blog_id=1/entry_id=2603" title="Which do you believe, the map or the GPS?" />
    <id>tag:www.flashesofpanic.com,2012://1.2603</id>
    
    <published>2012-09-15T18:40:58Z</published>
    <updated>2012-10-26T02:19:30Z</updated>
    
    <summary>If you read my last grumpiness regarding Nike+, you probably know that the answer to the above question is, &amp;#8220;It depends.&amp;#8221; It turns out Strava has the same problem as Nike+ when it comes to using the GPS in the...</summary>
    <author>
        <name>pjm</name>
        <uri>http://www.flashesofpanic.com</uri>
    </author>
            <category term="Life as a Geek" />
            <category term="Outside" />
            <category term="Running" />
    
    <content type="html" xml:lang="en" xml:base="http://www.flashesofpanic.com/">
        <![CDATA[<p>If you read my <a href="/panic/002602.php" title="Archive: Data portability">last grumpiness</a> regarding Nike+, you probably know that the answer to the above question is, &#8220;It depends.&#8221;</p>

<p>It turns out <a href="http://strava.com/">Strava</a> has the same problem as Nike+ when it comes to using the GPS in the iPhone to track runs. Simply put, both apps trust that the GPS track from the phone is 100% reliable; once a run has been tracked, there is no option to correct the track or replace it with something generated from a map.</p>

<p>This would be wonderful if the GPS track was, in fact, 100% reliable. But for some reason in the last few weeks, my GPS tracks have been consistently bad. I&#8217;ve had seven-mile runs marked as two and a half, two-and-a-half mile runs marked as three&#8230; it goes on and on. I don&#8217;t know if the problem is the phone hardware, the apps, local topography, local weather, solar weather, or some combination, but it&#8217;s pretty consistently bad.</p>

<p>And it highlights the problem with using GPS tracks to get run distance (or much other run data): GPS as a technology is much more <em>precise</em> than it is <em>accurate</em>. Put another way, like email, GPS is a &#8220;best effort&#8221; technology (much like email). It can be wrong, and if it&#8217;s wrong it will not apologize nor necessarily admit the error.</p>

<p>So why don&#8217;t either of these logging systems accept an alternative? All they need is an option&#8212;it can be on the website, it doesn&#8217;t need to be right in the phone app&#8212;to indicate for a given run if the GPS track is actually correct. The user could have the option to upload a <code>.gpx</code> file with a better map track if they want to generate one with another app. (It&#8217;s hypothetically possible to use the <a href="http://gmap-pedometer.com/">Gmap-pedometer</a> to create a <code>gpx</code> file, and use that to record a new run with Strava, but so far the <code>gpx</code> files I&#8217;ve tried uploading to Strava have failed.)</p>

<p>Introducing this option of human oversight is a simple way of accounting for GPS&#8217;s lack of accuracy. I&#8217;m sure most of the app developers want to avoid that degree of complication, but in doing so, they&#8217;re placing more trust in a fallible technology than it really deserves.</p>

<p>ETA: So the issue with my GPS inaccuracy turned out to be <a href="http://apple.stackexchange.com/q/67164/4827">the iPhone and not the apps</a>. Still, how do I correct the logs?</p>
]]>
        
    </content>
</entry>
<entry>
    <title>Data portability</title>
    <link rel="alternate" type="text/html" href="http://www.flashesofpanic.com/panic/002602.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.flashesofpanic.com/move/mt-atom.cgi/weblog/blog_id=1/entry_id=2602" title="Data portability" />
    <id>tag:www.flashesofpanic.com,2012://1.2602</id>
    
    <published>2012-09-08T00:00:03Z</published>
    <updated>2012-09-08T00:21:23Z</updated>
    
    <summary>For the last year, I&amp;#8217;ve been using the Nike+ running iPhone app to log my running. This was somewhat against my better judgement, as I tend to worry about consigning my data to warehouses out on the &amp;#8216;net without some...</summary>
    <author>
        <name>pjm</name>
        <uri>http://www.flashesofpanic.com</uri>
    </author>
            <category term="Life as a Geek" />
            <category term="Running" />
    
    <content type="html" xml:lang="en" xml:base="http://www.flashesofpanic.com/">
        <![CDATA[<p>For the last year, I&#8217;ve been using <a href="http://nikeplus.nike.com/plus/">the Nike+ running iPhone app</a> to log my running. This was somewhat against my better judgement, as I tend to worry about consigning my data to warehouses out on the &#8216;net without some means to keep a copy in my own control, but I started when the girls were infants, and I needed something shiny to keep me motivated to get out the door on a regular basis. I have also become terrible at keeping up my paper logs (much like this weblog) and something which would automatically record my data sounded like a good idea.</p>

<p>However, a phone app has its pitfalls. I ran into two cases in the last few weeks which led to messy data in the log:</p>

<ul>
<li><p>During a run, I &#8220;paused&#8221; the app, but then inadvertently &#8220;finished&#8221; the run (a different tap). I had to start a new one to track the rest of the run. Not only were my numbers a little goofy, but Nike recorded this as a double workout.</p></li>
<li><p>More recently, running on <a href="http://www.nps.gov/mima/planyourvisit/placestogo.htm">Battle Road</a> I had a sketchy GPS signal. As a result, the hour-and-a-quarter run was logged as two and a half miles rather than seven and a half, warping the data quite significantly.</p></li>
</ul>

<p>Both of these things should be pretty easy to fix given a little data tweaking, but it turns out Nike doesn&#8217;t support such things. What comes from the phone is considered Truth. I contacted tech support asking how I could fix these runs, and their answer was to delete the runs from my activity and email them the details of the actual runs to be re-inserted in my record.</p>

<p>Needless to say, this seems like a cumbersome approach.</p>

<p>So I&#8217;m shopping for a better logging solution. At the moment, I&#8217;m looking at <a href="http://www.strava.com/">Strava</a> which comes well-recommended. But first I need to <a href="http://www.flashesofpanic.com/panic/001457.php">liberate my data from Nike+</a> (sound familiar?), and it looks like <a href="https://twitter.com/eagerfeet/status/241625871595749376">even that is problematic</a>. I wonder if this shouldn&#8217;t be a standard part of how people evaluate online services: &#8220;How hard will it be to download everything I upload to this site?&#8221;</p>
]]>
        
    </content>
</entry>
<entry>
    <title>Toy workshop</title>
    <link rel="alternate" type="text/html" href="http://www.flashesofpanic.com/panic/002601.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.flashesofpanic.com/move/mt-atom.cgi/weblog/blog_id=1/entry_id=2601" title="Toy workshop" />
    <id>tag:www.flashesofpanic.com,2012://1.2601</id>
    
    <published>2012-05-29T00:05:28Z</published>
    <updated>2012-05-29T00:14:02Z</updated>
    
    <summary>If there is omniscience, there is a ranked list somewhere of ridiculous things fathers have done to make their daughters happy. I am probably not ranked terribly high on that list, but I am on it. One of the girls&amp;#8217;...</summary>
    <author>
        <name>pjm</name>
        <uri>http://www.flashesofpanic.com</uri>
    </author>
            <category term="Life as a Geek" />
    
    <content type="html" xml:lang="en" xml:base="http://www.flashesofpanic.com/">
        <![CDATA[<p>If there is omniscience, there is a ranked list somewhere of ridiculous things fathers have done to make their daughters happy. I am probably not ranked terribly high on that list, but I am on it.</p>

<p>One of the girls&#8217; treasured toys is a small stack of musical greeting cards. This is the variety which play a song when opened&#8212;a small ROM and a tiny PCB connected to an equally tiny speaker with two cheap wires&#8212;sold by Hallmark at about $5 a pop. The first two came at their birthday and play &#8220;Winnie the Pooh&#8221; tunes. They got such a great reception their grandparents found two others, one of which plays a banjo tune and the other the finale of Tchaikovsky&#8217;s &#8220;1812 Overture&#8221;. </p>

<p>They&#8217;re taking a beating; all four have been folded, spindled, and mutilated in ways the post office could only manage with machinery. They&#8217;re fundamentally three-panel cards, with the third folded over the second to form an envelope for the electronics, and most have had that concealing panel pulled loose so the guts are exposed. (One of them had the third panel removed completely.) But one of the Pooh cards actually had one of the wires from the PCB to the speaker come loose this week, rendering it mute.</p>

<p>So yes, Daddy broke out the soldering iron and re-soldered a wire on a $5 greeting card.</p>
]]>
        
    </content>
</entry>
<entry>
    <title>Turning off the baby monitors</title>
    <link rel="alternate" type="text/html" href="http://www.flashesofpanic.com/panic/002600.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.flashesofpanic.com/move/mt-atom.cgi/weblog/blog_id=1/entry_id=2600" title="Turning off the baby monitors" />
    <id>tag:www.flashesofpanic.com,2012://1.2600</id>
    
    <published>2012-04-20T19:25:16Z</published>
    <updated>2012-04-20T19:30:52Z</updated>
    
    <summary>Our baby monitors beep annoyingly when they can&amp;#8217;t establish a connection to the base units in the girls&amp;#8217; rooms. Sometimes turning them off and back on again will re-establish a connection, but last night I turned off the one for...</summary>
    <author>
        <name>pjm</name>
        <uri>http://www.flashesofpanic.com</uri>
    </author>
            <category term="Life as a Geek" />
    
    <content type="html" xml:lang="en" xml:base="http://www.flashesofpanic.com/">
        <![CDATA[<p>Our baby monitors beep annoyingly when they can&#8217;t establish a connection to the base units in the girls&#8217; rooms. Sometimes turning them off and back on again will re-establish a connection, but last night I turned off the one for the yellow room because it wouldn&#8217;t pick the connection back up.</p>

<p>This morning I discovered the reason: the cord for the base unit runs under the crib and plugs into an outlet in the wall the crib sits against. The plug had been pulled out just enough to shut off the base unit.</p>

<p>I&#8217;m pretty sure it wasn&#8217;t <em>intentionally</em> unplugged, but it reminded me of all the questions I would see in security forums about how to limit kids&#8217; internet access. The conventional wisdom was that when the kids were smart enough to get around your filter, you should just shut it down rather than escalate. Now I&#8217;m wondering if it&#8217;s time to turn off the baby monitors now that at least one of the girls is capable of shutting hers off on her own, or if I should just plug it in to a socket she can&#8217;t reach from the crib.</p>
]]>
        
    </content>
</entry>
<entry>
    <title>Found money 2012</title>
    <link rel="alternate" type="text/html" href="http://www.flashesofpanic.com/panic/002599.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.flashesofpanic.com/move/mt-atom.cgi/weblog/blog_id=1/entry_id=2599" title="Found money 2012" />
    <id>tag:www.flashesofpanic.com,2012://1.2599</id>
    
    <published>2012-04-12T18:25:30Z</published>
    <updated>2012-04-13T00:24:24Z</updated>
    
    <summary>(If you&amp;#8217;re interested in previous reports: 2010, 2009, 2008, 2007, and 2006.) As I suggested two years ago, found money has been way down since we moved. So much so that last year I didn&amp;#8217;t bother to count the bin....</summary>
    <author>
        <name>pjm</name>
        <uri>http://www.flashesofpanic.com</uri>
    </author>
            <category term="Wishful thinking" />
    
    <content type="html" xml:lang="en" xml:base="http://www.flashesofpanic.com/">
        <![CDATA[<p>(If you&#8217;re interested in previous reports: <a href="/panic/002566.php">2010</a>, <a href="/panic/002514.php">2009</a>, <a href="/panic/002282.php">2008</a>, <a href="/panic/001888.php">2007</a>, and <a href="/panic/001322.php">2006</a>.)</p>

<p>As I suggested <a href="/panic/002566.php">two years ago</a>, found money has been way down since we moved. So much so that last year I didn&#8217;t bother to count the bin. This year&#8217;s tally represents two years and is still the lowest since I started: $17.47.</p>

<ul>
<li>Four dollar bills. I don&#8217;t remember where I found these, but they were all together, new and crisp and very tightly folded together.</li>
<li>21 quarters ($5.25), 50 dimes, 23 nickels, 207 pennies. Needless to say this is the lowest counts of all of these since I started keeping track.</li>
<li>0.32 CDN (not included in the total), including three dimes. Given that the two-year span included over a week spent in Moncton, this is unsurprising.</li>
<li>5 centavos from Argentina. No idea where this came from.</li>
<li>One very unidentified slug with two deep parallel (but off-center) grooves in one otherwise-blank side, and a baseball batter on the other side. Probably a token from some kind of arcade.</li>
</ul>

<p>I&#8217;m still collecting, but I must admit the numbers here are discouraging. </p>
]]>
        
    </content>
</entry>
<entry>
    <title>&quot;Performant&quot; is not a word</title>
    <link rel="alternate" type="text/html" href="http://www.flashesofpanic.com/panic/002598.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.flashesofpanic.com/move/mt-atom.cgi/weblog/blog_id=1/entry_id=2598" title="&quot;Performant&quot; is not a word" />
    <id>tag:www.flashesofpanic.com,2012://1.2598</id>
    
    <published>2012-04-09T12:49:42Z</published>
    <updated>2012-04-09T12:58:31Z</updated>
    
    <summary>It&amp;#8217;s common in the tech sector to come across people who don&amp;#8217;t write terribly well. In many cases, it&amp;#8217;s because English isn&amp;#8217;t their first language, and they should be congratulated for writing it as well as they do, but over...</summary>
    <author>
        <name>pjm</name>
        <uri>http://www.flashesofpanic.com</uri>
    </author>
            <category term="Life as a Geek" />
    
    <content type="html" xml:lang="en" xml:base="http://www.flashesofpanic.com/">
        <![CDATA[<p>It&#8217;s common in the tech sector to come across people who don&#8217;t write terribly well. In many cases, it&#8217;s because English isn&#8217;t their first language, and they should be congratulated for writing it as well as they do, but over and over I find people without that excuse who still can&#8217;t effectively explain what they do. (Hint: this is useful when it comes time to convince other people to pay them to do it.)</p>

<p>My favorite example in recent years has been the <a href="http://www.merriam-webster.com/dictionary/performant" title="Performant is not a word">fake word</a> &#8220;performant&#8221;. This word is used as an adjective applied to something which performs well, i.e. runs quickly or efficiently. But it&#8217;s not a word; it&#8217;s just jargon, most often used either by people who want to sound knowledgeable or people who simply don&#8217;t know any better. In fact, because it usually forces the sentence into a less active form (&#8220;The framework is performant&#8221; rather than &#8220;The framework performs well&#8221;) it actually makes the point weaker.</p>

<p>If you want to say something performs well, say it, don&#8217;t obscure it with silly jargon.</p>
]]>
        
    </content>
</entry>
<entry>
    <title>I never said that</title>
    <link rel="alternate" type="text/html" href="http://www.flashesofpanic.com/panic/002597.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.flashesofpanic.com/move/mt-atom.cgi/weblog/blog_id=1/entry_id=2597" title="I never said that" />
    <id>tag:www.flashesofpanic.com,2012://1.2597</id>
    
    <published>2012-03-08T00:28:05Z</published>
    <updated>2012-03-08T00:41:16Z</updated>
    
    <summary>&amp;#8220;Marketer sends clueless email to blog author&amp;#8221; is such a tired cliché I&amp;#8217;m almost embarrassed to write this, but apparently the marketers still haven&amp;#8217;t found their clues. Here are two clues: If you&amp;#8217;re going to say, &amp;#8220;When you say X,...</summary>
    <author>
        <name>pjm</name>
        <uri>http://www.flashesofpanic.com</uri>
    </author>
            <category term="Spam" />
    
    <content type="html" xml:lang="en" xml:base="http://www.flashesofpanic.com/">
        <![CDATA[<p>&#8220;Marketer sends clueless email to blog author&#8221; is such a tired cliché I&#8217;m almost embarrassed to write this, but apparently the marketers still haven&#8217;t found their clues.</p>

<p>Here are two clues:</p>

<ul>
<li>If you&#8217;re going to say, &#8220;When you say X, you&#8217;re not kidding!&#8221; make sure I actually said X.</li>
<li>Don&#8217;t say &#8220;Your site may have single handedly saved our sanity!&#8221; when I&#8217;ve only posted nine times in a year.</li>
</ul>

<p>I&#8217;m not going to mention their name because their site looks like the site of a small, struggling start-up. But future marketers, you&#8217;re on notice.</p>
]]>
        
    </content>
</entry>
<entry>
    <title>sed: illegal option -- r</title>
    <link rel="alternate" type="text/html" href="http://www.flashesofpanic.com/panic/002596.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.flashesofpanic.com/move/mt-atom.cgi/weblog/blog_id=1/entry_id=2596" title="sed: illegal option -- r" />
    <id>tag:www.flashesofpanic.com,2012://1.2596</id>
    
    <published>2012-03-07T20:16:09Z</published>
    <updated>2012-03-07T20:24:40Z</updated>
    
    <summary>I&amp;#8217;m porting a very complicated Subversion repository to git using this helpful migration guide, but because I&amp;#8217;m operating on a Mac I hit a minor roadblock. Specifically, I was trying to run this sed wizardry the migration guide uses for...</summary>
    <author>
        <name>pjm</name>
        <uri>http://www.flashesofpanic.com</uri>
    </author>
            <category term="Life as a Geek" />
    
    <content type="html" xml:lang="en" xml:base="http://www.flashesofpanic.com/">
        <![CDATA[<p>I&#8217;m porting a very complicated Subversion repository to <a href="http://git-scm.com/" title="Git - the fast version control system">git</a> using <a href="http://blog.zobie.com/2008/12/migrating-from-svn-to-git/" title="Migrating from svn to git">this helpful migration guide</a>, but because I&#8217;m operating on a Mac I hit a minor roadblock. Specifically, I was trying to run this <code>sed</code> wizardry the migration guide uses for generating <code>git</code> branches from the Subversion branches, and I got this error:</p>

<blockquote>
  <p>sed: illegal option &#8212; r</p>
</blockquote>

<p>The initial web search told me that the issue was that the BSD-style <code>sed</code> that comes standard in Mac OS X (Snow Leopard, in my case) doesn&#8217;t provide the same options as Gnu <code>sed</code>. One suggestion was using ports or <a href="http://mxcl.github.com/homebrew/" title="Homebrew, the missing package manager for Mac">Homebrew</a> to install <code>gsed</code> instead, but for complicated reasons neither is a valid option for me. (Thumbnail: I uninstalled port to try Homebrew, but my Homebrew installation is broken.)</p>

<p>Then I found <a href="http://superuser.com/questions/231704/list-all-unique-extensions-for-files-contained-in-a-directory#comment237453_232101">this offhand SuperUser comment</a> which solved my problem: </p>

<blockquote>
  <p>Use -E instead of -r on OS X.</p>
</blockquote>

<p>Now you know, aren&#8217;t you glad?</p>
]]>
        
    </content>
</entry>
<entry>
    <title>Big day for a little guy</title>
    <link rel="alternate" type="text/html" href="http://www.flashesofpanic.com/panic/002595.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.flashesofpanic.com/move/mt-atom.cgi/weblog/blog_id=1/entry_id=2595" title="Big day for a little guy" />
    <id>tag:www.flashesofpanic.com,2012://1.2595</id>
    
    <published>2012-01-04T16:26:22Z</published>
    <updated>2012-01-04T21:36:09Z</updated>
    
    <summary>Today is a big day for our nephew Magnus. He&amp;#8217;s had way too many such big days for someone as young as he is, but the kid keeps bobbing back up like a cork. That said, he&amp;#8217;s still on our...</summary>
    <author>
        <name>pjm</name>
        <uri>http://www.flashesofpanic.com</uri>
    </author>
            <category term="Wishful thinking" />
    
    <content type="html" xml:lang="en" xml:base="http://www.flashesofpanic.com/">
        <![CDATA[<p>Today is a big day for <a href="http://jenandiggy.blogspot.com/2012/01/i-think-were-on.html">our nephew Magnus</a>. He&#8217;s had way too many such big days for someone as young as he is, but the kid keeps bobbing back up like a cork. That said, he&#8217;s still on our minds.</p>

<p>ETA: <a href="http://jenandiggy.blogspot.com/2012/01/perfect-situation-for-him.html">Looks good so far</a>.</p>
]]>
        
    </content>
</entry>

</feed> 

