<?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>Jeff Mesnil</title>
	<atom:link href="http://jmesnil.net/weblog/feed/" rel="self" type="application/rss+xml" />
	<link>http://jmesnil.net/weblog</link>
	<description>Thoughts about Java, Web and Software Development</description>
	<lastBuildDate>Fri, 03 Jul 2009 15:44:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>jmx4r 0.0.8: &#8220;Through the Looking Glass&#8221;</title>
		<link>http://jmesnil.net/weblog/2009/06/15/jmx4r-0-0-8-through-the-looking-glass/</link>
		<comments>http://jmesnil.net/weblog/2009/06/15/jmx4r-0-0-8-through-the-looking-glass/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 17:35:42 +0000</pubDate>
		<dc:creator>Jeff Mesnil</dc:creator>
				<category><![CDATA[jmx]]></category>
		<category><![CDATA[jmx4r]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[Add new tag]]></category>

		<guid isPermaLink="false">http://jmesnil.net/weblog/?p=425</guid>
		<description><![CDATA[jmx4r 0.0.8 has just been released.

Why &#8220;Through the Looking Glass&#8221;?
Until this version, jmx4r was a library which made it super easy to write simple Ruby scripts to manage Java applications using JMX.

With this version, the perspective has changed, we went through the looking glass and are now on the other side: jmx4r makes it super [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://github.com/jmesnil/jmx4r/">jmx4r</a> 0.0.8 has just been released.</p>

<p>Why &#8220;Through the Looking Glass&#8221;?<br />
Until this version, jmx4r was a library which made it super easy to write <em>simple Ruby scripts to manage Java applications</em> using JMX.</p>

<p>With this version, the perspective has changed, we went through the looking glass and are now on the other side: jmx4r makes it super easy to <em>directly manage Ruby applications</em> by leveraging JRuby and the Java platform.</p>

<p>A 30-line example is worth 10,000 words:</p>


<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#!/usr/bin/env jruby</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'jmx4r'</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># a regular Ruby object we want to manage</span>
<span style="color:#9966CC; font-weight:bold;">class</span> Foo <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#6666ff; font-weight:bold;">JMX::DynamicMBean</span>
   operation <span style="color:#996600;">&quot;a polite management operation&quot;</span>
   parameter <span style="color:#ff3333; font-weight:bold;">:string</span>, <span style="color:#996600;">&quot;how do you want to be called?&quot;</span>
   returns <span style="color:#ff3333; font-weight:bold;">:string</span>
   <span style="color:#9966CC; font-weight:bold;">def</span> hello<span style="color:#006600; font-weight:bold;">&#40;</span>name=<span style="color:#996600;">&quot;world&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#996600;">&quot;hello, #{name}!&quot;</span>
   <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
   operation <span style="color:#996600;">&quot;double the value&quot;</span>
   parameter <span style="color:#ff3333; font-weight:bold;">:long</span>
   returns <span style="color:#ff3333; font-weight:bold;">:long</span>
   <span style="color:#9966CC; font-weight:bold;">def</span> double<span style="color:#006600; font-weight:bold;">&#40;</span>value<span style="color:#006600; font-weight:bold;">&#41;</span>
     value <span style="color:#006600; font-weight:bold;">*</span> <span style="color:#006666;">2</span>
   <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Java objects to register the Ruby object in the platform</span>
import java.<span style="color:#9900CC;">lang</span>.<span style="color:#9900CC;">management</span>.<span style="color:#9900CC;">ManagementFactory</span>
import javax.<span style="color:#9900CC;">management</span>.<span style="color:#9900CC;">ObjectName</span>
&nbsp;
foo = Foo.<span style="color:#9900CC;">new</span>
<span style="color:#008000; font-style:italic;"># each managed object needs an unique 'ObjectName'</span>
object_name = ObjectName.<span style="color:#9900CC;">new</span> <span style="color:#996600;">&quot;foo:type=Foo&quot;</span> 
ManagementFactory.<span style="color:#9900CC;">platform_mbean_server</span>.<span style="color:#9900CC;">register_mbean</span> foo, object_name
&nbsp;
<span style="color:#008000; font-style:italic;"># we keep the script running to manage it using jconsole</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;open jconsole to manage foo registered under 'foo:type=Foo'&quot;</span>
<span style="color:#CC0066; font-weight:bold;">gets</span>
ManagementFactory.<span style="color:#9900CC;">platform_mbean_server</span>.<span style="color:#9900CC;">unregister_mbean</span> object_name</pre></div></div>


<p>Save this script and run it using JRuby (tested it with version 1.3.0):</p>

<pre><code>$  jruby bean.rb
open jconsole to manage foo registered under 'foo:type=Foo'
</code></pre>

<p>That&#8217;s it: you have a Ruby application which can be managed using any Java management console.</p>

<p>For example, if we start jconsole to manage the bean.rb script:</p>

<p><img src="http://jmesnil.net/weblog/wp-content/uploads/2009/06/jconsole_connection1.png" alt="jconsole_connection" title="jconsole_connection" width="426" height="175" class="alignnone size-full wp-image-465" /></p>

<p>In the MBeans tab, we can expand Foo to see the management operation:</p>

<p><img src="http://jmesnil.net/weblog/wp-content/uploads/2009/06/jconsole_operation1.png" alt="jconsole_operation" title="jconsole_operation" width="872" height="370" class="alignnone size-full wp-image-466" /></p>

<p>And we can finally invoke it (e.g. by pushing the <code>hello</code> or <code>double"</code> button) and get a result after the method is called on the Ruby object:</p>

<p><img src="http://jmesnil.net/weblog/wp-content/uploads/2009/06/jconsole_result.png" alt="jconsole_result" title="jconsole_result" width="262" height="167" class="alignnone size-full wp-image-436" /></p>

<h3>How to manage a Ruby object</h3>

<p>To be manageable from a management console, the Ruby object must inherit from
<code>JMX::DynamicMBean</code></p>

<p>Since Java is statically typed, you also need to give some hints to help Java calls the Ruby object.</p>

<p>Each method you want to expose as a <em>management operation</em> must be annotated with:</p>

<ul>
<li>an <code>operation</code> (and an optional description)</li>
<li>a list of <code>parameter</code> (with a mandatory type and optional name and description)</li>
<li>a <code>returns</code> type</li>
</ul>

<p>The <code>returns</code> and <code>parameter</code> type must be one of <code>:boolean, :byte, :int, :long, :float, :double, :list, :map, :set, :string, and :void</code></p>

<p>For example, if we have a method which prints the name and age of an user, it can be minimally exposed as:</p>


<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">   operation
   parameter <span style="color:#ff3333; font-weight:bold;">:string</span>
   parameter <span style="color:#ff3333; font-weight:bold;">:int</span>
   returns <span style="color:#ff3333; font-weight:bold;">:void</span>
   <span style="color:#9966CC; font-weight:bold;">def</span> display<span style="color:#006600; font-weight:bold;">&#40;</span>name, age<span style="color:#006600; font-weight:bold;">&#41;</span>
     <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;#{name} is #{age} years old
   end</span></pre></div></div>


<p>Exposing Ruby attributes for management is <em>even simpler</em>:</p>


<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> AttributeTypesMBean <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#6666ff; font-weight:bold;">JMX::DynamicMBean</span>
   rw_attribute <span style="color:#ff3333; font-weight:bold;">:my_attr</span>, <span style="color:#ff3333; font-weight:bold;">:string</span>, <span style="color:#996600;">&quot;a read/write String attribute&quot;</span>
   r_attribute <span style="color:#ff3333; font-weight:bold;">:another_attr</span>, <span style="color:#ff3333; font-weight:bold;">:int</span>, <span style="color:#996600;">&quot;a readonly int attribute&quot;</span>
&nbsp;
    ...
  <span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>


<p>the <code>rw_attribute</code> declares a Ruby attribute (using <code>attr_accessor</code>) which is also exposed for management and can be read and write from a management console. Likewise, <code>r_attribute</code> declares a read-only Ruby attribute  (using <code>attr_reader</code>) which can only be read from a management console.</p>

<p><a href="http://jmx4r.rubyforge.org/doc/">DynamicMBean RDoc</a> contains a description of all these annotations.</p>

<p>Finally, the code to register/unregister the Ruby object is taken directly from the Java library using <code>ManagementFactory.platform_mbean_server</code> to access the Java Platform&#8217;s MBean Server.<br />
Each managed object must be registered with an unique ObjectName that is created using the <code>javax.management.ObjectName</code> class (the <a href="http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/best-practices.jsp">JMX Best Practices</a> is a good start for an overview of JMX, the umbrella name for management in Java).</p>

<p>Most of this code was taken from the <code>jmx</code> module of <a href="http://rubyforge.org/projects/jruby-extras/">jruby-extras</a>.
I fixed some issues with it but, from now on, the remaining bugs are likely written by me!</p>

<p>jmx4r was a simple and small library to write Ruby scripts to manage Java applications.<br />
It is now also a simple and small library to manage <em>Ruby applications</em>.</p>

<p>With the success of <a href="http://jruby.org">JRuby</a> and the rise of Ruby applications running on Java  such as <a href="http://torquebox.org">Torquebox</a>, <a href="http://fi.github.com/">GitHub:fi</a>, etc., I believe it can be very useful to leverage the features provided by the Java platform to manage Ruby applications.</p>

<p>As usual, to get this new release, just update the rubygem:</p>

<pre><code>jruby -S gem install jmx4r
</code></pre>

<p>and do not hesitate to contribute:</p>

<pre><code>git clone [git://github.com/jmesnil/jmx4r.git][jmx4r]
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://jmesnil.net/weblog/2009/06/15/jmx4r-0-0-8-through-the-looking-glass/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JBoss Messaging 2.0.0 Beta Released</title>
		<link>http://jmesnil.net/weblog/2009/06/09/jboss-messaging-200-beta-released/</link>
		<comments>http://jmesnil.net/weblog/2009/06/09/jboss-messaging-200-beta-released/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 08:15:07 +0000</pubDate>
		<dc:creator>Jeff Mesnil</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[redhat]]></category>

		<guid isPermaLink="false">http://jmesnil.net/weblog/?p=422</guid>
		<description><![CDATA[The main reason of the lack of posts on this weblog was released yesterday: JBoss Messaging 2.0 Beta is out. JBoss Messaging is a JMS messaging provider that is included in JBoss Middleware stacks.

It has been a wild ride and a great team effort to release it. Onward to the final 2.0 release now!
]]></description>
			<content:encoded><![CDATA[<p>The main reason of the lack of posts on this weblog was released yesterday: <a href="http://www.jboss.org/jbossmessaging/">JBoss Messaging 2.0 Beta is out</a>. JBoss Messaging is a <a href="http://java.sun.com/products/jms/">JMS</a> messaging provider that is included in <a href="http://jboss.org">JBoss Middleware stacks</a>.</p>

<p>It has been a wild ride and a great team effort to release it. Onward to the final 2.0 release now!</p>
]]></content:encoded>
			<wfw:commentRss>http://jmesnil.net/weblog/2009/06/09/jboss-messaging-200-beta-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JBoss Messaging @ Irish Java Technologies Conference</title>
		<link>http://jmesnil.net/weblog/2008/12/29/jboss-messaging-irish-java-technologies-conference/</link>
		<comments>http://jmesnil.net/weblog/2008/12/29/jboss-messaging-irish-java-technologies-conference/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 11:24:04 +0000</pubDate>
		<dc:creator>Jeff Mesnil</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[redhat]]></category>

		<guid isPermaLink="false">http://jmesnil.net/weblog/?p=410</guid>
		<description><![CDATA[

I&#8217;ll be presenting JBoss Messaging at Irish Java Technologies Conference on January 7th &#38; 8th 2009 at Dublin.
The presentation will be mainly about JBoss Messaging 2.0 and what the team has cooked for this major release.

I am also looking forward to attend Charles Nutter&#8217;s presentations about JRuby and the versatility of Java.

See you at Dublin, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ijtc.firstport.ie/"><img src='http://ijtc.firstport.ie/site_media/images/footer.gif' class='alignleft' /></a></p>

<p>I&#8217;ll be presenting JBoss Messaging at <a href="http://ijtc.firstport.ie/">Irish Java Technologies Conference</a> on January 7th &amp; 8th 2009 at Dublin.
The <a href="http://ijtc.firstport.ie/lecture/12/">presentation</a> will be mainly about JBoss Messaging 2.0 and what the team has cooked for this major release.</p>

<p>I am also looking forward to attend <a href="http://blog.headius.com/">Charles Nutter</a>&#8217;s presentations about <a href="http://ijtc.firstport.ie/lecture/11/">JRuby</a> and the <a href="http://ijtc.firstport.ie/lecture/21/">versatility of Java</a>.</p>

<p>See you at Dublin, the 7th &amp; 8th January!</p>
]]></content:encoded>
			<wfw:commentRss>http://jmesnil.net/weblog/2008/12/29/jboss-messaging-irish-java-technologies-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>0.0002% of the App Store</title>
		<link>http://jmesnil.net/weblog/2008/12/01/00002-of-the-app-store/</link>
		<comments>http://jmesnil.net/weblog/2008/12/01/00002-of-the-app-store/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 20:52:26 +0000</pubDate>
		<dc:creator>Jeff Mesnil</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[tangtouch]]></category>

		<guid isPermaLink="false">http://jmesnil.net/weblog/?p=402</guid>
		<description><![CDATA[

TangTouch and TangTouch Lite are displayed in the grey area at the top of the iPhone shell, below the last two 0  of 10,000+



[via Daniel Jalkut]
]]></description>
			<content:encoded><![CDATA[<p><img src="http://jmesnil.net/weblog/wp-content/uploads/2008/10/icon1.png" alt="icon.png" class="alignleft" /></p>

<p><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=292658907&amp;mt=8">TangTouch</a> and <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=292657700&amp;mt=8">TangTouch Lite</a> are displayed in the grey area at the top of the iPhone shell, below the last two <strong>0</strong>  of <strong>10,000+</strong></p>

<p><a href="http://www.flickr.com/photos/tap-tap-tap/3074199062/"><img src="http://farm4.static.flickr.com/3250/3074199062_1761f0412f.jpg?v=0" alt="icon.png" class="centered" /></a></p>

<p>[via <a href="http://www.red-sweater.com/blog/648/10000-apps">Daniel Jalkut</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://jmesnil.net/weblog/2008/12/01/00002-of-the-app-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JRuby Cookbook Has a Section About jmx4r</title>
		<link>http://jmesnil.net/weblog/2008/11/26/jruby-cookbook-has-a-section-about-jmx4r/</link>
		<comments>http://jmesnil.net/weblog/2008/11/26/jruby-cookbook-has-a-section-about-jmx4r/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 16:42:51 +0000</pubDate>
		<dc:creator>Jeff Mesnil</dc:creator>
				<category><![CDATA[book]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jmx]]></category>
		<category><![CDATA[jmx4r]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://jmesnil.net/weblog/?p=398</guid>
		<description><![CDATA[

I noticed today that O&#8217;Reilly just released JRuby Cookbook. I have a few ideas I&#8217;d like to implement using JRuby and I was browsing the table of contents to check if the book could be helpful.

I was pleasantly surprised to see that it contains a section about &#8220;Performing Remote Management with JMX&#8221; using jmx4r (you [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://oreilly.com/catalog/9780596519803/"><img src='http://oreilly.com/catalog/covers/9780596519803_cat.gif' class='alignleft' /></a></p>

<p>I noticed today that O&#8217;Reilly just released <a href="http://oreilly.com/catalog/9780596519803/">JRuby Cookbook</a>. I have a few ideas I&#8217;d like to implement using <a href="http://jruby.codehaus.org/">JRuby</a> and I was browsing the <a href="http://oreilly.com/catalog/9780596519803/toc.html">table of contents</a> to check if the book could be helpful.</p>

<p>I was pleasantly surprised to see that it contains a section about &#8220;Performing Remote Management with JMX&#8221; using <a href="http://code.google.com/p/jmx4r/">jmx4r</a> (you can read a preview of the section by expanding it from the <a href="http://oreilly.com/catalog/9780596519803/toc.html">table of contents</a>).</p>

<p>I&#8217;m obviously biased but I  deeply believe that a small library such as jmx4r (less than 200 <abbr title="Source Lines of Code">SLOC</abbr> for the <a href="http://github.com/jmesnil/jmx4r/tree/master/lib/jmx4r.rb">main file</a> and 1/3 are comments) shows what the combination of Ruby and Java can achieve.<br />
JRuby leverages the strong Java runtime (with its garbage collection and hotspot) and allows to access a wide range of Java libraries with all the strengths of the Ruby language.</p>

<p>For example, in jmx4r case, I extensively use Ruby metaprogramming toolset to dynamically create the properties and methods correponding to the MBean attributes and operations.</p>

<p>There are also other <a href="http://syntatic.wordpress.com/2008/11/25/the-closet-jrubyists/">stories</a> which demonstrates what JRuby brings to the table coming from the C-Ruby world.</p>

<p>I&#8217;m looking forward to read this cookbook and write some ruby code built on top of the Java platform.</p>
]]></content:encoded>
			<wfw:commentRss>http://jmesnil.net/weblog/2008/11/26/jruby-cookbook-has-a-section-about-jmx4r/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kelkoo Left Yahoo!</title>
		<link>http://jmesnil.net/weblog/2008/11/24/kelkoo-left-yahoo/</link>
		<comments>http://jmesnil.net/weblog/2008/11/24/kelkoo-left-yahoo/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 11:26:35 +0000</pubDate>
		<dc:creator>Jeff Mesnil</dc:creator>
				<category><![CDATA[misc]]></category>

		<guid isPermaLink="false">http://jmesnil.net/weblog/?p=392</guid>
		<description><![CDATA[Pierre Chappaz reported  today that Kelkoo has been sold to a private-equity firm by Yahoo! (Yahoo! bought it for 475M€ in 2004 and apparently sold it for less than 100M€)

I worked at Kelkoo for a short time in 2004-2005 after the acquisition. I made good friends and there is a bunch of smart people [...]]]></description>
			<content:encoded><![CDATA[<p>Pierre Chappaz <a href="http://www.kelblog.com/2008/11/kelkoo-quitte-yahoo.html">reported </a> today that <a href="http://www.kelkoo.co.uk/">Kelkoo</a> has been sold to a private-equity firm by <a href="http://yahoo.com">Yahoo!</a> (Yahoo! bought it for 475M€ in 2004 and apparently sold it for less than 100M€)</p>

<p>I worked at Kelkoo for a short time in 2004-2005 after the acquisition. I made good friends and there is a bunch of smart people in this company.<br />
I&#8217;m sure they will rebound and innovate again now that they can focus on their own core business.</p>

<p>Good luck to my ex-colleagues!</p>
]]></content:encoded>
			<wfw:commentRss>http://jmesnil.net/weblog/2008/11/24/kelkoo-left-yahoo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TangTouch Paper Prototypes</title>
		<link>http://jmesnil.net/weblog/2008/10/24/tangtouch-paper-prototypes/</link>
		<comments>http://jmesnil.net/weblog/2008/10/24/tangtouch-paper-prototypes/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 16:09:54 +0000</pubDate>
		<dc:creator>Jeff Mesnil</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[tangtouch]]></category>

		<guid isPermaLink="false">http://jmesnil.net/weblog/?p=375</guid>
		<description><![CDATA[

For the posterity, the paper prototype for TangTouch&#8217;s main view:



and the 1.0 release available from the App Store:



The Preferences paper prototype:



and the 1.0 version:


]]></description>
			<content:encoded><![CDATA[<p><img src="http://jmesnil.net/weblog/wp-content/uploads/2008/10/icon1.png" alt="icon.png" class="alignleft" /></p>

<p>For the posterity, the paper prototype for <a href="http://iphone.jmesnil.net/tangtouch.html">TangTouch</a>&#8217;s main view:</p>

<p><img src="http://jmesnil.net/weblog/wp-content/uploads/2008/10/img-00111.png" alt="IMG_0011.png" class="centered" /></p>

<p>and the 1.0 release available from the App Store:</p>

<p><img src="http://jmesnil.net/weblog/wp-content/uploads/2008/10/img-6.png" alt="img-6.png" class="centered" /></p>

<p>The Preferences paper prototype:</p>

<p><img src="http://jmesnil.net/weblog/wp-content/uploads/2008/10/img-00091.png" alt="IMG_0009.png" class="centered" /></p>

<p>and the 1.0 version:</p>

<p><img src="http://jmesnil.net/weblog/wp-content/uploads/2008/10/img-3.png" alt="img-3.png" class="centered" /></p>
]]></content:encoded>
			<wfw:commentRss>http://jmesnil.net/weblog/2008/10/24/tangtouch-paper-prototypes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TangTouch: Tangram for the iPhone and the iPod Touch</title>
		<link>http://jmesnil.net/weblog/2008/10/24/tangtouch-tangram-for-the-iphone-and-the-ipod-touch/</link>
		<comments>http://jmesnil.net/weblog/2008/10/24/tangtouch-tangram-for-the-iphone-and-the-ipod-touch/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 11:58:02 +0000</pubDate>
		<dc:creator>Jeff Mesnil</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[tangtouch]]></category>

		<guid isPermaLink="false">http://jmesnil.net/weblog/?p=383</guid>
		<description><![CDATA[

TangTouch is now available on the App Store.
It is a Tangram puzzle game for the iPhone or the iPod Touch.

I wrote this game as a way to learn more about Objective-C and Mac/iPhone development.
The bulk of the application was written months ago but I waited until I had an iPhone 3G to finish it and [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jmesnil.net/weblog/wp-content/uploads/2008/10/icon1.png" alt="icon.png" class="alignleft" /></p>

<p><a href="http://iphone.jmesnil.net/tangtouch.html">TangTouch</a> is now available on the <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=292658907&amp;mt=8">App Store</a>.<br />
It is a <a href="http://en.wikipedia.org/wiki/Tangram">Tangram</a> puzzle game for the iPhone or the iPod Touch.</p>

<p>I wrote this game as a way to learn more about Objective-C and Mac/iPhone development.
The bulk of the application was written <a href="http://jmesnil.net/weblog/2008/03/15/iphone-sdk/">months ago</a> but I waited until I had an iPhone 3G to finish it and test it <em>in situ</em>.</p>

<p>It&#8217;s a very simple game but I find it quite fun to play (being the author, it&#8217;s possible I&#8217;m biased&#8230;)</p>

<p>I released 2 versions:</p>

<ul>
<li>a <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=292658907&amp;mt=8">commercial version</a> with more than 200 puzzles</li>
<li>a <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=292657700&amp;mt=8">free version</a> with 32 puzzles</li>
</ul>

<p>This way you can download the free version with no strings attached. And if you like it, you can buy the commercial version.</p>

<p><img src="http://iphone.jmesnil.net/img/img-1.png" class="centered" /></p>

<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://jmesnil.net/weblog/2008/10/24/tangtouch-tangram-for-the-iphone-and-the-ipod-touch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple Extends NDA to Rejection Letters</title>
		<link>http://jmesnil.net/weblog/2008/09/23/apple-extends-nda-to-rejection-letters/</link>
		<comments>http://jmesnil.net/weblog/2008/09/23/apple-extends-nda-to-rejection-letters/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 21:33:47 +0000</pubDate>
		<dc:creator>Jeff Mesnil</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://jmesnil.net/weblog/?p=356</guid>
		<description><![CDATA[[Update: thumbs up to Apple for listening and dropping the NDA]

Learning that Apple extends NDA to rejection letters on the same day that the first phone with  Google Android is launched sends a bad message to developers hesitating between the two platforms.

PC Vs Mac circa 1990, all over again? We know how it ended [...]]]></description>
			<content:encoded><![CDATA[<p>[<strong>Update</strong>: thumbs up to Apple for listening and <a href="http://developer.apple.com/iphone/program/">dropping the NDA</a>]</p>

<p>Learning that <a href="http://www.macrumors.com/2008/09/23/apple-extends-non-disclosure-to-app-store-rejection-letters/">Apple extends NDA to rejection letters</a> on the same day that the first phone with  <a href="http://code.google.com/android/">Google Android</a> is launched sends a bad message to developers hesitating between the two platforms.</p>

<p><a href="http://realdanlyons.com/blog/2008/09/23/thoughts-on-g1-and-apple/">PC Vs Mac circa 1990, all over again?</a> We know how it ended for Apple.</p>

<p>When I think about it, there is more lessons to learn from the Macintosh than the iPod to know what lies ahead of the iPhone.
Apple needs developers to make a long term success of the iPhone. They provide a good SDK to create applications and the platform is really good. However, it they continue to prevent open communication (through the SDK NDA) and reject applications without a well-defined policy, they will scare a lot of developers from building on this platform and send them into Android&#8217;s arms.</p>
]]></content:encoded>
			<wfw:commentRss>http://jmesnil.net/weblog/2008/09/23/apple-extends-nda-to-rejection-letters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Real App Store Acceptance Policy</title>
		<link>http://jmesnil.net/weblog/2008/09/23/the-real-app-store-acceptance-policy/</link>
		<comments>http://jmesnil.net/weblog/2008/09/23/the-real-app-store-acceptance-policy/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 09:43:31 +0000</pubDate>
		<dc:creator>Jeff Mesnil</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://jmesnil.net/weblog/?p=351</guid>
		<description><![CDATA[If Apple wants to be consistent about the App Store acceptance policy, it must reject  every application.

Given that the reason MailWrangler was rejected is that


  [The] application duplicates the functionality of the built-in iPhone application Mail without providing sufficient differentiation or added functionality, which will lead to user confusion&#8230;


and knowing that the Zawinski&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>If Apple wants to be consistent about the App Store acceptance policy, it must <strong>reject  every application</strong>.</p>

<p>Given that the reason <a href="http://angelo.dinardi.name/2008/09/20/mailwrangler-and-the-apple-app-store/">MailWrangler</a> was rejected is that</p>

<blockquote>
  <p>[The] application duplicates the functionality of the built-in iPhone application Mail without providing sufficient differentiation or added functionality, which will lead to user confusion&#8230;</p>
</blockquote>

<p>and knowing that the <a href="http://en.wikipedia.org/wiki/Jamie_Zawinski">Zawinski&#8217;s law</a> states that</p>

<blockquote>
  <p>Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.</p>
</blockquote>

<p>The inevitable conclusion is that every application will end up &#8220;duplicating the functionality of the built-in iPhone application Mail&#8221; and thus must be rejected.</p>
]]></content:encoded>
			<wfw:commentRss>http://jmesnil.net/weblog/2008/09/23/the-real-app-store-acceptance-policy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
