<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>19clicks &#187; work</title>
	<atom:link href="http://blog.19clicks.com/articles/category/work/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.19clicks.com</link>
	<description></description>
	<lastBuildDate>Fri, 06 Mar 2009 23:08:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>MailChimp Merge Tag Reference</title>
		<link>http://blog.19clicks.com/2009/03/06/mailchimp-merge-tag-reference/</link>
		<comments>http://blog.19clicks.com/2009/03/06/mailchimp-merge-tag-reference/#comments</comments>
		<pubDate>Fri, 06 Mar 2009 19:08:36 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.19clicks.com/?p=183</guid>
		<description><![CDATA[Let's face it, the documentation on the MailChimp site is paltry, at best.  I'm going to add things here as I come across them.

First up, full documentation for the DATE merge tag.]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s face it, the documentation on the MailChimp site is paltry, at best.  I&#8217;m going to add things here as I come across them.</p>
<p>First up, full documentation for the DATE merge tag.</p>
<p><strong>Usage</strong><br />
*|DATE:FORMAT|*<br />
<strong>Format Options</strong><br />
See the <a href="http://us2.php.net/manual/en/function.date.php">PHP Documentation</a> for all the character codes you can use in the FORMAT string. (Thanks for the tip, Chad!)<br />
<strong>Examples</strong><br />
*|DATE:l F jS, Y|* = Monday January 15th, 2009<br />
*|DATE:m/d/y|* = 01/05/09<br />
*|DATE:D j M Y H:ia|* = Mon 15 Jan 2009 05:53pm</p>
<p>Please let me know in the comments if you discover anything is not as documented here (or figure out anything that I haven&#8217;t!)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.19clicks.com/2009/03/06/mailchimp-merge-tag-reference/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>$30 Google Calendar (for My Domain) to Blackberry Sync, Over the Air</title>
		<link>http://blog.19clicks.com/2007/03/22/20-google-calendar-for-my-domain-to-blackberry-sync-over-the-air/</link>
		<comments>http://blog.19clicks.com/2007/03/22/20-google-calendar-for-my-domain-to-blackberry-sync-over-the-air/#comments</comments>
		<pubDate>Thu, 22 Mar 2007 21:00:00 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.19clicks.com/2007/03/22/20-google-calendar-for-my-domain-to-blackberry-sync-over-the-air/</guid>
		<description><![CDATA[They said it was impossible, (and I’m pretty sure that for $0, it is impossible).  Google Calendar (specifically, the Google Apps for My Domain version) synced over the air to a Blackberry.
I’m here to tell you the good news.  There’s hope, and it comes with a 15 day free trial.
First of all: it [...]]]></description>
			<content:encoded><![CDATA[<p>They said it was impossible, (and I’m pretty sure that for $0, it <strong>is</strong> impossible).  Google Calendar (specifically, the Google Apps for My Domain version) synced over the air to a Blackberry.</p>
<p>I’m here to tell you the good news.  There’s hope, and it comes with a 15 day free trial.</p>
<p>First of all: it would be remiss of me not to mention <a href="http://www.gcalsync.com">GCalSync</a>—an up-and-coming open source solution that lets you sync Google Calendars to Blackberries <span class="caps">OTA</span>.  However, wonderful as GCalSync is, it’s a tad lacking in the Google Apps for my Domain arena (it won’t let me use my GApps login directly, and attempting to download calendar data from my “private calendar” <span class="caps">URL</span> results in all of my events showing up on December 31st, 1969.)  That said, although I have not myself attempted it, I hear it downloads events from regular Google Calendars quite well.</p>
<p>But on to the main event: syncing a calendar (or, for an extra $40, <strong>calendars</strong>) to/from Google Apps for My Domain to your trusty Crackberry.</p>
<p>To achieve this mammoth feat, you will need to:</p>
<p>1) Set up an account with <a href="http://www.goosync.com">GooSync</a>.</p>
<p>2) Tell them your Google account information.  You will not be able to use their (allegedly) magical “auto-setup” utility, or their “you don’t have to tell us your password” Google Calendar authentication.  This is the one thing that’s a little chancy about this operation—you do actually have to give GooSync your password to Google (choose the “I want to use password authentication” checkbox.)  Therefore, you should likely not use the same password for Google that you use for your bank account, or the nuclear missile silo.  Although if you ask me, any company that’s based in Wolverhampton Science Park is bound to be trustworthy.</p>
<p>3) Visit <a href="http://www.nexthaus.com/blackberry.html">Nexthaus</a> using your Blackberry’s default web browser and download and install their excellent SyncJE client software (http://www.nexthaus.com/bb/syncjebb.jad.)</p>
<p>4) Open the SyncJE client, select “Settings”, and enter:</p>
<ul>
<li>Server <span class="caps">URL</span>: http://www.goosync.com/sync/sync.aspx</li>
<li>User Name: [your goosync username]</li>
<li>Password: [your goosync password]</li>
<li>Check “Calendar” and set: Foldername: Calendar</li>
</ul>
<p>5) Hit Save.</p>
<p>6) Select “Start Sync.”  When it completes, you should be able to see your Google Calendar events in your Blackberry calendar!</p>
<p>7) (Optional) Pay Nexthaus $29.95 to get a license so that you can sync for more than 15 days.</p>
<p>8) (Optional) Sync multiple calendars by upgrading your GooSync account (~$40 extra).  Once you’ve upgraded, go to the “My Device” screen in your GooSync web console, and click the “Change…” link to the right of “Sharing 1 Calendar.”  GooSync automagically loads all of the calendars you have set up as Shared Calendars in your Google Calendar account.  It lets you name them, and events from that calendar will show up prepended with [calendarname] in your Blackberry calendar.</p>
<p>As you may have discerned, I am mightily excited about this.  Now all I need to make Google Apps truly mobile is a Contacts sync (which GooSync says is in the works).</p>
<p>Note about my setup: I did this on a Blackberry 7130e on Verizon&#8217;s network.  To get it to work on a co-worker&#8217;s Blackberry Pearl with T-Mobile, I had  to configure their TCP to use T-Mobile&#8217;s APN: Go to Options &gt; Advanced Options &gt; TCP, and set APN to wap.voicestream.com.</p>
<p>For other networks, search for &#8220;[network name] WAP APN&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.19clicks.com/2007/03/22/20-google-calendar-for-my-domain-to-blackberry-sync-over-the-air/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>How To Set Up Java, Eclipse, Tomcat, Ant, WTP, Subversion, Subclipse, MySQL, Spring, and GreenUML in OS X (10.4)</title>
		<link>http://blog.19clicks.com/2007/02/07/how-to-set-up-eclipse-3-tomcat-5-5-ant-wtp-subversion-subclipse-mysql-spring-and-greenuml-in-os-x-10-4/</link>
		<comments>http://blog.19clicks.com/2007/02/07/how-to-set-up-eclipse-3-tomcat-5-5-ant-wtp-subversion-subclipse-mysql-spring-and-greenuml-in-os-x-10-4/#comments</comments>
		<pubDate>Wed, 07 Feb 2007 17:25:00 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.19clicks.com/2007/02/07/how-to-set-up-eclipse-3-tomcat-5-5-ant-wtp-subversion-subclipse-mysql-spring-and-greenuml-in-os-x-10-4/</guid>
		<description><![CDATA[This is how I pulled together my Java dev environment in Tiger.  I started off pretty clueless, and what guidance I could find via Google was fragmented and/or out of date.  So here’s my setup.  If any of you experts out there have suggestions / corrections, please send ‘em my way.
For reference, [...]]]></description>
			<content:encoded><![CDATA[<p>This is how I pulled together my Java dev environment in Tiger.  I started off pretty clueless, and what guidance I could find via Google was fragmented and/or out of date.  So here’s my setup.  If any of you experts out there have suggestions / corrections, please send ‘em my way.</p>
<p>For reference, here are the versions I installed:</p>
<ul>
<li>Java 1.5</li>
<li>Eclipse 3.2</li>
<li>Tomcat 5.5</li>
<li>Ant 1.7</li>
<li><span class="caps">WTP 1</span>.5.2</li>
<li>Subversion 1.3</li>
<li>Subclipse 1.0.5</li>
<li>MySQL 5</li>
<li>Spring 2.0.1</li>
<li>GreenUML 2.5.0</li>
</ul>
<p>1. Install <span class="caps">OS X</span> developer tools</p>
<p>2. Run software update and install all updates (esp. Java—this will update from 1.4 to 1.5)</p>
<p>3. Install MySQL</p>
<ul>
<li>There’s a nice <span class="caps">OS X</span> package at <a href="http://dev.mysql.com/downloads/mysql/5.0.html#downloads">http://dev.mysql.com/downloads/mysql/5.0.html#downloads</a></li>
<li>If desired, install the startup item and preference pane that come along in the install package</li>
</ul>
<p>4. Install Tomcat 5.x</p>
<ul>
<li>Download the Core Binary Distro .tar.gz from <a href="http://tomcat.apache.org/download-55.cgi">http://tomcat.apache.org/download-55.cgi</a></li>
<li>Run the following (in Terminal):</li>
</ul>
<blockquote><p>&gt; sudo su –<br />
&gt; mv /Users/{username}/Desktop/apache-tomcat-5.5.20.tar.gz /usr/local/<br />
&gt; cd /usr/local<br />
&gt; gnutar -xzvf apache-tomcat-5.5.20.tar.gz<br />
&gt; ln -s apache-tomcat-5.5.20 tomcat<br />
&gt; rm apache-tomcat-5.5.20.tar.gz<br />
&gt; chown -R {username}:{username} apache-tomcat-5.5.20</p></blockquote>
<p>5. Install Ant 1.7</p>
<ul>
<li>Download from <a href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</a></li>
<li>Run the following (in Terminal):</li>
</ul>
<blockquote><p>&gt; mv /Users/{username}/Desktop/apache-ant-1.7.0-bin.tar.gz /usr/local/<br />
&gt; cd /usr/local<br />
&gt; gnutar -xzvf apache-ant-1.7.0-bin.tar.gz<br />
&gt; ln -s apache-ant-1.7.0 ant<br />
&gt; rm apache-ant-1.7.0-bin.tar.gz<br />
&gt; exit</p></blockquote>
<p>6. Install Subversion 1.3</p>
<ul>
<li>Download nice <span class="caps">OS X</span> package from <a href="http://metissian.com/projects/macosx/subversion">http://metissian.com/projects/macosx/subversion</a></li>
</ul>
<p>7. Set <span class="caps">JAVA</span>_HOME / <span class="caps">CATALINA</span>_HOME / <span class="caps">ANT</span>_HOME / <span class="caps">PATH </span></p>
<ul>
<li>Create /Users/{your_username}/.bash_profile if it doesn’t already exist</li>
<li>Add the following to it (using vim, emacs, or your text editor of choice):</li>
</ul>
<blockquote><p>export <span class="caps">JAVA</span>_HOME=”/Library/Java/Home”<br />
export <span class="caps">CATALINA</span>_HOME=”/usr/local/tomcat”<br />
export <span class="caps">ANT</span>_HOME=”/usr/local/ant”<br />
export <span class="caps">PATH</span>=”$PATH:/usr/local/bin:/usr/local/subversion/bin: \<br />
/usr/local/mysql/bin:$ANT_HOME/bin”</p></blockquote>
<p>8. Create a MySQL database and a user for your project</p>
<blockquote><p>&gt; mysql -u root<br />
mysql&gt; <span class="caps">CREATE DATABASE</span> projectdb;<br />
mysql&gt; <span class="caps">GRANT ALL PRIVILEGES ON</span> projectdb.* <span class="caps">TO </span>\<br />
‘projectuser’@’localhost’;<br />
mysql&gt; exit</p></blockquote>
<p>9. Install Eclipse 3.2.1</p>
<ul>
<li>Download from <a href="http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a></li>
<li>Copy to Applications folder</li>
</ul>
<p>10. Install Spring <span class="caps">IDE</span></p>
<ul>
<li>Follow instructions at <a href="http://springide.org/project/wiki/SpringideCallistoInstall">http://springide.org/project/wiki/SpringideCallistoInstall</a></li>
</ul>
<p>11. Install Eclipse Web Tools Project (WTP)</p>
<ul>
<li>As for Spring <span class="caps">IDE</span>, go to Help &gt; Software Updates &gt; Find and Install</li>
<li>Select “Search for new features to install”</li>
<li>Select Callisto Discovery Site, and Web Tools Platform Updates</li>
<li>In the Search Results window, select <span class="caps">WTP </span>Updates &gt; Web Tools Platform and <span class="caps">WTP </span>Patches</li>
<li>Expand Callisto Discovery Site, and click “Select Required”</li>
<li>Click Next, Accept (Next), Finish, (files download) Install All</li>
<li>Restart Eclipse as prompted</li>
<li>Open Eclipse &gt; Preferences</li>
<li>Go to Server &gt; Installed Runtimes</li>
<li>Click “Add”</li>
<li>Find Apache &gt; Apache Tomcat v5.5</li>
<li>Enter /usr/local/tomcat as the Tomcat installation directory</li>
<li>Click Finish, then OK.</li>
</ul>
<p>12. Install Subclipse</p>
<ul>
<li>Download from <a href="http://subclipse.tigris.org">http://subclipse.tigris.org</a></li>
<li>As for Spring <span class="caps">IDE</span>, go to Help &gt; Software Updates &gt; Find and Install</li>
<li>Select “Search for new features to install”</li>
<li>Click “New Remote Site…”</li>
<li>Name the site “Subclipse”; <span class="caps">URL</span>: http://subclipse.tigris.org/update_1.0.x</li>
<li>Click OK</li>
<li>Make sure Subclipse is selected; hit Finish</li>
<li>In Search Results, expand Subclipse and select it</li>
<li>Click Next, Accept (Next), Finish, (files download) Install All</li>
<li>Restart Eclipse as prompted</li>
<li>Open the <span class="caps">SVN </span>Repository perspective and define your repository</li>
</ul>
<p>13. Install GreenUML</p>
<ul>
<li>Download from <a href="http://sourceforge.net/project/showfiles.php?group_id=132685">http://sourceforge.net/project/showfiles.php?group_id=132685</a></li>
<li>Unzip and copy everything in the green_x.x.x/plugins folder to /Applications/eclipse/plugins</li>
<li>Restart Eclipse</li>
</ul>
<p>14a. If you have an existing project, check it out from subversion.</p>
<p>14b. If you need to create a new Spring project, download spring-framework-2.0.1-with-dependencies.zip from <a href="http://www.springframework.org/download">http://www.springframework.org/download</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.19clicks.com/2007/02/07/how-to-set-up-eclipse-3-tomcat-5-5-ant-wtp-subversion-subclipse-mysql-spring-and-greenuml-in-os-x-10-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>If You, Too, Are Silly Like Me</title>
		<link>http://blog.19clicks.com/2006/09/21/if-you-too-are-silly-like-me/</link>
		<comments>http://blog.19clicks.com/2006/09/21/if-you-too-are-silly-like-me/#comments</comments>
		<pubDate>Thu, 21 Sep 2006 14:27:00 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.19clicks.com/2006/09/21/if-you-too-are-silly-like-me/</guid>
		<description><![CDATA[If you, too, are silly like me, then it&#8217;s possible you have also spent about an hour trying to figure out why Microsoft SQL Server Management Studio is refusing to connect to any of your remote databases, telling you:
An error has occurred while establishing a connection to the server.  When connecting to SQL Server [...]]]></description>
			<content:encoded><![CDATA[<p>If you, too, are silly like me, then it&#8217;s possible you have also spent about an hour trying to figure out why Microsoft <span class="caps">SQL </span>Server Management Studio is refusing to connect to any of your remote databases, telling you:</p>
<blockquote><p>An error has occurred while establishing a connection to the server.  When connecting to <span class="caps">SQL </span>Server 2005, this failure may be caused by the fact that under the default settings <span class="caps">SQL </span>Server does not allow remote connections. (provider: Named Pipes Provider, error: 5 &#8211; Invalid parameter(s) found) (Microsoft <span class="caps">SQL </span>Server, Error: 87)</p></blockquote>
<p>If this is happening to you, the problem may very well be that you have put backslashes before your database server name.  Word to the wise&#8212;your server name should <em>not</em> look like \x\y.  Instead, it should be a simple, clean x\y.</p>
<p>Give yourself a good moment now to feel like a complete idiot.</p>
<p>You&#8217;re welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.19clicks.com/2006/09/21/if-you-too-are-silly-like-me/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>ASP Blues</title>
		<link>http://blog.19clicks.com/2006/05/08/asp-blues/</link>
		<comments>http://blog.19clicks.com/2006/05/08/asp-blues/#comments</comments>
		<pubDate>Mon, 08 May 2006 11:30:00 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.19clicks.com/2006/05/08/asp-blues/</guid>
		<description><![CDATA[Warning: this post is pretty boring (so unlike my other musings, which are fascinating without exception). I&#8217;m putting it up here so that anyone else who runs into this problem will find something about it when they search for &#8216;VBScript query string parameter order&#8217; (or somesuch).
Last week, I ran into a bug in a simple [...]]]></description>
			<content:encoded><![CDATA[<p><em>Warning: this post is pretty boring (so unlike my other musings, which are fascinating without exception). I&#8217;m putting it up here so that anyone else who runs into this problem will find something about it when they search for &#8216;VBScript query string parameter order&#8217; (or somesuch).</em></p>
<p>Last week, I ran into a bug in a simple little <span class="caps">ASP</span>/VBScript application I wrote relatively recently. The application does basic routing&#8212;URLs take the form http://www.xyz.com/a/b/c, where &#8216;a/b/c&#8217; means page &#8216;c&#8217; which is a child of page &#8216;b&#8217;, itself a child of page &#8216;a&#8217;. For extensibility’s sake, there is no particular limit on the depth of the page (i.e., http://www.xyz.com/a/b/c/d/e/f/g would also be valid).</p>
<p>Since we&#8217;re an all-M$ shop, we use <span class="caps">IIS</span> with <span class="caps">ISAPI </span>ReWrite to rewrite our URLs. For this particular application, the URLs are rewritten to http://www.xyz.com/index.asp?a=&#38;b=&#38;c (ad nauseum).</p>
<p>My bug, which was noticed months after the application launched, boiled down to this: when a page was opened as the first page in a browser session—e.g. when someone clicked on a link to the page from an e-mail client, and their default browser was not already open—the application would load the page as if the query string parameters were inverted. So, if the page loaded were http://www.xyz.com/index.asp?a=&#38;b=&#38;c, the application would behave as though the query string were &#8216;a=&#38;c=&#38;b&#8217;. All other load methods resulted in the application behaving as expected (&#8216;a=&#38;b=&#38;c&#8217;).</p>
<p>The problem with this was: by design, the application parses the query string left-to-right (i.e. for &#8216;a=&#38;b=&#38;c&#8217;, it checks to see if it can find page &#8216;a&#8217;; then checks for page &#8216;b&#8217; in pages that are stored as children of page &#8216;a&#8217;, then checks for page &#8216;c&#8217; in pages that are children of page &#8216;b&#8217;). If at any point the page isn’t found, the application stops, and returns the latest page as it&#8217;s best guess. This means that inverted query string parameters are quite a problem—&#8217;a=&#38;c=&#38;b&#8217; will check for page &#8216;a&#8217;, find it, then try and look for page &#8216;c&#8217; in the children of page &#8216;a&#8217;. This will fail, since page &#8216;c&#8217; is marked only as a child of page &#8216;b&#8217;. Therefore, the application will return page &#8216;a&#8217;, instead of page &#8216;c&#8217;.</p>
<p>To begin getting to the bottom of things, I printed out the value of the current query string key inside the for each loop I was using to iterate. Sure enough, the first time the link was opened, in any browser, the printout read &#8220;a, c, b&#8221;. After hitting refresh, or loading the page in any way after browser initialization, the printout read &#8220;a, b, c&#8221;.</p>
<p>Obviously, I was at fault here for assuming that the internal representation of a query string maintained order. What I find odd about it is that the order on initial browser load would differ from the order on any other load.</p>
<p>Apparently, this is just one of the vaguaries of the VBScript Collection object (which is really more or less the same thing as a Scripting.Dictionary object). The fix was to change my method of iterating through the query string—instead of using:</p>
<p><code>for each item in querystring</code></p>
<p>I now use:</p>
<p><code>for i = 1 to querystring.count</code></p>
<p>All of this just serves to remind me: I really like a language to call a hash a hash.  You know&#8212;if it is, in fact, a hash.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.19clicks.com/2006/05/08/asp-blues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rocking the Boat</title>
		<link>http://blog.19clicks.com/2006/03/22/rocking-the-boat/</link>
		<comments>http://blog.19clicks.com/2006/03/22/rocking-the-boat/#comments</comments>
		<pubDate>Wed, 22 Mar 2006 13:26:00 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[productivity]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.19clicks.com/2006/03/22/rocking-the-boat/</guid>
		<description><![CDATA[It is continually surprising to me how easy it is for a group of people to agree on something without knowing it.
Equally surprising is how often people don&#8217;t try to solve a problem because they can&#8217;t imagine solving it alone, and hence assume it to be intractable.
It seems to me that bureaucracy flourishes largely because [...]]]></description>
			<content:encoded><![CDATA[<p>It is continually surprising to me how easy it is for a group of people to agree on something without knowing it.</p>
<p>Equally surprising is how often people don&#8217;t try to solve a problem because they can&#8217;t imagine solving it alone, and hence assume it to be intractable.</p>
<p>It seems to me that bureaucracy flourishes largely because of these two facets of human nature.  Once a policy is in place, people assume that changing it will be very difficult.  And, they don&#8217;t seem to wonder how many other people are looking at that same policy and thinking exactly the same thing. Or at least, they aren&#8217;t curious enough to go and find out.</p>
<p>A few weeks ago, I went to talk to my boss about the issues I ranted about in my last post.  As it turns out, she agrees with me on all of the points made&#8212;no discussion required.  Flexible hours would, apparently, be a good thing in her books.  Ditto the ability to work from home, giving employees input into workspace setup, and providing opportunities for personal growth.  Even my raise request was received in a fairly positive manner.</p>
<p>But (and you knew there was going to be a but), it seems that in almost every case, there is some bureaucratic hurdle to actually getting it done.  First of all, there&#8217;s the matter of organizational policy. Inflexible hours are, it seems, a matter of organizational policy.  That means that unless I bring in a note from my mom, I&#8217;m to be here at 9.</p>
<p>Secondly, although things like working from home, workspace rearchitecting, conference attendance, and raises are not governed by the same hard-and-fast rules, they <em>are</em> subject to a request system that appears to tend invariably toward the negative.  Or, at least toward the &#8220;we&#8217;ll get back to you on that as soon as we get a chance&#8221;&#8212;i.e.,   never.</p>
<p>Luckily, I am not much for letting sleeping dogs lie. Especially when someone suggests to me that &#8220;creating a groundswell&#8221; might precipitate change. Hence (to begin with), I created a little survey to gauge the general feeling on flexible hours.  I e-mailed it to everyone in my department.  The response was encouraging&#8212;about 60% of the department took the survey, and of those, only 1 person thought that work schedule policy should remain as-is.</p>
<p>Unfortunately, I inadvertently violated what I can only assume is an anti-unionization policy&#8212;and received a brief dress-down about using organization resources (i.e. e-mail) to circulate my survey.</p>
<p>I remain undaunted, however.  This is mostly because people keep asking me about the issue.  You know you&#8217;ve got a winner when that guy who&#8217;s never said a word to you before wants to know all about the status of &#8220;the project&#8221;.</p>
<p>It should be noted that I am not in any way trying to start a union.  I don&#8217;t want to be in a union.  In fact, I generally disapprove of unions.  I <em>do</em>, however, want to do everything possible to enable changes that I think will significantly benefit me, my co-workers, and the organization as a whole.</p>
<p>I wrote a nice note to the <span class="caps">CTO</span>, apologizing for my use of work resources, and explaining my motivation.  Next, I&#8217;ll have to actually create a survey report so that I can pitch flexible work hours to management in general.</p>
<p>It continues to amuse and amaze me that I am the only one who is bugged enough by these policies to try to change them.</p>
<p>Perhaps I don&#8217;t have enough work to do.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.19clicks.com/2006/03/22/rocking-the-boat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Please Just Let Me Work</title>
		<link>http://blog.19clicks.com/2006/03/14/please-just-let-me-work/</link>
		<comments>http://blog.19clicks.com/2006/03/14/please-just-let-me-work/#comments</comments>
		<pubDate>Tue, 14 Mar 2006 09:06:00 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[productivity]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.19clicks.com/2006/03/14/please-just-let-me-work/</guid>
		<description><![CDATA[[Note: My request for a 10-6 workday was denied: the arguments, in short, being that granting the request would be demoralizing to my co-workers, who would still have to show up at 9, and that having staggered start times would have a undesirable cooling effect on teamwork.  I have since crafted the following reply&#8212;however [...]]]></description>
			<content:encoded><![CDATA[<p><em>[Note: <a href="/articles/2006/02/11/dear-boss">My request for a 10-6 workday</a> was denied: the arguments, in short, being that granting the request would be demoralizing to my co-workers, who would still have to show up at 9, and that having staggered start times would have a undesirable cooling effect on teamwork.  I have since crafted the following reply&#8212;however I have yet to send it, because I am somewhat of the mind that a face-to-face discussion will produce more positive results&#8212;largely due to the tone disambiguation afforded by speech.  Comments are most welcome.]</em></p>
<p>C,</p>
<p>The issue for me is one of principle: the timekeeping matter seems symptomatic of the general departmental attitude toward team members.  Given that the department has such difficulty recruiting and retaining qualified developers, it seems it would be concerned with attempting to provide  an environment in which these developers thrive.  Yet there are numerous instances of Museum, departmental, and team policies and practices that are particularly onerous to the typical engaged developer.</p>
<p>Specifically:</p>
<ul>
<li>The developer is limited to working when and where policy dictates she should work, instead of when and where would result in greatest productivity (although obviously there must be caveats to provide for teamwork)</li>
<li>Workspace decisions that make a critical difference to day-to-day functionality and the ability to work effectively with other members of the team (such as layout of reconfigurable cubicles) are made without developer input, developer concerns are not addressed in a timely manner, and productivity-enhancing solutions that seem as though they could be implemented with minimal effort become bogged down in endless bureaucracy</li>
<li>The developer is given the distinct impression that the Museum is unwilling to invest in building her knowledge or in the general health of her career</li>
</ul>
<p>To address the first point in more detail&#8212;being hired on an hourly basis is generally difficult for the developer, as it limits when she can work.  The situation is made worse by Museum restrictions on where she can work.  It may not be received wisdom, but an engaged developer is continuously frustrated if she cannot work on a project at home.  This is largely because programming is a concentration-intense pursuit&#8212;in the midst of a project, productivity loss increases exponentially with the time spent unable to tinker with the project.  Solutions and ideas that come to a developer in the shower are significantly more likely to be lost forever if she is forced to wait until the next morning to implement them.  The effect is magnified in the case where the developer is forced by a household issue to remain at home&#8212;it is enormously frustrating to be forced to take a vacation day in order to sit around the house and wait for <span class="caps">DSL</span> to be installed, for a plumber to come, etc., when it is clearly possible to enable work from home.</p>
<p>On the related issue of timekeeping policy, it seems that as long as team members are working their assigned number of hours, and are not missing scheduled appointments or responsibilities, the importance of whether our arrival and departure times differ by an hour or two is slight when compared to the benefits of a that flexibility.  Notably, all of the advantages I cited in my <a href="/articles/2006/02/11/dear-boss">last e-mail on this topic</a> would be multiplied if the entire team were allowed a bit more flexibility on arrival time.</p>
<p>On the second point&#8212;while bureaucracy doubtless plagues employees of every flavor, it is simply alarming that such an enormous drain on productivity and accomplishment could be so widely regarded as immutable.  The reluctance to invest in realizing workspace improvements that would increase productivity is difficult to comprehend.</p>
<p>The last point is critical&#8212;no individual who is interested in personal growth can be satisfied in an environment that does not offer them opportunities for this, and an individual who is not interested in personal growth is probably not a very valuable employee.  The argument that resources should not be expended on team members who are relatively likely to leave the Museum is a circular one: those employees would be much more likely to remain if it appeared that the Museum was actually interested in investing in them by providing opportunities for building knowledge and furthering their careers.</p>
<p>To conclude, I dare to suggest that the Museum could actually save money by addressing these issues&#8212;things like flexible hours, the ability to work from home when necessary, input into relevant workspace decisions, and the opportunity to attend industry conferences go a long way toward developer recruitment as well as retention&#8212;and the department gains happier, more productive employees.</p>
<p>I would like to claim credit for these arguments, but all have been made many times before, with accompanying real-world evidence.  Some good examples:</p>
<ul>
<li>Information Week, <a href="http://www.informationweek.com/808/flexibility.htm">Flexibility In The Workplace Is An Increasing Concern</a></li>
<li>Enterprise Systems, <a href="http://www.esj.com/enterprise/article.aspx?EditorialsID=782">Telecommuting: It Does a Body Good</a></li>
<li>Occupational Hazards, <a href="http://www.occupationalhazards.com/articles/10334">The Key to Happiness at Work: Schedule Flexibility</a></li>
<li>The Partnership for Public Service, <a href="http://publicservice.monster.com/articles/time/">Work/Life Balance and the Federal Employee</a></li>
<li>Joel on Software, <a href="http://www.joelonsoftware.com/articles/BionicOffice.html">Bionic Office</a></li>
</ul>
<p>I sincerely hope that the department can see its way toward addressing these issues, since at the end of the day, I simply want to be a motivated, challenged, and hence productive employee, working amongst people who share that desire.</p>
<p>Thanks,</p>
<p>Sam</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.19clicks.com/2006/03/14/please-just-let-me-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dear Boss&#8230;</title>
		<link>http://blog.19clicks.com/2006/02/11/dear-boss/</link>
		<comments>http://blog.19clicks.com/2006/02/11/dear-boss/#comments</comments>
		<pubDate>Sat, 11 Feb 2006 14:56:00 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.19clicks.com/2006/02/11/dear-boss/</guid>
		<description><![CDATA[[More or less as sent.   Some people would call this playing with fire.  They may have a point.]
C,
I have given more thought to the matter since we last discussed it, and I have identified several reasons why I have historically arrived at work closer to 10am than 9am.  In case it [...]]]></description>
			<content:encoded><![CDATA[<p><em>[More or less as sent.   Some people would call this playing with fire.  They may have a point.]</em></p>
<p>C,</p>
<p>I have given more thought to the matter since we last discussed it, and I have identified several reasons why I have historically arrived at work closer to 10am than 9am.  In case it should be possible to negotiate an official 10-6 workday, here are my justifications for that schedule.</p>
<p>First of all, a 10am arrival immensely improves my commute&#8212;when bicycling to work, a ride beginning at 9am as opposed to 8am involves significantly less traffic (and hence a much reduced risk of sudden death, as well as a faster total ride time, with associated health benefits resulting from the maintenance of an elevated heart rate).  During the winter months, 9am has the additional benefit of being at least 5 degrees warmer than 8am.</p>
<p>When commuting via the subway, leaving at 9am rather than 8am involves a much lower risk of being forced to impersonate a sardine en route (the benefit, apart from the higher oxygen concentration, being the increased possibility of simultaneous reading and riding, and associated improvements in mental acuity and knowledge base).</p>
<p>Secondly, years of experience working with my brain has taught me that it functions most effectively in the hours of late afternoon, and least effectively in the hours of early morning (research supports this [1], [2]).  Working 9-5 thus prevents me from utilizing precious hours during which my brain is operating at its best.</p>
<p>I hope that these arguments are at least somewhat convincing.</p>
<p>Thanks,</p>
<p>Sam</p>
<p>[1] Robert Westa, Kelly J. Murphya, Maria L. Armilioa, Fergus I. M. Craika and Donald T. Stussa, &#8216;<a href="http://intl-psychsoc.gerontologyjournals.org/cgi/content/abstract/57/1/P3">Effects of Time of Day on Age Differences in Working Memory</a> &#8216;</p>
<p>[2] Hans P. A. Van Dongen, Ph.D., David F. Dinges, Ph.D., &#8216;<a href="http://www.nps.navy.mil/orfacpag/resumePages/projects/Fatigue/Dongen.pdf">Circadian Rhythms in Fatigue, Alertness and Performance</a>&#8216;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.19clicks.com/2006/02/11/dear-boss/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
