<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Daniel E. Markle's Blog - Programming</title>
    <link>http://www.ashtech.net/~syntax/blog/</link>
    <description>Blatherings on Technology and Life</description>
    <dc:language>en</dc:language>
    <admin:errorReportsTo rdf:resource="mailto:" />
    <generator>Serendipity 1.2.1 - http://www.s9y.org/</generator>
    <managingEditor>syntax@ashtech.net</managingEditor>
<webMaster>syntax@ashtech.net</webMaster>

    <image>
        <url>http://ashtech.net/~syntax/blog/uploads/128blackcat.png</url>
        <title>RSS: Daniel E. Markle's Blog - Programming - Blatherings on Technology and Life</title>
        <link>http://www.ashtech.net/~syntax/blog/</link>
        <width></width>
        <height></height>
    </image>

<item>
    <title>JTableModel Implementation Null Gotchas</title>
    <link>http://www.ashtech.net/~syntax/blog/archives/123-JTableModel-Implementation-Null-Gotchas.html</link>
            <category>Programming</category>
    
    <comments>http://www.ashtech.net/~syntax/blog/archives/123-JTableModel-Implementation-Null-Gotchas.html#comments</comments>
    <wfw:comment>http://www.ashtech.net/~syntax/blog/wfwcomment.php?cid=123</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ashtech.net/~syntax/blog/rss.php?version=2.0&amp;type=comments&amp;cid=123</wfw:commentRss>
    

    <author>syntax@ashtech.net (Daniel E. Markle)</author>
    <content:encoded>
    A Java Swing user interface I am working on which makes extensive use of a custom &lt;a href=&quot;http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/table/TableModel.html&quot;&gt;JTableModel&lt;/a&gt; implementation was failing. In certain instances when my data structure changes, it purges empty cells. If the cursor was left in these cells while this was taking place, the table would become unresponsive, often requiring an application restart to fix.&lt;br /&gt;
&lt;br /&gt;
Watch for issues with &lt;code&gt;setValueAt&lt;/code&gt;, which in some cases can be called with invalid values. In particular if the cursor is editing a field, the table is not refreshed until the edit focus leaves the widget even if you try to force it with &lt;code&gt;validate()&lt;/code&gt; calls. In my instance the ideal fix was to add checks and do nothing instead of throwing exceptions.&lt;br /&gt;
&lt;br /&gt;
With &lt;code&gt;getValueAt&lt;/code&gt;, some table widget types choked on my default of null, which I was returning for invalid cells. Using an empty string instead of null for these invalid cells fixed this problem. 
    </content:encoded>

    <pubDate>Mon, 20 Oct 2008 18:29:51 -0400</pubDate>
    <guid isPermaLink="false">http://www.ashtech.net/~syntax/blog/archives/123-guid.html</guid>
    
</item>
<item>
    <title>JSPX, Tag Minimization, and Firefox 3</title>
    <link>http://www.ashtech.net/~syntax/blog/archives/120-JSPX,-Tag-Minimization,-and-Firefox-3.html</link>
            <category>Programming</category>
    
    <comments>http://www.ashtech.net/~syntax/blog/archives/120-JSPX,-Tag-Minimization,-and-Firefox-3.html#comments</comments>
    <wfw:comment>http://www.ashtech.net/~syntax/blog/wfwcomment.php?cid=120</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ashtech.net/~syntax/blog/rss.php?version=2.0&amp;type=comments&amp;cid=120</wfw:commentRss>
    

    <author>syntax@ashtech.net (Daniel E. Markle)</author>
    <content:encoded>
    Firefox 3 introduces a new behavior when your doctype is XHTML Strict; certain tags that do not allow minimization as per the spec no longer close anyway. For example, if you use a &lt;code&gt;&amp;lt;script src=&quot;blah.js&quot; /&amp;gt;&lt;/code&gt; tag in your heading, Firefox 3 will take the whole rest of the page as a script, which will result in a blank page. This is good as it enforces standards compliance, however jspx minimizes tags, so you may have &lt;code&gt;&amp;lt;script src=&quot;blah.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt; on your page, but the actual rendered page will minimize it.&lt;br /&gt;
