<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1203686428020253441</id><updated>2011-11-26T19:49:20.701-08:00</updated><category term='DLR'/><category term='javaXUL'/><category term='Microsoft'/><category term='office'/><category term='javascript'/><category term='java'/><category term='appStore'/><category term='ajax'/><category term='tablePC'/><category term='beanshell'/><category term='ARINC661'/><category term='XUL'/><category term='ARINC 661'/><category term='word'/><category term='Windows'/><category term='Apple'/><category term='VLC'/><category term='netbeans'/><category term='patents'/><category term='j661'/><category term='google docs'/><category term='Left4Dead'/><category term='wikipedia'/><category term='open office'/><category term='opensource'/><category term='Gosling'/><category term='oo'/><category term='web 2.0'/><category term='generics'/><category term='Mac OS'/><category term='Moonlight'/><category term='IronRuby'/><category term='.net'/><category term='exoPC'/><category term='Mono'/><category term='eclipse'/><category term='iPad'/><category term='IronPython'/><category term='Android'/><category term='work'/><category term='google'/><category term='Silverlight'/><title type='text'>Incanus On Rails</title><subtitle type='html'>On Open Source programming and other geek matters</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-3492808514304391588</id><published>2011-09-06T18:15:00.000-07:00</published><updated>2011-09-06T18:26:15.416-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARINC 661'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>ARINC 661 Server on Android</title><content type='html'>Well the ARINC 661 Server now works on Android. To try it, just go to the J661 project here: &lt;a href="http://sourceforge.net/projects/j661/"&gt;href="http://sourceforge.net/projects/j661/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The Android environment is really a nightmare, and the API is not very good too. But it is still close enough to Java to allow to have one only framework working on both Java swing and Android (I think that 80% of the code or more is not specific to any of the two frameworks).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-xDHRFG8YpJg/TmbHzXqQiaI/AAAAAAAAALM/UAV-e0d4sjU/s1600/frodo2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; height:350px; text-align:center;cursor:pointer; cursor:hand;350px;" src="http://2.bp.blogspot.com/-xDHRFG8YpJg/TmbHzXqQiaI/AAAAAAAAALM/UAV-e0d4sjU/s320/frodo2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5649422467921381794" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There is &lt;a href="https://sourceforge.net/apps/mediawiki/j661/index.php?title=Server_on_Android_tutorial"&gt;a tutorial&lt;/a&gt; here explaining how to use it.&lt;br /&gt;&lt;br /&gt;I am now coming back to the "regular" Java Server work, and also beginning to port the Server on iOS ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-3492808514304391588?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/3492808514304391588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=3492808514304391588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/3492808514304391588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/3492808514304391588'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2011/09/arinc-661-server-on-android.html' title='ARINC 661 Server on Android'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-xDHRFG8YpJg/TmbHzXqQiaI/AAAAAAAAALM/UAV-e0d4sjU/s72-c/frodo2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-7534283644691927575</id><published>2011-06-13T05:01:00.000-07:00</published><updated>2011-06-13T05:18:19.892-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android SDK...</title><content type='html'>I don't own an Android device (and don't plan to), but I tried today to play with the Android emulator on PC to see how it works. Well I don't know about the SDK yet, but the emulator is really not very good:&lt;br /&gt;&lt;br /&gt;Just installing what is necessary on Eclipse is really not very straightforward. You have to install the SDK, then configure the SDK, then install Eclipse, then install the ADT plugin on Eclipse, then configure it. If you are lucky, you are OK, but it's not easy to know what you are doing. And you must not make any mistake when you download the necessary parts of the SDK: what do you need to install? What are the compatibility packages for Android? Are there any settings that must be identical on the SDK and the ADT plugin? Nothing is explained anywhere.&lt;br /&gt;&lt;br /&gt;Then you compile the samples provided with your version of the SDK. Beware, they are not available with all versions, so I choose to stick with a version - 2.2, for which there was an SDK platform and samples available.&lt;br /&gt;&lt;br /&gt;Then run your samples app. The good thing, it's launching. The bad thing, it take ages to launch (on my good PC, approximately 7 minutes, even with the project already compiled), and it signals that there's a problem of signature... mm, for a sample which was directly downloaded from google website, it's not very professional.&lt;br /&gt;&lt;br /&gt;At least, it runs even with the error messages warning you that the app will close very soon. And it works, but it's really not responsive at all, you wonder for every click if it will do something or if it will hang forever.&lt;br /&gt;&lt;br /&gt;There is no comparison with the iOS SDK provided by Apple. XCode and the emulator both work like a charm, and launch super quickly. I'm fed up with Google seemingly considering that it's not a problem to have a sub-par SDK just because it's for a free and Open Source product:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Android is not entirely Open Source&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Apple SDK is free if you use it on your Mac&lt;/li&gt;&lt;br /&gt;&lt;li&gt;NetBeans / the JDK and many other Open Source tools are entirely free and very responsive&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-7534283644691927575?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/7534283644691927575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=7534283644691927575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/7534283644691927575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/7534283644691927575'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2011/06/android-sdk.html' title='Android SDK...'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-4994967137594801979</id><published>2011-05-06T08:22:00.000-07:00</published><updated>2011-05-06T08:26:30.583-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARINC 661'/><title type='text'>First draft of ARINC 661 standard supp 5 released on ARINC website</title><content type='html'>The first draft of the ARINC 661 standard supplement 5 version is available for some time on the ARINC web site free of charge. This document purpose is primarily for remarks from the general public, but you have all the latest standard draft there. Don't hesitate to download it (it's free and legal to do it, what is not free is the final versions of the standard).&lt;br /&gt;&lt;br /&gt;The document is here: &lt;a href="http://www.aviation-ia.com/aeec/projects/cds/index.html"&gt;http://www.aviation-ia.com/aeec/projects/cds/index.html&lt;/a&gt;. It's the "Strawman for Draft 1 of Supplement 5 to ARINC Specification 661" link.&lt;br /&gt;&lt;br /&gt;If you have questions or remarks about it, feel free to ask about it here or &lt;a href="http://sourceforge.net/projects/j661/forums/forum/1223353"&gt;on the j661 project forum&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-4994967137594801979?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/4994967137594801979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=4994967137594801979' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/4994967137594801979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/4994967137594801979'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2011/05/first-draft-of-arinc-661-standard-supp.html' title='First draft of ARINC 661 standard supp 5 released on ARINC website'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-3432495083929526246</id><published>2011-03-06T04:39:00.000-08:00</published><updated>2011-03-06T04:51:41.864-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS'/><category scheme='http://www.blogger.com/atom/ns#' term='ARINC 661'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>j661 Server ln Mac OS X</title><content type='html'>I've just bought a Mac Book to do some development on iOS (I hqve an iPhone and pkan to buy an iPad 2 when it will be available in France). First let me say that there is almost no configuration necessary for being able to use it. And despite all rants about Apple support for Java, Java 6.0 JDK is already installed ;)&lt;br /&gt;&lt;br /&gt;Well while I downloaded XCode, I wanted to check if the &lt;a href="http://j661.sourceforge.net/"&gt;j661 Server&lt;/a&gt; could run on Mac OS X out of the box. Well it does. Which is only natural, because it is one of the reason why Java is around there, isn't it?&lt;br /&gt;&lt;br /&gt;There's nothing much to say, if you own a Mac, just download the &lt;a href="http://sourceforge.net/projects/j661/"&gt;last binaries&lt;/a&gt; fron the project page. double-click on arincEditor.jar, and enjoy ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-3432495083929526246?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/3432495083929526246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=3432495083929526246' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/3432495083929526246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/3432495083929526246'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2011/03/j661-server-ln-mac-os-x.html' title='j661 Server ln Mac OS X'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-1286749974940047495</id><published>2011-02-27T06:55:00.000-08:00</published><updated>2011-02-27T07:22:12.072-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARINC 661'/><category scheme='http://www.blogger.com/atom/ns#' term='j661'/><title type='text'>j661: creating a simple User Application</title><content type='html'>As you may already know, the &lt;a href="http://en.wikipedia.org/wiki/ARINC_661"&gt;ARINC 661&lt;/a&gt; standard is defined around an &lt;a href="http://incanusonrails.blogspot.com/2009/12/arinc-661-tutorial-architecture.html"&gt;architecture&lt;/a&gt; where:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;An ARINC 661 Server (also called ARINC 661 Kernel), which is a part of the Cockpit Display System (CDS) is initialized with a set a ARINC 661 Definition Files, and is responsible for the the User Interface&lt;/li&gt; &lt;br /&gt;&lt;li&gt;System Applications (called user Applications or UA in the standard) handle the logic, and are able to communicate to the Server to change widget parameters that were created at initialization. From the other side, the Server send to the User Application user events on widgets (such as clicks on buttons, change of text fields, etc...)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1_PP8iWmZRI/Sy4VWXrGy6I/AAAAAAAAAJ0/_WY2VY3h39M/s1600-h/arinc+661.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 350px;" src="http://4.bp.blogspot.com/_1_PP8iWmZRI/Sy4VWXrGy6I/AAAAAAAAAJ0/_WY2VY3h39M/s320/arinc+661.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5417290875829406626" /&gt;&lt;/a&gt;&lt;br /&gt;The ARINC 661 standard makes the UI definition very simple, but there is still the burden of developing the User Application part. The &lt;a href="http://j661.sourceforge.net/"&gt;j661 project&lt;/a&gt; already provides &lt;a href="https://sourceforge.net/apps/mediawiki/j661/index.php?title=Client_java_API"&gt;a generic API&lt;/a&gt; which simplifies greatly  the User Application / ARINC 661 Server communication, but you still need to develop the User Application code itself.&lt;br /&gt;&lt;br /&gt;The &lt;a href="https://sourceforge.net/apps/mediawiki/j661/index.php?title=Embedded_Client"&gt;Embedded Client&lt;/a&gt; framework provided in the project further simplifies this process, at least for prototyping User Applications. This framework is built under the following architecture:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-z1pfPGJ1pvs/TWpocgYLDtI/AAAAAAAAAK4/rVl1bZlYAwM/s1600/EmbeddedClient_arch.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 263px;" src="http://2.bp.blogspot.com/-z1pfPGJ1pvs/TWpocgYLDtI/AAAAAAAAAK4/rVl1bZlYAwM/s320/EmbeddedClient_arch.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5578385927388729042" /&gt;&lt;/a&gt;&lt;br /&gt;The Embedded Client is a generic User Application with, contrary to the Client provided in the j661 project, has a minimal Graphical user interface, and is much more configurable.&lt;br /&gt;&lt;br /&gt;The Embedded Client has the following features:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;It is possible to start only a User Application, without any associated Server. Note that in this case the arincServer.jar and all associated libraries don't need to be provided&lt;/li&gt;&lt;br /&gt;&lt;li&gt;It is possible to start a User Application, and it's associated Server, sharing the same configuration properties&lt;/li&gt;&lt;br /&gt;&lt;li&gt;It is possible to add any list of Scripts to the User Application, to code the logic. Note that as it is the case for an ARINC 661 library embedded in a Java application, the scripts will use the Client java API&lt;/li&gt;&lt;br /&gt;&lt;li&gt;It is possible to add a list of DataProviders to the User Application, and wire the datas returned by the DataProviders to ARINC 661 parameters&lt;/li&gt; &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;A &lt;a href="https://sourceforge.net/apps/mediawiki/j661/index.php?title=DataProvider"&gt;DataProvider&lt;/a&gt; is a source of data that can be plugged to an Embedded Client. To the DataProvider is attached an XML configuration file which defined the correspondence between the datas and the ARINC 661 properties. This way, it is possible to define the communication from the System Datas to the Client (User Application) by only defining a XML configuration file. No more code to write, you only need to wire the system datas to the ARINC 661 properties.&lt;br /&gt;&lt;br /&gt;An example of this is provided in the j661 project: The &lt;a href="https://sourceforge.net/apps/mediawiki/j661/index.php?title=FGPlayback"&gt;FGPlayback&lt;/a&gt; contrib allows to read a &lt;a href="http://www.flightgear.org/"&gt;FlightGear&lt;/a&gt; &lt;a href="http://wiki.flightgear.org/index.php/Suggested_Prerecorded_Flights"&gt;playback scenario&lt;/a&gt; by only defining an XML configuration file wiring the FlightGear variables to the ARINC 661 properties. For example:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;dataProvider provider="FGPlayback"&amp;gt;&lt;br /&gt;    &amp;lt;context name="testLayer" layerID="1" appliID="1" /&amp;gt;&lt;br /&gt;    &amp;lt;inputs&amp;gt;&lt;br /&gt;        &amp;lt;input context="testLayer" widgetID="1" paramID="A661_STRING" &lt;br /&gt;            equ="$1"&amp;gt;&lt;br /&gt;            &amp;lt;data name="latitude-deg" /&amp;gt;&lt;br /&gt;        &amp;lt;/input&amp;gt;&lt;br /&gt;        &amp;lt;input context="testLayer" widgetID="5" paramID="A661_STRING" &lt;br /&gt;            equ="$1"&amp;gt;&lt;br /&gt;            &amp;lt;data name="longitude-deg" /&amp;gt;&lt;br /&gt;        &amp;lt;/input&amp;gt;&lt;br /&gt;        &amp;lt;input context="testLayer" widgetID="3" paramID="A661_ROTATION_ANGLE" &lt;br /&gt;            equ="$1"&amp;gt;&lt;br /&gt;            &amp;lt;data name="heading-deg" /&amp;gt;&lt;br /&gt;        &amp;lt;/input&gt;&lt;br /&gt;        &amp;lt;input context="testLayer" widgetID="10" paramID="A661_ROTATION_ANGLE" &lt;br /&gt;            equ="$1"&amp;gt;&lt;br /&gt;            &amp;lt;data name="roll-deg" /&amp;gt;&lt;br /&gt;        &amp;lt;/input&amp;gt;&lt;br /&gt;    &amp;lt;/inputs&amp;gt;&lt;br /&gt;&amp;lt;/dataProvider&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-TQFXkYfY7jg/TWpsAC4kc2I/AAAAAAAAALA/JPikveiVcpM/s1600/FGPlayback.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 500px;" src="http://1.bp.blogspot.com/-TQFXkYfY7jg/TWpsAC4kc2I/AAAAAAAAALA/JPikveiVcpM/s320/FGPlayback.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5578389836481721186" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-1286749974940047495?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/1286749974940047495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=1286749974940047495' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/1286749974940047495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/1286749974940047495'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2011/02/j661-creating-simple-user-application.html' title='j661: creating a simple User Application'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1_PP8iWmZRI/Sy4VWXrGy6I/AAAAAAAAAJ0/_WY2VY3h39M/s72-c/arinc+661.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-8725573017107518576</id><published>2011-02-12T04:41:00.000-08:00</published><updated>2011-02-12T05:05:56.469-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Eclipse, you are bloated</title><content type='html'>I'm using &lt;a href="http://en.wikipedia.org/wiki/Netbeans"&gt;Netbeans&lt;/a&gt; for my day-today java projects, and I really have difficulties when I have to use &lt;a href="http://en.wikipedia.org/wiki/Eclipse_%28software%29"&gt;Eclipse&lt;/a&gt;, but I often think that part of it is due to me being new to Eclipse rather than Eclipse itself. However, I also often find that there are real problems with Eclipse, and that my problems are not just coming from my own perception.&lt;br /&gt;&lt;br /&gt;Some days ago, I had to install &lt;a href="http://en.wikipedia.org/wiki/Google_Web_Toolkit"&gt;Google Web Toolkit&lt;/a&gt;, which is basically an Eclipse Plug-in allowing to generate some complex Javascript code using Java source code . The Java source compilation does not compile Java binary code, but Javascript code, and you can also use a very well done UI designer to create your UI by drag-and-drop rather than having to use complex Javascript libraries.&lt;br /&gt;&lt;br /&gt;But this post is not about GWT, on which I have nothing bad to say, but about Eclipse itself, because GWT is an Eclipse plug-in.&lt;br /&gt;&lt;br /&gt;First installing Eclipse itself (I used the last Helios version) take ages, in fact it takes so much time (and often it is freezed during the process) that you often think that there may be a problem. And I'm just talking about the first Eclipse internal configuration after you had unzipped the file containing the Eclipse file structure (what, no proper installer?).&lt;br /&gt;&lt;br /&gt;Second installing plug ins is really awkward. You have to know the exact URL of the files to be able to download them (from Eclipse), and you HAVE to do it in Eclipse itself. And the UI to choose them is really poorly designed (it seems that you can't put a load of different URLs and download them all at once, you have to download the:m one by one). As for Microsoft software, it also seems that you have to restart Eclipse a lot of times in the process.&lt;br /&gt;&lt;br /&gt;Another problem is that if you have to use Eclipse with it's plug-in on a PC not connected to internet, it's really difficult to do so. Basically you have to download it on the spot (something which is not always possible). Which is really awkward considering that there is no proper installer for the core Eclipse itself.&lt;br /&gt;&lt;br /&gt;I also have to mention the fact that Eclipse is generally slow (that is, if you succeeded in the previous steps).&lt;br /&gt;&lt;br /&gt;I really don't know how Eclipse can be so successful, where it has so much major shortcomings. I have to say that none of these problems exist in Netbeans: finding and downloading plugin-ins is really simple, you can do this by internet or using local files, installing Netbeans is REALLY shorter, and it's generally much more responsive. You can even copy an entire Netbeans directory with it's plugins, and it's working with really minor changes in the configuration (in fact, only one, the path of the JDK).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-8725573017107518576?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/8725573017107518576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=8725573017107518576' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/8725573017107518576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/8725573017107518576'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2011/02/eclipse-you-are-bloated.html' title='Eclipse, you are bloated'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-601143662386195942</id><published>2011-01-09T17:50:00.001-08:00</published><updated>2011-01-09T18:07:48.140-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VLC'/><category scheme='http://www.blogger.com/atom/ns#' term='appStore'/><title type='text'>Mr Courmont, do you really need to do this?</title><content type='html'>Mr Remi Courmont, contributor to the &lt;a href="http://www.videolan.org/vlc/"&gt;VLC&lt;/a&gt; media player, thinks that he knows that Apple removed the Mobile VLC app from the appstore because they supposedly  "cannot stand software distributed under the GPL on its stores". Mr Remi Courmont think he knows that the AppStore license expressly makes it impossible to distribute GPL software on the AppStore. Mr Courmont thinks that he knows a lot, but he seems to know very little, except of course for his own apparent hate of Apple. &lt;br /&gt;&lt;br /&gt;Mr Remi Courmont wanted the app to be removed to prove his point, &lt;a href="http://mailman.videolan.org/pipermail/vlc-devel/2010-November/077457.html"&gt;even if some of his fellow developers thought a little different than himself&lt;/a&gt;. His comment on the twitter feed for the VIDEOLAN project was: "I'm not going to pity the owner of iDevices, and not even the mobileVLC developers who doubtless wasted a lot of their time".&lt;br /&gt;&lt;br /&gt;Mr Courmont, you seems to be full of it, you know. Asking is something, but spreading FUD without really knowing anything about what you are speaking, and putting a gun on the neck of Apple, but also other VLC developers, and also those who developed the mobileVLC app, is not a very pretty thing to do.&lt;br /&gt;&lt;br /&gt;But above all, Mr Courmont can't deny he is working for Nokia. Do you really think that he can convince that it had no impact on what he did?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-601143662386195942?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/601143662386195942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=601143662386195942' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/601143662386195942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/601143662386195942'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2011/01/mr-courmont-do-you-really-need-to-do.html' title='Mr Courmont, do you really need to do this?'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-6217863512985283419</id><published>2010-12-05T04:57:00.000-08:00</published><updated>2010-12-05T05:26:31.656-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='Gosling'/><title type='text'>A very interesting conference of James Gosling</title><content type='html'>Happened on November 17, 2010, so it's really fresh. And the fact that Gosling has resigned from Oracle sometime ago and is still unemployed makes it free of a lot of corporate language.&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;One of the problem of most Fortran code is a) It's doing something really important b) The person who wrote it is probably dead.&lt;/span&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Multicore. what can we do about it? What's the right thing to do with Hava? It feels like there's an unbounded supply of PHD thesis topics in there. The problem is that it has been a really rich source of PHD thesis topics for about 30 years.&lt;/span&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;One of the things about generics is that, you wander around the world, you talk to language designers, 15 years ago, and they would all say, Generics, really really good idea, you got to do it this way, but they all had a different version of this way.&lt;/span&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;I know that there had been some conversations between Google and Sun to do something early on, that was all just spectacularly weird(..).) Some sort of cooperation should have worked out a whole lot smoother than it did(...) It was weird. I'll leave it there.&lt;/span&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;(about CLR). &lt;span style="font-style:italic;"&gt;They deleted all security feature to allow C pointers, because they wanted to do C. That's like the dumbest thing they have ever done. The instruction set, they added registers to it, that adds nothing, they just wanted to be  different.(...) The biggest problem I have with the CLR is that they haven't put nearly as much energy on it(...) We were running at least a factor of two on almost everything. Their code generators are not very good, mostly because they were being  lazy(...) Microsoft, in their harder parts, doesn't care about CLR that much because all their real meat and potatoes projects are not that. Word and such are still fundamentally big bags of C code. So they have not really had to depend on it for their own products.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="390"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9ei-rbULWoA&amp;hl=en_US&amp;feature=player_embedded&amp;version=3"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/9ei-rbULWoA&amp;hl=en_US&amp;feature=player_embedded&amp;version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-6217863512985283419?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/6217863512985283419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=6217863512985283419' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/6217863512985283419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/6217863512985283419'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2010/12/very-ineresting-conference-by-james.html' title='A very interesting conference of James Gosling'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-4418426848926005341</id><published>2010-10-24T14:49:00.000-07:00</published><updated>2010-10-24T15:23:44.457-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARINC661'/><title type='text'>Have fun with ARINC 661, XUL, Javascript, beanshell, and Java</title><content type='html'>Remember &lt;a href="http://incanusonrails.blogspot.com/2008/06/have-fun-with-arinc-661-xul-javascript.html"&gt;this post&lt;/a&gt; two years ago? Well you can also add &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt; to the list...&lt;br /&gt;&lt;br /&gt;The Client-Server &lt;a href="http://en.wikipedia.org/wiki/ARINC_661"&gt;ARINC 661&lt;/a&gt; framework project has been Open Sourced for 2 months now. You can get the binaries, and the sources here: &lt;a href="http://j661.sourceforge.net/"&gt;http://j661.sourceforge.net/&lt;/a&gt;. Just a quick reminder: In the ARINC 661 standard, the Client (called User Application in the standard), handles the logic, and the Server performs the graphic rendering.&lt;br /&gt;&lt;br /&gt;The communication protocol in ARINC 661 is specific and a bit complex (no SOAP, no REST, no CORBA, not RMI, but purely specific binary messages on top of the lower-level bus-level layer protocol). So to ease development of Java clients, the j661 project propose &lt;a href="https://sourceforge.net/apps/mediawiki/j661/index.php?title=Client_java_API"&gt;a generic API&lt;/a&gt; to handle this in the Client side.&lt;br /&gt;&lt;br /&gt;The basic &lt;a href="https://sourceforge.net/apps/mediawiki/j661/index.php?title=Client_launcher"&gt;Client&lt;/a&gt; just allows users to send messages to the Server, but there is more than that. It is possible to script the Client behavior, and even to add a user interface for Client options (for example a Slider - called &lt;a href="https://developer.mozilla.org/en/XUL/scale"&gt;Scale&lt;/a&gt; in XUL, to change a value).&lt;br /&gt;&lt;br /&gt;There are three parts which are necessary to script the Client:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The graphics part is rendered by one or several &lt;a href="http://en.wikipedia.org/wiki/XUL"&gt;XUL&lt;/a&gt; script files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The controller is performed by Javascript (by using &lt;a href="http://www.mozilla.org/rhino/"&gt;Rhino&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The logic is performed by &lt;a href="http://www.beanshell.org/"&gt;beanshell&lt;/a&gt; or &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;One cool side-effect of using XUL is that users are able to debug their scripts using Firefox.&lt;br /&gt;&lt;br /&gt;How is it working? When clicking a button, or performing any user action on the XUL script, the associated XUL widget fire the appropriate JavaScript command (nothing special here). What begins to change a little is the fact that JavaScript is allowed to execute Beanshell or Groovy code, which in return can communicate with the Server using the ARINC 661 protocol.&lt;br /&gt;&lt;br /&gt;Let's use an example (check the &lt;a href="https://sourceforge.net/apps/mediawiki/j661/index.php?title=Scripting_tutorial"&gt;Scripting tutorial&lt;/a&gt; for the j661 project if you want more informations):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1_PP8iWmZRI/TMSxelUuCzI/AAAAAAAAAKk/L3AEiSemnXo/s1600/XUlScript.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;height: 350px;" src="http://3.bp.blogspot.com/_1_PP8iWmZRI/TMSxelUuCzI/AAAAAAAAAKk/L3AEiSemnXo/s400/XUlScript.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5531741381291019058" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;button id="identifier" label="Hide Triangle" disabled="false" &lt;br /&gt;oncommand="triangleHidden()" /&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If the user click on the button, it will fire the &lt;span style="font-style:italic;"&gt;triangleHidden()&lt;/span&gt; method on JavaScript. In this case, this method is directly written inside the XUL script (it could also have been defined in a external JavaScript file):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; function triangleHidden() {&lt;br /&gt;   changeTriangleVisibility();  &lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As there is no &lt;span style="font-style:italic;"&gt;changeTriangleVisibility()&lt;/span&gt; method in JavaScript, it will look for a method with this name in Beanshell (in our case). The Beanshell script has been referenced in our XUL script in this way:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;   &amp;lt;script type="text/bsh" src="testScript2.bsh" /&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And the Beanshell script contains the following code:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;tatefullAPI api;&lt;br /&gt;XULScriptContext ctx;&lt;br /&gt;int LAYER_ID = 56;&lt;br /&gt;int TRIANGLE_ID = 100;&lt;br /&gt;boolean visible = true;&lt;br /&gt;init(StatefullAPI theApi, XULScriptContext theCtx) {&lt;br /&gt;   api = theApi;&lt;br /&gt;   this.ctx = theCtx;&lt;br /&gt;}&lt;br /&gt;run() {&lt;br /&gt;}&lt;br /&gt;changeTriangleVisibility() {&lt;br /&gt;    visible = !visible;&lt;br /&gt;    api.setWidgetParameter(LAYER_ID, TRIANGLE_ID, ARINC661.A661_VISIBLE, &lt;br /&gt;    visible);&lt;br /&gt;    api.sendLayerMessage(LAYER_ID);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;All of ARINC 661 messages can be handled like this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-4418426848926005341?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/4418426848926005341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=4418426848926005341' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/4418426848926005341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/4418426848926005341'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2010/10/have-fun-with-arinc-661-xul-javascript.html' title='Have fun with ARINC 661, XUL, Javascript, beanshell, and Java'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1_PP8iWmZRI/TMSxelUuCzI/AAAAAAAAAKk/L3AEiSemnXo/s72-c/XUlScript.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-9098263847387488974</id><published>2010-09-19T12:45:00.000-07:00</published><updated>2010-09-19T13:39:51.834-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARINC 661'/><title type='text'>An ARINC 661 tutorial: communication (2)</title><content type='html'>In July I posted &lt;a href="http://incanusonrails.blogspot.com/2010/07/arinc-661-tutorial-communication.html"&gt;a first tutorial on ARINC 661 communications protocols&lt;/a&gt;. It was still a little theoretical, but today we will be able  to putn= it into application. if you want =play a little with ARINC 661 protocol while following this tutorial, you can download the last version of the Open Sourced j661 project &lt;a href="https://sourceforge.net/projects/j661/"&gt;here&lt;/a&gt;. Just unzip the archive anywhere. You only need to have a Java 6 JDK available on your machine.&lt;br /&gt;&lt;br /&gt;First we will open an ARINC 661 Definition File, for example this very simple one:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8" standalone="no" &amp;gt;&lt;br /&gt;&amp;lt;a661_df name="default" library_version="0" supp_version="2"&amp;gt;&lt;br /&gt;  &amp;lt;model&gt;&lt;br /&gt;     &amp;lt;prop name="ApplicationId" value="1" /&amp;gt;&lt;br /&gt;  &amp;lt;/model&amp;gt;&lt;br /&gt;  &amp;lt;a661_layer name="MyLayer" &amp;gt;&lt;br /&gt;    &amp;lt;model&amp;gt;&lt;br /&gt;      &amp;lt;prop name="MinWidgetIdent" value="1" /&amp;gt;&lt;br /&gt;      &amp;lt;prop name="MaxWidgetIdent" value="65535" /&amp;gt;&lt;br /&gt;      &amp;lt;prop name="LayerId" value="1" /&amp;gt;&lt;br /&gt;      &amp;lt;prop name="ContextNumber" value="0" /&amp;gt;&lt;br /&gt;      &amp;lt;prop name="Height" value="10000" /&amp;gt;&lt;br /&gt;      &amp;lt;prop name="Width" value="10000" /&amp;gt;&lt;br /&gt;    &amp;lt;/model&amp;gt;&lt;br /&gt;    &amp;lt;a661_widget name="panel" type="A661_PANEL"&amp;gt;&lt;br /&gt;      &amp;lt;model&amp;gt;&lt;br /&gt;        &amp;lt;prop name="WidgetIdent" value="1" /&amp;gt;&lt;br /&gt;        &amp;lt;prop name="Enable" value="A661_TRUE" /&amp;gt;&lt;br /&gt;        &amp;lt;prop name="Visible" value="A661_TRUE" /&amp;gt;&lt;br /&gt;        &amp;lt;prop name="PosX" value="0" /&amp;gt;&lt;br /&gt;        &amp;lt;prop name="PosY" value="0" /&amp;gt;&lt;br /&gt;        &amp;lt;prop name="SizeX" value="10000" /&amp;gt;&lt;br /&gt;        &amp;lt;prop name="SizeY" value="10000" /&amp;gt;&lt;br /&gt;        &amp;lt;prop name="StyleSet" value="0" /&amp;gt;&lt;br /&gt;      &amp;lt;/model&gt;&lt;br /&gt;      &amp;lt;a661_widget name="label" type="A661_LABEL"&amp;gt;&lt;br /&gt;        &amp;lt;model&gt;&lt;br /&gt;          &amp;lt;prop name="WidgetIdent" value="2" /&amp;gt;&lt;br /&gt;          &amp;lt;prop name="Anonymous" value="A661_FALSE" /&amp;gt;&lt;br /&gt;          &amp;lt;prop name="Visible" value="A661_TRUE" /&amp;gt;&lt;br /&gt;          &amp;lt;prop name="PosX" value="3527" /&amp;gt;&lt;br /&gt;          &amp;lt;prop name="PosY" value="3721" /&amp;gt;&lt;br /&gt;          &amp;lt;prop name="SizeX" value="2978" /&amp;gt;&lt;br /&gt;          &amp;lt;prop name="SizeY" value="1000" /&amp;gt;&lt;br /&gt;          &amp;lt;prop name="RotationAngle" value="0.0" /&amp;gt;&lt;br /&gt;          &amp;lt;prop name="StyleSet" value="0" /&amp;gt;&lt;br /&gt;          &amp;lt;prop name="MaxStringLength" value="20" /&amp;gt;&lt;br /&gt;          &amp;lt;prop name="MotionAllowed" value="A661_TRUE" /&amp;gt;&lt;br /&gt;          &amp;lt;prop name="Font" value="t2" /&amp;gt;&lt;br /&gt;          &amp;lt;prop name="ColorIndex" value="red" /&amp;gt;&lt;br /&gt;          &amp;lt;prop name="Alignment" value="A661_CENTER" /&amp;gt;&lt;br /&gt;          l&amp;t;prop name="LabelString" value="HELLO WORLD" /&amp;gt;&lt;br /&gt;        &amp;lt;/model&amp;gt;&lt;br /&gt;      &amp;lt;/a661_widget&amp;gt;&lt;br /&gt;    &amp;lt;/a661_widget&amp;gt;&lt;br /&gt;  &amp;lt;/a661_layer&amp;gt;&lt;br /&gt;&amp;lt;/a661_df&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;(This file is included in the distribution of the j661 Server).&lt;br /&gt;&lt;br /&gt;We will first start a Server and load this file (see &lt;a href="https://sourceforge.net/apps/mediawiki/j661/index.php?title=Server_simple_tutorial"&gt;this tutorial&lt;/a&gt; in the project wiki to know how to do it). You should see this:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1_PP8iWmZRI/TJZtrOymUCI/AAAAAAAAAKM/Spv_z1xdHcs/s1600/server.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 270px; height: 320px;" src="http://3.bp.blogspot.com/_1_PP8iWmZRI/TJZtrOymUCI/AAAAAAAAAKM/Spv_z1xdHcs/s320/server.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5518718982861246498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The we will do the same with the Client. The Client window should look like this:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1_PP8iWmZRI/TJZt8x0N5bI/AAAAAAAAAKU/nzWe2d9Gy9E/s1600/client.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 310px; height: 320px;" src="http://1.bp.blogspot.com/_1_PP8iWmZRI/TJZt8x0N5bI/AAAAAAAAAKU/nzWe2d9Gy9E/s320/client.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5518719284321052082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To look at the content of the messages from the Client to the Server, right-click on the log area at the bottom of the Server window, and click "Log Buffer Events". We will now be able to dump the content of the communication from Client to Server.&lt;br /&gt;&lt;br /&gt;Make sure you connected both the Client and the Server. For now we will just change the Color of the "HELLO WORLD" label at the middle of the Layer.:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Change the value of the "A661_COLOR_INDEX" in the upper right window for the label, for example to green. This represent a &lt;span style="font-style:italic;"&gt;A661_CMD_SET_PARAMETER&lt;/span&gt; command&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Then add this command to the message by clicking "Add"&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now send the message to the Server&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Of course, the color of the label has now changed to green (what did you expect?), but what is interesting is the hexadecimal dump in the log area:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;B0 01 0000 00000018 CA02 000C 0002 0000 B160 06 00 D0 000000&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;We will now decode together this message content:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;B0 is the code for the begin block in the message&lt;/li&gt;&lt;br /&gt;&lt;li&gt;01 is the Layer identification (1 here)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;0000 We now have an ushort for the context number&lt;/li&gt;&lt;br /&gt;&lt;li&gt;00000018 (or 24 in decimal) is the length of the block in bytes, including the header&lt;/li&gt;&lt;br /&gt;&lt;li&gt;CA02 is the code for the &lt;span style="font-style:italic;"&gt;A661_CMD_SET_PARAMETER&lt;/span&gt; command&lt;/li&gt;&lt;br /&gt;&lt;li&gt;000C is the size of the &lt;span style="font-style:italic;"&gt;A661_CMD_SET_PARAMETER&lt;/span&gt; command&lt;/li&gt;&lt;br /&gt;&lt;li&gt;0002 is the widget identification, here the label identification is 2&lt;/li&gt;&lt;br /&gt;&lt;li&gt;0000 we now have a padding of an ushort, to align to 32 bit&lt;/li&gt;&lt;br /&gt;&lt;li&gt;B160 is the code for the A661_COLOR_INDEX property&lt;/li&gt;&lt;br /&gt;&lt;li&gt;06 is the index corresponding with the green Color (beware that the association between the value and the color is CDS-dependant)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;00 is there to to align to 32 bit&lt;/li&gt;&lt;br /&gt;&lt;li&gt;D0 is the code for the end block in the message&lt;/li&gt;&lt;br /&gt;&lt;li&gt;000000 The last 24 bits are there to align to 32 bit&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;In the case of the j661 Server, this bytes are sent through an UDP port, but this content (normalized by the standard), can be sent through any low-level protocol (&lt;a href="http://en.wikipedia.org/wiki/Transmission_Control_Protocol"&gt;TCP&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/ARINC_429"&gt;ARINC 429&lt;/a&gt;, &lt;a href="Avionics Full-Duplex Switched Ethernet"&gt;AFDX&lt;/a&gt;), etc...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-9098263847387488974?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/9098263847387488974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=9098263847387488974' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/9098263847387488974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/9098263847387488974'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2010/09/arinc-661-tutorial-communication-2.html' title='An ARINC 661 tutorial: communication (2)'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1_PP8iWmZRI/TJZtrOymUCI/AAAAAAAAAKM/Spv_z1xdHcs/s72-c/server.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-6908119429648363174</id><published>2010-09-10T16:10:00.001-07:00</published><updated>2010-09-10T16:14:57.297-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARINC 661'/><category scheme='http://www.blogger.com/atom/ns#' term='j661'/><title type='text'>ARINC 661 project: First tutorial</title><content type='html'>I am still uploading documentation and working on the wiki for the j661 The project here: &lt;a href="http://j661.sourceforge.net/"&gt;http://j661.sourceforge.net/&lt;/a&gt;. This project provides a generic ARINC 661 Server, a generic ARINC 661 Client (UA), and a Definition File editor.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/apps/mediawiki/j661/index.php?title=Simple_Editor_tutorial"&gt;The first tutorial&lt;/a&gt; explains how to configure the Editor, opening a Definition File, doing some modifications, and saving the result.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-6908119429648363174?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/6908119429648363174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=6908119429648363174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/6908119429648363174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/6908119429648363174'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2010/09/arinc-661-project-first-tutorial.html' title='ARINC 661 project: First tutorial'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-6799229671992847218</id><published>2010-09-05T15:57:00.000-07:00</published><updated>2010-09-05T16:01:24.487-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARINC 661'/><title type='text'>ARINC 661 project Open Sourced</title><content type='html'>The ARINC 661 Server project I talked about some time ago is now Open Sourced under a GPL V2 License, with a Dassault Aviation (my employer) copyright. The project is up and running here: &lt;a href="http://j661.sourceforge.net/"&gt;http://j661.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In fact the project is more than only an ARINC 661 Server (CDS). It also provide a generic ARINC 661 CLient (UA), and a Definition File editor.&lt;br /&gt;&lt;br /&gt;I will upload more documentation for this project on the next days. Stay also tuned here for tips on this tutorial.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-6799229671992847218?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/6799229671992847218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=6799229671992847218' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/6799229671992847218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/6799229671992847218'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2010/09/arinc-661-project-open-sourced.html' title='ARINC 661 project Open Sourced'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-966183000081884187</id><published>2010-07-12T14:23:00.001-07:00</published><updated>2010-07-12T14:47:43.934-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARINC661'/><title type='text'>An ARINC 661 tutorial: communication</title><content type='html'>A recent comment on my blog leads me to the necessity of continuing my list of tutorials about ARINC 661 development. Today will be about communication. hmm at least it will be the first of a list of posts on the subject, because if ARINC 661 XML definition is easy to grasp, I can't say the same thing about communications in the ARINC 661 world.&lt;br /&gt;&lt;br /&gt;Don't be afraid. It's not because it's particularly complicated, but just because it's a binary communication protocol, so looking at the message can be a little cryptic.&lt;br /&gt;&lt;br /&gt;Let's first say that ARINC 661 communication goes both ways: User Applications can ask for widgets (or even Layers) modifications, and the CDS Server will notify the relevant UA of any User event &lt;span style="font-weight:bold;"&gt;only&lt;/span&gt; on the Definition File it manages (remember the part about &lt;span style="font-style:italic;"&gt;ApplicationI &lt;/span&gt; in &lt;a href="http://incanusonrails.blogspot.com/2009/12/arinc-661-tutorial-hello-world.html"&gt;my Hello World tutorial&lt;/a&gt;). Now you understand why this &lt;span style="font-style:italic;"&gt;ApplicationId&lt;/span&gt; tag is very important.&lt;br /&gt;&lt;br /&gt;Another important thing is that the standard does not mandate any transport protocol. The ARINC 661 communication protocol is just living on any transport protocol we choose. For example, ARINC 661 messages can be transmitted on the very simple &lt;a href="http://en.wikipedia.org/wiki/User_Datagram_Protocol"&gt;UDP protocol&lt;/a&gt;, or &lt;a href="http://en.wikipedia.org/wiki/Transmission_Control_Protocol"&gt;TCP&lt;/a&gt;, or even complex avionics protocols like &lt;a href="http://en.wikipedia.org/wiki/AFDX"&gt;AFDX&lt;/a&gt; for example. On another point of view, one can encapsulate the ARINC 661 messages binary content, for example to add a &lt;a href="http://en.wikipedia.org/wiki/Checksum"&gt;checksum&lt;/a&gt; function to the transmission. ARINC 661 is agnostic on the way datas are transmitted. The only thing that matters is that you have to find somewhere on the network (in a way understood both by the UA and the CDS) the same array of datas.&lt;br /&gt;&lt;br /&gt;Before going into the gory binary details, let's categorize what can goes from/to User Applications and CDS. ARINC 661 messages are composed of several binary blocks juxtaposed together called run-time commands (for UA to CDS communication) or Request/Notifications (from CDS to UA communication).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;From UA to CDS:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-style:italic;"&gt;A661_CMD_SET_PARAMETER&lt;/span&gt;: This is the basic command to change the value of one parameter of one widget in the widgets tree (for example, in the &lt;a href="http://incanusonrails.blogspot.com/2009/12/arinc-661-tutorial-hello-world.html"&gt;my Hello World tutorial&lt;/a&gt;, we would be able to change the color of the A661_LABEL widget, or it's text content, etc...).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-style:italic;"&gt;A661_CMD_UA_REQUEST&lt;/span&gt;: A request from UA to CDS, about a Layer in general (for example activate or inactivate a layer, or render the Layer visible if it was not visible before)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;From CDS to UA:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-style:italic;"&gt;A661_NOTIFY_WIDGET_EVENT&lt;/span&gt;: To notify the UA that a user event has occurred on a widget&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-style:italic;"&gt;A661_NOTIFY_LAYER_EVENT&lt;/span&gt;: To notify the UA that an event has occurred on a Layer&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-style:italic;"&gt;A661_NOTIFY_EXCEPTION&lt;/span&gt;: To notify the UA of any exception occurring for the CDS&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Do you want more? More on this in a few days, it's a promise!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-966183000081884187?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/966183000081884187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=966183000081884187' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/966183000081884187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/966183000081884187'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2010/07/arinc-661-tutorial-communication.html' title='An ARINC 661 tutorial: communication'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-8065083951926920272</id><published>2010-05-23T04:03:00.000-07:00</published><updated>2010-05-23T09:05:09.735-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Left4Dead'/><title type='text'>I Hate Mountains will soon be your nightmare</title><content type='html'>Yes, from the creators of &lt;a href="http://www.portalprelude.com/"&gt;Portal Prelude&lt;/a&gt;, this very ambitious campaign will be available in one week now.&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/5oZgwOtS_X8&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/5oZgwOtS_X8&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="450"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;Now it took ages for them to create this campaign (which should be awesome by the way). The team leader explained blog after blog how much Valve screwed developers. &lt;br /&gt;&lt;br /&gt;hmm.&lt;br /&gt;&lt;br /&gt;If you want my point of view (and even if you don't want it, it's my blog, so I do as I please), they were VERY ambitious, and they asked for mod interfaces Valve would never  have thought about. I bet they had problems. To quote some of their rants (about Valve):&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-style:italic;"&gt;"On Portal prelude: We are aware that there is some problems running the game with the free version of Portal on Windows but there's nothing we can do. Do yourself a favor and ask Valve instead, because it's their entire fault. basically there seems to be a problem on the free version of Portal Valve distributed since some days, and their mod is not working anymore since then"&lt;/span&gt;. So, Valve &lt;span style="font-weight:bold;"&gt;give Portal for free&lt;/span&gt; since &lt;span style="font-weight:bold;"&gt;one week&lt;/span&gt;, and they bash them because since then, their mod is not working anymore?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;"&lt;span style="font-style:italic;"&gt;Oh great, the release of The Passing broke our intro camera because they thought it would be funny to modify L4D1 animations. This is great&lt;/span&gt;.". And so? They should not modify anything so your still not released work should work?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;"&lt;span style="font-style:italic;"&gt;What the fuck is wrong with this game, where the hell is my drawer? &lt;/span&gt;": And you never thought you could have make a mistake, my friend? Once in your life?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;"&lt;span style="font-style:italic;"&gt;I don't see where you've seen that there's not so many companies who share their tools with the general public. Today, most (if not all) of the major companies share their tools with the general public as a &lt;br /&gt;business move. Google, Twitter, Facebook, Epic Games, Paypal, eBay, Amazon, Microsoft, Salesforce, etc. I worked with the tools of all these companies, and the vast majority was top notch, perfectly working, fully documented and behaving as expected&lt;/span&gt;". Really? Every time I use Microsoft development tools and APIs, I have to rely to internet forums to make it work well. Unfortunately, a lot of people have the same problems as me.. Google Android API is still a bit under-documented (to say the least). Due to the fact it has a long history, &lt;a href="http://en.wikipedia.org/wiki/Win32s"&gt;Win32&lt;/a&gt; is really a mess. &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Foundation_Class_Library"&gt;MFC&lt;/a&gt; architecture makes it really VERY difficult to use, and totally cryptic (nothing's logical there). &lt;a href="http://en.wikipedia.org/wiki/XUL"&gt;XUL&lt;/a&gt; is very poorly documented. This list can goes on an on, and some of these libraries are not free. Basically, if you want to use an API (especially if you don't have access to the sources), you should be prepared to some problems. That's how life's goes on. But that does not make them unusable.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;"&lt;span style="font-style:italic;"&gt;This is an horrible process that involves the terrible Faceposer tool&lt;/span&gt;."&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Now about non-valve things &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;"&lt;span style="font-style:italic;"&gt;FluxBB creators obviously know nothing about creating easily skinnable style sheets&lt;/span&gt;"&lt;/li&gt;&lt;br /&gt;&lt;li&gt;"&lt;span style="font-style:italic;"&gt;Dammit, the Twitter plugin on our website isn't updating anymore. What did I do wrong this time? Boy, Wordpress seems so unstable.&lt;/span&gt;"&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;That did not prevent them to use the free audio Valve gave them (as for other mappers) for their campaign, like for example "I Hate Mountains".&lt;br /&gt;&lt;br /&gt;You get the big picture. And don't say I'm not knowing anything about software development, I've done and I'm still doing a lot, using all kinds of libraries. &lt;br /&gt;&lt;br /&gt;So, OK, Valve's SDK could be better documented (still there's the &lt;a href="http://developer.valvesoftware.com/wiki/Main_Page"&gt;Valve Developer Community&lt;/a&gt;, which is free, contrary to MSDN (and don't say that MSDN is clear, it's also a mess, and it cost a lot). But I bet that a lot of people who have problems with the Source SDK won't write in the wiki.&lt;br /&gt;&lt;br /&gt;However, enough with this. While I don't like very much the attitude of some of the I Hate Mountains team, I'm sure they are very good at mapping, and that &lt;a href="http://www.ihatemountains.com/"&gt;their campaign&lt;/a&gt; will be great. They just need to learn a little more humility sometimes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-8065083951926920272?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/8065083951926920272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=8065083951926920272' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/8065083951926920272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/8065083951926920272'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2010/05/i-hate-mountains-will-soon-be-your.html' title='I Hate Mountains will soon be your nightmare'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-7803948376591586458</id><published>2010-05-17T04:24:00.001-07:00</published><updated>2010-05-17T04:43:59.661-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='word'/><category scheme='http://www.blogger.com/atom/ns#' term='office'/><category scheme='http://www.blogger.com/atom/ns#' term='open office'/><category scheme='http://www.blogger.com/atom/ns#' term='oo'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='google docs'/><title type='text'>On google docs</title><content type='html'>We see a lot of buzz about &lt;a href="http://www.docs.google.com"&gt;google docs&lt;/a&gt; everywhere on the web these days. There's even a well-known blogger on &lt;a href="http://www.zdnet.com"&gt;zdnet&lt;/a&gt; writing that &lt;a href="http://www.zdnet.com/blog/education/openoffice-is-dead/3909"&gt;Open Office is Dead&lt;/a&gt;, because google docs web applications work so well.&lt;br /&gt;&lt;br /&gt;Well I have tried to use google docs very recently, and the results were so bad that I will not go back:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Compatibility of google docs with Office format is abysmal. It just does not work at all, even for very simple documents. Converting a short and very simple Word document in google docs took ages, and the resulting document lost a lot of markers and tags. Converting back the same document to word did not work at all. The resulting document could even not be opened in the last Word version. End of story. It seems that google docs lives in it's own little world, but it really is not enough for an office suite&lt;/li&gt;&lt;br /&gt;&lt;li&gt;On the other hand, conversion from and to MS Office format work very well in open Office, even for huge and very complex documents. I lately had problems with a huge Word document at work which took ages to work with in Word (even Word 2007). I opened it on Open Office at home, lost nothing (same document), worked on it without problems, and then converted it back to Word. Again I lost nothing and all worked very well&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I don't see the point in needing to have constant internet access to work on a document&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Seems that google still has a lot of work to do to have a competing Office suite. But they also seem to &lt;a href="http://www.google.fr/intl/fr/options/"&gt;work on too many things at the same time&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-7803948376591586458?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/7803948376591586458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=7803948376591586458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/7803948376591586458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/7803948376591586458'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2010/05/on-google-docs.html' title='On google docs'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-136079325131442008</id><published>2010-02-14T02:34:00.000-08:00</published><updated>2010-02-14T03:17:48.979-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><category scheme='http://www.blogger.com/atom/ns#' term='tablePC'/><category scheme='http://www.blogger.com/atom/ns#' term='exoPC'/><title type='text'>ExoPC: a real PC tablet?</title><content type='html'>There is a lot of buzz nowadays about &lt;a href="http://www.exopc.com/"&gt;exoPC&lt;/a&gt;, a future tablet PC which will be available on March according to their developers. Of course, this tablet benefited from a LOT of buzz on the web, because it was announced just after the &lt;a href="http://en.wikipedia.org/wiki/IPad"&gt;iPad&lt;/a&gt;. It is announced at the same price as the iPad 32 Go, is powered on Windows 7, is capable of USB connectivity, and is also base on a multitouch technology.&lt;br /&gt;&lt;br /&gt;Whaow great!!&lt;br /&gt;&lt;br /&gt;hmm, let's look at it a little more closely:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Autonomy: 4 hours vs 10 hours for the iPad, 4 hours is not a lot, but it's understandable, as it uses Windows 7, an admittedly good OS, but not designed for mobile usage. &lt;a href="http://www.liliputing.com/2009/10/windows-7-netbooks-lower-battery-life.html"&gt;Battery life for Windows 7 is even reportedly not very good&lt;/a&gt;, probably because it is designed to use "costly" services such as &lt;a href="http://en.wikipedia.org/wiki/Windows_Aero"&gt;Aero&lt;/a&gt;, and relies originally on &lt;a href="DirectX"&gt;DirectX 9&lt;/a&gt; for graphics on regular PC usage&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Weight: 820g vs 680 g for the equivalent iPad model&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Thickness: 2.1 cm vs 1.3 cm for the iPad. I understand that, because the use of Windows 7 makes them need to have a ventilator on-board!!!&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Power: Processor is 1.6 Ghz vs 1 Ghz for iPad, but the absence of a GPU (integrated Intel graphics on-board, probably to reduce price and avoid further reduction of battery life from 4 hours to 1 hours only) is a very bad news for multimedia usage, which is the primary usage for this type of product. Comparisons on the same 3D games between Nexus One and iPhone 3GS were interesting because they showed that despite Nexus One having a more powerful CPU (1 GHz vs 600 Mhz), &lt;a href="http://www.nexus-fr.net/nexus-one-vs-iphone-3gs-performances-3d/"&gt;iPhone was more than twice faster than Nexus One in all configurations.&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Multitouch: hmm, multitouch development is not finished yet for exoPC. What? less than one month before the product is available? By the way, even if it can optionally handle touch screens, &lt;a href="http://www.engadget.com/2009/02/05/windows-7-multitouch-its-a-gimmick-for-now/"&gt;Windows 7 is not known to be the king of touch screens or even multitouch technology&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Now for non technological impressions:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;First it seems that all the demos that were shown were sent to blogs and Internet news sites directly by the designers themselves. Does not seem very neutral. And you will never see any journalist using the tablet anywhere on the web&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The company which develop and will distribute exoPC is a Canadian company (Quebec). Great, but it's president is a car dealer (!!!)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://bloguesmu.cyberpresse.ca/technaute/dumais/2010/02/08/entretien-avec-un-des-artisans-de-la-tablette-tactile-exopc-slate/"&gt;When questioned about references for the exoPC company&lt;/a&gt;, Jean-Baptiste Martinoli, the man at the origin of the product, gives the name of &lt;a href="http://www.mioplanet.com/"&gt;mioplanet&lt;/a&gt;, another small Canadian company. He says: "it enjoys a significant technological heritage including the structure Mioplanet, another company of Rimouski, a very discreet company that delivered innovative solutions worldwide for clients such as HP or Microsoft for nearly 10 years". Problem is that the president of Mioplanet his... himself. This kind of auto-referencing is something which makes me very cautious. And no names for other companies which could be business partners for exoPC has ever been produced&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The product is said by the designer to be presented at &lt;a href="http://www.cebit.de/homepage_e"&gt;CeBIT&lt;/a&gt; next month ("Next month, Microsoft will present our product at CeBIT in Germany, one of the largest hi-tech fairs in Europe. And it will do the same during a major speech (keynote) next month in Tokyo"). However, if you search for exoPC on the CeBIT web site, you return nothing...&lt;/li&gt; &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I bet that this product does not really exist my friends.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-136079325131442008?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/136079325131442008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=136079325131442008' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/136079325131442008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/136079325131442008'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2010/02/exopc-real-pc-tablet.html' title='ExoPC: a real PC tablet?'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-5293676418630155065</id><published>2009-12-30T08:08:00.000-08:00</published><updated>2010-01-05T14:16:11.041-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARINC661'/><title type='text'>An ARINC 661 tutorial: Hello World</title><content type='html'>After &lt;a href="http://incanusonrails.blogspot.com/2009/12/arinc-661-tutorial-introduction.html"&gt;the general overview&lt;/a&gt; and &lt;a href="http://incanusonrails.blogspot.com/2009/12/arinc-661-tutorial-architecture.html"&gt;an architecture presentation&lt;/a&gt;, this is the third post about the &lt;a href="http://en.wikipedia.org/wiki/ARINC_661"&gt;ARINC 661&lt;/a&gt; standard.&lt;br /&gt;&lt;br /&gt;Let's continue by a little &lt;span style="font-style:italic;"&gt;Hello World&lt;/span&gt;. Following the tradition, we will want to show a "Hello World!" label. But to make this example a little more interesting, we will put it in a &lt;a href="http://en.wikipedia.org/wiki/Panel_%28computer_software%29"&gt;container&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;You should remember that all graphic stuff in ARINC 661 is performed in the CDS side (the ARINC 661 Server). Also the definition of the &lt;a href="http://en.wikipedia.org/wiki/Graphical_user_interface"&gt;GUI&lt;/a&gt; is stored in a Definition File (DF) which is used by the CDS at initialization. There are two "flavors" of DFs: The binary version (which was the only one which was defined at the beginning of the standard), and the &lt;a href="http://en.wikipedia.org/wiki/XML"&gt;XML&lt;/a&gt; version, which was mainly devised to simplify Definition File editing (but as all the informations provided in the binary DFs are also there in the XML DFs, nothing prevent to use them also in a ARINC 661 Server).&lt;br /&gt;&lt;br /&gt;We will probably cover binary DFs in another part of this tutorial, but for now, we will use XML Definition Files to explain how the standard works.&lt;br /&gt;&lt;br /&gt;So are you ready. Let's dive into our first ARINC 661 Definition File guys!&lt;br /&gt;&lt;br /&gt;It's a simple &lt;span style="font-style:italic;"&gt;Hello World&lt;/span&gt; so we will only define one very simple DF. OK, let's go:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;  &amp;lt;!DOCTYPE a661_df SYSTEM "a661.dtd"&amp;gt;&lt;br /&gt;  &amp;lt;a661_df library_version="0" supp_version="2"&amp;gt;&lt;br /&gt;    &amp;lt;model&amp;gt;&lt;br /&gt;      &amp;lt;prop name="ApplicationId" value="1"/&amp;gt;&lt;br /&gt;    &amp;lt;/model&amp;gt;&lt;br /&gt;    &amp;lt;a661_layer&amp;gt;&lt;br /&gt;      &amp;lt;model&amp;gt;&lt;br /&gt;        &amp;lt;prop name="LayerId" value="5"/&amp;gt;&lt;br /&gt;        &amp;lt;prop name="ContextNumber" value="0"/&amp;gt;&lt;br /&gt;        &amp;lt;prop name="Height" value="10000"/&amp;gt;&lt;br /&gt;        &amp;lt;prop name="Width" value="10000"/&amp;gt;&lt;br /&gt;      &amp;lt;/model&gt;&lt;br /&gt;      &amp;lt;a661_widget name="SamplePanel" type="A661_PANEL"&amp;gt;&lt;br /&gt;        &amp;lt;model&gt;&lt;br /&gt;          &amp;lt;prop name="WidgetIdent" value="1"/&amp;gt;&lt;br /&gt;          &amp;lt;prop name="Enable" value="A661_TRUE"/&amp;gt;&lt;br /&gt;          &amp;lt;prop name="Visible" value="A661_TRUE"/&amp;gt;&lt;br /&gt;          &amp;lt;prop name="PosX" value="0"/&amp;gt;&lt;br /&gt;          &amp;lt;prop name="PosY" value="0"/&amp;gt;&lt;br /&gt;          &amp;lt;prop name="SizeX" value="10000"/&amp;gt;&lt;br /&gt;          &amp;lt;prop name="SizeY" value="10000"/&amp;gt;&lt;br /&gt;          &amp;lt;prop name="StyleSet" value="STYLESET_DEFAULT"/&amp;gt;&lt;br /&gt;        &amp;lt;/model&amp;gt;&lt;br /&gt;        &amp;lt;a661_widget name="Hello World Label" type="A661_LABEL"&amp;gt;&lt;br /&gt;           &amp;lt;model&gt;&lt;br /&gt;             &amp;lt;prop name="WidgetIdent" value="2"/&amp;gt;&lt;br /&gt;             &amp;lt;prop name="Anonymous" value="A661_FALSE"/&amp;gt;&lt;br /&gt;             &amp;lt;prop name="Visible" value="A661_TRUE"/&amp;gt;&lt;br /&gt;             &amp;lt;prop name="PosX" value="5000" /&amp;gt;&lt;br /&gt;             &amp;lt;prop name="PosY" value="5000" /&amp;gt;&lt;br /&gt;             &amp;lt;prop name="SizeX" value="1500" /&amp;gt;&lt;br /&gt;             &amp;lt;prop name="SizeY" value="1000" /&amp;gt;&lt;br /&gt;             &amp;lt;prop name="StyleSet" value="STYLESET_DEFAULT" /&amp;gt;             &lt;br /&gt;             &amp;lt;prop name="MaxStringLength" value="20" /&amp;gt;&lt;br /&gt;             &amp;lt;prop name="Alignment" value="A661_CENTER" /&gt;&lt;br /&gt;             &amp;lt;prop name="LabelString" value="Hello World!" /&amp;gt;&lt;br /&gt;             &amp;lt;prop name="ColorIndex" value="black" /&amp;gt;&lt;br /&gt;             &amp;lt;prop name="RotationAngle" value="0.0" /&amp;gt;&lt;br /&gt;             &amp;lt;prop name="MotionAllowed" value="A661_TRUE" /&amp;gt;&lt;br /&gt;           &amp;lt;/model&amp;gt;&lt;br /&gt;        &amp;lt;/a661_widget&amp;gt;&lt;br /&gt;      &amp;lt;/a661_widget&amp;gt;&lt;br /&gt;    &amp;lt;/a661_layer&amp;gt;&lt;br /&gt;  &amp;lt;/a661_df&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;OK, now lets go to the details.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;  &amp;lt;!DOCTYPE a661_df SYSTEM "a661.dtd"&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Well like all XML documents, it begins with the declaration of the DTD for ARINC 661. Nothing much to say here. Here the DTD is assumed to be in the file system, but there's nothing particular about the DTD declaration in the standard.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  &amp;lt;a661_df library_version="0" supp_version="2"&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The supplement (or release) version of the standard. Tne standard is currently at supplement 3. This allows to define for which version the DF was defined.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    &amp;lt;model&amp;gt;&lt;br /&gt;      &amp;lt;prop name="ApplicationId" value="1"/&amp;gt;&lt;br /&gt;    &amp;lt;/model&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The first interesting thing here. The ARINC 661 standard defines a concept of &lt;span style="font-style:italic;"&gt;Applications&lt;/span&gt;, or &lt;span style="font-style:italic;"&gt;User Applications&lt;/span&gt; (see &lt;a href="http://incanusonrails.blogspot.com/2009/12/arinc-661-tutorial-architecture.html"&gt;the previous post&lt;/a&gt;). A User Application can send or receive messages to/from the Server. And there is a gold rule: &lt;span style="font-weight:bold;"&gt;Each Definition File defines widgets (I will explain how later in this post), but the widgets defined in this Definition File are managed by one Application only&lt;/span&gt;. That way, we are sure that will be no resource conflicts on who is able to change the state of a widget. This is an important feature which may simplify &lt;a href="http://en.wikipedia.org/wiki/DO-178B"&gt;certification&lt;/a&gt; of an ARINC 661 Cockpit Display System, but also allows ARINC 661 implementation to live peacefully in the context of &lt;a href="http://en.wikipedia.org/wiki/Integrated_Modular_Avionics"&gt;Integrated Modular Avionics&lt;/a&gt; (such as &lt;a href="http://en.wikipedia.org/wiki/ARINC_653"&gt;ARINC 653&lt;/a&gt;). So here we define the identification of the Application which will manage this Definition File content (of course an Application can manage more than one DF).&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    &amp;lt;a661_layer&amp;gt;&lt;br /&gt;      &amp;lt;model&amp;gt;&lt;br /&gt;        &amp;lt;prop name="LayerId" value="5"/&amp;gt;&lt;br /&gt;        &amp;lt;prop name="ContextNumber" value="0"/&amp;gt;&lt;br /&gt;        &amp;lt;prop name="Height" value="10000"/&amp;gt;&lt;br /&gt;        &amp;lt;prop name="Width" value="10000"/&amp;gt;&lt;br /&gt;      &amp;lt;/model&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here we have the declaration of a &lt;span style="font-style:italic;"&gt;Layer&lt;/span&gt;, which is the top-most element in the ARINC 661 widget hierarchy. A Definition File contains one or more Layers, but a Layer is not a widget, which means that it is not possible to include a layer as a child of another. hmm almost but we will look after that later (in another post).&lt;br /&gt;Height and Width are optional, because a &lt;span style="font-style:italic;"&gt;Layer&lt;/span&gt; being not a Widget, defining its size is just a hint (in the XML File, it may be used by for editors). The ContextNumber is something used in runtime, we will also left it in another post.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;      &amp;lt;a661_widget name="SamplePanel" type="A661_PANEL"&amp;gt;&lt;br /&gt;        &amp;lt;model&gt;&lt;br /&gt;          &amp;lt;prop name="WidgetIdent" value="1"/&amp;gt;&lt;br /&gt;          &amp;lt;prop name="Enable" value="A661_TRUE"/&amp;gt;&lt;br /&gt;          &amp;lt;prop name="Visible" value="A661_TRUE"/&amp;gt;&lt;br /&gt;          &amp;lt;prop name="PosX" value="0"/&amp;gt;&lt;br /&gt;          &amp;lt;prop name="PosY" value="0"/&amp;gt;&lt;br /&gt;          &amp;lt;prop name="SizeX" value="10000"/&amp;gt;&lt;br /&gt;          &amp;lt;prop name="SizeY" value="10000"/&amp;gt;&lt;br /&gt;          &amp;lt;prop name="StyleSet" value="STYLESET_DEFAULT"/&amp;gt;&lt;br /&gt;        &amp;lt;/model&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Our top-most widget in the &lt;span style="font-style:italic;"&gt;Layer&lt;/span&gt; (we also can have more than one top-most elements in a Layer, we just chose here to have only one of them). For each widget declaration we have its name and most importantly, its &lt;span style="font-style:italic;"&gt;type&lt;/span&gt;, here &lt;span style="font-style:italic;"&gt;A661_PANEL&lt;/span&gt;. The widget type just points on one fixed widget type defined in the ARINC 661 Standard. &lt;span style="font-style:italic;"&gt;A661_PANEL&lt;/span&gt; is a container which can have a Look and Feel. In fact it's exactly the ARINC 661 definition of a &lt;a href="http://en.wikipedia.org/wiki/Panel_%28computer_software%29"&gt;Panel&lt;/a&gt;. &lt;br /&gt;Another very important part of each widget identify is its &lt;span style="font-style:italic;"&gt;WidgetId&lt;/span&gt;, which must be unique for each Layer. Apart from this identification, our panel has a position and a Size&lt;br /&gt;I know what question you will ask: all of this is very good, but were is its background color, its border color and all this stuff? Well Look and Feel is not in the Definition of the GUI, as in all well-defined &lt;a href="http://en.wikipedia.org/wiki/Widget_toolkit"&gt;widget toolkits&lt;/a&gt;. Unfortunately the standard does not standardize the Look and Feel definition itself.&lt;br /&gt;Not completely. It allows to define the style of the widget, using a keyword or a number. That way, if you have defined elsewhere several styles for your widget, you can point to it in your Definition File, by using the property &lt;span style="font-style:italic;"&gt;StyleSet&lt;/span&gt;.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;        &amp;lt;a661_widget name="Hello World Label" type="A661_LABEL"&amp;gt;&lt;br /&gt;           &amp;lt;model&gt;&lt;br /&gt;             &amp;lt;prop name="WidgetIdent" value="2"/&amp;gt;&lt;br /&gt;             &amp;lt;prop name="Anonymous" value="A661_FALSE"/&amp;gt;&lt;br /&gt;             &amp;lt;prop name="Visible" value="A661_TRUE"/&amp;gt;&lt;br /&gt;             &amp;lt;prop name="PosX" value="5000" /&amp;gt;&lt;br /&gt;             &amp;lt;prop name="PosY" value="5000" /&amp;gt;&lt;br /&gt;             &amp;lt;prop name="SizeX" value="1500" /&amp;gt;&lt;br /&gt;             &amp;lt;prop name="SizeY" value="1000" /&amp;gt;&lt;br /&gt;             &amp;lt;prop name="StyleSet" value="STYLESET_DEFAULT" /&amp;gt;             &lt;br /&gt;             &amp;lt;prop name="MaxStringLength" value="20" /&amp;gt;&lt;br /&gt;             &amp;lt;prop name="Alignment" value="A661_CENTER" /&gt;&lt;br /&gt;             &amp;lt;prop name="LabelString" value="Hello World!" /&amp;gt;&lt;br /&gt;             &amp;lt;prop name="ColorIndex" value="black" /&amp;gt;&lt;br /&gt;             &amp;lt;prop name="RotationAngle" value="0.0" /&amp;gt;&lt;br /&gt;             &amp;lt;prop name="MotionAllowed" value="A661_TRUE" /&amp;gt;&lt;br /&gt;           &amp;lt;/model&amp;gt;&lt;br /&gt;        &amp;lt;/a661_widget&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;After that it is very simple. You understand that the label (type: &lt;span style="font-style:italic;"&gt;A661_LABEL&lt;/span&gt; of course) is a child of the &lt;span style="font-style:italic;"&gt;A661_PANEL&lt;/span&gt; container. As was already the case for the &lt;span style="font-style:italic;"&gt;StyleSet&lt;/span&gt;, the &lt;span style="font-style:italic;"&gt;Font&lt;/span&gt; used to draw the label is a pointer to a Font resource defined elsewhere. The &lt;span style="font-style:italic;"&gt;Alignment&lt;/span&gt; of the label use one of several already fixed enumeration values, but this should be straithforward. And MaxStringLength is something that will be useful at runtime. It defines the maximum number of characters that the label can accept (if modified by the User Application), and it ensures that no &lt;a href="http://en.wikipedia.org/wiki/Memory_allocation"&gt;memory allocation&lt;/a&gt; will be necessary after the Server initialization (something not allowed in certified environments). ColorIndex and RotationAngle and MotionAllowed are also easy to understand.&lt;br /&gt;&lt;br /&gt;Two last things to know: In ARINC 661, the reference point is at the bottom left corner, rather than at the two left as in other widget toolkits (or in &lt;a href="http://en.wikipedia.org/wiki/Opengl"&gt;OpenGL&lt;/a&gt;). So the Y axis goes up and not down. And all lengths are defined in 100th of millimeters rather than in pixels, which ensures that the definition will look the same on different monitors. Which is why you can see in this example rather big values for Widths and Heights.&lt;br /&gt;And now a screen shot of the result with a Java-like Look &amp; Feel for the panel:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1_PP8iWmZRI/Sz0egaO4cRI/AAAAAAAAAJ8/1GxJNK1HJnk/s1600-h/layer_1_5.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 318px; height: 320px;" src="http://1.bp.blogspot.com/_1_PP8iWmZRI/Sz0egaO4cRI/AAAAAAAAAJ8/1GxJNK1HJnk/s320/layer_1_5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5421523068570333458" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-5293676418630155065?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/5293676418630155065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=5293676418630155065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/5293676418630155065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/5293676418630155065'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2009/12/arinc-661-tutorial-hello-world.html' title='An ARINC 661 tutorial: Hello World'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1_PP8iWmZRI/Sz0egaO4cRI/AAAAAAAAAJ8/1GxJNK1HJnk/s72-c/layer_1_5.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-3637978100824483637</id><published>2009-12-20T04:01:00.000-08:00</published><updated>2009-12-20T04:35:05.118-08:00</updated><title type='text'>An ARINC 661 tutorial: architecture</title><content type='html'>Well I promised a second part in &lt;a href="http://incanusonrails.blogspot.com/2009/12/arinc-661-tutorial-introduction.html"&gt;my first introductory blog to ARINC 661&lt;/a&gt;. That's it.&lt;br /&gt;The following image is a a rough diagram on how ARINC 661 works at design time and at runtime:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1_PP8iWmZRI/Sy4VWXrGy6I/AAAAAAAAAJ0/_WY2VY3h39M/s1600-h/arinc+661.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 350px;" src="http://4.bp.blogspot.com/_1_PP8iWmZRI/Sy4VWXrGy6I/AAAAAAAAAJ0/_WY2VY3h39M/s320/arinc+661.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5417290875829406626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The ARINC 661 Server (also called ARINC 661 Kernel), which is a part of the Cockpit Display System (CDS) is initialized with a set a ARINC 661 Definition Files. Remember that they are the equivalent of &lt;a href="http://en.wikipedia.org/wiki/XUL"&gt;XUL&lt;/a&gt; or HTML Files, which means that the code of the Server is completely generic, and that any set of DFs can be used to start the Server. Hence the Server GUI code is &lt;span style="font-weight:bold;"&gt;not&lt;/span&gt; hard coded.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;At runtime, the System Applications (called user Applications or UA in the standard) are able to communicate to the Server to change widget parameters that were created at initialization. From the other side, the Server send to the User Application user events on widgets (such as clicks on buttons, change of text fields, etc...)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;The format of a Definition File is completely defined in the standard. The "base format" is binary based (for the computer savvy, with &lt;a href="http://en.wikipedia.org/wiki/Endianness"&gt;Big-Endian&lt;/a&gt; ordering, to be sure that it's the same in any architecture). But the standard also defines an XML format.&lt;br /&gt;&lt;br /&gt;The low-level network communication is not defined by the standard (allowing to use any relevant network transport protocol, such as &lt;a href="http://en.wikipedia.org/wiki/ARINC_429"&gt;ARINC 429&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Avionics_Full-Duplex_Switched_Ethernet"&gt;AFDX&lt;/a&gt;, or even simpler protocols such as &lt;a href="http://en.wikipedia.org/wiki/User_Datagram_Protocol"&gt;UDP&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Transmission_Control_Protocol"&gt;TCP&lt;/a&gt;. But the content of the messages send from/to the Server or the User Application are also formally defined by the standard.&lt;br /&gt;&lt;br /&gt;This architecture allows for very cool things, which are new for avionics systems: It is possible to define a Cockpit GUI completely on standard PC hardware and OS, and even to test it (at least on the CDS side), and then deploy the GUI definition (the Definition Files) on the real avionics system without any change.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-3637978100824483637?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/3637978100824483637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=3637978100824483637' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/3637978100824483637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/3637978100824483637'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2009/12/arinc-661-tutorial-architecture.html' title='An ARINC 661 tutorial: architecture'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1_PP8iWmZRI/Sy4VWXrGy6I/AAAAAAAAAJ0/_WY2VY3h39M/s72-c/arinc+661.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-8624225661700751035</id><published>2009-12-17T15:32:00.000-08:00</published><updated>2009-12-17T16:00:35.343-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARINC661'/><title type='text'>An ARINC 661 tutorial: an introduction</title><content type='html'>For those of you who don't know what ARINC661 can mean (and I bet that's the majority of those who will read this post, if there are any of course), I suggest you go to the &lt;a href="http://en.wikipedia.org/wiki/ARINC_661"&gt;Wikipedia article for ARINC 661&lt;/a&gt;. As it is written:&lt;br /&gt;&lt;i&gt;ARINC 661 is a standard which aims to normalize the definition of a Cockpit Display System (CDS), and the communication between the CDS and User Applications (UA) which manage Aircraft avionics functions. The GUI definition is completely defined in binary Definition Files (DF).&lt;br /&gt;&lt;br /&gt;The CDS software is constituted of a kernel which is able to create the GUI hierarchy specified in the DF during initialization, thus not needing to be recompiled if the GUI definition changes.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Which must trigger something for those of you who are familiar with &lt;a href="http://en.wikipedia.org/wiki/HTML"&gt;HTML&lt;/a&gt;, or even better, familiar with &lt;a href="http://en.wikipedia.org/wiki/XUL"&gt;XUL&lt;/a&gt;, the Mozilla &lt;a href="http://en.wikipedia.org/wiki/Declarative_programming"&gt;declarative&lt;/a&gt; interface language. &lt;br /&gt;&lt;br /&gt;XUL made it possible to define the user interface of &lt;a href="http://en.wikipedia.org/wiki/Mozilla_Firefox"&gt;Firefox&lt;/a&gt; once in a XML file and run Firefox on every possible platform, rather than having to hard-code it for each platform, which would have been extremely burdensome and error prone. Rather than that, the Mozilla people thought better. They defined a grammar to define generic UI components (panels, buttons, sliders, etc...), and only had to implement each of these small components on the different platform they wanted to support. Oh and the engine which could assemble these components together. Smart idea. You only have to look at how Firefox has become a reference in the browsers world.&lt;br /&gt;&lt;br /&gt;Well in the case of XUL the engine which assemble the widgets is called &lt;a href="http://en.wikipedia.org/wiki/Gecko_%28layout_engine%29"&gt;Gecko&lt;/a&gt;, and each specific UI is defined in a XUL XML file (well you can do a lot more than that, like defining your own widget templates for example, but we don't need to look into all of this now).&lt;br /&gt;&lt;br /&gt;Let's say that ARINC 661 uses a Definition File (DF), which is the equivalent of the XUL file, and the engine is called ARINC 661 kernel or CDS (Cockpit Display System).&lt;br /&gt;&lt;br /&gt;Well there are some differences: As it is designed to be used in avionics, ARINC 661 is designed to work in &lt;a href="http://en.wikipedia.org/wiki/Real-time_systems"&gt;real-time systems&lt;/a&gt;, and a CDS must be &lt;a href="http://en.wikipedia.org/wiki/DO-178B"&gt;DO-178B&lt;/a&gt; compliant. For this reasons there are some major differences between languages such as XUL and ARINC 661.&lt;br /&gt;&lt;br /&gt;But don't be upset by this disclaimer. At the core, these languages share a lot of similarities, and ARINC 661 is not overly complex at its core. Which does not mean that it does not have its own subtleties BTW.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I realize that this post is already too long for an introduction. Let's close it to say a few other things about this standard before delving into details:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;ARINC 661 is an &lt;a href="http://en.wikipedia.org/wiki/ARINC"&gt;ARINC&lt;/a&gt; standard, used to standardize avionics concepts. Another very well know ARINC standard is &lt;a href="ARINC 429"&gt;ARINC 429&lt;/a&gt;, which is, as wikipedia says, &lt;i&gt;the technical standard for the predominant avionics data bus used on most higher-end commercial and transport aircraft&lt;/i&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ARINC 661 is not an academic document. It was at the basis of the Airbus A380 Cockpit GUI development, and is also seemingly used for other Airbus aircrafts. It is also used by Boeing, for example for the 787 development&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Last but not least, I am a member of the ARINC 661 committee&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Stay connected and I hope that I will have time to draft the second part soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-8624225661700751035?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/8624225661700751035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=8624225661700751035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/8624225661700751035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/8624225661700751035'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2009/12/arinc-661-tutorial-introduction.html' title='An ARINC 661 tutorial: an introduction'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-6424932405106989307</id><published>2009-10-13T16:43:00.000-07:00</published><updated>2009-10-13T16:57:21.040-07:00</updated><title type='text'>Seems that Miguel De Icaza is not neutral anymore</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Miguel_de_Icaza"&gt;Miguel De Icaza&lt;/a&gt;'s &lt;a href="http://tirania.org/blog/archive/2009/Oct-05.html"&gt;recent post for October 5&lt;/a&gt; is written as an answer to what he said was a personal attack by &lt;a href="http://en.wikipedia.org/wiki/Richard_Stallman"&gt;Richard M. Stallman&lt;/a&gt;, but he is not very honest when doing that. One example:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;Richard Stallman frequently conjures bogeymen to rally his base. Sometimes it is Microsoft, sometimes &lt;a href="http://www.fsf.org/blogs/rms/mac-osx-mistakes-and-malfeatures"&gt;he makes up facts&lt;/a&gt; and sometimes he even attacks his own community&lt;/span&gt;&lt;/blockquote&gt; &lt;br /&gt;The &lt;a href="http://www.fsf.org/blogs/rms/mac-osx-mistakes-and-malfeatures"&gt;he makes up facts&lt;/a&gt; sentence is linked to a post on the FSF website by RMS &lt;a href="http://www.fsf.org/blogs/rms/mac-osx-mistakes-and-malfeatures"&gt;where he publicly acknowledged that he made a mistake about Mac OS X&lt;/a&gt;. So contrary to what De Icaza's is saying, this post is an example of RMS integrity. &lt;br /&gt;&lt;br /&gt;So how do you call what De Icaza's is trying to do then? hmm unfortunately I don't have very kind words for this kind of behavior. &lt;a href="http://news.slashdot.org/story/09/10/06/132231/De-Icaza-Responds-To-Stallman"&gt;And it seems that I'm not the only one&lt;/a&gt;. Now Miguel De Icaza has gone too far.&lt;br /&gt;&lt;br /&gt;From one comment on slashdot: &lt;span style="font-style:italic;"&gt;RMS has a single line that can be seen as an ad-hominem. Your piece is almost entirely an ad-hominem. Enough said&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Sadly it seems that he is now objectively an advocate for Microsoft, regardless of the cost for free software, regardless of the cost for us users and developers. &lt;a href="http://incanusonrails.blogspot.com/2009/09/is-miguel-de-icaza-neutral-toward.html"&gt;I now have my answer&lt;/a&gt;: I can't trust him anymore.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-6424932405106989307?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/6424932405106989307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=6424932405106989307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/6424932405106989307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/6424932405106989307'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2009/10/seems-that-miguel-de-icaza-is-not.html' title='Seems that Miguel De Icaza is not neutral anymore'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-5871534679495866717</id><published>2009-09-19T03:25:00.000-07:00</published><updated>2009-09-26T04:17:49.328-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Is Miguel De Icaza neutral toward Microsoft ?</title><content type='html'>As you may or may not know, &lt;a href="http://en.wikipedia.org/wiki/Miguel_de_Icaza"&gt;Miguel De Icaza&lt;/a&gt; is a well-known developer who is the head of the &lt;a href="http://en.wikipedia.org/wiki/Mono_%28software%29"&gt;Mono&lt;/a&gt; project, an open source project which attempt (and succeed, at least partially) to reimplement Microsoft's  &lt;a href="http://en.wikipedia.org/wiki/.NET_Framework"&gt;.NET Framework&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Miguel De Icaza and Novell are helped by Microsoft for Mono development (for example, Microsoft Microsoft's Test suites or specification details, elements that were exclusively given to Novell, and are and will be not released to other developers. Also, Microsoft has declared it would not sue anyone using Mono users for patent infringement, &lt;span style="font-weight:bold;"&gt;providing they obtained it through Novell&lt;/span&gt;. I agree that it's maybe a matter of personal Point of View to judge that these are details, or are important limitations. However, it is also true that no developer could evolve Mono implementation with the same tools and help that Novell has, and even that those who would try to do that may be pursued by Microsoft for patent infringement.&lt;br /&gt;&lt;br /&gt;So much for the context. Now Microsoft launched a new open source foundation called &lt;a href="http://codeplex.org/"&gt;the Codeplex foundation&lt;/a&gt;. This foundation has many of Microsoft people at its head, but there's also a few non Microsoft people, including Miguel De Icaza himself. &lt;br /&gt;&lt;br /&gt;Miguel De Icaza posted &lt;a href="http://tirania.org/blog/archive/2009/Sep-10.html"&gt;an article on his blog&lt;/a&gt; to announce this, and also to say that he thought it was a very good move on behalf of Microsoft. Needless to say, there were a lot of comments on this post, some positive, some very negative, even sometimes inflammatory.&lt;br /&gt;&lt;br /&gt;I posted a comment myself, which was not inflamatory, but just said that I was still dubious of this move by Microsoft (I did not discuss De Icaza's involvement). Reasons I gave were:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;At the same time, Microsoft &lt;a href="http://www.linux-foundation.org/weblogs/jzemlin/2009/09/09/protecting-linux-from-microsoft-yes-microsoft-got-caught/"&gt;tried to sell patents related to Linux to patent trolls&lt;/a&gt;, only luckily these patents could be bought "just in time" by the Open Invention Network.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Microsoft gave recently some GPL source code concerning &lt;a href="http://en.wikipedia.org/wiki/Hyper_V"&gt;Hyper V&lt;/a&gt; (a Windows Server virtualization) drivers, to the Linux kernel, but it appeared soon that this code was &lt;a href="https://www.google.com/accounts/ServiceLogin?passive=true&amp;service=groups2&amp;continue=http://groups.google.com/group/fa.linux.kernel/browse_thread/thread/6582a78df3cf6291/96a3fd9cba577aec%3Fhl%3Den%26lnk%3Dgst%26q%3DHyper%2BV&amp;cd=US&amp;hl=en#96a3fd9cba577aec"&gt;buggy to the point of being almost unusable&lt;/a&gt;. Also Microsoft does not answer any questions asked by the kernel developers about this code, which may force these developers to drop it from the kernel codebase.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;In substance, I said that I trusted acts more than prose and that Microsoft acts still were not Open Source friendly at all.&lt;br /&gt;&lt;br /&gt;hmmm my comment was deleted without warning from the blog. Why? I don't now, but this makes me now discussing Miguel De Icaza's involvement with Microsoft (something I did not do before, even in this comment).&lt;br /&gt;&lt;br /&gt;Update: Miguel De Icaza &lt;a href="http://tirania.org/blog/archive/2009/Sep-25-1.html"&gt;just stated the cases where he deletes comments on his blog&lt;/a&gt;. Mine does not fall into these categories...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-5871534679495866717?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/5871534679495866717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=5871534679495866717' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/5871534679495866717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/5871534679495866717'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2009/09/is-miguel-de-icaza-neutral-toward.html' title='Is Miguel De Icaza neutral toward Microsoft ?'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-5715994134548098364</id><published>2009-08-01T02:11:00.000-07:00</published><updated>2009-08-01T02:36:43.524-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><category scheme='http://www.blogger.com/atom/ns#' term='Moonlight'/><title type='text'>Beware of differences between .NET and Mono</title><content type='html'>First, for those who don't know of what I'm talking about here,  &lt;a href="http://en.wikipedia.org/wiki/Mono_(software)"&gt;Mono&lt;/a&gt; is an open source implementation of &lt;a href="http://en.wikipedia.org/wiki/.NET_Framework"&gt;.NET&lt;/a&gt;, and &lt;a href="http://en.wikipedia.org/wiki/Moonlight_(runtime)"&gt;Moonlight&lt;/a&gt; (built on Mono) is an open source implementation of &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Silverlight"&gt;Silverlight&lt;/a&gt;. Though being  (I bet it's not by accident) &lt;a href="http://www.fsf.org/news/dont-depend-on-mono"&gt;unclear about the legal situation of those who use Mono or Moonlight&lt;/a&gt; (two Novell products), Microsoft push Mono and Moonlight because it shows that .NET can work out of the box on Linux. Great.&lt;br /&gt;&lt;br /&gt;Let's look at this a little more. I just read &lt;a href="http://blog.jimmy.schementi.com/2009/07/ironruby-at-oscon-2009-mono-moonlight.html"&gt; the last post&lt;/a&gt; from Jimmy Schementi's blog, a Microsoft developer who participate in the building of &lt;a href="http://en.wikipedia.org/wiki/IronRuby"&gt;IronRuby&lt;/a&gt;, a .NET implementation of Ruby. The Microsoft team only works on the Microsoft .NET stack, but when IronRuby followers signal them bugs on Mono or Moonlight, they try fix the bug. At the end IronRuby is more or less working on Mono and Moonlight, meaning that it is working on Linux too. But.&lt;br /&gt;&lt;br /&gt;This is the impression you have at first. But not all is working out of the box, and not because IronRuby still is in its 0.9 version. There's things that work in .NET but won't in Mono (Microsoft is in .NET 4.0, but Mono currently tracks the 2.0 version, and some things can not be emulated in Mono because it is to much tied to Windows), there's things that work in Silverlight and not in Moonlight (Moonlight is an implementation of Silverlight 2, but Silverlight has already reached version 3).&lt;br /&gt;&lt;br /&gt;The contrary is also true. Mono and Moonlight allow things that can not be done on the "regular" .NET framework.&lt;br /&gt;&lt;br /&gt;So beware if you think that code written for .NET / Slverlight will work out of the box. It won't, except if you are extra careful of using only things that are also available on the open source re-implementation. It reminds me of the differences between the Microsoft Java implementation and Sun's Java. It could work, or it could not work, depending on the situation.&lt;br /&gt;&lt;br /&gt;But in these days it was not legal. Now it is, Microsoft has the right to do what it wants with .NET. I'm OK with that, but I also have the right not to play with all these .NET goodies. Right ?&lt;br /&gt;&lt;br /&gt;P.S.: I have nothing against Jimmy Schementi's article. My only concern is that separating what works on one, two, or both implementation is not very clear in his post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-5715994134548098364?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/5715994134548098364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=5715994134548098364' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/5715994134548098364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/5715994134548098364'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2009/08/beware-of-differences-between-net-and.html' title='Beware of differences between .NET and Mono'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-541137725089400851</id><published>2009-05-21T04:12:00.000-07:00</published><updated>2009-05-21T04:38:50.377-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='office'/><title type='text'>Office 2007 rant</title><content type='html'>OK,OK, always wining I know. My company works with another which use Office 2007 extensively, but we still use Office 2003. Previously, our &lt;a href="http://en.wikipedia.org/wiki/Information_technology"&gt;IT&lt;/a&gt; did not provide us any tool to convert from the .x formats to the old one (This has changed now).&lt;br /&gt;&lt;br /&gt;However, we have at work a program which allows employees to buy Office Pro for their home for a very inexpensive price. I bought it (but did not installed the 207 versions of the apps) thinking it could be handy. And so it did. No more for the context.&lt;br /&gt;&lt;br /&gt;So I installed Word, PowerPoint and Excel, and was able to open the .pptx file that I received at work. Fine.&lt;br /&gt;&lt;br /&gt;Except that I never used the &lt;a href="http://en.wikipedia.org/wiki/Ribbon_(computing)"&gt;Ribbon&lt;/a&gt; before. The beginning were not easy, as &lt;b&gt;nothing&lt;/b&gt; was in a place I was used for in the previous Office 2003 version (the one I use at work everyday). After a while I get used to it, but I still don't think it's entirely a good change:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;No more direct access to the old File menu, you have to go through the new oversized Office button to access to all File actions different from the simplest save (and you are not saved from numerous clicks to do what you want)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Very difficult to customize what as replaced the toolbar. For example with Office 2003 if you often used at the same time basic editing tools (such as the brush to copy text attributes in word or PowerPoint), and revision features, it was very easy to have both at the same time; now you have to go through a tedious process of customizing the interface (which is absolutely not what you want to do) to achieve the same result. Bottom line is: yo don't do it and you switch a million of times from one tab to the other. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Knowing where an action is is not always easy.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;And why, why designing such a huge cryptic &lt;b&gt;Microsoft&lt;/b&gt; button for the File actions? It means that nobody will be able to stick to the same UI for the similar actions for accessing to File actions in their own apps. One more time, it seems that Microsoft did something only to erase every possible competition.&lt;/li&gt;  &lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-541137725089400851?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/541137725089400851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=541137725089400851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/541137725089400851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/541137725089400851'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2009/05/office-2007-rant.html' title='Office 2007 rant'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-6777466537472346430</id><published>2009-02-01T09:03:00.000-08:00</published><updated>2009-02-01T09:09:27.720-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'></title><content type='html'>Remember &lt;a href="http://incanusonrails.blogspot.com/2008/05/new-projects.html"&gt;this post&lt;/a&gt;: I talked about my two first open Source projects:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="https://mdiframework.dev.java.net/"&gt;MDIFramework&lt;/a&gt; aim to provide a ready-to-use desktop application infrastructure in Java. I mainly created this project because I always reused the same piece of code in my own work, so I wanted to have a generic library instead. I thought it was better to open source it, so that's what I've done.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="https://mdiutilities.dev.java.net/"&gt;MDIUtilities&lt;/a&gt; is a utility library with various classes in the swing, IO, geometry, etc... fields. There's tons of other libraries in the open, but it is not always easy when all you want is a small library to provide utility classes. Sometimes you could end-up with tons of different libraries, for which you only use few classes.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Well these two projects have both been bumped to 0.3 version. In the hope it can be useful...&lt;br /&gt;&lt;br /&gt;About MDIFramework, maybe you will say: Why not using Eclipse ? Well Eclipse is a huge framework. When you develop with Eclipse in mind, you are in the Eclipse ecosystem, and you end with a lot of Eclipse dependencies. That can be a good thing, but if you want to keep control on your work, and avoid to bear the burden of too many dependencies (or limit the size of your install), you should look elsewhere. Plus Eclipse does not handle everything for you.&lt;br /&gt;But why not using appframework ? Unfortunately (for the moment) appframework does not manage several things that are handled by MDIFramework:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Plugins&lt;/li&gt;&lt;br /&gt;&lt;li&gt;dynamic menus&lt;/li&gt;&lt;br /&gt;&lt;li&gt;storing / retrieving non GUI parameters between sessions&lt;/li&gt;&lt;br /&gt;&lt;li&gt;managing FileTypes&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;...And MDIFramework was created before appframework even existed on the Web (2006).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-6777466537472346430?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/6777466537472346430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=6777466537472346430' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/6777466537472346430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/6777466537472346430'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2009/02/remember-this-post-i-talked-about-my.html' title=''/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-620507883186709841</id><published>2009-02-01T04:31:00.000-08:00</published><updated>2009-02-01T04:46:45.174-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Microsoft, what are you doing with .NET ?</title><content type='html'>It seems that the size of the .NET framework is increasing with every update. Last auto update seems to be at a bloated 250 MB !!!(RTM was approximately 200 MB, but remember it is only a SP1 update !!). It's funny that people keep criticizing Java for the size of its download, when Java 6 JRE is less than 15 MB. Plus you can download &lt;a href="http://java.sun.com/developer/technicalArticles/javase/java6u10/"&gt;only the kernel&lt;/a&gt; (less than 5 MB), which is enough to play any Java applets, and if you need more, other parts of the JRE will be loaded as you need them.&lt;br /&gt;&lt;br /&gt;It reminds me of Acrobat Reader, which is now more than 30 MB (only to be able to view PDF Files !!), it has become so bloated with unneeded options as time passes that opening a PDF document now takes ages, even with modern hardware !!! Adobe, what do you think ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-620507883186709841?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/620507883186709841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=620507883186709841' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/620507883186709841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/620507883186709841'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2009/02/microsoft-what-are-you-doing-with-net.html' title='Microsoft, what are you doing with .NET ?'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-5328400005331790895</id><published>2009-01-24T04:40:00.000-08:00</published><updated>2009-01-24T04:53:44.710-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikipedia'/><title type='text'>Steps to improve wikipedia</title><content type='html'>I have just been &lt;a href="http://en.wikipedia.org/wiki/Talk:Proprietary_software#Pejorative_.3F"&gt;repeatedly insulted by a user&lt;/a&gt; on &lt;a href="http://en.wikipedia.org/"&gt;wikipedia&lt;/a&gt; with such terms as &lt;i&gt;"you really are just talking gibberish now"&lt;/i&gt;, &lt;i&gt;"Your accusations of original research are pathetic"&lt;/i&gt;, &lt;i&gt;"I cannot believe I wasted my time on these arguments believing you to at least be rational"&lt;/i&gt;, &lt;i&gt;"you're a complete hypocrite"&lt;/i&gt;, or &lt;i&gt;"I am sorry you don't possess the intelligence..."&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Well it's the first time it happens for me, and I'm really editing in wikipedia for some years now, so it's not such big deal (I'm sure it can / will happen to everyone after a while), but it made me think about things that could improve editing in this project. This will not change anything in cases like mine now (sadly there's people like that everywhere), but I'm trying to look more generally than just around my little problem):&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;make it mandatory to register, so as it would really be possible to block vandals (again this is NOT related to my case, as the user insulted me, but he clearly is NOT a vandal). I remember a case when various IP addressed obviously coming from the same origin kept vandalizing various articles, but the address changed because it must have been an internet cafe or a school, so it was really impossible to block it, even using IP)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;allow to see the IP for any registered accounts (except in special cases of course, related to people wanting to be protected when posting, such as in some countries when posting on internet can be dangerous from their well-being). This would then be easier to detect people payed to post for various companies&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-5328400005331790895?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/5328400005331790895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=5328400005331790895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/5328400005331790895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/5328400005331790895'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2009/01/steps-to-improve-wikipedia.html' title='Steps to improve wikipedia'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-533180114091710025</id><published>2009-01-04T01:41:00.000-08:00</published><updated>2009-01-04T01:47:26.102-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='XUL'/><title type='text'>XUL for Java: stucked (for the moment)</title><content type='html'>Remember &lt;a href="http://incanusonrails.blogspot.com/2008/11/new-xul-on-java-project.html"&gt;This post&lt;/a&gt;: I just created a new &lt;a href="http://java.net/"&gt;java.net&lt;/a&gt; project to allow to use &lt;a href="http://en.wikipedia.org/wiki/XUL"&gt;XUL&lt;/a&gt; declarative scripts out of the box with Java, and allow to bind them at will with Java code or even other scripting languages as well. The code comes from another project were it was working very well, but after extracting it from this project, I still have a big big problem with accessing some Javascript code from the XUL script (which makes the whole thing unusable of course for the moment). I know it's a trivial problem because the same use case works like a charm in the original implementation, I must have deleted the wrong line of code somewhere...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-533180114091710025?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/533180114091710025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=533180114091710025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/533180114091710025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/533180114091710025'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2009/01/xul-for-java-stucked-for-moment.html' title='XUL for Java: stucked (for the moment)'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-1337542350232072891</id><published>2008-11-30T14:21:00.000-08:00</published><updated>2008-12-07T07:10:00.707-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='DLR'/><title type='text'>I still have a problem with the DLR</title><content type='html'>Microsoft's &lt;a href="http://en.wikipedia.org/wiki/Dynamic_Language_Runtime"&gt;Dynamic Language Runtime&lt;/a&gt; &lt;a href="http://www.codeplex.com/dlr"&gt;shipped its first Beta&lt;/a&gt; a few days ago. For those who don't know, the DLR is Microsoft's effort to bring support for &lt;a href="Dynamic programming language"&gt;Dynamic Languages&lt;/a&gt; on top of the &lt;a href="http://en.wikipedia.org/wiki/Common_Language_Runtime"&gt;.NET Virtual Machine&lt;/a&gt;. Catch it ? Dynamic Languages are the rage today, and .NET and Java now want to catch the trend on their respective VMs. The DLR initially lived in the &lt;a href="http://en.wikipedia.org/wiki/Ironpython"&gt;IronPython&lt;/a&gt; codebase (IronPython is the .NET implementation of Python), but it now seems to live on its own.&lt;br /&gt;&lt;br /&gt;I &lt;a href="http://incanusonrails.blogspot.com/2008/06/concerns-with-dynamic-language-runtime.html"&gt;expressed some concerns about the state of the ongoing work for the DLR some time ago&lt;/a&gt;, and some people from the DLR team tried to answer. These concerns were (in short):&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;A lot of hard coded references to IronPython and IronRuby, the currently two Microsoft project heavily leveraging the DLR&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Compilation directives looking for &lt;a href="http://en.wikipedia.org/wiki/Silverlight"&gt;Silverlight&lt;/a&gt; everywhere in the code&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;In short, my concern was that the DLR may be too tied to Microsoft implementations specificities, and not really language / or implementation agnostic. I know this is not what Microsoft folks want, but all this just adds complex interwoven ties between   parts of Microsoft's offerings that should never meet explicitly ;-). People already &lt;a href="http://rubyforge.org/pipermail/ironruby-core/2008-September/002859.html"&gt;encounter repeated problems&lt;/a&gt; when trying to build IronRuby under &lt;a href="http://en.wikipedia.org/wiki/Mono_(software)"&gt;Mono&lt;/a&gt;, this can only make it worse.&lt;br /&gt;&lt;br /&gt;And sadly, when looking through the code, I saw as many Silverlight directives as before. And now, some new &lt;a href="http://en.wikipedia.org/wiki/LINQ"&gt;LINQ&lt;/a&gt; references that were not there before. My problem is not that there are dependencies, it's the fact that they seem to be everywhere in the code. I would greatly prefer to see them limited to a specific module in the code, and I'm worried about these new LINQ dependencies. Plus why compilation directives ? Why is it not possible to limit Silverlight specificities to a separated assembly (preferably implementing an interface with a default implementation), and link to this assembly at runtime ? And why Silverlight is so different from the core .NET runtime ?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update 6/12/2008&lt;/b&gt;: Since Bill Chiles comment, I downloaded the code (before I just browsed in the codebase through the web access), and here is what I discovered:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;139 files with ifdefs for SILVERLIGHT in the code (that makes roughly 25% of the files), mostly in the Core package (71 files in Core and its subpackages), but widespreaded in the codebase.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;4 files referencing IronRuby, and 12 referencing IronPython !!! Again these are not limited to a particular package in the code, and I really wonder why there are more references to IronPython than IronRuby. In short, I don't know how anybody would be able to use the DLR for a new scripting language without changing the core DLR code&lt;/li&gt;&lt;br /&gt;&lt;li&gt;302 files using Linq specific libraries and/or functions.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;I'm sorry to say that it does not look to me as a well-designed code IMHO (for the moment). I would very much like to see:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;ALL specific references to IronRuby and IronPython removed.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If it's not possible to avoid ifdefs for SILVERLIGHT (I hate ifdefs in general) at all, then limit them to a specific package in the code, and access these by a neutral interface&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I really don't think that the idea to put Linq there was very good to begin with, but at least I would prefer to see Linq references limited to a Linq-specific package&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Update 2 (7/12/2008)&lt;/b&gt;: About references to IronRuby and IronPython, I maybe was  a tad too fast to criticize (I still stick to my previous point with Silverlight references). There's only one file with a real hard reference to IronPython, IronRuby, and JScript. I really don't know why the &lt;i&gt;PlatformAdaptationLayer&lt;/i&gt; class needs to explicitly add assembly mappings for these implementations. Why not leaving it to each implementation to add its own mappings ? How a new scripting language will be able to add its own mappings without changing the &lt;i&gt;PlatformAdaptationLayer&lt;/i&gt; code ?&lt;br /&gt;But there's still a lot of comments about IronPython in the code, which makes me think that some of the DLR code is still tied to this implementation. However, this should improve in the future. Except that... I now saw another file with an explicit new compilation directive (argghhh !!) referencing &lt;i&gt;IRONPYTHON_WINDOW&lt;/i&gt;. That looks bad to me.&lt;br /&gt;And to show my point about the SILVERLIGHT references, let's use one simple example, again in the &lt;i&gt;PlatformAdaptationLayer&lt;/i&gt; class. The code is:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public virtual bool DirectoryExists(string path) {&lt;br /&gt;#if !SILVERLIGHT&lt;br /&gt;   return Directory.Exists(path);&lt;br /&gt;#else&lt;br /&gt;   throw new NotImplementedException();&lt;br /&gt;#endif&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;OK I think its because Silverlight impose limitations on access to the File system (sandboxing), so you may not access directories at will. I have no problem with that limitation, but... It would have been very easy to access to a platform-specific assembly here, instead of using these dreadful compilation directives. The Windows platform assembly would simply return &lt;i&gt;Directory.Exists(path)&lt;/i&gt;, the Silverlight assembly would return the &lt;i&gt;NotImplementedException&lt;/i&gt;. This would have been way better IMHO.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-1337542350232072891?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/1337542350232072891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=1337542350232072891' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/1337542350232072891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/1337542350232072891'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2008/11/i-have-still-problem-with-dlr.html' title='I still have a problem with the DLR'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-971861159336690663</id><published>2008-11-08T04:42:00.000-08:00</published><updated>2008-11-08T04:59:12.116-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Web 2.0 taken hostage</title><content type='html'>I tried today to access the &lt;a href="http://www.microsoft.com/net/dublin.aspx"&gt;.NET 4.0 (Dublin)&lt;/a&gt; roadmap on Microsoft website. Unfortunately, you need to have a &lt;a href="http://en.wikipedia.org/wiki/Office_Open_XML"&gt;Word Office 2007&lt;/a&gt; compliant reader to be able to even read this.&lt;br /&gt;&lt;br /&gt;Want to access some (maybe) cool content on websites ? Be sure you have the last &lt;a href="http://en.wikipedia.org/wiki/Silverlight"&gt;Silverlight&lt;/a&gt; plugin available. But for the moment it will not work on Linux, because &lt;a href="http://en.wikipedia.org/wiki/Moonlight_(runtime)"&gt;Moonlight&lt;/a&gt; is still a work in progress.&lt;br /&gt;&lt;br /&gt;Aren't you concerned by the fact that an increasingly number of Web sites use proprietary technology for their rendering ? Some time ago we only had to bother about &lt;a href="http://en.wikipedia.org/wiki/Adobe_Flash"&gt;Flash&lt;/a&gt;, but it was almost OK, we only had to download one plugin. Now it seems that every big Web 2.0 contender is trying to tie people to their own technology. &lt;br /&gt;&lt;br /&gt;Web 2.0 is in danger of breaking in a myriad of little pieces. What is going on now is contrary to what made the web ubiquitous. I'm really looking forward to &lt;a href="http://en.wikipedia.org/wiki/HTML_5"&gt;HTML 5&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Tamarin_(JavaScript_engine)"&gt;jitted Javascript&lt;/a&gt; and canvas rendering on HTML pages. I really want this to kill both Flash and Silverlight, else I don't know where we are heading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-971861159336690663?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/971861159336690663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=971861159336690663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/971861159336690663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/971861159336690663'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2008/11/web-20-taken-hostage.html' title='Web 2.0 taken hostage'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-8839751931919710590</id><published>2008-11-02T04:24:00.000-08:00</published><updated>2008-11-02T04:53:25.880-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='XUL'/><category scheme='http://www.blogger.com/atom/ns#' term='javaXUL'/><title type='text'>new XUL on Java project</title><content type='html'>Remember this &lt;a href="http://incanusonrails.blogspot.com/2008/06/have-fun-with-arinc-661-xul-javascript.html"&gt;June post&lt;/a&gt; about using &lt;a href="http://en.wikipedia.org/wiki/XUL"&gt;XUL&lt;/a&gt;, &lt;a href="http://www.mozilla.org/rhino/"&gt;Javascript&lt;/a&gt;, and &lt;a href="http://www.beanshell.org/"&gt;Beanshell&lt;/a&gt;  in a  &lt;a href="http://en.wikipedia.org/wiki/ARINC_661"&gt;ARINC 661&lt;/a&gt; Client-Server framework ?&lt;br /&gt;Well it occurred to me that the XUL / Javascript / Beanshell part of this was not specific to ARINC661 and could be useful to others as well.&lt;br /&gt;Also if you look in the wild you will only find two Java XUL frameworks:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;A Java project called &lt;a href="http://jxul.sourceforge.net/"&gt;jXUL&lt;/a&gt; had exactly this goal, but it seemed that its development stalled very quickly in 2001, while still in Beta or even Alpha stage (no activity since then)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://luxor-xul.sourceforge.net"&gt;Luxor&lt;/a&gt; is huge and complex, and also has no activities since some years&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;So why not sharing some code, being able to use XUL "out of the box" in Java can be useful, and even cool ;-)&lt;br /&gt;&lt;br /&gt;So let me introduce my new project: &lt;a href="https://javaxul.dev.java.net/"&gt;javaXUL&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;javaXUL is not intended to compete with much more complete RIA offerings, such as Flash, Silverlight or javaFX. Instead it tries to leverage the expressivity of XUL in the java developement area. Compatibility with &lt;a href="http://www.mozilla.org/projects/xul/"&gt;Mozilla XUL&lt;/a&gt; (such as the Firefox implementation) is a goal, but ease to use in the Java world is also one.&lt;br /&gt;The goal of version 0.1 (underway) is to be able to use javaXUL "out of the box" to add user-defined UIs on Java projects:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;strike&gt;import existing sources and make them compile&lt;/strike&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strike&gt;make them work on simple use cases&lt;/strike&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strike&gt;add simple examples&lt;/strike&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strike&gt;allow setting of Look and Feel&lt;/strike&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ability to add other script engines than Javascript&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;And now, Just a simple example for your pleasure:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1_PP8iWmZRI/SQ2fB887TeI/AAAAAAAAAHk/DwIZl6qRiwo/s1600-h/testXUL.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://2.bp.blogspot.com/_1_PP8iWmZRI/SQ2fB887TeI/AAAAAAAAAHk/DwIZl6qRiwo/s320/testXUL.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5264038395356335586" /&gt;&lt;/a&gt;&lt;br /&gt;Lets look at the code for this example (its available in the javaXUL website):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import com.sun.java.swing.plaf.windows.WindowsLookAndFeel;&lt;br /&gt;import java.awt.BorderLayout;&lt;br /&gt;import java.net.URL;&lt;br /&gt;import javax.swing.JComponent;&lt;br /&gt;import javax.swing.JFrame;&lt;br /&gt;import javax.swing.JScrollPane;&lt;br /&gt;import javax.swing.JTabbedPane;&lt;br /&gt;import org.xul.script.scripts.AbstractScriptContext.JSFunctionBinding;&lt;br /&gt;import org.xul.script.scripts.ScriptListener;&lt;br /&gt;import org.xul.script.xul.DefaultScriptManager ;&lt;br /&gt;import org.xul.script.xul.model.XULDocument;&lt;br /&gt;&lt;br /&gt;public class BasicXULSample extends JFrame {&lt;br /&gt;    private JTabbedPane pane = new JTabbedPane();&lt;br /&gt;    private XULListener listener = new XULListener();&lt;br /&gt;&lt;br /&gt;    public BasicXULSample() {&lt;br /&gt;        super("Basic XUL Sample");&lt;br /&gt;        this.setLayout(new BorderLayout());&lt;br /&gt;        this.add(pane);&lt;br /&gt;        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;        init();&lt;br /&gt;        this.setSize(500, 500);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private URL getResource(String name) {&lt;br /&gt;        return Thread.currentThread().getContextClassLoader().getResource(name);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private void init() {&lt;br /&gt;        DefaultScriptManager manager = new DefaultScriptManager ();&lt;br /&gt;        manager.setLookAndFeel(new WindowsLookAndFeel());&lt;br /&gt;        manager.setScriptListener(listener);&lt;br /&gt;        try {&lt;br /&gt;            URL boxes = getResource("org/xul/samples/resources/boxes.xul");&lt;br /&gt;            XULDocument boxesdoc = manager.addXULScript(boxes.toString(), boxes);&lt;br /&gt;            JComponent boxescomp = boxesdoc.getRootComponent();&lt;br /&gt;            if (boxescomp != null) {&lt;br /&gt;                pane.addTab(boxesdoc.getFile().getName(), new JScrollPane(boxescomp));&lt;br /&gt;            }&lt;br /&gt;            URL test = getResource("org/xul/samples/resources/test.xul");&lt;br /&gt;            XULDocument testdoc = manager.addXULScript(test.toString(), test);&lt;br /&gt;            JComponent testcomp = testdoc.getRootComponent();&lt;br /&gt;            if (testcomp != null) {&lt;br /&gt;                pane.addTab(testdoc.getFile().getName(), new JScrollPane(testcomp));&lt;br /&gt;            }&lt;br /&gt;            URL buttons = getResource("org/xul/samples/resources/buttons.xul");&lt;br /&gt;            XULDocument buttonsdoc = manager.addXULScript(buttons.toString(), buttons);&lt;br /&gt;            JComponent buttonscomp = buttonsdoc.getRootComponent();&lt;br /&gt;            if (buttonscomp != null) {&lt;br /&gt;                pane.addTab(buttonsdoc.getFile().getName(), new JScrollPane(buttonscomp));&lt;br /&gt;            }&lt;br /&gt;            manager.setActive(true);&lt;br /&gt;        } catch (Exception ex) {&lt;br /&gt;            ex.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static final void main(String[] args) {&lt;br /&gt;        BasicXULSample sample = new BasicXULSample();&lt;br /&gt;        sample.setVisible(true);&lt;br /&gt;    }&lt;br /&gt;    private class XULListener implements ScriptListener {&lt;br /&gt;        public void print(String message) {&lt;br /&gt;            System.out.println(message);&lt;br /&gt;        }&lt;br /&gt;        public void setCurrentJSScript(JSFunctionBinding binding) {&lt;br /&gt;        }&lt;br /&gt;        public void showException(String message, Exception e) {&lt;br /&gt;            e.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;        public void showException(Exception e) {&lt;br /&gt;            e.printStackTrace();&lt;br /&gt;        }        &lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;All you have to do is:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Create a Scriptmanager (the library provide a ready-to-use DefaultScriptManager implementation)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;provide a ScriptListener which will be fired for actions on the javaScript side (for now, it is very very basic, I agree)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Add various XUL Scripts for this manager, and grab the corresponding components:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;   URL test = ...;&lt;br /&gt;   XULDocument testdoc = manager.addXULScript(test.toString(), test);&lt;br /&gt;   JComponent testcomp = testdoc.getRootComponent();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;You can already grab the code and make it work. a LOT of things need to be done on it of course, but I think it can already be useful. As soon as the ability to add other script engines than Javascript has been added I will post a first 0.1 version. For now, consider it a Beta ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-8839751931919710590?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/8839751931919710590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=8839751931919710590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/8839751931919710590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/8839751931919710590'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2008/11/new-xul-on-java-project.html' title='new XUL on Java project'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1_PP8iWmZRI/SQ2fB887TeI/AAAAAAAAAHk/DwIZl6qRiwo/s72-c/testXUL.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-7248854170626343514</id><published>2008-10-26T03:27:00.001-07:00</published><updated>2008-11-02T05:18:56.778-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='netbeans'/><title type='text'>On Eclipse versus Netbeans</title><content type='html'>It's amazing how Eclipse has gained so much momentum that people don't even try to look on Netbeans to see if their need could not be fulfilled by this other IDE. OK I am a longtime Netbeans user, but my (recent) experiences with Eclipse were not good ones:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;having the right install and dependencies for a particular plugin is very very often a nightmare. Believe me, it never works out of the box, even with commercial plugins&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I really don't like the perspective stuff, it is surely a good idea, because you think that you will only have what you need for your current task, but at the end this forever changing environment is really disturbing. And having the IDE saying that "you must change your perspective" is something that is the contrary of a user-friendly experience&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Eclipse UI is bloated and not homogeneous. I don't count the times when I had to search for a particular basic thing, and discover that it was hidden deep somewhere in the configuration options&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Some things that are done very well and "out of the box" by Netbeans are complex with Eclipse: UI development (no good UI designer in Eclipse), Jar creation and ant configuration (I was amazed to discover how it was complex to simply create a jar with a main class attribute on the version of Eclipse I used, and you have nothing to do to make it work with Netbeans, it is working out of the box)&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Some cryptic bugs in Eclipse with the projects, that can be very very annoying, especially considering that they don't disappear when you restart. I never had these in Netbeans&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;But the problem is that people like Eclipse, just because they never look at Netbeans and they think that the problems of Eclipse are just a downside of all What Eclipse can offer to them. It reminds me of the dreaded "Start" button of Windows. In more than one cases, I discussed with people who wanted to begin development with Java in my company, they had a pre-installed version of Eclipse on their PC, and as they asked me, I stated the differences between these two IDEs (it is very easy to work with Netbeans even with copying the installation directory anywhere). They often choose to work with Eclipse (because of the buzz, I think), so they never choose. And they are happy, because they know nothing else, and think that their problems can't be avoided. And in the end, I often had to help them with their Eclipse problems...&lt;br /&gt;&lt;br /&gt;Update: And The &lt;a href="http://www.eclipse.org/vep/WebContent/main.php"&gt;Visual Editor&lt;/a&gt; only works with Eclipse 3.2 (Callisto), it has not been updated since then. Eclipse is now 3.4 !!! Want to do easy Java UI development ? Use Netbeans or buy &lt;a href="http://www.myeclipseide.com"&gt;MyEclipse&lt;/a&gt;. Beware that if you want the UI designer (code copied from Netbeans, so don't expect it to be bleeding edge stuff), you have to throw 60$ a year for the professional edition. Netbeans UI designer &lt;b&gt;is bleeding edge&lt;/b&gt; and is free.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-7248854170626343514?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/7248854170626343514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=7248854170626343514' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/7248854170626343514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/7248854170626343514'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2008/10/on-eclipse-versus-netbeans.html' title='On Eclipse versus Netbeans'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-881069259746203809</id><published>2008-09-27T04:04:00.000-07:00</published><updated>2008-09-27T04:20:12.967-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='generics'/><title type='text'>Type erasure and autoboxing in Java</title><content type='html'>I'm using Java 5 (and 6) for &lt;i&gt;some&lt;/i&gt; time now, and I don't really understand all this hatred about &lt;a href="http://en.wikipedia.org/wiki/Generics_in_Java#Type_erasure"&gt;type erasure&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Autoboxing#Autoboxing"&gt;autoboxing&lt;/a&gt; in Java. But I really think that the Java guys were right at the end:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Generic_programming"&gt;Generics&lt;/a&gt; can be easy to use, but they are never easy to implement at the library level for programmers. I don't think that they are really useful for VM languages, except for type safety. I agree that C++ &lt;a href="http://en.wikipedia.org/wiki/Standard_Template_Library"&gt;STL&lt;/a&gt; could not have been implemented easily (or at least in a manner that would allow to use them easily) without templates, but templates are hard to understand when you need to develop libraries using them.&lt;br /&gt;&lt;br /&gt;So for me I'm using Java generic a lot, but as a user of the collections library (which is the main area were they are useful IMHO, and in every language), and I'm perfectly OK with that. When using generics like that, they are very easy to understand. See this example:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public Map&amp;lt;String, String&amp;gt; getMap() {&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It is a really cool here to know what is returned by the method, and also to be sure that types mistakes on the content of the Map will be detected at compile time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-881069259746203809?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/881069259746203809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=881069259746203809' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/881069259746203809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/881069259746203809'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2008/09/type-erasure-and-autoboxing-in-java.html' title='Type erasure and autoboxing in Java'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-5142740790170501558</id><published>2008-08-30T02:53:00.000-07:00</published><updated>2008-08-30T02:59:40.769-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='patents'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Page Up and Page Down patent</title><content type='html'>Microsoft has just been granted a U.S. patent for "a method and system in a document viewer for scrolling a substantially exact increment in a document, such as one page, regardless of whether the zoom is such that some, all or one page is currently being viewed", in other words, the "Page Up" and "Page Down" keystrokes !!! (see &lt;a href="http://news.zdnet.com/2424-9595_22-218626.html"&gt;here&lt;/a&gt;). This is another example of where this crazy software patents system can go.&lt;br /&gt;&lt;br /&gt;The problem is that these software giants present the patents they filed as valuable assets (maybe products of extensive research and investments) that could be put at risk by others, say for example evil open source advocates or other competitors. But although I don't doubt that some of their patents deal about real inventions, how to separate these from this over-increasing amount of crap ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-5142740790170501558?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/5142740790170501558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=5142740790170501558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/5142740790170501558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/5142740790170501558'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2008/08/page-up-and-page-down-patent.html' title='Page Up and Page Down patent'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-5388247445043027688</id><published>2008-06-19T04:34:00.000-07:00</published><updated>2008-06-19T04:56:39.727-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='IronRuby'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='IronPython'/><title type='text'>Concerns with the Dynamic Language Runtime</title><content type='html'>the &lt;a href="http://en.wikipedia.org/wiki/Dynamic_Language_Runtime"&gt;Dynamic Language Runtime&lt;/a&gt; is an Open-sourced library developed by Microsoft to bring support for scripting languages on top of the &lt;a href="http://en.wikipedia.org/wiki/.NET_Framework"&gt;.NET Framework&lt;/a&gt;. The code currently live in the &lt;a href="http://www.codeplex.com/IronPython"&gt;IronPython&lt;/a&gt; codebase, and it is used by IronPython, the upcoming &lt;a href="http://rubyforge.org/projects/ironruby/"&gt;IronRuby&lt;/a&gt; (the Microsoft .NET implementation of Ruby, and it is planned for the upcoming releases of JScript and VB.NET. The first release is announced late 2008. &lt;br /&gt;&lt;br /&gt;I browsed the code shipped in the IronRuby repository and I have two concerns about this code:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Currently there are some hard links in the code to IronPython, IronRuby, and JScript. I think these should be deleted in favor of a more generic approach, to allow any scripting language implementation to take advantage of the DLR.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;There are compilation directives looking for &lt;a href="http://en.wikipedia.org/wiki/Silverlight"&gt;Silverlight&lt;/a&gt; &lt;b&gt;everywhere&lt;/b&gt; in the code, which I consider shameful, because what is achieved by compiling against Silverlight is not clear. Also having to use two very different runtimes, one for a regular .NET application, and another for Silverlight, is not very good IMHO. It reminds me of the old times of C pragma hell... Also what are the constrainsts for the hosting scripting language implementation ? As Silverlight is not open-sourced or standardized, what will become of the DLR API when Silverlight will change, a thing which will surely happen ?&lt;/li&gt; &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Of course, the DLR is still under development, and things will evolve and maybe change in the course of time. But it reminds me of the old Microsoft attitude: propose new tools and libraries, with heavy advertising, declare them as open for everyone, and then tweak them heavily for working with Microsoft implementations only (I don't think that this is a conscious attitude)... This is not a problem for now, but it could become one after the first "official" release, when people will start to use it in their own scripting languages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-5388247445043027688?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/5388247445043027688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=5388247445043027688' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/5388247445043027688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/5388247445043027688'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2008/06/concerns-with-dynamic-language-runtime.html' title='Concerns with the Dynamic Language Runtime'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-5326015267773669642</id><published>2008-06-08T04:09:00.001-07:00</published><updated>2008-06-08T04:35:16.640-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='ARINC661'/><category scheme='http://www.blogger.com/atom/ns#' term='beanshell'/><category scheme='http://www.blogger.com/atom/ns#' term='XUL'/><title type='text'>Have fun with ARINC 661, XUL, Javascript, beanshell, and Java</title><content type='html'>One of my project is a Client-Server &lt;a href="http://en.wikipedia.org/wiki/ARINC_661"&gt;ARINC 661&lt;/a&gt; framework which use a lot of socket-bound activity from the Client (called User Application in the standard, it handles the logic here) to the Server (which perform the graphic rendering).&lt;br /&gt;&lt;br /&gt;The communication protocol in ARINC 661 is specific and a bit complex (no SOAP, no REST, no CORBA, not RMI, but purely specific binary messages on top of the lower-level bus-level layer protocol). So to ease development of Java clients, I developed a generic API to handle this.&lt;br /&gt;&lt;br /&gt;I thought it could be cool to allow users to prototype the logic of the Client. Using &lt;a href="http://www.beanshell.org/"&gt;beanshell&lt;/a&gt; for this was the logic thing to do (pardon the pun), because it is very close to Java, so transcoding from beanshell to Java is straigthforward.&lt;br /&gt;&lt;br /&gt;The second step was to be able to add scripted control panels for the Client. I don't want to recreate the wheel, so I decided for the use of &lt;a href="http://en.wikipedia.org/wiki/XUL"&gt;XUL&lt;/a&gt;. One cool side-effect is that users would be able to debug their scripts using Firefox.&lt;br /&gt;&lt;br /&gt;OK, it's one thing to create control panels in Java by parsing XUL scripts, but if you are not able to wire the widgets commands to the logic, it's no use. I decided for using Javascript (by using &lt;a href="http://www.mozilla.org/rhino/"&gt;Rhino&lt;/a&gt;). Then I had to wire   beanshell methods to Javascript. It involved a bit of code to be able to do that, but it was possible.&lt;br /&gt;&lt;br /&gt;But getting or setting widget attributes at the Javascript level is also mandatory ! With some amount of work (in fact not a lot of work, I only had to use the right approach to do it), it was also possible.&lt;br /&gt;&lt;br /&gt;So basically now I have a framework where I can script ARINC 661 logic in beanshell, and wire these scripts to commands in XUL declarative files. I have a purely scripted ARINC 661 Client.&lt;br /&gt;&lt;br /&gt;In this process, I found that Rhino is really a very good Javascript engine, but that there is few informations or tutorials when you have to perform specific things like I had to do (hmm, it's no so specific). I will blog about what I discovered about Rhino specificities in some days (there's not much to say about beanshell / Java, it just work, but as it is so close to Java, there's no surprise). I thing it can be useful to others.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-5326015267773669642?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/5326015267773669642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=5326015267773669642' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/5326015267773669642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/5326015267773669642'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2008/06/have-fun-with-arinc-661-xul-javascript.html' title='Have fun with ARINC 661, XUL, Javascript, beanshell, and Java'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-956695427931258256</id><published>2008-05-04T02:37:00.001-07:00</published><updated>2008-05-04T03:09:41.656-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><title type='text'>New projects ?</title><content type='html'>It seems I did not blog here for a long time now. This blog is still active, although I blog more often &lt;a href="http://rimmedwithfire.blogspot.com/"&gt;here&lt;/a&gt; (hmm, I acknowledge that my musical tastes may be a little specific).&lt;br /&gt;This entry is just a reminder, so I can look at it a few months from now, and look if I made any progress at all... &lt;br /&gt;First I created two open source projects, called:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="https://mdiframework.dev.java.net/"&gt;MDIFramework&lt;/a&gt;, which aim to provide a ready-to-use desktop application infrastructure in Java. I mainly created this project because I always reused the same piece of code in my own work, so I wanted to have a generic library instead. I thought it was better to open source it, so that's what I've done. Seems that there is not a lot of activity in this project for some time, but I have upgraded the code internally, and I will soon upload a lot of code, and bump version to 0.2. I perfectly understand that this project is not very relevant now that the &lt;a href="https://appframework.dev.java.net/"&gt;Appframework&lt;/a&gt; and the associated JSR have been created, and the relevant code integrated in Netbeans. But I used my own library before this existed, and it is not always easy to switch to another framework. Maybe I will do it in a little while...&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="https://mdiutilities.dev.java.net/"&gt;MDIUtilities&lt;/a&gt;, which is a utility library with various classes in the swing, IO, geometry, etc... fields. There's tons of other libraries in the open, but it is not always easy when all you want is a small library to provide utility classes. Sometimes you could end-up with tons of different libraries, for which you only use few classes.&lt;/li&gt;   &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;And now, for possible new directions:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;A Java port of &lt;a href="http://www.povray.org/"&gt;Povray&lt;/a&gt;. There's a problem with the license (Povray began when GPL did not even exist, so it's not really open source for now, even if they will maybe distribute the next version under a GPLv3 license), but at least I may never begin this work, and I still could give it to the Povray team. I would really like to benchmark the Java version against the C reference. Even if I know that the C version will be faster than the Java one, the question is to what extend ?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Perl on Java, to be able to reuse simple Perl scripts in the Java world. There is already a language called &lt;a href="http://sleep.hick.org/"&gt;Sleep&lt;/a&gt; (in LGPL) which does even more than that, so I think that could be "easy" (just kidding)&lt;/li&gt; &lt;br /&gt;&lt;li&gt;The same thing for C (what, C ?), also using &lt;a href="https://jna.dev.java.net/"&gt;JNA&lt;/a&gt; to leverage legacy C libraries. What would be wonderful would be to be able reuse small C programs as scripts (or even compiled code, but here I'm dreaming) in the Java world without even have to bother with compilation options, and also to be able to debug &lt;b&gt;much much much much&lt;/b&gt; more easily (dynamic allocation, pointers, etc...). But I'm sure this one would not be an easy one&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.ode.org/"&gt;Open Dynamic Engine&lt;/a&gt; ported to Java. It would be interesting, for example to use it with a Java game engine such as &lt;a href="http://www.jmonkeyengine.com/"&gt;JMonkey Engine&lt;/a&gt; (which already is able to do fabulous things)&lt;/li&gt;  &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;But for now, I will have to send patches to the &lt;a href="http://xmlgraphics.apache.org/batik"&gt;Batik&lt;/a&gt; Java library (the most conformant SVG library, I think). Patches will be in the area of WMF to SVG conversion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-956695427931258256?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/956695427931258256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=956695427931258256' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/956695427931258256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/956695427931258256'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2008/05/new-projects.html' title='New projects ?'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-4889802864897405063</id><published>2008-02-09T06:33:00.001-08:00</published><updated>2008-02-10T03:04:16.232-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>On Microsoft and Open Source</title><content type='html'>OK, I'm not really what you can call a Microsoft fan. Not really... But everyday I encounter new evidences that I'm right. What bothers me is that some people have a tendency to take MS marketing "as it is", and it is often not completely accurate, to say the least.&lt;br /&gt;&lt;br /&gt;A new example: The &lt;a href="http://en.wikipedia.org/wiki/Dynamic_Language_Runtime"&gt;Dynamic Language Runtime&lt;/a&gt;. &lt;br /&gt;It is an ongoing effort to ease implementation of dynamic languages (like Python, Ruby, ...) on top of the .NET Framework. When you read articles on the web (for example, see &lt;a href="http://arstechnica.com/news.ars/post/20070430-microsoft-reveals-dynamic-language-runtime-for-net.html"&gt;here&lt;/a&gt;), you are under the impression that it is up and running, but... the code currently lives in the &lt;a href="http://www.codeplex.com/IronPython"&gt;IronPython&lt;/a&gt; repository and the developers  plan to release the first 1.0 version by the end of the year. I'm not saying that this project is not exciting (hmm, i'm not excited...), but people should wait a little before  writing things like &lt;i&gt;Microsoft developers have already been able to build implementations of Python, Ruby, Javascript, and Visual Basic that can run on the DLR&lt;/i&gt;, when these are planned for the end of the year (IronPython), currently in the pre-alpha stage (IronRuby), or planned for the future (VBx).&lt;br /&gt;&lt;br /&gt;Update  February 10: After a discussion with &lt;a href="http://www.voidspace.org.uk/python/weblog/index.shtml"&gt;fuzzyman&lt;/a&gt;, I feel I need to update this a little. I said that I needed to see successful non-Microsoft projects built on top of DLR to say that DLR have succeeded. He pointed that there were more than Microsoft projects on the go, for example &lt;a href="http://www.codeplex.com/Nua"&gt;IronLUA&lt;/a&gt;, or &lt;a href="http://www.codeplex.com/Nua"&gt;IronScheme&lt;/a&gt;. I must agree that people are expecting a lot from the DLR, and starting to use it in their projects, but neither IronLUA or IronScheme are close to completion yet (which is normal, considering that they still have a lot to do to implement their respective languages, and also that the DLR API is still far from stable). &lt;br /&gt;&lt;br /&gt;This is not only a formal discussion for me, because the idea behind the DLR is that it is possible to abstract &lt;a href="http://en.wikipedia.org/wiki/Abstract_syntax_tree"&gt;AST&lt;/a&gt; to be able to use them in ANY dynamic language. I am very coutious because this very same assumption was made before with the &lt;a href="http://en.wikipedia.org/wiki/Common_Language_Runtime"&gt;CLR&lt;/a&gt;, which was said to be really language-agnostic, and (contrary to the &lt;a href="http://en.wikipedia.org/wiki/JVM"&gt;JVM&lt;/a&gt;) could be used to implement ANY language. It turned out that it was no more the case for .NET than for Java (and no less, I agree), and languages built on top of CLR were often slightly different from their reference. So, just one last word for DLR: Wait and see... I can be wrong, but if we go back to the beginning, we are far from saying that it's done.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-4889802864897405063?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/4889802864897405063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=4889802864897405063' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/4889802864897405063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/4889802864897405063'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2008/02/on-microsoft-and-open-source.html' title='On Microsoft and Open Source'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-2074461673501805484</id><published>2008-01-19T02:46:00.000-08:00</published><updated>2008-01-19T03:09:34.317-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>News news</title><content type='html'>OK, my PC is repaired now and kick ass (since December). I had to replace the defunct hard drive by  new one, in perfect shape, and with 160 GB instead of just 60 for the old malfunctioning one ;-). Plus I added some memory. So this is all right now thanks. Except that I had to reinstall all my apps, and tried to find copies (even old ones) of things I had only  on this PC...&lt;br /&gt;&lt;br /&gt;As for development news, I will shortly upload the version 0.2 my &lt;a href="https://mdiframework.dev.java.net/"&gt;Application Framework library&lt;/a&gt;. OK, maybe you think that it values very little in front of Sun's &lt;a href="https://appframework.dev.java.net/"&gt;appframework&lt;/a&gt; an you may be true, but I developed this library before we heard of appframework, it helped me to not reinvent the wheel for my own applications every time, and now it would be some work to adapt all my apps to this new framework, even if it is better. However, I will surely do that at the end, but for now I have no reason not to maintain my own library. And that's what is great about Java, you have the liberty to choose amongst several ready-made solutions for any of your needs ;-) Even if you are not interested, you should know that the actual version of this library is working well, I'm using it in approx. 7 to 10 of my own apps... OK, no more advertising.&lt;br /&gt;&lt;br /&gt;What I would like to do (in the area of development) for the new year (and probably I will never do) is:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;A Perl interpreter coded in Java, going from the &lt;a href="http://sleep.hick.org/"&gt;Sleep&lt;/a&gt; language&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A &lt;a href="http://www.povray.org/"&gt;POV-Ray&lt;/a&gt; port in Java. No need for now to bother about license, because I will probably never have something good or complete enough to be able to C compiler or interpreter coded in Java, would be great to be able to debug C applications with the Java debugger&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A pure-Java port of the &lt;a href="http://www.ode.org/"&gt;Open Dynamics Engine&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A SVG to &lt;a href="http://en.wikipedia.org/wiki/Windows_Metafile"&gt;WMF&lt;/a&gt; converter built on top of &lt;a href="http://xmlgraphics.apache.org/batik/"&gt;Batik&lt;/a&gt;, the pure-Java &lt;a href="http://en.wikipedia.org/wiki/Scalable_Vector_Graphics"&gt;SVG&lt;/a&gt; library. I have almost something working now, so this one could be done for this year&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;What interests me in Java ports of big libraries like ODE or POV-Ray, apart from the "because it's fun" reason, is the fact that it should be interesting to have an idea of the performance difference between the original C or C++ app performance and Java ;-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But as you can see, these are mainly dreams for the new year. Not that it is not possible to do, but because I have a lot of other things to do, and this would involve a lot of work...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-2074461673501805484?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/2074461673501805484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=2074461673501805484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/2074461673501805484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/2074461673501805484'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2008/01/news-news.html' title='News news'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-5367808630310039256</id><published>2007-11-11T12:01:00.000-08:00</published><updated>2007-11-11T14:32:23.150-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Windows Install : Bad news</title><content type='html'>hmm, it seems that my Hardrive is sort of dead. It now says "S.M.A.R.T status BAD", and exit the boot sequence, even when I try to boot on the CD... No good at all...&lt;br /&gt;&lt;br /&gt;I tried to boot on the Windows install CD, and copy the Hard Drive to an external disk, but at first the Drive was not even recognized. I then tried to disable (temporarily) SMART in the BIOS, and it boots, but when it seems to never enter into Recovery, the CD seems to not work at all anymore..&lt;br /&gt;&lt;br /&gt;There is a high chance that I will not even be able to backup my files to my external removable drive. Even if there are few files I have only on this hard drive, I'm sure there's some...&lt;br /&gt;&lt;br /&gt;Plus I worked part of the Week-end to finish some very important programming work, I have almost finished, but it's on the Hard drive...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Update (23:00) :&lt;/b&gt;&lt;/i&gt; After numerous attempts, I found a fantastic utility program called &lt;a href="http://www.ubcd4win.com/contents.htm"&gt;UBCD&lt;/a&gt;. It's a Linux tool (a Windows version is available, but is not up-to-date), but it's not a problem when even your OS can't boot... So I booted on a CD created with UBCD's ISO image. Their is a collection of utilities, and some of them are able to recover hard disks failures... (like with late floppy disks). Using it, I was able to reformat the hard drive (quick reformat, I hope to be able to get back some datas after all this mayhem), and launch the XP installation program. Only time will tell if it will work at the end.&lt;br /&gt;&lt;br /&gt;However, I will try another tool (called gdbfn) after that. This tool is seemingly able to recover datas on a hard disk, even after a quick reformat... hmm, and after all that, even if it works, I think I will need to change my laptop... I'm still on SMART option disabled, after all, this is not very good, don't you think ?&lt;br /&gt;&lt;br /&gt;I'm doomed !!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-5367808630310039256?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/5367808630310039256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=5367808630310039256' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/5367808630310039256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/5367808630310039256'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2007/11/windows-install-bad-news.html' title='Windows Install : Bad news'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-6898513589369936225</id><published>2007-11-11T08:59:00.000-08:00</published><updated>2007-11-11T09:19:13.670-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Windows XP reinstall</title><content type='html'>Hmm, it is the second time I have to repair the Windows XP installation on my laptop (I'm blogging on my old, old old Windows ME PC). &lt;br /&gt;&lt;br /&gt;The first time it was a problem with the file performing the boot (I don't remember its name). It suddenly appeared as a user file directly under C:\ (it was NOT considered by Windows as a system file, nor was it masked) Sure it was a problem with my Windows installation, because it should never be there, and never be visible by default.And But once I made a BIG BIG mistake, I deleted it... Of course, I could not boot anymore. The reinstalling process was not so simple, because when you phone to the Microsoft help center, which is on the XP box, they just tell you to look on Internet. Hmm, how do you do that if your PC does not want to boot (I was in my mother's appartment, and did not have access to internet) ? Typical of MS$ attitude toward customers :-(&lt;br /&gt;OK I could fix that at the end (by myself, no help at all from Microsoft).&lt;br /&gt;&lt;br /&gt;This time the PC (which is almost never connected, I'm using my older PC for that) crashed while doing nothing in particular, and crashed again repeatedly after that (hello happy blue screen, and hello again, and again, and again...). After a while, Windows changed the boot sequence itself (while not, isn't it funny ?), trying to boot on the USB device (seems to happen a lot with XP, my cousins had exactly the same problem with their PC).&lt;br /&gt;&lt;br /&gt;You probably would tell me that at this point, a reinstallation was the only thing to do... You are right, of course. But reinstalling Windows is not always simple. First you must be aware that you have to type ENTER as new Install, and not R as Repairing, even if you only want to repair the previous installation (tell me if you understand anything).&lt;br /&gt;OK, and after that Windows try to install on \WINDOWS, yes, not C:\WINDOWS, but just \WINDOWS, a directory which does not exist. So you have to change manually the installation directory...&lt;br /&gt;&lt;br /&gt;I'm just at this point now :-(. Windows sucks a lot !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-6898513589369936225?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/6898513589369936225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=6898513589369936225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/6898513589369936225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/6898513589369936225'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2007/11/windows-xp-reinstall.html' title='Windows XP reinstall'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-2815187623879794780</id><published>2007-10-27T05:35:00.000-07:00</published><updated>2007-10-27T05:55:10.469-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>On .NET</title><content type='html'>OK, I personally prefer Java over .NET, maybe because I used it for some time now, so it's easier for me to understand it.&lt;br /&gt;&lt;br /&gt;But I don't understand this hype (mainly on the net) about all these new Microsoft technologies. For example .NET is almost described as cross-platform and freely available. But think about it twice, guys:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Only the core part of .NET is an ECMA standard, free from Microsoft patents. Much of the "cool" parts (and much of the base class library) are patented Microsoft technologies, that can not be implemented freely. Mono implements much more than only the core part of this technology (you can do nothing with only the core), but according to the &lt;a href="http://en.wikipedia.org/wiki/Mono_%28software%29"&gt;Microsoft - Novell agreement&lt;/a&gt;, you can use Mono freely only on Suse.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;People say that .NET is now available on Linux as well as Windows because of Mono, but the Mono team (even if they did some great work) have not implemented all .NET 2.0 yet. .NET 3.0 is available since end of 2006, and .NET 3.5 will ship beginning of 2008. So much for the cross-platform stance...&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Microsoft_Silverlight"&gt;Silverlight&lt;/a&gt; is a new runtime to build rich-internet client applications... but it is bound to a specific Microsoft technology. I don't like flash very much for the same reason...&lt;/li&gt;&lt;br /&gt;&lt;li&gt;And as for &lt;a href="http://en.wikipedia.org/wiki/XAML"&gt;XAML&lt;/a&gt;, it does what &lt;a href="http://en.wikipedia.org/wiki/SVG"&gt;SVG&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/XUL"&gt;XUL&lt;/a&gt; already did, but it is another specific (they even defined different keywords for the same concepts). And try to find the XAML specification in the Web, you will find it very hard, because there is none.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;This list could go on an on... And in the same time, people are saying that Java is not free because 4% of the encumbered JVM code has still to be freed by Sun...&lt;br /&gt;&lt;br /&gt;As for me, I will still stay away from all these specific technologies...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-2815187623879794780?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/2815187623879794780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=2815187623879794780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/2815187623879794780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/2815187623879794780'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2007/10/on-net.html' title='On .NET'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-7674114403915425918</id><published>2007-07-21T05:49:00.001-07:00</published><updated>2007-07-21T06:15:56.871-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><title type='text'>Web 2.0 considered harmful</title><content type='html'>Shocking title. It's just that we have begun at work to develop a web 2.0-ish app, mostly to experiment technologies for a particular type of application.&lt;br /&gt;&lt;br /&gt;Well, I agree that Ajax + DHTML + Javascript can be powerful, and deliver a great user-experience, but I must also say that these technologies are not easy to implement:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;html + Javascript does not work the same on different browsers (at all !!). We were lucky to have only to support Firefox, but supporting also IE6 + IE7 can be a nightmare. When you want to do dynamic html, never, NEVER expect behaviors to work as you expected at first (you will end with a long, long litany of if-then-else depending on the browser).&lt;/li&gt; &lt;br /&gt;&lt;li&gt;there is no simple ways to add simple widgets that work out of the box. Even if you want to add such basic things as scrolling, sliders, etc.. you need to use third parties Javascript libraries. There are not so many free ones out on the web, they are not so easy to implement, and when they are not working as expected, it is not so simple to debug (even with wonderful add-ons like &lt;a href="http://www.getfirebug.com/"&gt;Firebug&lt;/a&gt;).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Javascript is a limited language, and its behavior depends on the browser. For example, hastables in Javascript are extremely limited, and their behavior depends on the browser too.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;I really don't understand why people always say that Web 2.0 is so much the future that it will kill fat clients. OK, you can achieve great UI results, but saying that it is simple to do is a lie, and one can not say that browsers are thin apps. The only thing that is simple, compared with languages like Java for example, is the fact that you never have to compile anything.&lt;br /&gt;&lt;br /&gt;OK, you will say: try &lt;a href="http://en.wikipedia.org/wiki/Apollo_%28Adobe%29"&gt;Apollo&lt;/a&gt;, or &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Silverlight"&gt;Silverlight&lt;/a&gt;, this is the next move in internet programming. Humm, I will try these some days, but I would say : &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;all these frameworks are still Beta, so I think it can be better for the moment to experiment, but wait a little for something more stable&lt;/li&gt;&lt;br /&gt;&lt;li&gt;these frameworks are relying on some proprietary technologies (Apollo relies &lt;a href="http://en.wikipedia.org/wiki/Adobe_Flash"&gt;Flash&lt;/a&gt;, a proprietary technology from Adobe, and Silverlight is Microsoft-proprietary&lt;/li&gt;&lt;br /&gt;&lt;li&gt;there is already Java (+ Web Start), and XUL, why not using what is already working for some time now ?&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-7674114403915425918?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/7674114403915425918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=7674114403915425918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/7674114403915425918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/7674114403915425918'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2007/07/web-20-considered-harmful.html' title='Web 2.0 considered harmful'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-5267533949656748482</id><published>2007-05-28T13:31:00.001-07:00</published><updated>2007-05-29T17:48:55.087-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Performance of Batik under Java 6.0</title><content type='html'>As I use it a lot, I tried to measure the possible boost of performance of &lt;a href="http://en.wikipedia.org/wiki/Batik_%28software%29"&gt;Batik&lt;/a&gt;, the pure Java library which handle &lt;a href="http://en.wikipedia.org/wiki/Scalable_Vector_Graphics"&gt;SVG&lt;/a&gt; files, under Java SE 6.0, compared to Java 5.0. I decide to create a small benchmark, similar to the one &lt;a href="http://jroller.com/page/dgilbert?entry=is_java_se_1_6"&gt;Dave Gilbert&lt;/a&gt;, the creator and maintainer of &lt;a href="http://www.jfree.org/jfreechart/"&gt;JFreeChart&lt;/a&gt;, did, some times ago. &lt;br /&gt;&lt;br /&gt;To make it simple, I decided to benchmark the time spent by Batik from the parsing of the SVG file, to the rendering of the associated image on a JFrame. To measure the performance, I call the method 100 times (yes, maybe not enough times), and measure the elapsed time.&lt;br /&gt;&lt;br /&gt;Finding good SVG images is not so simple, because time is not only linked to the size of the file, but also to what it contains (for example, complex renderings like gradients take much more time to compute).&lt;br /&gt;&lt;br /&gt;And of course, I used Batik 1.7 Beta 1 and rebuilt it for Java 5.0, then 6.0, before  doing all this.&lt;br /&gt;&lt;br /&gt;Here are the results on my XP box:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1_PP8iWmZRI/RlzJ3jYbILI/AAAAAAAAAEY/Y8HkGn8KMeQ/s1600-h/Perfos.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_1_PP8iWmZRI/RlzJ3jYbILI/AAAAAAAAAEY/Y8HkGn8KMeQ/s320/Perfos.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5070149236740006066" /&gt;&lt;/a&gt;&lt;br /&gt;Average performance boost is approx. 20%, this is good !!&lt;br /&gt;&lt;br /&gt;For some more informations about the different SVG files that were used, they are all coming from the Batik samples library. You can get these samples either by downloading the snapshot &lt;a href="http://xmlgraphics.apache.org/batik/download.cgi#distributon"&gt;here&lt;/a&gt;, or much simpler by getting them from the SVN viewer on the trunk &lt;a href="http://svn.apache.org/viewvc/xmlgraphics/batik/trunk/samples/"&gt;here&lt;/a&gt;. For more informations about them:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;asf-logo size is 100 Ko, and it uses a lot of gradients&lt;/li&gt;&lt;br /&gt;&lt;li&gt;batik3D size is 104 Ko&lt;/li&gt;&lt;br /&gt;&lt;li&gt;anne size is 86 Ko&lt;/li&gt;&lt;br /&gt;&lt;li&gt;strokeFont size is 70 Ko&lt;/li&gt;&lt;br /&gt;&lt;li&gt;moonPhases is 95 Ko, and uses a lot of gradients&lt;/li&gt;&lt;br /&gt;&lt;li&gt;sunRise is 67 Ko, and uses a lot of gradients&lt;/li&gt;&lt;br /&gt;&lt;li&gt;mapWaadt is 260 Ko&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;If we skip those which use gradients, and the big mapWaadt image, the boost is closer to 35%. Not bad...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-5267533949656748482?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/5267533949656748482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=5267533949656748482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/5267533949656748482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/5267533949656748482'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2007/05/performance-of-batik-under-java-60.html' title='Performance of Batik under Java 6.0'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1_PP8iWmZRI/RlzJ3jYbILI/AAAAAAAAAEY/Y8HkGn8KMeQ/s72-c/Perfos.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-6211397285819925474</id><published>2007-03-11T03:31:00.000-07:00</published><updated>2007-03-11T04:01:05.725-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>First real post</title><content type='html'>OK, so here is the first real post of this blog. Humm, but about what ? OK, let's dive in.&lt;br /&gt;&lt;br /&gt;As you surely don't know, I created an open source project on &lt;a href="http://java.net/"&gt;java.net&lt;/a&gt; called &lt;a href="https://mdiframework.dev.java.net/"&gt;MDIFramework&lt;/a&gt;. This is a full java framework for easing the creation of multithreaded swing applications.&lt;br /&gt;&lt;br /&gt;When you create an application, you soon discover that :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;you need to execute the lengthy methods in separate threads to avoid "freezing" of the GUI, but then, it quickly becomes a nightmare to deal correctly with the communication between the main &lt;a href="http://en.wikipedia.org/wiki/Event_Dispatch_Thread"&gt;event thread&lt;/a&gt;, an even using &lt;a href="http://en.wikipedia.org/wiki/SwingWorker"&gt;SwingWorker&lt;/a&gt; is not enough (for example, what to do if you want to be sure that two actions launched by the user will be executed one after another, for example ?)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You would like to ease the configuration of the application, an store it in the most automatic way when you close&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You want to deal with several types of files in the application, each providing different possible actions, so you would like to have some sort of metadatas associated with each opened file&lt;/li&gt;&lt;br /&gt;&lt;li&gt;And what if you want to be able to use easily plugin with your application ?&lt;/li&gt;   &lt;/ul&gt;So as I always copied and pasted the same sort of code to do the things above, I created this framework.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1_PP8iWmZRI/RfPd201bS2I/AAAAAAAAADw/pANhho2DumU/s1600-h/mdiframework.jpg"&gt;&lt;img style="margin: 0px auto; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_1_PP8iWmZRI/RfPd201bS2I/AAAAAAAAADw/pANhho2DumU/s320/mdiframework.jpg" alt="" id="BLOGGER_PHOTO_ID_5040616341923122018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;If you are interested, go check to tutorials &lt;a href="https://mdiframework.dev.java.net/docs//tutorial.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;By the way, &lt;a href="http://www.jcp.org/en/jsr/detail?id=296"&gt;JSR 296&lt;/a&gt; is already an upcoming Java &lt;a href="http://en.wikipedia.org/wiki/JSR"&gt;JSR&lt;/a&gt; that aim to provide a simple application framework for Swing applications. I did not knew that when I created my project (but also JSR 296 is still very young), but I think that what this JSR provides (you can check the still evolving open source implementation &lt;a href="https://appframework.dev.java.net/"&gt;here&lt;/a&gt;) is different. I should try it, and maybe add some JSR 296 capabilities to my own framework... (yes I know, why recreating the wheel when it is already existing ?).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-6211397285819925474?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/6211397285819925474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=6211397285819925474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/6211397285819925474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/6211397285819925474'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2007/03/first-real-post.html' title='First real post'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1_PP8iWmZRI/RfPd201bS2I/AAAAAAAAADw/pANhho2DumU/s72-c/mdiframework.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1203686428020253441.post-4023245346965635805</id><published>2007-03-10T08:17:00.000-08:00</published><updated>2007-03-10T08:43:55.655-08:00</updated><title type='text'>First post in another world</title><content type='html'>Hello !!&lt;br /&gt;&lt;br /&gt;I have already another blog on this address : &lt;a href="http://rimmedwithfire.blogspot.com/"&gt;http://rimmedwithfire.blogspot.com/&lt;/a&gt;, much, much more metallic than this one... but I would like to blog from time to time about programming, open source stuff, and things like that, so I choose to create this another one.&lt;br /&gt;&lt;br /&gt;Hope it will be updated regularly (this is the case for the moment for my another blog).&lt;br /&gt;&lt;br /&gt;See you !!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1203686428020253441-4023245346965635805?l=incanusonrails.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incanusonrails.blogspot.com/feeds/4023245346965635805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1203686428020253441&amp;postID=4023245346965635805' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/4023245346965635805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1203686428020253441/posts/default/4023245346965635805'/><link rel='alternate' type='text/html' href='http://incanusonrails.blogspot.com/2007/03/first-post-in-another-world.html' title='First post in another world'/><author><name>mithrandir</name><uri>http://www.blogger.com/profile/10421999778934143599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp3.blogger.com/_1_PP8iWmZRI/RaD79P-hBXI/AAAAAAAAAAU/QfGjwVcDq4g/s200/profile.jpg'/></author><thr:total>0</thr:total></entry></feed>
