<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>sigil.org</title>
    <link rel="alternate" type="text/html" href="http://blog.sigil.org/" />
    <link rel="self" type="application/atom+xml" href="http://blog.sigil.org/atom.xml" />
    <id>tag:blog.sigil.org,2009-01-15://2</id>
    <updated>2011-04-27T04:49:55Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 5.02</generator>

<entry>
    <title>CODE: A review four years in the making</title>
    <link rel="alternate" type="text/html" href="http://blog.sigil.org/2011/04/code.html" />
    <id>tag:blog.sigil.org,2011://2.96</id>

    <published>2011-04-27T15:00:00Z</published>
    <updated>2011-04-27T04:49:55Z</updated>

    <summary>According to Amazon, I bought CODE by Charles Petzold in September of 2007. After reading about the book on a blog I have long since forgotten, I added it to my Amazon Wish List. It languished there before eventually being...</summary>
    <author>
        <name>Richard Kolkovich</name>
        
    </author>
    
        <category term="coding" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="booksreviews" label="books reviews" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.sigil.org/">
        <![CDATA[<p>According to Amazon, I bought <a href="http://www.amazon.com/gp/product/0735611319/ref=as_li_ss_tl?ie=UTF8&amp;tag=sigilorg-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399349&amp;creativeASIN=0735611319">CODE by Charles Petzold</a> in September of 2007. After reading about the book on a blog I have long since forgotten, I added it to my Amazon Wish List. It languished there before eventually being used to pad my cart for Free Super Saver Shipping on that fateful September day almost four years ago.</p>

<p>I remember starting to read CODE on a flight for a business trip. Through the first chapter, I was intrigued. Moving into chapters two through four, I was fondly recalling my favorite section in Boys' Life magazine - Codemaster. By chapter ten, however, I was back in a classroom at <a href="http://www.spsu.edu">Southern Poly</a>, proving for the third time I knew how to convert from base-10 to binary and derive truth tables for circuits with my eyes closed.</p>

<p>CODE then took up space on my bookshelf, in a moving box and on the same bookshelf in an apartment about 375 miles north of its previous home. As I have been travelling down the road of minimalism, clearing my bookshelf has been closer to the process end than the task end. Stumbling across CODE, I decided to move it to the queue that is my nightstand. It has taken up space there until I picked it up tonight and flipped to chapter 14, marked by an American Airlines ticket stub from a business trip long ago.</p>

<p>"Tonight?" you ask. "How can he be writing this review TONIGHT?! There are ten more chapters to read!" Well, I made it through about a page of chapter 14 and skimmed the rest. The remaining pages in the book will not change my mind about it. The verdict? Haven't you guessed that already?</p>

<p>In my college career, I had no less than three courses where I was expected to learn various binary operations (conversion from decimal, two's complement, etc.), Boolean algebra, basic and advanced logic gates (and truth tables to go with!). Am I jaded? Sure, but I don't think my viewpoint would change had I only had one of those courses. As a programmer, I <em>know</em> all of this stuff. Some of it, I deal with daily; the rest of it, I avoid like the plague. Either way, the knowledge is in my brain, lodged somewhere deep between the name of that actress in that movie and the kid that spilled his drink on my lap in the lunchroom in middle school.</p>

<p>Is CODE a bad book? Should the grammar Nazis (myself included) be after Petzold with pitchforks? Would copies of the book be better suited to fuel for a bum's barrel fire than reading? Hell no. Petzold weaves a marvelous tale in the beginning to hook you, and his style continues throughout the book to make some pretty intense (to the uninitiated) material easy to grasp.</p>

<p>My bitterness toward the book is born purely from the fact that the blog recommendation which prompted me to purchase it in the first place was a coding blog. I cannot understand, however, why any seasoned programmer would want to read it.</p>

<p>Who is the book for? The ideal place for it is in a computer science survey course. The material and depth thereof is perfect for letting people know what they'll be getting into (at least in <em>some</em> CS curricula). Obviously, the other ideal audience is the non-programmer - writers, techies, mechanics, significant others and parents of geeks and coders. THESE people would enjoy at least the first half of the book.</p>

<p>I'm glad to have finally completed the book; I hope my copy will find a loving home, as it will soon be making space on my bookshelf for something more to my tastes.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Sadism: the order of the day at Disney</title>
    <link rel="alternate" type="text/html" href="http://blog.sigil.org/2010/12/tron-legacy-soundtrack-boondoggle.html" />
    <id>tag:blog.sigil.org,2010://2.85</id>

    <published>2010-12-23T16:00:00Z</published>
    <updated>2010-12-23T16:29:16Z</updated>

    <summary>At risk of increasing the percentage of rants on my already ill-populated blog, I feel the desire to share this. Twitter&apos;s 140 characters were not sufficient; Facebook&apos;s 420 characters didn&apos;t foot the bill; a blagorant it must be, then. Disclaimer:...</summary>
    <author>
        <name>Richard Kolkovich</name>
        
    </author>
    
        <category term="technology" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="drmmusicdisneyrants" label="drm music disney rants" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.sigil.org/">
        <![CDATA[<p>At risk of increasing the percentage of rants on my already ill-populated blog, I feel the desire to share this.  Twitter's 140 characters were not sufficient; Facebook's 420 characters didn't foot the bill; a blagorant it must be, then.  Disclaimer: I do not endorse the piracy of copyrighted content.</p>

<p>In Disney's infinite pursuit of profit, regardless of how said pursuit may impact their customers, the Tron Legacy soundtrack cannot be had in its entirety from one source.  Or two.  Or three.  Four is the number of sources which you must use, and the number of sources is four.  </p>

<p>If you happen to be one of the 307,000,000 or so US residents, you have to shop with amazon.co.uk or amazon.ca to import the Deluxe version of the soundtrack.  This buys you five tracks (12 minutes, 53 seconds of music) more than the only version available from amazon.com. </p>

<p>Source number two?  Disney's bosom buddy, Apple.  Two more tracks (6 minutes, 5 seconds of music) can be had from Apple's iTunes store.  These tracks will appear in Apple's non-free AAC encoding, compressed and possibly DRM-laden (I'm not 'up to date' with Apple's DRM policy.  I know they announced dropping DRM completely for music at some point in the past, but I wouldn't be surprised if they backtracked on that.  At least for special friends like Disney).</p>

<p>Moving right along, Amazon's digital music store gets a taste.  A relatively tiny taste, as it were, of one track (2 minutes, 41 seconds).  This lone track will be delivered to you in stunningly compressed, non-free MP3 format!  DRM?  Not here, fortunately.</p>

<p>The last stop on the Tron Legacy soundtrack pain train is Nokia's Ovi store.  Who's what what?  Yeah...thought so.  Nokia.  Finnish mobile handset maker.  They're pretty big over across the pond.  In the States?  Not so much.  They hold 8% of the mobile phone market share here.  Even if you are one of the approximately 22.8 million Americans with a Nokia handset, I'm betting there's at least a fifty-fifty chance you haven't created an Ovi account.  This is what you will need to grab the last gem and add another 2 minutes, 50 seconds to your collection.  Oh...and you'll need their proprietary software to boot!  Need I mention that this track is compressed?  If I were a betting man, I'd bet on DRM, too.</p>

<p>Wow.  That's pretty close to a metric shitton of effort to put forth to GIVE A COMPANY YOUR MONEY.  Let's recap, shall we?  You order a CD from a foreign country and wait at least ten days (as of this writing, Amazon UK estimates delivery w/ standard shipping between January 6th and 10th; the soundtrack is out of stock with Amazon Canada).  To retrieve the other 24 minutes and 29 seconds of soundtrack, you make a purchase with three merchants, possibly creating as many accounts and installing as many as two pieces of software.  </p>

<p>Seriously?  File this one under "cruel and unusual punishment."  Thanks, Disney, for punishing your potential customers who would gladly open their wallets a bit wider to get all 31 of these tracks in a single, two-disc set.  In an uncompressed format.  Without DRM.</p>

<p>As a side note, most things in the natural world take the path of least resistance: lightning, water, and humans who have heard of The Pirate Bay.  Downloading a single torrent provides a whole hell of a lot less resistance than Disney's boondoggle.  And in minutes rather than weeks.  Way to encourage piracy, geniuses.</p>

<p>End of line.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Twice the bits, twice the time</title>
    <link rel="alternate" type="text/html" href="http://blog.sigil.org/2010/09/twice-the-bits-twice-the-time.html" />
    <id>tag:blog.sigil.org,2010://2.76</id>

    <published>2010-09-02T23:24:50Z</published>
    <updated>2010-09-03T00:03:54Z</updated>

    <summary>When I built a zfs-based RAID array last year, I switched to the 64-bit build of FreeBSD. Knowing that 64-bit software is inherently evil, I set up a 32-bit jail for coding. At some point, I was dragged into doing...</summary>
    <author>
        <name>Richard Kolkovich</name>
        
    </author>
    
        <category term="coding" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="musings" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="technology" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="freebsdcoding" label="freebsd coding" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.sigil.org/">
        <![CDATA[<p>When I built a zfs-based RAID array last year, I switched to the 64-bit build of FreeBSD.  Knowing that 64-bit software is inherently evil, I set up a 32-bit jail for coding.  At some point, I was dragged into doing UI work requiring GWT's devmode.  I took the easy way out - abandoning my jail. Comparing compile-time numbers to a new machine a colleague built yesterday, it occurred to me to try a 32-bit JDK.</p>

<p>My work revolves around our codebase and our customer's codebase.  Both are architected in a very minimalistic fashion, using ant to build.  There are a couple xjc tasks, some javac annotation preprocessing and some code generation, but the bulk of the build process is pure javac.  I'll shutup now; you're here for the numbers.  Here they are ('real' time from <a href="http://www.freebsd.org/cgi/man.cgi?time" title="time(1)">time(1)</a>):</p>

<h5>64-bit OpenJDK 6 b20, FreeBSD 8.1-STABLE</h5>

<h6>Codebase 0:</h6>

<pre><code>18.36 real
17.59 real
17.57 real
18.60 real
17.97 real
------------
(avg: 18.02)
</code></pre>

<h6>Codebase 1:</h6>

<pre><code>23.06 real 
23.37 real 
22.34 real 
22.64 real 
22.34 real 
------------
(avg: 22.75)
</code></pre>

<h5>32-bit OpenJDK 6 b20, FreeBSD 8.1-STABLE</h5>

<h6>Codebase 0:</h6>

<pre><code>12.99 real 
13.64 real 
12.77 real 
12.38 real 
12.42 real 
------------
(avg: 12.84)
</code></pre>

<h6>Codebase 1:</h6>

<pre><code>15.35 real
15.44 real
15.20 real
15.17 real
15.14 real
------------
(avg: 15.26)
</code></pre>

<p>Compiling with a 64-bit javac is 140% and 149% SLOWER than the 32-bit javac.  Roughly 1.5x!  How much time have I wasted compiling with a 64-bit javac during the last year?  I don't want to approximate that math.  If I worked in a real office, I'd <a href="http://www.xkcd.com/303">have a reason</a> for compiling with 64-bit javac.  Needless to say, JAVA_HOME has already been changed.</p>

<p>If there's a more general point to be had here, it would be that those extra bits can indeed affect performance in a human-perceivable and negative fashion.  Always be sure to evaluate your tools to
determine where you are wasting time.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Backups with ZFS and Amazon&apos;s S3</title>
    <link rel="alternate" type="text/html" href="http://blog.sigil.org/2010/03/backups-with-zfs-and-amazons-s3.html" />
    <id>tag:blog.sigil.org,2010://1.51</id>

    <published>2010-03-15T17:47:45Z</published>
    <updated>2010-09-02T23:39:23Z</updated>

    <summary>Amazon&apos;s S3 provides unlimited, relatively cheap storage, accessible via HTTP (using REST/SOAP). This is ideal for personal offsite backups. The barrier to entry is low as are the costs. Sun&apos;s ZFS turns everything you know about managing filesystems on its...</summary>
    <author>
        <name>Richard Kolkovich</name>
        
    </author>
    
        <category term="coding" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="technology" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="backup" label="backup" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="s3" label="s3" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="zfs" label="zfs" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.sigil.org/">
        <![CDATA[<p><a href="http://aws.amazon.com/s3/" title="Amazon.com">Amazon's S3</a> provides unlimited, relatively cheap storage, accessible via HTTP (using REST/SOAP).  This is ideal for personal offsite backups.  The barrier to entry is low as are the costs.</p>

<p><a href="http://en.wikipedia.org/wiki/ZFS" title="ZFS">Sun's ZFS</a> turns everything you know about managing filesystems on its head.  When I recently upgraded my storage array, I decided to load my machine with extra RAM for ZFS rather than buying a dedicated RAID card.  One of the best features of ZFS is the low-cost snapshots.  You can snapshot a filesystem, and said snapshot will not take any space on disk until the original is modified.  To put it another way, the snapshots only store the (block-level) diffs.</p>

<p>The icing on the snapshot cake is the ability to send a snapshot as a stream.  This can be piped over the network (i.e. ssh) or simply output to a file (then bzipped and uploaded to S3!).  ZFS also allows you to send a differential of two snapshots.</p>

<p>To put this into action, I have written a script which will create a snapshot, bzip it, encrypt it and upload it to S3.  I use a threshold to determine whether I should upload the full or incremental to save space/bandwidth (and time, as my cable upstream isn't that great...).  To interface with S3, I'm using <a href="http://s3tools.org/s3cmd">s3tools</a>.</p>

<p>I realized afterward that s3tools have GPG encryption built in, but I think it is simpler to use openssl and a passphrase for this use-case.</p>

<p>Here's the script:</p>

<pre><code>#!/bin/sh
# 
# Copyright 2010 Richard Kolkovich. All rights reserved.
# 
# Redistribution and use in source and binary forms, with or without modification, are
# permitted provided that the following conditions are met:
# 
#    1. Redistributions of source code must retain the above copyright notice, this list of
#       conditions and the following disclaimer.
# 
#    2. Redistributions in binary form must reproduce the above copyright notice, this list
#       of conditions and the following disclaimer in the documentation and/or other materials
#       provided with the distribution.
# 
# THIS SOFTWARE IS PROVIDED BY Richard Kolkovich ``AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Richard Kolkovich OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# 
# The views and conclusions contained in the software and documentation are those of the
# authors and should not be interpreted as representing official policies, either expressed
# or implied, of Richard Kolkovich.
# 

ZFS=/sbin/zfs
BZIP=/usr/bin/bzip2
OPENSSL=/usr/bin/openssl
MD5=/sbin/md5
S3CMD=/opt/s3cmd/s3cmd

BACKUP_DIR=/tank/backup
TEMP=$BACKUP_DIR/tmp
PASSFILE=$BACKUP_DIR/.password

if ! test -d $TEMP; then
    mkdir $TEMP
fi

# Backup a given zfs store
# arguments: name, zfs fs, threshold (0 to always use incremental), S3 bucket
backup() {

    NAME=$1
    FS=$2
    THRESHOLD=$3
    BUCKET=$4

    # incremental 
    SNAP=$FS@incremental
    SUFFIX=incremental
    $ZFS destroy $SNAP
    $ZFS snapshot $SNAP
    $ZFS send -i $FS@full $SNAP &gt; $TEMP/$NAME

    export BLOCKSIZE=1024
    SIZE=$(( `du $TEMP/$NAME | awk '{print $1}'` * 1024 ))
    if test $THRESHOLD -eq 0 || test $SIZE -gt $THRESHOLD; then

        rm $TEMP/$NAME
        $ZFS destroy $SNAP
        SNAP=$FS@full
        SUFFIX=full
        $ZFS destroy $SNAP
        $ZFS snapshot $SNAP
        $ZFS send $SNAP &gt; $TEMP/$NAME

        # a new full invalidates old incrementals
        $S3CMD del s3://$BUCKET/$NAME-incremental.bak
        $S3CMD del s3://$BUCKET/$NAME-incremental.bak.md5

    fi

    # compress
    $BZIP $TEMP/$NAME
    FILE=$TEMP/$NAME.bz2

    # encrypt snapshot
    $OPENSSL enc -aes-256-cbc -salt -pass file:$PASSFILE -in $FILE -out $FILE.bak
    rm $FILE
    FILE=$FILE.bak
    $MD5 $FILE &gt; $FILE.md5

    # send snapshot to S3
    $S3CMD put $FILE s3://$BUCKET/$NAME-$SUFFIX.bak
    $S3CMD put $FILE.md5 s3://$BUCKET/$NAME-$SUFFIX.bak.md5

    # clean up
    rm $FILE
    mv $FILE.md5 $BACKUP_DIR/$NAME.md5

}
</code></pre>

<p>And I call backup() thusly:</p>

<pre><code>backup "private" "tank/private" 52428800 "my.backup.bucket"
</code></pre>
]]>
        

    </content>
</entry>

<entry>
    <title>Done with Seagate</title>
    <link rel="alternate" type="text/html" href="http://blog.sigil.org/2009/12/done-with-seagate.html" />
    <id>tag:blog.sigil.org,2009://1.41</id>

    <published>2009-12-02T17:20:26Z</published>
    <updated>2009-12-02T18:28:02Z</updated>

    <summary>I&apos;ve been a proponent of Seagate drives since somewhere around my second or third PC build. I think my first &quot;high capacity&quot; (13.2GB) drive was a Seagate; I then went the Deathstar route with a 40GB Hitachi/IBM followed by an...</summary>
    <author>
        <name>Richard Kolkovich</name>
        
    </author>
    
        <category term="technology" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="hdd" label="hdd" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rants" label="rants" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="seagate" label="seagate" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.sigil.org/">
        <![CDATA[<p>I've been a proponent of Seagate drives since somewhere around my second or third PC build.  I think my first "high capacity" (13.2GB) drive was a Seagate; I then went the Deathstar route with a 40GB Hitachi/IBM followed by an 80 (which, apropos, arrived on the day the 40 died).  After that, I actually thought about brand before buying hard drives.  I think I stepped up with Seagate in the following order: 160GB, 320GB and dual 400GB drives.  When my 400GB mirror became full, I decided to upgrade once again.</p>

<p>If it's worth building, it's worth over-engineering the piss out of.  I decided to roll with 4x1.5TB drives in a ZFS raidz pool (RAID5-equivalent capacity).  I knew that initial shipments in Seagate's 1.5TB 7200.11 series had firmware issues aplenty; these had been resolved by the time I decided to build this array (early August 2009).  I was doubly re-assured by the drive's placement on the Maximum PC <a href="http://www.maximumpc.com/best-of-the-best?page=1 "Maximum PC"">Best of the Best</a> list (where it reigned, I believe, until the recent arrival of the WD 2TB Caviar Black).  I pulled the trigger on August 4.</p>

<p>After basking in the glow of 4.5 (4.0, effective)TB of empty space and the awesomeness that is zfs, I moved the contents of my 400GB array over.  Everything went as smoothly as could be expected.  About two days after this, however, I awoke to a S.M.A.R.T. error on one drive accompanied by its subsequent detachment from my system.  I quickly started the RMA process at Newegg only to have a second drive begin exhibiting the Click of Death (before I had shipped the other drive back).  ZFS's raidz can tolerate one drive failure, so I immediately shut my machine down to stymie the impending doom of the second failing drive.  I amended my RMA to be a refund for two drives and ordered two new drives with expedited shipping (makeshift advanced replacement).  With my array once again happy, I continued on my merry way.</p>

<p>Before October's passing, it decided to leave me a gift: the dreaded Click of Death had begun on another drive.  Being out of Newegg's 30-day zone, I RMA'd the drive through Seagate.  The drive was still accessible, but since access was painful, I shut my machine down.  I paid the $19.99 for an advanced replacement and return shipping label, reslivered the new drive into the array and was off to the races (again).  On a side note here, I decided that I would sell my (original) Raptor when I built this array, assuming it would be fast enough for OS/applications.</p>

<p>Fast-forward to yesterday.  December has given me an early Christmas present: ANOTHER FAILING DRIVE!  As I wondered why my machine was running sporadically slow yesterday, I discovered while refilling my coffee once that the Click of Death had once again visited me (my new headphones are designed to block out noise, so I didn't hear it until taking them off...).  I did my due diligence and ran the long test provided by Seatools; this is just a bootable S.M.A.R.T. agent.  The long test is the same as the S.M.A.R.T. long offline test (which would not complete using smartmontools, as the drive would disconnect after extremely long seek delays).  This morning, I called Seagate Warranty Support, determined to at the very least not pay $19.99 for an advanced replacement AGAIN.</p>

<p>I initially suggested to the customer service representative that Seagate refund my money for all four drives.  I would be much happier buying four new drives from a different manufacturer, such as the WD Caviar Black.  Obviously, this suggestion was dismissed.  I battled this rep for a good 20 minutes to get the advanced replacement with no charge.  Upon requesting a supervisor, she told me her supervisor was on another call but suggested I talk to tech support before they could approve my request.  I wasted time talking to a helpful tech support rep. who agreed that any clicking warrants drive replacement.  He made his notes on my account and transferred me back to customer service.</p>

<p>I was now speaking to a different rep. than I had initially.  She read the notes on my account, again presented my two options (I ship, they ship or advanced replacement) without waiving the $19.99 fee.  She told me she could not approve that, so I waited in the queue for her supervisor.</p>

<p>The supervisor was pleasant but worthless.  He danced to the same tune - they could not send me an advanced replacement for free.  I don't typically let my emotions get the better of me, so I was cool-headed but forceful with him.  At this point, I didn't care about Seagate's obligations or policies.  I was a loyal customer who had experienced a 57% failure rate in four months of ownership of a drive with an advertised annual failure rate of 0.34%; I wanted him to go out of his way to make me happy.  The best he said he could do was to send me a shipping label to ship my drive in, free of charge.  That would result in at least a week turnaround which is, to me, unacceptable.</p>

<p>Once I had become exhausted with attempting to garner a concession based on sympathy for my (hopefully) unusual experience with faulty drives, I turned to logic.  I asked this supervisor what the difference was between giving me the advanced replacement for free and covering my shipping costs.  He stated the $19.99 was their cost for the packaging materials and shipping via UPS, and that's "just how it is".  I asked him to explain, logically, how it could be any different.  He's offering to cover shipping both ways.  They are going to provide their own packaging materials even if I send my drive first.  He did not refute these points, but he still could not explain why the options were really any different cost-wise.</p>

<p>They aren't.  The only difference between these options is shipping order.  In both cases, Seagate was going to pay for shipping from them to me, shipping from me to them and packaging materials for the replacement drive.  As this gentleman did not have a supervisor, I am now waiting 24-48h for the department he reports to (Seagate Global Customer Service or something...) to call me back.</p>

<p>I would also like to note that Newegg's packaging and UPS's shipping are suspect here.  I was fairly pleased with the packaging - each drive was individually wrapped in a copious amount of bubble wrap and the box was filled with packaging peanuts, but various sources on the Interweb swear against Newegg when it comes to magnetic hard drives.  I've seen this same dogma applied to UPS shipping, too.  In the future, I will attempt to avoid both these potential pitfalls.  My friend and colleague <a href="http://blog.stephenashelton.com" title="Stephen Shelton">Stephen Shelton</a> ordered four of the same drive from Dell a week before I did.  They came in foam packaging designed for four hard drives (just like the first replacement I received from Seagate); he has had no problems with his drives.  At the same time, "normal" shipping abuse should be considered by manufacturers - how else are these drives going to get to end users?</p>

<p>I'm beyond the realm of logic now.  I've spent more time than the $19.99 is worth between being on the phone and not having my workstation running.  Now, I fight a battle of principle.  I was, even with this failure, willing to place blame at Newegg and/or UPS.  Seagate has thus far shown me they don't care enough about retaining me as a customer and proponent of their products to concede a bullshit $19.99 fee.  For this, they will lose my business in the future.</p>

<p></rant></p>
]]>
        

    </content>
</entry>

<entry>
    <title>A Strange Language</title>
    <link rel="alternate" type="text/html" href="http://blog.sigil.org/2009/11/a-strange-language.html" />
    <id>tag:blog.sigil.org,2009://1.40</id>

    <published>2009-11-30T04:56:30Z</published>
    <updated>2009-11-30T05:06:58Z</updated>

    <summary>While scanning and shredding all manner of paper record I have accumulated over the years, I stumbled across a poem given to me by an English teacher in middle or high school. There is no author on the print I...</summary>
    <author>
        <name>Richard Kolkovich</name>
        
    </author>
    
        <category term="musings" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="english" label="English" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="humor" label="humor" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="miscellany" label="miscellany" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.sigil.org/">
        <![CDATA[<p>While scanning and shredding all manner of paper record I have accumulated over the years, I stumbled across a poem given to me by an English teacher in middle or high school.  There is no author on the print I have, and I could not find the poem online anywhere.  To preserve its humor for eternity, here it is:</p>

<blockquote>
  <p>A lawless language is English;<br />
The plural of box is boxes,<br />
But more than one ox is not oxes.<br />
One fowl's a goose, more are two geese,<br />
But more than one mouse is certainly not meece.<br />
On the contrary for mouse, the plural is mice,<br />
While the plural for house is never hice!<br />
If more than one man is always men,<br />
The plural of pan should then be pen?<br />
One may be that, and two may be those,<br />
But the plural of hat is surely not hose!<br />
Masculine pronouns are he, his and him.<br />
Imagine the feminines she, shis and shim!<br />
The English language, I think you'll agree,<br />
Is as strange a language as ever could be.</p>
</blockquote>

<p>If anyone happens to know the proper author of this, please let me know.  Otherwise, enjoy what I feel is an accurate and humorous critique of the English language.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Mark As Read with maildrop</title>
    <link rel="alternate" type="text/html" href="http://blog.sigil.org/2009/11/mark-as-read-with-maildrop.html" />
    <id>tag:blog.sigil.org,2009://1.39</id>

    <published>2009-11-23T20:39:20Z</published>
    <updated>2009-11-23T20:48:29Z</updated>

    <summary>I run my own mail server using maildrop to deliver to multiple virtual LDAP users. My personal e-mail is sorted into many folders on the server as it comes in. To reduce my e-mail maintenance overhead, I decided to mark...</summary>
    <author>
        <name>Richard Kolkovich</name>
        
    </author>
    
    <category term="it" label="it" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mail" label="mail" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="maildrop" label="maildrop" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="scripting" label="scripting" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.sigil.org/">
        <![CDATA[<p>I run my own mail server using maildrop to deliver to multiple virtual LDAP users.  My personal e-mail is sorted into many folders on the server as it comes in.  To reduce my e-mail maintenance overhead, I decided to mark messages as read automatically in certain folders.  This is useful for low-priority e-mails such as advertisements, coupons, etc.; I want to view these when I need them - not when I receive them.</p>

<p>It turns out that maildrop doesn't have any facilities built in to do this automatically.  It does, however, provide you with the tools to roll your own:</p>

<pre><code>cc "${MAILDIR}.offers/"
`for x in ls ${MAILDIR}/.offers/new/*; do mv $x ${MAILDIR}/.offers/cur/${x##*/}:2,S; done`
to "/dev/null"
</code></pre>

<p>Since the 'to' directive exits immediately after execution, you must cc then move.  Delivering to /dev/null then stops execution of the filter.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Fun with Asterisk</title>
    <link rel="alternate" type="text/html" href="http://blog.sigil.org/2009/11/fun-with-asterisk.html" />
    <id>tag:blog.sigil.org,2009://1.37</id>

    <published>2009-11-09T15:39:45Z</published>
    <updated>2009-11-09T22:14:45Z</updated>

    <summary>I spend approximately 10-15% of my time wearing the IT hat for both my company and the company whom we are currently consulting. We are running FreePBX for both companies&apos; phone systems. Our setups are relatively simplistic, so I have...</summary>
    <author>
        <name>Richard Kolkovich</name>
        
    </author>
    
        <category term="technology" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="asterisk" label="asterisk" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="freepbx" label="freepbx" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="it" label="it" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="voip" label="voip" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.sigil.org/">
        <![CDATA[<p>I spend approximately 10-15% of my time wearing the IT hat for both my company and the company whom we are currently consulting.  We are running FreePBX for both companies' phone systems.  Our setups are relatively simplistic, so I have had little problems managing everything.  The first real hurdle I ran into was the inability of Asterisk to allow the same extension to log on from multiple devices.  I'm pretty sure this is not a SIP restriction, but I may be wrong.  Either way, my goal is not to bash FreePBX or Asterisk.</p>

<p>Initially, I over-engineered a solution to this problem while simultaneously making it more difficult to administer and use.  The setup required a ring group for each user's extension.  This ring group contained an extension for each phone the user needed.  To have a common voicemail box, there was yet another extension for voicemail.  Convoluted?  Yes, it was.  It did work, however, for our use-case.  We have three employees, and only one of us needed a multi-homed extension at the time.  I set it up and forgot about it.</p>

<p>More recently, I set up another FreePBX system for our customer.  At this point, I discovered the Follow-Me module.  The original point of using this module was to allow calls to ring through a user's mobile phone.  I also adapted my previous abomination to use Follow-Me, making for a much simpler setup.  It was simpler, yes, but it was still a bit convoluted.</p>

<p>This system worked well until I was tasked with on-demand call recording.  I determined how to enable this in a jiffy with some quick Googling.  The problem?  Access to these recordings was tied to the extension that initiated the recording.</p>

<p>To solve this, I re-visited "deviceanduser" mode in FreePBX.  This is the route I should have taken in my earlier ventures - it decouples devices and users.  A device can register via SIP to the server, and a user represents an extension and voicemail box.  This can be enabled by setting AMPEXTENSIONS=deviceanduser in /etc/amportal.conf.  Be sure to comment out the existing setting.</p>

<p>To enable on-demand recording, add 'w' to the dial command string and 'W' to the outbound dial command string.  These settings are found in General Settings in the FreePBX UI.</p>

<p>Add the following to /etc/asterisk/features_general_custom.conf:</p>

<pre><code>featuredigittimeout=3000
courtesytone=beep
</code></pre>

<p>This makes sure the PBX will register your keypress (waiting for up to 3 seconds) and beeps to confirm.  Feel free to disable the beep.</p>

<p>To enable access to the recordings from the ARI:</p>

<pre><code>ln -s /var/spool/asterisk/monitor/ /var/www/html/recordings/monitor
yum install sox
</code></pre>

<p>Finally, tie everything to the user.  For every device a user has, add the user's extension in the 'accountcode' field on the device.</p>

<p>Edit /var/www/html/recordings/modules/callmonitor.module.  Add:</p>

<pre><code>OR accountcode = '" . $_SESSION['ari_user']['extension'] . "'
</code></pre>

<p>After the line:</p>

<pre><code>OR dst = '" . $_SESSION['ari_user']['extension'] . "'
</code></pre>

<p>On my FreePBX, this was at line 614.</p>

<p>Now, all calls recorded from any device for a given user will show up in that user's ARI for download.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Goals</title>
    <link rel="alternate" type="text/html" href="http://blog.sigil.org/2009/08/goals.html" />
    <id>tag:blog.sigil.org,2009://1.26</id>

    <published>2009-08-14T07:10:35Z</published>
    <updated>2009-08-14T07:45:03Z</updated>

    <summary>My last post promised talk of goals, and I had fully expected to write this post much sooner. Appropriately enough, one of my goals just so happens to involve blogging. While the idea may have been inspired by the beginning...</summary>
    <author>
        <name>Richard Kolkovich</name>
        
    </author>
    
    <category term="blog" label="blog" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="meta" label="meta" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.sigil.org/">
        <![CDATA[<p>My last post promised talk of goals, and I had fully expected to write this post much sooner.  Appropriately enough, one of my goals just so happens to involve blogging.  While the idea may have been inspired by the beginning of a new year, I don't quite believe in New Year's Resolutions.  I have made my fair share of these self-promises, and I don't think I've ever followed through on them.  A large part of that can be attributed to lack of a plan of attack.  Simply stating that I want to do something only gets me so far.  It is important to have your goals clearly laid out with the steps you plan to take to achieve them.  It is also important to have a realistic timeline for achieving your goals.  This applies not only to duration but also to the starting point.</p>

<p>The number of books I've read since my last English class is appallingly low.  I enjoy reading, and there are countless classic works of literature in the world I have yet to enjoy.  I have been doing a good job keeping up with my subscription to Scientific American as well as keeping my RSS subscriptions in check, but I have barely touched the world of fiction or a technical book in quite some time.  I don't enjoy reading multiple books at once, so I'll keep this goal to making some progress each week on one book for enjoyment and one technical book.  </p>

<p>My second consumption-related goal is to pick up where I left off with my study of mathematics.  I've always enjoyed math, and I would have liked to double-major (or at least minor) in it.  My situation and opportunities dictated that I couldn't do this, but that does not make me love math any less.  I picked up <a href="http://www.amazon.com/gp/product/0691118809?ie=UTF8&amp;tag=sigilorg-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0691118809" title="The Princeton Companion to Mathematics">The Princeton Companion to Mathematics</a> for a song when joining the SciAm book club, so this will be my starting point.</p>

<p>There is a lot of cool research being done by people with different skillsets than me.  The best of this research shows up at <a href="http://www.ted.com" title="TED">TED</a>.  I have some TED talks downloaded already, but I'd like to make an effort to actually watch them.  Watching at least one TED talk each month will suffice for now (some of them are quite lengthy...).</p>

<p>I love to play chess, but I've never really had a large pool of readily-available opponents.  There is an upper bound on your skill acquisition when playing the same opponent(s) repeatedly.  Luckily, there is <a href="http://www.gameknot.com" title="GameKnot">GameKnot</a>.  I plan to keep at least one chess match going on GameKnot at all times.  Want to play?  Find sarumont and challenge me!</p>

<p>I'd also love to learn Go.  I know the basic rules, but that barely gets your foot in the door.  The rules are simple, and the strategy is endlessly complex.  I don't feel I can allocate any time to Go presently, but it will be on the back burner.  I feel like Go and chess can both help to hone my critical thinking.</p>

<p>I think bloggers can be separated into two camps: those who keep a schedule and those who do not.  I sit firmly in the "those who do not" category, and I agree with this mentality.  Keeping to a schedule will inevitably lead to more quantity and less quality.  I want to blog more and regularly, but I do not want to sacrifice quality, decreasing the already abysmal SNR of the Internet.  I think the solution here is to strive for a reasonable schedule.  What's reasonable?  For me, at least once per month should do.  I would like to think that, in ideal circumstances, my non-blog contributions to the world are of greater value than the other way around.</p>

<p>That being said, I would like to have a blog which is a neutral force in the world, at the very least.  My self-improvement motivations behind blogging are to improve my writing and vocabulary skills while purging certain thoughts and ideas from my overly full mind.  Back to striving for a schedule, I think the big challenge is becoming your own editor.  When you can say to yourself, "I don't have any new, interesting or useful ideas to share this month," you can preserve a high SNR.  To these ends, I plan to try to post at least monthly by taking on a project of some sort which <strong><em>could</em></strong> result in a useful post at the end of said month.</p>

<p>My primary function in the world is that of a software developer.  I happen to enjoy what I do, but I have not had the time or energy in the past years to <a href="http://www.codinghorror.com/blog/archives/001236.html" title="Sharpening the Saw">sharpen my saw</a> in my free time.  Too many things interest me in the computing world, so I have no lack of interest.  Working at a start-up does, however, drain your energy (both physical and creative).  I want to start siphoning off a bit of that energy into writing code that is in no way related to work.  I would prefer this code be using different tools and a different language.  This will help me discover new tools and methodologies which I should be able to bring back to work, enriching our codebase with renewed vigor and creativity.</p>

<p>I know many geeks who share the problem I have:  too many interests and/or hobbies.  I enjoy cooking, baking bread, roasting/drinking coffee, brewing/drinking beer, cycling, and almost everything about computing.  Even before my lovely wife, there were not enough hours in the day to devote to all these hobbies.  I'm now roasting my own coffee beans, brewing my own beer, baking my own bread and cooking most meals.  These hobbies detract precious time from computing, and I feel that is where my energies are best spent when it comes to paying the bills.</p>

<p>With the exception of my most recent (brewing beer), these tasks have become well-learned and routine to a point.  The next step is one that, I think, many people do not take: optimization.  With my hobbies, there are two forms of optimization: optimizing the task itself and optimizing the task's integration into life.  I think that optimizing the integration promises the better ROI, so I will be focusing on that shave time away from these hobbies to apply to my goals.</p>

<p>Now this <a href="http://www.codinghorror.com/blog/archives/001282.html" title="Meta is Murder">evil meta-post</a> is out of the way, it's time to move on to productivity.  Until next time.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>New year, new problems, new toys</title>
    <link rel="alternate" type="text/html" href="http://blog.sigil.org/2009/01/new-year-new-problems-new-toys.html" />
    <id>tag:blog.sigil.org,2009://1.6</id>

    <published>2009-01-16T04:27:42Z</published>
    <updated>2009-01-16T05:08:14Z</updated>

    <summary>I was recently in Dallas to assist in an IT weekend. My company is in the process of making ourselves as agile as possible. This process involves liquidating everything possible - including the office. We&apos;re getting rid of our primary...</summary>
    <author>
        <name>Richard Kolkovich</name>
        
    </author>
    
        <category term="projects" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="blog" label="blog" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="goals" label="goals" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="life" label="life" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="technology" label="technology" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.sigil.org/">
        <![CDATA[<p>I was recently in Dallas to assist in an IT weekend.  My company is in the process of making ourselves as agile as possible.  This process involves liquidating everything possible - including the office.  We're getting rid of our primary data center (and moving our customers to their own hosting) and making our secondary data center our only - and utilizing it for corporate IT.</p>

<p>This past weekend, we trekked to the data center and proceeded to give our rack a cleaning it so desperately needed.  Now, everything is organized quite nicely.  Part of this restructure was to be the movement of personal servers to virtual machines.  I had started building my VM, but we were not planning on migrating just yet.  When I hooked my server back in, it did not boot.  I also did not have a CT/2 cable with me, so I took the server out.  I got the VM (and my server) up and running the next day.  Lesson learned: NEVER buy a server with a proprietary KVM cable.</p>

<p>Tuesday night, I decided to reboot my desktop to remove the region lock on my DVD drive.  Some friends of mine had a British DVD they could not view, so I wanted to get at it.  My desktop decided it did not want to power back on.  I had seen this issue a few times before, but it has passed quickly in the past.  This time I was not so fortunate.</p>

<p>Wednesday morning, my machine is still not booting.  I do a bit more research on the issue and discover a Supermicro FAQ describing this issue.  Supermicro's response?  They only support Supermicro power supplies powering their motherboards.  Wonderful.  I had been talking about an upgrade anyway, so I have fresh parts from Newegg arriving tomorrow...</p>

<p>Today I read <a href="http://www.joelonsoftware.com/items/2009/01/08.html">a post on Joel on Software</a> regarding goals.  I've felt the need for setting some goals recently.  Moving to a home office has been great, but I have felt like I am wasting a lot of time.  I've really been missing goals.  I, therefore, plan on setting some goals for myself for the year and beyond.  I've scribbled down a few things which have come to mind, but I want to put a decent amount of effort into it.</p>

<p>I look forward to building my new box tomorrow - unboxing photos should be up this weekend - and orienting myself toward a better me this year.  Stick around; it should be fun.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Dinner: Chicken Fettucine Alfredo</title>
    <link rel="alternate" type="text/html" href="http://blog.sigil.org/2008/12/dinner-chicken-fettucine-alfredo.html" />
    <id>tag:blog.sigil.org,2008://1.5</id>

    <published>2008-12-04T05:11:06Z</published>
    <updated>2009-01-16T05:07:51Z</updated>

    <summary>I was forced into Williams-Sonoma last year, as my wife got a gift card for me for Christmas. I had always avoided the store like a dieter avoids candy; I knew I could not be trusted in such a place...</summary>
    <author>
        <name>Richard Kolkovich</name>
        
    </author>
    
        <category term="food" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="cooking" label="cooking" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="italian" label="italian" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="pasta" label="pasta" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.sigil.org/">
        <![CDATA[<p>I was forced into Williams-Sonoma last year, as my wife got a gift card for me for Christmas. I had always avoided the store like a dieter avoids candy; I knew I could not be trusted in such a place (I have, however, restrained myself every time I've been since). With that gift card, I purchased a pasta machine. We've been making fresh pasta about 60-70% of the time since.</p>

<p>The instructions for the pasta machine noted that Semolina flour was traditionally used for pasta making. Semolina is made from durum wheat. The flour itself is a bit coarse (compared to white flour) and hard. This makes for a hard time kneading. The last time I made pasta, I was EXTREMELY frustrated, as the 2 servings took me about an hour and a half to make. Last night, I took matters into my own hands. The pasta pictured was made with a 1:1 ratio of semolina to white flour. That made the dough MUCH more pliable and easy to work with. The recipe I used was:</p>

<blockquote>
  <ul>
<li>1c semolina flour</li>
<li>1c white flour</li>
<li>2 eggs, beaten</li>
<li>1t fine sea salt</li>
<li>2T extra virgin olive oil</li>
<li>water, as needed</li>
</ul>

<p>Mix dry ingredients and form a well. Pour beaten eggs into the well and work into the dry ingredients. Work olive oil in. Continue to knead, adding water to get to a good consistency (it will be a bit sticky). Follow your pasta machine's instructions for making the pasta. No pasta machine? Roll out to the desired thickness and use a knife to cut the desired width.</p>
</blockquote>

<p>Next time, I'll revise that a bit and convert the inaccurate volumetric measurements to weights. The yield was just under a pound. I cooked 9oz., though 8 would probably have sufficed for the two of us.</p>

<p>I've been working on my alfredo for awhile, and I just started writing everything down within the past couple months. I have a Moleskine dedicated to the kitchen, and I take note of everything I create, keeping track of successes, failures and constructive criticism. I'm pretty happy with my basic alfredo:</p>

<blockquote>
  <ul>
<li>1c heavy cream</li>
<li>2.5T butter</li>
<li>3oz. grated Parmesan (reggiano, if you can)</li>
<li>1.25oz. grated Asiago</li>
<li>a couple drops of extra virgin olive oil</li>
<li>a dash of salt and white pepper (be careful with the salt - Parmesan is a salty cheese)</li>
</ul>

<p>Melt the butter and olive oil over medium-low to medium heat. Add the cream and bring to a simmer. Whisking constantly, start adding the cheeses a little at a time. Add more or less of each to taste. Whisk constantly until a silky consistency is reached.</p>
</blockquote>

<p>The chicken? I just sliced a boneless, skinless breast and added salt and pepper. I then pan-seared it in olive oil in an iron skillet over medium to medium-high heat.</p>

<p>It's garnished with some dried parsley and served with some homemade focaccia au levain.</p>

<p><img src="http://www.sigil.org/images/fettucine.png" alt="Fettucine" title="" /></p>
]]>
        

    </content>
</entry>

<entry>
    <title>When IT goes awry</title>
    <link rel="alternate" type="text/html" href="http://blog.sigil.org/2008/11/when-it-goes-awry.html" />
    <id>tag:blog.sigil.org,2008://1.4</id>

    <published>2008-11-12T04:06:40Z</published>
    <updated>2009-01-16T05:07:21Z</updated>

    <summary>Information technology (IT) is a field born of increasing complexity and choice in computer technology. Before computer science was considered a discipline, physicists and mathematicians programmed computers. Before there was IT, computer scientists managed hardware and software; they even built...</summary>
    <author>
        <name>Richard Kolkovich</name>
        
    </author>
    
        <category term="technology" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="it" label="it" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rants" label="rants" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="technology" label="technology" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.sigil.org/">
        <![CDATA[<p>Information technology (IT) is a field born of increasing complexity and choice in computer technology.  Before computer science was considered a discipline, physicists and mathematicians programmed computers.  Before there was IT, computer scientists managed hardware and software; they even built their own hardware at some point.  Now, IT is a loosely defined discipline which ends up, in the business world, governing and managing choices having to do with technology.<br /><br />
According to Merriam-Webster, technology is <i>the practical application of knowledge especially in a particular area</i>.  Throughout history, technology has been incorporated into society as its usefulness becomes apparent.  The plow made farming much easier, so farmers began using it.  The plow evolved, becoming better with each iteration.  The plow is relatively simple next to a computer, but its path to ubiquity is one the computer and its ilk are following.<br /><br />
Following the plow example, who is focused on the plow?  The farmer most certainly is not.  As long as the plow does its job, the farmer could care less about it.  His goal is to produce as much as he can with the highest possible efficiency.  The plow is a tool.  It enables him to farm and increases his efficiency, thus providing value.  The farmer's customers don't care about the plow.  They want to buy or barter food from the farmer.  How he produced the food is of no concern to them.  This leaves the plow manufacturer to care about the plow.  The plow manufacturer thrives by selling plows; she cares very much about the plow.  But does she use plows to make other plows?<br /><br />
When a company reaches a certain size, the task of managing technology requires a dedicated resource; the IT department is born.  This size varies from company to company, depending on that company's specific needs, but the underlying trend is there.  We'll assume here that the company in question is Spacely Sprockets, so they do not, in fact, sell any form of IT-related services.</p>

<p>What is the role of technology at Spacely Sprockets?  It is a tool.  Technology enables them to more efficiently and effectively produce sprockets.  In this case, the best IT department is an IT department who is never seen or heard from.  Ideally, Spacely's IT department has configured their systems to be completely invisible.  Computers never crash, phones never disconnect and printers never make archaic requests such as "PC Load Letter".  Sound too good to be true?  It is.  Though this level of perfection can probably never be attained, it can be approached.</p>

<p>On this sliding scale of IT perfection, there is a point where IT becomes <b>inhibitory</b> of the company's business.  I fear many companies in the world are at or below this point.  Why?  I believe incompetence and arrogance account for most cases.</p>

<p>Incompetence (or its brother, ignorance) can cause solutions to be implemented poorly or not at all.  Part of the job of an IT department is to recognize where technology could improve business in any way.  If no one in the IT department is able to recognize the need for a given technology, it's unlikely anyone will.  These flaws can also yield half-baked policies which end up inhibiting production.</p>

<p>Arrogance is the lower volume offense here, but it can be just as damaging.  One case of this type of behavior is the technique of building a fortress.  Ever known someone whose job security was that no one knew how to manage what they had built?  That's a fortress.  Did this person build the fortress with the sole intention of keeping people out?  Not necessarily.  There are circumstances where some constrained resource (people or time, usually) can limit transparency.  I'd say these situations should at least yield a wiki page in the corporate intranet about the system (don't have a corporate intranet/wiki?  see the previous paragraph...).  Arrogance, in some form, can once again yield inhibitory policies.  These are typically knowingly inhibitory, meant to draw attention to the power held by the IT department.</p>

<p>What can be done about these problems?  Well, to some extent, these are character flaws.  Those in charge of hiring can screen the extreme versions of these people very quickly.  Once they are in power, though, those in charge of them must have the ability and willingness to deal with potential problems as they are identified.  The worst case scenario has an arrogant IT department gone rampant with a CEO who will not lay down the law.  IT is just another department.  If your sales team isn't producing, you take action.  If your IT department isn't producing, you need to take action.  IT is an integral part of your business but should not control it.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Hello, world</title>
    <link rel="alternate" type="text/html" href="http://blog.sigil.org/2008/10/hello-world.html" />
    <id>tag:blog.sigil.org,2008://1.3</id>

    <published>2008-10-27T19:27:00Z</published>
    <updated>2009-01-16T05:08:40Z</updated>

    <summary><![CDATA[The signal-to-noise ratio of the Internet at large is far too low already, so I do not plan on wasting my time and yours with useless regurgitation.&nbsp; The topics I plan to discuss (in order of frequency/importance to me/knowledge) are:programming...]]></summary>
    <author>
        <name>Richard Kolkovich</name>
        
    </author>
    
        <category term="blog" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="blog" label="blog" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.sigil.org/">
        <![CDATA[<p>The signal-to-noise ratio of the Internet at large is far too low already, so I do not plan on wasting my time and yours with useless regurgitation.&nbsp; The topics I plan to discuss (in order of frequency/importance to me/knowledge) are:<br /><br /></p><ul><li>programming (general and project-based)</li><li>software/technology in general</li><li>baking (breads, mainly)</li><li>cooking</li><li>aquaponics (indoor, small-scale)</li></ul><p><br />This list is not exhaustive by any means.&nbsp; My overarching goal here is to give something useful to the world while growing personally and professionally (and having more to give back as a result...).&nbsp; One very important thing I've learned while writing software is the requirements always change as you get to know your problem space.&nbsp; I know very little about blogging, so I am certain my habits will adapt as I get into this.&nbsp; Thanks for visiting. </p>]]>
        
    </content>
</entry>

</feed>