&lt;br /&gt;
There are many ways to fix this issue by playing tricks on jspx, I recommend:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&amp;lt;script src=&quot;blah.js&quot;&amp;gt;&amp;lt;!-- //prevent jspx minimization --&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
This reminds me when I&#039;m working on the code why that comment is there. Hopefully this will be fixed in the jspx spec at some point. 
    </content:encoded>

    <pubDate>Wed, 17 Sep 2008 18:11:55 -0400</pubDate>
    <guid isPermaLink="false">http://www.ashtech.net/~syntax/blog/archives/120-guid.html</guid>
    
</item>
<item>
    <title>Spring Binary and Text Forms</title>
    <link>http://www.ashtech.net/~syntax/blog/archives/115-Spring-Binary-and-Text-Forms.html</link>
            <category>Programming</category>
    
    <comments>http://www.ashtech.net/~syntax/blog/archives/115-Spring-Binary-and-Text-Forms.html#comments</comments>
    <wfw:comment>http://www.ashtech.net/~syntax/blog/wfwcomment.php?cid=115</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ashtech.net/~syntax/blog/rss.php?version=2.0&amp;type=comments&amp;cid=115</wfw:commentRss>
    

    <author>syntax@ashtech.net (Daniel E. Markle)</author>
    <content:encoded>
    A project I am working on requires binary image files and form data to be submitted simultaneously.  This is rather easy to do with &lt;a href=&quot;http://springframework.org/&quot;&gt;Spring&lt;a&gt;, following the directions available in the latest documentation to &lt;a href=&quot;http://static.springframework.org/spring/docs/2.5.x/reference/mvc.html#mvc-multipart-forms&quot;&gt;handle file uploads in a form&lt;/a&gt;.  It does not mention there that you can mix form fields as well as file upload fields when doing this, but it works as expected. &lt;br /&gt;&lt;a href=&quot;http://www.ashtech.net/~syntax/blog/archives/115-Spring-Binary-and-Text-Forms.html#extended&quot;&gt;Continue reading &quot;Spring Binary and Text Forms&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 05 Jun 2008 18:52:40 -0400</pubDate>
    <guid isPermaLink="false">http://www.ashtech.net/~syntax/blog/archives/115-guid.html</guid>
    
</item>
<item>
    <title>PostgreSQL and Ruby on OS X</title>
    <link>http://www.ashtech.net/~syntax/blog/archives/112-PostgreSQL-and-Ruby-on-OS-X.html</link>
            <category>Programming</category>
    
    <comments>http://www.ashtech.net/~syntax/blog/archives/112-PostgreSQL-and-Ruby-on-OS-X.html#comments</comments>
    <wfw:comment>http://www.ashtech.net/~syntax/blog/wfwcomment.php?cid=112</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.ashtech.net/~syntax/blog/rss.php?version=2.0&amp;type=comments&amp;cid=112</wfw:commentRss>
    

    <author>syntax@ashtech.net (Daniel E. Markle)</author>
    <content:encoded>
    Here is the easiest process I have found for setting up &lt;a href=&quot;http://ruby-lang.org&quot;&gt;Ruby&lt;/a&gt; and &lt;a href=&quot;http://postgresql.org&quot;&gt;PostgreSQL&lt;/a&gt; on OS X Leopard at this time.&lt;br /&gt;
