<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.1" -->
<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/"
	>

<channel>
	<title>Code and Whatnot</title>
	<link>http://www.gregwhitescarver.com/blog</link>
	<description>./a_nerds_life &#124; egrep "useful&#124;worth remembering"</description>
	<pubDate>Fri, 27 Jun 2008 21:30:22 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1</generator>
	<language>en</language>
			<item>
		<title>My new pocket technology stack: Verizon, Motorola Q 9c, bluetooth headset, Plaxo Premium, Yahoo! Go, Opera Mobile, GMail/IMAP</title>
		<link>http://www.gregwhitescarver.com/blog/2008/06/11/my-new-pocket-technology-stack-verizon-motorola-q-9c-bluetooth-headset-plaxo-premium-yahoo-go-opera-mobile-gmailimap/</link>
		<comments>http://www.gregwhitescarver.com/blog/2008/06/11/my-new-pocket-technology-stack-verizon-motorola-q-9c-bluetooth-headset-plaxo-premium-yahoo-go-opera-mobile-gmailimap/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 04:51:21 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
		
		<category><![CDATA[products]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.gregwhitescarver.com/blog/2008/06/11/my-new-pocket-technology-stack-verizon-motorola-q-9c-bluetooth-headset-plaxo-premium-yahoo-go-opera-mobile-gmailimap/</guid>
		<description><![CDATA[The last six weeks have been pretty insane!  I will stay relatively cryptic about the details, but, as my friends already know, I have changed jobs twice in that time period.  The job for which I left HUGE seemed like a great opportunity, but I found myself highly uncomfortable in the position.  [...]]]></description>
			<content:encoded><![CDATA[<p>The last six weeks have been pretty insane!  I will stay relatively cryptic about the details, but, as my friends already know, I have changed jobs twice in that time period.  The job for which I left HUGE seemed like a great opportunity, but I found myself highly uncomfortable in the position.  A more-than-suitable alternative (in the form of Practice Technologies) happened to make itself available (as I was figuring out that I had accepted the wrong job for me), so I made the jump.  It was a very difficult decision, but, on the same token, I knew for sure that I was not in the right environment.</p>
<p>Aaaaanyway&#8230; an incidental side-effect of this unusually rapid job hopping was going through two work-sponsored phones in less than a month.  Which made me realize a much more minor mistake than accepting the wrong gig: having a phone and phone number that I did not own.  </p>
<h3>Verizon</h3>
<p>Immediately upon tendering my resignation from &#8216;mystery job B&#8217;, I went to the Verizon store.  Fiscally-retarded as I am, I had maintained an account with Verizon for the many months HUGE had been providing a phone, so it seemed like a logical choice to reawaken the relationship (plus, they&#8217;ve always actually given me pretty good service).  The clerk did some math to figure out that I&#8217;d spend less money if I paid the cancellation fee on my old account, and started a new 2-year contract.  If I ever mail in that $50 rebate, I will have gotten a really good deal.  And it&#8217;s worth noting that Verizon was the first provider to offer pro-rated cancellation fees, a customer-friendly policy.</p>
<h3>Motorola Q 9c</h3>
<p>On my roommate&#8217;s recommendation, I went for the late-model Motorola Q, a Windows Mobile 6 smartphone, similar in shape to a Blackberry.  Having used a couple of pocket PC-type phones in the past, the smartphone is a welcome departure.  In fact, I&#8217;m sad that I didn&#8217;t get a smartphone sooner.  Most importantly, the smartphone&#8217;s ability to function as a phone is vastly superior.  Even though the numeric keypad is superimposed on the alphabet keys, I can start typing a number (without hitting &#8216;function&#8217;) OR a name, and the phone instantly and magically figures out which I need.  It&#8217;s not rocket science, I suppose, but I am very pleased with that interface feature.  Originally fearing that I&#8217;d miss a touchscreen, the smartphone has brought me in the direction of near-loathing when it comes to touchscreens on handheld, pocket-borne devices.  It&#8217;s small.  It&#8217;s not exacerbating the hole that my pocket PC wore in my pocket.  I can <em>always</em> use it with one hand.  And say what you will about Microsoft, but I actually kinda like Windows Mobile 6; the user interface is almost completely intuitive, it&#8217;s fast, and there are tons of available applications.</p>
<h3>bluetooth headset</h3>
<p>In 20 days, it will be against the law to talk on the phone while driving in California without a hands-free device.  A generic bluetooth headset and car charger were just a few extra dollars, so I got them.  Windows Mobile 6 puts the bluetooth setup right on the home screen (or did I set that up?  whatever), so it&#8217;s very quick to get set up as I begin either leg of my commute.  The Q has superb voice-activated dialing, so I pretty much only ever touch one button (one that is ergonomically findable, keeping my attention on the road).  I&#8217;ve spent more time talking to my family in the last 2 weeks than I had in the previous month.  Go bluetooth.</p>
<h3>Plaxo&#8230;</h3>
<p><a href="http://www.19clicks.com">Sam</a> clued me in that <a href="http://www.plaxo.com">Plaxo</a> had some mobile integration capabilities.  Visiting their site for the first time in a while, I was impressed at the number of services they currently integrate.  Plaxo is now pulling in both my Yahoo! and Google address books (in a read-only fashion: it does not update remote accounts), as well as my Google Calendar.  Plaxo used to pull Yahoo! Calendar, but support broke and/or was discontinued at some point.  I have continually heard rumors that a Yahoo! Calendar API is coming; if that ever happens, hopefully Plaxo will again pull in that service.  Plaxo also used to directly pull in LinkedIn connections, but it looks like LinkedIn gave them the smackdown.  It&#8217;s still possible to export your LinkedIn contacts to CSV, so I don&#8217;t see this as being a huge deal.  </p>
<h3>&#8230;Plaxo Premium</h3>
<p>For me, there were two reasons to upgrade to <a href="http://www.plaxo.com/premium">Plaxo Premium</a>.  First is Windows Mobile Sync.  Mobile Sync is what drove me to Plaxo this time around, and I don&#8217;t mind paying for useful premium services.  Plaxo for Windows Mobile was easy to install on the Q, and I only had to run it once for a simple initial setup.  The second bonus of Plaxo Premium is address book duplicate removal.  This seems like a less-likely candidate for a &#8216;premium&#8217; designation, but I&#8217;m paying anyway, and I enjoyed removing/merging duplicates through their fairly effective interface.</p>
<h3>Yahoo! Go</h3>
<p>This neat little program is a simpler, often better, interface to the Yahoo! family of services, including mail, address book, calendar, Flickr, maps, and news.  One highly impressive feature of Yahoo! Go is the ability to dial people directly from your Yahoo! contacts.  Browsing Flickr is also straightforward and well-geared to a device with a small screen.  Both contacts and Flickr suffer a similar problem, though, in that you can&#8217;t save a contact or a photo to your phone; to get them, you must return to Yahoo! Go.  I wanted to save a Flickr photo as my screen background, and no dice.  I suppose I could use Opera Mobile to do that&#8230;</p>
<h3>Opera Mobile</h3>
<p>Possibly the biggest no-brainer in the Windows Mobile third-party software space is Opera.  Internet Explorer for Mobile truly sucks ass, and <a href="http://www.opera.com/products/mobile/products/winmobileppc/">Opera Mobile</a> truly kicks ass.  Everything renders better, and Opera supports javascript.  IE is in the stone age, and I&#8217;ll leave it at that.  Download it, and when your 30 day trial is over, cough up the $24.  It&#8217;s well worth it.  The web geek in me also appreciates Opera&#8217;s role as a standard-bearer for web standards, so I almost revel in tossing them a few bucks.</p>
<h3>GMail / IMAP</h3>
<p><a href="http://mail.google.com">GMail</a>, which I use exclusively as my work email client, offers IMAP.  I set up Outlook on my phone to pull mail from GMail every 15 minutes or so, and it&#8217;s working swell.  It&#8217;s oddly convenient that work email comes to Outlook on the phone, and personal email is inside Yahoo! Go.</p>
<h3>Maps?  Google?</h3>
<p>The Google Maps application works, for the most part, but has let me know that the pseudo-GPS functionality is not available on my phone.  I have a sneaking suspicion that Verizon&#8217;s desire to sell me the VZ Navigator application/service is behind this feature-squelching, and, if that&#8217;s true, shame on them.</p>
<p>Overall, I will go so far as to say that I have never been so happy with my phone situation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gregwhitescarver.com/blog/2008/06/11/my-new-pocket-technology-stack-verizon-motorola-q-9c-bluetooth-headset-plaxo-premium-yahoo-go-opera-mobile-gmailimap/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New Job: Web Development Lead at Practice Technologies</title>
		<link>http://www.gregwhitescarver.com/blog/2008/06/06/new-job-web-development-lead-at-practice-technologies/</link>
		<comments>http://www.gregwhitescarver.com/blog/2008/06/06/new-job-web-development-lead-at-practice-technologies/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 21:10:33 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
		
		<category><![CDATA[work]]></category>

		<category><![CDATA[law]]></category>

		<guid isPermaLink="false">http://www.gregwhitescarver.com/blog/2008/06/06/new-job-web-development-lead-at-practice-technologies/</guid>
		<description><![CDATA[I&#8217;m very pleased and humbled to announce my new job as Web Development Lead at Practice Technologies (aka PTI).  PTI has been around for several years, providing extremely powerful document management software for law firms.  Lately, they&#8217;ve been pushing some of their rich data services online, such as RealDealDocs and SmartRules.  These [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m very pleased and humbled to announce my new job as Web Development Lead at <a href="http://www.practicetechnologies.com/">Practice Technologies</a> (aka PTI).  PTI has been around for several years, providing extremely powerful document management software for law firms.  Lately, they&#8217;ve been pushing some of their rich data services online, such as <a href="http://www.realdealdocs.com">RealDealDocs</a> and <a href="http://www.smartrules.com/">SmartRules</a>.  These information services (which are subscription-only) are superbly useful and labor-saving for trial lawyers, litigators, law librarians, and people who do legal-related document creation.</p>
<p>I&#8217;ve very excited to get my dirty little fingers into their information systems.  The volume of documents and document meta-data that PTI has collected represents a tremendous potential, only a fraction of which has been tapped so far.</p>
<p>Tag has a small and extremely talented group of developers, and I am thrilled to be working with them.  I&#8217;ll be up to my old tricks: writing documentation, refining processes &#038; practices, automating, designing solutions, and coding, primarily in my beloved LAMP realm.</p>
<p>From the roof at their Venice office, I can see the ocean.  The commute is 45 minutes to an hour, but I&#8217;ll probably fix that with a relocation within the next few months.</p>
<p>Wish me luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gregwhitescarver.com/blog/2008/06/06/new-job-web-development-lead-at-practice-technologies/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google Maps mashup with animated DHTML markers and infoboxes, YUI contributes</title>
		<link>http://www.gregwhitescarver.com/blog/2008/02/28/google-maps-mashup-with-animated-dhtml-markers-and-infoboxes-yui-contributes/</link>
		<comments>http://www.gregwhitescarver.com/blog/2008/02/28/google-maps-mashup-with-animated-dhtml-markers-and-infoboxes-yui-contributes/#comments</comments>
		<pubDate>Thu, 28 Feb 2008 21:29:45 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
		
		<category><![CDATA[products]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[ajax]]></category>

		<category><![CDATA[object-oriented]]></category>

		<guid isPermaLink="false">http://www.gregwhitescarver.com/blog/2008/02/28/google-maps-mashup-with-animated-dhtml-markers-and-infoboxes-yui-contributes/</guid>
		<description><![CDATA[Back in November, Family Travel relaunched with a ton of new content, a completely new look &#038; feel, and great Google Maps integration.
I&#8217;m the dummy who told the client that animated markers and infoboxes would be OK, and I&#8217;m the dummy who had to code it (the javascript) in under two months, by myself.  [...]]]></description>
			<content:encoded><![CDATA[<p>Back in November, <a href="http://family.go.com/travel/">Family Travel</a> relaunched with a ton of new content, a completely new look &#038; feel, and great <a href="http://code.google.com/apis/maps/documentation/reference.html">Google Maps integration</a>.</p>
<p>I&#8217;m the dummy who told the client that animated markers and infoboxes would be OK, and I&#8217;m the dummy who had to code it (the javascript) in under two months, by myself.  To be honest, the launch was a little glitchy.  Now, though, things seem to be running pretty smoothly.</p>
<p>As far as I know, Family Travel is the first and only site to have animated DHTML markers and infoboxes.  We probably could have accomplished the feat in Flash, but I was not comfortable with the general state of Flash integration with Google Maps.  Even in the months since I began coding the project in Javascript, that arena has gotten stronger, though I&#8217;d still call it &#8220;experimental&#8221; for advanced applications.</p>
<p>Speaking of experiments, while the Google Maps application and its API are pretty well-tested, I was definitely treading some new ground.  Also, I found the documentation to be lacking in some instances; for instance, it&#8217;s not always explicit what type of object is required as a parameter and what type of object is returned (in some cases, a class will be referred to by two or more names throughout the documentation - not helpful!).  One possible bug I found was that the &#8216;disableDragging&#8217; method doesn&#8217;t always &#8217;stick&#8217;.  Perhaps all of my animation and <a href="http://code.google.com/apis/maps/documentation/reference.html#GOverlay">GOverlay</a> hacking was confusing the map, but dragging definitely enables at times that I don&#8217;t want it to, and at times when I&#8217;m definitely not calling the &#8216;enableDragging&#8217; method.  I&#8217;ve unfortunately overcome this with a &#8216;dontDragDaemon&#8217;, which makes sure dragging stays disabled when it needs to.</p>
<p>First of all, the <a href="http://code.google.com/apis/maps/documentation/reference.html#GMarker">GMarker</a> class and <a href="http://code.google.com/apis/maps/documentation/reference.html#GInfoWindow">GInfoWindow</a> class simply don&#8217;t support animation.  That was a big deal to overcome.  I wound up completely re-implementing both concepts according to the GOverlay interface, which worked out well.  However, I found some of the behavior of GOverlay to be downright unpredictable.  The &#8216;force&#8217; parameter to the redraw function seemed to be passed &#8216;true&#8217; more than I wanted it to, so I had to manage that largely on my own.  Inside my info windows, Flash movies sometimes play.  In Safari, mouse interaction with the Flash did not work at all.  I suspect it had something to do with the &#8216;pane&#8217; architecture of the map, but after much head scratching, I decided to take the Flash out of the map, and merely position it on top of the map.</p>
<p>Here are two great examples of the map in action.  Unfortunately, the feature is a bit hidden.  Click &#8216;Map It&#8217; to bring up the map.  Comments and bug reports are encouraged:</p>
<ul>
<li><a href="http://family.go.com/travel/vacations/wyoming/yellowstone-park/best-yellowstone-vacation-for-teens-282104/">Yellowstone</a></li>
<li><a href="http://family.go.com/travel/vacations/new-york/new-york-city/best-new-york-city-vacation-for-children-282101/">New  York City</a></li>
</ul>
<p>There&#8217;s also a small version on the map, used on another type of page (down the right side):</p>
<ul>
<li><a href="http://family.go.com/travel/things-to-do/new-york/new-york-city/poi-459479-circle--line--downtown/">Circle Line Tours</a></li>
</ul>
<p>All of the animation and event handling was done using <a href="http://developer.yahoo.com/yui/">YUI</a>, a library for which I only become more fond as time goes on.  The documentation is perfect, once you find your way around.  I may write another article just to fully proclaim my love for YUI&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gregwhitescarver.com/blog/2008/02/28/google-maps-mashup-with-animated-dhtml-markers-and-infoboxes-yui-contributes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Front-end development in a Java world, Part 3: ant shortcuts</title>
		<link>http://www.gregwhitescarver.com/blog/2008/02/22/front-end-development-in-a-java-world-part-3-ant-shortcuts/</link>
		<comments>http://www.gregwhitescarver.com/blog/2008/02/22/front-end-development-in-a-java-world-part-3-ant-shortcuts/#comments</comments>
		<pubDate>Fri, 22 Feb 2008 19:15:08 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
		
		<category><![CDATA[platforms and frameworks]]></category>

		<category><![CDATA[system administration]]></category>

		<guid isPermaLink="false">http://www.gregwhitescarver.com/blog/2008/02/22/front-end-development-in-a-java-world-part-3-ant-shortcuts/</guid>
		<description><![CDATA[HTML/CSS developers, and, really, many developers, don&#8217;t spend their time at the command line these days.  In a Java world, build scripts are usually run from the command line or automatically from Eclipse.  In my experience, most front-end developers don&#8217;t like Eclipse, preferring IDEs like Dreamweaver, Coda, and Notepad++.  To make their [...]]]></description>
			<content:encoded><![CDATA[<p>HTML/CSS developers, and, really, many developers, don&#8217;t spend their time at the command line these days.  In a Java world, build scripts are usually run from the command line or automatically from Eclipse.  In my experience, most front-end developers don&#8217;t like Eclipse, preferring IDEs like Dreamweaver, Coda, and Notepad++.  To make their lives easier, I&#8217;ve made a bunch of 1-line batch scripts that run full and partial builds, and put shortcuts to those batch scripts right in the quick-launch area of their desktops.  </p>
<p>Where appropriate, I&#8217;ve actually bypassed ant.  In particular, I found the partial build to be unnecessarily slow when all that is needed is deployment of JSPs.  So, I downloaded <a href="http://www.itefix.no/phpws/index.php?module=pagemaster&#038;PAGE_user_op=view_page&#038;PAGE_id=6&#038;MMN_position=23:23">CWRsync </a> and made a batch script that syncs JSPs from the version controlled directory to the deployed directory, taking the process from over 20 seconds down to under 5 seconds (it adds up!).  I&#8217;d include that script here, but it&#8217;s project-specific.  The CWRsync download comes with great examples, so that&#8217;s where I&#8217;d suggest starting. <em>Note: cwRsync&#8217;s cygwin1.dll conflicts with that of Cygwin.  Just copy whichever one is newer, and overwrite the other.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gregwhitescarver.com/blog/2008/02/22/front-end-development-in-a-java-world-part-3-ant-shortcuts/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Front-end development in a Java world, Part 2: Using server-side includes to deliver HTML appropriately for JSP Tiles</title>
		<link>http://www.gregwhitescarver.com/blog/2007/12/18/front-end-development-in-a-java-world-part-2-using-server-side-includes-to-deliver-html-appropriately-for-jsp-tiles/</link>
		<comments>http://www.gregwhitescarver.com/blog/2007/12/18/front-end-development-in-a-java-world-part-2-using-server-side-includes-to-deliver-html-appropriately-for-jsp-tiles/#comments</comments>
		<pubDate>Wed, 19 Dec 2007 04:22:24 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
		
		<category><![CDATA[platforms and frameworks]]></category>

		<category><![CDATA[system administration]]></category>

		<guid isPermaLink="false">http://www.gregwhitescarver.com/blog/2007/12/18/front-end-development-in-a-java-world-part-2-using-server-side-includes-to-deliver-html-appropriately-for-jsp-tiles/</guid>
		<description><![CDATA[The Java project for which we&#8217;re doing front-end development uses JSP Tiles.  These clever little guys allow HTML output to be broken into pieces that can be reused in many places by the application.
As development begins on a new phase, I meet with one or more back-end developers to go over wireframes and work [...]]]></description>
			<content:encoded><![CDATA[<p>The Java project for which we&#8217;re doing front-end development uses <a href="http://tiles.apache.org/">JSP Tiles</a>.  These clever little guys allow HTML output to be broken into pieces that can be reused in many places by the application.</p>
<p>As development begins on a new phase, I meet with one or more back-end developers to go over wireframes and work out the most likely scenario of how the tiles will be divided (so far, our initial guesses in this regard have been largely accurate).  Since the Java application, especially at the beginning, is hardly ready to populate pages dynamically for the new project (not to mention that front-end developers don&#8217;t love JSP), we usually begin development on static HTML pages.  In order to A.) deliver the HTML in a form as close as possible to what the back-end developers need to create the JSP tiles and B.) avoid duplication in our HTML coding, we use <a href="http://httpd.apache.org/docs/2.0/howto/ssi.html">server-side includes</a> to build HTML pages from modular, reusable components under <a href="http://httpd.apache.org/">Apache Web Server</a>.</p>
<p>As the Java application becomes ready for presentation-layer development, the back-end developers use the HTML &#8217;tiles&#8217; we created as the starting points for JSP tiles.  During the remainder of development, we keep an instance of our web server available on the network, so that the HTML versions of the pages and the individual &#8217;tiles&#8217; can be referenced as the JSP tiles are built and tested.</p>
<p>One more aside:  HTML delivered from one team to another should be perfectly indented, and as well-organized and well-commented as possible (label those closing divs!).  Comments and extra whitespace can always be removed after the process if there is excess.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gregwhitescarver.com/blog/2007/12/18/front-end-development-in-a-java-world-part-2-using-server-side-includes-to-deliver-html-appropriately-for-jsp-tiles/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Front-end development in a Java world, Part 1: serving Tomcat and Apache Web Server from the same domain &#038; port, locally</title>
		<link>http://www.gregwhitescarver.com/blog/2007/12/14/front-end-development-in-a-java-world-part-1-serving-tomcat-and-apache-web-server-from-the-same-domain-port-locally/</link>
		<comments>http://www.gregwhitescarver.com/blog/2007/12/14/front-end-development-in-a-java-world-part-1-serving-tomcat-and-apache-web-server-from-the-same-domain-port-locally/#comments</comments>
		<pubDate>Sat, 15 Dec 2007 00:00:32 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
		
		<category><![CDATA[platforms and frameworks]]></category>

		<category><![CDATA[system administration]]></category>

		<guid isPermaLink="false">http://www.gregwhitescarver.com/blog/2007/12/14/front-end-development-in-a-java-world-part-1-serving-tomcat-and-apache-web-server-from-the-same-domain-port-locally/</guid>
		<description><![CDATA[Over the last several months, I&#8217;ve worked hard to make it as easy as possible for our front-end developers (including me) to perform front-end development in a Java environment (on Windows).
Here are some of the preconditions I am dealing with:

The Java application (via Tomcat) outputs absolute references to static assets.
Tomcat is not serving CSS, Javscript, [...]]]></description>
			<content:encoded><![CDATA[<p>Over the last several months, I&#8217;ve worked hard to make it as easy as possible for our front-end developers (including me) to perform front-end development in a Java environment (on Windows).</p>
<p>Here are some of the preconditions I am dealing with:</p>
<ul>
<li>The Java application (via Tomcat) outputs absolute references to static assets.</li>
<li>Tomcat is not serving CSS, Javscript, Flash, or images.</li>
<li>The Java application only runs on Windows.</li>
</ul>
<h3>Apache Web Server &#038; Tomcat side-by-side</h3>
<p>For a long time, it sufficed to run Apache Web Server on port 80 and Apache Tomcat on another port.  We put our preferred host name on the 127.0.0.1 line in \Windows\system32\drivers\etc\hosts , and set up a vhost under Apache Web Server for that domain.  Pages served from http://ourhostname:9080 and all of the CSS, Javascript, etc., served from http://ourhostname (without the port needed).</p>
<p>That worked great until Google Maps came along.  For some reason, it seems impossible to register a domain key with a port number like 9080.  The key for &#8216;ourhostname&#8217; did not work on 9080, and attempting to register a key for &#8216;ourhostname:9080&#8242; yielded the same key.  Loading the pages from localhost:9080 worked for the most part, but we encountered some cross-domain issues with scripts in IE6 that way.</p>
<h3>Reverse-proxying Tomcat under Apache Web Server</h3>
<p>The really fun part (thanks for the tip, Martin!) was reverse-proxying Tomcat under Apache Web Server.  Not that it wound up being complicated&#8230; here&#8217;s a vhost configuration that essentially serves all non-static assets from the local Tomcat instance:</p>
<pre>
&lt;VirtualHost *:80&gt;
    ServerName ourhostname
    DocumentRoot /ourhostrootdir/static/
    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/$
    RewriteRule ^/$ http://localhost:9080/ [P,L]
    RewriteCond %{REQUEST_URI} !^/(css|js|swf|xml|images)/.*$
    RewriteRule ^(.*)$ http://localhost:9080$1 [P,L]
&lt;/VirtualHost&gt;
</pre>
<p>The key here is the P option at the end of the rewrite rules, telling Apache to use the rewrites to behave as a reverse proxy (mod_proxy must be installed and enabled).  I must have read the mod_proxy docs about 6 times, and I never saw that lovely mod_rewrite tie-in, which really kicks ass!</p>
<p>Now, everything loads from http://ourhostname/ , with no port numbers, which is pretty slick.  I&#8217;m not going to post all my Apache config files&#8230; they&#8217;re practically pristine other than the enabling of <a href="http://httpd.apache.org/docs/2.0/mod/mod_proxy.html">mod_proxy</a> and <a href="http://httpd.apache.org/docs/2.0/vhosts/examples.html">vhosts</a>.  Feel free to contact me directly if you have any questions.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gregwhitescarver.com/blog/2007/12/14/front-end-development-in-a-java-world-part-1-serving-tomcat-and-apache-web-server-from-the-same-domain-port-locally/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Optional packages I choose when I install Cygwin (Cygwin, my hero)</title>
		<link>http://www.gregwhitescarver.com/blog/2007/12/12/optional-packages-i-choose-when-i-install-cygwin-cygwin-my-hero/</link>
		<comments>http://www.gregwhitescarver.com/blog/2007/12/12/optional-packages-i-choose-when-i-install-cygwin-cygwin-my-hero/#comments</comments>
		<pubDate>Wed, 12 Dec 2007 20:13:11 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
		
		<category><![CDATA[Bash]]></category>

		<category><![CDATA[products]]></category>

		<category><![CDATA[platforms and frameworks]]></category>

		<category><![CDATA[system administration]]></category>

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://www.gregwhitescarver.com/blog/2007/12/12/optional-packages-i-choose-when-i-install-cygwin-cygwin-my-hero/</guid>
		<description><![CDATA[This post is mostly for my own benefit, and may be edited in the future.  Since I&#8217;m a shell guy stuck (at least for now) in a Windows world, I find myself installing Cygwin on machines on a regular basis.  I still don&#8217;t really understand how anyone gets anything done on Windows machines&#8230;
Digression: [...]]]></description>
			<content:encoded><![CDATA[<p>This post is mostly for my own benefit, and may be edited in the future.  Since I&#8217;m a shell guy stuck (at least for now) in a Windows world, I find myself installing Cygwin on machines on a regular basis.  I still don&#8217;t really understand how anyone gets anything done on Windows machines&#8230;</p>
<p>Digression: the &#8216;find&#8217; command alone is so powerful and amazing&#8230; sigh.  Not to mention sed, awk, and grep, and the lovely pipelines, ifs, whiles and fors that tie it all together.  I&#8217;ll be very happy if and when I never have to use a Windows machine again (or Windows makes bash its default shell, like Mac did).</p>
<p>During Cygwin installation (and subsequent execution of setup.exe) there is a huge tree of packages to choose from.  After installing it a half-dozen or so times, I decided to start keeping track of which non-default packages I select.  I haven&#8217;t had to use all of these on Cygwin, but I&#8217;ve had to use all of them on Linux, so it&#8217;s probably just a matter of time.  I <em>do not</em> de-select any default packages.</p>
<ul>
<li>Archive
<ul>
<li>unzip</li>
<li>zip</li>
</ul>
</li>
<li>Devel
<ul>
<li>gcc</li>
<li>make</li>
<li>pcre</li>
<li>subversion</li>
</ul>
</li>
<li>Editors
<ul>
<li>ed</li>
<li>vim</li>
</ul>
</li>
<li>Net
<ul>
<li>curl</li>
<li>openssh</li>
<li>ping</li>
<li>rsync</li>
<li>whois</li>
</ul>
</li>
<li>System
<ul>
<li>util-linux</li>
</ul>
</li>
<li>Text
<ul>
<li>tidy</li>
</ul>
</li>
<li>Utils
<ul>
<li>diffutils</li>
<li>screen</li>
<li>time</li>
</ul>
</li>
<li>Web
<ul>
<li>wget</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.gregwhitescarver.com/blog/2007/12/12/optional-packages-i-choose-when-i-install-cygwin-cygwin-my-hero/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Notes on Rich Web Experience 2007, San Jose, CA</title>
		<link>http://www.gregwhitescarver.com/blog/2007/09/16/notes-on-rich-web-experience-2007-san-jose-ca/</link>
		<comments>http://www.gregwhitescarver.com/blog/2007/09/16/notes-on-rich-web-experience-2007-san-jose-ca/#comments</comments>
		<pubDate>Mon, 17 Sep 2007 00:58:14 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
		
		<category><![CDATA[platforms and frameworks]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[ajax]]></category>

		<category><![CDATA[object-oriented]]></category>

		<category><![CDATA[softwarearchitecture]]></category>

		<category><![CDATA[richweb]]></category>

		<guid isPermaLink="false">http://www.gregwhitescarver.com/blog/2007/09/16/notes-on-rich-web-experience-2007-san-jose-ca/</guid>
		<description><![CDATA[HUGE was kind enough to send me to the Rich Web Experience conference in San Jose earlier this month.  Overall, I give the conference high marks.  It&#8217;s a pricey conference, but they included three meals a day (which weren&#8217;t bad) and the conference was a 12+ hour experience on each of the first [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.hugeinc.com/">HUGE</a> was kind enough to send me to the <a href="http://www.therichwebexperience.com/conference/san_jose/2007/09/index.html">Rich Web Experience</a> conference in San Jose earlier this month.  Overall, I give the conference high marks.  It&#8217;s a pricey conference, but they included three meals a day (which weren&#8217;t bad) and the conference was a 12+ hour experience on each of the first two days.  I also met one of my idols, <a href="http://jeremy.zawodny.com/">Jeremy Zawodny</a>, albeit briefly.  The interaction designers were all star-struck with Jesse James Garrett, but I&#8217;ll take the author of mytop and an especially good blog over JJG any day.</p>
<p>The best talks I saw were &#8216;<a href="http://www.therichwebexperience.com/show_session_view.jsp?presentationId=290&#038;showId=60">Merging Ajax and Accessibility</a>&#8216; by Mark Meeker, &#8216;<a href="http://www.therichwebexperience.com/show_session_view.jsp?presentationId=302&#038;showId=60">Architecture for the Rich Web</a>&#8216;, by Nate Grover, and &#8216;<a href="http://www.therichwebexperience.com/show_session_view.jsp?presentationId=333&#038;showId=60">YUI: A Foundation for Rich Web Experiences at Yahoo and Beyond</a>&#8216;, by Eric Miraglia.</p>
<h3>Merging Ajax and Accessibility</h3>
<p><a href="http://markmeeker.com/">Mark Meeker</a> stressed the importance of progressive enhancement: building a site that works without Javascript or CSS, and progressively enhancing the user experience for clients that can take advantage of CSS and/or Javascript.  He gave great examples of using forms as a substrate for DHTML/Ajax web applications in such a way that &#8212; even though the experience will be different &#8212; people using screen readers, braille displays, and screen magnifiers will have access to the same information and functionality.  Mark also pointed out another (fairly obvious) huge benefit of progressive enhancement:  mobile and low-tech browser compatibility.</p>
<p>Some food for thought:  the <a href="http://developer.mozilla.org/en/docs/Accessible_DHTML">ARIA specification</a>, and the <a href="http://en.wikipedia.org/wiki/Web_accessibility#United_States">legal ramifications of not being accessible</a>.  Check out the <a href="https://addons.mozilla.org/en-US/firefox/addon/1891">Firefox Accessibility Extension</a> and the <a href="http://www.oman3d.com/2007/06/22/color-oracle/">Color Oracle</a> (to test for color-blind-friendliness).</p>
<h3>Architecture for the Rich Web</h3>
<p>The primary lesson I learned from Nate Grover&#8217;s talk was building javascript components to be &#8216;agnostic about the data source&#8217;.  That means javascript components should interact with other components <em>as if</em> those components retrieve data asynchronously.  To do so, callbacks are passed along with requests sent to components (the <a href="http://en.wikipedia.org/wiki/Observer_pattern">observer pattern</a>).  In this way, components don&#8217;t wait around for responses from other components, holding up execution; rather, execution continues, and whenever the component is ready with its response, it triggers the callback from the calling component.  It&#8217;s just a tad complicated, and Nate explained it a lot better than I am here, but I think this technique can be very useful, especially if you want to make components that can behave in a synchronous or asynchronous manner, depending on context.</p>
<p>Nate also spent a fair amount of time stressing the importance of simplicity in the interfaces your components present.  He gave some pointed examples of how some popular UI libraries sabotage their own reusability by packing too much into interfaces (<code>scroller = new Scroller('elementID', optionsObject);</code>), rather than providing simpler APIs (<code>scroll(elementObject, direction, time)</code>).</p>
<h3>YUI: A Foundation for Rich Web Experiences at Yahoo and Beyond</h3>
<p><a href="http://360.yahoo.com/ericmiraglia">Eric Miraglia</a> really sold me on the <a href="http://developer.yahoo.com/yui/">YUI library</a>.  It&#8217;s modularity may be a double-edged sword, given the minor complexity of figuring out which combinations of files you need at a given time, but it&#8217;s a well-considered compromise.  In general YUI allows you to produce great, rich applications with a truly negligible download size (in terms of YUI components, anyway).  Watching the code examples skip by on the screen, I also noticed a perfect consistency of interfaces; YUI is truly thought-out from top to bottom, making it a friendly, predictable creature to work with.  Since Yahoo! uses its library internationally on its extremely high-traffic web properties, one can feel assured that the code is well-tested and compatible with all of the major browsers.</p>
<p>On the CSS side, I&#8217;m particularly interested in YUI&#8217;s CSS Reset &#8212; it irons out most of the most troublesome browser differences in terms of &#8216;default&#8217; styling, which definitely reduces the need &#038; temptation to resort to browser hacks.  The CSS Grids, while they seem nice and reusable, did not appeal to me too much.  Perhaps I&#8217;m a masochist, but I don&#8217;t mind laying out my own grids, and it&#8217;s worth hand-coding grids to get more semantically meaningful HTML.</p>
<p>Also mentioned:  the <a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a> is currently regarded as the best javascript minifier out there.  Check it out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gregwhitescarver.com/blog/2007/09/16/notes-on-rich-web-experience-2007-san-jose-ca/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A better RSS feed from yours truly, using Yahoo Pipes</title>
		<link>http://www.gregwhitescarver.com/blog/2007/08/03/a-better-rss-feed-from-yours-truly-using-yahoo-pipes/</link>
		<comments>http://www.gregwhitescarver.com/blog/2007/08/03/a-better-rss-feed-from-yours-truly-using-yahoo-pipes/#comments</comments>
		<pubDate>Fri, 03 Aug 2007 17:07:24 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
		
		<category><![CDATA[news]]></category>

		<category><![CDATA[products]]></category>

		<category><![CDATA[blogging]]></category>

		<category><![CDATA[social]]></category>

		<guid isPermaLink="false">http://www.gregwhitescarver.com/blog/2007/08/03/a-better-rss-feed-from-yours-truly-using-yahoo-pipes/</guid>
		<description><![CDATA[Using Yahoo Pipes, I&#8217;ve combined my blog, my Google Reader &#8217;shared&#8217; items, and my del.icio.us &#8217;share&#8217; tag into a single RSS feed:
http://pipes.yahoo.com/pipes/pipe.run?_id=0Pj34kFB3BGbj9QKJxOy0Q&#038;_render=rss (rss &#124; html)
I don&#8217;t always write in this blog as frequently as I&#8217;d like, but I read quite a bit each day to keep up with the latest in web development and the [...]]]></description>
			<content:encoded><![CDATA[<p>Using Yahoo Pipes, I&#8217;ve combined my blog, my Google Reader &#8217;shared&#8217; items, and my del.icio.us &#8217;share&#8217; tag into a single RSS feed:<br />
http://pipes.yahoo.com/pipes/pipe.run?_id=0Pj34kFB3BGbj9QKJxOy0Q&#038;_render=rss (<a href="http://pipes.yahoo.com/pipes/pipe.run?_id=0Pj34kFB3BGbj9QKJxOy0Q&#038;_render=rss">rss</a> | <a href="http://pipes.yahoo.com/pipes/pipe.run?_id=0Pj34kFB3BGbj9QKJxOy0Q">html</a>)</p>
<p>I don&#8217;t always write in this blog as frequently as I&#8217;d like, but I read quite a bit each day to keep up with the latest in web development and the latest in my favorite fields of science.  I constantly forward links to friends, often people who already subscribe to my blog.  On the other hand, I wouldn&#8217;t want to put my del.icio.us links directly into my blog feed, as some people do.  Also, I find my &#8216;whole&#8217; del.icio.us feed has a lot of links I can&#8217;t imagine being useful to too many people, which is why I&#8217;ve introduced the &#8217;share&#8217; tag (which currently has about three items, total).  So anyway, what you&#8217;ll get is content I&#8217;d like to deliver to my intellectual inner and outer circles, without the confusion of re-blogged or aggregated content in my actual blog.  If you like it when I send you links, or you wish I did, consider replacing your subscription to my blog with a subscription to Greg Whitescarver&#8217;s Unified Feed.  And if you still read my blog by visiting this site, my Google Reader shared links and del.icio.us &#8217;share&#8217; tag are syndicated in the right-hand column.</p>
<p>If you do subscribe to my unified feed, please let me know if there are any problems with it.  Also, please let me know if any of my shared links are particularly relevant to you; I&#8217;ll make an effort to share related topics in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gregwhitescarver.com/blog/2007/08/03/a-better-rss-feed-from-yours-truly-using-yahoo-pipes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Surviving without a car in Los Angeles</title>
		<link>http://www.gregwhitescarver.com/blog/2007/07/30/surviving-without-a-car-in-los-angeles/</link>
		<comments>http://www.gregwhitescarver.com/blog/2007/07/30/surviving-without-a-car-in-los-angeles/#comments</comments>
		<pubDate>Mon, 30 Jul 2007 19:38:48 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
		
		<category><![CDATA[uncategorized]]></category>

		<guid isPermaLink="false">http://www.gregwhitescarver.com/blog/2007/07/30/surviving-without-a-car-in-los-angeles/</guid>
		<description><![CDATA[After my 6 weeks of free company car ran out here in Los Angeles, I opted not to buy a car.  Instead, I saved up the cash to spend 10 days in Europe.  I got back last Monday.  Here are some pictures.
So you might want to know how it is, living in [...]]]></description>
			<content:encoded><![CDATA[<p>After my 6 weeks of free company car ran out here in Los Angeles, I opted not to buy a car.  Instead, I saved up the cash to spend 10 days in Europe.  I got back last Monday.  <a href="http://www.flickr.com/photos/gwhitescarver/sets/72157601002501254/">Here are some pictures.</a></p>
<p>So you might want to know how it is, living in LA without a car.  There answer, for me, is &#8220;not bad at all&#8221;.  </p>
<p>I take the subway to work.  Yeah, <a href="http://www.mta.net/riding_metro/riders_guide/planning_trip-02.htm">you heard it right</a>.  I take the Red Line of the Los Angeles Metro seven stops every morning, with a short walk at each end.  I have never had a better commute (except when I worked at home).  The dry weather in LA also makes it much less likely that rain &#038; wind will have me entering the office looking like a wet dog.  Even when I get a car, I&#8217;ll continue taking the subway to work.</p>
<p>My location is just about perfect for a guy without a car, I&#8217;d say.  Not only am I walking distance from the Metro station, which is not in the nicest of neighborhoods, but I&#8217;m also walking distance to a very nice, several-blocks-long strip of restaurants, cafes, bars, and hip retail outlets known as Sunset Junction (a part of the Silver Lake neighborhood).</p>
<p>To get to the beach, I&#8217;ve been taking the 704 bus to Santa Monica.  At 60 minutes, it takes 20 minutes longer in each direction than driving a car.  However, if you factor in the facts that I can do the crossword on the way and don&#8217;t have to worry about having a mimosa or two before returning home, it&#8217;s not a bad setup at all.</p>
<p>I&#8217;ll get a car eventually, but I think tales of cars being an &#8216;absolute necessity&#8217; in Los Angeles have been greatly exaggerated.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gregwhitescarver.com/blog/2007/07/30/surviving-without-a-car-in-los-angeles/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
