<?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>Philip Yurchuk &#187; Software</title>
	<atom:link href="http://philip.yurchuk.com/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://philip.yurchuk.com</link>
	<description>Software Development Blog</description>
	<lastBuildDate>Sun, 13 Sep 2009 07:32:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Why You Should Keep Your Launch Dates Secret</title>
		<link>http://philip.yurchuk.com/2009/09/13/why-apple-keeps-its-launch-dates-secret/</link>
		<comments>http://philip.yurchuk.com/2009/09/13/why-apple-keeps-its-launch-dates-secret/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 07:31:26 +0000</pubDate>
		<dc:creator>Philip Yurchuk</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://philip.yurchuk.com/?p=62</guid>
		<description><![CDATA[It occurred to me that by keeping launch dates secret, Apple never appears to suck at software estimation. Microsoft gives a date, sails right past it, and everyone is up in arms about it.
A better question is why doesn&#8217;t MS keep things secret? Or all software companies, for that matter? I know with sales, everyone [...]]]></description>
			<content:encoded><![CDATA[<p>It occurred to me that by keeping launch dates secret, Apple never appears to suck at software estimation. Microsoft gives a date, sails right past it, and everyone is up in arms about it.</p>
<p>A better question is why doesn&#8217;t MS keep things secret? Or all software companies, for that matter? I know with sales, everyone wants to know when the next version is out so they can hold off on buying the current one. Or the sales person tries to keep you from buying their competitor&#8217;s product because their next version will be much better. But everyone knows there&#8217;s no guarantee of that happening, and there&#8217;s a potential opportunity cost in waiting. And since the estimates that drive the schedule were done by the wrong people at the wrong time, without being updated,<sup>1</sup> you&#8217;ll probably be waiting longer than they claim.</p>
<p>I think the best policy would be to launch whenever it&#8217;s ready, and everyone who purchased within the last 60 days &#8211; or better yet, has a support contract &#8211; gets the new version for free.</p>
<p>Of course, this only applies to software. For hardware, you&#8217;re forced to apply common sense: do I need this right now? Does it do what need at a fair price? Or you can visit http://buyersguide.macrumors.com/ and hope they&#8217;re right.</p>
<ol class="footnotes"><li id="footnote_0_62" class="footnote">See the Estimation section of <a href="http://www.amazon.com/gp/product/0321117425?ie=UTF8&amp;tag=thcrte-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321117425"><em>Facts and Fallacies of Software Engineering</em></a>.</li></ol>]]></content:encoded>
			<wfw:commentRss>http://philip.yurchuk.com/2009/09/13/why-apple-keeps-its-launch-dates-secret/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Deleting (undeletable) Tasks In Eclipse</title>
		<link>http://philip.yurchuk.com/2009/07/11/deleting-undeletable-tasks-in-eclipse/</link>
		<comments>http://philip.yurchuk.com/2009/07/11/deleting-undeletable-tasks-in-eclipse/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 11:27:03 +0000</pubDate>
		<dc:creator>Philip Yurchuk</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://philip.yurchuk.com/?p=41</guid>
		<description><![CDATA[I recently had some more frustration with Eclipse, with no solution on the web, so I&#8217;m posting mine.
The problem:
I had an auto-generated task (TODO) from creating a class that implemented an interface. At some point, I noticed the task comment was gone, but the task indicator (checkbox icon) was still there. Probably because I have [...]]]></description>
			<content:encoded><![CDATA[<p>I recently had some more frustration with Eclipse, with no solution on the web, so I&#8217;m posting mine.</p>
<p><strong>The problem</strong>:</p>
<p>I had an auto-generated task (TODO) from creating a class that implemented an interface. At some point, I noticed the task comment was gone, but the task indicator (checkbox icon) was still there. Probably because I have it set to reformat on save, but maybe I deleted the task comment without hitting the task button (or both). Anyway, I could not clear it no matter what:</p>
<ul>
<li>Double clicking the icon didn&#8217;t work since it couldn&#8217;t find the comment.</li>
<li>Clicking the &#8220;Clean and Redetect Tasks&#8221; button did nothing.</li>
<li>Restarting Eclipse (which I do more often than a Windows admin reboots), did naught.</li>
<li>The Task View displayed the offending tasks, but the Delete option was greyed out. Selecting the task and hitting delete 3 million times while cursing furiously at the screen brought no justice.</li>
</ul>
<p><strong>The solution</strong>:</p>
<ol>
<li>Go to Window &gt;&gt; Preferences, then Java/Compiler/Task Tags. Select the TODO task tag, or whatever accursed tag haunts you.</li>
<li>Click Remove. When it threatens a rebuild, call it&#8217;s bluff (that is, agree). When it&#8217;s done (and it took its sweet time), the offending tasks will be gone. Rejoice!</li>
<li>Click New&#8230; and restore the TODO tag. All legitimate TODO tasks will be restored.  <a title="Jabberwocky" href="http://en.wikipedia.org/wiki/Jabberwocky">Callooh! Callay!</a></li>
</ol>
<p>keywords: can&#8217;t delete tasks, task tags, eclipse 3.4, mylyn</p>
]]></content:encoded>
			<wfw:commentRss>http://philip.yurchuk.com/2009/07/11/deleting-undeletable-tasks-in-eclipse/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A Tivo Wishlist For Those Without Tivo</title>
		<link>http://philip.yurchuk.com/2009/05/05/a-tivo-wishlist-for-those-without-tivo/</link>
		<comments>http://philip.yurchuk.com/2009/05/05/a-tivo-wishlist-for-those-without-tivo/#comments</comments>
		<pubDate>Wed, 06 May 2009 00:10:42 +0000</pubDate>
		<dc:creator>Philip Yurchuk</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[ideas]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://philip.yurchuk.com/?p=36</guid>
		<description><![CDATA[I had this idea and considered creating it as a service, but I&#8217;ve got my own web startup going and don&#8217;t need the distraction. Several sites, such as Zap2it, TV Guide, and TitanTV (beta) already have the infrastructure (as well as the TV listings I&#8217;d have to license) so hopefully this won&#8217;t be too hard [...]]]></description>
			<content:encoded><![CDATA[<p>I had this idea and considered creating it as a service, but I&#8217;ve got my own web startup going and don&#8217;t need the distraction. Several sites, such as <a href="http://Zap2it.com">Zap2it</a>, <a href="http://tvguide.com/listings">TV Guide</a>, and <a href="http://beta.titantv.com">TitanTV</a> (beta) already have the infrastructure (as well as the TV listings I&#8217;d have to license) so hopefully this won&#8217;t be too hard for one of them to implement.</p>
<p>I&#8217;m looking for a clone of the <a href="http://www.tivo.com/mytivo/howto/getthemostoutoftv/howto_create_wishlist_search.html">Tivo Wishlist</a>. The difference is that instead of recording, you get email alerts. I imagine if you have a DVR/PVR that is internet programmable, the service could take advantage of that, but I&#8217;ve got my cable company&#8217;s DVR (Scientific Atlanta) like most people and must program it with the remote. So this provides a wishlist feature for everyone without a Tivo, which I think is compelling.</p>
<p>The search features of current TV listings sites are missing critical fields for a wishlist to work (not to mention the email reminder part). Filtering (both inclusive and exclusive) by genre and channel are required.</p>
<p>Here are a couple strong (IMHO) use cases:</p>
<ul>
<li>You want to be notified if anyone on a list of people is scheduled to be on a talk show. You enter description:&#8221;Quentin Tarantino, Kevin Smith, Judd Apatow&#8221; and genre: talk and every time any of them appear on a talk show you&#8217;re notified. If Tarantino&#8217;s <em>Reservoir Dogs </em>is played on HBO, nothing happens.</li>
<li>You&#8217;re planning a vacation and you want to record travel shows about various places. You enter keywords:&#8221;Prague,Tokyo,Paris&#8221; and interest:travel (or perhaps channels:travel,discovery,tlc,pbs) and you get notified for any travel shows relevant to you.</li>
</ul>
<p>Of course, the above would be done via a nice GUI/query builder.</p>
<p>When you get your email, there would be links to hide/exclude shows in the future, which is useful for anything that gets rerun frequently (especially basic cable shows).</p>
<p>You can monetize this through targeted ads, since the user is telling you what he/she wants.</p>
<p>Another service would be to send a post-mortem email that includes links to the shows you want on Hulu, YouTube, the network&#8217;s website, etc. after they&#8217;ve been uploaded.Â  At that point you&#8217;re much closer to a real Tivo service and could possibly charge for it. Possibly.</p>
<p>I should point out that <a href="http://http://www3.tivo.com/tivo-tco/search/advanced/show.do">Tivo&#8217;s own advanced search</a> is great and includes categories (and subs) and is open to the public.</p>
<p>And if you are only interested in the talk show part, you can set a calendar reminder to check the <a href="http://www.interbridge.com/lineups.html">talk show lineups page</a> once a week. However, I&#8217;d much rather have something automated that allows me to set it and forget it.Â  I could probably whip up a script to parse that page and run it as a service/cron job to notify me when there&#8217;s a match, but still, it would only work for talk shows. And parsing poorly formed HTML is a pain.</p>
<p>No, the easiest solution is to convince someone else to implement it for me <img src='http://philip.yurchuk.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Update: If you want to see Yahoo TV implement this, <a title="Actor/Keyword wishlist" href="http://suggestions.yahoo.com/detail/?prop=tv&amp;fid=143805">upvote it here</a>.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://philip.yurchuk.com/2009/05/05/a-tivo-wishlist-for-those-without-tivo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Should Apple Buy Sun?</title>
		<link>http://philip.yurchuk.com/2009/03/27/should-apple-buy-sun/</link>
		<comments>http://philip.yurchuk.com/2009/03/27/should-apple-buy-sun/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 08:17:05 +0000</pubDate>
		<dc:creator>Philip Yurchuk</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://philip.yurchuk.com/?p=34</guid>
		<description><![CDATA[That question was posed on the LAJUG mailing list in a response to a rumor about IBM buying Sun. I think it&#8217;s clear that Apple doesn&#8217;t really want to get into enterprise computing. Their entry, the OS X Server, at that price point, shows they are not serious about it.
This may sound ridiculous, but I [...]]]></description>
			<content:encoded><![CDATA[<p>That question was posed on the LAJUG mailing list in a response to a rumor about IBM buying Sun. I think it&#8217;s clear that Apple doesn&#8217;t really want to get into enterprise computing. Their entry, the OS X Server, at that price point, shows they are not serious about it.</p>
<p>This may sound ridiculous, but I believe Apple doesn&#8217;t think enterprise computing is a <strong>cool </strong>enough market to enter. They really seem to love being in the spotlight with consumer products. And the fact that the art and entertainment industries use their stuff. It&#8217;s glamorous and I don&#8217;t blame them for it.</p>
<p>Because of all that, acquiring Sun, or even merging with them, doesn&#8217;t make strategic sense. The only major synergy would be Apple&#8217;s GUI and integration from their server OS added to Solaris. Sun would lose training income driven by an OS that&#8217;s unwieldy to manage, but they could charge for it as a product. It would certainly save their customers money on admin labor costs. However, they could probably license that from Apple and avoid a fruitless merger.</p>
<p>In addition, Sun is a bigger pill to swallow than most realize. IBM is much better suited for them. And despite heavy list traffic on the subject, I haven&#8217;t heard anyone voice their opposition to the idea.</p>
]]></content:encoded>
			<wfw:commentRss>http://philip.yurchuk.com/2009/03/27/should-apple-buy-sun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I Want a Java Example Project Directory</title>
		<link>http://philip.yurchuk.com/2009/02/27/i-want-a-java-example-project-directory/</link>
		<comments>http://philip.yurchuk.com/2009/02/27/i-want-a-java-example-project-directory/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 09:55:11 +0000</pubDate>
		<dc:creator>Philip Yurchuk</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[integration]]></category>

		<guid isPermaLink="false">http://philip.yurchuk.com/?p=30</guid>
		<description><![CDATA[I&#8217;m starting a new project with some new (to me) technologies and finding the start up process &#8211; setting up my IDE and build script to play nice together &#8211; to be somewhat frustrating. I kept thinking to myself, &#8220;Somebody already solved this; wouldn&#8217;t it be great if I could grab their project and just [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m starting a new project with some new (to me) technologies and finding the start up process &#8211; setting up my IDE and build script to play nice together &#8211; to be somewhat frustrating. I kept thinking to myself, &#8220;Somebody already solved this; wouldn&#8217;t it be great if I could grab their project and just start coding?&#8221;</p>
<p>My idea is for a directory of Java example projects.<sup>1</sup> It would make it easy to search projects by stack: IDE, tools, frameworks, libraries, and app server. Projects would include the minimum to show the integration points. The directory would also have basic social features: a way to vote up projects and a forum for discussing integration, setup, and architecture best practices. This is probably something a CMS expert could tackle fairly easily.</p>
<p>I admit there are a few problems with this idea. People expect to thrash around during project startup. They learn from it. When it&#8217;s over, they start doing real work. They probably don&#8217;t want to share their lessons learned. Those that do are typically evangelists for a particular framework. Spring, as an integration framework, comes to mind with its Pet Clinic and Pet Store examples. Hibernate&#8217;s Caveat Emptor is probably the best example app I&#8217;ve seen. AppFuse also demonstrates integration, although earlier versions seemed more explicit (the new version built with Maven seems to hide a lot of the details).</p>
<p>However, these apps don&#8217;t cover IDE configuration, and the IDE/build tool mismatch problem is where most of the difficulty lies. The most important IDE features, IMHO, are incremental building for syntax checking, and debugging. So you have this natural duplication of effort. The IDE/build script conversion tools (in either direction) seem narrow in scope; granted, I&#8217;m limiting myself to Eclipse/Flex Builder to/from Ant. I don&#8217;t know if full integration between the IDE and the build tool is the answer, but it would certainly go a long way in making things easier.</p>
<p>In the meantime, however, a project directory would be a welcome resource.</p>
<ol class="footnotes"><li id="footnote_0_30" class="footnote">You don&#8217;t need to host the projects themselves when there are already sites like code.google.com and Source Forge.</li></ol>]]></content:encoded>
			<wfw:commentRss>http://philip.yurchuk.com/2009/02/27/i-want-a-java-example-project-directory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When Do You Stop Adding Unit Tests?</title>
		<link>http://philip.yurchuk.com/2009/02/07/when-do-you-stop-adding-unit-tests/</link>
		<comments>http://philip.yurchuk.com/2009/02/07/when-do-you-stop-adding-unit-tests/#comments</comments>
		<pubDate>Sat, 07 Feb 2009 12:20:03 +0000</pubDate>
		<dc:creator>Philip Yurchuk</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[unit testing]]></category>

		<guid isPermaLink="false">http://philip.yurchuk.com/?p=28</guid>
		<description><![CDATA[Joel Spolsky recently posted a transcript of a conversation he and Jeff Atwood had on the Stack Overflow podcast.Â  It&#8217;s a nice reminder to think about the situations where unit tests add value and where they add maintenance hassle.
The takeaway was that there are a few places where code coverage makes a lot of sense [...]]]></description>
			<content:encoded><![CDATA[<p>Joel Spolsky recently posted a <a title="Stack Overflow podcast transcript" href=" http://www.joelonsoftware.com/items/2009/01/31.html">transcript of a conversation</a> he and Jeff Atwood had on the Stack Overflow podcast.Â  It&#8217;s a nice reminder to think about the situations where unit tests add value and where they add maintenance hassle.</p>
<p>The takeaway was that there are a few places where code coverage makes a lot of sense because change is rare and breakage has a big negative impact. These include APIs, especially plugin architectures where others are depending on the contract of your code, and mature business logic that should rarely change.<sup>1</sup> You really want to think about the number of people or LOC that are depending on that code to work.</p>
<p>In contrast, there are a lot <strong>more </strong>places where you&#8217;re slowing down your coders and their ability to respond to customer needs.</p>
<p>Another contradiction Spolsky suggests: many of the same agile programmers who espouse <a href="http://en.wikipedia.org/wiki/YAGNI">YAGNI</a> require an arbitrary percentage for code coverage (often close to 100%). Shouldn&#8217;t YAGNI also apply to unit tests?</p>
<p>I believe the key is simply thinking about what you&#8217;re doing. Here are some guidelines:</p>
<ul>
<li>If it&#8217;s foundation code (frameworks, libraries, etc. &#8211; anything that gets called a lot) write the tests.</li>
<li>If you&#8217;re about to refactor the code, write the tests.</li>
<li>Even if you&#8217;re not going to write the test, channel the spirit of Test First Development &#8211; design the code so that it&#8217;s easy to unit test should you have to later on.</li>
</ul>
<p>I realize this might sound obvious, but a) not everyone agrees with this, and b) sometimes you can lose sight of what&#8217;s &#8220;obvious&#8221; when others are persuasively defending blind adherence to &#8220;principles&#8221;.</p>
<ol class="footnotes"><li id="footnote_0_28" class="footnote">Like, say, the state mandated 7-day waiting period for the purchase of weasels.</li></ol>]]></content:encoded>
			<wfw:commentRss>http://philip.yurchuk.com/2009/02/07/when-do-you-stop-adding-unit-tests/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse &#8220;cannot be resolved to a type&#8221; error</title>
		<link>http://philip.yurchuk.com/2008/12/03/eclipse-cannot-be-resolved-to-a-type-error/</link>
		<comments>http://philip.yurchuk.com/2008/12/03/eclipse-cannot-be-resolved-to-a-type-error/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 04:43:57 +0000</pubDate>
		<dc:creator>Philip Yurchuk</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://philip.yurchuk.com/?p=25</guid>
		<description><![CDATA[So I&#8217;m coding along and all of a sudden, Eclipse (3.4) can&#8217;t resolve classes. Classes that are in the same package as the class I&#8217;m editing. Classes that are fully qualified in the import statement.
Not good.
The last thing I had done was add a Spring @Autowired annotation. I saved the file and voila, everything goes [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;m coding along and all of a sudden, Eclipse (3.4) can&#8217;t resolve classes. Classes that are in the same package as the class I&#8217;m editing. Classes that are fully qualified in the import statement.</p>
<p>Not good.</p>
<p>The last thing I had done was add a Spring @Autowired annotation. I saved the file and voila, everything goes to crap. I then spend a stupid amount of time trying to track down the cause. I took the changes out. I did a clean and rebuild and retest (everything passed; this was Eclipse-only). I added new classes to see if they broke (they did). I did a false modify (add space, remove space, save) to see if that broke said file (it did). It was a death spiral. No matter how I changed the code, the same problem was there.</p>
<p>Turns out, it wasn&#8217;t the annotation, or anything else in Spring, or any of my code, or any of my Eclipse plugins. It was a step before that killed me. I was doing a little cleanup and I created a temp directory at the top of my project folder so I could move some files there. It wasn&#8217;t nested in anything, other than the top level directory. What could go wrong?</p>
<p>Apparently, that makes Eclipse see red. Squiggly red.</p>
<p>The solution was simply to do a refresh (F5) on my project. Just as quickly as it started, the problem went away. That smells like a bug to me, but if it was I figure I&#8217;d see a lot more mentions in Google or the Eclipse bug tracker. I&#8217;m really hoping this helps someone save some time.</p>
<p><strong>Update: If that doesn&#8217;t help you, see more solutions in the comments. Thanks to those who contributed them.</strong></p>
<p>Keywords: false error, bogus error, eclipse bug</p>
]]></content:encoded>
			<wfw:commentRss>http://philip.yurchuk.com/2008/12/03/eclipse-cannot-be-resolved-to-a-type-error/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Selecting Technology Using Job Ads</title>
		<link>http://philip.yurchuk.com/2007/10/13/select-technology-using-job-ads/</link>
		<comments>http://philip.yurchuk.com/2007/10/13/select-technology-using-job-ads/#comments</comments>
		<pubDate>Sun, 14 Oct 2007 02:35:02 +0000</pubDate>
		<dc:creator>Philip Yurchuk</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[job trends]]></category>

		<guid isPermaLink="false">http://philip.yurchuk.com/2007/10/13/select-technology-using-job-ads/</guid>
		<description><![CDATA[In IT (as in most industries), there are many factors to consider when choosing a new technology. One must carefully consider cost, features, ease of blah blah blah who cares? The only thing that matters is: will this look good on a resume?
Enter Indeed job trends. Indeed is a job website that searches many databases [...]]]></description>
			<content:encoded><![CDATA[<p>In IT (as in most industries), there are many factors to consider when choosing a new technology. One must carefully consider cost, features, ease of blah blah blah who cares? The only thing that matters is: will this look good on a resume?</p>
<p>Enter <a href="http://www.indeed.com/jobtrends">Indeed job trends</a>. Indeed is a job website that searches many databases at once. They have launched a nifty tool that allows you to graph job trends based on keyword; it even does comparisons.</p>
<p>Comparisons are perfect for choosing technologies. To do a comparison, you separate keywords with commas. You can also have multi-keyword searches by separating them with spaces. And you can quote exact phrases. Yeah, that&#8217;s not terribly clear so I&#8217;ll just give examples.</p>
<p>Consider the many technologies used to create rich internet applications (RIA). It&#8217;s ridiculous. You want to know what&#8217;s in demand and what&#8217;s gaining ground. I used a context keyword in my search phrase since some frameworks use common words with multiple meanings (dojo might be found in karate instructor jobs, flex in body builder jobs, etc.). So requiring &#8220;ajax&#8221; to be in the job description makes the search more relevant:</p>
<p><a href="http://www.indeed.com/jobtrends?q=ajax+scriptaculous%2C+ajax+yui%2C+ajax+dojo%2C+ajax+flex&amp;l=">ajax scriptaculous, ajax yui, ajax dojo, ajax flex</a><br />
<img src="http://www.indeed.com/trendgraph/jobgraph.png?q=ajax+scriptaculous,+ajax+yui,+ajax+dojo,+ajax+flex" alt="Scriptaculous, YUI, Dojo, and Flex job trends" /></p>
<p>Here we can see that my choice to begin <a href="http://labs.adobe.com/technologies/flex/">Flex 3</a> classes was freakin&#8217; brilliant.</p>
<p>Since these are statistics, they can help persuade others by lying. For instance, two popular Java build tools are <a href="http://ant.apache.org/">Ant</a> and <a href="http://maven.apache.org/">Maven</a>. You want to use Maven 2 because it&#8217;s newer so it must be better. Let&#8217;s compare:</p>
<p><a href="http://www.indeed.com/jobtrends?q=java+maven%2C+java+ant&amp;l=">java maven, java ant</a><br />
<img src="http://www.indeed.com/trendgraph/jobgraph.png?q=java+maven%2C+java+ant" alt="Maven vs. Ant job trends" /></p>
<p>Crap. That won&#8217;t help convince your boss. Which is bad, because the <strong>real</strong> reason you want to use Maven 2 is that you&#8217;ve heard <a href="http://atlassian.com">Atlassian</a> uses it, and you want work for them so you can move to Australia and be around <a href="http://us.imdb.com/name/nm0057150/" title="Jacinda Barrett">sheilas</a> <a href="http://www.imdb.com/name/nm0211087/" title="Emilie de Ravin">with</a> <a href="http://us.imdb.com/name/nm0279545/" title="Isla Fisher">cute</a> <a href="http://www.imdb.com/name/nm0000173/" title="Nicole Kidman">accents</a> (never mind the spiders the size of small dogs). No worries, Indeed has you covered. Just change the scale from Absolute to Relative:</p>
<p><img src="http://www.indeed.com/trendgraph/jobgraph.png?q=java+maven%2C+java+ant&amp;relative=1" alt="Maven vs. Ant job trends - relative comparison" /></p>
<p>Wow, Maven is taking off like crazy &#8211; 600% job growth! That totally makes up for Ant having 4 times as many jobs. And this technique works with every other cutting edge framework and tool. I mean, it has to; that&#8217;s just how math works. You go from zero jobs to some jobs, that&#8217;s like infinity percent increase for significantly small positive values of zero. Math doesn&#8217;t lie.</p>
<p>Hopefully by now you&#8217;ve realized I&#8217;m employing  some tongue in cheek humor. At the same time, being able to chart industry trends is valuable for both your business&#8217;s technical strategy and your career planning. Use it wisely.</p>
]]></content:encoded>
			<wfw:commentRss>http://philip.yurchuk.com/2007/10/13/select-technology-using-job-ads/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript 2: The Next Big Language?</title>
		<link>http://philip.yurchuk.com/2007/02/17/the-next-big-language/</link>
		<comments>http://philip.yurchuk.com/2007/02/17/the-next-big-language/#comments</comments>
		<pubDate>Sat, 17 Feb 2007 11:24:27 +0000</pubDate>
		<dc:creator>Philip Yurchuk</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[javascript2]]></category>
		<category><![CDATA[rhino]]></category>

		<guid isPermaLink="false">http://philip.yurchuk.com/2007/02/17/the-next-big-language/</guid>
		<description><![CDATA[OK, so this blog is starting to look like the Steve Yegge Fan Club, and I&#8217;m only 3 posts in. Lucky for me, I don&#8217;t care.
Steve recently wrote a compelling post on the next big language. In my first post here, I bet that Java would be dethroned within 5 years, and Steve appears to [...]]]></description>
			<content:encoded><![CDATA[<p>OK, so this blog is starting to look like the Steve Yegge Fan Club, and I&#8217;m only 3 posts in. Lucky for me, I don&#8217;t care.</p>
<p>Steve recently wrote a compelling post on the <a href="http://steve-yegge.blogspot.com/2007/02/next-big-language.html" title="Stevey's Blog Rants">next big language</a>. In my first post here, I bet that Java would be dethroned within 5 years, and Steve appears to agree. Now, he doesn&#8217;t mention which language he&#8217;s talking about, but if you read the comments (those on-topic; not those wondering how he got a hot wife), it&#8217;s pretty clear he&#8217;s referring to ECMAScript 4 (ES4), aka JavaScript 2 (JS2). If you don&#8217;t think it&#8217;s clear, I suggest you actually read the article, then his other articles (including the brilliant <a href="http://steve.yegge.googlepages.com/blog-rants">drunken blog rants</a>), <strong>then </strong><a href="http://developer.mozilla.org/presentations/xtech2006/javascript/" title="JavaScript 2">Brendan Eich&#8217;s presentation on JS2</a>. [1] At this point, it should be crystal.</p>
<p>As I&#8217;m always on the lookout for the next language to write my masterpiece in, this launched yet another info hunting/gathering session. JS2 looks to be a pretty nice language, the syntactic love child of Java and JavaScript, with some other goodies thrown in. And I never  had a big problem with JS1.x. In fact, I&#8217;ve got solid anecdotal evidence that just about everyone who hates JavaScript never bothered learning it like a real language, picking up the <a href="http://www.amazon.com/JavaScript-Definitive-Guide-David-Flanagan/dp/0596101996" title="JavaScript: The Definitive Guide by David Flanagan">rhino book</a> and reading the gory details section. The haters all see JS as an obstacle, a necessary evil thrust upon them by the need for client-side validation, so all they do is blindly stumble around, trying to twist some working script to their needs. Yeah, some haters are cunning programming linguists who hack out parser generators while waiting for their triple-grande cafe Americanos, but they&#8217;re a tiny minority. Plus, they hate <strong>all </strong>languages.</p>
<p>Anyway, I found out a lot. ES4 is already available, (more or less, as the spec isn&#8217;t finalized) in Adobe&#8217;s ActionScript 3 (AS3). Yes, the language used for Flash. Adobe built a virtual machine for it, codename <a href="http://www.mozilla.org/projects/tamarin/">Tamarin</a> [2], aka AVM2. It&#8217;s been embedded in Flash 9, and it&#8217;s supposed to be wicked fast. It&#8217;s also been open sourced and donated to Mozilla, so it should show up in Firefox 3. [3] Frank Hecker wrote a <a href="http://hecker.org/mozilla/adobe-mozilla-and-tamarin" title="Adobe, Mozilla, and Tamarin">nice piece</a> on what impact this will have.</p>
<p>So soon you&#8217;ll be able to use the same language for Flash apps, Flex 2 apps (which is a lot more up my alley), and AJAX. That&#8217;s a big motivator to learn it.</p>
<p>The only place it&#8217;s missing is the JVM. Now, if you read carefully, Steve said it would launch on the JVM. Unfortunately, I&#8217;m not so sure. Rhino, the embedable JS interpreter/compiler for the JVM, can only handle JS 1.5. I figured, hey, they just added it to Java 6, <span style="font-weight: bold">of course</span> they&#8217;ll maintain it and keep it up. But we&#8217;re up to JavaScript 1.7, and it&#8217;s still not there. So I focused my search for a Rhino roadmap, and you know what? There pretty much isn&#8217;t one. The best source I could find was this thread on mozilla.dev.tech.js-engine, concerning the <a href="http://groups.google.com/group/mozilla.dev.tech.js-engine/browse_thread/thread/773c5cc56bfad5f3/efbdab756f550ca2?lnk=raot&amp;hl=en#efbdab756f550ca2" title="ECMAScript 4 in Rhino">implementation of ES4 features in Rhino</a>. I found it scary for a few reasons:</p>
<ul>
<li>There appears to be <span style="font-weight: bold">only one</span> <span style="font-weight: bold">active committer</span>, and just a few other helpers. Apparently Sun does <span style="font-weight: bold">not </span>have any engineers devoted to Rhino.</li>
<li>Modifying Rhino to handle ES4 is a daunting task. Rhino was initially a straight port of Spidermonkey, which was written in C.</li>
<li>The other option suggested is creating a straight port of Tamarin. Tamarin was written in AS3, essentially JS2, which should be easier to port to Java than C was. But it&#8217;s <span style="font-weight: bold">135,000 lines!</span> And in a much terser language than Java! So who knows how many lines the port will end up being. An AS3-to-Java compiler seems like it would take less time, but that still sounds like a major effort.</li>
</ul>
<p>I&#8217;ve also seen a couple instances (<a href="http://php-java-bridge.sourceforge.net/pjb/" title="java PHP bridge">PHP</a>, <a href="http://jepp.sourceforge.net/" title="Java embedded CPython">Python</a>) where someone connected Java to a native implemenation of a language. Perhaps they could do that with Tamarin, although I wonder about the performance. Would it be better than a Java implementation, or would the overhead hurt it too much?</p>
<p>So I&#8217;m bummed, as I&#8217;m looking for something to help me script Java (actually, replace it in the middle &#8211; and possibly presentation &#8211; tier), but I don&#8217;t want to choose a dead platform. To use JS2 server-side I&#8217;d have to give up Java altogether, and that seems like cutting off my nose to spite my face, or throwing the baby out with the bath water, or some other such calamity. There are just too many Java FOSS libraries, which solve really hard problems, that I&#8217;d have to give up.</p>
<p>So I&#8217;m going to have to size up JRuby some more, and perhaps do a bit more digging on ES4, before I make any rash decisions. Procrastination wins again!</p>
<p>[1] BTW, the presentation uses some new HTML/CSS/JS document format to replace PowerPoint, and you have to point your mouse in the lower right to pop up the controls. Crazy frustrating if you don&#8217;t know that.</p>
<p>[2] It&#8217;s a monkey, like Mozilla&#8217;s C-based JavaScript engine Spidermonkey. Not tamarind, the seed that makes a delicious sweet and tangy sauce for my samosas.</p>
<p>[3] If Microsoft was smart, they&#8217;d use it for IE8, assuming that&#8217;s legal and wouldn&#8217;t cause Mr. Gates to have an aneurysm.</p>
]]></content:encoded>
			<wfw:commentRss>http://philip.yurchuk.com/2007/02/17/the-next-big-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JVM Language Shootout</title>
		<link>http://philip.yurchuk.com/2006/08/13/jvm-language-shootout/</link>
		<comments>http://philip.yurchuk.com/2006/08/13/jvm-language-shootout/#comments</comments>
		<pubDate>Sun, 13 Aug 2006 07:12:16 +0000</pubDate>
		<dc:creator>Philip Yurchuk</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[jvm languages]]></category>

		<guid isPermaLink="false">http://philip.yurchuk.com/2006/08/13/jvm-language-shootout/</guid>
		<description><![CDATA[Steve Yegge has a comparison of various languages for the JVM. For the comparison, he creates an actual Swing application, so if the language couldn&#8217;t handle that, it didn&#8217;t get included. Since the objective was to find a language capable of replacing Java on the JVM, it&#8217;s a reasonable criterion. He&#8217;s not finished, but he [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://steve-yegge.blogspot.com/">Steve Yegge</a> has a <a href="http://www.cabochon.com/~stevey/sokoban/">comparison of various languages for the JVM</a>. For the comparison, he creates an actual Swing application, so if the language couldn&#8217;t handle that, it didn&#8217;t get included. Since the objective was to find a language capable of replacing Java on the JVM, it&#8217;s a reasonable criterion. He&#8217;s not finished, but he goes into depth on languages he does cover. I&#8217;m sure I&#8217;m not the only one anxious to hear his opinion of JRuby. Whatever he writes about it, though, couldn&#8217;t be worse than his <a href="http://www.cabochon.com/~stevey/sokoban/docs/article-groovy.html">damning review of Groovy</a>.</p>
<p>To give you a taste of Steve&#8217;s writing style, here&#8217;s something from his Java wishlist (yes, Java 5 was included in the shootout):</p>
<blockquote><p>#2: Bean shortcuts &#8212; C&#8217;mon, Sun folks. It&#8217;s practically the first thing people change about Java when they write a JVM language (or even an interpreter like BeanShell). Even small children can tell you that accessing a property using field-access syntax beats calling a getter or setter method. The only possible explanation for why Sun hasn&#8217;t added this yet is that they hate us.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://philip.yurchuk.com/2006/08/13/jvm-language-shootout/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