&lt;br /&gt;
I recommend &lt;a href=&quot;http://www.postgresqlformac.com/&quot;&gt;PostgreSQL for Mac&lt;/a&gt; instead of fink as it is more actively maintained and easier to install.  Note that when downloading, use the alternate download not the Sourceforge links, as the Sourceforge download is not current and has issues.  This installer places the PostgreSQL CLI commands in &lt;code&gt;/Library/PostgreSQL8/bin/&lt;/code&gt; and will auto-start PostgreSQL on system startup.  It includes some graphical tools, but I recommend ignoring them and and installing &lt;a href=&quot;http://www.pgadmin.org/&quot;&gt;pgAdmin III&lt;/a&gt; if you want an administration GUI (I usually just use the CLI tools).&lt;br /&gt;
&lt;br /&gt;
Ruby has a couple PostgreSQL gems, I recommend &lt;a href=&quot;http://rubyforge.org/projects/ruby-pg/&quot;&gt;ruby-pg&lt;/a&gt; which appears to be the only one actively maintained.  The easiest way to get it installed is to download the latest .gem, then run the following command to install it in the directory where you saved it (replace the version number as necessary):&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;PATH=$PATH:/Library/PostgreSQL/bin/ gem install pg-0.7.9.2008.02.05.gem&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t waste your time trying to find documentation for this gem online, point your browser at the documentation on your local machine, which for this version was at:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;file:///Library/Ruby/Gems/1.8/doc/pg-0.7.9.2008.02.05/rdoc/index.html&lt;/code&gt; 
    </content:encoded>

    <pubDate>Wed, 27 Feb 2008 10:14:44 -0500</pubDate>
    <guid isPermaLink="false">http://www.ashtech.net/~syntax/blog/archives/112-guid.html</guid>
    
</item>
<item>
    <title>Simple Preferences for Java</title>
    <link>http://www.ashtech.net/~syntax/blog/archives/106-Simple-Preferences-for-Java.html</link>
            <category>Programming</category>
    
    <comments>http://www.ashtech.net/~syntax/blog/archives/106-Simple-Preferences-for-Java.html#comments</comments>
    <wfw:comment>http://www.ashtech.net/~syntax/blog/wfwcomment.php?cid=106</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ashtech.net/~syntax/blog/rss.php?version=2.0&amp;type=comments&amp;cid=106</wfw:commentRss>
    

    <author>syntax@ashtech.net (Daniel E. Markle)</author>
    <content:encoded>
    When storing preferences for applications on Java, there is a built in Preferences API.  If you need full control of preference storage or need to change it from applications external to Java or manually, &lt;a href=&quot;https://www.ashtech.net/~syntax/blog/archives/33-JFig-Configuration-Utility-Cannot-Save.html&quot; &gt;one of the options I discussed last year&lt;/a&gt; may be better (if you need an XML file in a specific location for example), but if you just need simple cross-platform preference storage, the built in option is ideal.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Usage Summary&lt;/h4&gt;&lt;br /&gt;
&lt;code&gt;import java.util.prefs.Preferences;&lt;br /&gt;
&lt;br /&gt;
Preferences prefs = Preferences.userNodeForPackage( getClass() );&lt;br /&gt;
&lt;br /&gt;
prefs.get(&quot;keyName&quot;, &quot;default value&quot;);&lt;br /&gt;
&lt;br /&gt;
prefs.put(&quot;keyName&quot;, &quot;new value&quot;);&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
The JavaDoc for it is quite confusing, so try this &lt;a href=&quot;http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter10/Preferences.html&quot; &gt;tutorial on java.util.prefs.Preferences&lt;/a&gt; instead. 
    </content:encoded>

    <pubDate>Thu, 20 Dec 2007 18:42:11 -0500</pubDate>
    <guid isPermaLink="false">http://www.ashtech.net/~syntax/blog/archives/106-guid.html</guid>
    
