<?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>Omnia Mutantur &#187; Programming</title>
	<atom:link href="http://ricardo.strangevistas.net/categories/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://ricardo.strangevistas.net</link>
	<description>"No. Not even in the face of Armaggedon. Never compromise."</description>
	<lastBuildDate>Thu, 02 Apr 2009 17:03:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>NHibernate exceptions</title>
		<link>http://ricardo.strangevistas.net/nhibernate-exceptions.html</link>
		<comments>http://ricardo.strangevistas.net/nhibernate-exceptions.html#comments</comments>
		<pubDate>Tue, 14 Oct 2008 23:58:40 +0000</pubDate>
		<dc:creator>Ricardo</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ricardo.strangevistas.net/?p=406</guid>
		<description><![CDATA[After hours of travel, our hero finds himself suddenly in the midst of dark woods.  Nailed to a tree there is a wooden sign, weather-beaten by the ages. It reads:
"Invalid Cast (check your mapping for property type mismatches); setter of classname"
Right besides the sign stands NHibernate, its expression unreadable.  Our hero, unsure of [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>After hours of travel, our hero finds himself suddenly in the midst of dark woods.  Nailed to a tree there is a wooden sign, weather-beaten by the ages. It reads:</p>
<p><code>"Invalid Cast (check your mapping for property type mismatches); setter of classname"</code></p>
<p>Right besides the sign stands NHibernate, its expression unreadable.  Our hero, unsure of which path to take, asks for directions as to what to fix.</p>
<p>NHibernate: &#8220;The problem lies&#8230;&#8221; &#8211; sweeps hand widely at the class &#8211; &#8220;that way&#8221;<br />
Ricardo: &#8220;Where? Which way?&#8221;<br />
NHibernate:  &#8220;In a property&#8230;&#8221;<br />
Ricardo: &#8220;Of course, all it has are properties! Which one?&#8221;<br />
NHibernate: &#8220;No&#8230; I&#8217;m afraid I&#8217;ve said too much&#8221;</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://ricardo.strangevistas.net/nhibernate-exceptions.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bus error on Erlang with Leopard 10.5.3</title>
		<link>http://ricardo.strangevistas.net/bus-error-on-erlang-with-leopard-1053.html</link>
		<comments>http://ricardo.strangevistas.net/bus-error-on-erlang-with-leopard-1053.html#comments</comments>
		<pubDate>Fri, 30 May 2008 00:43:45 +0000</pubDate>
		<dc:creator>Ricardo</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ricardo.strangevistas.net/bus-error-on-erlang-with-leopard-1053.html</guid>
		<description><![CDATA[I&#8217;ve just updated my OS X to the latest 10.5.3, and now Erlang refuses to run &#8211; I keep getting bus error.  I uninstalled and attempted to build it from source using Macports, but that did not help &#8211; I get the same error when building hipe:

=== Entering application hipe
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_lang_erlang/work/erlang-R12B-2/bin/i386-apple-darwin9.3.0/hipe_mkliterals -e > hipe_literals.hrl
erlc -W [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just updated my OS X to the latest 10.5.3, and now Erlang refuses to run &#8211; I keep getting <em>bus error</em>.  I uninstalled and attempted to build it from source using Macports, but that did not help &#8211; I get the same error when building hipe:</p>
<p><code><br />
=== Entering application hipe<br />
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_lang_erlang/work/erlang-R12B-2/bin/i386-apple-darwin9.3.0/hipe_mkliterals -e > hipe_literals.hrl</p>
<p>erlc -W  +debug_info +warn_obsolete_guard +inline -o../ebin hipe_rtl_arch.erl<br />
make[3]: *** [../ebin/hipe_rtl_arch.beam] Bus error<br />
make[2]: *** [opt] Error 2<br />
make[1]: *** [opt] Error 2<br />
make: *** [secondary_bootstrap_build] Error 2<br />
</code></p>
<p>Still haven&#8217;t found a fix, but thought about sending this out as Googlebait just in case.</p>
<p><strong>Update</strong>: <a href="https://trac.macports.org/ticket/15459">there is now a bug report at Macports</a>.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://ricardo.strangevistas.net/bus-error-on-erlang-with-leopard-1053.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java SE 6 on OS X</title>
		<link>http://ricardo.strangevistas.net/java-se-6-on-os-x.html</link>
		<comments>http://ricardo.strangevistas.net/java-se-6-on-os-x.html#comments</comments>
		<pubDate>Tue, 06 May 2008 02:43:42 +0000</pubDate>
		<dc:creator>Ricardo</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Science and Technology]]></category>

		<guid isPermaLink="false">http://ricardo.strangevistas.net/java-se-6-on-os-x.html</guid>
		<description><![CDATA[So Apple finally releases Java SE 6 for the Mac, with its huge speed improvements, and now I can&#8217;t edit any single input field on either of the Java applications I use (including Moneydance and IntelliJ IDEA) because the fields show up greyed-out and are read-only. No, rebooting did not help. Seems I have to [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>So Apple finally releases Java SE 6 for the Mac, with its huge speed improvements, and now I can&#8217;t edit any single input field on either of the Java applications I use (including Moneydance and IntelliJ IDEA) because the fields show up greyed-out and are read-only. No, rebooting did not help. Seems I have to stick with Java 5.</p>
<p>Brilliant.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://ricardo.strangevistas.net/java-se-6-on-os-x.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>git add before commit</title>
		<link>http://ricardo.strangevistas.net/git-add-before-commit.html</link>
		<comments>http://ricardo.strangevistas.net/git-add-before-commit.html#comments</comments>
		<pubDate>Mon, 28 Apr 2008 06:35:26 +0000</pubDate>
		<dc:creator>Ricardo</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ricardo.strangevistas.net/git-add-before-commit.html</guid>
		<description><![CDATA[I&#8217;ve been experimenting with git for version control of my document folder, before I use it professionally.  It has several things I like, particularly the blazing speed and the fact that there&#8217;s a single .git directory instead of a myriad of .svn all over the place (which made it a bit of a pain [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been experimenting with <a href="http://en.wikipedia.org/wiki/Git_(software)" title="Git (software) - Wikipedia, the free encyclopedia">git</a> for version control of my document folder, before I use it professionally.  It has several things I like, particularly the blazing speed and the fact that there&#8217;s a single <em>.git</em> directory instead of a myriad of <em>.svn</em> all over the place (which made it a bit of a pain to keep those directories in sync if one of of the sub-.svn&#8217;s got erased by, say, an over-eager script).</p>
<p>Coming from subversion and cvs, something struck me as odd: if you do <em>git commit</em>, it will only commit the  changes that you have just added or removed &#8211; anything else needs to be explicitly added to the working index, even if you have added it before.  Bit of a pain if you simply want to commit everything.  </p>
<p>Digging around the <a href="http://www.kernel.org/pub/software/scm/git/docs/git-commit.html" title="git-commit(1)">git docs</a>, there&#8217;s an option you can pass so that it will just commit all files you have previously told it about: <em>git commit -a</em>.    There&#8217;s also an option invoked by <em>git commit &#8211;interactive</em> that causes it to ask you for each file if you want it to go on the current commit or not.</p>
<p>As to <a href="http://smalltalk.gnu.org/blog/bonzinip/using-git-without-feeling-stupid-part-2" title="Using git without feeling stupid (part 2) | GNU Smalltalk">why that is</a>:</p>
<blockquote><p>
What git add does is to move the current version of the named file to a special staging area, holding files that are ready to be committed. And what git commit (without other arguments) will do is to take the index and make a new revision out of what the index contains. git commit -a is just a convenience which adds all modified files to the index, and then commits the result.</p>
<p>How does this affect you? The first thing to remember is this one: only run git add on new files just before committing. Otherwise, you&#8217;ll commit the wrong contents of the file.
</p></blockquote>
<p>It takes a bit getting used to, but it&#8217;s a lovely tool so far.  If you&#8217;re thinking about using it yourself, start by reading <a href="http://www-cs-students.stanford.edu/~blynn/gitmagic/" title="Git Magic - Preface">Git Magic</a>, and then after the first three chapters move to <a href="http://smalltalk.gnu.org/blog/bonzinip/using-git-without-feeling-stupid-part-1" title="Using git without feeling stupid (part 1) | GNU Smalltalk">Using git without feeling stupid</a> and its <a href="http://smalltalk.gnu.org/blog/bonzinip/using-git-without-feeling-stupid-part-2" title="Using git without feeling stupid (part 2) | GNU Smalltalk">part 2</a>.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://ricardo.strangevistas.net/git-add-before-commit.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pragmatic Programming in Erlang, chapter 8</title>
		<link>http://ricardo.strangevistas.net/pragmatic-programming-in-erlang-chapter-8.html</link>
		<comments>http://ricardo.strangevistas.net/pragmatic-programming-in-erlang-chapter-8.html#comments</comments>
		<pubDate>Thu, 24 Apr 2008 16:35:44 +0000</pubDate>
		<dc:creator>Ricardo</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ricardo.strangevistas.net/pragmatic-programming-in-erlang-chapter-8.html</guid>
		<description><![CDATA[Lately I&#8217;ve been reading Joe Armstrong&#8217;s Pragmatic Programming in Erlang, learning a couple new tricks. In chapter 8 he proposes a problem:

Write a ring benchmark. Create N processes in a ring. Send a message round the ring M times so that a total of N * M messages get sent. Time how long this takes [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Lately I&#8217;ve been reading Joe Armstrong&#8217;s <a href="http://amazon.com/dp/193435600X/mendesopenbar/" title="Amazon.com: Programming Erlang: Software for a Concurrent World: Joe Armstrong: Books">Pragmatic Programming in Erlang</a>, learning a couple new tricks. In chapter 8 he proposes a problem:</p>
<p><quote><br />
Write a ring benchmark. Create N processes in a ring. Send a message round the ring M times so that a total of N * M messages get sent. Time how long this takes for different values of N and M.<br />
</quote></p>
<p>Here is my solution:</p>
<pre>
-module(ringproblem).
-export([start/2, ring/1, rpc/2, benchmark/3]).

% Spawns a function and registers it as an atom.
start(AnAtom, Fun) ->
    Pid = spawn(Fun),
    register(AnAtom, Pid).

%% This loop receives a parameter that's either the next Pid on the chain,
%% or null if this is the last process on the chain.  It then passes the
%% message to the next process. Once the cycle has been completed, it
%% calls back the original caller to let it know.
loop(F) ->
    receive
	{ From, 0, Counter, Message } ->
	    F ! die, % tell the next process to die
	    From ! { ended, Counter },
	    io:format("Cycle for ~p ended.~n", [Message]);
	{ From, Number, Counter, Message } ->
	    case F of
		void ->
		    firstProcess ! { From, Number - 1, Counter + 1, Message };
		_Other ->
		    F ! { From, Number, Counter + 1, Message }
	    end,
	    loop(F);
	die ->
	    case F of
		void ->
		    io:format("Last process died");
		_Other ->
		    F ! die,
		    void
	    end;
	Other ->
	    io:format("I don't know what to do with ~p.~n",[Other]),
	    loop(F)
    end.

%% Sets up a ring of at least 2 elements by recursively building it back
ring(Elements) when Elements >= 2 ->
    Pid = spawn(fun() -> loop(void) end),
    ring(Elements - 1, Pid).

%% If we have no more elements, this is the first process. Register it.
ring(0, Pid) ->
   register(firstProcess, Pid);
%% otherwise walk back
ring(N, Pid) ->
    PrevPid = spawn(fun() -> loop(Pid) end),
    ring(N-1, PrevPid).

%% Do a RPC call to the first process, which should have been registered, and
%% wait until we receive a message telling us that the cycle is done.
rpc(Times, Request) ->
    statistics(runtime),
    statistics(wall_clock),
    firstProcess ! { self(), Times, 0, Request },
    receive
	{ ended, Counter } ->
	    {_, Time1} = statistics(runtime),
	    {_, Time2} = statistics(wall_clock),
	    U1 = Time1 * 1000,
	    U2 = Time2 * 1000,
	    io:format("Ring time for ~p calls = ~p (~p) microseconds~n",  [Counter, U1, U2])
    end.

benchmark(Elements, Times, Request) ->
    ring(Elements),
    rpc(Times, Request).
</pre>
<p>You would run it like this:</p>
<p><code><br />
Eshell V5.6.2  (abort with ^G)<br />
1> c(ringproblem).<br />
{ok,ringproblem}<br />
2> ringproblem:benchmark(1000, 3000, "Round and Round").<br />
Cycle for "Round and Round" ended.<br />
Ring time for 3000000 calls = 8360000 (8416000) microseconds<br />
ok<br />
3><br />
</code></p>
<p>And eventually, possibly a couple seconds later, you&#8217;ll get a notification that the last process has died.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://ricardo.strangevistas.net/pragmatic-programming-in-erlang-chapter-8.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Development blog</title>
		<link>http://ricardo.strangevistas.net/development-blog.html</link>
		<comments>http://ricardo.strangevistas.net/development-blog.html#comments</comments>
		<pubDate>Sat, 15 Mar 2008 15:38:11 +0000</pubDate>
		<dc:creator>Ricardo</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Science and Technology]]></category>

		<guid isPermaLink="false">http://ricardo.strangevistas.net/development-blog.html</guid>
		<description><![CDATA[Speaking of which, I&#8217;m keeping a development blog at my company site.  I&#8217;ll continue to publish the Grails plugins and any other code I create over there.  Enjoy!


No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Speaking of which, I&#8217;m keeping a <a href="http://www.arquetipos.co.cr/blog/" title="Development blog &mdash; Arquetipos">development blog</a> at my company site.  I&#8217;ll continue to publish the Grails plugins and any other code I create over there.  Enjoy!</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://ricardo.strangevistas.net/development-blog.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VMware 2.0 beta server performance</title>
		<link>http://ricardo.strangevistas.net/vmware-20-beta-server-performance.html</link>
		<comments>http://ricardo.strangevistas.net/vmware-20-beta-server-performance.html#comments</comments>
		<pubDate>Wed, 12 Mar 2008 15:52:34 +0000</pubDate>
		<dc:creator>Ricardo</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Science and Technology]]></category>

		<guid isPermaLink="false">http://ricardo.strangevistas.net/vmware-20-beta-server-performance.html</guid>
		<description><![CDATA[VMware server has been in beta since November, 2007, and you can try it out for free by going to their site.  Don&#8217;t.  It&#8217;s unstable and has performance problems &#8211; I had to manually reboot our machine at least twice a week because the virtual servers became unresponsive.  I originally thought that [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>VMware server has been in beta since November, 2007, and you can try it out for free by <a href="http://vmware.com/beta/server/" title="VMware Server 2.0 Beta - VMware">going to their site</a>.  <strong>Don&#8217;t</strong>.  It&#8217;s unstable and has performance problems &#8211; I had to manually reboot our machine at least twice a week because the virtual servers became unresponsive.  I originally thought that the problems were caused by the <a href="http://ricardo.strangevistas.net/centos-and-vmware-server.html" title="Omnia Mutantur &raquo; CentOS and VMWare Server">CentOS kernel I was using</a>, but while the problems were lessened after changing it, they persisted.</p>
<p>After downgrading to (the also free) <a href="http://vmware.com/download/server/" title="Download VMware Server, free VMware, virtual server - VMware">VMware server 1.0.4</a>, the virtual servers have been working like a swiss watch for a couple weeks.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://ricardo.strangevistas.net/vmware-20-beta-server-performance.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS and VMWare Server</title>
		<link>http://ricardo.strangevistas.net/centos-and-vmware-server.html</link>
		<comments>http://ricardo.strangevistas.net/centos-and-vmware-server.html#comments</comments>
		<pubDate>Mon, 18 Feb 2008 22:57:19 +0000</pubDate>
		<dc:creator>Ricardo</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Science and Technology]]></category>

		<guid isPermaLink="false">http://ricardo.strangevistas.net/centos-and-vmware-server.html</guid>
		<description><![CDATA[If you&#8217;re using CentOS hosts on a VMWare server, you should read this.


No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re using CentOS hosts on a VMWare server, <a href="http://wiki.centos.org/TipsAndTricks/VMWare_Server" title="TipsAndTricks/VMWare Server - CentOS Wiki">you should read this</a>.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://ricardo.strangevistas.net/centos-and-vmware-server.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grails Image Tools plugin</title>
		<link>http://ricardo.strangevistas.net/grails-image-tools-plugin.html</link>
		<comments>http://ricardo.strangevistas.net/grails-image-tools-plugin.html#comments</comments>
		<pubDate>Sat, 03 Nov 2007 03:47:50 +0000</pubDate>
		<dc:creator>Ricardo</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ricardo.strangevistas.net/grails-image-tools-plugin.html</guid>
		<description><![CDATA[A few days ago I released version 0.1 of my Grails ImageTools plugin, based off some work that I&#8217;ve done on personal projects.  It provides functions for:

Image loading
Image saving
Cropping
Masking
Scaling

The latest version of the documentation will remain at the Grails wiki.  You probably should also read my post on JAI and masking operations if [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>A few days ago I released version 0.1 of my <a href="http://www.grails.org/ImageTools+plugin" title="Grails - ImageTools plugin">Grails ImageTools plugin</a>, based off some work that I&#8217;ve done on personal projects.  It provides functions for:</p>
<ul>
<li>Image loading</li>
<li>Image saving</li>
<li>Cropping</li>
<li>Masking</li>
<li>Scaling</li>
</ul>
<p>The latest version of the documentation will remain at the Grails wiki.  You probably should also read my post on <a href="http://ricardo.strangevistas.net/jai-and-masking-operations.html" title="Omnia Mutantur  &raquo; Blog Archive   &raquo; JAI and masking operations">JAI and masking operations</a> if you intend to use it to mask images.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://ricardo.strangevistas.net/grails-image-tools-plugin.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend debug breakpoints not working on Mac OS X</title>
		<link>http://ricardo.strangevistas.net/zend-debug-breakpoints-not-working-on-mac-os-x.html</link>
		<comments>http://ricardo.strangevistas.net/zend-debug-breakpoints-not-working-on-mac-os-x.html#comments</comments>
		<pubDate>Thu, 20 Sep 2007 04:49:46 +0000</pubDate>
		<dc:creator>Ricardo</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ricardo.strangevistas.net/zend-debug-breakpoints-not-working-on-mac-os-x.html</guid>
		<description><![CDATA[It&#8217;s the revenge of PHP debugging: for some reason breakpoints just stopped working on my Eclipse PHP IDE.  This is apparently a known issue,  even on release 1.0 of PDT.
After much hair-pulling, I&#8217;ve figured out a workaround:  while debugging only stops on a breakpoint the first time while using the integrated Eclipse [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s the <a href="http://ricardo.strangevistas.net/debugging-php-pages.html" title="Omnia Mutantur - Debugging php pages">revenge of PHP debugging</a>: for some reason breakpoints just stopped working on my Eclipse PHP IDE.  This is apparently a <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=203015">known issue</a>,  even on <a href="http://www.eclipse.org/pdt/" title="PDT Project">release 1.0 of PDT</a>.</p>
<p>After much hair-pulling, I&#8217;ve figured out a workaround:  while debugging only stops on a breakpoint the first time while using the integrated Eclipse browser, it does work when configured to use Firefox as an external browser (Camino gave me an error on launch).  To change that option, go to <strong>Window | Web browser</strong> and select something different from <em>Internal Web Browser</em>.</p>
<p>Hope it helps those out there still looking for a solution.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://ricardo.strangevistas.net/zend-debug-breakpoints-not-working-on-mac-os-x.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grails 0.6 released</title>
		<link>http://ricardo.strangevistas.net/grails-06-released.html</link>
		<comments>http://ricardo.strangevistas.net/grails-06-released.html#comments</comments>
		<pubDate>Sat, 01 Sep 2007 14:54:37 +0000</pubDate>
		<dc:creator>Ricardo</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ricardo.strangevistas.net/grails-06-released.html</guid>
		<description><![CDATA[Grails 0.6 has been released, here&#8217;s the release post.
For those wondering what it is, Grails is a framework for the Java platform designed for high productivity.  I started using it for a project with version 0.5, have since moved to 0.5.6, and will soon upgrade to this latest version.
While I appreciate Ruby on Rails&#8217; [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Grails 0.6 has been released, <a href="http://graemerocher.blogspot.com/2007/08/grails-06-released-with-rich.html" title="Graeme Rocher's Blog: Grails 0.6 Released with Rich Conversation Support (AKA Spring Web Flow)">here&#8217;s the release post</a>.</p>
<p>For those wondering what it is, <a href="http://www.grails.org/" title="Grails - Home">Grails</a> is a framework for the Java platform designed for high productivity.  I started using it for a project with version 0.5, have since moved to 0.5.6, and will soon upgrade to this latest version.</p>
<p>While I appreciate Ruby on Rails&#8217; ideas, I don&#8217;t like Ruby itself as a language.  We also know several clients that have Java as their standard platform, so Ruby on Rails or even Plone-based projects were out of the question. Groovy on Grails also caught my eye because, underneath, it&#8217;s all Java &#8211; so we had the wealth of Java libraries available to draw from.</p>
<p>Development is a breeze, and whenever I&#8217;ve encountered something that wasn&#8217;t well explained in the documentation the Grails community has been extremely helpful.</p>
<p>We&#8217;ve had no stability issues or performance issues, even though it&#8217;s months away from a 1.0 release and we&#8217;re testing it on a server with limited specs.  The speed is beyond what I expected: pages that take a second or so on development on my Core2Duo 2.33GHz are spit out in milliseconds on the live site, which is running on one of <a href="http://zone.net/virtual_servers/index.php" title="ZONE.NET - Virtual Servers">Zone.net</a>&#8217;s lower-end VU200 virtual servers.</p>
<p>Productivity has been great, even considering the learning curve.  I came to Grails with no knowledge of Spring or Hibernate, and have had on occasion to learn not only of Grails and Groovy but the foundation it&#8217;s based on.   Even so, in most cases it&#8217;s been out of curiosity for how something is being done behind the scenes (much time spent scrying Hibernate logs or looking at the generated db structure). </p>
<p>For me, the best thing so far was realizing that for the first time in a while it was taking me longer to come up with an implementation or design that I felt happy with than to actually execute it, and to experience how easy it is to change courses if I come up with something better.  No &#8220;crap, if we do it better we&#8217;ve got to throw away three day&#8217;s worth of code&#8221; resistance.</p>
<p>That means my time is being used where it&#8217;s truly useful, and I&#8217;m ending up with approaches I&#8217;m happy with.</p>
<p>I&#8217;m absolutely sold.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://ricardo.strangevistas.net/grails-06-released.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hiring quality programmers</title>
		<link>http://ricardo.strangevistas.net/hiring-quality-programmers.html</link>
		<comments>http://ricardo.strangevistas.net/hiring-quality-programmers.html#comments</comments>
		<pubDate>Tue, 07 Aug 2007 15:47:51 +0000</pubDate>
		<dc:creator>Ricardo</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ricardo.strangevistas.net/hiring-quality-programmers.html</guid>
		<description><![CDATA[On-the-spot article about hiring quality programmers, and the very high costs of staffing your company with adequate people.

    When you work in an environment with experts things simply work.  They are easier to use and require less initial training. The software is easier to modify.  Requested changes happen more frequently [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>On-the-spot article about <a href="http://blog.revsys.com/2007/08/a-guide-to-hiri.html" title="Revolution Systems Blog: A Guide to Hiring Programmers: The High Cost of Low Quality">hiring quality programmers</a>, and the very high costs of staffing your company with <em>adequate</em> people.</p>
<blockquote><p>
    When you work in an environment with experts things simply work.  They are easier to use and require less initial training. The software is easier to modify.  Requested changes happen more frequently and easily.  Things just flow.  It is the difference between Apple and Microsoft.
</p></blockquote>
<p>One of the comments hits squarely on the reason why things are not likely to get any better, if companies keep playing the same game:</p>
<blockquote><p>
    If you do 10x better work, you get 10% better pay. If you&#8217;re a hotshot, it is simply not economical to go into industry. You do a startup, contract work, or switch fields (entrepreneurship, i-banking, etc.).
</p></blockquote>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://ricardo.strangevistas.net/hiring-quality-programmers.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAI memory usage</title>
		<link>http://ricardo.strangevistas.net/jai-memory-usage.html</link>
		<comments>http://ricardo.strangevistas.net/jai-memory-usage.html#comments</comments>
		<pubDate>Fri, 03 Aug 2007 17:28:33 +0000</pubDate>
		<dc:creator>Ricardo</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ricardo.strangevistas.net/jai-memory-usage.html</guid>
		<description><![CDATA[I&#8217;m using Sun&#8217;s Java Advanced Imaging libraries for image manipulation on a personal project, as I&#8217;ve mentioned before.  
Things were working swimmingly, but when I started testing with images from my phone&#8217;s camera the following exception started appearing:

    Error: One factory fails for the operation &#8220;jpeg&#8221;
Occurs in: javax.media.jai.ThreadSafeOperationRegistry
java.lang.reflect.InvocationTargetException
[...]

The problem was not [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m using Sun&#8217;s <a href="http://en.wikipedia.org/wiki/Java_Advanced_Imaging" title="Java Advanced Imaging - Wikipedia, the free encyclopedia">Java Advanced Imaging</a> libraries for image manipulation on a personal project, as <a href="http://ricardo.strangevistas.net/jai-and-masking-operations.html" title="JAI and masking operations">I&#8217;ve mentioned before</a>.  </p>
<p>Things were working swimmingly, but when I started testing with images from my phone&#8217;s camera the following exception started appearing:</p>
<blockquote><p>
    Error: One factory fails for the operation &#8220;jpeg&#8221;<br />
Occurs in: javax.media.jai.ThreadSafeOperationRegistry<br />
java.lang.reflect.InvocationTargetException</p>
<p>[...]
</p></blockquote>
<p>The problem was not how the image had been created, as I originally suspected, but actually the image size &#8211; this seems to be a rather obscure way of telling you <em>I&#8217;m out of heap space!</em>.  Increase the heap space or try with smaller images, and it should work just fine.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://ricardo.strangevistas.net/jai-memory-usage.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grails and HSQL vs H2 vs Derby</title>
		<link>http://ricardo.strangevistas.net/grails-and-hsql-vs-h2-vs-derby.html</link>
		<comments>http://ricardo.strangevistas.net/grails-and-hsql-vs-h2-vs-derby.html#comments</comments>
		<pubDate>Wed, 01 Aug 2007 18:24:19 +0000</pubDate>
		<dc:creator>Ricardo</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[derby]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[h2]]></category>
		<category><![CDATA[hsql]]></category>

		<guid isPermaLink="false">http://ricardo.strangevistas.net/grails-and-hsql-vs-h2-vs-derby.html</guid>
		<description><![CDATA[I&#8217;ve been building a personal project for a couple months now using Groovy on Grails. Through all this time we&#8217;ve been working with in-memory HSQL databases, but now that we&#8217;re ready to do a test release I began testing embedded Java databases to pick which one we would use.
My first candidate was Apache Derby, based [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been building a personal project for a couple months now using <a href="http://www.grails.org/" title="Grails - Home">Groovy on Grails</a>. Through all this time we&#8217;ve been working with <a href="http://hsqldb.org/" title="HSQLDB">in-memory HSQL databases</a>, but now that we&#8217;re ready to do a test release I began testing embedded Java databases to pick which one we would use.</p>
<p>My first candidate was <a href="http://db.apache.org/derby/papers/DerbyTut/install_software.html" title="Step 1: Install Software">Apache Derby</a>, based on some good performance reports I&#8217;ve read.  Unfortunately, I immediately ran into a problem, where objects weren&#8217;t being committed right away.  I would execute something like:</p>
<p><code><br />
new Animal(name:"Misingo").save()<br />
def misingo = Animal.findByName("Misingo")<br />
</code></p>
<p>And while the <em>save</em> call would succeed, the <em>findByName</em> function would fail.  I began digging through Google trying to find a work around, but the voice of reason in my head told me that if I was having to look for fixes for trivial tasks, I shouldn&#8217;t rely on it for anything major.</p>
<p>Dropping back to considering HSQL with file-based tables, I started researching HSQL performance and ran into a <a href="http://icoloma.blogspot.com/2007/01/hsqldb-vs-derby.html" title="The 90th percentile: Hsqldb vs Derby">HSQL vs Derby</a>, where a history of Derby bugs is mentioned and several benchmarks are pointed to.  This same article brought the very promising <a href="http://www.h2database.com/html/frame.html" title="H2 Database Engine">H2 Database</a> to my attention, which comes with some pretty impressive benchmarks.</p>
<p>I downloaded it and attempted to get H2 working with Grails 0.5.6, and got an easy enough to fix error:</p>
<blockquote><p>
    Could not determine Hibernate dialect for database name [H2]
</p></blockquote>
<p>In order for it to be recognized, you&#8217;ll have to create a file <em>hibernate/hibernate-dialects.properties</em> containing the following string:</p>
<p><code><br />
    H2Dialect=H2<br />
</code></p>
<p>This got H2 running and working perfectly for my development tests, but it failed when attempting to use production:</p>
<blockquote><p>
could not get database metadata<br />
org.h2.jdbc.JdbcSQLException: Table SYSTEM_SEQUENCES not found [42S02-55]
</p></blockquote>
<p>Google searching for &#8220;H2 SYSTEM_SEQUENCES&#8221; yielded only 3 pages, two of them in Japanese. <em>Not promising</em>.    Some testing determined that if the data source&#8217;s dbCreate property is set to either <em>create</em> or <em>create-drop</em> everything went smoothly, but it failed when set to <em>update</em>.</p>
<p>I went back to the H2 site, and found the following on the FAQ:</p>
<blockquote><p>
    Is it Reliable?</p>
<p>    That is not easy to say. It is still a quite new product. A lot of tests have been written, and the code coverage of these tests is very high. Randomized stress tests are run regularly. But as this is a relatively new product, there are probably some problems that have not yet been found. Areas that are not 100% tested:</p>
<ul>
<li><strong>Platforms other than Windows XP and the Sun JVM 1.4 and 1.5</strong></li>
<li>Data types BLOB, CLOB, VARCHAR_IGNORECASE, OTHER</li>
<li>Cluster mode, 2-Phase Commit, Savepoints</li>
<li>Server mode (well tested, but not as well as Embedded mode)</li>
<li>Multi-Threading and using multiple connections</li>
<li>Updatable result sets</li>
<li>Referential integrity and check constraints, Triggers</li>
<li><strong>ALTER TABLE statements</strong>, Views, Linked Tables, Schema, UNION</li>
</ul>
<p>    [...]
</p></blockquote>
<p>Evidently H2 is not ready for prime time &#8211; at least for my purposes &#8211; but it was refreshing to see the developer be upfront about it.  I&#8217;ll wait before using it in production, but my hat&#8217;s off to Mr. Thomas Mueller &#8211; the creator &#8211; for his work on creating his own DBMS from scratch (again, he was one of the original creators of the Hypersonic SQL Project, on which HSQLDB is based).</p>
<p>So where does this leave me? Back with HSQLDB.  Its performance is good, it&#8217;s stable and provides everything I need.  I guess I must be getting old if I&#8217;m deciding based on stability and ease, not on <em>shininess</em>, but sanity has prevailed.</p>
<p>And after all, I did give <em>shiny new thing</em> a fair shot.</p>
<p><small><br />
Bonus content:</p>
<ul>
<li><a href="http://www.michaelyuan.com/blog/2007/03/28/are-rails-and-grails-scalable/" title="Are Rails and Grails Scalable?">Grails scalability vs. Rails</a></li>
<li>An <a href="http://www.infoq.com/news/h2-released" title="InfoQ:<br />
    H2 1.0 Database by Hypersonic Creator is Out">article on H2&#8217;s release</a>, including some notes by the database&#8217;s creator.</li>
</ul>
<p></small></p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://ricardo.strangevistas.net/grails-and-hsql-vs-h2-vs-derby.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Release</title>
		<link>http://ricardo.strangevistas.net/release.html</link>
		<comments>http://ricardo.strangevistas.net/release.html#comments</comments>
		<pubDate>Wed, 01 Aug 2007 05:55:55 +0000</pubDate>
		<dc:creator>Ricardo</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ricardo.strangevistas.net/release.html</guid>
		<description><![CDATA[Software release is such a pain. Better it remained hidden, cozy and safe, in our development environment.


No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Software release is such a pain. Better it remained hidden, cozy and safe, in our development environment.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://ricardo.strangevistas.net/release.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Server backups with Amazon S3</title>
		<link>http://ricardo.strangevistas.net/server-backups-with-amazon-s3.html</link>
		<comments>http://ricardo.strangevistas.net/server-backups-with-amazon-s3.html#comments</comments>
		<pubDate>Mon, 30 Jul 2007 07:24:06 +0000</pubDate>
		<dc:creator>Ricardo</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Science and Technology]]></category>

		<guid isPermaLink="false">http://ricardo.strangevistas.net/server-backups-with-amazon-s3.html</guid>
		<description><![CDATA[Very detailed article on automating server backups using Amazon&#8217;s S3 system, which I&#8217;ve recently trying out using myself for one of my Assembla-hosted projects.
PS: Yes, I&#8217;m making the Assembla backups myself.  I&#8217;m not too keen on giving someone else the secret access key.   


No related posts.
Related posts brought to you by Yet [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Very detailed article on <a href="http://paulstamatiou.com/2007/07/29/how-to-bulletproof-server-backups-with-amazon-s3/" title="How To: Bulletproof Server Backups with Amazon S3 - PaulStamatiou.com">automating server backups using Amazon&#8217;s S3</a> system, which I&#8217;ve recently trying out using myself for one of my <a href="http://www.assembla.com/" title="index / Assembla">Assembla-hosted projects</a>.</p>
<p><small>PS: Yes, I&#8217;m making the Assembla backups myself.  I&#8217;m not too keen on giving someone else the secret access key.   </small></p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://ricardo.strangevistas.net/server-backups-with-amazon-s3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAI and masking operations</title>
		<link>http://ricardo.strangevistas.net/jai-and-masking-operations.html</link>
		<comments>http://ricardo.strangevistas.net/jai-and-masking-operations.html#comments</comments>
		<pubDate>Thu, 26 Jul 2007 21:15:59 +0000</pubDate>
		<dc:creator>Ricardo</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ricardo.strangevistas.net/jai-and-masking-operations.html</guid>
		<description><![CDATA[I just spent a few hours tearing my hair out at an peculiar behavior with JAI, and thought to briefly document it in case anybody ran into a similar situation.
I started off from the code on this relatively old article, adapting it to my needs on Groovy.  The intention was to:

Get an image
Crop it [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>I just spent a few hours tearing my hair out at an peculiar behavior with <a href="http://java.sun.com/products/java-media/jai/whatis.html">JAI</a>, and thought to briefly document it in case anybody ran into a similar situation.</p>
<p>I started off from the code on this relatively old <a href="http://www.evolt.org/article/Image_Manipulation_with_CFMX_and_JAI/18/33907/index.html">article</a>, adapting it to my needs on <a href="http://groovy.codehaus.org/">Groovy</a>.  The intention was to:</p>
<ol>
<li>Get an image</li>
<li>Crop it to a square</li>
<li>Generate a thumbnail</li>
<li>Add a mask to the thumbnail</li>
</ol>
<p>The original test code we wrote work perfectly.  The mask function was (with control output added):</p>
<p><code><br />
public  applyMask()<br />
{<br />
    println("ON APPLY MASK")<br />
    println("Mask ${mask.getWidth()} x ${mask.getHeight()}")<br />
    println("Alpha ${alpha.getWidth()} x ${alpha.getHeight()}")<br />
    println("Image ${image.width} x ${image.height}")</p>
<p>	ParameterBlock params = new ParameterBlock();<br />
	params.addSource(mask);<br />
	params.addSource(image);<br />
	params.add(alpha);<br />
	params.add(null);<br />
	params.add(new Boolean(false));<br />
	result = JAI.create("composite", params, null);</p>
<p>	println("Result ${result.width} x ${result.height}")<br />
}<br />
</code></p>
<p>Thumbnails were generated with:</p>
<p><code><br />
def d = new ImageUtils()<br />
d.load("cropped.jpg")</p>
<p>[178, 133, 69].each {<br />
    d.thumbnail(it)<br />
    println "Created thumbnail"<br />
    d.writeResult("Thumb_${it}.jpg", "JPEG")<br />
}</p>
<p></code></p>
<p>And having generated them, we iterated through them with:</p>
<p><code><br />
def e = new ImageUtils()</p>
<p>[178, 133, 69].each {<br />
	e.load("Thumb_${it}.jpg")<br />
	e.loadMask("Mask_${it}.jpg")<br />
	e.loadAlpha("Alpha_${it}.jpg")<br />
	e.applyMask()<br />
	println "Created Masked thumbnail"<br />
	e.writeResult("Masked_${it}.jpg", "JPEG")<br />
}<br />
</code></p>
<p>to apply the corresponding masks. </p>
<p>Turns out that when the code was optimized to just handle everything in memory, without an intermediate save, the resulting image ended up missing a few pixels in all sizes.  Executing</p>
<p><code><br />
[178, 133, 69].each {<br />
    c.thumbnail(it)<br />
    println "Created thumbnail"<br />
    c.swapSource() // Assigns the result RenderedOp to copy to work from<br />
    c.loadMask("Mask_${it}.jpg")<br />
	c.loadAlpha("Alpha_${it}.jpg")<br />
	c.applyMask()<br />
	println "Created Masked thumbnail"<br />
	c.writeResult("Masked_${it}.jpg", "JPEG")<br />
	c.restoreOriginal()<br />
}<br />
</code></p>
<p>gave us results like:</p>
<pre>
Mask 133 x 133
Alpha 133 x 133
Image 133 x 133
Result 133 x 128
</pre>
<p>This seems to be a JAI bug when working completely from memory RenderedOp sources. Saving a temporary thumbnail and loading it again before applying the mask works just fine.</p>
<p><code><br />
[178, 133, 69].each {<br />
    c.thumbnail(it)<br />
    println "Created thumbnail"<br />
    c.writeResult("Thumb_${it}.jpg", "JPEG")<br />
    c.load("Thumb_${it}.jpg")<br />
    c.loadMask("Mask_${it}.jpg")<br />
	c.loadAlpha("Alpha_${it}.jpg")<br />
	c.applyMask()<br />
}<br />
</code></p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://ricardo.strangevistas.net/jai-and-masking-operations.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.475 seconds -->
