<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:georss="http://www.georss.org/georss" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-2809594561952468542</atom:id><lastBuildDate>Sat, 27 Jun 2009 03:59:13 +0000</lastBuildDate><title>EricDaugherty.com</title><description /><link>http://www.ericdaugherty.com/blog/</link><managingEditor>noreply@blogger.com (Eric)</managingEditor><generator>Blogger</generator><openSearch:totalResults>172</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/EricDaugherty" type="application/rss+xml" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-8953093051253546390</guid><pubDate>Sat, 27 Jun 2009 03:51:00 +0000</pubDate><atom:updated>2009-06-26T22:59:13.110-05:00</atom:updated><title>Kayaks in Golden</title><description>I went for a walk with the family tonight in Golden, CO and came across some kayakers doing jumps in the river.  My shutter speeds are a bit slow, &lt;a href="http://www.flickr.com/photos/ericdaugherty/sets/72157620616874304/"&gt;but still some cool moves&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ericdaugherty/sets/72157620616874304/"&gt;&lt;img src="http://farm4.static.flickr.com/3324/3664523060_a8c2b00998.jpg?v=0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-8953093051253546390?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/aBIRDavpE3Q" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/06/kayaks-in-golden.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-7099427243936043127</guid><pubDate>Wed, 24 Jun 2009 15:58:00 +0000</pubDate><atom:updated>2009-06-24T11:08:14.999-05:00</atom:updated><title>Edge Cases</title><description>In tools like Outlook, there are an impossible number of ways users can interact with the tool.  This creates lots of 'edge cases' that don't get tested or developed for.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is one:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Use the default setting that does not have the BCC line shown.&lt;/li&gt;&lt;li&gt;Send an email with BCCs by clicking on the To: button and adding entries to the BCC line in the dialog box.&lt;/li&gt;&lt;li&gt;Send the message&lt;/li&gt;&lt;li&gt;Realize you want to reuse the body in a new message.&lt;/li&gt;&lt;li&gt;Open the sent message and click resend.  &lt;/li&gt;&lt;li&gt;Type in a new To: address&lt;/li&gt;&lt;li&gt;Send it to everyone you previously BCC'ed because Outlook doesn't show you the BCC line, even though it has entries.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Oops.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is an edge case where adding a user to the BCC line causes it to be displayed, but opening/resending an email with users in the BCC line DOES NOT cause it to be displayed.  The trigger logic is flawed, but you don't realize it is flawed unless you are aware of other ways that a specific state can occur.  In this case, the logic to display the BCC line should be triggered by the 'state' of having entries in the BCC line, not the event of adding an address to the BCC line.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-7099427243936043127?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/vPrSYzplREQ" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/06/edge-cases.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-1906474982620229072</guid><pubDate>Sat, 20 Jun 2009 18:01:00 +0000</pubDate><atom:updated>2009-06-20T13:05:22.573-05:00</atom:updated><title>Netflix Saturday Processing</title><description>I was suprised to get an email from Netflix today notifying me that a new disc shipped out.  Netflix does not normally process movies on Saturday, so mailing a movie back on Friday means you have to wait until Tuesday to get the replacment.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I did a quick search, and indeed, it looks like &lt;a href="http://www.examiner.com/x-8310-Trendy-Living-Examiner~y2009m6d18-Netflix-lovers-rejoice-over-Saturday-processing"&gt;Netflix is introducting Saturday processing&lt;/a&gt; across the US.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A great service just got better.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-1906474982620229072?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/EsmxKcNy3tI" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/06/netflix-saturday-processing.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-9200730600363113041</guid><pubDate>Mon, 15 Jun 2009 01:00:00 +0000</pubDate><atom:updated>2009-06-15T09:08:01.256-05:00</atom:updated><title>Google Wave</title><description>Google recently announced a new collaboration platform, and I finally got around to &lt;a href="http://wave.google.com/"&gt;watching the video&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Wow.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I started watching it as a small video in the background and kept finding myself switching to full screen so I could really watch and follow what they were doing.  I'm not going to attempt to summarize the 80 minute video introduction, nothing I could say would really cover it.  You should spend the time and go check this out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I will talk about some of my reactions:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, wow.  This is a solution to the fragmentation of communication.  Email, IM, Twitter, Facebook, etc.  There are too many channels we use to communicate, many of which are dated.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Open Platform, Open Source (mostly). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Build on GWT.  HTML 5 seems to be a big focus.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;RIAs - Sun, Adobe, and Microsoft are pushing their rich client platforms.  Apple and Google are focused on HTML 5.  This app makes a pretty strong case that HTML 5 is sufficient for nearly every app.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Playback - a cool concept that provides context that may be lost along the way.  Integrates with the plugins, etc.  Cool.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Convergence - Google has launched quite a few apps of varying success.  Mail, Maps, Apps, Social Networking, News, Translation, etc.  Wave takes these and combine them in a way that far exceeds their individual value.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Extensions - This is an extensible platform of course.  Wave is cool today, but will be much more tomorrow.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Federation - This is what makes the entire concept feasible.  You can have corporate wave servers but still interact with the various vendors, consultants, etc when necessary, and everything that is private never leaves your server.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Wow.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-9200730600363113041?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/z_xKUxLvQFA" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/06/google-wave.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-7114275119382199513</guid><pubDate>Sat, 13 Jun 2009 17:17:00 +0000</pubDate><atom:updated>2009-06-13T12:25:17.534-05:00</atom:updated><title>Mac Window Managment</title><description>My wife just bought a new 13" MacBook Pro, and as longtime windows users, we're both working through learning a new system.  Overall she's pretty happy, but we just spent 15 minutes today figuring out an issue with windowing...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It started when I migrated over her iTunes library from her Windows box.  The great thing was that not only did it work great (binary compatibility), but that it also auto-found the music (I had it on the M: drive on Windows and I moved it into her iTunes Music folder on the Mac as she has plenty of disk space).  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, the window defaulted to a size larger than her screen, and this is where the frustration started.  On windows, this would be fine, as you can resize a window from any edge.  However, on the Mac you can ONLY resize from the bottom right corner.  You also can't move a window off the top of the screen.  No matter what we tried, we couldn't get the bottom right corner on the screen to allow us to resize.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In most apps, this would probably be fine, as the green key would resize the window.  However, in iTunes this button switches to the mimized player view.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After some Google searching, I figured out I could use the Option key with the green button, which finally worked.  Not intuative or flexible.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Overall, she's still happy, and some learning curve is expected.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-7114275119382199513?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/EgAX7ZX9HuQ" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/06/mac-window-managment.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-8969197487522260413</guid><pubDate>Fri, 12 Jun 2009 13:49:00 +0000</pubDate><atom:updated>2009-06-12T08:58:42.546-05:00</atom:updated><title>Palm Treo 755p and Exchange</title><description>My company upgraded/migrated our Windows Domain last weekend, and as a result, my Treo 755p's ActiveSync Support stopped working.  When I entered the setup information and tried to run the initial Sync, I got the error codes: 1913 4828.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is some confusion about what this error code means.  It can often be related to SSL certificate issues, which may have been part of my problem.  I found this page very helpful to debug the SSL issues:  &lt;a href="http://kb.palm.com/wps/portal/kb/common/article/16733_en.html"&gt;http://kb.palm.com/wps/portal/kb/common/article/16733_en.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once I had that working (I did have to change the server name to match our certificate) I was still having issues, and I came across this post: &lt;a href="http://episteme.arstechnica.com/eve/forums/a/tpc/f/579009962631/m/417009683931"&gt;http://episteme.arstechnica.com/eve/forums/a/tpc/f/579009962631/m/417009683931&lt;/a&gt; that suggested the issue was the ActiveSync security policy.  I tracked down our IT guy and cajoled him into testing out removing the policy, since ours didn't really do anything anyway.  It worked!  The odd thing is that the old domain seemed to have a policy as well but something must be different.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So apparently the Treo (Versamail 3.5.5) doesn't support ActiveSync with security policies.  Ya, ya, time to upgrade to a real phone...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-8969197487522260413?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/XFrlhSMc_B4" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/06/palm-treo-755p-and-exchange.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-3845617429235168410</guid><pubDate>Mon, 08 Jun 2009 02:17:00 +0000</pubDate><atom:updated>2009-06-08T08:52:53.077-05:00</atom:updated><title>Java Email Server 2.0 Beta 1 Released</title><description>There have been &lt;a href="http://www.ericdaugherty.com/blog/2008/01/java-email-server-20-branch.html" target="_blank"&gt;multiple efforts&lt;/a&gt; started over time to create a modernized version of JES (It is an 8 year old fork of an &lt;a href="http://crsemail.sourceforge.net/" target="_blank"&gt;even older project&lt;/a&gt;) that would incorporate features more or less expected from a up-to-date MTA/MDA. I'm happy to announce that Andreas Kyrmegalos has stepped forward and developed a heavily revised and augmented version of Java Email Server that will be released as 2.0 Beta 1. Staying true to a gui-less configuration approach hasn't prevented a host of new features to be introduced.&lt;div class="im"&gt;&lt;br /&gt;While the changes are too numerous to cover in this announcement, I wanted to highlight a few of the more important changes:&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;TLS/SSL Support&lt;/li&gt;&lt;li&gt;Configurable sandboxing&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Support for white/blacklisting&lt;/li&gt;&lt;li&gt;Support for spam filtering/virus checking via amavisd-new using a dual MTA approach&lt;br /&gt;&lt;/li&gt;&lt;div class="im"&gt;   &lt;li&gt;Data directories are now configurable (incoming/outgoing email storage)&lt;/li&gt;   &lt;/div&gt;&lt;li&gt;New Service Wrapper (Tanuki Java Service Wrapper)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;More efficient mail dispatching to multiple users at a single domain&lt;/li&gt;&lt;li&gt;Cleaner shutdown process&lt;/li&gt;&lt;li&gt;Mail transactions with mail servers employing reverseDNS checks (useful for JES instances on a dynamic IP)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;More efficient memory handling&lt;/li&gt;&lt;li&gt;On the fly POP3/SMTP port listening switching&lt;br /&gt;&lt;/li&gt;&lt;div class="im"&gt;   &lt;li&gt;Interfaces to enable extension modules&lt;/li&gt;   &lt;li&gt;Migration tool for JES 1.6.1&lt;/li&gt;   &lt;/div&gt;&lt;li&gt;Introduction of an automated testing framework&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Improved MIME header parsing support&lt;/li&gt;&lt;li&gt;8BITMIME, SIZE extensions support&lt;/li&gt;&lt;li&gt;SASL MD5-DIGEST, GSS-API support&lt;br /&gt;&lt;/li&gt;&lt;li&gt;and MUCH MUCH more.&lt;/li&gt;&lt;/ul&gt;&lt;div class="im"&gt; JES is now dependent on JDK 1.5. The existing 1.6.x branch will continue to be available to support JDK 1.4.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt; Project management is being carried out using Maven.&lt;br /&gt;&lt;br /&gt;JES is also getting a new license. The existing GPL license was due to the original GPL license of &lt;a href="http://crsemail.sourceforge.net/" target="_blank"&gt;CRSMail&lt;/a&gt;.  CRSMail has now been &lt;a href="http://sourceforge.net/forum/forum.php?forum_id=420204" target="_blank"&gt;released into the public domain,&lt;/a&gt; allowing JES to be re-licensed under a BSD Style license.&lt;br /&gt;&lt;div class="im"&gt;&lt;br /&gt;I am also launching a new &lt;a href="http://groups.google.com/group/java-email-server"&gt;Google Group&lt;/a&gt; to facilitate a more open support structure. Please post all questions about JES to &lt;a href="http://groups.google.com/group/java-email-server"&gt;this group&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt; This initial release is a Beta. It has been used in production environments, tested under Windows XP, Ubuntu and Windows Vista on single and multi core systems and should be solid, but it is possible that some issues may exist with specific configurations/environments. I encourage everyone to give this a try and provide feedback. The goal of this version is to provide a much needed step forward for JES while retaining the simplicity and ease of configuration and deployment. Let us know if this release achieves the goal.&lt;br /&gt;&lt;br /&gt;The 2.0 Beta 1 release is available to download from the JES Home Page and a version 2 branch resides at sourceforge's subversion repository. Give it a spin and post your comments in the &lt;a href="http://groups.google.com/group/java-email-server"&gt;Google Group&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-3845617429235168410?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/4iaWIlDZse0" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/06/java-email-server-20-beta-1-released.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-6300851167899635643</guid><pubDate>Sat, 06 Jun 2009 02:05:00 +0000</pubDate><atom:updated>2009-06-05T21:06:00.270-05:00</atom:updated><title>Java Email Server (JES) Eclipse Plugin</title><description>&lt;blockquote&gt;&lt;/blockquote&gt;There has been a flurry of activity on the Java Email Server front recently.  A beta release of JES 2.0 is imminent, but today I'm announcing the availability of an &lt;a href="http://jesplug-in.sourceforge.net/"&gt;Eclipse Pluign for JES&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;An Eclipse plugin?  Isn't JES an email server?  Yep.  Here is the introduction from the project page:&lt;br /&gt;&lt;blockquote&gt;Suppose that you developed a service in your application that send mails to clients (confirmation, cancellation, alert, etc...) and you want to test it and view the layouts of theses mails? Most probably, you will use your enterprise mail server and your professional account as test account.&lt;/blockquote&gt;&lt;blockquote&gt;But wasting long time waiting to receive test mails? connection problems? want to test cc or bcc? your professional mail account is full of test mails? this plug-in can help, it launch a local instance of JES mail server for test use, no installation is needed, easy to configure and provide accounts management (you can add as many accounts as you want).&lt;/blockquote&gt;The project, &lt;a href="http://jesplug-in.sourceforge.net/"&gt;JES email server launcher Eclipse plug-in&lt;/a&gt;, or &lt;a href="http://jesplug-in.sourceforge.net/"&gt;jesplugin-in&lt;/a&gt;, was written by Nabil Dridi.  Nabil is a developer from Tunisia, further expanding the list of countries that have helped grow JES.  Thanks to Nabil and all the others who have helped out over the years!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nabil has done a great job putting this plugin together I and recommend it for anyone using JES as a development resource.  Give it a try!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-6300851167899635643?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/4gNLw3-MS9s" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/06/java-email-server-jes-eclipse-plugin.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-9161885766379390769</guid><pubDate>Fri, 05 Jun 2009 01:06:00 +0000</pubDate><atom:updated>2009-06-04T20:06:24.826-05:00</atom:updated><title>Second Life</title><description>Reading through Google Reader today I came across a &lt;a href="http://www.schneier.com/blog/archives/2009/06/im_being_interv.html"&gt;post by Bruce Schneier&lt;/a&gt; mentioning that he would be interviewed in Second Live today.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My first thought: Second Life? Oh ya, I remember that.  That still exists?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Not long ago I couldn't open up my feed reader without endless discussion of Second Life.  Every company was talking about creating a virtual presence.  There were discussions of an alternate currency, virtual economy, money laundering, and of course the &lt;a href="http://www.gamepolitics.com/2006/12/21/second-life-event-interrupted-by-flying-penis-attack"&gt;flying penis attacks&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Fast forward two years, and my reaction to a post about second Life is 'really, that still exists'?  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Things move fast on the web.  What is hot today is not tomorrow (remember &lt;a href="http://www.hotornot.com/"&gt;hot or not&lt;/a&gt;?).  MySpace was going to take over the world.  Now it is FaceBook and Twitter.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As a late comer to &lt;a href="http://twitter.com/eric_daugherty"&gt;Twitter&lt;/a&gt; and one who still avoids FaceBook, I wonder how we'll view each two years from now.  Granted, both have an adoption rate that I believe surpasses MySpace and Second Life, and comparing Twitter to Second Life is beyond Apples and Oranges, but if we've learned anything in the past decade, it is that nothing lasts forever (or even very long) on the web.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-9161885766379390769?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/mqZzerWLu5s" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/06/second-life.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-7136309008611335837</guid><pubDate>Wed, 03 Jun 2009 12:56:00 +0000</pubDate><atom:updated>2009-06-03T09:13:12.946-05:00</atom:updated><title>Fed up with my Treo 755p</title><description>I'm done.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've been a user of Palm OS devices for over a decade now, and I'm fed up.  My current phone, the Treo 755p is annoying me on a near-daily basis.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've been a huge fan of the Palm OS for years.  Their early devices were groundbreaking (I started with the Palm Personal, and loved the Palm V).  They enabled me to track my personal information and provided a platform for applications (OK, games).  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I loved the evolution to the Treo line.  Is started with the Treo 300, and I owned the 600, 650, and now 755p.  For a brief moment I had a Samsung i760 but quickly fled back to the 755p.  I missed the ease of use and simplicity of the Treo form factor and UI.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But the OS and hardware line has gone on too long.  My phone crashes too often, I spent 10 minutes this morning figuring out why my headset unpaired from my Treo, and I'm tired of having a sub-par web browser.  And when did Palm, the king of 3rd party apps, become a developer wasteland?  Yes, I know, when the iPhone was released.  I even wrote my own &lt;a href="http://www.ericdaugherty.com/java/palm/trainschedule/"&gt;Palm applications&lt;/a&gt; back in the Palm V days.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway, I'm done.  I need to move to a new phone.  Windows Mobile phones are out of the picture.  They are just too big of a departure from the usability of Palm devices that I believe is critical.  The iPhone does beckon, as it has huge 3rd party support, a great browser and screen, and integrates with Outlook's Active Sync.  The other option is the Palm Pre.  As a long time Palm fan I'm very hopeful that the Pre will reignite the Palm brand and yield another decade of great devices.  The early reviews are solid but not overwhelming.  It is version 1 of a new OS.  As a long time fan of a physical keyboard the Pre does seem to be an ideal solution.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm also under contract with Verizon, and neither of my options is available on their network today.  There are rumors of the Pre at the end of the year and even rumors of an iPhone on Verizon in the future.  It will be an interesting week as the Pre launches Saturday and Apple's WWDC takes place next week.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We'll see what shakes out in the next week or so, and then I'll finalize my migration plans.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-7136309008611335837?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/dufdNnftUzE" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/06/fed-up-with-my-treo-755p.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-4087949379827632285</guid><pubDate>Fri, 29 May 2009 01:34:00 +0000</pubDate><atom:updated>2009-05-28T20:34:54.735-05:00</atom:updated><title>Chrome vs. Firefox</title><description>Firefox is great.  I've been a fan for a long time and it was my exclusive browser for years.  However, I've recently noticed more crashes and instability and I decided to try an alternative.  I installed Chrome a while ago but it has sat mostly dormant on my drive.  A week ago I decide to make the switch.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, this isn't really a fair comparison.  My Firefox profile has years of bloat and plugins.  Comparing this to a pristine Chrome install is certainly not Apples to Apples.  But that said...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Chrome's model of one process per tab seems to be much more solid than Firefox's single process approach.  I have not had a single crash or general 'Not Responding' issue with Chrome.  However, I have noticed that switching to tabs that I have not used recently often triggered a delay and furious disk activity.  It is a trade off, but I think the Chrome approach is preferable.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Search - I'm used to hitting the / key and typing to search within a page.  It is Ctrl-F in Chrome.  Ctrl-F is probably more consistent with other apps, but muscle memory is tough to change.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;File Downloads - I'm used to using a plugin on Firefox (Download Statusbar) and I like the Firefox plugin better than the Chrome default.  Specifically I like the ability to pause, resume, and copy a download URL.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Chrome window itself is very googley, and by that I mean sparse. There is no status bar, only a link display when you select or hover hypertext.  There is no title bar and so far I have not added any new toolbars.  I really like the ability to move tabs into their own window or a separate window.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The one feature I miss the most is the ability to create shortcut bookmarks to search functions.  For Wikipedia and IMDB, I have shortcuts created so that I can type 'imdb start trek' in the address bar or 'wiki Star Trek' and it will take me to the search result page.  I'm not sure if you can do this in Chrome but if you can I have not found it yet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I also find that Chrome's built in spell checker is inconsistent.  It does not seem to work at all in Blogger's edit box, but in other cases it works fine.  Obviously this is annoying.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are a lot of similarities and it is obvious the Chrome team set out to build a 'better Firefox', as opposed to a radical new approach.  The bottom line is that both browsers work well and either could serve as my default.  For now though, I'm going to continue the Chrome experiment.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-4087949379827632285?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/RIkdGgTxtyo" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/05/chrome-vs-firefox.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-8475654609629913331</guid><pubDate>Mon, 25 May 2009 19:15:00 +0000</pubDate><atom:updated>2009-05-25T18:44:00.595-05:00</atom:updated><title>Star Trek and Caprica</title><description>In addition to catching up on yard work and playing with the kids, I spent some time this weekend catching up on my scifi movies.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I finally made it to the theater to see Star Trek.  I was very impressed with the movie overall and especially with how they positioned the storyline.  Without giving too much away, they setup the story to allow them to continue with this cast in future movies without endless harping about continuity and other concerns you can imagine from a rabid fan base.  I thought it was brilliant.  The overall movie and cast were great.  It 'hit every note' it needed to, and the actors were great.  Scotty was my favorite but Spock was very well cast as well. I'm excited to see the next installment.  And about the lens flare...  Yes, there was a bit of that.  I really noticed it in the first 1/3 of the movie but after that it either toned down or I got used to it.  I did like style though, even if it was a bit over done.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Caprica, the pilot for a series 'prequel' to Battlestar Galactica, was release straight to video.  The series is scheduled to begin airing in 2010.  The series is set 58 years before the events of BSG and depicts a pre/early-Cylon Caprica.  While it takes place in the 'BSG' world there is a stark contrast between the relative 'low-tech' society of BSG and the 'shiny high tech' Caprica.  The series could be interesting, but anyone expecting a show resembling BSG will be disappointed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm sure it will be weeks until I make it to see the new Terminator.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-8475654609629913331?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/Dd4qCsE7soM" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/05/star-trek-and-caprica.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-4669560872923708655</guid><pubDate>Tue, 12 May 2009 15:04:00 +0000</pubDate><atom:updated>2009-05-25T18:44:54.929-05:00</atom:updated><title>Simple Build Tool</title><description>As part of my foray into Scala I came across a new build tool called &lt;a href="http://code.google.com/p/simple-build-tool/"&gt;Simple Build Tool (sbt)&lt;/a&gt;.  As the website states, "&lt;tt&gt;sbt&lt;/tt&gt; is a simple build tool for Scala projects that aims to do the basics well."&lt;br /&gt;&lt;br /&gt;I didn't really come across sbt, it came to me.  Tim and Mark commented on my &lt;a href="http://www.ericdaugherty.com/blog/2009/04/maven-versus-ant.html"&gt;Maven vs. Ant&lt;/a&gt; post and I decided to check it out.&lt;br /&gt;&lt;br /&gt;It is similar to maven in its dependency management and configuration by convention.  If you do need explicit configuration you write it as actual scala code, which is interesting.  Obviously it is powerful.  You can do pretty much anything, but the flexibility and relative immaturity (it is version 0.4.5) of the project makes it difficult at times to determine how to do something.&lt;br /&gt;&lt;br /&gt;sbt runs as an interactive session, so it solves the java startup overhead by just staying up.  In practice this actually worked well for me, and provided the fastest compile/package times of any of the tools I used.&lt;br /&gt;&lt;br /&gt;For the issues and questions I did have, the support in the google group was great.  Mark especially helped me track down and solve questions and issues I had.  Some were my own learning curve, some resulted in patches to sbt.  The last issues we worked through was making an executable jar, which turned out to be a platform issue (/ versus \) that is getting patched.&lt;br /&gt;&lt;br /&gt;If you are working with Scala I encourage you to give it a spin.  I think it has a future as it continues to develop and gain users.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-4669560872923708655?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/UqodKG8oNjc" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/05/simple-build-tool.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-2055306703377993081</guid><pubDate>Sat, 09 May 2009 20:04:00 +0000</pubDate><atom:updated>2009-05-09T15:09:22.398-05:00</atom:updated><title>iTunes Export Scala 0.2 Released</title><description>I released a new version of my iTunes Export Scala utility.&lt;br /&gt;&lt;br /&gt;This is a port of the original .Net application to Scala.  &lt;a href="http://www.scala-lang.org/"&gt;Scala&lt;/a&gt; is a hybrid Object Oriented/Functional language that compiles to Java class files and executes on the JVM.  This port enables Mac OS X users to access iTunes Export features. The original iTunes Export application was written in .Net and does not run on Mac OS X.&lt;br /&gt;&lt;br /&gt;iTunes Export exports your iTunes playlists as M3U or WPL files, allowing you to setup playlists in iTunes and use them with other software or devices.&lt;br /&gt;&lt;br /&gt;This release adds support for Extended M3U, WPL, and ZPL playlist formats.  It also provides the ability to override the default (or arbitrary) path prefix for the music files.&lt;br /&gt;&lt;br /&gt;The project home page is here: &lt;a href="http://www.ericdaugherty.com/dev/itunesexport/scala/"&gt;http://www.ericdaugherty.com/dev/itunesexport/scala/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The project is hosted at Google Code.  You can check out the &lt;a href="http://code.google.com/p/itunesexport-scala/"&gt;Google Code project home page&lt;/a&gt; if you want to browse the source tree or track issues, etc.&lt;br /&gt;&lt;br /&gt;I have received several new feature requests and bug reports recently and I plan on getting to them soon. Don't be afraid to ask for new features (eric@ericdaugherty.com).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-2055306703377993081?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/f-Kph-bvfmw" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/05/itunes-export-scala-02-released.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-2601132030122110559</guid><pubDate>Sat, 09 May 2009 19:50:00 +0000</pubDate><atom:updated>2009-05-09T15:02:44.215-05:00</atom:updated><title>Google Code</title><description>I've always hosted my open source applications at &lt;a href="http://sourceforge.net/"&gt;SourceForge&lt;/a&gt;.  When I first started developing open source applications, it was the de facto standard.  When it came time to find a host for my new &lt;a href="http://www.ericdaugherty.com/dev/itunesexport/scala/"&gt;iTunesExport-Scala application&lt;/a&gt; I decided to check out the landscape.  The primary sites I see these days are &lt;a href="http://code.google.com/"&gt;Google Code&lt;/a&gt; and &lt;a href="http://github.com/"&gt;GitHub&lt;/a&gt;.  Since I have not yet embraced Git I decided to give Google Code a try.&lt;br /&gt;&lt;br /&gt;What do I think?  I like it.  All the Google applications seem to have a common theme: they are simple to use and cover the core 80% well.  In fact, their approach is a lot like Apple's approach.  Google is just an uglier Apple. :)&lt;br /&gt;&lt;br /&gt;Setting up Subversion, doing releases, and editing the home page were all much easier than on SourceForge (even after their redesign).  The site is fast, and integrates with Google Analytics so I can track traffic in the same tool I use for my primary website.&lt;br /&gt;&lt;br /&gt;The bottom line: It just works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-2601132030122110559?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/nAkOsqEpLWQ" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/04/google-code.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-8627357009466610967</guid><pubDate>Sat, 25 Apr 2009 17:11:00 +0000</pubDate><atom:updated>2009-04-25T12:11:50.773-05:00</atom:updated><title>iTunes Export Scala 0.1 Released</title><description>I am launching a new project: &lt;a href="http://www.ericdaugherty.com/dev/itunesexport/scala/"&gt;iTunesExport Scala&lt;/a&gt;.  This is a port of the original .Net application to Scala.  &lt;a href="http://www.scala-lang.org"&gt;Scala&lt;/a&gt; is a hybrid Object Oriented/Functional language that compiles to Java class files and executes on the JVM. &lt;br /&gt;&lt;br /&gt;I am launching this port to enable Mac OS X users to access iTunes Export features.  The original iTunes Export application was written in .Net and does not run on Mac OS X.&lt;br /&gt;&lt;br /&gt;The project home page is here: &lt;a href="http://www.ericdaugherty.com/dev/itunesexport/scala/"&gt;http://www.ericdaugherty.com/dev/itunesexport/scala/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The project is hosted at Google Code.  You can check out the &lt;a href="http://code.google.com/p/itunesexport-scala/"&gt;Google Code project home page&lt;/a&gt; if you want to browse the source tree or track issues, etc.&lt;br /&gt;&lt;br /&gt;This is my first Scala application so I would appreciate any feedback on the source code.  My goal is to continue to add features until parity is reached between this and the original.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-8627357009466610967?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/jlIweeWnZVQ" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/04/itunes-export-scala-01-released.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-9150399336752248391</guid><pubDate>Sat, 25 Apr 2009 16:24:00 +0000</pubDate><atom:updated>2009-04-25T11:37:48.573-05:00</atom:updated><title>Maven versus Ant</title><description>The Java world has two popular build tools, &lt;a href="http://ant.apache.org/"&gt;Ant&lt;/a&gt; and &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt;.  I've been using Ant for as long as I can remember.  Maven is a newer tool aimed at addressing some of the pains of Ant and also providing an more complete experience.&lt;br /&gt;&lt;br /&gt;For a long time I avoided Maven.  I tried out Maven 1.0 early on and was frustrated with the lack of control and underdeveloped eco-system.  With its dependency managment system, dealing with dependencies that are not in public repositories is annoying, and early on most libraries didn't have versions in the public repositories.&lt;br /&gt;&lt;br /&gt;I'm working on a Scala port of my iTunes Export application and I had to decide how I wanted to build the project.  Here are the pros/cons I saw:&lt;br /&gt;&lt;br /&gt;Ant&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Well Known - I know how it works, and there are tons of examples&lt;/li&gt;&lt;li&gt;Malleable - I can make it do what I want.  I never have to fight the tool to make it work the way i want.&lt;/li&gt;&lt;/ul&gt;Maven&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Less boilerplate code - Maven provide you many features, like compling and assembling packages 'for free'.  &lt;/li&gt;&lt;li&gt;Dependency Management - Project dependencies are automatically downloaded from public repositories and your releases can be uploaded to public repositories for distribution.&lt;/li&gt;&lt;li&gt;Its the new Black - It is the current 'standard'.&lt;/li&gt;&lt;/ul&gt;For iTunesExport Scala I'm using Ant, although I am providing a Maven pom file as well for developers that prefer Maven.  The basic Maven project was easy to setup, but I found myself struggling to make other things work, like unit testing (It doesn't work out of the box with ScalaTest) and packaging.  In Ant, I already have predefined targets for most of what I want, and it takes just a few seconds to tweak to my exact desires.&lt;br /&gt;&lt;br /&gt;For larger projects, I think Maven is worthwhile.  The dependency managment is important as projects grow and the Maven ecosystem is large and growing.  For small projects, I'm sticking with Ant.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-9150399336752248391?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/Z3RGpwWX2h8" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/04/maven-versus-ant.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-4662621072614655020</guid><pubDate>Thu, 23 Apr 2009 03:25:00 +0000</pubDate><atom:updated>2009-04-22T22:30:27.457-05:00</atom:updated><title>iTunes XML Parsing - .Net vs. Scala - UPDATE</title><description>&lt;span&gt;In an &lt;a href="http://www.ericdaugherty.com/blog/2009/04/itunes-xml-parsing-net-vs-scala.html"&gt;earlier post&lt;/a&gt; I compared a .Net and Scala implementation of an iTunes Music Library XML parser.  The Scala version took a long time to 'load the XML file from disk'.  Since then I realized that the default behavior of the parsers is to validate the Schema.  I had disabled this behavior in the .Net version but not the Scala/Java version. Much of the 3 seconds to 'load' the XML is really an external HTTP request to download the xsd file and perform the validation. However, using the Scala library I do not see an easy way to disable the Schema validation (Under the covers the Scala library is delegating to existing Java APIs).&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-4662621072614655020?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/EFA5Q1-Z3zQ" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/04/itunes-xml-parsing-net-vs-scala-update.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-7156023842135859636</guid><pubDate>Tue, 21 Apr 2009 22:15:00 +0000</pubDate><atom:updated>2009-04-21T18:00:18.718-05:00</atom:updated><title>Oracle buys Sun?</title><description>Oracle and Sun announced an agreement for Oracle to acquire Sun.  What do I think?&lt;br /&gt;&lt;br /&gt;It's better than IBM.  And it is aimed at IBM.&lt;br /&gt;&lt;br /&gt;IBM and Sun seemed to have a lot of overlap.  Certainly IBM has a well defined hardware business, and acquiring Sun's hardware business doesn't really help.  IBM is heavily invested in Java so I'm sure they would have enjoyed more influence over its growth and direction, but it didn't really seem compelling.&lt;br /&gt;&lt;br /&gt;Oracle on the other hand puts the final piece of the puzzle together.  Oracle is now a credible Enterprise IT partner.  With the addition of Sun's hardware business, Oracle can compete with IBM at nearly every level.  If I'm a large company, I can turn to Oracle for:&lt;br /&gt;&lt;br /&gt;Storage Solutions&lt;br /&gt;Servers&lt;br /&gt;Database&lt;br /&gt;Enterprise Software Packages&lt;br /&gt;Custom Enterprise Software Development (Java, WebLogic, etc.)&lt;br /&gt;&lt;br /&gt;If you are a large company, you can either hand your checkbook over to Oracle or IBM.  Or Microsoft+HP.&lt;br /&gt;&lt;br /&gt;As a user of Java and MySQL, I'm hopeful that they will at least continue on as is and hopefully improve.  I don't expect any real changes in either for a while though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-7156023842135859636?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/S4Tt12wA_ZM" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/04/oracle-buys-sun.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-6131083264823748482</guid><pubDate>Wed, 15 Apr 2009 01:15:00 +0000</pubDate><atom:updated>2009-04-22T22:25:21.815-05:00</atom:updated><title>iTunes XML Parsing - .Net vs. Scala</title><description>As part of my &lt;a href="http://www.ericdaugherty.com/dev/itunesexport"&gt;iTunesExport&lt;/a&gt; utility I wrote a (C#.Net) module to parse the iTunes XML file and provide two simple collections, Playlists and Tracks.  As part of my effort to learn Scala, I rewrote this module in Scala.  While the libraries don't provide the &lt;span style="font-style: italic;"&gt;exact &lt;/span&gt;same interface and functinality, they are effectively the same.  The stats:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Source_lines_of_code"&gt;(Physical) Line of Code&lt;/a&gt; count:&lt;br /&gt;&lt;br /&gt;.Net: 459&lt;br /&gt;Scala: 226&lt;br /&gt;&lt;br /&gt;The Scala version accomplished the same functionality in 1/2 the lines of code.  While LOC count is a bit arbitrary, I think it is an important point.  The Scala code is much more concise, but maintains or even improves the readability (if you have a reasonable familiarity with Scala).  In this specific case Scala's handling of public properties provided a big reduction.  Ex:&lt;br /&gt;&lt;br /&gt;Scala:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;val trackId: Double = ...&lt;br /&gt;&lt;/pre&gt;.Net:&lt;pre&gt;&lt;br /&gt;private string id;&lt;br /&gt;&lt;br /&gt;public string Id&lt;br /&gt;{&lt;br /&gt; get{ return id; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;While it may seem that this provides much of the savings, the Scala version provides a much more verbose toString method, so some of the per-property savings is actually understated in this comparison.&lt;br /&gt;&lt;br /&gt;While developing I did find myself consistently following the pattern:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Identify logical functionality I wanted to extract into a helper method&lt;/li&gt;&lt;li&gt;Writing code for helper method&lt;/li&gt;&lt;li&gt;Realize it was just a single line and moving back inline&lt;/li&gt;&lt;/ul&gt;Simply put, I found the structure and features of the Scala language very well suited to write high level understandable code that performed the same functionality in fewer lines of code, compared to C# or Java.&lt;br /&gt;&lt;br /&gt;Performance was something else.  As a functional language Scala is well suited to be a scalable language.  It also runs on the JVM, benefiting from a significant amount of work building a high performance virtual environment.  That said, this implemenation was purely single threaded.  The initial results were somewhat surprising:&lt;br /&gt;&lt;br /&gt;Scala 4,800 ms&lt;br /&gt;.Net 650 ms&lt;br /&gt;&lt;br /&gt;That seemed like a pretty significant difference, so I took a deeper look.  The Scala library to load the XML file from disk took nearly 3 seconds!  This is a huge hit and accounts for much of the performance difference.  The remining functionality took ~1,800 ms, nearly 3x the entire .Net solution.  Where does the time go?&lt;br /&gt;&lt;br /&gt;~3000 ms - reading the XML file from disk using Scala's XML library&lt;br /&gt;~100 ms - parsing the main library attributes.&lt;br /&gt;~1700 ms - parsing the tracks&lt;br /&gt;~60 ms - parsing the playlists&lt;br /&gt;&lt;br /&gt;Clearly loading the file and parsing the tracks are the biggest targets.  I'll leave loading the XML out of scope as it is a Scala library and focus on the tracks.  For each of entities (Library, Playlist, Track) I use a Trait that parses the plist XML into a Map and then assign the properties from the map.  For each track, parsing the XML into a Map took 1 ms or less, but assigning the variables from the map (and doing any type conversions) took up to 4 ms but more commonly took 1 ms or less. At the single ms level the simple act of measuring introduces a significant impact, so I'm not sure these numbers are meaningful.&lt;br /&gt;&lt;br /&gt;With over 2600 tracks in the library, even spending 1 ms per track is forever (and indeed the average time per track without the measurement was closer to .65 ms).  The additional complexity introduced by my Scala approach caused a significantly slower execution time.  In the end, clean code is not necessarily fast code.&lt;br /&gt;&lt;br /&gt;That said, this test does not really hit on the strength of Scala, which is scaling multi-threaded environments.  With less than 8 hours experience writing Scala, I'm sure my code is far from efficient.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Update: I realized that the default behavior of the parsers is to validate the Schema.  I've disabled this behavior in the .Net version but not the Scala/Java version.  Much of the 3 seconds to 'load' the XML is really an external HTTP request and the validation.  However, using the Scala library I do not see an easy way to disable the Schema validation.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-6131083264823748482?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/6_i34yphDbI" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/04/itunes-xml-parsing-net-vs-scala.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-1771211542553993240</guid><pubDate>Tue, 14 Apr 2009 23:05:00 +0000</pubDate><atom:updated>2009-04-14T18:19:02.905-05:00</atom:updated><title>Apple's plist XML (Properties List) is PAINFUL</title><description>I started poking around with Scala and tried to re-implement the iTunes Music Library parser &lt;a href="http://www.ericdaugherty.com/dev/itunesexport/"&gt;I wrote in .Net&lt;/a&gt; as a &lt;a href="http://www.scala-lang.org/"&gt;Scala&lt;/a&gt; library to give me a real problem to solve.  This effort reminded me of how painful Apple's plists are to work with.&lt;br /&gt;&lt;br /&gt;Apple saves the iTunes Library information in a binary file and as well as an XML file using its &lt;a href="http://developer.apple.com/documentation/Darwin/Reference/ManPages/man5/plist.5.html"&gt;plist format&lt;/a&gt;.  It is great that the provide the XML data that enables tools like &lt;a href="http://www.ericdaugherty.com/dev/itunesexport/"&gt;iTunesExport&lt;/a&gt;, but they certainly could have made working with the XML easier.&lt;br /&gt;&lt;br /&gt;Simply put, they store key value pairs as:&lt;br /&gt;&lt;blockquote&gt;&amp;lt;key&amp;gt;Artist&amp;lt;/key&amp;gt;&amp;lt;string&amp;gt;U2&amp;lt;/string&amp;gt;&lt;/blockquote&gt;Three is no clean way to associate the 'value' with a 'key' other than the order of the nodes in XML.  This makes things like XPath parsing very difficult.&lt;br /&gt;&lt;br /&gt;For a more in depth explanation, &lt;a href="http://www.cakoose.com/wiki/plist_xml_is_pointless"&gt;read this post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I was able to get the Scala library to parse the plist but it wasn't as clean as I hoped.  If I stay motivated I may finish up a Scala version of the tool to provide a version that will work on OS X (Scala compiles down to Java classes).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-1771211542553993240?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/juN_SUqpZNY" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/04/apples-plist-xml-properties-list-is.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-1470182524081494881</guid><pubDate>Fri, 10 Apr 2009 18:55:00 +0000</pubDate><atom:updated>2009-04-10T14:01:14.304-05:00</atom:updated><title>Google Provide Personal Transportation Device</title><description>Google posted an &lt;a href="http://googleblog.blogspot.com/2009/04/designing-lean-green-energy-saving.html"&gt;interesting 6 minute video tour&lt;/a&gt; of their new container data center.  It's a reasonably interesting video, but my favorite part is the "Google provided personal transportation device".&lt;br /&gt;&lt;br /&gt;The inside views of the containers are interesting.  Obviously all the equipment here is tailored for maximum efficiency.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-1470182524081494881?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/JtnCAMWxwzE" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/04/google-provide-personal-transportation.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-6755847469911861486</guid><pubDate>Thu, 26 Mar 2009 00:47:00 +0000</pubDate><atom:updated>2009-03-25T20:22:40.623-05:00</atom:updated><title>HDR Photography</title><description>I decided to try creating some HDR photographs during my recent &lt;a href="http://www.ericdaugherty.com/blog/2009/03/achilles-vs-grand-canyon.html"&gt;trip&lt;/a&gt; (with my &lt;a href="http://www.ericdaugherty.com/blog/2009/03/tripod-gitzo-2932.html"&gt;new Tripod&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Here are a few samples (using Photomatix).  Click the images for full size views.&lt;br /&gt;&lt;br /&gt;Original 'normal exposure' image:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ericdaugherty.com/blog/uploaded_images/DSC_5048-755222.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 213px;" src="http://www.ericdaugherty.com/blog/uploaded_images/DSC_5048-754739.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;HDR Image (Tone Compressor):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ericdaugherty.com/blog/uploaded_images/DSC_5048_HDR2-756349.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 213px;" src="http://www.ericdaugherty.com/blog/uploaded_images/DSC_5048_HDR2-755569.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;HDR Image (Detail Enhancer):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ericdaugherty.com/blog/uploaded_images/DSC_5048_HDR3-734705.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 213px;" src="http://www.ericdaugherty.com/blog/uploaded_images/DSC_5048_HDR3-733984.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are tons of tweaks with both Tone Compressor and Detail Enhancer so you can make each one look radically different.  For these landscape shots both HDR options look much richer than the original normal exposure.  The Detail Enhancer is more surreal and obviously not a traditional photograph where I think the Tone Compressor done right could look like a traditional picture (just with more dynamic range than normally seen).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-6755847469911861486?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/WToP-dP1kjE" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/03/hdr-photography.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-1767184863835722366</guid><pubDate>Thu, 26 Mar 2009 00:30:00 +0000</pubDate><atom:updated>2009-03-25T20:19:58.255-05:00</atom:updated><title>Tripod: Gitzo 2932</title><description>I recently bought a Gitzo 2930 Tripod.  It is part of their Basalt line, which is between Aluminum and Carbon Fiber.  I couldn't justify the cost difference for a Carbon Fiber tripod but I wanted a light tripod that would be with me for years.&lt;br /&gt;&lt;br /&gt;So far, I've been very pleased with the results.  I carried it down into the Grand Canyon on my &lt;a href="http://www.ericdaugherty.com/blog/2009/03/achilles-vs-grand-canyon.html"&gt;recent hike&lt;/a&gt; for some self portraits and bracketed shots for HDR.&lt;br /&gt;&lt;br /&gt;I really like the build quality and locking mechanism for the legs (the kind you twist, but they work and require only about 1/2 turn).  I can setup the tripod in seconds and it has been stable for everything I need.&lt;br /&gt;&lt;br /&gt;This model does come with a center column to extend up, which I recently used to get a picture from an angle I could not have otherwise achieved.  I had the camera up above my head angled down, and used live view to compose the shot.  The hook to attach a weight/bag really came in handy when I did this.  I was really surprised at how much additional stability it provided.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-1767184863835722366?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/ohikrhvaTQk" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/03/tripod-gitzo-2932.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2809594561952468542.post-7160462438440359240</guid><pubDate>Wed, 25 Mar 2009 23:27:00 +0000</pubDate><atom:updated>2009-03-25T18:41:31.545-05:00</atom:updated><title>Achilles vs. the Grand Canyon</title><description>No, I didn't hike to the bottom.&lt;br /&gt;&lt;br /&gt;But, after my &lt;a href="http://www.ericdaugherty.com/blog/2008/11/surgery.html"&gt;Achilles surgery&lt;/a&gt; this past November I was very excited to get a real hike in.  I finished my physical therapy/rehab a few weeks ago and I am cleared for most activities that don't involve jumping.&lt;br /&gt;&lt;br /&gt;We started at the South Rim and hiked down 3 miles on the &lt;a href="http://en.wikipedia.org/wiki/Bright_Angel_Trail"&gt;Bright Angel Trail&lt;/a&gt;.  3 Miles may not seem like a lot (6 round trip), but it was also a 2,100 ft. drop (and climb) in elevation.  My ankle was a bit sore (as were a few other muscles) but overall my ankle did fine and I'm happy to be active again.&lt;br /&gt;&lt;br /&gt;Here is a shot back up the canyon from the 3 mile rest house.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ericdaugherty.com/blog/uploaded_images/DSC_5048-729019.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 213px;" src="http://www.ericdaugherty.com/blog/uploaded_images/DSC_5048-728565.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809594561952468542-7160462438440359240?l=www.ericdaugherty.com%2Fblog'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EricDaugherty/~4/9SANvmzdjYU" height="1" width="1"/&gt;</description><link>http://www.ericdaugherty.com/blog/2009/03/achilles-vs-grand-canyon.html</link><author>noreply@blogger.com (Eric)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item></channel></rss>