</item>
<item>
    <title>Netbeans 6 Released</title>
    <link>http://www.ashtech.net/~syntax/blog/archives/105-Netbeans-6-Released.html</link>
            <category>Programming</category>
    
    <comments>http://www.ashtech.net/~syntax/blog/archives/105-Netbeans-6-Released.html#comments</comments>
    <wfw:comment>http://www.ashtech.net/~syntax/blog/wfwcomment.php?cid=105</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ashtech.net/~syntax/blog/rss.php?version=2.0&amp;type=comments&amp;cid=105</wfw:commentRss>
    

    <author>syntax@ashtech.net (Daniel E. Markle)</author>
    <content:encoded>
    &lt;a href=&quot;http://netbeans.org&quot;&gt;Netbeans 6&lt;/a&gt; has been released.  I have been using it since beta 1 and have found it an invaluable improvement over the old version.  The editor and layout is improved, and subversion support is now built in.  The major change in this release is the language support; Ruby support is now available, and there is a PHP plugin.  I&#039;ll report as I try these other plugins over the next few weeks. 
    </content:encoded>

    <pubDate>Thu, 06 Dec 2007 18:24:16 -0500</pubDate>
    <guid isPermaLink="false">http://www.ashtech.net/~syntax/blog/archives/105-guid.html</guid>
    
</item>
<item>
    <title>OS X: JFrame with JMenuBar Must Be First</title>
    <link>http://www.ashtech.net/~syntax/blog/archives/104-OS-X-JFrame-with-JMenuBar-Must-Be-First.html</link>
            <category>Programming</category>
    
    <comments>http://www.ashtech.net/~syntax/blog/archives/104-OS-X-JFrame-with-JMenuBar-Must-Be-First.html#comments</comments>
    <wfw:comment>http://www.ashtech.net/~syntax/blog/wfwcomment.php?cid=104</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ashtech.net/~syntax/blog/rss.php?version=2.0&amp;type=comments&amp;cid=104</wfw:commentRss>
    

    <author>syntax@ashtech.net (Daniel E. Markle)</author>
    <content:encoded>
    When building Swing applications customized for OS X, note that for more complex applications with multiple JFrames, a JFrame containing a JMenuBar must be initialized first.  If a JFrame with no JMenuBar is created first, neither the custom application name nor the menus will work correctly. &lt;br /&gt;&lt;a href=&quot;http://www.ashtech.net/~syntax/blog/archives/104-OS-X-JFrame-with-JMenuBar-Must-Be-First.html#extended&quot;&gt;Continue reading &quot;OS X: JFrame with JMenuBar Must Be First&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 30 Oct 2007 13:35:28 -0400</pubDate>
    <guid isPermaLink="false">http://www.ashtech.net/~syntax/blog/archives/104-guid.html</guid>
    
</item>
<item>
    <title>Google Collections Library for Java</title>
    <link>http://www.ashtech.net/~syntax/blog/archives/103-Google-Collections-Library-for-Java.html</link>
            <category>Programming</category>
    
    <comments>http://www.ashtech.net/~syntax/blog/archives/103-Google-Collections-Library-for-Java.html#comments</comments>
    <wfw:comment>http://www.ashtech.net/~syntax/blog/wfwcomment.php?cid=103</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ashtech.net/~syntax/blog/rss.php?version=2.0&amp;type=comments&amp;cid=103</wfw:commentRss>
    

    <author>syntax@ashtech.net (Daniel E. Markle)</author>
    <content:encoded>
    Wish you could have multiple keys in your Map class?  Want to add constraints easily to your collections to ensure the data is as expected?  Both of these and much more are available in the &lt;a href=&quot;http://code.google.com/p/google-collections/&quot; &gt;Google Collections Library&lt;/a&gt;.  Obviously these can be coded yourself; but this library offers a more elegant and better tested way to build some of these useful data structures. 
    </content:encoded>

    <pubDate>Thu, 25 Oct 2007 13:23:25 -0400</pubDate>
    <guid isPermaLink="false">http://www.ashtech.net/~syntax/blog/archives/103-guid.html</guid>
    
