<?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>The Learning Journey &#187; Java</title>
	<atom:link href="http://tamersalama.com/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://tamersalama.com</link>
	<description>of Tamer Salama</description>
	<lastBuildDate>Wed, 07 Dec 2011 00:44:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>NoMethodError: undefined method `eq&#8217; for nil:NilClass</title>
		<link>http://tamersalama.com/2010/09/27/nomethoderror-undefined-method-eq-for-nilnilclass/</link>
		<comments>http://tamersalama.com/2010/09/27/nomethoderror-undefined-method-eq-for-nilnilclass/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 03:20:27 +0000</pubDate>
		<dc:creator>Tamer</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://tamersalama.com/?p=912</guid>
		<description><![CDATA[JRuby 1.5.2 Rails 3.0 activerecord-jdbc-adapter 0.9.7 This issue arises when setting table name with a schema name prefix. For those in the know &#8211; this is a must-have if you&#8217;re connecting to oracle using a non-owner username (activerecord-jdbc-adapter). class Model &#60; ActiveRecord::Base set_table_name '&#60;schema&#62;.&#60;table&#62;' end Now &#8211; tracking this down led to lib/arel/engines/sql/relations/table.rb def table_exists? [...]]]></description>
			<content:encoded><![CDATA[<p>JRuby 1.5.2<br />
Rails 3.0<br />
activerecord-jdbc-adapter 0.9.7</p>
<p>This issue arises when setting table name with a schema name prefix. For those in the know &#8211; this is a must-have if you&#8217;re connecting to oracle using a non-owner username (activerecord-jdbc-adapter).</p>
<pre><code>
class Model &lt; ActiveRecord::Base
  set_table_name '&lt;schema&gt;.&lt;table&gt;'
end
</code></pre>
<p>Now &#8211; tracking this down led to<br />
lib/arel/engines/sql/relations/table.rb</p>
<pre><code>
def table_exists?
  @table_exists ||= @@tables.include?(name) || engine.connection.table_exists?(name)
end
</code></pre>
<p>The <code>@@tables</code> include table names as read from the connection (sans schema name). The comparison with the <code>name</code> always yields false resulting in an instantiation of an empty Header (with no attributes). Hence &#8211; <code>alias_table[&lt;attr&gt;]</code> always returned nil and nil.eq is undefined.</p>
<p>Anyways &#8211; as a work around (sorry: non tested monkey patch):</p>
<p>in your apps lib folder (provided that it&#8217;s auto-loaded) &#8211; create the arel_ext.rb</p>
<pre><code>
module Arel
  class Table
    def table_exists?
     #checking with only &lt;table_name&gt; rather than &lt;schema_name&gt;.&lt;table_name&gt;
      @table_exists ||= @@tables.include?(name.to_s.gsub(/.*\./, ''))|| engine.connection.table_exists?(name)
    end
  end
end
</code>
</pre>
<p>Reported on activerecord-jdbc-adapter list: <a target="_blank" href="http://kenai.com/jira/browse/ACTIVERECORD_JDBC-132">http://kenai.com/jira/browse/ACTIVERECORD_JDBC-132</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tamersalama.com/2010/09/27/nomethoderror-undefined-method-eq-for-nilnilclass/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Java for the forever beginner (II)</title>
		<link>http://tamersalama.com/2010/09/23/java-for-the-forever-beginner-ii/</link>
		<comments>http://tamersalama.com/2010/09/23/java-for-the-forever-beginner-ii/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 06:24:54 +0000</pubDate>
		<dc:creator>Tamer</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://tamersalama.com/?p=904</guid>
		<description><![CDATA[If your JSP code is almost 2/3rd pure Java code, then you&#8217;re doing something wrong.  One easy way of knowing Java code from HTML/Snippets is to look at the PALE GREEN (see image for color tone). If the pale green is more than the white &#8211; then you must be joking. If you move the [...]]]></description>
			<content:encoded><![CDATA[<p>If your JSP code is almost 2/3rd pure Java code, then you&#8217;re doing something wrong.  One easy way of knowing Java code from HTML/Snippets is to look at the PALE GREEN (see image for color tone). If the pale green is more than the white &#8211; then you must be joking.</p>
<p>If you move the green parts to become white on their own java files; Your future self will thank you for it.</p>
<p>Or at least you won&#8217;t get cursed.</p>
<p><a href="http://tamersalama.com/wp-content/uploads/2010/09/frustration_2.jpg"><img class="alignleft size-medium wp-image-905" title="frustration_2" src="http://tamersalama.com/wp-content/uploads/2010/09/frustration_2-204x300.jpg" alt="" width="204" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://tamersalama.com/2010/09/23/java-for-the-forever-beginner-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java for the forever beginner (I)</title>
		<link>http://tamersalama.com/2010/09/23/java-for-the-forever-beginner-i/</link>
		<comments>http://tamersalama.com/2010/09/23/java-for-the-forever-beginner-i/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 05:59:35 +0000</pubDate>
		<dc:creator>Tamer</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://tamersalama.com/?p=899</guid>
		<description><![CDATA[If a stylesheet link tag for a &#8216;default.css&#8217; file is repeated in 10 different files; when it&#8217;s only a SINGLE PAGE WEB APPLICATION &#8211; you&#8217;re doing something wrong.]]></description>
			<content:encoded><![CDATA[<p>If a stylesheet link tag for a &#8216;default.css&#8217; file is repeated in 10 different files; when it&#8217;s only a SINGLE PAGE WEB APPLICATION &#8211; you&#8217;re doing something wrong.</p>
<p><a href="http://tamersalama.com/wp-content/uploads/2010/09/frustration.jpg"><img class="alignleft size-medium wp-image-901" title="frustration" src="http://tamersalama.com/wp-content/uploads/2010/09/frustration-300x182.jpg" alt="" width="300" height="182" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://tamersalama.com/2010/09/23/java-for-the-forever-beginner-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails vs The 7 Frameworks</title>
		<link>http://tamersalama.com/2008/01/24/rails-vs-the-7-frameworks/</link>
		<comments>http://tamersalama.com/2008/01/24/rails-vs-the-7-frameworks/#comments</comments>
		<pubDate>Thu, 24 Jan 2008 07:49:20 +0000</pubDate>
		<dc:creator>Tamer</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.tamersalama.com/2008/01/24/rails-vs-the-7-frameworks/</guid>
		<description><![CDATA[This has nothing to do with comparing 8 different frameworks. It&#8217;s just to tell the horror story of one of our down-the-drain projects. The client came with an old product that he needed to add new features to. The product does, what is best described as CRUD operations. Nothing challenging, nothing difficult. It maintains a [...]]]></description>
			<content:encoded><![CDATA[<p>This has nothing to do with comparing 8 different frameworks.</p>
<p>It&#8217;s just to tell the horror story of one of our down-the-drain projects.</p>
<p>The client came with an old product that he needed to add new features to. The product does, what is best described as CRUD operations. Nothing challenging, nothing difficult. It maintains a set of data for various client in a certain business domain. Their business model (at least what they&#8217;re trying to do) is through ad and subscription revenue. They were trying to move the business forward through enhancing the provided service.</p>
<p>The only challenge can best be described as that the product was a pure mess.</p>
<p>It has been built using (last time I counted) 7 different Java frameworks, some redundant, some obsolete. Apparently it has been the greatest learning experience for few individuals. The product took 8 years in the making, 4 different teams (non remained with the project), 14,000+ files, absurdly normalized 100+ tables database, absolutely 0 documents, No unit/function/otherwise tests to reach its current state.</p>
<p>To give some example of code horror that we had to go through, some Java classes contained business logic, HTML code, display logic, data access mechanisms, hard coded urls. The objects were then instantiated from within JSP pages (with lots of other embedded Java business logic/code) and passed parameters and servlet controls.</p>
<p>This is not to mention the build scripts that took 3 hours to update code off of the CVS, then threw numerous errors during the &#8220;real&#8217; build.</p>
<p>That&#8217;s in addition to the project tree which was in a state of absolute mess (40+ different individual modules, with some exact modules placed in different locations).</p>
<p>And have I mentioned the &#8220;wrapper&#8221; PHP application that was delivering a CMS-like functionality (another set of mess, with no cross-application awareness of any kind).</p>
<p>Again, the product didn&#8217;t do anything challenging. Just basic CRUD and a couple background processes.</p>
<p>Our initial attempt was, of course, to build on top of the insanely absurd code-base, but after few days, we&#8217;ve decided (us, client, operations) that it might worth to venture into a new platform, in order to make it easier (and cheaper) to deliver new business service and at the same time, incrementally migrate features into a more robust code base.</p>
<p>Few months into the making; including the client formulating his requirement and reverse engineering the legacy system, we had our first release of the new business features (including the integration with the original application, modelling 70% of the legacy schema, a streamlined version of few original functions, documenting finds of the original application).</p>
<p>Few more months of client acceptance testing (and repetitive requests from our part for a feedback), client vacations,  and  [seemingly] client running out of budget, the client finally came back to us deciding that our solution was not accepted.</p>
<p>I frankly didn&#8217;t know whether to laugh or cry.</p>
<p>Despite the fact that the client admits, in his own words, the original Java application is a bag of &#8220;s$%t&#8221;, he refuses any attempt from our side to tell him that his application is non-maintainable.</p>
<p>He decided (and probably promised by some other individuals) to monkey-patch the code base that he has. He, of course, threw our choice of Ruby into the bag of reasons not to pursue this further.</p>
<p>Although I can defend our decision to resort to an incremental migration, and taking Rails as our vehicle quite well, yet, I now believe that the choice of technology should be the least of his worries. The business decision of incremental migrations (or even rather a rewrite) remains the optimum choice in my opinion, whether it&#8217;s done in Ruby, Java, PHP or brain*^%&amp;.</p>
<p>The moral of the story is: As long as you care, never be a door mat, insist on getting your ideas through, always believe that you&#8217;ve been hired not for your typing speed, but for your intellectual abilities and what they can bring to the business.</p>
]]></content:encoded>
			<wfw:commentRss>http://tamersalama.com/2008/01/24/rails-vs-the-7-frameworks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pyramids, Application. An Analogy</title>
		<link>http://tamersalama.com/2007/06/24/pyramids-application-an-analogy/</link>
		<comments>http://tamersalama.com/2007/06/24/pyramids-application-an-analogy/#comments</comments>
		<pubDate>Mon, 25 Jun 2007 05:34:50 +0000</pubDate>
		<dc:creator>Tamer</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.tamersalama.com/2007/06/24/pyramids-application-an-analogy/</guid>
		<description><![CDATA[Working on maintaining and modifying a five year-old Java application, I came to realize there&#8217;s a strong relation between legacy and pyramids. Here&#8217;s an analogy: Pyramids are HUGE monuments, built for the sole purpose of being a tomb to one person. Although the project tree is HUGE (14000+ files), the purpose of the application is [...]]]></description>
			<content:encoded><![CDATA[<p>Working on maintaining and modifying a five year-old Java application, I came to realize there&#8217;s a strong relation between legacy and pyramids. Here&#8217;s an analogy:</p>
<table>
<tr>
<td>
<ul>
<li><a href="http://www.tamersalama.com/wp-content/uploads/2007/06/huge.jpg" title="Huge Pyramid"><img src="http://www.tamersalama.com/wp-content/uploads/2007/06/huge.jpg" title="Huge Pyramid" alt="Huge Pyramid" align="right" width="150" /></a>Pyramids are HUGE monuments, built for the sole purpose of being a tomb to one person.</li>
<li>Although the project tree is HUGE (14000+ files), the purpose of the application is amazingly modest (CRUD + search)</li>
</ul>
</td>
</tr>
<tr>
<td><a href="http://www.tamersalama.com/wp-content/uploads/2007/06/building.jpg" title="Building the pyramid"><img src="http://www.tamersalama.com/wp-content/uploads/2007/06/building.jpg" title="Building the pyramid" alt="Building the pyramid" align="left" hspace="20" /></a></p>
<ul>
<li>Pyramids required a lots of resources to build (time, wealth, labor).</li>
<li>The application took 5 years, 4 teams and lots of $ to build.</li>
</ul>
</td>
</tr>
<tr>
<td><a href="http://www.tamersalama.com/wp-content/uploads/2007/06/build_method.gif" title="Build Method"><img src="http://www.tamersalama.com/wp-content/uploads/2007/06/build_method.thumbnail.gif" title="Build Method" alt="Build Method" align="right" /></a></p>
<ul>
<li>No one knows exactly how the pyramids were built.</li>
<li>Compiling/Building the application is a black box. &#8220;Just invoke those commands &#8211; twice &#8211;  and you&#8217;ll get your &#8216;war&#8217; files&#8221;, said the Build Master.</li>
</ul>
</td>
</tr>
<tr>
<td>
<ul>
<li>Ancient scripts are quite scarce inside the Pyramids.</li>
<li>Project documentations are almost non-existent</li>
</ul>
</td>
</tr>
<tr>
<td>
<ul>
<li>Sometimes you wonder what motivated people to build such a thing, in such a shape.</li>
<li>The schema is highly normalized (talk about contact information spanning across 4 different tables, with email field divided into name and fqdn) &#8211; WHY?!</li>
</ul>
</td>
</tr>
<tr>
<td>
<ul>
<li>When you look closely, Pyramids are built by stacking layers of stone blocks on top of each other.</li>
<li>The application is a grand collection of all sorts of frameworks (counted 4 so far), libraries (uncountable), tools, architectures.</li>
</ul>
</td>
</tr>
<tr>
<td>
<ul>
<li>Currently, some Pyramids aren&#8217;t structurally sound, and visits to them are quite limited in fear of falling rocks.</li>
<li>Dare adding new code to that monster?</li>
</ul>
</td>
</tr>
<tr>
<td>
<ul>
<li><a href="http://www.tamersalama.com/wp-content/uploads/2007/06/bent.jpg" title="Bent Pyramid"><img src="http://www.tamersalama.com/wp-content/uploads/2007/06/bent.thumbnail.jpg" title="Bent Pyramid" alt="Bent Pyramid" align="right" /></a>Imperfect pyramids can be found along side perfect ones, proving that it took builders decades to master the way they were built.</li>
<li>The application contain all sort of &#8220;imperfect&#8221; code as a proof of how the builders gained experience over time (JSP files with Embedded Classes, with embedded Java code and hard coded urls, business logic, view logic and data access mechanisms)</li>
</ul>
</td>
</tr>
<tr>
<td>
<ul>
<li>People visit the Pyramids for few hours as a source of great admiration and respect. Then, continue on with their lives.</li>
<li>The application&#8217;s code is a source of respect and admiration, but when it comes to something functional, better build something else.</li>
</ul>
</td>
</tr>
<tr>
<td>
<ul>
<li>Pyramids can&#8217;t be maintained.</li>
<li>The great conclusion.</li>
</ul>
</td>
</tr>
<tr>
<td>
UPDATE:</p>
<ul>
<li>Some people have been reported to complain about a sense of suffocation or claustrophobic symptoms when exploring the pyramid internal passageways.</li>
<li>The same is experienced while reading the application code.</li>
</ul>
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://tamersalama.com/2007/06/24/pyramids-application-an-analogy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Multiple-Application Login</title>
		<link>http://tamersalama.com/2007/04/10/multiple-application-login/</link>
		<comments>http://tamersalama.com/2007/04/10/multiple-application-login/#comments</comments>
		<pubDate>Tue, 10 Apr 2007 17:27:55 +0000</pubDate>
		<dc:creator>Tamer</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.tamersalama.com/2007/04/10/multiple-application-login/</guid>
		<description><![CDATA[I&#8217;m trying to handle an integration between a humongous code-base Java application (doing basic stuff) with a new Rails application (talking about injecting Rails transparently). Handling login (multi-application logins) was my first obstacle, and after talking with Steven and Brenton, I came up with the following implementation: require 'rubygems' require 'hpricot' require 'mechanize' class WelcomeController [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m trying to handle an integration between a humongous code-base Java application (doing basic stuff) with a new Rails application (talking about injecting Rails transparently). Handling login (multi-application logins) was my first obstacle, and after talking with <a href="http://stevenreimer.com" target="_blank">Steven</a> and Brenton, I came up with the following implementation:</p>
<pre>
<code>

require 'rubygems'
require 'hpricot'
require 'mechanize'

class WelcomeController &lt; ApplicationController
...

  def login
    agent = WWW::Mechanize.new
    page = agent.get('http://example.com')
    login_form = page.form('loginForm')
    login_form.username = params['username']
    login_form.password = params['password']
    page = agent.submit(login_form, login_form.buttons.first)
    cookie = agent.cookies.first
    cookies["JSESSIONID"] = {:value =&gt; pet_cookie.value, :path =&gt; '/', :domain =&gt; 'example.com'}
  end

...

end

</code></pre>
<p>Of course this is just the basic stuff (no error handling, no response checking, no cookie review, &#8230;)</p>
<p>The idea is to use <a href="http://mechanize.rubyforge.org/" target="_blank">Mechanize</a> to simulate the browser actions from within the controller, log-in to the second application, set up a first-application session cookie with the same name/value pair as that of the returned cookie from the first application. I&#8217;m not sure that this covers all the basis but it&#8217;s not a bad start. <a href="http://oldmoe.blogspot.com/" target="_blank">Muhammad</a> has also mentioned the idea of having Rails session cookies written with the same name/value pair as those of the Java application.</p>
<p>Thoughts?</p>
]]></content:encoded>
			<wfw:commentRss>http://tamersalama.com/2007/04/10/multiple-application-login/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails &#8211; Lunch and Learn</title>
		<link>http://tamersalama.com/2007/02/05/ruby-on-rails-lunch-and-learn/</link>
		<comments>http://tamersalama.com/2007/02/05/ruby-on-rails-lunch-and-learn/#comments</comments>
		<pubDate>Tue, 06 Feb 2007 06:45:59 +0000</pubDate>
		<dc:creator>Tamer</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.tamersalama.com/2007/02/05/ruby-on-rails-lunch-and-learn/</guid>
		<description><![CDATA[Last Friday was my Ruby on Rails presentation at Commerx Corporation (in Lunch and Learn series). It wasn&#8217;t as good as I wanted, but, wasn&#8217;t too bad either. Some keys on the laptop were in the on-again-off-again mode, so, I had to rely on an external keyboard and use the touchpad at the same time [...]]]></description>
			<content:encoded><![CDATA[<p>Last Friday was my Ruby on Rails presentation at <a href="http://www.commerx.com" target="_blank">Commerx Corporation</a> (in Lunch and Learn series). It wasn&#8217;t as good as I wanted, but, wasn&#8217;t too bad either. Some keys on the laptop were in the on-again-off-again mode, so, I had to rely on an external keyboard and use the touchpad at the same time (not a very recommended setup).</p>
<p>Anyways, I think some of <a href="http://flickr.com/photos/tamersalama/sets/72157594492220789/">the guys</a> were entrigued enough to, at least, give it a try. Being mainly at a PHP shop, I&#8217;m still not qualified to do a full comparison, but, from the little time I spent with PHP (so far), I&#8217;m becoming even more attached to the beloved Rails.</p>
<p>I think I&#8217;m becoming more of a Rails fanatic &#8211; comparing every code and architecture I come across to Rails. I find myself asking, how &#8216;that&#8217; could be done in Rails. How could ruby shine in such a situation. How elegant would it be to implement that in Rails. How much less lines of code I could reach that same setup.</p>
<p>My next project is a minor refactoring of what seems like a complex Java project (read: reusable components). I&#8217;m still exploring the source tree. I can&#8217;t help but to wonder about the size of the project, and what it &#8216;actually&#8217; do <img src='http://tamersalama.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . I&#8217;m having a hard time forcing myself &#8216;NOT&#8217; to think of it as a Rails rewrite opportunity. Hope I can manage <img src='http://tamersalama.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://tamersalama.com/2007/02/05/ruby-on-rails-lunch-and-learn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RoR-DB2/400 &#8211; Not There Yet</title>
		<link>http://tamersalama.com/2006/10/31/ror-db2400-not-there-yet/</link>
		<comments>http://tamersalama.com/2006/10/31/ror-db2400-not-there-yet/#comments</comments>
		<pubDate>Tue, 31 Oct 2006 21:19:54 +0000</pubDate>
		<dc:creator>Tamer</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.tamersalama.com/2006/10/31/ror-db2400-not-there-yet/</guid>
		<description><![CDATA[Breaking the silence &#8211; this was posted by &#8220;tprentis&#8221; on IBM forum for DB2 on Rails Toolkit I&#39;m a recent convert to Ruby on Rails. My organization has several (over 50) iSeries machines on our WAN. As MIS manager, I plan to start pushing RoR development in the near future but really need that DB2 [...]]]></description>
			<content:encoded><![CDATA[<p>Breaking the silence &#8211; this was posted by &#8220;tprentis&#8221; on <a href="http://www.ibm.com/alphaworks/tech/db2onrails" target="_blank">IBM forum for DB2 on Rails Toolkit</a><br />
<blockquote style="border-style: solid; border-width: 1px; padding: 10px; background-color: papayawhip; font-style: italic;">I&#39;m a recent convert to Ruby on Rails. My organization has several (over 50) iSeries machines on our WAN. As MIS manager, I plan to start pushing RoR development in the near future but really need that DB2 iSeries connector running. Please escalate the development effort. Thanks!</p></blockquote>
<p>So, provided the info is real, and skipping the part that a connector/adapter is not ready up until now, an organization with over 50 iSeries machines (most probably legacy) will be pushing RoR as a part of its technology stack. That&#39;s big. </p>
<p>A reply from &#8220;Milhouse&#8221;<br />
<blockquote style="border-style: solid; border-width: 1px; padding: 10px; background-color: papayawhip; font-style: italic;">It&#39;s not that hard to hack up an adapter if you don&#39;t mind using the DBI:ADO adapter (see my earlier post). I&#39;ve used it experimentally with success. Another option I plan to explore is to use JRuby with their JDBC-ActiveRecord with the existing iSeries JDBC drivers. This has the added advantage of easy integration with Java libraries.</p></blockquote>
<p>I think it&#39;s time to give <a href="http://jruby.codehaus.org">JRuby</a> a try.</p>
<p>powered by <a href="http://performancing.com/firefox">performancing firefox</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tamersalama.com/2006/10/31/ror-db2400-not-there-yet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>EGJUG First Meeting</title>
		<link>http://tamersalama.com/2006/04/17/egjug-first-meeting/</link>
		<comments>http://tamersalama.com/2006/04/17/egjug-first-meeting/#comments</comments>
		<pubDate>Tue, 18 Apr 2006 00:54:31 +0000</pubDate>
		<dc:creator>Tamer</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.tamersalama.com/2006/04/17/egjug-first-meeting/</guid>
		<description><![CDATA[I have attended the First EGJUG meeting and it was a good kickstart. EGJUG is an attempt to bring together Egyptian Java enthusiasts, help promote Java in Egypt, and raise the skills of Java developers. With 290+ members and only around 10 attending the first meeting, the group needs a hell lot of marketing. There&#39;s [...]]]></description>
			<content:encoded><![CDATA[<p>
I have attended the <a href="http://www.egjug.org/first_meeting_minutes" target="_blank">First EGJUG meeting</a> and it was a good kickstart. <a href="http://www.egjug.org" target="_blank">EGJUG</a> is an attempt to bring together Egyptian Java enthusiasts, help promote Java in Egypt, and raise the skills of Java developers.
</p>
<p>
With 290+ members and only around 10 attending the first meeting, the group needs a hell lot of marketing. There&#39;s also a good chance the Java developers around aren&#39;t that interested in such groups/meeting/events. I experienced the same lack of interest when trying to establish a meeting among <a href="http://groups.yahoo.com/group/alexjug" target="_blank">Alexandria Java User group</a>. That said, I think EGJUG have a better chance given the current mindset and experience of moderators, and core team.
</p>
<p>
There&#39;s an initial plan to invite a different speaker each month, so, I&#39;ll be trying to reach out for some experts for Java-related talks.
</p>
<p>If you have an interest in either talking or attending, or have any other suggestions in that respect, I&#39;m all ears and eyes.</p>
]]></content:encoded>
			<wfw:commentRss>http://tamersalama.com/2006/04/17/egjug-first-meeting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Roller recent entries and comments</title>
		<link>http://tamersalama.com/2006/02/16/roller-recent-entries-and-comments/</link>
		<comments>http://tamersalama.com/2006/02/16/roller-recent-entries-and-comments/#comments</comments>
		<pubDate>Thu, 16 Feb 2006 14:05:29 +0000</pubDate>
		<dc:creator>Tamer</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.tamersalama.com/2006/02/16/roller-recent-entries-and-comments/</guid>
		<description><![CDATA[According to Marcel&#8217;s request in a recent comment &#8211; here&#8217;s how I hacked the list of recent entries and comments on my blog. It is based on someone else&#8217;s work (I forgot who). Create two new Recent Entries and Comments template pages. Recent Entries template: &#60;ul&#62; #set( $tamerMap = $pageModel.getRecentWeblogEntries(100, null) ) #foreach( $tamerDay in [...]]]></description>
			<content:encoded><![CDATA[<p> According to Marcel&#8217;s request in a recent comment &#8211; here&#8217;s how I hacked the list of recent entries and comments on my blog.<br />
It is based on someone else&#8217;s work (I forgot who).</p>
<p>Create two new Recent Entries and Comments template pages.</p>
<p>Recent Entries template:</p>
<p style="border: 1px solid #7f9db9; overflow: auto; width: 470px; height: 150px"><code><br />
&lt;ul&gt;</p>
<p>#set( $tamerMap = $pageModel.getRecentWeblogEntries(100, null) )</p>
<p>#foreach( $tamerDay in $tamerMap.keySet() )</p>
<p>#set( $tamerEntries = $tamerMap.get($tamerDay) )</p>
<p>#foreach( $tamerEntry in $tamerEntries )</p>
<p>#set( $tamerLink = "$ctxPath/page/$userName/$page.link/$tamerEntry.anchor" )</p>
<p>&lt;li&gt;&lt;a href="$tamerLink" title="$tamerEntry.title"&gt;$tamerEntry.title&lt;/a&gt;&lt;/li&gt;</p>
<p>#end</p>
<p>#end</p>
<p>&lt;/ul&gt;</p>
<p></code></p>
<p>Recent Comments template:</p>
<p style="border: 1px solid #7f9db9; overflow: auto; width: 470px; height: 180px"><code><br />
#if($website.allowComments)</p>
<p>&lt;ul&gt;</p>
<p>#set( $tamerMap = $pageModel.getRecentWeblogEntries(25, nil) )</p>
<p>#foreach( $tamerDay in $tamerMap.keySet() )</p>
<p>#set( $tamerEntries = $tamerMap.get($tamerDay) )</p>
<p>#foreach( $tamerEntry in $tamerEntries )</p>
<p>#set( $sideCommentCount = $pageModel.getCommentCount($tamerEntry.Id))</p>
<p>#if( $sideCommentCount&gt;0)</p>
<p>#set( $tamerLink = "$ctxPath/comments/$userName/$page.link/$tamerEntry.anchor" )</p>
<p>&lt;li&gt;[$sideCommentCount] &lt;a href="$tamerLink"&gt;$tamerEntry.title&lt;/a&gt;</p>
<p>&lt;/li&gt;</p>
<p>#end</p>
<p>#end</p>
<p>#end</p>
<p>&lt;/ul&gt;</p>
<p>#end</p>
<p></code></p>
<p>Include these pages in their respective locations in the main weblog template through #includePage(&#8220;&lt;_templateName&gt;&#8221;)</p>
<p>It&#8217;s just a quick hack, there are better ways to do it (macros), and the pervious method will limit the number of entries according to the page you&#8217;re on (try clicking any of the old entries and check the new list) &#8211; but these will work for most of the cases. Also, there&#8217;s this <a href="http://nollerweblogger.org/wiki/Wiki.jsp?page=ShowRecentEntries" target="_blank">showRecentEntries</a> macro definition that can be used &#8211; but I haven&#8217;t tried it. HTH.</p>
]]></content:encoded>
			<wfw:commentRss>http://tamersalama.com/2006/02/16/roller-recent-entries-and-comments/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

