<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Deef&apos;s Net</title>
    <link rel="alternate" type="text/html" href="http://deefs.net/" />
    <link rel="self" type="application/atom+xml" href="http://deefs.net/atom.xml" />
    <id>tag:deefs.net,2009-10-19://1</id>
    <updated>2010-08-17T04:26:13Z</updated>
    <subtitle>Home of all things Deef.</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.32-en</generator>

<entry>
    <title>Windows Word Plays</title>
    <link rel="alternate" type="text/html" href="http://deefs.net/2010/08/18/windows_word_plays.html" />
    <id>tag:deefs.net,2010://1.323</id>

    <published>2010-08-19T00:16:43Z</published>
    <updated>2010-08-17T04:26:13Z</updated>

    <summary>Slogans + Geeks can be a fun combination when it comes to word plays. Two of my favorites have to do with Windows. First, there&#8217;s Help Desk, which is a long-running web comic about a fictional, capitalistic, anti-consumer company called...</summary>
    <author>
        <name>Steve</name>
        <uri>http://deefs.net</uri>
    </author>
    
        <category term="Personal" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="language" label="language" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://deefs.net/">
        <![CDATA[<p>Slogans + Geeks can be a fun combination when it comes to word plays.  Two of my favorites have to do with Windows.</p>

<p>First, there&#8217;s Help Desk, which is a long-running web comic about a fictional, capitalistic, anti-consumer company called Ubersoft that markets an operating system known as Nifty Doorways.  Their slogan?  &#8220;Let us show you the door.&#8221;  I think it captures the spirit of the fictional company perfectly, as portrayed in the comic.</p>

<p>For a real life, non-parody example, there&#8217;s the Samba project, which makes an emulation package of sorts that lets Linux computers make files and printers available (among other things) to Windows users as though the Linux computers were Windows computers themselves.</p>

<p>Their slogan: &#8220;Opening windows to a wider world.&#8221;  Wonderful.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Who&apos;s on first?</title>
    <link rel="alternate" type="text/html" href="http://deefs.net/2010/08/16/whos_on_first.html" />
    <id>tag:deefs.net,2010://1.322</id>

    <published>2010-08-17T00:01:59Z</published>
    <updated>2010-08-17T00:04:04Z</updated>

    <summary>I&#8217;m going through the settings of a hard-core E-Mail program, and came across this lovely setting: Copy To Address to From if it is Us There&#8217;s a line that doesn&#8217;t parse easily....</summary>
    <author>
        <name>Steve</name>
        <uri>http://deefs.net</uri>
    </author>
    
        <category term="Personal" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="email" label="email" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://deefs.net/">
        <![CDATA[<p>I&#8217;m going through the settings of a hard-core E-Mail program, and came across this lovely setting:</p>

<blockquote>
  <p>Copy To Address to From if it is Us</p>
</blockquote>

<p>There&#8217;s a line that doesn&#8217;t parse easily.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>USPS Extreme Cost-Saving Measures</title>
    <link rel="alternate" type="text/html" href="http://deefs.net/2010/07/27/usps_extreme_cost-saving_measures.html" />
    <id>tag:deefs.net,2010://1.321</id>

    <published>2010-07-27T13:07:00Z</published>
    <updated>2010-07-25T23:14:27Z</updated>

    <summary>In the July 2010 edition of the PCC Insider (a USPS publication) is found the following statement: There are 26,000 Post Offices with expenses that exceed revenue. The Postal Service is asking for legislative and regulatory change that would give...</summary>
    <author>
        <name>Steve</name>
        <uri>http://deefs.net</uri>
    </author>
    
        <category term="Commerce" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="postal" label="postal" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://deefs.net/">
        <![CDATA[<p>In the July 2010 edition of the PCC Insider (a USPS publication) is found the following statement:</p>

<blockquote>
  <p>There are 26,000 Post Offices with expenses that exceed revenue. The Postal
  Service is asking for legislative and regulatory change that would give us the
  authority to close these Post Offices.</p>
</blockquote>

<p>My first thought, knowing roughly how many ZIP codes there are in the US (42,073 as of June), was, &#8220;my, that seems like an awful lot of them.&#8221;  As can be expected of most &#8220;statistics&#8221; that you get from most media sources, though, they didn&#8217;t bother to include that number.</p>

<p>So, off I go to Wikipedia, and then to the USPS site itself, to verify numbers.  There are 36,400 &#8220;postal locations&#8221; nationwide, according to the USPS.  It&#8217;s not clear if all of those are included in the comparison above, but it can be considered to be the high end.</p>

<p>In other words, reading literally, the postal service has asked for authority to close seven out of every ten post offices (possibly more).  It&#8217;s possible that they meant to include &#8220;some of&#8221; in the quote above, but they didn&#8217;t, and that may very well be intentional.</p>

<p>It&#8217;s an interesting thought.  It would certainly reduce their expenses.  And how many people <em>actually</em> go to the post office?</p>

<p>Well, me, for one.  A lot.  But at the rate I buy stamps, whatever post office I frequent is not likely to be losing more money than it&#8217;s making.  So, let&#8217;s ignore that for now.</p>

<p>It&#8217;s also worth noting that they shouldn&#8217;t need to close seven out of ten post offices in order to only have profitable post offices, since the ones that remain open would likely gain at least some of the sales from the closed post offices.  But, let&#8217;s ignore that for now as well, and just take this at face value.</p>

<p>For most letters, going to the post office isn&#8217;t necessary.  You can get stamps at quite a number of grocery stores and office supply stores, and that number could be increased.  You can also give outgoing mail to your carrier, who is already coming to your house (or general area, at least) six days a week (soon to be five, in all likelihood).  Or use one of the many dropboxes that are all over the place.  We&#8217;re not talking about any change to the delivery/pick-up schedule.</p>

<p>For packages, it&#8217;s a little trickier, but not too hard.  With flat-rate packages, you don&#8217;t need a scale.  Just buy the stamp or print postage online, stick your lead bricks in the box, apply the postage, and give it to your carrier, or drop it in a mailbox.  The boxes themselves could be picked up from the same place you get the stamps.  Or they could be ordered online, and delivered by the carrier.</p>

<p>For non-flat-rate packages, you&#8217;ll do the same thing you do for UPS or FedEx &#8212; there&#8217;s usually one in your general area, or the USPS could contract with an office supply store to handle the package pickup for them (I&#8217;m pretty sure they can already legally do this, it just doesn&#8217;t make sense when they have post offices all over the place).  Most people don&#8217;t send packages regularly, anyway, so it can be more inconvenient than it is without most people really noticing more than once or twice a year (mostly around Christmas).  People who do send packages regularly can buy a scale (or the USPS could have a loyalty program that has a scale as a &#8220;prize&#8221; for frequent mailers, if you want to avoid that issue).</p>

<p>PO Boxes are the other big thing.  In rural areas, they&#8217;ll probably need to keep money-losing post offices around, in order to avoid losing even more money by having delivery service to every door (ending universal delivery isn&#8217;t up for discussion, as far as I can tell, and while PO Boxes don&#8217;t really count as universal delivery, I accept it as a concession, as one living in an area where it&#8217;s frequently done).</p>

<p>In other areas, it may be a matter of directing people to post offices that aren&#8217;t as close, partnering with another company to provide PO Boxes in a store (no real estate costs or on-site employees needed), or just ending the service if it&#8217;s not profitable.</p>

<p>This may very well be an effective solution to the post office&#8217;s ongoing losses.  We could have a profitable postal service, with no significant impact on postage cost and no significant inconvenience to consumers.</p>

<p>Oh, but there&#8217;s one problem.  The post office has 596,000 full-time employees, plus an unspecified number of part-time employees.  They pay over a billion dollars every <em>week</em> in salaries and benefits.  What sort of effect do you think they&#8217;d have on the local and national economy if they were to close a majority of post offices in order to help them become profitable?</p>

<p>And, here&#8217;s the harder question: Is that their problem?  Don&#8217;t answer too quickly.</p>

<p>I&#8217;d be interested in hearing your thoughts on the above.  I don&#8217;t have comments turned on, but if you have a blog, write a response (I don&#8217;t care if you link to this post or not) and send me an E-Mail with a link to it, so I can read it.  Or, if you&#8217;d prefer to respond in private, just send me an E-Mail (if you don&#8217;t know it, it&#8217;s my first name at this domain name).</p>
]]>
        

    </content>
</entry>

<entry>
    <title>At 1:15am this morning</title>
    <link rel="alternate" type="text/html" href="http://deefs.net/2010/07/25/at_115am_this_morning.html" />
    <id>tag:deefs.net,2010://1.320</id>

    <published>2010-07-25T15:48:52Z</published>
    <updated>2010-07-25T15:56:50Z</updated>

    <summary><![CDATA[At a hotel, after a day of eventful travel and 3.5 hours of sleep the night before, it&#8217;s (almost) needless to say that I&#8217;d been asleep for some time: Phone: Ring, Ring, Ring Me: &lt;urg&gt; Hello? Phone: &lt;cheery voice&gt; Hi,...]]></summary>
    <author>
        <name>Steve</name>
        <uri>http://deefs.net</uri>
    </author>
    
        <category term="Personal" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="travel" label="travel" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://deefs.net/">
        <![CDATA[<p><em>At a hotel, after a day of eventful travel and 3.5 hours of sleep the night before, it&#8217;s (almost) needless to say that I&#8217;d been asleep for some time:</em></p>

<p>Phone: Ring, Ring, Ring</p>

<p>Me: &lt;urg&gt; Hello?</p>

<p>Phone: &lt;cheery voice&gt; Hi, is this Bob?</p>

<p>Me: Umm, no?</p>

<p>Phone: Oh.  Is this room 202?</p>

<p>Me: No, it isn&#8217;t.</p>

<p>Phone: Oh, sorry.  &lt;click&gt;</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Quick Perl Tip: Removing initial and trailing spaces</title>
    <link rel="alternate" type="text/html" href="http://deefs.net/2010/07/22/quick_perl_tip_removing_initial_and_trailing_spaces.html" />
    <id>tag:deefs.net,2010://1.319</id>

    <published>2010-07-23T03:40:09Z</published>
    <updated>2010-07-23T06:07:59Z</updated>

    <summary>It&#8217;s not uncommon that I&#8217;ll want to remove initial spaces and trailing spaces when I&#8217;m parsing user input. In the past, I&#8217;ve always done the following: $text =~ s/^\s+//; # Remove initial whitespace $text =~ s/\s+$//; # Remove trailing whitespace...</summary>
    <author>
        <name>Steve</name>
        <uri>http://deefs.net</uri>
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="regex" label="regex" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://deefs.net/">
        <![CDATA[<p>It&#8217;s not uncommon that I&#8217;ll want to remove initial spaces and trailing spaces when I&#8217;m parsing user input.</p>

<p>In the past, I&#8217;ve always done the following:</p>

<pre><code>$text =~ s/^\s+//;  # Remove initial whitespace
$text =~ s/\s+$//;  # Remove trailing whitespace
</code></pre>

<p>As it turns out, though, these two lines can be combined into one if you add the /g flag:</p>

<pre><code># Remove initial or trailing whitespace repeatedly
$text =~ s/^\s+|\s+$//g;
</code></pre>

<p>For whatever reason, that didn&#8217;t occur to me until reading through someone else&#8217;s code where it was used.</p>

<p>If you need to do this sort of thing as well, and it hasn&#8217;t occurred to you, either, here you go.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Five Years of Full-Time Self-Employment</title>
    <link rel="alternate" type="text/html" href="http://deefs.net/2010/06/15/five_years_of_full-time_self-employment.html" />
    <id>tag:deefs.net,2010://1.317</id>

    <published>2010-06-15T14:04:17Z</published>
    <updated>2010-06-15T15:33:18Z</updated>

    <summary>Today marks five years since I last received a paycheck. There&#8217;s a folk stat that 80% of small businesses fail in their first five years, so I can now safely put that one behind me (the business itself is nearly...</summary>
    <author>
        <name>Steve</name>
        <uri>http://deefs.net</uri>
    </author>
    
        <category term="Business" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://deefs.net/">
        <![CDATA[<p>Today marks five years since I last received a paycheck.  There&#8217;s a folk stat that 80% of small businesses fail in their first five years, so I can now safely put that one behind me (the business itself is nearly seven years old, but it&#8217;s questionable whether the part-time years should count).</p>

<p>Five years ago, I was operating solo out of a spare bedroom with a $1600 printer that I&#8217;d <em>leased</em> of all things, because I didn&#8217;t have anywhere near enough money to actually buy it.</p>

<p>Today, we have three full-time people (including a summer intern who started earlier this month) plus one part-time person, 3500 sq. ft. of office space, and a printer that costs $1600 <em>per month</em>.</p>

<p>Bootstrapping a business has its downsides, but it&#8217;s really nice when it works.  This one&#8217;s working.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>hg update --rev ####</title>
    <link rel="alternate" type="text/html" href="http://deefs.net/2010/04/14/hg_update_rev.html" />
    <id>tag:deefs.net,2010://1.316</id>

    <published>2010-04-14T23:05:56Z</published>
    <updated>2010-04-14T23:11:53Z</updated>

    <summary>This is a nice command. It&#8217;s simple. It works. And it puts out fires. When you release an update and start getting automated error E-Mails shortly thereafter, it&#8217;s so much nicer to be able to say &#8220;go back to this...</summary>
    <author>
        <name>Steve</name>
        <uri>http://deefs.net</uri>
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="mercurial" label="mercurial" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://deefs.net/">
        <![CDATA[<p>This is a nice command.  It&#8217;s simple.  It works.  And it puts out fires.</p>

<p>When you release an update and start getting automated error E-Mails shortly thereafter, it&#8217;s so much nicer to be able to say &#8220;go back to this revision, which I know worked&#8221; than to have to find the bug, fix the bug, and release a new revision while hoping that you didn&#8217;t just break something else since you&#8217;re doing it in a hurry before too many other people notice.</p>

<p>I used to do the latter, and am now trying to get into the habit of doing the former.  This has the added benefit that I have more time to write the test case that should have caught the bug in the first case, so we&#8217;ll never see that particular bug again.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Nasty Race Conditions</title>
    <link rel="alternate" type="text/html" href="http://deefs.net/2010/03/26/nasty_race_conditions.html" />
    <id>tag:deefs.net,2010://1.315</id>

    <published>2010-03-26T17:59:23Z</published>
    <updated>2010-03-26T18:18:23Z</updated>

    <summary>There&#8217;s a race condition in my application server that can cause a particular type of database query to fail. Perl&#8217;s Class::DBI module has a findorcreate function that does a SELECT query to see if a record exists, and then an...</summary>
    <author>
        <name>Steve</name>
        <uri>http://deefs.net</uri>
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://deefs.net/">
        <![CDATA[<p>There&#8217;s a race condition in my application server that can cause a particular type of database query to fail.  Perl&#8217;s Class::DBI module has a find<em>or</em>create function that does a SELECT query to see if a record exists, and then an INSERT query if it doesn&#8217;t.  If some other application does an INSERT between those two queries, the first application&#8217;s INSERT will fail.</p>

<p>In my application, there&#8217;s a gap between those two queries of one tenth of a millisecond, or 0.0001 seconds.  That&#8217;s a small window.</p>

<p>And yet, code has snuck through that window six times in the past three days, resulting in a &#8220;duplicate key value violates unique constraint&#8221; error.  What makes this even more incredible is that this race condition only pops up if there has been another race condition failure earlier in the process.</p>

<p>Fixing the problem can be done in any (or all) of three ways:</p>

<p>1) Handle the database error.  The records are identical, so in this case I can just quietly move on if the race condition strikes.</p>

<p>2) Use locks.  Only let one instance work on this queue at a given time.</p>

<p>3) Add a random delay.  This error is happening because three or four processes are all getting fired at once, and they&#8217;re all hitting the database at the exact same time, resulting in concurrency problems.  Adding a randomized delay of 0-0.2ms would be enough to work around the problem, and I can implement this just by randomizing the order of operations, so it won&#8217;t affect performance.</p>

<p>I&#8217;ll probably implement all three, just to have plenty of assurance that it&#8217;s fixed, but I&#8217;m still incredulous that it&#8217;s needed at all with the current amount of traffic.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>If you&apos;re meeting people at the Miami airport</title>
    <link rel="alternate" type="text/html" href="http://deefs.net/2010/01/08/if_youre_meeting_people_at_the_miami_airport.html" />
    <id>tag:deefs.net,2010://1.314</id>

    <published>2010-01-09T02:21:35Z</published>
    <updated>2010-01-09T02:46:17Z</updated>

    <summary>A couple of notes to keep in mind: If you&#8217;re meeting passengers coming in on an international flight, and you&#8217;re thinking that the waiting/meeting area outside customs on concourse J is a sensible place to meet your inbound international party...</summary>
    <author>
        <name>Steve</name>
        <uri>http://deefs.net</uri>
    </author>
    
        <category term="Personal" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="airlines" label="airlines" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="travel" label="travel" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://deefs.net/">
        <![CDATA[<p>A couple of notes to keep in mind:</p>

<ol>
<li><p>If you&#8217;re meeting passengers coming in on an international flight, and you&#8217;re thinking that the waiting/meeting area outside customs on concourse J is a sensible place to meet your inbound international party when the info screen says they&#8217;ll be arriving at concourse J, you&#8217;re half right (it is a sensible place) and half wrong (there&#8217;s a pretty good chance your party will arrive two floors below and you&#8217;ll miss them, if they&#8217;re coming from Canada).</p></li>
<li><p>If you want to catch a shuttle to the hotel where your party is staying, after realizing that they&#8217;re long gone, and you&#8217;re thinking one of the dozen or so shelters marked &#8220;Hotel Shuttle&#8221; would be a sensible place to wait for one, you&#8217;re half right (it is a sensible place) and completely wrong (not a single airport shuttle actually stops at any of them).  The proper approach is to go to the departures area, watch for the shuttle from the appropriate hotel, and then stand in front of it so it either has to hit you or let you on (the former would take more time to deal with, so they tend to stop).</p></li>
</ol>

<p>This public service announcement has been brought to you by someone who spent way too much time <em>not</em> meeting his party at the airport today.</p>

<p>Oh, and one more thing that&#8217;s actually somewhat useful &#8212; if you want to get from Fort Lauderdale to Miami airport, and if you ask a hotel concierge, they&#8217;ll recommend a private sedan for $90 one-way.  Go Shuttle quotes $120 one-way.  If you persevere, you might get a taxi for $60 one-way.  Don&#8217;t do any of these.  Instead, take the commuter rail for $3.75 airport-to-airport, or $6.25 for a same-day round-trip ticket.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Product Warning Labels</title>
    <link rel="alternate" type="text/html" href="http://deefs.net/2010/01/02/product_warning_labels.html" />
    <id>tag:deefs.net,2010://1.313</id>

    <published>2010-01-02T23:45:02Z</published>
    <updated>2010-01-01T23:47:09Z</updated>

    <summary>I read the following warning label on a speaker a few days ago: Take note that this speaker is not edible and should not be placed in your mouth. It&#8217;s admittedly a small speaker, but still!...</summary>
    <author>
        <name>Steve</name>
        <uri>http://deefs.net</uri>
    </author>
    
        <category term="Commerce" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="sound" label="sound" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://deefs.net/">
        <![CDATA[<p>I read the following warning label on a speaker a few days ago:</p>

<blockquote>
  <p><em>Take note that this speaker is not edible and should not be placed in your mouth.</em></p>
</blockquote>

<p>It&#8217;s admittedly a small speaker, but still!</p>
]]>
        

    </content>
</entry>

<entry>
    <title>The best knee-jerk reaction possibility for airline security</title>
    <link rel="alternate" type="text/html" href="http://deefs.net/2010/01/01/the_best_knee-jerk_reaction_possibility_for_airline_security.html" />
    <id>tag:deefs.net,2010://1.312</id>

    <published>2010-01-01T15:13:17Z</published>
    <updated>2010-01-01T15:50:04Z</updated>

    <summary> I wish that, just once, some terrorist would try something that you can only foil by upgrading the passengers to first class and giving them free drinks. &#8212; Bruce Schneier That would certainly beat the various draconian and invasive...</summary>
    <author>
        <name>Steve</name>
        <uri>http://deefs.net</uri>
    </author>
    
        <category term="Commerce" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="airlines" label="airlines" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="travel" label="travel" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://deefs.net/">
        <![CDATA[<blockquote>
  <p><em>I wish that, just once, some terrorist would try something that you can only foil by upgrading the passengers to first class and giving them free drinks.</em>  &#8212; Bruce Schneier</p>
</blockquote>

<p>That would certainly beat the various draconian and invasive measures I&#8217;ve been reading about.  And it&#8217;s not as though any of them would even work.  Most of them wouldn&#8217;t even have prevented the latest attack that got prevented just fine without any of the new proposals.</p>

<p>Security is hard.  In this case, you&#8217;ve got quite a lot of airport security people who aren&#8217;t getting paid exceptionally well trying to catch one person out of every billion or so travelers who&#8217;s willing and at least mostly able to blow himself up.  And you need to do that on tight schedules with no false positives.</p>

<p>To make things just that much harder, everyone else in line is already annoyed with you because of the existing inconveniences of travel and airport security, often combined with long lines, making it exceptionally easy to get a false positive based on behavior (if anything, you probably need to be most concerned about anyone who looks serene through the whole process).  And that&#8217;s just a couple of the issues involved.</p>

<p>Sigh.  I&#8217;m going to be flying in less than a week, going to a mostly undisclosed location for a business-planning retreat.  Hopefully some of the hysteria will have died down by then and I&#8217;ll be able to legally at least read a book during the flight.  If I hadn&#8217;t already prepaid the entire trip, I&#8217;d cancel it and go find a cottage in Maine instead.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>A refreshing signature</title>
    <link rel="alternate" type="text/html" href="http://deefs.net/2009/12/22/a_refreshing_signature.html" />
    <id>tag:deefs.net,2009://1.311</id>

    <published>2009-12-22T15:51:09Z</published>
    <updated>2009-12-22T15:53:58Z</updated>

    <summary>I just saw the following signature, from someone who&#8217;s not caught up in the whole paperless-will-save-the-world craze: Notice: It is totally OK to print this email. Paper is a biodegradable, renewable, sustainable product made from trees. Growing and harvesting trees...</summary>
    <author>
        <name>Steve</name>
        <uri>http://deefs.net</uri>
    </author>
    
        <category term="Personal" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://deefs.net/">
        <![CDATA[<p>I just saw the following signature, from someone who&#8217;s not caught up in the whole paperless-will-save-the-world craze:</p>

<blockquote>
  <p>Notice:  It is totally OK to print this email. Paper is a biodegradable, renewable,
  sustainable product made from trees. Growing and harvesting trees provides jobs for
  millions of men and women, and working forests are good for the environment, providing
  clean air, clean water, wildlife habitat and carbon storage. When you don&#8217;t need it
  anymore, be sure to put it in a bin designated for recycling, and it will come back to us as
  new paper or paperboard!</p>
</blockquote>
]]>
        

    </content>
</entry>

<entry>
    <title>Rule #1 of Caching</title>
    <link rel="alternate" type="text/html" href="http://deefs.net/2009/12/19/rule_1_of_caching.html" />
    <id>tag:deefs.net,2009://1.310</id>

    <published>2009-12-19T21:05:13Z</published>
    <updated>2009-12-19T21:36:36Z</updated>

    <summary>Don&#8217;t cache something if it takes longer to retrieve it from the cache than it takes to generate it in the first place. Corollary: Improving performance on the cache mechanism allows more stuff to be cached effectively. This was discovered...</summary>
    <author>
        <name>Steve</name>
        <uri>http://deefs.net</uri>
    </author>
    
        <category term="Business" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://deefs.net/">
        <![CDATA[<p>Don&#8217;t cache something if it takes longer to retrieve it from the cache than it takes to generate it in the first place.</p>

<p>Corollary: Improving performance on the cache mechanism allows more stuff to be cached effectively.</p>

<p>This was discovered while attempting to speed up the work list and order detail pages.  Fortunately, adding an index in a particular place in the database was enough to get the cache retrieval and validation to be well under a millisecond.</p>

<p>That, combined with roughly eight hours of tweaking code and database calls, means that an average order detail page request now only requires 182 database calls, down from 689 (74% reduction), and is generated (in most cases) in well under a second, even without touching the cache.</p>

<p>With the cache, it&#8217;s generated in roughly a tenth of a second (with about ten database calls for the entire request), though I still have some work to do, since it&#8217;s taking the browser between a quarter and half a second to render.</p>

<p>The work list load time is just under a second now, with some selective caching, down from about 2-3 seconds, using a test set of 40 active mailings.  That&#8217;s fast enough for now.  Database calls also dropped from 789 to 402, which is a nice bonus.  At 100 active mailings, it slows down to about 1.5 seconds with the selective caching (down from about 10 beforehand), so I&#8217;ll probably need to do some more performance work once we start seeing that on a regular basis.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>When &quot;right now&quot; isn&apos;t fast enough</title>
    <link rel="alternate" type="text/html" href="http://deefs.net/2009/12/16/when_right_now_isnt_fast_enough.html" />
    <id>tag:deefs.net,2009://1.309</id>

    <published>2009-12-17T03:58:46Z</published>
    <updated>2009-12-17T06:03:49Z</updated>

    <summary>Normally, my company is able to do a good job of meeting or exceeding people&#8217;s expectations for order fulfillment. We certainly try. Even during this crazy time of year, when there&#8217;s a ton of mailings, nearly all of them unusual,...</summary>
    <author>
        <name>Steve</name>
        <uri>http://deefs.net</uri>
    </author>
    
        <category term="Business" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="PLS Observations" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="service" label="service" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://deefs.net/">
        <![CDATA[<p>Normally, my company is able to do a good job of meeting or exceeding people&#8217;s expectations for order fulfillment.  We certainly try.  Even during this crazy time of year, when there&#8217;s a ton of mailings, nearly all of them unusual, often under-specified, and with lots of people stressed out over sending the order a week or three later than they&#8217;d hoped, we&#8217;re keeping up (if barely, and with somewhat less sleep than usual on the part of myself and Christine, but as well as or better than past years).</p>

<p>Yesterday, though, an order took a turn for the strange.  This particular order had been submitted the day before at 3:28pm.  That&#8217;s after our mostly-unofficial cut-off for the day (3:00pm), and there were no special instructions about it being a rush, so we went through our normal practice of waiting &#8216;til the next morning to work on it.</p>

<p>Mid-morning the next day, we get an E-Mail from the customer asking how backlogged we are, how long it will take to get his letters sent, and whether it would be faster for him to send them himself.  An hour later, having just talked through the (moderately complex) order with Kevin, I reply saying that we&#8217;re not backlogged, and are working on setting up his mailing now.  Assuming there&#8217;s no delay in approving the order, we&#8217;d have the letters sent that day.</p>

<p>Nothing weird so far, but then the next E-Mail arrives.  &#8220;I think I&#8217;ll send this mailing myself&#8221; (to get it out sooner).  Err, what?  So, I send back a reply, asking if he&#8217;s sure, and repeating that we shouldn&#8217;t have any trouble getting the mailing sent within a few hours.  Maybe he&#8217;d misread the original E-Mail.  But another reply comes in, saying he&#8217;s sure, so I cancel the order.</p>

<p>I&#8217;m guessing there must have been some other issue.  It was admittedly a small list, so it&#8217;s technically possible that if he dropped everything and started work on them right away, he could have gotten the mailing sent before we would, assuming he could produce 4x6 photos at a nearby 1-hour lab with no delays during the busiest time of year, and assuming he already had a pile of the specialty reply envelopes he&#8217;d requested, along with the normal paper, envelopes, and stamps.  It only would have taken us roughly 10 minutes to send his mailing, including the photo printing, but he wasn&#8217;t at the head of the queue at the time, so it would&#8217;ve been an hour or two before it got to the printing stage.</p>

<p>Even so, it wouldn&#8217;t have mattered &#8212; at least in this area, it makes no difference if I mail something at 7am or 8pm; it&#8217;ll still go out that day in the ~11:30pm truck.  I assume the same is true where he lives (if anything, he&#8217;d probably have a 5pm cutoff), and his recipients were spread out around the country, such that there wouldn&#8217;t be any major savings geographically.</p>

<p>That one may very well take the cake for oddest customer interaction of the year.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Deef in Texas</title>
    <link rel="alternate" type="text/html" href="http://deefs.net/2009/10/28/deef_in_texas.html" />
    <id>tag:deefs.net,2009://1.288</id>

    <published>2009-10-29T03:52:26Z</published>
    <updated>2009-10-29T04:07:35Z</updated>

    <summary>Before this evening, the closest I&#8217;ve ever been to Texas has been either northern Colorado or Florida, depending on how you want to measure geographical/cultural distance. Next thing you know, I&#8217;ll be visiting California &#8212; scary thought! Travel was pretty...</summary>
    <author>
        <name>Steve</name>
        <uri>http://deefs.net</uri>
    </author>
    
        <category term="Business" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="airlines" label="airlines" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="travel" label="travel" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://deefs.net/">
        <![CDATA[<p>Before this evening, the closest I&#8217;ve ever been to Texas has been either northern Colorado or Florida, depending on how you want to measure geographical/cultural distance.  Next thing you know, I&#8217;ll be visiting California &#8212; scary thought!</p>

<p>Travel was pretty boring, all told.  I got caught up on E-Mail (offline) during one of the flights, and played Bejeweled on the other, with a stop at Chick-Fil-A in Atlanta (albeit a rushed one, since I&#8217;d arrived in Concourse C, had a flight leaving out of Concourse B, and it was in Concourse A).</p>

<p>Wednesday afternoon in Manchester is apparently a great time to fly.  The airport is dead quiet.  No lines for check-in, security, or food.  Way better than flying out of Boston.</p>

<p>Oh, and I should probably mention <em>why</em> Deef is in Texas.  I joined the National Association for Printing Leadership (NAPL) a little over a month ago, hoping to improve my understanding of the industry and also to improve my company&#8217;s foundation by figuring out and implementing some best practices for the printing side of things, much of which looks like it&#8217;ll carry over into the technology side as well.</p>

<p>These guys have a conference every year for owners of smallish print shops, which happens to be in Austin, TX this time.  So, here I am.  It should be fun!</p>
]]>
        

    </content>
</entry>

</feed>