</item>
<item>
    <title>Unknown protocol: dummy</title>
    <link>http://www.ashtech.net/~syntax/blog/archives/102-Unknown-protocol-dummy.html</link>
            <category>Programming</category>
    
    <comments>http://www.ashtech.net/~syntax/blog/archives/102-Unknown-protocol-dummy.html#comments</comments>
    <wfw:comment>http://www.ashtech.net/~syntax/blog/wfwcomment.php?cid=102</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://www.ashtech.net/~syntax/blog/rss.php?version=2.0&amp;type=comments&amp;cid=102</wfw:commentRss>
    

    <author>syntax@ashtech.net (Daniel E. Markle)</author>
    <content:encoded>
    When receiving the error &lt;code&gt;java.net.MalformedURLException: unknown protocol: dummy&lt;/code&gt;, check everything included in all libraries and classpath elements for old or conflicting versions of Xerces and Gnu Jaxp.  Dummy is a basic, built-in protocol, so if it is not locatable there is a library conflict. 
    </content:encoded>

    <pubDate>Wed, 10 Oct 2007 12:22:14 -0400</pubDate>
    <guid isPermaLink="false">http://www.ashtech.net/~syntax/blog/archives/102-guid.html</guid>
    
</item>
<item>
    <title>Java Printing Null Handling</title>
    <link>http://www.ashtech.net/~syntax/blog/archives/100-Java-Printing-Null-Handling.html</link>
            <category>Programming</category>
    
    <comments>http://www.ashtech.net/~syntax/blog/archives/100-Java-Printing-Null-Handling.html#comments</comments>
    <wfw:comment>http://www.ashtech.net/~syntax/blog/wfwcomment.php?cid=100</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ashtech.net/~syntax/blog/rss.php?version=2.0&amp;type=comments&amp;cid=100</wfw:commentRss>
    

    <author>syntax@ashtech.net (Daniel E. Markle)</author>
    <content:encoded>
    Getting blank pages from your &lt;code&gt;java.awt.print.Printable&lt;/code&gt; implementation?  Check for null pointer exceptions.  Uncaught null pointer exceptions generated by your implementation of &lt;code&gt;print()&lt;/code&gt; method are silently thrown away.  I have noticed this behavior on Java build 1.5.0_07-164 on OS X. 
    </content:encoded>

    <pubDate>Thu, 20 Sep 2007 11:13:40 -0400</pubDate>
    <guid isPermaLink="false">http://www.ashtech.net/~syntax/blog/archives/100-guid.html</guid>
    
</item>
<item>
    <title>Netbeans 5.5 'ant junit' Not Working from Command Line</title>
    <link>http://www.ashtech.net/~syntax/blog/archives/98-Netbeans-5.5-ant-junit-Not-Working-from-Command-Line.html</link>
            <category>Programming</category>
    
    <comments>http://www.ashtech.net/~syntax/blog/archives/98-Netbeans-5.5-ant-junit-Not-Working-from-Command-Line.html#comments</comments>
    <wfw:comment>http://www.ashtech.net/~syntax/blog/wfwcomment.php?cid=98</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ashtech.net/~syntax/blog/rss.php?version=2.0&amp;type=comments&amp;cid=98</wfw:commentRss>
    

    <author>syntax@ashtech.net (Daniel E. Markle)</author>
    <content:encoded>
    I was getting an error when trying to run &lt;code&gt;ant junit&lt;/code&gt; on a project from the command line for a Netbeans 5.5 project.  There are many hard to humanly parse solutions out there via Google.  The solution that worked for me:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Download the latest &lt;a href=&quot;http://junit.org/&quot; &gt;JUnit 3&lt;/a&gt; (it was &lt;a href=&quot;http://sourceforge.net/project/showfiles.php?group_id=15278&amp;package_id=12472&amp;release_id=398352&quot; &gt;buried in the archive&lt;/a&gt;, since they want everyone to move to JUnit 4)&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Copy junit.jar to ~/.ant/lib/&lt;/li&gt;&lt;/ul&gt; &lt;br /&gt;&lt;a href=&quot;http://www.ashtech.net/~syntax/blog/archives/98-Netbeans-5.5-ant-junit-Not-Working-from-Command-Line.html#extended&quot;&gt;Continue reading &quot;Netbeans 5.5 &#039;ant junit&#039; Not Working from Command Line&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 09 Aug 2007 22:01:56 -0400</pubDate>
    <guid isPermaLink="false">http://www.ashtech.net/~syntax/blog/archives/98-guid.html</guid>
    
