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

<channel>
	<title>scohen.org &#187; Nerd Stuff</title>
	<atom:link href="http://www.scohen.org/scohen/category/nerd-stuff/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.scohen.org/scohen</link>
	<description>This is the web site of Steve Cohen, programmer, motorcyclist, kayaker and all around geek</description>
	<lastBuildDate>Thu, 22 Jan 2009 05:48:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>WTF?</title>
		<link>http://www.scohen.org/scohen/2006/01/23/wtf/</link>
		<comments>http://www.scohen.org/scohen/2006/01/23/wtf/#comments</comments>
		<pubDate>Tue, 24 Jan 2006 02:52:30 +0000</pubDate>
		<dc:creator>scohen</dc:creator>
				<category><![CDATA[Nerd Stuff]]></category>

		<guid isPermaLink="false">http://www.scohen.org/scohen/archives/2006/01/23/wtf/</guid>
		<description><![CDATA[What i've been reading recently]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.confabulist.com">Orion</a> pointed me to a site on Friday, called the <a href="http://www.thedailywtf.com">The daily WTF?</a>, and it&#8217;s great. It contains totally terrible code snippets that are supposedly pulled from actual production code. <a href="http://www.thedailywtf.com/forums/57295/ShowPost.aspx">This example</a> looks unbelievable, but it&#8217;s actually similar to code I have seen before.</p>
<p>When I first started in the eCommerce department back in 1997, the site was re-done by a company called Proxima (they later changed their name to the much more internety <a href="http://www.proxicom.com">Proxicom</a>).  As I was browsing around the date code, I noticed a function called getMonthOptions(), which had a similar implementation:</p>
<pre>
function getMonthOptions(fieldName,currentMonth) {
   monthOptions = "";
   if ( currentMonth == 1) {
      monthOptions += "&lt;option name=\"" +
      fieldName +
      "\" value=\"1\"" +
      " selected="true"&gt;January&lt;/option&gt;";
   } else {
      monthOptions += "&lt;option name=\""  +
        fieldName + "\" value=\"1\"" +
        "&gt;January&lt;/option&gt;";
   }
   if ( currentMonth == 2 ){
      monthOptions += "&lt;option name=\""
         + fieldName + "\" value=\"2\"" +
         " selected="true"&gt;February&lt;/option&gt;";
   } else {
      monthOptions += "&lt;option name=\"" +
     fieldName + "\" value=\"2\"" +
     "&gt;February&lt;/option&gt;";
   }
</pre>
<p>&#8230;.and on and on.</p>
<p>So,  I replaced that code with something like:</p>
<pre>
function getMonthOptions(currentMonth) {
   var months = ",January,February,March," +
     "April,May,June,July,August," +
     "September,October,November,December".split(",");
   monthOptions = "";
   for(var i=1; i &lt; months.length; i++) {
       monthOptions += "&lt;option  value=\"" +
          months[i] + "\" ";
      if ( i == parseInt(currentMonth)) {
        monthOptions += " selected=\"true\"";
      }
      monthOptions += "&gt;" + months[i] + "&lt;/option&gt;";

   }
return monthOptions;
}
</pre>
<p>&#8230;and that was that.</p>
<p>Still, it struck me as odd that seasoned consultants would write such verbose code. However, After reading the daily WTF it appears that those consultants were actually pretty good.</p>
<p>The code is good for a laugh or two, but to find what&#8217;s really interesting about the site, you have to pull back the covers a little bit. First off, there are a lot of people who totally miss the WTF moment and instead post something like &#8220;he names the variables poorly&#8221;.  That leads me to believe that they probably implemented something like the WTF in the past. Also interesting is the total commitment the administrator has to Microsoft.  A while back, the site had a few performance problems, but he couldn&#8217;t afford to upgrade the site to Windows Server 2003 with SQL server. The upgrade would have cost him $2500, but he refused to entertain running on open source software. &#8220;Dirty hippie software&#8221; he derisively called it.  What&#8217;s amusing is that he&#8217;s running some vanilla discussion software and that going open source would have saved him all that grief &#8211;someone eventually donated Windows Server Small Business Edition to him, but only after a couple of weeks of protracted whining.   Furthermore, his coding skills aren&#8217;t that great; At one point, he had to ask how to serialize a HashTable (it&#8217;s C#, note the funny capitalization) to a byte array &#8211;not really challenging stuff.</p>
<p>Still, it&#8217;s a good read and allows me to re-live those days when I would marvel at the ways of the consultants.  I might not like every line of code <a href="http://www.digitalchocolate.com">at work</a> but none if it is even remotely as bad as a daily WTF.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scohen.org/scohen/2006/01/23/wtf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby: Yeah, me too.</title>
		<link>http://www.scohen.org/scohen/2006/01/15/ruby-yeah-me-too/</link>
		<comments>http://www.scohen.org/scohen/2006/01/15/ruby-yeah-me-too/#comments</comments>
		<pubDate>Mon, 16 Jan 2006 04:59:51 +0000</pubDate>
		<dc:creator>scohen</dc:creator>
				<category><![CDATA[Nerd Stuff]]></category>

		<guid isPermaLink="false">http://www.scohen.org/scohen/?p=73</guid>
		<description><![CDATA[I&#8217;ve been using Ruby and rails at work for about a month now, and I have to say, it&#8217;s really growing on me. From the beginning, I was amazed at how much you can do with so little code. It&#8217;s been a month, and I have some impressions. They&#8217;re not unique (it seems that everyone [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="http://www.ruby.org">Ruby</a> and <a href="http://www.rubyonrails.com">rails</a> at work for about a month now, and I have to say, it&#8217;s really growing on me.<br />
From the beginning, I was amazed at how <em>much</em> you can do with so little code.  It&#8217;s been a month, and I have some impressions. They&#8217;re not unique (it seems that everyone is playing with Ruby recently), but they&#8217;re mine.</p>
<p>First off, I love the terseness of  the language.  It&#8217;s amazing what you can do with one line of code, compare:<br />
Java:</p>
<pre>
  Iterator i = list.iterator();
  while ( i.hasNext()) {
      Object o = i.next();
      if ( o == null ) {
         i.remove();
      }
  }
 </pre>
<p>Ruby:<br />
<code><br />
    list.compact<br />
</code></p>
<p>Granted, that might not be the best example, since compact is built in to arrays in ruby, however, this does the same thing<br />
<code><br />
   list.reject{|element| element.nil?}<br />
</code><br />
And the amazing part is that you get this type of reduction in total lines of code everywhere. Since we&#8217;re developing a web based application, we&#8217;ve been using <a href="http://www.rubyonrails.com">Rails</a> as well. Rails brings Ruby&#8217;s speed of development to the web. Coming from a Struts based application, it&#8217;s really shocking how quickly you can create a model, view and controller.  This speed benefits your architecture as well &#8211;if it&#8217;s easy to make a new MVC, then you&#8217;re more apt to do it, rather than adding additional code to one that&#8217;s already there.</p>
<p>Rails does have its faults, and they impact both the speed at which you develop, and the Object Oriented nature of the code you write.</p>
<p>First off, ActiveRecord, Rails&#8217;s persistence mechanism, uses single table inheritance.  This doesn&#8217;t seem to be such a bad thing at first &#8211;after all, Hibernate, OJB and just about every other O/R layer offer this feature as well. Where ActiveRecord breaks down is that it doesn&#8217;t have a mapping layer. Instead, all objects are built directly from database metadata.  Most of the time, this works very well, as O/R layers generally map an object directly on to a database table, and ActiveRecord saves you this tedious and error prone step. However, if you use single table inheritance, that database table has the superset of all methods available for all objects in the inheritance hierarchy. This means that objects gain methods that they shouldn&#8217;t have, and there is no way to prevent them from having these extra methods. This is truly bad for object orientation, as you can&#8217;t define exactly what methods your objects expose. Sure, you can &#8216;know&#8217; what method each type exposes, but that&#8217;s akin to sticking your fingers in your ears and screaming &#8220;I&#8217;m using OO programming techniques!!! LA LA LA!!!&#8221;, which, as we all know, doesn&#8217;t mean you&#8217;re programming in an OO manner. I&#8217;d suggest being able to tell ActiveRecord which methods an object should receive, like this:</p>
<pre>
   class Article
      methods :title,:description,:text
   end
   class NewspaperArtice &lt;Article
      methods :byline, :run_date
   end
   class MagazineArticle &lt; Article
     methods :author,:magazine_title,:issue_date
   end
</pre>
<p>In this example, the database would have the colums title, description, text, byline, run_data, author, magazine_title and issue_date.</p>
<p>Second, the documentation is atrocious. Being a java programmer, I&#8217;m used to excellent documentation. JavaDoc is a godsend for programming, and Java&#8217;s documentation is thorough, complete and correct. Even the open source Java projects have continued this tradition. Sadly, it&#8217;s not so in the Ruby world. Part of this comes from Ruby&#8217;s dynamism, it&#8217;s impossible to tell exactly how objects have been changed in any execution environment. How, for instance do you communicate that Ruby on rails added several methods to numeric objects? However, most of the documentation is just inadequate. I&#8217;ve looked extensively at the rails docs, and have yet to find a good explanation of how exactly I can configure routes.rb. <a href="http://api.rubyonrails.com/files/vendor/rails/actionpack/lib/action_controller/routing_rb.html">this is no help</a>. Where&#8217;s the documentation for the rails request object? Where is the testing documentation? Sadly, Google is more of a help for figuring out what to do in rails than any of their documentation. However, docs are an easily fixable problem, and I expect them to improve rapidly, now that rails has a high profile.</p>
<p>Still, ruby and rails are extremely valuable tools to have in your belt, and even with the above flaws, are worth using. The productivity increases are amazing. I&#8217;ve developed two projects in rails so far, one for work and one for a family friend. The project for work went as smoothly as any I&#8217;ve ever been on, and &#8211;get this&#8211; the one for the family friend was completed in the two week window that I was waiting for a design firm to re-do the mockups to use CSS. The original java implementation took months.<br />
Yeah, it&#8217;s nice to be able to code a web app in the same amount of time it takes brain dead designers to do CSS.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scohen.org/scohen/2006/01/15/ruby-yeah-me-too/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>My mom, the hacker</title>
		<link>http://www.scohen.org/scohen/2005/12/07/my-mom-the-hacker/</link>
		<comments>http://www.scohen.org/scohen/2005/12/07/my-mom-the-hacker/#comments</comments>
		<pubDate>Thu, 08 Dec 2005 05:44:27 +0000</pubDate>
		<dc:creator>scohen</dc:creator>
				<category><![CDATA[Nerd Stuff]]></category>

		<guid isPermaLink="false">http://www.scohen.org/scohen/?p=72</guid>
		<description><![CDATA[I&#8217;ll bet you didn&#8217;t know that my mom is an 1337 h4x0r. I was talking to her this weekend, when she had a question. She said she went to a web site, and when she entered the URL from the magazine that was reading, the blue bar on safari would only get to the w. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll bet you didn&#8217;t know that my mom is an <abbr title="Elite Hacker">1337 h4x0r</abbr>. I was talking to her this weekend, when she had a question. She said she went to a web site, and when she entered the URL from the magazine that was reading, the blue bar on safari would only get to the w.</p>
<p>This actually wasn&#8217;t that bad of a description. When I typed the URL she gave me, the browser just spun and didn&#8217;t download anything. Stranger still, it didn&#8217;t time out after 60 seconds.  If the server is doing what I think it&#8217;s doing, this could be used to <abbr title="Denial of Service">DOS</abbr> the web site. As it turns out, I can replicate the behavior on any of their pages, simply by adding characters to the end of the URL.  I&#8217;ve sent them a note, but if I know large corporations should land in an inbox somewhere about 3,000 miles away from the person that can actually do something about it.</p>
<p>Here&#8217;s hoping it&#8217;s not serious.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scohen.org/scohen/2005/12/07/my-mom-the-hacker/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jUploadr 0.8</title>
		<link>http://www.scohen.org/scohen/2005/10/30/juploadr-08/</link>
		<comments>http://www.scohen.org/scohen/2005/10/30/juploadr-08/#comments</comments>
		<pubDate>Mon, 31 Oct 2005 05:10:53 +0000</pubDate>
		<dc:creator>scohen</dc:creator>
				<category><![CDATA[jUploadr]]></category>

		<guid isPermaLink="false">http://www.scohen.org/scohen/?p=69</guid>
		<description><![CDATA[I released jUploadr 0.8 today. It&#8217;s really getting solid, and there are improvements over 0.7 across the board. I added a ton of features, fixed all the open bugs, and improved the usability. It&#8217;s a spectacularly solid release, and eclipses the official uploader&#8217;s feature set. I finally got to see the official flickr uploader in [...]]]></description>
			<content:encoded><![CDATA[<p>I released jUploadr 0.8 today. It&#8217;s really getting solid, and there are improvements over 0.7 across the board. I added a ton of features, fixed all the open bugs, and improved the usability.<br />
It&#8217;s a spectacularly solid release, and eclipses the official uploader&#8217;s feature set.  I finally got to see the official flickr uploader in action and was quite underwhelmed. jUploadr allows you much more flexibility in setting tags and descriptions, as well as allowing you to add photos to existing sets. </p>
<p>Anyway, <a href="http://sourceforge.net/project/showfiles.php?group_id=127771&#038;package_id=139883&#038;release_id=367261">go grab it</a> while it&#8217;s hot.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scohen.org/scohen/2005/10/30/juploadr-08/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Gnu&#8217;s Incompatible Java</title>
		<link>http://www.scohen.org/scohen/2005/10/12/gnus-incompatible-java/</link>
		<comments>http://www.scohen.org/scohen/2005/10/12/gnus-incompatible-java/#comments</comments>
		<pubDate>Thu, 13 Oct 2005 03:50:28 +0000</pubDate>
		<dc:creator>scohen</dc:creator>
				<category><![CDATA[Nerd Stuff]]></category>

		<guid isPermaLink="false">http://www.scohen.org/scohen/?p=68</guid>
		<description><![CDATA[I&#8217;ve had a couple head-scratcher bugs from a couple of jUploadr users, and unfortunately, they all have the same cause. The users were complaining about random crashes, and especially scary, the inability to save their preferences. After asking in vein what the trouble was, one of them sent me in a stack trace. From the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a couple head-scratcher bugs from a couple of <a href="http://juploadr.sourceforge.net">jUploadr</a> users, and unfortunately, they all have the same cause.<br />
The users were complaining about random crashes, and especially scary, the inability to save their preferences. After asking in vein what the trouble was, one of them sent me in a stack trace. From the trace, it was obvious what the problem was &#8211;she was using GIJ. </p>
<p>Since Java isn&#8217;t free software (free as in free speech, it costs nothing to download) most Linux distributions don&#8217;t include it by default. However, they&#8217;ve started including a free version of Java called GIJ/GCJ. GIJ/GCJ are front ends for GCC, the venerable C/C++ compiler and they&#8217;re fantastic projects, but GCJ/GIJ are not mature enough for distribution. There are huge swaths of  the standard Java API that they don&#8217;t provide, including support for saving and loading application preferences. The end result is that when a user tries my application under this system, it just doesn&#8217;t work. </p>
<p>Java currently suffers from a reputation of sluggish performance, funny looking UIs and strange error messages, and GIJ just adds to these perceptions. It&#8217;s no small feat to write an application that runs unmodified on three separate operating systems unless you use Java.  It&#8217;s sad that the free software umbrella &#8211;which brought you jUploadr, and all of the libraries that it uses&#8211; also makes that more difficult.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scohen.org/scohen/2005/10/12/gnus-incompatible-java/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Write once run nowhere</title>
		<link>http://www.scohen.org/scohen/2005/09/20/write-once-run-nowhere/</link>
		<comments>http://www.scohen.org/scohen/2005/09/20/write-once-run-nowhere/#comments</comments>
		<pubDate>Tue, 20 Sep 2005 15:02:27 +0000</pubDate>
		<dc:creator>scohen</dc:creator>
				<category><![CDATA[Nerd Stuff]]></category>
		<category><![CDATA[jUploadr]]></category>

		<guid isPermaLink="false">http://www.scohen.org/scohen/?p=67</guid>
		<description><![CDATA[With all the new activity with jUploadr I decided to go ahead and implement image rotation. When I looked at the SWT javadocs, I was pleased to see that they added a Transform object for 3.1. Now rotating objects will be as simple as Transform tx = new Transform(event.display); tx.rotate(90); gc.setTransform(tx); // draw the image [...]]]></description>
			<content:encoded><![CDATA[<p>With all the new activity with <a href="http://juploadr.sourceforge.net">jUploadr</a>  I decided to go ahead and implement image rotation.  When I looked at the SWT javadocs, I was pleased to see that they added a Transform object for 3.1. Now rotating objects will be as simple as<br />
<code><br />
   Transform tx = new Transform(event.display);<br />
   tx.rotate(90);<br />
   gc.setTransform(tx);<br />
   // draw the image<br />
   tx.dispose();<br />
</code><br />
&#8230;and it was. The transforms really simplify image manipulation, and I thank the SWT guys (and girls) for implementing this.</p>
<p>The problem arises when you actually go to deploy this code. You see, in Linux, the transforms rely on having the Cairo graphics engine, which is only included on the most bleeding edge systems. Thankfully, it worked on my system, having upgraded to the Cairo capable Fedora Core 4 only a week before. Had I tried this prior to the upgrade, jUploadr would have crashed. Similarly, the transforms require GDI+ on windows. As far as I know, GDI+ is only included by default on WindowsXP and Server 2003. </p>
<p>So, I was faced with a dilemma, either I use the SWT transforms and drastically reduce the number of people that could use jUploadr, or write my own transforms and maintain compatibility.  For me, it&#8217;s not really a good choice, so I went ahead and wrote my own rotation code. </p>
<p>I don&#8217;t know why the SWT people bound their transforms to such cutting edge graphics libraries, but that decision severely limits their use. It&#8217;s kind of baffling as well that they don&#8217;t have some sort of fallback mechanism. I&#8217;m really disappointed that instead of gracefully degrading (perhaps sacrificing speed or image quality) they just blow up if the library isn&#8217;t there. As I demonstrated, the transforms can be implemented rather easily in Java, so there&#8217;s really no excuse for this.</p>
<p>However, I am happy that their API allowed for me to implement the transformations on my own, and in the end, this means that jUploadr users will just get another useful feature, even if I had to work a little harder to give it to them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scohen.org/scohen/2005/09/20/write-once-run-nowhere/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Submitting disabled forms with DOM inspector</title>
		<link>http://www.scohen.org/scohen/2005/09/12/submitting-disabled-forms-with-dom-inspector/</link>
		<comments>http://www.scohen.org/scohen/2005/09/12/submitting-disabled-forms-with-dom-inspector/#comments</comments>
		<pubDate>Mon, 12 Sep 2005 22:27:27 +0000</pubDate>
		<dc:creator>scohen</dc:creator>
				<category><![CDATA[Nerd Stuff]]></category>

		<guid isPermaLink="false">http://www.scohen.org/scohen/archives/2005/09/12/submitting-disabled-forms-with-dom-inspector/</guid>
		<description><![CDATA[I found a very helpful way to submit forms that have the submit button disabled. All you have to do is fire up Firefox&#8217;s DOM inspector, click on the form button, and remove the &#8216;disabled&#8217; attribute in the DOM node menu. Then the button becomes active, and you can submit. This is great for intentionally [...]]]></description>
			<content:encoded><![CDATA[<p>I found a very helpful way to submit forms that have the submit button disabled. All you have to do is fire up Firefox&#8217;s DOM inspector, click on the form button, and remove the &#8216;disabled&#8217; attribute in the DOM node menu.<br />
Then the button becomes active, and you can submit. This is great for intentionally causing errors by bypassing any logic that prevents users from submitting forms prematurely. I&#8217;m not sure how often most people would use this, but it&#8217;s very helpful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scohen.org/scohen/2005/09/12/submitting-disabled-forms-with-dom-inspector/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>jUploadr 0.7</title>
		<link>http://www.scohen.org/scohen/2005/08/31/juploadr-07/</link>
		<comments>http://www.scohen.org/scohen/2005/08/31/juploadr-07/#comments</comments>
		<pubDate>Thu, 01 Sep 2005 04:18:53 +0000</pubDate>
		<dc:creator>scohen</dc:creator>
				<category><![CDATA[jUploadr]]></category>

		<guid isPermaLink="false">http://www.scohen.org/scohen/?p=65</guid>
		<description><![CDATA[I released jUploadr 0.7 today. It supports the new authentication API so Yahoo! users can log in with their yahoo name. It also doesn&#8217;t store your password locally, or transfer it over the internet (thanks new authentication API!). I also fixed a bunch of usability issues that were brought to my attention, as well as [...]]]></description>
			<content:encoded><![CDATA[<p>I released  <a href="http://sourceforge.net/project/showfiles.php?group_id=127771&#038;package_id=139883&#038;release_id=353056">jUploadr 0.7</a> today. It supports the new authentication API so Yahoo! users can log in with their yahoo name. It also doesn&#8217;t store your password locally, or transfer it over the internet (thanks new authentication API!).<br />
I also fixed a bunch of usability issues that were brought to my attention, as well as a couple of the open bugs.</p>
<p>In addition, I&#8217;m pleased to say that jUploadr got its first donation this week. I thank you, anonymous donor. Here&#8217;s to many more uploads.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scohen.org/scohen/2005/08/31/juploadr-07/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>More good news</title>
		<link>http://www.scohen.org/scohen/2005/06/08/more-good-news/</link>
		<comments>http://www.scohen.org/scohen/2005/06/08/more-good-news/#comments</comments>
		<pubDate>Thu, 09 Jun 2005 03:05:02 +0000</pubDate>
		<dc:creator>scohen</dc:creator>
				<category><![CDATA[jUploadr]]></category>

		<guid isPermaLink="false">http://www.scohen.org/scohen/?p=57</guid>
		<description><![CDATA[More good news for Macintosh jUploadr users (both of you!). For a lark, I filed a bug for the long-standing transparency issues regarding image overlays. To my surprise, this bug was fixed in about three days, so now jUploadr on the Mac looks just as good as it does on Windows and Linux. I&#8217;ve been [...]]]></description>
			<content:encoded><![CDATA[<p>More good news for Macintosh jUploadr users (both of you!).  For a lark, I filed a bug for the long-standing transparency issues regarding image overlays. To my surprise, this bug was fixed in about three days, so now jUploadr on the Mac looks just as good as it does on Windows and Linux. </p>
<p>I&#8217;ve been very impressed with the response I&#8217;ve received from the SWT team. They&#8217;ve knocked out several bugs in very little time, and enabled me to ship an application that works well on three very different platforms. Granted, Swing would allow me to do the same thing, but SWT allows cross platform GUIs with the native widget toolkits and native speed. </p>
<p>I&#8217;ll put together a release for Mac when a nightly SWT release is made available and I have a couple days to test it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scohen.org/scohen/2005/06/08/more-good-news/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Caught!</title>
		<link>http://www.scohen.org/scohen/2005/06/02/caught/</link>
		<comments>http://www.scohen.org/scohen/2005/06/02/caught/#comments</comments>
		<pubDate>Fri, 03 Jun 2005 04:31:29 +0000</pubDate>
		<dc:creator>scohen</dc:creator>
				<category><![CDATA[Nerd Stuff]]></category>

		<guid isPermaLink="false">http://www.scohen.org/scohen/?p=55</guid>
		<description><![CDATA[He found me]]></description>
			<content:encoded><![CDATA[<p><a href="http://vardhman.blogspot.com/2005/06/qlickr-faces-competition-from-juploadr.html">Looks like my Indian counterpart found me.</a> I&#8217;ve been reading his blog for a while now, and he just released a new version of his software. It&#8217;s slightly better, but still has major usability issues. I really don&#8217;t see how he can make it usable with the current interface, however, I welcome him to prove me wrong. </p>
<p>How can you not love the guy? He&#8217;s still so excited by technology that <a href="http://vardhman.blogspot.com/2005/04/13-april-2005.html">his friends call him google</a>. Vardhman kind of reminds me of me in a round about way. We both like software, we&#8217;re both writing flickr uploader applications and we both ride motorcycles &#8211;though my <a href="http://www.motorcycle.com/mo/mchonda/98vfr800.html">VFR</a> will stomp his <a href="http://www.thehindubusinessline.com/iw/2003/11/30/stories/2003113000101100.htm">Bajaj Pulsar</a>. So, I wish him luck with Qlickr (how exactly do you prounounce that? &#8216;Clicker&#8217;?), he&#8217;s got a lot of work ahead of him. Still, it&#8217;s worth it for the sense of satisfaction that you get when a user emails you and thanks you for the great application. With a lot of work, I&#8217;m sure Vardhman will get similar praise.</p>
<p>Oh, one more thing. Vardhman alerted me to my failed WordPress upgrade. Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scohen.org/scohen/2005/06/02/caught/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