</item>
<item>
    <title>Netbeans svn+ssh Username Glitch</title>
    <link>http://www.ashtech.net/~syntax/blog/archives/93-Netbeans-svn+ssh-Username-Glitch.html</link>
            <category>Programming</category>
    
    <comments>http://www.ashtech.net/~syntax/blog/archives/93-Netbeans-svn+ssh-Username-Glitch.html#comments</comments>
    <wfw:comment>http://www.ashtech.net/~syntax/blog/wfwcomment.php?cid=93</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.ashtech.net/~syntax/blog/rss.php?version=2.0&amp;type=comments&amp;cid=93</wfw:commentRss>
    

    <author>syntax@ashtech.net (Daniel E. Markle)</author>
    <content:encoded>
    When using the subversion client built into Netbeans 5.5 on OS X with the svn+ssh protocol, it ignores the username entered and always uses the logged in user&#039;s username.  This occurs both when entering a username in the field for it and when using a url like &lt;code&gt;svn+ssh://username@server.com/svnrepo&lt;/code&gt;.  Fortunately if you encounter this problem, there is a workaround:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;svn+ssh://username@username@server.com/svnrepo&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Netbeans only strips the first username@, leaving the second one in place.  Everything then works as the correct URL gets properly embedded in the right places. &lt;br /&gt;&lt;a href=&quot;http://www.ashtech.net/~syntax/blog/archives/93-Netbeans-svn+ssh-Username-Glitch.html#extended&quot;&gt;Continue reading &quot;Netbeans svn+ssh Username Glitch&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 31 May 2007 23:53:52 -0400</pubDate>
    <guid isPermaLink="false">http://www.ashtech.net/~syntax/blog/archives/93-guid.html</guid>
    
</item>
<item>
    <title>Java Swing Browser Launching</title>
    <link>http://www.ashtech.net/~syntax/blog/archives/91-Java-Swing-Browser-Launching.html</link>
            <category>Programming</category>
    
    <comments>http://www.ashtech.net/~syntax/blog/archives/91-Java-Swing-Browser-Launching.html#comments</comments>
    <wfw:comment>http://www.ashtech.net/~syntax/blog/wfwcomment.php?cid=91</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://www.ashtech.net/~syntax/blog/rss.php?version=2.0&amp;type=comments&amp;cid=91</wfw:commentRss>
    

    <author>syntax@ashtech.net (Daniel E. Markle)</author>
    <content:encoded>
    Looking for an easy way to launch a browser window from your swing application?  The easiest solutions I found without using a library involved JNLP; not a good answer for my cross platform Swing applications.  There are quite a few solutions, but I like &lt;a href=&quot;http://sourceforge.net/projects/browserlaunch2/&quot; &gt;Browser Launcher 2&lt;/a&gt;.  Only 92kb, it seems rather good at finding the user selected system default browser, and its ease of use is hard to deny:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;BrowserLauncher().openURLinBrowser(&quot;http://example.com&quot;);&lt;/code&gt; 
    </content:encoded>

    <pubDate>Mon, 21 May 2007 15:56:21 -0400</pubDate>
    <guid isPermaLink="false">http://www.ashtech.net/~syntax/blog/archives/91-guid.html</guid>
    
</item>
<item>
    <title>Java Lacks JBIG2 Image Support</title>
    <link>http://www.ashtech.net/~syntax/blog/archives/90-Java-Lacks-JBIG2-Image-Support.html</link>
            <category>Programming</category>
    
    <comments>http://www.ashtech.net/~syntax/blog/archives/90-Java-Lacks-JBIG2-Image-Support.html#comments</comments>
    <wfw:comment>http://www.ashtech.net/~syntax/blog/wfwcomment.php?cid=90</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://www.ashtech.net/~syntax/blog/rss.php?version=2.0&amp;type=comments&amp;cid=90</wfw:commentRss>
    

    <author>syntax@ashtech.net (Daniel E. Markle)</author>
    <content:encoded>
    I have been using the &lt;a href=&quot;http://pdfbox.org/&quot;&gt;PDFBox&lt;/a&gt; library when working with PDF files, most commonly to extract the text for &lt;a href=&quot;http://lucene.apache.org/&quot;&gt;lucene indexing&lt;/a&gt; and generating thumbnails conveniently in Java.  Recently I have started to see this error when generating thumbnails, which come out as properly sized plain white pages:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;java.io.IOException: Unknown stream filter:COSName{JBIG2Decode}&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Some of the latest PDFs, in this case from a new Xerox copier (which scans into PDF format), generates black and white images in PDFs using the &lt;a href=&quot;http://en.wikipedia.org/wiki/Jbig2&quot; &gt;JBIG2 format&lt;/a&gt;.  Java has no built-in support for JBIG2 yet, and building a handler for this image type into the PDFBox library isn&#039;t an option for the development team at this time.   &lt;br /&gt;&lt;a href=&quot;http://www.ashtech.net/~syntax/blog/archives/90-Java-Lacks-JBIG2-Image-Support.html#extended&quot;&gt;Continue reading &quot;Java Lacks JBIG2 Image Support&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 09 May 2007 17:42:23 -0400</pubDate>
    <guid isPermaLink="false">http://www.ashtech.net/~syntax/blog/archives/90-guid.html</guid>
    
</item>
<item>
    <title>Java Troubleshooting and Diagnostics Guide and Concurrency Utilities</title>
    <link>http://www.ashtech.net/~syntax/blog/archives/85-Java-Troubleshooting-and-Diagnostics-Guide-and-Concurrency-Utilities.html</link>
            <category>Programming</category>
    
    <comments>http://www.ashtech.net/~syntax/blog/archives/85-Java-Troubleshooting-and-Diagnostics-Guide-and-Concurrency-Utilities.html#comments</comments>
    <wfw:comment>http://www.ashtech.net/~syntax/blog/wfwcomment.php?cid=85</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.ashtech.net/~syntax/blog/rss.php?version=2.0&amp;type=comments&amp;cid=85</wfw:commentRss>
    

    <author>syntax@ashtech.net (Daniel E. Markle)</author>
    <content:encoded>
    After the &lt;a href=&quot;http://www.harrisburgjug.org/&quot; &gt;Harrisburg Java User&#039;s Group&lt;/a&gt; meeting tonight, two items in particular came up in the post-presentation discussions which I am mentioning here mainly for my own reference, but will likely be valuable to anyone reading this doing Java programming.&lt;br /&gt;
&lt;br /&gt;
The &lt;a href=&quot;http://java.sun.com/j2se/1.5/pdf/jdk50_ts_guide.pdf&quot; &gt;Java 2 Platform, Standard Edition 5.0 Trouble-Shooting and Diagnostic Guide&lt;/a&gt; is a comprehensive guide to the tools that are available as part of JDK5 to analyze Java programs.  Interestingly many of these tools do not exist on Windows, but they are in OS X as well as the mentioned Linux and Solaris.&lt;br /&gt;
&lt;br /&gt;
Available as part of the stock Java 5 standard libraries, the JSR 166 &lt;a href=&quot;http://java.sun.com/j2se/1.5.0/docs/guide/concurrency/index.html&quot; &gt;Concurrency Utilities&lt;/a&gt; allow the building of many common concurrency models without the complication of doing such programming from scratch.  Concurrent programming is becoming important as more cores become increasingly dominant in modern computers. 
    </content:encoded>

    <pubDate>Thu, 15 Mar 2007 22:28:41 -0400</pubDate>
    <guid isPermaLink="false">http://www.ashtech.net/~syntax/blog/archives/85-guid.html</guid>
    
</item>

</channel>
</rss>