<?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-13578244</id><updated>2011-10-10T18:50:55.477+01:00</updated><category term='gnustep'/><category term='hack'/><category term='dynabook'/><category term='talk'/><category term='newton'/><category term='programming'/><category term='smalltalk'/><category term='nokia 770'/><category term='music'/><category term='fosdem'/><category term='geek'/><category term='gorm'/><category term='demo'/><category term='cocoa'/><category term='objective-c'/><category term='cool'/><category term='photo'/><category term='ukuug'/><category term='NeXT'/><category term='steptalk'/><category term='summer of code'/><category term='phd thesis'/><category term='video'/><category term='iliad iRex'/><category term='copyleft'/><category term='london'/><category term='étoilé'/><category term='screenshots'/><category term='rant'/><category term='google'/><title type='text'>Random thoughts of a Camaelon</title><subtitle type='html'>programming stuff, free software and gnustep things.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>84</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-13578244.post-1775631690014772258</id><published>2009-10-19T14:23:00.002+01:00</published><updated>2009-10-19T14:55:40.857+01:00</updated><title type='text'>Some work on GNUstep theme support...</title><content type='html'>Quentin came to visit london this weekend, and he thus forced^H^H^H^H^H^Hconvainced me to work again on gnustep, on the theming support. GNUstep had the possibility to use themes using my theme bundle, Camaelon. But this had some technical issues (though we do use it in &lt;a href="http://www.etoileos.com"&gt;Étoilé&lt;/a&gt;), mostly that it's easy for Camaelon to be out of sync with the current GNUstep implementation. Richard Frith-Macdonald has thus started to implement some theme support directly into GNUstep, and even wrote a theming application to help creating themes. But the support is still limited -- you can change images, colors, and the drawing of some widgets but not all.&lt;br /&gt;&lt;br /&gt;Anyway, what I did this weekend was quite a bit of refactoring in the theming code dealing with pixmaps -- things should be much clearer now. I also added an implementation for &lt;a href="http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch"&gt;Nine Patch&lt;/a&gt; pixmaps, which basically makes creating custom themes a lot more simple. For example, the following content in a theme's Info-gnustep.plist will be enough -- no need to have multiple files as with Camaelon, no need to measure things...&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;GSThemeTiles = {&lt;br /&gt;  NSButton = {&lt;br /&gt;    NinePatch = YES;&lt;br /&gt;    FileName = NSButton.tiff&lt;br /&gt;  };&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;With a button made in five minutes of Gimp work (as can be seen!):&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/screenshots/NSButton.png"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;An example of the result:&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/screenshots/screenshot_theme_nine-patch.png"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-1775631690014772258?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/1775631690014772258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=1775631690014772258' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/1775631690014772258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/1775631690014772258'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2009/10/some-work-on-gnustep-theme-support.html' title='Some work on GNUstep theme support...'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-1133449652659387441</id><published>2009-07-06T08:32:00.000+01:00</published><updated>2009-07-06T08:32:00.835+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='smalltalk'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>New website</title><content type='html'>I finally took the time to redo my &lt;a href="http://www.roard.com"&gt;website&lt;/a&gt; properly :)&lt;br /&gt;&lt;br /&gt;Obviously, I had to use &lt;a href="http://www.seaside.st"&gt;Seaside&lt;/a&gt;, and as I did play with &lt;a href="http://www.piercms.com"&gt;Pier&lt;/a&gt; some time ago, this looked like a good fit.&lt;br /&gt;&lt;br /&gt;For those who do not know, Seaside is the best web application server I know of -- it really is something when you want to quickly write extremely complex sites or webapps. Pier is a CMS developped on top of Seaside, which provides a wiki system amongst other things.&lt;br /&gt;&lt;br /&gt;The new theme is also frankly much better than my previous one -- it's actually nearly exactly the same as the default Pier theme, but hey, I really like it, and it _is_ cleaner :)&lt;br /&gt;&lt;br /&gt;The site also automatically pull the last posts from this blog as well as my last commits and some recent twitter posts, and display all this as the main page.&lt;br /&gt;&lt;br /&gt;Finally, one thing that wasn't great on the previous site was the pictures section; I resumed some earlier work I did on a Pier component (Pier Gallery) and cleaned it up to get what's shown now... more on that in a next post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-1133449652659387441?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/1133449652659387441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=1133449652659387441' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/1133449652659387441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/1133449652659387441'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2009/07/new-website.html' title='New website'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-7551069260871893019</id><published>2009-06-29T22:07:00.006+01:00</published><updated>2009-06-29T23:49:43.904+01:00</updated><title type='text'>Automating DxO FilmPack (OSX)</title><content type='html'>&lt;a href="http://www.dxo.com/en/photo/filmpack"&gt;DxO FilmPack&lt;/a&gt; is an awesome set of filters for your pictures, rendering them using classic films -- not just the colors, but the grain as well. It is available either as a standalone application or as a Photoshop plugin. &lt;br /&gt;&lt;br /&gt;As an example of what FilmPack can do, here's one picture I took, first the original, then two filtered:&lt;br /&gt;&lt;br /&gt;Original:&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/pier39.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/pier39_small.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Fuji Superia 200:&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/pier39_fuji.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/pier39_fuji_small.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Ilford Pan F Plus 50:&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/pier39_ilford.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/pier39_ilford_small.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;But even though it's really, really cool... it has a rather annoying limitation in its standalone version: you cannot apply a filter to a set of images, you have to apply it image by image. Of course, this might be all you need; but for my part, I would love selecting a type of filter I like and apply it on an entire set of pictures, as if I did shoot them using a film camera.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Hack it&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;Here is how you can do it, using a mixture of bash and AppleScript. Honestly, this is a hack -- it would be great for it to be integrated in FilmPack directly! but in the meantime, this can be useful... &lt;br /&gt;&lt;br /&gt;As expected, the programmers did not bother to provide a scripting interface, so you seemingly cannot script it (it would have been useful for such a program with potential repetitive action, don't you think?). &lt;br /&gt;&lt;br /&gt;Or can you ? It turns out that OSX has a rather nifty feature that allow near-global scripting: you can have access to all the GUI objects shown on screen, query their states, etc. It is not active by default -- you need to go (in the System Preferences) to "Universal Access" and click on "Enable access for assistive devices".&lt;br /&gt;&lt;br /&gt;So, we starts with a bash script (we can call it "convert.sh"):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;for i in `ls *.JPG`;&lt;br /&gt; do /Applications/DxO\ FilmPack\ 2.app/Contents/MacOS/DxO\ FilmPack\ 2 $i &amp; osascript ./filmpack.script; done&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This will, for each jpeg files in the current directory, open the &lt;b&gt;binary executable&lt;/b&gt; of FilmPack and passing it the current jpeg as a parameter ($i). Doing this has for effect to start FilmPack and automatically load the image passed. Finally, as soon as FilmPack is started, we execute the &lt;i&gt;filmpack.script&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;This &lt;i&gt;filmpack.script&lt;/i&gt; is a simple AppleScript:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;tell application "System Events"&lt;br /&gt;        tell process "DxO FilmPack 2"&lt;br /&gt;                get enabled of menu item "Save As..." of menu 1 of menu bar item "File" of menu bar 1                &lt;br /&gt;                set frontmost to true&lt;br /&gt;                click menu item "Save As..." of menu 1 of menu bar item "File" of menu bar 1&lt;br /&gt;                click button "Save" of sheet 1 of window "DxO FilmPack 2"&lt;br /&gt;                click menu item "Quit DxO FilmPack 2" of menu 1 of menu bar item "DxO FilmPack 2" of menu bar 1&lt;br /&gt;        end tell&lt;br /&gt;end tell&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This script asks the FilmPack application to save the current opened image, and to quit the application.&lt;br /&gt;&lt;br /&gt;The only notable trick here is the "get enabled" line -- by asking AppleScript if the "Save As..." menu item is enabled, AppleScript will actually block until it can read the value, which makes the whole operation as fast as can be (no need for a sleep somewhere to wait until FilmPack is fully loaded and/or has applied the filter to the image).&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Use it&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;Now, how to use it? well, let's say you have a directory &lt;b&gt;Pictures&lt;/b&gt; containing your pictures. You can copy in that directory both &lt;i&gt;convert.sh&lt;/i&gt; and &lt;i&gt;filmpack.script&lt;/i&gt; (or alternatively put those files in some default path). Then the last thing you have to do is to "configure" FilmPack once -- it will then remember the settings for the next time it is used. The easiest way to do this is thus to start FilmPack, open one of your picture, choose what kind of filtering you want to do, then &lt;b&gt;save&lt;/b&gt; where you want all the pictures to be saved. Then quit FilmPack, and run &lt;i&gt;convert.sh&lt;/i&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-7551069260871893019?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/7551069260871893019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=7551069260871893019' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/7551069260871893019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/7551069260871893019'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2009/06/automating-dxo-filmpack-osx.html' title='Automating DxO FilmPack (OSX)'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-4359148383479241035</id><published>2009-02-06T23:16:00.009Z</published><updated>2009-02-06T23:25:09.982Z</updated><title type='text'>Interview Étoilé</title><content type='html'>&lt;a href="http://www.linuxmag-france.org/feuille_lpe6/index.html"&gt;&lt;img src="http://www.linuxmag-france.org/feuille_lpe6/damag-000024.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Me and Quentin were interviewed a few weeks ago by a french linux magazine (&lt;a href="http://www.linuxmag-france.org/"&gt;Linux Pratique Essentiel&lt;/a&gt;), about &lt;a href="http://www.etoileos.com"&gt;Étoilé&lt;/a&gt;. The magazine is out this month,  and the &lt;a href="http://www.linuxmag-france.org/feuille_lpe6/index.html"&gt;magazine preview&lt;/a&gt; shows the article, starting page 24 to page 28...&lt;br /&gt;&lt;br /&gt;(note: the title can be translated as "Étoilé, an innovative desktop environment")&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-4359148383479241035?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/4359148383479241035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=4359148383479241035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/4359148383479241035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/4359148383479241035'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2009/02/interview-etoile.html' title='Interview Étoilé'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-6915906848277379581</id><published>2009-02-03T11:31:00.004Z</published><updated>2009-02-03T11:40:43.820Z</updated><title type='text'>Atari</title><content type='html'>Great stories about the creation of the Atari ST: &lt;a href="http://www.dadhacker.com/blog/?p=995"&gt;part 1&lt;/a&gt; and &lt;a href="http://www.dadhacker.com/blog/?p=1000"&gt;part 2&lt;/a&gt;. I still remember fondly the ST, TT030 and Falcons... (The TT030 my dad had still works, afaik). I also remember the huge Megafile 30 on top of the MegaST -- an incredible thirty megabytes of disk space ! Why is it that I am now always short on space :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-6915906848277379581?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/6915906848277379581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=6915906848277379581' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/6915906848277379581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/6915906848277379581'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2009/02/atari.html' title='Atari'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-6312992388114981757</id><published>2009-02-01T22:54:00.005Z</published><updated>2009-02-02T14:19:28.745Z</updated><title type='text'>...and snow in london</title><content type='html'>After the south of France, it's now London's turn...&lt;br /&gt;&lt;br /&gt;It apparently did not snow as much in 18 years -- London is very quiet today!&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/london_snow_2009_1.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/london_snow_2009_1.jpg" width="320px"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/london_snow_2009_2.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/london_snow_2009_2.jpg" width="320px"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;update:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/london_snow_2009_3.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/london_snow_2009_3.jpg" width="320px"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/london_snow_2009_4.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/london_snow_2009_4.jpg" width="320px"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;update2, going to work:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/london_snow_2009_5.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/london_snow_2009_5.jpg" width="320px"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/london_snow_2009_6.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/london_snow_2009_6.jpg" width="320px"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/london_snow_2009_7.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/london_snow_2009_7.jpg" width="320px"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/london_snow_2009_8.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/london_snow_2009_8.jpg" width="320px"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/london_snow_2009_9.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/london_snow_2009_9.jpg" width="320px"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/london_snow_2009_10.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/london_snow_2009_10.jpg" width="320px"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/london_snow_2009_11.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/london_snow_2009_11.jpg" width="320px"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-6312992388114981757?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/6312992388114981757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=6312992388114981757' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/6312992388114981757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/6312992388114981757'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2009/02/and-snow-in-london.html' title='...and snow in london'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-5032278981750430118</id><published>2009-01-07T11:49:00.005Z</published><updated>2009-01-07T14:19:48.894Z</updated><title type='text'>Snow in Provence</title><content type='html'>A friend just sent me this picture:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/marseille_neige_2009.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/marseille_neige_2009.jpg" width="320"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;...taken from her window, near Marseilles, south of France. Impressive isn't it ? highway closed, etc. &lt;br /&gt;&lt;br /&gt;Usually happens every ten years or so :)&lt;br /&gt;&lt;br /&gt;edit: another friend took the following pics:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/marseille_neige_2009_2.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/marseille_neige_2009_2.jpg" width="320"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/marseille_neige_2009_3.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/marseille_neige_2009_3.jpg" width="320"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;edit 2: check that video...&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/B1pD3SKv_CM&amp;hl=en&amp;fs=1"&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/B1pD3SKv_CM&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-5032278981750430118?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/5032278981750430118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=5032278981750430118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/5032278981750430118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/5032278981750430118'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2009/01/snow-in-provence.html' title='Snow in Provence'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-8866853641180821407</id><published>2009-01-05T11:36:00.003Z</published><updated>2009-01-05T11:40:47.127Z</updated><title type='text'>A Modern Objective-C Runtime</title><content type='html'>David just got his paper describing his &lt;a href="http://etoileos.com/news/archive/2007/11/10/2313/"&gt;new Objective-C runtime for etoile&lt;/a&gt; published in the &lt;a href="http://www.jot.fm/issues/issue_2009_01/article4/"&gt;Journal of Object Technology&lt;/a&gt;. Congrats :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-8866853641180821407?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/8866853641180821407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=8866853641180821407' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/8866853641180821407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/8866853641180821407'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2009/01/modern-objective-c-runtime.html' title='A Modern Objective-C Runtime'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-2368316402900504748</id><published>2008-12-11T11:52:00.003Z</published><updated>2008-12-11T12:26:22.234Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='demo'/><category scheme='http://www.blogger.com/atom/ns#' term='cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Mona Lisa video</title><content type='html'>Here is a small video demonstrating the polygons evolution:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/eHWZcPLRMjQ&amp;hl=en&amp;fs=1"&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/eHWZcPLRMjQ&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;(better results should be doable with more time and/or more parameters tweakings)&lt;br /&gt;For this example, I used 50 polygons of at most 16 points, starting with 10 polygons.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-2368316402900504748?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/2368316402900504748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=2368316402900504748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/2368316402900504748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/2368316402900504748'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2008/12/mona-lisa-video.html' title='Mona Lisa video'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-167578157595526355</id><published>2008-12-10T23:50:00.003Z</published><updated>2008-12-11T12:26:53.618Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='objective-c'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Genetic Algorithms and Mona Lisa</title><content type='html'>Genetic Algorithms try to apply evolution mechanisms to find solutions to hard problems (typically, where no "proper" solution is known and where the search area is large).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rogeralsing.com/"&gt;Roger Alsing&lt;/a&gt; posted a couple of days ago an extremely cool &lt;a href="http://rogeralsing.com/2008/12/07/genetic-programming-evolution-of-mona-lisa/"&gt;article&lt;/a&gt; showing the convergence of 50 polygons to represent the Mona Lisa, using a random approach.&lt;br /&gt;&lt;br /&gt;That was too cool to not try to implement it :)&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/mona.png"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/mona.png" width="320"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The screenshot shows a rendering of the Mona Lisa using 50 polygons (16 points each), after 40818 total iterations, with 4577 elected states; the middle image is the original (i.e. the target) and the right image the difference between the current polygon-based image and the target (i.e. a representation of the fitness function).&lt;br /&gt;Underneath was an earlier attempt using ovals instead of polygons.&lt;br /&gt;&lt;br /&gt;Now, to be more exact, Roger Alsing's algo is more a hill climber algorithm or possibly a &lt;a href="http://en.wikipedia.org/wiki/Simulated_annealing"&gt;simulated annealing&lt;/a&gt; algorithm than a good example of a genetic algorithm; it should be interesting to actually implement a proper genetic algorithm approach (i.e. a population &gt; 1) and see how the convergence rate compares... combining polygons and ovals might also result into interesting things.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-167578157595526355?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/167578157595526355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=167578157595526355' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/167578157595526355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/167578157595526355'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2008/12/genetic-algorithms-and-mona-lisa.html' title='Genetic Algorithms and Mona Lisa'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-1785835761726900900</id><published>2008-11-25T15:04:00.006Z</published><updated>2008-11-25T15:36:35.213Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='talk'/><title type='text'>Gregynog 2008</title><content type='html'>&lt;div align='center'&gt;&lt;img src='http://www.swan.ac.uk/compsci/images/gregynog.jpg'&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://www.swan.ac.uk/compsci/teaching/gregynog.html'&gt;Gregynog&lt;/a&gt; is an annual colloquium organized by Swansea University. I was invited to give a talk yesterday about web, webapps and the evolution of web programming. I uploaded the slides &lt;a href='http://www.roard.com/download/slides-gregynog-2008.pdf'&gt;here&lt;/a&gt; (PDF) if you want to have a look.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-1785835761726900900?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/1785835761726900900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=1785835761726900900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/1785835761726900900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/1785835761726900900'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2008/11/gregynog-2008.html' title='Gregynog 2008'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-5109200650313158153</id><published>2008-11-20T14:48:00.004Z</published><updated>2008-11-25T15:12:10.482Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='phd thesis'/><title type='text'>End of an era...</title><content type='html'>&lt;div align='center'&gt;&lt;a href="http://roard.com/images/hardcover-thesis.jpg"&gt;&lt;img width='320px' src="http://roard.com/images/hardcover-thesis-small.jpg"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;A pdf can be downloaded by clicking on the following image:&lt;br /&gt;&lt;br /&gt;&lt;div align='center'&gt;&lt;a href="http://xdev.org/thesis/phd-thesis-nicolas-roard.pdf"&gt;&lt;img width='320px' src='http://xdev.org/thesis/thesis-cover.png'&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-5109200650313158153?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/5109200650313158153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=5109200650313158153' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/5109200650313158153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/5109200650313158153'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2008/11/end-of-era.html' title='End of an era...'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-2493792023290166379</id><published>2008-10-30T11:43:00.002Z</published><updated>2008-10-30T11:55:35.998Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Factor</title><content type='html'>I just watched this talk:&lt;br /&gt;&lt;br /&gt;&lt;div id="center"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/f_0QlhYlS8g&amp;hl=en&amp;fs=1"&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/f_0QlhYlS8g&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;It's a very nice presentation of the &lt;a href="http://www.factorcode.org/"&gt;Factor&lt;/a&gt; language, a mix of Forth / Lisp / Smalltalk -- a higher level Forth. Interestingly, they do have Cocoa bindings...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-2493792023290166379?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/2493792023290166379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=2493792023290166379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/2493792023290166379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/2493792023290166379'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2008/10/factor.html' title='Factor'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-5769139963245061069</id><published>2008-08-20T15:11:00.000+01:00</published><updated>2008-08-20T15:12:05.333+01:00</updated><title type='text'>Done!</title><content type='html'>pending corrections on my thesis, I'm now a Doctor :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-5769139963245061069?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/5769139963245061069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=5769139963245061069' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/5769139963245061069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/5769139963245061069'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2008/08/done.html' title='Done!'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-5062844788325142261</id><published>2008-07-19T18:02:00.002+01:00</published><updated>2008-07-19T18:17:04.984+01:00</updated><title type='text'>Charlie</title><content type='html'>On savait que Philippe Val etait un &lt;a href="http://www.acrimed.org/article2596.html"&gt;con&lt;/a&gt; (souvenez-vous de ses diatribes debiles sur l'internet), mais il &lt;a href="http://afp.google.com/article/ALeqM5hFBMrL5ksMY9XW8c31ZlhdhfdC-g"&gt;persiste&lt;/a&gt; et &lt;a href="http://tempsreel.nouvelobs.com/speciales/medias/medias__pouvoirs/20080718.OBS3420/une_petition_de_soutien_a_sine.html"&gt;signe&lt;/a&gt;. Minable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-5062844788325142261?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/5062844788325142261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=5062844788325142261' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/5062844788325142261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/5062844788325142261'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2008/07/charlie.html' title='Charlie'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-5830426372361308918</id><published>2008-06-19T23:18:00.004+01:00</published><updated>2008-06-20T01:27:44.903+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='demo'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='talk'/><title type='text'>Gears presentation at the Google IO conference</title><content type='html'>The videos from Google IO are &lt;a href="http://sites.google.com/site/io/google-io-sessions"&gt;online&lt;/a&gt;, so if you wonder what I'm working on at Google, here is a &lt;a href="http://sites.google.com/site/io/google-gears-for-mobile-power-up-your-mobile-web-app"&gt;nice presentation of Gears for Mobile&lt;/a&gt;, by Charles and Andrei:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/nEgynWIKzSY"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/nEgynWIKzSY" type="application/x-shockwave-flash" wmode="transparent" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sites.google.com/site/io/google-gears-for-mobile-power-up-your-mobile-web-app"&gt;Slides are also available&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-5830426372361308918?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/5830426372361308918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=5830426372361308918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/5830426372361308918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/5830426372361308918'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2008/06/gears-presentation-at-google-io.html' title='Gears presentation at the Google IO conference'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-1429009062234826389</id><published>2008-05-16T18:33:00.003+01:00</published><updated>2008-05-24T12:47:15.204+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='london'/><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='talk'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>OpenSource Jam &amp; Literate Programming</title><content type='html'>&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/files/literate-programming.pdf"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/files/literate-programming.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I gave a short talk yesterday about LP at the &lt;a href="http://osjam.appspot.com/"&gt;OpenSource Jam&lt;/a&gt; (bi-mensual open source meeting, at the Google London Office). So, here is the pdf of the presentation (just click on the above image to get it). People seemed to like the talk, and there was some interesting comments about the lack of good documentation tools (particularly, the need for multi-level documentations), the similarity with DSL, and some in-house LP tools used by some companies.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;update:&lt;/b&gt; A &lt;a href="http://google-opensource.blogspot.com/2008/05/london-open-source-jam-8.html"&gt;blog post&lt;/a&gt; describing the event and &lt;a href="http://picasaweb.google.com/osjamgroup/LondonOSJam2008May"&gt;pictures&lt;/a&gt; have been posted by the open source team...&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/osjamgroup/LondonOSJam2008May/photo#5203225766575255010"&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/osjamgroup/SDWSRE7greI/AAAAAAAAAFU/L9IA1lnHFCM/photo%204.jpg?imgmax=400"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-1429009062234826389?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/1429009062234826389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=1429009062234826389' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/1429009062234826389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/1429009062234826389'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2008/05/opensource-jam-literate-programming.html' title='OpenSource Jam &amp; Literate Programming'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/osjamgroup/SDWSRE7greI/AAAAAAAAAFU/L9IA1lnHFCM/s72-c/photo%204.jpg?imgmax=400' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-6797486312036173760</id><published>2008-05-10T23:35:00.004+01:00</published><updated>2008-05-11T01:22:23.414+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='iliad iRex'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>iLiad iRex pictures</title><content type='html'>As there's some interest in the iliad and other ebook readers, and as a follow-up to my &lt;a href="http://camaelon.blogspot.com/2008/04/iliad-irex-note-taking-and-hand-writing.html"&gt;previous post describing my general impressions of the iliad&lt;/a&gt;, I thought that posting some pictures would be interesting... Clicking on the images shows the original image size (note that the grain is in fact due to the iso setting rather than the iliad !)&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/iliad/iliad1.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/iliad/iliad1-small.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;This first picture shows an A4 PDF, not resized, and perfectly readable. As you can see, no problems either with the viewing angle.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/iliad/iliad2.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/iliad/iliad2-small.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The 16 gray levels work well enough for reading some comics :)&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/iliad/iliad3.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/iliad/iliad3-small.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Another comic, close up.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/iliad/iliad4.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/iliad/iliad4-small.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;One of the great thing with a reasonable resolution and antialiasing: you CAN put A4 scans of partitions, and IT IS readable :) -- here the Turkish March, from a freely available document scanned by the Bibliotheque Nationale de France (thanks!).&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/iliad/iliad5.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/iliad/iliad5-small.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;As you can see, the poor quality of the pictures (and the not-so-great white balance) are due to the actual lightning conditions :) -- and you can also see how well an e-ink device reacts to a direct spot lamp...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Finally, as it's one of the main use of my iliad and one of the main reasons I actually bought one, an A4 research paper:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/iliad/iliad6.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/iliad/iliad6-small.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;As you can see, it's readable (albeit a bit small), with the PDF reader I use simply set in fullscreen mode.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/iliad/iliad7.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/iliad/iliad7-small.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Zooming on the same document with the camera (ie without touching the iliad) -- you can see how such A4 PDF documents are actually readable, without any kind of resizing (apart the fullscreen mode). The PDF reader application can also zoom the document if it's really necessary (using a simple gesture with the stylus), but I rarely use this feature (usually only for some diagrams if they are too small, not for the text itself).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-6797486312036173760?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/6797486312036173760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=6797486312036173760' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/6797486312036173760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/6797486312036173760'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2008/05/iliad-irex-pictures.html' title='iLiad iRex pictures'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-3477149962837105027</id><published>2008-05-06T13:12:00.004+01:00</published><updated>2008-05-06T19:27:33.170+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='phd thesis'/><title type='text'>Thesis</title><content type='html'>&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/images/thesis.png"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/thesis-small.png" width="420" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Feels good :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-3477149962837105027?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/3477149962837105027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=3477149962837105027' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/3477149962837105027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/3477149962837105027'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2008/05/thesis.html' title='Thesis'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-2644577430516028876</id><published>2008-04-11T04:22:00.003+01:00</published><updated>2008-04-11T09:58:02.480+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='iliad iRex'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='objective-c'/><title type='text'>Iliad iRex note taking and hand-writing recognition</title><content type='html'>I recently bought an &lt;a href="http://en.wikipedia.org/wiki/ILiad"&gt;Iliad iRex&lt;/a&gt;, a pretty awesome eBook reader. Among the cool features, it's running linux, an sdk is available, and it's really easy to hack stuff for it (for instance I wrote a &lt;a href="http://www.mobileread.com/forums/showthread.php?t=22319"&gt;simple script for downloading the 24h edition of The Guardian&lt;/a&gt;). Also, as shown with the previous link, the community is quite active :)&lt;br /&gt;&lt;br /&gt;Just a couple of words about the iliad itself... the hardware is pretty awesome, with wifi, ethernet, wacom tablet, usb, mmc card and compactflash, audio jack...&lt;br /&gt;the e-ink display is quite amazing too -- 768x1024 makes it precise enough to be able to read A4 PDF without too much problem (a great thing to review lots of research papers, believe me !).&lt;br /&gt;&lt;br /&gt;The software side on the other hand... is a bit disappointing. Don't get me wrong: it's good enough, and some aspects are pretty cool. But you really unlock the possibilities of the devices by getting the root access and adding applications developed by the community (notably, the PDF viewer hacked by the community is fantastic, with gestures, etc.). Which means it's fine if you are a geek and not afraid to hack your device, but more annoying for your average consumer :-/&lt;br /&gt;The other disappointing aspect is the (comparatively) low battery life: about 12-15 hours depending on the model (mine is a v1, the v2 do better), which is mostly caused by the fact that no sleep mode is available. Other eBook readers perform much better on that metric. To be fair they don't have wifi nor a wacom tablet :D ... so it's really a matter of choice.&lt;br /&gt;&lt;br /&gt;All in all, it's a bit of a shame as really the platform is very nice, and with a bit more effort on the software side, Iliad would have a killer product on their hands. Oh, and yes the e-ink display refresh rate is slow, but curiously it's not that annoying, and having its full library in such small factor is absolutely fantastic. &lt;br /&gt;&lt;br /&gt;Anyway... one of the really, really cool feature of the iliad is the presence of a stylus (i.e. the iliad display sports a wacom tablet), which allows you to annotate PDFs, take notes, etc.&lt;br /&gt;&lt;br /&gt;I started to experiment a bit with the note taking feature of the iliad; the idea is that you can open a PNG image in the notes folder, and a copy will automatically be made where you can write on it (the image is being used as a background, so it's trivial to have customized backgrounds). But I then wanted to generate a PDF from those notes (i.e. combining the scribbles+PNG).&lt;br /&gt;&lt;br /&gt;Iliad do provide a windows application to do all that, but it's a windows app, not really useful for me... there is a nice java application written by the community that allows merging scribbles with the PDF as well. Alas, the java scribble merging application only seems to work for PDF scribble; I guess it would be trivial to modify the java app, but I had a look at the xml scribbling format, and I saw that the format was really simple. &lt;br /&gt;&lt;br /&gt;So I quickly wrote myself a MacOSX viewer for the notes, using the png image as a background, letting me print notes easily or convert them to PDF.&lt;br /&gt;&lt;br /&gt;But then... I suddenly remembered the Ink handwriting recognition engine.&lt;br /&gt;&lt;br /&gt;This thing comes straight from the ill-fated Apple Newton PDA (such a loss!), but what is nice is that it is available and installed by default on OSX.&lt;br /&gt;&lt;br /&gt;Turns out it's not too difficult to feed Ink a set of custom datapoints, and after some tweaking it doesn't work too bad apparently, as can be seen on the screenshot...&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.mobileread.com/forums/attachment.php?attachmentid=12127&amp;d=1207881531"&gt;&lt;br /&gt;&lt;img src="http://www.mobileread.com/forums/attachment.php?attachmentid=12127&amp;d=1207881531" width=320px&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;So far, this is only highly experimental code, and it'll probably take a bit more time to have a really usable application. Still, pretty cool!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-2644577430516028876?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/2644577430516028876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=2644577430516028876' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/2644577430516028876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/2644577430516028876'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2008/04/iliad-irex-note-taking-and-hand-writing.html' title='Iliad iRex note taking and hand-writing recognition'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-1883130675472025439</id><published>2008-04-03T00:42:00.005+01:00</published><updated>2008-04-03T02:50:34.552+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='smalltalk'/><category scheme='http://www.blogger.com/atom/ns#' term='demo'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>DabbleDB 8 minutes demo</title><content type='html'>&lt;a href="http://www.dabbledb.com/"&gt;DabbleDB&lt;/a&gt; is as impressive as ever. If you never heard about it, it's a fantastic database app, one of the few "webapp" that really manages to be as usable as it would be if it was a "normal" desktop app. It manages that by leveraging the power of &lt;a href="http://www.seaside.st"&gt;Seaside&lt;/a&gt;, a web application server written in Smalltalk (hands down the best app server I ever seen, period. Beats even webobjects, and you code in Smalltalk. Can't be better, really!).  &lt;br /&gt;&lt;br /&gt;Discarding the impressive "webapp" aspect (which in a way is more of a sad commentary on the poor capacities of the "web" platform, although it is improving, as dabbledb can show, and as addons such as &lt;a href="http://gears.google.com"&gt;Gears&lt;/a&gt; improve the capacities), it's the only database I know that let you evolve your data model as smoothly as they do it, not even talking about the great tools to easily explore and enrich your data... This is a kind of flexibility that I think should be put back at the center of our computing experience and be adopted by more applications/domains.&lt;br /&gt;&lt;br /&gt;Anyway, Avi Bryant released a &lt;a href="http://www.dabbledb.com/explore/8minutedemo/"&gt;new 8 minutes demo showing off DabbleDB&lt;/a&gt;, after their famous &lt;a href="http://blog.dabbledb.com/2008/03/return-of-the-s.html"&gt;7 minutes demo&lt;/a&gt; they did in 2006. If you never heard about DabbleDB, check it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-1883130675472025439?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/1883130675472025439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=1883130675472025439' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/1883130675472025439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/1883130675472025439'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2008/04/dabbledb-8-minutes-demo.html' title='DabbleDB 8 minutes demo'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-4351534167536532983</id><published>2008-03-27T00:21:00.007Z</published><updated>2008-04-02T13:51:52.487+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='summer of code'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>GNUstep Summer of Code 2008</title><content type='html'>For those who don't know yet... &lt;a href="http://www.gnustep.org"&gt;GNUstep&lt;/a&gt; is one of the organisation that Google has accepted for the &lt;a href="http://code.google.com/soc/2008/"&gt;Summer of Code program&lt;/a&gt; --- which means that if you are a student looking for something to do this summer, want to hack Objective-C code, help a cool free software project, learn a lot... and even be paid, well, you should apply ! sure beat your average summer job :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Deadline for applications is next monday (31/03/2008), so hurry up !&lt;br /&gt;&lt;br /&gt;&lt;b&gt;update:&lt;/b&gt; the deadline has been &lt;a href="http://google-opensource.blogspot.com/2008/03/one-more-week-to-apply-to-google-summer.html"&gt;pushed by a week&lt;/a&gt;, so if you thought you missed it, you still have a few days left to apply.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-4351534167536532983?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/4351534167536532983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=4351534167536532983' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/4351534167536532983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/4351534167536532983'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2008/03/gnustep-summer-of-code.html' title='GNUstep Summer of Code 2008'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-3461480306816060015</id><published>2008-03-23T14:11:00.004Z</published><updated>2008-03-23T18:26:57.163Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Mobile Gears T-Shirt</title><content type='html'>T-shirts are nearly an internal currency at work... so we of course had a mobile gears T-Shirt made ! Here is it:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://www.roard.com/images/google-gears-tshirt.png"&gt;&lt;img width="320" src="http://www.roard.com/images/google-gears-tshirt.png"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Nice isn't it ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-3461480306816060015?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/3461480306816060015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=3461480306816060015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/3461480306816060015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/3461480306816060015'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2008/03/mobile-gears-t-shirt.html' title='Mobile Gears T-Shirt'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-2535023121979212011</id><published>2008-03-23T14:06:00.001Z</published><updated>2008-03-23T14:08:00.608Z</updated><title type='text'>Hilarious</title><content type='html'>&lt;a href="http://scienceblogs.com/pharyngula/2008/03/expelled.php"&gt;This&lt;/a&gt; is just too funny. Hail  the Flying Spaghetti Monster !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-2535023121979212011?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/2535023121979212011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=2535023121979212011' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/2535023121979212011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/2535023121979212011'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2008/03/hilarious.html' title='Hilarious'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-2368896833915181261</id><published>2008-03-06T23:04:00.007Z</published><updated>2008-03-07T01:03:32.948Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Google Gears Mobile</title><content type='html'>One of the few annoying things when you work at Google is that you can't really talk with your outside friends about what you are doing... so it's rather nice when you finally release the project  you worked on for the last few months and be able to point to it :)&lt;br /&gt;&lt;br /&gt;So anyway... we released &lt;a href="http://gears.google.com/"&gt;Google Gears&lt;/a&gt; for Mobile tuesday morning ! Here is the &lt;a href="http://googlemobile.blogspot.com/2008/03/shifting-google-gears-to-mobile.html"&gt;post&lt;/a&gt; from Charles Wiles announcing it, &lt;a href="http://google-code-updates.blogspot.com/2008/03/power-up-your-mobile-web-applications.html"&gt;another one describing mobile gears&lt;/a&gt;, and one on the &lt;a href="http://gearsblog.blogspot.com/2008/03/google-gears-in-your-pocket.html"&gt;Desktop Gears blog&lt;/a&gt;. Plus you get fancy videos from Charles, Andrei and Dave talking about it. &lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/mobilegears1.png"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;A few words about Gears: it's an opensource project, adding a cool set of javascript APIs to internet browsers. Those APIs let your website use a database locally, cache pages, and execute javascript code in threads, basically blurring the line between webapps and native apps. &lt;br /&gt;&lt;br /&gt;Biggest use so far is enabling sites to be used while not being connected to internet. Of course, disconnected mode and local storage make even more sense on a mobile device than for a laptop... add to that the fact that writing native applications for mobile devices is a pain, and gears-enabled "webapps" are suddenly very attracting, even if on winmo you have to go through some gymnastic around PocketIE "limitations". Oh, and this work for the moment on Windows Mobile 5 and 6, touchscreen and smartphone, and implements all the 0.2 APIs of the desktop gears. &lt;br /&gt;&lt;br /&gt;And more is coming...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-2368896833915181261?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/2368896833915181261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=2368896833915181261' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/2368896833915181261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/2368896833915181261'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2008/03/google-gears-mobile.html' title='Google Gears Mobile'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-7160531128720553826</id><published>2007-09-23T16:35:00.000+01:00</published><updated>2007-09-23T22:47:05.844+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Evolved Virtual Creatures</title><content type='html'>A pretty cool video showing evolved virtual creatures:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/xiRhe8mL_08"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/xiRhe8mL_08" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;More infos &lt;a href="http://www.genarts.com/karl/evolved-virtual-creatures.html"&gt;here&lt;/a&gt;, with Karl Sims Siggraph's 1994 &lt;a href="http://www.genarts.com/karl/papers/siggraph94.pdf"&gt;paper&lt;/a&gt;..&lt;br /&gt;&lt;br /&gt;another video from &lt;a href="http://www.irit.fr/~Nicolas.Lassabe/"&gt;Nicolas Lassabe&lt;/a&gt; &lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;embed style="width:400px; height:326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=8397552588846739424&amp;hl=en" flashvars=""&gt; &lt;/embed&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;more on Lee Graham's &lt;a href="http://www.stellaralchemy.com/lee/virtual_creatures.html"&gt;page&lt;/a&gt; :&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/H4oQyMTbONE"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/H4oQyMTbONE" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-7160531128720553826?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/7160531128720553826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=7160531128720553826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/7160531128720553826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/7160531128720553826'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2007/09/evolved-virtual-creatures.html' title='Evolved Virtual Creatures'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-2348309745881703868</id><published>2007-09-09T19:03:00.000+01:00</published><updated>2007-09-23T22:47:37.032+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><title type='text'>Cairo backend</title><content type='html'>Just a quick note: Fred Kiefer fixed the last issue I had (bad text clipping / smearing) with the &lt;a href="http://camaelon.blogspot.com/2007/09/gnustep-cairo-backend.html"&gt;Cairo backend&lt;/a&gt;... so, no more little glitches, it's really usable now !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-2348309745881703868?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/2348309745881703868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=2348309745881703868' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/2348309745881703868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/2348309745881703868'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2007/09/cairo-backend.html' title='Cairo backend'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-4228354480130331946</id><published>2007-09-04T21:43:00.000+01:00</published><updated>2007-09-04T21:50:13.632+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><title type='text'>Dock</title><content type='html'>Looks like it didn't take long for Yen-ju to play with the &lt;a href="http://camaelon.blogspot.com/2007/09/gnustep-cairo-backend.html"&gt;Cairo backend&lt;/a&gt; and &lt;a href="http://camaelon.blogspot.com/2007/09/cairognustep.html"&gt;partial transparency&lt;/a&gt; :)&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/79878597@N00/1324165074/" title="Photo Sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1013/1324165074_8e12c89efb_o.png" width="104" height="462" alt="Etoile Dock..." /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Shiny. (yes, too much like OS X)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-4228354480130331946?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/4228354480130331946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=4228354480130331946' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/4228354480130331946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/4228354480130331946'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2007/09/dock.html' title='Dock'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-5147265344420166414</id><published>2007-09-04T03:15:00.001+01:00</published><updated>2007-09-04T21:45:40.591+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><title type='text'>GNUstep Cairo backend</title><content type='html'>After some effort, I finally managed to find a solution to the annoying scrolling bug in the Cairo backend... There's still some little graphic glitches appearing sometimes -- it looks like some clipping/refresh issues -- but overall it's nearly there :)&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://www.flickr.com/photos/79878597@N00/1317405806/" title="Photo Sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1341/1317405806_8b82f172df.jpg" width="500" height="313" alt="GNUstep Cairo Backend" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;For the intrepid, the code is committed on the gnustep trunk. The above screenshot shows the Etoile desktop (with the new compositing manager) and the work-in-progress Narcissus theme, running with the Cairo backend.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-5147265344420166414?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/5147265344420166414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=5147265344420166414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/5147265344420166414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/5147265344420166414'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2007/09/gnustep-cairo-backend.html' title='GNUstep Cairo backend'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm2.static.flickr.com/1341/1317405806_8b82f172df_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-7371920382032094131</id><published>2007-09-02T23:49:00.001+01:00</published><updated>2007-09-03T01:55:49.431+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>AlpenStep '07</title><content type='html'>&lt;div align="center"&gt;&lt;a href="http://www.flickr.com/photos/79878597@N00/1306796528/" title="Photo Sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1057/1306796528_9689d3867f.jpg" width="500" height="334" alt="DSC_0424" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I was at &lt;a href="http://wiki.gnustep.org/index.php/European_GNUstep_Developer%27s_Meeting"&gt;AlpenStep&lt;/a&gt; this weekend, you can check some &lt;a href="http://www.flickr.com/gp/79878597@N00/8vU33A"&gt;pictures&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It was a very cool event, thanks in particular to gerold's organisation. The location, in a small  swiss village, was really nice -- I can say that some fresh air after beeing in london is good ! &lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://www.flickr.com/photos/79878597@N00/1306778378/" title="Photo Sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1314/1306778378_5785430044.jpg" width="500" height="334" alt="DSC_0305" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;It was also a small-scale event -- only 7 persons (though gurkan came but left saturday before lunch :-/), which made it a very intensive event as well: lots of discussion, lots of coding too. Fred Kiefer was probably the busiest person in the room, as everybody wanted to ask him questions/advices... ;-)&lt;br /&gt;&lt;br /&gt;Riccardo Mottola gave a nice GAP demonstration, and during the weekend he and Nikolaus Schaller were busy working on SimpleWebKit:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://www.flickr.com/photos/79878597@N00/1306791214/" title="Photo Sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1210/1306791214_ab57b8e6fe.jpg" width="335" height="500" alt="DSC_0404" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Nikolaus also made a cool presentation of QuantumSTEP running on the OpenMoko platform :)&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://www.flickr.com/photos/79878597@N00/1305897353/" title="Photo Sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1099/1305897353_005925a4c6.jpg" width="335" height="500" alt="DSC_0318" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The OpenMoko device is actually fairly nice, very high-res screen, and some interesting hardware to tinker with.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://www.flickr.com/photos/79878597@N00/1306763504/" title="Photo Sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1230/1306763504_77dca748bb.jpg" width="335" height="500" alt="DSC_0246" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Quentin was working on ContainerKit for Etoile, a very interesting way of specifying UI using a generic data model (so you can switch representations on the fly for instance), also allowing very nice introspection features with inspectors generated on the fly. I tried to convaince him to introduce some &lt;a href="http://www.lukas-renggli.ch/smalltalk/magritte"&gt;Magritte&lt;/a&gt;-like magic, i.e. adding metadatas to your model...&lt;br /&gt;&lt;br /&gt;Quentin and I also made a presention of Etoile, describing the various components/frameworks/applications, and how everything is supposed to fit... &lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/79878597@N00/1305913975/" title="Photo Sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1331/1305913975_eda20acbb1.jpg" width="500" height="334" alt="DSC_0429" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Finally, I can only be admirative of gerold organisation skills... to the point were he got us a GNUstep cake:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://www.flickr.com/photos/79878597@N00/1305897787/" title="Photo Sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1407/1305897787_f4e588cf2f.jpg" width="500" height="334" alt="DSC_0320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Which was delicious ! &lt;br /&gt;&lt;br /&gt;In short, looking forward for AlpenStep'08 ! (and Fosdem'08 before...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-7371920382032094131?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/7371920382032094131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=7371920382032094131' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/7371920382032094131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/7371920382032094131'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2007/09/alpenstep-07.html' title='AlpenStep &apos;07'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm2.static.flickr.com/1057/1306796528_9689d3867f_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-3431363146043134564</id><published>2007-09-02T15:27:00.000+01:00</published><updated>2007-09-03T00:34:21.351+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>Cairo/GNUstep</title><content type='html'>I was at &lt;a href="http://wiki.gnustep.org/index.php/European_GNUstep_Developer%27s_Meeting"&gt;AlpenStep&lt;/a&gt; this weekend (photos will follow..) which was quite cool. I teamed with Fred Kiefer (the GNUstep gui maintainer) to try to iron out some of the quirks of the Cairo backend. The main problem (recopy of surfaces is not always done well, which impact scrolling) is still here, although we improved some things, and it looks now like it should be solvable with a bit more work. We also added 32 bit surface support when choosing x11 visuals : a cool side-effect is that you can then use directly the alpha channel on the window :) and thus draw semi-transparent windows.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/images/32bitsSurface.png"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;David will like that ;-) -- he's working at the moment on Etoile's compositing manager...&lt;br /&gt;&lt;br /&gt;In the above screenshot, I simply fill the view with NSCompositeClear (so it's just transparent), and then composite an image on it, with 0.8 transparency. You can then see that parts of the window are fully solid, while some are completely transparent, and others partially transparent.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-3431363146043134564?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/3431363146043134564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=3431363146043134564' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/3431363146043134564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/3431363146043134564'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2007/09/cairognustep.html' title='Cairo/GNUstep'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-5718617529079573170</id><published>2007-05-06T22:18:00.000+01:00</published><updated>2007-05-07T16:47:06.272+01:00</updated><title type='text'>Et merde.</title><content type='html'>On est pas sorti de l'auberge maintenant. Ca donne pas envie de revenir en france en tout cas... :-/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.interieur.gouv.fr/sections/a_votre_service/resultats-elections/PR2007/FE.html"&gt;Resultats de l'election presidentielle&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-5718617529079573170?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/5718617529079573170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=5718617529079573170' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/5718617529079573170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/5718617529079573170'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2007/05/et-merde.html' title='Et merde.'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-2839601141388142044</id><published>2007-04-28T19:21:00.000+01:00</published><updated>2007-05-01T13:30:32.167+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Hard Disk Crash</title><content type='html'>...You know when people tell you to do backups ? Feeling guilty ?  :-)&lt;br /&gt;&lt;br /&gt;Well, most of my data is usually backed up, but... even so, there's still a lag usually, particularly for "not-so-important data", etc. Add to this usual mix some data put away "temporarily" from my main computer... and that's when my LaCie 250Gb external drive choose to die. Around 200Gb of data lost, among them some that I could get back with various difficulty somewhere else, eg on some dvd or other computers (the LaCie *was* the main/more used backup plan), and some truly lost (yes, this "temporarily moved" data, yes, it's you I'm talking about), or some data recently copied only on the LaCie... Of course this drive is around 3 years old, and I actually had some thoughts recently of doing a proper backup of everything there was on it, for convenience, and for fear of such an accident. Of course too, I ended up way too busy to actually do it...&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/screenshots/hddrepair.jpg" width="320"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Still, a bit of luck: there was no scratching noise, in fact, there wasn't any noise at all: the disk just didn't start, which meant that it was more likely an electronic fault than a mechanical one. Removing the hdd from the LaCie enclosure and plugging it directly on a computer didn't do anything either (so it sadly wasn't the LaCie controller board). So that left us with the actual hdd electronic board... I then looked on the web for an hdd from the same brand and the same model -- and found a cheap one from an online reseller. After receiving it, I checked it -- yes, it was the same model, yes, the same year, yes the same firmware... ah. No. not the same firmware ! well, still, only two months separated those drives, so I crossed my fingers and started removing the controlling board of the "new" drive to swap it with the one on my crashed drive. Never having done that, I wasn't quite sure what to expect :-) but it's in fact really straightforward (you just need the right kind of screwdrivers -- Torx). The only difficulty is in finding a control board that is compatible with your hdd!&lt;br /&gt;&lt;br /&gt;To cut the story short, the "patched" drive started happily and worked fine, so I passed the day swapping and burning dvd of the drive's content ;-)&lt;br /&gt;&lt;br /&gt;One thing for sure is that I will seriously think of building a proper backup solution (ie, automated/redundant) for hosting "home" data (photos, videos, music...) asap... I was lucky to save this drive ! these kind of content is annoying as they quickly take so much space, yet (for at least some of them) they are invaluable...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-2839601141388142044?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/2839601141388142044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=2839601141388142044' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/2839601141388142044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/2839601141388142044'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2007/04/hard-disk-crash.html' title='Hard Disk Crash'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-1233078829854539170</id><published>2007-03-24T09:00:00.000Z</published><updated>2007-03-27T21:15:02.642+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='smalltalk'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='NeXT'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>NeXT videos &amp; WebObjects</title><content type='html'>&lt;div align="center"&gt;&lt;embed style="width:400px; height:326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=-4081395455727204527&amp;hl=en" flashvars=""&gt; &lt;/embed&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I found these two videos, the &lt;a href="http://video.google.com/videoplay?docid=-4081395455727204527&amp;q=label%3Anextstuff"&gt;first one&lt;/a&gt; showing Steve Jobs demo NeXTstep 2.0, the NeXTCube 040 + Dimension, the slab, DBKit, in 1990.. it's always surprising to see how far ahead NeXT was, or reversely, how slowly did we progress on the software side, while the hardware we have now is insanely more powerful...&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;embed style="width:400px; height:326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=5888348343612063265&amp;hl=en" flashvars=""&gt; &lt;/embed&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://video.google.com/videoplay?docid=5888348343612063265&amp;q=openstep"&gt;second one&lt;/a&gt; shows again Steve Jobs, five years later. NeXT stations didn't sell, their state-of-the-art factory closed, they stopped producing hardware, and reconverted as a software only company. The tone of the talk seems to reflect those disappointment, with Steve trying to be excited about Distributed OLE and Portable Distributed Object (PDO), but you can feel it's not really anymore about changing the world... and yet, when analysing the state of the WWW and its future, Steve is absolutely dead on, and he then goes on to demo a beta version of &lt;a href="http://www.apple.com/webobjects/"&gt;WebObjects&lt;/a&gt;, which in the end will save the company (until it took over Apple). WebObjects was an absolutely amazing tech, and still is. The move to a J2EE implementation instead of the ObjC implementation, the availability of other solutions, and its curious downplay by Apple (while they use it for their store, they aren't exactly pushing it on the market, although they dramatically cut the price from hundred thousands of dollars to $500, to finally make it free). WebObjects had a huge impact on current "web application servers", many of them openly inspired by it. My preferred one is &lt;a href="http://www.seaside.st"&gt;Seaside&lt;/a&gt;, a fantastic Smalltalk framework... for a great example of what you can do with Seaside, try &lt;a href="http://www.dabbledb.com"&gt;dabbledb&lt;/a&gt; :-)&lt;br /&gt;&lt;br /&gt;Note that there's two free software implementations of WebObjects in Objective-C, &lt;a href="http://www.gnustepweb.org"&gt;GNUstepWeb&lt;/a&gt; and NGObjWeb (part of &lt;a href="http://sope.opengroupware.org/"&gt;SOPE&lt;/a&gt;, the web application framework used by &lt;a href="http://www.opengroupware.org"&gt;Opengroupware.org&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-1233078829854539170?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/1233078829854539170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=1233078829854539170' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/1233078829854539170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/1233078829854539170'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2007/03/next-videos-webobjects.html' title='NeXT videos &amp; WebObjects'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-448660180293490519</id><published>2007-03-16T13:36:00.001Z</published><updated>2007-03-19T01:04:57.181Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><category scheme='http://www.blogger.com/atom/ns#' term='summer of code'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>GNUstep participates in Google Summer of Code 2007</title><content type='html'>The &lt;a href="http://www.gnustep.org"&gt;GNUstep project&lt;/a&gt; just announced that it was accepted in the Google Summer of Code 2007 :&lt;br /&gt;&lt;br /&gt;&lt;i&gt;GNUstep provides a cross-platform solution for Objective-C/OpenStep/Cocoa developers. This year, it offers various projects for SoC, such as adding new classes from Mac OSX 10.4, enhancing text system, porting WebKit to GNUstep, improve GNUstep on MS Windows platform, etc. It is a great chance for students to learn programming in many aspects.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;a href='http://gnustep.blogspot.com/2007/03/summer-of-code-2007.html'&gt;read more&lt;/a&gt; | &lt;a href='http://digg.com/programming/GNUstep_participates_in_Google_Summer_of_Code_2007'&gt;digg story&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;It's an excellent news ! we tried to be accepted first two years ago if I remember, and last year we were in but under the GNU umbrella... and no projects were accepted. Beeing accepted as a separate organisation should help us, hopefully !&lt;br /&gt;&lt;br /&gt;Beside, any progresses on GNUstep will be immediately useful for &lt;a href="http://www.etoile-project.org"&gt;Étoilé&lt;/a&gt; :-) &lt;br /&gt;&lt;br /&gt;If you are a student, it's definitely worth a look -- GNUstep is one of the best OO api available here, and a fun place to hack.&lt;br /&gt;&lt;br /&gt;update: &lt;a href="http://typo.cdlm.fasmz.org/articles/2007/03/15/summer-of-code-2007-squeak-is-in"&gt;Squeak is also in !&lt;/a&gt; :-) great news too...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-448660180293490519?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/448660180293490519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=448660180293490519' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/448660180293490519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/448660180293490519'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2007/03/gnustep-participates-in-google-summer.html' title='GNUstep participates in Google Summer of Code 2007'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-8168359514632817982</id><published>2007-03-01T22:59:00.000Z</published><updated>2007-03-17T21:08:32.355Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='london'/><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='photo'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Pink Floyd</title><content type='html'>Today I was in london for a job interview, and had a few hours to kill after it before going back to wales.. so I walked around a bit, and ended up reaching the Thames (duh! not surprising in london, is it ?). But I just ended up in front of the &lt;a href="http://en.wikipedia.org/wiki/Battersea_Power_Station"&gt;Battersea Power Station&lt;/a&gt; :&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/screenshots/AnimalsFactory1.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/screenshots/AnimalsFactory1.jpg" width="320"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Of course, this power station is world famous because of &lt;a href="http://en.wikipedia.org/wiki/Animals_(album)"&gt;Animals&lt;/a&gt;, the 1977 Pink Floyd album... ;-)&lt;br /&gt;&lt;br /&gt;Sadly, I didn't have my camera with me, so the shots are from my mobile... here's some more:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/screenshots/AnimalsFactory2.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/screenshots/AnimalsFactory2.jpg" width="320"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/screenshots/AnimalsFactory3.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/screenshots/AnimalsFactory3.jpg" width="320"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/screenshots/AnimalsFactory4.jpg"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/screenshots/AnimalsFactory4.jpg" width="320"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;ps: in the "cool for a geek dpt", I'm actually posting that from my laptop.. but through my 3G mobile cnx. With a cheap unlimited data plan, you basically get internet access everywhere -- as like here, in the train :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-8168359514632817982?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/8168359514632817982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=8168359514632817982' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/8168359514632817982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/8168359514632817982'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2007/03/pink-floyd.html' title='Pink Floyd'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-7880172600990278528</id><published>2007-01-19T17:56:00.000Z</published><updated>2007-03-17T20:28:47.428Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='objective-c'/><title type='text'>Fun with Objective-C</title><content type='html'>Following a mail from david on &lt;a href="https://mail.gna.org/public/etoile-dev/2007-01/msg00018.html"&gt;étoilé dev&lt;/a&gt; about how it could be nice to try allocating ObjC objects on the stack, I played with a couple of things... &lt;br /&gt;&lt;br /&gt;First I wrote a mini benchmark -- get a very basic object (a couple of ivars, one method "plop" assigning a value to an ivar), and then create an instance, initialize it (call the init method), call the one method the object has, then deallocate the object. 10000000 times. As far as micro benchark goes this one is pretty stupid but well, that'll give us some ideas of what's going on.&lt;br /&gt;&lt;br /&gt;Without optimizations: ~4.10s (on a macbook pro 2.16Ghz, core duo)&lt;br /&gt;&lt;br /&gt;Not that great -- doing the same thing in C++ with a similar object here is the timings I get:&lt;br /&gt;&lt;br /&gt;Objects created on the stack: 0.24s (17 times faster !)&lt;br /&gt;Objects created on the heap: 1.37s (3 times faster)&lt;br /&gt;&lt;br /&gt;Ouch, the poor Objective-C... not a surprise when allocating objects on the stack, but even allocating them on the heap C++ is still 3 times faster. &lt;br /&gt;&lt;br /&gt;One obvious reason is that Objective-C calls a lot of methods when creating an object; and a method call is more costly than a C++ function call. Still... &lt;br /&gt;&lt;br /&gt;So the obvious idea here is to cache some method calls (ask their address then call the function directly -- as a C function). I restrained myself to alloc/init, the method the object had ("plop"), and the release method. Of course, there's other methods that are called by those, that won't be cached.&lt;br /&gt;&lt;br /&gt;Caching method calls: 2.77s&lt;br /&gt;&lt;br /&gt;It's still twice as slow as creating the C++ object on the heap, but it's anyway a nice performance increase.&lt;br /&gt;&lt;br /&gt;Ok, then our only option left is to allocate the Objective-C object on the stack. Surprise:&lt;br /&gt;&lt;br /&gt;ObjC objects created on the stack: 0.23s &lt;br /&gt;ObjC objects created on the stack + cached imps: 0.13s &lt;br /&gt;&lt;br /&gt;:-)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[note of course that it's a stupid micro-benchmark that doesn't prove much, but it's fun]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What ? how can you allocate objective-c objects on the stack ? ah well... you can:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#define STACKCLASS(class) typedef struct { @defs(class) } \&lt;br /&gt;    __CLASS_ON_STACK__ ## class;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#define STACKOBJECTISA(objectName,className,classIsa) \&lt;br /&gt;    __CLASS_ON_STACK__ ## className __INSTANCE_ON_STACK__ ## objectName; \&lt;br /&gt;    __INSTANCE_ON_STACK__ ## objectName.isa = classIsa; \&lt;br /&gt;    className* objectName = (className*)&amp; __INSTANCE_ON_STACK__ ## objectName;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#define STACKOBJECT(objectName,className) \&lt;br /&gt;    STACKOBJECTISA(objectName,className,[className class]);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here is an example:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;STACKCLASS(Test);&lt;br /&gt;&lt;br /&gt;int i;&lt;br /&gt;for (i=0; i&lt; 10000000; i++)&lt;br /&gt;{&lt;br /&gt;  STACKOBJECT(test,Test);&lt;br /&gt;  [test init];&lt;br /&gt;  [test plop];&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Basically, create the corresponding struct for the class and set the isa member (you can also cache the class isa to gain one message send). A bit of a hack, but that seem to work ok :)&lt;br /&gt;&lt;br /&gt;Note of course that by doing that, you loose flexibility -- exit class clusters for instance (eg classes that actually returns another class instance, such as NSNumber), you can only work with concrete classes. And also, don't call directly -dealloc as it would try to deallocate the object, which is not needed as it was created on the stack (so if you need to do some cleanup you should do it in another method).&lt;br /&gt;&lt;br /&gt;Here's the macros I used for imp caching (fairly straightforward):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#define CALLIMP(imp,object,sel,args...) \&lt;br /&gt;    (*imp)(object, @selector(sel) , ##args)&lt;br /&gt;#define GETIMP(class,sel) [class methodForSelector: @selector(sel)];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You use them like that:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;IMP imp1 = GETIMP(Test,alloc);&lt;br /&gt;id p = [Test new];&lt;br /&gt;IMP imp2 = GETIMP(p,init);&lt;br /&gt;IMP imp3 = GETIMP(p,plop);&lt;br /&gt;IMP imp4 = GETIMP(p,release);&lt;br /&gt;[p release];&lt;br /&gt;&lt;br /&gt;int i;&lt;br /&gt;for (i=0; i&lt; 10000000; i++)&lt;br /&gt;{&lt;br /&gt;   id test = CALLIMP (imp1, c, alloc);&lt;br /&gt;   CALLIMP (imp2, test, init);&lt;br /&gt;   CALLIMP (imp4, test, plop);&lt;br /&gt;   CALLIMP (imp3, test, release);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-7880172600990278528?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/7880172600990278528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=7880172600990278528' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/7880172600990278528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/7880172600990278528'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2007/01/fun-with-objective-c.html' title='Fun with Objective-C'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-116519322770508884</id><published>2006-12-04T00:17:00.000Z</published><updated>2007-03-19T01:20:30.994Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='steptalk'/><category scheme='http://www.blogger.com/atom/ns#' term='objective-c'/><title type='text'>Pointillist</title><content type='html'>What is it ? well, &lt;a href="http://en.wikipedia.org/wiki/Pointillism"&gt;Pointillism&lt;/a&gt; is a style of painting I quite like, but Pointillist is simply the (working) name of a small graph library I'm working on. The previous post was discussing about the simulation software I wrote, which uses a simple graph view. I decided to clean up a bit that view, put it in a framework and commit it somewhere (likely on the &lt;a href="http://www.etoile-project.org/"&gt;étoilé&lt;/a&gt; repository). Not quite done yet, but it's shaping well, and it's now quite a bit more generic:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/screenshots/screenshot-Pointillist-1.png"&gt;&lt;img src="http://www.roard.com/screenshots/screenshot-Pointillist-1.png" width="320"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;One of my "I will do it one day" project is a simple graph calculator... So in order to properly test the graph framework, I created a class using the &lt;a href="http://www.gnustep.org/experience/StepTalk.html"&gt;StepTalk scripting framework&lt;/a&gt; to express functions (written in &lt;a href="http://en.wikipedia.org/wiki/Smalltalk"&gt;Smalltalk&lt;/a&gt;),  which actually makes me rather close to have such a program :-P&lt;br /&gt;&lt;br /&gt;for the curious, the code of the functions is:&lt;br /&gt;&lt;br /&gt;Red function:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;|y| &lt;br /&gt;y := -0.5. &lt;br /&gt;((x &lt; 0.5) and: (x &gt; -0.5)) ifTrue: [y := 1]. &lt;br /&gt;(x &lt; -1) ifTrue: [ y := 0.25]. &lt;br /&gt;( x &lt; -1.5) ifTrue: [ y := -2 ]. &lt;br /&gt;(x &gt; 1.5) ifTrue: [ y := 2]. &lt;br /&gt;y := y + 1.5. &lt;br /&gt;^y&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Green function: &lt;pre&gt;x sin - 1 / x&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Blue function: &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;|y mod| &lt;br /&gt;y := -1. &lt;br /&gt;mod := x mod: 2. &lt;br /&gt;(mod = 0) ifTrue: [ y := 1 ]. &lt;br /&gt;y := y - 2. &lt;br /&gt;^ y&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;StepTalk is really cool btw -- Easy to integrate, and works both on OSX and GNUstep. Here is the code I use here:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;id environment = [STEnvironment environmentWithDefaultDescription];&lt;br /&gt;id conversation = [STConversation conversationWithEnvironment: environment&lt;br /&gt;      language: @"Smalltalk"];&lt;br /&gt;&lt;br /&gt;(...)&lt;br /&gt;&lt;br /&gt;id number = [NSNumber numberWithFloat: x];&lt;br /&gt;[environment setObject: number forName: @"x"];&lt;br /&gt;[conversation interpretScript: @"^ (x tan) / (x atan)"];&lt;br /&gt;id result = [conversation result];&lt;br /&gt;&lt;br /&gt;[values addObject: result];&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;values beeing a NSMutableArray containing the numbers returned by the steptalk function (the ^ in smalltalk is equivalent to a "return" statement in C). As you can see, difficult to have a scripting framework simpler than that to work with!&lt;br /&gt;&lt;br /&gt;You can see that in the environment object I put an "external" (to the script) object, &lt;b&gt;number&lt;/b&gt;, and this object can be accessed from the script using the given name (here, &lt;b&gt;x&lt;/b&gt;). You could, instead of getting the script result, get the value of specific objects you put in the environment. &lt;br /&gt;&lt;br /&gt;Anyway, it's very simple to add StepTalk support to your program, and recent versions even add &lt;a href="http://steptalk.blogspot.com/"&gt;nifty UI widgets&lt;/a&gt; to play with scripts.. also, StepTalk is not "just" a Smalltalk scripting framework : it can actually use other languages. On GNUstep for instance there's an  &lt;a href="http://www.iolanguage.com/"&gt;Io&lt;/a&gt; bundle, so you could use Io instead of Smalltalk, etc. (it's actually fairly easy to add languages to StepTalk).&lt;br /&gt;&lt;br /&gt;Note also that StepTalk automatically bridge the numbers in the script to actual NSNumber instances... which is how I decided to implement the math functions, and this actually demonstrate a very cool Objective-C feature; NSNumber doesn't &lt;i&gt;have&lt;/i&gt; thoses sin,cos,mod.. math functions; so in another programming language we'd be stuck. A "normal" solution could be to modify StepTalk so that it would use something else than NSNumber (say, a custom class of ours), or reversely, to add those functions to NSNumber and recompile -- wait! you &lt;i&gt;could&lt;/i&gt; do that with GNUstep (because we have the source), but certainly not with Cocoa on OSX. So how comes it works ? &lt;br /&gt;&lt;br /&gt;Well, Objective-C has this great feature: &lt;b&gt;categories&lt;/b&gt;. A Category lets you add &lt;i&gt;new&lt;/i&gt; code to an existing class, at runtime. So that's simply what I did here -- I created a category on NSNumber with my specific math functions. Without needing to have access to the NSNumber source, or to recompile Foundation. Isn't it great ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-116519322770508884?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/116519322770508884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=116519322770508884' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/116519322770508884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/116519322770508884'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2006/12/pointillist.html' title='Pointillist'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-116456376657737318</id><published>2006-11-26T17:41:00.000Z</published><updated>2007-03-17T21:03:01.866Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='phd thesis'/><category scheme='http://www.blogger.com/atom/ns#' term='cocoa'/><title type='text'>System simulation</title><content type='html'>I'm (rather predictably) still working on my distributed rendering system.. but as it's a bit tiresome to make some modifications, recompile, restart.. -- more importantly, that it takes &lt;i&gt;time&lt;/i&gt; to do so (1), I wrote a simple and nice simulation program that let me try different rendering/clustering strategies easily, swap them, evaluate or compare them, etc. That way I can concentrate on them rather than waiting 5-10 minutes to start visualizing a one gigabyte dataset on the cluster. Even better, the final idea is to integrate the simulation in the real system (it actually already gets timings from the real one and extrapolate the results) in order to have a nice feedback loop: run things, keep simulations in parallel, switch to other strategies if the simulation says it's better, update timings if needed, etc. Here is a screenshot of the current program:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/screenshots/DLab-0.1.png"&gt;&lt;img src="http://www.roard.com/screenshots/DLab-0.1.jpg" width="320"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The screenshot shows three simulated clustering strategies; basically we want to render an image using multiple computers. Each computer having one or more rendering agent. We divide the image in tiles and the rendering agents' job is to render them, send them back to the clustering agent, which will recompose the final image to send it back to a visualisation client. It's a fairly straightforward distributed technic. What's more interesting here is that we have three different strategies defining which tiles are sent to which agent. The simplest one is to divide the total number of tiles by the number of agents, and send continuous tiles up to that number for each agent (second bottom figure -- each color represents one agent). Another is to alternate tiles (eg no consecutive tiles are sent). Another one is to break the tiles according the the image complexity (first bottom left figure). The image complexity beeing the time each tile took to be renderered (bottom right figure).&lt;br /&gt;&lt;br /&gt;The graphic shows the evolution of these three strategies depending on the number of agents. We can see that the alternate tiles strategy works fairly well usually (because the complexity is more evenly distributed), unless we ends on a multiple of the width (16), meaning the tiles are aligned, and thus the complexity is not properly distributed. Having a simulator can let us choose which strategy is the best before having to really use it.&lt;br /&gt;&lt;br /&gt;(1) which break one of my Rules of Programming, ie, keep the &lt;a href="http://en.wikipedia.org/wiki/Read-eval-print_loop"&gt;REPL&lt;/a&gt; (Read-Eval-Print-Loop) cycle as short as possible: as obviously the shortest it is, the more ideas you can try.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-116456376657737318?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/116456376657737318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=116456376657737318' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/116456376657737318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/116456376657737318'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2006/11/system-simulation.html' title='System simulation'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-116093145370264728</id><published>2006-10-15T17:55:00.000+01:00</published><updated>2007-03-17T20:31:08.355Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>e-book</title><content type='html'>I just read that &lt;a href="http://www.slate.com/id/2151525/"&gt;article&lt;/a&gt; about the new Sony's e-book reader (from the &lt;a href="http://osnews.com/comment.php?news_id=16175"&gt;osnews story&lt;/a&gt;). That made me think a bit about e-book.&lt;br /&gt;&lt;br /&gt;I would &lt;b&gt;love&lt;/b&gt; to have a "true" ebook. For what ? well, in my case, for reading technical documentation and research papers, possibly some websites. Another excellent usage would be to read newspapers and magazines, or research journals. Or if you are a student, another really obvious target are textbooks. And think about the manga/comics market.&lt;br /&gt;&lt;br /&gt;Why would it be interesting to have an ebook for all that ? What's the pattern ? Simply, it's the volume: in all these use cases, you end up with lots of paper very easily (and in a short time frame), and having one device to gather everything would be nice.&lt;br /&gt;&lt;br /&gt;But books ? books do not really have a volume problem -- most persons do not read or carry dozen of books at the same time, and the minor inconvenience to carry 2-3 books for a very long journey is not enough to warrant paying premium to have an ebook. Sure, if you have a device able to read pdf and newspapers, it can handles a book, so you'll have books too of course. Having your whole library in one device could be appealing to some too, I guess. But if the main advantage of an ebook reader is answering the "volume" problem, then it means books almost certainly shouldn't be the main target. &lt;br /&gt;&lt;br /&gt;So if books aren't (or should not be) the real target, and if things like documentation, newspapers, textbooks are, what does it mean ? Well, it means your device should provide the same features you'd expect from paper when dealing with these. Specifically, you absolutely need annotation. But more than annotation, the device shouldn't be content to only be "as good as paper" -- if you want people to buy it, you need to be &lt;b&gt;better&lt;/b&gt;. An obvious candidate feature (come on, we are talking about &lt;i&gt;electronic&lt;/i&gt; documents) is to provide a much better way to &lt;b&gt;manage&lt;/b&gt; your document collection. Things like searching, grouping, sorting, adding whatever annotation/metadata you want, do specific things that use these categories (like marking some documents, pages or text to be sent to somebody else via email, etc)... &lt;br /&gt;&lt;br /&gt;Then, you will have something that people (and companies, and schools) might be interested in. &lt;br /&gt;&lt;br /&gt;The screen technology is imho nearly irrelevant, as long as the battery life is good enough (~7-8 hours in continuous usage) and with a good enough resolution. While e-ink is extremely interesting and answers perfectly the battery/resolution problem, it's too slow for the moment (it's also black and white, not absolutely dramatic but something that reduce a bit its impact). Between an e-ink display and a high resolution lcd screen, even if the battery life would be much shorter on the device with the lcd screen, if it provides the kind of characteristics I described above, I will definitely choose it over the e-ink display, and I bet that many persons would do just the same.&lt;br /&gt;&lt;br /&gt;Right now, the sony ebook looks more like a solution looking for a problem than anything else, and they focus their efforts on the wrong side (books).&lt;br /&gt;&lt;br /&gt;They fail at everything I described above: it's slow to navigate, management of your documents seems inexistant, pdf aren't even there apparently (seriously!), no annotations... the only good thing (while not perfect) is the e-ink display, but they seem to think it's enough. It's not.&lt;br /&gt;&lt;br /&gt;If I had money (and time) and more electronic skills I'd definitely want to create a good e-book device. Why not something based on &lt;a href="http://www.gumstix.com/"&gt;gumstix&lt;/a&gt; + a high resolution lcd screen. There's a market waiting to be picked here.&lt;br /&gt;&lt;br /&gt;edit: to be fair, checking the &lt;a href="http://www.learningcenter.sony.us/assets/itpd/reader/"&gt;sony page&lt;/a&gt; they indicate that the device actually CAN read pdf and doc... But only after converting them to the proprietary format Sony uses. Crap ! :D (oh and it plays AAC and MP3 too)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-116093145370264728?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/116093145370264728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=116093145370264728' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/116093145370264728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/116093145370264728'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2006/10/e-book.html' title='e-book'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-115714456797461453</id><published>2006-09-01T21:57:00.000+01:00</published><updated>2007-03-17T20:31:21.784Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='phd thesis'/><title type='text'>Pfff...</title><content type='html'>I finally finished writing the last remaining things for my system, integrated everything, and could generate the data for the paper just in time... That was a hell of a week, but at least this deadline is over now ! I'll sleep a bit :-P &lt;br /&gt;&lt;br /&gt;I will also try to resume a minimum my gnustep's activity next week (been more than a couple of months it's on hold) -- I have a couple of things to do that shouldn't take much time from me and that would be rather welcomed :-P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-115714456797461453?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/115714456797461453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=115714456797461453' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/115714456797461453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/115714456797461453'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2006/09/pfff.html' title='Pfff...'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-115222352755809611</id><published>2006-07-06T22:58:00.000+01:00</published><updated>2007-03-17T20:31:34.831Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='phd thesis'/><title type='text'>UDP ...</title><content type='html'>Well, I'm not working much on anything related to GNUstep/étoilé lately -- I have my thesis to write for december, which also means I need to  finish properly my visualisation system soon... &lt;br /&gt;&lt;br /&gt;I changed completely the communication stack -- exit XMLRPC/TCP, welcome lossy UDP communication -- good things, it enables broadcast and low latency, bad things... well, using broadcast as an asset, you need to change quite a lot the way you think your program. But it's worth it: not only the end result (the visualization) can be broadcasted, which is nice, but moreover, the rendering process itself can take advantage of broadcasting to be more efficient. Anyway. Here is a screenshot showing a broadcasted MIP visualization of the CThead dataset:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://cs.swan.ac.uk/~csnicolas/broadcast.jpg"&gt;&lt;img src="http://cs.swan.ac.uk/~csnicolas/broadcast-small.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The rendering itself is done on a cluster connected to these 3 machines through a simple udp tunnel. Works quite well..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-115222352755809611?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/115222352755809611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=115222352755809611' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/115222352755809611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/115222352755809611'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2006/07/udp.html' title='UDP ...'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-114806563960325150</id><published>2006-05-19T20:04:00.000+01:00</published><updated>2007-03-17T20:31:55.334Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='phd thesis'/><category scheme='http://www.blogger.com/atom/ns#' term='talk'/><title type='text'>Flow, State and Persistence</title><content type='html'>I gave a talk today discussing state and persistence in your work environment, for the &lt;a href="http://cs.swan.ac.uk/~csdavec/NoGrownups/schedule.php"&gt;No Grownups Seminar Series&lt;/a&gt;.. Here is a &lt;a href="http://www.xdev.org/talks/Flow,%20State%20&amp;%20Persistance.html"&gt;flash version&lt;/a&gt; of the talk, and here is the &lt;a href="http://www.xdev.org/talks/Flow,%20State%20&amp;%20Persistance.pdf"&gt;pdf one&lt;/a&gt;. Have a look !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-114806563960325150?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/114806563960325150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=114806563960325150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/114806563960325150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/114806563960325150'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2006/05/flow-state-and-persistence.html' title='Flow, State and Persistence'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-114738486594325305</id><published>2006-05-11T22:52:00.000+01:00</published><updated>2007-03-17T20:59:23.457Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><title type='text'>RTFD</title><content type='html'>Well, I was idly thinking that I could move the HTML parsing code of HelpViewer in a GNUstep TextConverter bundle (so that *any* application using text would be automagically able to load html... or at leas the particular HelpViewer brand ;-), so I looked into the RTF TextConverter to see how that worked. It's fairly simple in fact :-)&lt;br /&gt;&lt;br /&gt;But reading the code, I also realized that adding RTFD support (RTFD are basically RTF documents + Images) would be trivial. I am actually fairly surprised nobody did that before, particularly as I remember numerous complaint about its non-existence :-/&lt;br /&gt;&lt;br /&gt;So, I modified the RTF parser to deal with the \NeXTGraphic tag, and it seem to work well -- at least reading RTFD documents that come from Mac OS X. Though, the actual grammar I used for dealing with it is pretty crude, so I wouldn't be surprised if some documents do not work (likely old NeXT documents... OS X documents produced by TextEdit seem fairly consistent with what I did). Anyway now the basic support is done, tweaking the grammar won't be difficult if it's needed.&lt;br /&gt;&lt;br /&gt;Here is a screenshot showing two documents opened in Ink.app (and obviously no modifications were needed in Ink.app...):&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/screenshots/etoile-shot3.png"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/screenshots/etoile-shot3.png" width="320"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;It's committed on the gnustep repository, so you can try it by updating and reinstalling the RTF TextConverter bundle.&lt;br /&gt;&lt;br /&gt;I'm thinking I'll perhaps commit my actual HelpViewer version (as it can use rtf files) without waiting for the html parser to be finished... plus "commit early commit often" is a good idea ;-) (which I don't follow enough...)&lt;br /&gt;&lt;br /&gt;We could write a simple Text editor dealing with links, etc. as well. Oh well we'll see.. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-114738486594325305?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/114738486594325305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=114738486594325305' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/114738486594325305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/114738486594325305'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2006/05/rtfd.html' title='RTFD'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-114721886010851638</id><published>2006-05-10T00:49:00.000+01:00</published><updated>2007-03-17T20:59:40.506Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><title type='text'>It doesn't hurt...</title><content type='html'>Things move quickly with etoile, so here's another screenshot... note that the shadows are ok now with xcompmgr and Azalea+EtoileMenu, that the menu items aren't displaced anymore, and that the info panel was updated (yeah, yeah, it doesn't improve the experience, but it's nice to have ^_^). Saso even added a small animation when you click on the etoile logo in the middle... pfff! ;-)&lt;br /&gt;&lt;br /&gt;Anyway, time to work on helpviewer.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/screenshots/etoile-shot2.png"&gt;&lt;br /&gt;&lt;img src="http://www.roard.com/screenshots/etoile-shot2.png" width="320"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-114721886010851638?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/114721886010851638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=114721886010851638' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/114721886010851638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/114721886010851638'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2006/05/it-doesnt-hurt.html' title='It doesn&apos;t hurt...'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-114700823320259157</id><published>2006-05-07T14:19:00.000+01:00</published><updated>2007-03-17T21:00:13.468Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><title type='text'>Etoile screenshot</title><content type='html'>Just for fun.. Here is a current screenshot of etoile, showing the EtoileMenuServer, Azalea (the windowmanager), Nesedah (the theme) and HelpViewer... Things start to work together ;-) [note that the shadow should not/will not appear under the helpviewer menu item...]&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://www.roard.com/screenshots/etoile-shot1.png"&gt;&lt;img src="http://www.roard.com/screenshots/etoile-shot1.png" width="320"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-114700823320259157?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/114700823320259157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=114700823320259157' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/114700823320259157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/114700823320259157'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2006/05/etoile-screenshot.html' title='Etoile screenshot'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-114667372715777196</id><published>2006-05-03T16:44:00.000+01:00</published><updated>2007-03-17T20:33:45.603Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><title type='text'>Helpviewer and Help System in GNUstep</title><content type='html'>I -- finally !! -- started reworking on helpviewer lately -- as the &lt;a href="http://www.roard.com/helpviewer/"&gt;last official version&lt;/a&gt; (0.3) doesn't work properly with gnustep (due to changes in GSHTMLParser...). The first goal was to have something working again -- that was fairly easy, by replacing GSHTMLParser by GSXMLParser. Though, it meant that you couldn't use single tags like "br", as you (obviously) need to close them in xml. &lt;br /&gt;&lt;br /&gt;I then decided to more or less deprecate the hold "help" xmlish document format and its custom tags, and implement an xhtml parser instead, and while I was here, by using NSXMLParser rather than GSXMLParser.&lt;br /&gt;&lt;br /&gt;Exit "intelligent" tags that deal with figures or references, but on the other hand we can reuse html documents -- eg it's probably easier to write documents now than it was with the previous custom xml tags, as you should be able to use standard html editor... or if you want to write your documents by hand, well, html is a slightly more known format anyway ! &lt;br /&gt;&lt;br /&gt;As we remove "dynamic" behavior, we need to have document completely generated beforehand; eg it will be the document creator application's duty (or the writer) to generate proper references, etc. And yes I somehow plan to write such an editor, but in the meantime you'll be able to easily write/convert your existing html documentation anyway ;-)&lt;br /&gt;&lt;br /&gt;Though I'm not entirely fixed -- some of those dynamic behaviour could be coded as specific div tags after all...&lt;br /&gt;&lt;br /&gt;Anyway, the importance for the help is to be displayed in the same, standard way. So basically at the moment it's a bit like if helpviewer would provide its own css style to display documentation, that you can't change.&lt;br /&gt;&lt;br /&gt;Another feature that need to be added is a proper search function using indexation (LuceneKit, here we are !). Didn't do anything about that yet, but I will probably write a command line tool that take a help document, generate an index and put the index in the document..&lt;br /&gt;&lt;br /&gt;So.. apart from ditching the old xml format to use more common html tags name, what changed ? Well, the structure of the help document changed quite a bit too :-)&lt;br /&gt;&lt;br /&gt;Before, a help document was basically a bundle (==a folder) containing .xlp files (xml files using the previous syntax) and other resources (images). One file was mandatory, "main.xlp", that was loaded by default; other files were loaded following links written in main.xlp.&lt;br /&gt;&lt;br /&gt;Now, it's different :-)&lt;br /&gt;&lt;br /&gt;A help document is still a bundle, obviously -- what better way to distribute a help file :  you can have various resources in various languages, all in the same place !&lt;br /&gt;&lt;br /&gt;But the organisation inside is different. The document can still be segmented in multiple files (now html files), but the structure of the document simply reflect the actual content of the bundle -- eg helpviewer will simply show you the files and directories contained in the bundle. Directories act as a way of having different parts in a document, as they contain other html files. You can (actually it's mandatory for the moment, although I will support /not/ having an index.plist) use an index.plist to choose which file/directory is displayed in helpviewer, and with which name, and in which order. The index.plist file contains a simple ascii plist containing a list of key values, where keys are the filenames and values are the displayed names.&lt;br /&gt;&lt;br /&gt;Of course, you can still use links in the html documents too, but the actual structure of the document doesn't depend on that.&lt;br /&gt;&lt;br /&gt;One nice thing with it is that you are not at all tied to html documents -- in fact, the first thing I implemented was an "txt" document and later on a "rtf" document (a shame rtfd doesn't work). And anyway I find this new structure much cleaner and simpler...&lt;br /&gt;&lt;br /&gt;So... what's the plan now ? Well, I ported nearly all the previously existing functionalities to the new parser (links, etc), so once it's done and usable, I will commit a 0.4 version on the étoilé repository; then it will be nice to add proper support for search/indexing using LuceneKit. After that... well, what would be good to do, is to modify gnustep to have NSHelpManager directly use something like helpviewer -- eg, instead of using helpviewer as a separate application, you'll find the same functionalities of helpviewer, directly in a NSHelpPanel, so that help acts as "private" to an application, like it did on openstep. Probably the good approach would be to modify gnustep to easily support bundles to implement this kind of additional behavior (actually, very similar to GSAppKitUserBundles, but.. I don't know, something perhaps slightly more formalized..), and code such a bundle :-)&lt;br /&gt;&lt;br /&gt;After all that, I'd like to rework on my "semantic" editor, and extend it to a nice document (and help) writer. We'll see...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-114667372715777196?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/114667372715777196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=114667372715777196' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/114667372715777196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/114667372715777196'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2006/05/helpviewer-and-help-system-in-gnustep.html' title='Helpviewer and Help System in GNUstep'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-114235064686583375</id><published>2006-03-14T15:34:00.000Z</published><updated>2007-03-17T20:33:55.423Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><title type='text'>Camaelon Themes</title><content type='html'>I am quite impressed that even without any specific documentation explaining how to do a theme, people are willing to create them:&lt;br /&gt;&lt;br /&gt;two new themes for Camaelon recently appeared... Check &lt;a href="http://etoile-project.org/etoile/mediawiki/index.php?title=CamaelonThemes"&gt;here&lt;/a&gt; for a list.&lt;br /&gt;&lt;br /&gt;Very cool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-114235064686583375?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/114235064686583375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=114235064686583375' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/114235064686583375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/114235064686583375'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2006/03/camaelon-themes.html' title='Camaelon Themes'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-114159875292632828</id><published>2006-03-05T22:43:00.000Z</published><updated>2007-03-17T20:58:31.777Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='demo'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='fosdem'/><category scheme='http://www.blogger.com/atom/ns#' term='talk'/><title type='text'>GNUstep / Fosdem 2006</title><content type='html'>This year's &lt;a href="http://www.fosdem.org"&gt;Fosdem&lt;/a&gt; was, as usual, really cool and quite busy :-)&lt;br /&gt;&lt;br /&gt;Here is a page with some pictures, slides and videos of the gnustep talks: &lt;a href="http://www.xdev.org/fosdem2006"&gt;http://www.xdev.org/fosdem2006&lt;/a&gt;. I'll upload the rest of the videos probably during the next week...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-114159875292632828?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/114159875292632828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=114159875292632828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/114159875292632828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/114159875292632828'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2006/03/gnustep-fosdem-2006.html' title='GNUstep / Fosdem 2006'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-113830439842682222</id><published>2006-01-26T19:20:00.000Z</published><updated>2007-03-17T20:34:35.083Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='nokia 770'/><title type='text'>Foundation</title><content type='html'>After some efforts, I had everything compiled -- ffcall, foundation, appkit, etc. for the nokia. But then my test program crashed :-)&lt;br /&gt;&lt;br /&gt;Removing extra libs (hm.. ffcall.. :-/ ) I have something working though: Foundation !&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[ note that I got the NXConstantString error, so it looks like library loading order matters (lobjc / lgnustep-base)... changing the ordering in the makefiles make it works though ]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Now.. I compiled gnustep-gui and gnustep-back, both with xlib and art. But the xlib backend crash (it can't find any available font on the nokia apparently..), and the art backend (after some efforts -- #ifdef XSHM to get rid of any XShm calls...) "nearly" works: with my test application (a simple info panel) it displays a window, but without any content (plain white), and complains about bad window... Yet it seems to receive events (I can click on the invisible buttons ;-) so it looks like some art display problem, perhaps just because the nokia uses a non conventional color ordering / depth.&lt;br /&gt;&lt;br /&gt;Well I need to come back on ffcall and check if it's the culprit or not for the crashing thing -- having ffcall won't be bad for the gui :-) and try to understand what's wrong with backart... but all in all things progress ;-)&lt;br /&gt;&lt;br /&gt;ah, I also did a very stupid mistake the other day, compiling gcc for arm-softfloat. Naively I thought you needed a soft fp implementation, as the arm doesn't have a hardware fp. But what I didn't know is that there's two kind of soft fp -- kernel and softfloat. Worse, you can't link binaries compiled with different fp emulation. And of course, the nokia is compiled with kernel fp emulation, not arm-softfloat.. So I was good for recompiling gcc ... &lt;br /&gt;&lt;br /&gt;Though, one good thing is that with arm-softfloat ffcall didn't compile at all (seems that the asm bits of ffcall uses the fp registers for the arm platform), while now it compiles (but as I said it seemed to be the cause of the program's crash, so it's perhaps not as encouraging as it seems ^_^ -- although I need to double-check and recompile things nicely). Considering libffi closures don't work on the arm, if ffcall works that's a good thing :)&lt;br /&gt;&lt;br /&gt;Anyway as soon as I have something working decently I'll post a full guide to cross-compile GNUstep on the nokia (and probably some binary packages too if you just want to install it on the nokia).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-113830439842682222?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/113830439842682222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=113830439842682222' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/113830439842682222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/113830439842682222'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2006/01/foundation.html' title='Foundation'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-113821254290750623</id><published>2006-01-25T17:54:00.000Z</published><updated>2006-01-25T18:16:00.273Z</updated><title type='text'>Nokia 770 + Objective-C</title><content type='html'>I finally had the time to try to do something with the Nokia 770.. and ended up with a gcc + objective-c support that can cross compile for the arm processor. I simply used &lt;a href="http://kegel.com/crosstool/"&gt;crosstool&lt;/a&gt; with the following script:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;set -ex&lt;br /&gt;TARBALLS_DIR=$HOME/downloads&lt;br /&gt;RESULT_TOP=/opt/crosstool&lt;br /&gt;export TARBALLS_DIR RESULT_TOP&lt;br /&gt;GCC_LANGUAGES="c,objc"&lt;br /&gt;export GCC_LANGUAGES&lt;br /&gt;&lt;br /&gt;# Really, you should do the mkdir before running this,&lt;br /&gt;# and chown /opt/crosstool to yourself so you don't need to run as root.&lt;br /&gt;mkdir -p $RESULT_TOP&lt;br /&gt;&lt;br /&gt;# Build the toolchain.  Takes a couple hours and a couple gigabytes.&lt;br /&gt;&lt;br /&gt;#eval `cat arm-softfloat.dat gcc-3.3.3-glibc-2.3.2.dat` sh all.sh --notest&lt;br /&gt;#eval `cat arm-softfloat.dat gcc-3.4.0-glibc-2.3.2.dat` sh all.sh --notest&lt;br /&gt; eval `cat arm-softfloat.dat gcc-3.4.1-glibc-2.3.3.dat` sh all.sh --notest&lt;br /&gt;#eval `cat arm-softfloat.dat gcc-3.4.1-glibc-20040827.dat`  sh all.sh --notest&lt;br /&gt;&lt;br /&gt;echo Done.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Compiling a simple C program and copying it on the nokia worked fine, so I wrote a simple ObjC test program.. and after copying the libobjc.* files and changing the LD_LIBRARY_PATH to point to a local lib directory, it worked too.&lt;br /&gt;&lt;br /&gt;So far, so good ! &lt;br /&gt;&lt;br /&gt;Now I just need to compile Foundation, then AppKit, then -back ... :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-113821254290750623?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/113821254290750623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=113821254290750623' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/113821254290750623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/113821254290750623'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2006/01/nokia-770-objective-c.html' title='Nokia 770 + Objective-C'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-113292830184176807</id><published>2005-11-25T14:09:00.000Z</published><updated>2007-03-17T21:00:38.283Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><title type='text'>Shiny screenshot</title><content type='html'>Well, I spent the evening fixing the ubuntu I broke.. (bad r300 driver, bad..) but then I used the occasion to pass my hoary into a dapper, and in the end (X freezed with it..) to a breezy. And finally everything works fine, _again_ ... pfiew.. (and the synaptic driver decided to work too, yeah). Well, dapper is by definition unstable, so that's my fault. Anyway, I used the occasion to try the composition features of X, and as we apprently lack good screenshots in the GNUstep world, here a shiny one:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://www.roard.com/screenshots/gnustep-desktop.png"&gt;&lt;img src="http://www.roard.com/screenshots/gnustep-desktop.png" width="320" height="200"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Surprisingly with my non-accelerated ati radeon the shadows don't slow particularly the display, so I'm keeping them -- incredible how they add a proper "finished" feeling... &lt;br /&gt;&lt;br /&gt;Now I'm just waiting for the next X release (cvs compilation of xorg froze the powerbook) to have this damn ati radeon *accelerated*, because Alex Malmberg GNUstep OpenGL backend is neat (woosh windows disappear in spinning), but.. er... unusable without a 3D acceleration, of course :-/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-113292830184176807?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/113292830184176807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=113292830184176807' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/113292830184176807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/113292830184176807'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/11/shiny-screenshot.html' title='Shiny screenshot'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-113158266754143056</id><published>2005-11-10T00:20:00.000Z</published><updated>2007-03-17T21:00:48.835Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='cocoa'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>Structured Edition</title><content type='html'>&lt;div align="center"&gt;&lt;a href="http://www.roard.com/screenshots/screenshot_StructuredEditor.png"&gt;&lt;img src="http://www.roard.com/screenshots/screenshot_StructuredEditor.png" width="320" height="259"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I have been playing since a week or so with the Text System on Cocoa/GNUstep... it's not immediately easy to understand, but it's really nice and powerful :-)&lt;br /&gt;It handles automatically lots of things, you can redefine many things too (create specific layout manager to change the way the text is displayed, eg, to "flow" around an image, etc.)..&lt;br /&gt;&lt;br /&gt;For instance, you're supposed to work with NSTextStorage, which contains the content you're editing, and which is supposedly an attributed string (a string plus related attributes -- fonts, links, attachments, etc), and you edit it via a NSTextView. But what if you want MORE than edit an attributed string ? like, say, edit some structured content ? &lt;br /&gt;&lt;br /&gt;Well in fact,the answer is to create a subclass of NSTextStorage that will answer the base methods (just four) of NSTextStorage -- it's in fact a class cluster. So the idea is simply to have on one side your structured document (in my case, a simple array of "Section" objects, containing (optionally) a title and a content), and to have a NSTextStorage that will actually serve as a gateway between the text system (which expect a simple NSAttributedString) and your own structured model... Pretty cool :-) and that way you benefit of all the niceties of the text system..&lt;br /&gt;&lt;br /&gt;The above screenshot is my current editor (which btw I wrote under Cocoa, and recompiled this evening on GNUstep), the button is there to define a selected text as a title.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-113158266754143056?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/113158266754143056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=113158266754143056' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/113158266754143056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/113158266754143056'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/11/structured-edition.html' title='Structured Edition'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-113111950750619826</id><published>2005-11-04T15:48:00.000Z</published><updated>2007-03-19T01:20:25.997Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><title type='text'>Gorm on Windows</title><content type='html'>Gürkan posted this screenshot of Gorm on Windows :&lt;br /&gt;&lt;a href="http://www.phys.ethz.ch/~sengun/GNUstep.Win.Gorm.gif"&gt;&lt;img src="http://www.phys.ethz.ch/~sengun/GNUstep.Win.Gorm.gif" width="320" height="200"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ok, the theme used is.. well, the default NeXT theme :-) which doesn't really fit well with the Windows GUI. But still, it's quite cool to have Gorm working on Windows like that :-) (and hopefully once I finish integrating Camaelon -gui modifs somebody will write a Windows theme using the win32 theme api !)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-113111950750619826?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/113111950750619826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=113111950750619826' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/113111950750619826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/113111950750619826'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/11/gorm-on-windows.html' title='Gorm on Windows'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-113060776777585912</id><published>2005-10-29T18:40:00.000+01:00</published><updated>2007-03-17T20:35:46.287Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><title type='text'>GNUstep/Gorm videos</title><content type='html'>I uploaded a new &lt;a href="http://www.xdev.org/gnustep/datasetdemo/index.html"&gt;video&lt;/a&gt; showing a custom palette in Gorm and its use -- isn't it great to code a complex volume dataset visualizer without a line of code ? ^_^&lt;br /&gt;&lt;br /&gt;I also cleaned up a bit the &lt;a href="http://www.xdev.org/gnustep"&gt;main page&lt;/a&gt;.. &lt;br /&gt;&lt;br /&gt;I should probably make a video showing the services in action !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-113060776777585912?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/113060776777585912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=113060776777585912' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/113060776777585912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/113060776777585912'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/10/gnustepgorm-videos.html' title='GNUstep/Gorm videos'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-113035678832699514</id><published>2005-10-26T20:49:00.000+01:00</published><updated>2007-03-17T20:36:20.524Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Subtext</title><content type='html'>Found on &lt;a href="http://martinfowler.com/bliki/"&gt;Martin Fowler's bliki&lt;/a&gt;,  an interesting short summary of the OOPSLA'05 conference, along with interesting links. One of them is &lt;a href="http://subtextual.org/"&gt;Subtext&lt;/a&gt;, a really cool language / programming environment (you perhaps already encounteered it, it was featured on slashdot some time ago...). Definitely something interesting -- check the &lt;a href="http://subtextual.org/demo1.html"&gt;demo&lt;/a&gt; (flash video) and the &lt;a href="http://alarmingdevelopment.org/"&gt;researcher's blog&lt;/a&gt;. Lots of good points / ideas about what should be a programming environment ;-)&lt;br /&gt;&lt;br /&gt;I wonder if we could extend some &lt;a href="http://ide.roard.com"&gt;ideas about ide&lt;/a&gt; to really dump the text editing, or at least relay a lot more on metamodels of the code.. &lt;a href="http://www.dynamicaspects.com/"&gt;Dynamic Aspects&lt;/a&gt; seems to head into that direction ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-113035678832699514?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/113035678832699514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=113035678832699514' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/113035678832699514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/113035678832699514'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/10/subtext.html' title='Subtext'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-112982466570758476</id><published>2005-10-20T16:29:00.000+01:00</published><updated>2007-03-17T20:48:59.586Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='dynabook'/><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='nokia 770'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Nokia 770</title><content type='html'>I received today my new shiny toy, the Nokia 770:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xdev.org/gnustep/nokia/nokia-Images/9.jpg"&gt;&lt;img src="http://xdev.org/gnustep/nokia/nokia-Vignettes/9.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I put online some &lt;a href="http://xdev.org/gnustep/nokia/nokia.html"&gt;pictures&lt;/a&gt; of it..&lt;br /&gt;&lt;br /&gt;First impressions: &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;it's light ! yet it doesn't feel "crap" :-)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;the form factor is surprisingly nice (even if coming from a newton I wouldn't mind a (physically) bigger screen)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;applications are a bit slow to start. Hopefully things will improve -- even if as it is it's ok, I wouldn't mind instantaneous starts ;-)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;redrawing is a bit slow too :-/ is it because of X or gnome.. ?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;the screen is absolutely gorgeous !! really beautiful and luminous :-) (the pictures I took don't completely do it justice)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;playing movie is ok (there's a trailer for ice age 2 on the machine), but could be improved..&lt;/li&gt;&lt;br /&gt;&lt;li&gt;lack of pppoe configuration for wifi VPN (or if there is, it's not obvious, but well, I just got it, so I perhaps overlooked something)&lt;/li&gt; &lt;br /&gt;&lt;li&gt;installing a package is easy :-)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The UI is quite good, as a PDA UI -- definitely better than PocketPC (well, duh..), obviously less good than the newton, but hey, it's not too bad..&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;So well, overall, I'm quite pleased -- the device is indeed very, very cool. Things can be improved, but it's already quite nice. The UI is ok, even if what I would like to do is (obviously ?) install GNUstep on it, and then modify GNUstep to blend on the Maemo platform (with a possible replacing of maemo in an improbable future). Anyway, as it is running linux, it seems an ideal platform for me -- both for experimenting with etoile/gnustep on a PDA (see a &lt;a href="http://camaelon.blogspot.com/2005/09/pda-dynabook-and-etoile.html"&gt;previous post&lt;/a&gt; about that, and see what I &lt;a href="http://camaelon.blogspot.com/2005/07/newton-toil.html"&gt;posted about the newton&lt;/a&gt; for what I think is good on a PDA...) and as a good client for the system I'm working on at uni...&lt;br /&gt;&lt;br /&gt;I'm not sure if there's a market for a "web tablet" device, but I don't think that the Nokia 770 will only be a "web tablet" anyway :-) -- there's already ports of doom, abiword, the GPE pim stuff, etc. &lt;br /&gt;&lt;br /&gt;Nokia has a winner in the linux community I think :-) -- which means that you can expect lots of software for the Nokia, and it already started...  It also look like an excellent device for ebooks, administrators (as an X/VNC/ssh terminal), etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-112982466570758476?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/112982466570758476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=112982466570758476' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112982466570758476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112982466570758476'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/10/nokia-770.html' title='Nokia 770'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-112898768457528601</id><published>2005-10-11T00:35:00.000+01:00</published><updated>2007-03-17T20:37:13.607Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><category scheme='http://www.blogger.com/atom/ns#' term='phd thesis'/><title type='text'>Yeah</title><content type='html'>Just finished (completely, as in "theoretically nothing to add") the paper I was working on for wscg.. (they don't even have a LaTeX template, only a Word one (!!), and it is rather ugly imho..)&lt;br /&gt;&lt;br /&gt;Hopefully I'll have some more free time now to work on camaelon and &lt;a href="http://www.etoile-project.org"&gt;étoilé&lt;/a&gt; ;-)&lt;br /&gt;&lt;br /&gt;Talking about étoilé, Quentin created a &lt;a href="http://www.dromasoftware.com/etoile/blog/"&gt;blog&lt;/a&gt; ! Étoilé dev will use it to rant about the project :-) -- hopefully it will become an interesting news place..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-112898768457528601?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/112898768457528601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=112898768457528601' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112898768457528601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112898768457528601'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/10/yeah.html' title='Yeah'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-112637976576102329</id><published>2005-09-10T19:18:00.000+01:00</published><updated>2007-03-17T20:37:27.650Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>High Order Messaging</title><content type='html'>Marcel Weiher sent a mail on the objc mailing-list about a &lt;a href="http://www.metaobject.com/papers/Higher_Order_Messaging_OOPSLA_2005.pdf"&gt;paper&lt;/a&gt; he wrote (with Stéphane Ducasse) on &lt;a href="http://www.cocoadev.com/index.pl?HigherOrderMessaging"&gt;High&lt;/a&gt; &lt;a href="http://www.macdevcenter.com/pub/a/mac/2004/07/16/hom.html"&gt;Order&lt;/a&gt; &lt;a href="http://www.cocoadev.com/index.pl?HigherOrderMessagingDiscussion"&gt;Messaging&lt;/a&gt;. Basically, HOM is a message that takes another message as a parameter -- like in functional language you have High Order Functions that take a function as parameter. &lt;br /&gt;&lt;br /&gt;Ok, nice name .. but why is it interesting ? Well, you have lots of cases where it's really neat :-) but the most known is to use it for iterations. Imagine you have an array containing objects, and you want to send to all of them a message. In Objective-C you'd do:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;int i;&lt;br /&gt;for (i=0; i&lt;[myArray count]; i++)&lt;br /&gt;{&lt;br /&gt;   id currentElem = [myArray objectAtIndex: i];&lt;br /&gt;   [currentElem aMessage];&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You could also use an enumerator (NSEnumerator) but that doesn't really simplify things. What's the problem with that ? Well, you have code (the for loop..) that you don't really care about, that is actually always the same, you need to deal with each elements, etc. Basically, the programmer's intent is not immediately clear. And of course, the more code you have, the more you can encounteer bugs... So simplifying this pattern would be great. Well, with HOM you will do:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[[myArray do] aMessage];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Better, no ?&lt;br /&gt;&lt;br /&gt;Conceptually, the message "do" takes another message as parameter -- it's a HOM. Here it actually bounces the message to all the elements of the array -- therefore, encapsulating the iteration pattern.&lt;br /&gt;&lt;br /&gt;Technically, it's a rather cool usage of the Objective-C runtime -- no need to change anything to your compiler :-) -- the HOM message actually returns a Trampoline object that will get the message send to it via forwardInvocation. Read the paper for a good description.&lt;br /&gt;&lt;br /&gt;So, using HOM is great for encapsulating the iteration pattern, ok. But after all, we have the makeObjectsPerformSelector.. so why using HOM ?.. Well, the difference is that YOU can create new HOMs, and you are not limited to the iteration pattern :-)&lt;br /&gt;&lt;br /&gt;Another good example from the paper.. You have a delegate object you need to send a message to. You'll have the following code:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;if ( [delegate respondsToSelector: @selector(windowDidClose:) ] &lt;br /&gt;{&lt;br /&gt;  [delegate windowDidClose: self];&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Again, this is a frequent pattern. Moreover, it's prone to errors -- the selector in the test needs to be equal to the message you send.. An HOM equivalent will be:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[[delegate ifResponds] windowDidClose: self];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Elegant, no ?&lt;br /&gt;&lt;br /&gt;Just to finish.. some other examples from the paper:&lt;br /&gt;&lt;br /&gt;Starting a method in a thread is done like that in OpenStep:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[NSThread detachNewThreadSelector: @selector(doSomething) &lt;br /&gt;   toTarget: receiver withObject: nil];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The HOM equivalent:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[[object async] doSomething];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Or say you want to send a message with a delay.. In OpenStep:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[receiver performSelector: @selector(doSomething) &lt;br /&gt;   withObject: nil afterDelay: 1.0];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;With HOM:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[[object afterDelay: 1.0] doSomething];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I remember reading about HOM on Marcel's site before this paper, but this paper is an excellent presentation of the idea and do a great job highlighting the possibilities -- another useful mechanism to add to your toolbox to capture patterns :-)&lt;br /&gt;&lt;br /&gt;Many HOM implementations exists (in addition to Marcel's original, MPWFoundation), that you can check on that &lt;a href="http://www.cocoadev.com/index.pl?HigherOrderMessaging"&gt;page&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-112637976576102329?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/112637976576102329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=112637976576102329' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112637976576102329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112637976576102329'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/09/high-order-messaging.html' title='High Order Messaging'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-112569354581314452</id><published>2005-09-02T21:35:00.000+01:00</published><updated>2007-03-19T01:17:46.718Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynabook'/><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><title type='text'>PDA, Dynabook and Etoile</title><content type='html'>I started to think how Etoile could possibly works on -- and take advantage of -- a PDA or Tablet platform...&lt;br /&gt;&lt;br /&gt;With the help of Jesse Ross I wrote &lt;a href="http://etoile-project.org/etoile/mediawiki/index.php?title=PDA"&gt;this page&lt;/a&gt;&lt;br /&gt; on the Etoile's wiki; another related page I wrote is one about the &lt;a href="http://etoile-project.org/etoile/mediawiki/index.php?title=Dynabook"&gt;Dynabook&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thoughts ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-112569354581314452?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/112569354581314452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=112569354581314452' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112569354581314452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112569354581314452'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/09/pda-dynabook-and-etoile.html' title='PDA, Dynabook and Etoile'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-112535305960526823</id><published>2005-08-29T23:00:00.000+01:00</published><updated>2007-03-17T20:38:43.142Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='smalltalk'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>VERY interesting videos</title><content type='html'>Following a link from the Squeak-dev mailing list... I watched theses two videos (a presentation in two parts) by Alan Kay, circa 87 ... They are brilliant, and extremely interesting. Definitely something to view !&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.archive.org/details/AlanKeyD1987"&gt;Part 1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.archive.org/details/AlanKeyD1987_2"&gt;Part 2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(ps: &lt;a href="http://www.squeak.org"&gt;Squeak&lt;/a&gt; is an incredible environment, and &lt;a href="http://www.seaside.st"&gt;Seaside&lt;/a&gt; is a fantastic web app framework running in Squeak... worth your time..)&lt;br /&gt;&lt;br /&gt;addendum: &lt;a href="http://www.mrl.nyu.edu/~noah/nmr/book_samples/nmr-26-kay.pdf"&gt;Interesting PDF&lt;/a&gt; about PARC's work ...&lt;br /&gt;&lt;br /&gt;addendum 2: another interesting video, an &lt;a href="http://www.csupomona.edu/%7eitac/mediavision/streaming/tae/alan_kay.html"&gt;interview of alan kay&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-112535305960526823?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/112535305960526823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=112535305960526823' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112535305960526823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112535305960526823'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/08/very-interesting-videos.html' title='VERY interesting videos'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-112334869785913265</id><published>2005-08-06T18:16:00.000+01:00</published><updated>2007-03-17T20:58:45.909Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ukuug'/><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='talk'/><title type='text'>Screenshot UKUUG Demo</title><content type='html'>Just to show you how the demo was looking:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/screenshots/screenshot_ukuug2005.png"&gt;&lt;img src="http://www.roard.com/screenshots/screenshot_ukuug2005.png" width="320" height="200"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nice no ? :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-112334869785913265?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/112334869785913265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=112334869785913265' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112334869785913265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112334869785913265'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/08/screenshot-ukuug-demo.html' title='Screenshot UKUUG Demo'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-112334256545993320</id><published>2005-08-06T16:35:00.000+01:00</published><updated>2007-03-17T20:39:10.563Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ukuug'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='talk'/><title type='text'>UKUUG Talk</title><content type='html'>I just gave the UKUUG gnustep presentation an hour ago, and I think it went fine...&lt;br /&gt;Not completely as planned -- I wanted to use keynote on an ibook for the slides part, and use my powerbook under linux to make the demonstration via a vnc connection, and of course... when I tried the setup yesterday it worked without a hitch. But when I tried today just before the presentation the client didn't want to connect for whatever reason .. as I didn't have the time to find what was the problem, I ended doing the keynote presentation with the powerbook (at least it was faster and smoother than if I had used the ibook g3..), and just rebooted under linux for the demo. Not as smooth, but that was ok. &lt;br /&gt;&lt;br /&gt;The GNUstep presentation .. -- well, manipulating apps wasn't that easy as the screen wasn't cloned, so I needed to look to the projection screen instead... ;-) but I was able to present mostly all I wanted:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt; GWorkspace, with Camaelon + the new icons from jasper...&lt;/li&gt;&lt;br /&gt;&lt;li&gt; panel hiding, applications hiding, tear-off menus (but all rather quickly though... not sure I explained well that part)&lt;/li&gt;&lt;br /&gt;&lt;li&gt; the services system, taking the LaTeX service, the Zipper service and the GNUMail service as example (LaTeX in Ink.app, then use Zipper to create some tgz from GWorkspace, and finally select the tgz and mail it via GNUMail...&lt;/li&gt;&lt;br /&gt;&lt;li&gt; GORM -- I started with the basic demo of slider + textview linked together, then I did a demo using a custom palette I wrote yesterday (just for the talk!), which had one object managing a volumetric dataset (a head), and two views rendering the dataset. So it let you create a complete app visualizing a dataset in different way... all in Gorm, without needed to code anything. Pretty nice I thought ;-)&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I could have talked much longer than the authorized time, I forgot to say and show some things, but all in all it went well. At the end of the talk the chairman asked how many people had used GNUstep before the talk (3 persons), and how many will try after the talk (5-6 persons?). With around 20+ persons (?) in the room that wasn't bad ;-)&lt;br /&gt;&lt;br /&gt;Apparently people were impressed by Gorm :-) , and liked the look of the apps ("it's clean") -- good icons and Camaelon did their job I guess ;-)&lt;br /&gt;&lt;br /&gt;I'll put some screenshots later so you could see how did that look..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-112334256545993320?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/112334256545993320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=112334256545993320' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112334256545993320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112334256545993320'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/08/ukuug-talk.html' title='UKUUG Talk'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-112309982617167523</id><published>2005-08-03T21:00:00.000+01:00</published><updated>2007-03-19T01:15:10.923Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='newton'/><category scheme='http://www.blogger.com/atom/ns#' term='ukuug'/><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='talk'/><title type='text'>update...</title><content type='html'>Well, quite a lot of things to do this week... in the end I didn't have time to work on camaelon last weekend (well, I worked on the glyph bug) but camaelon 2  release is still planned soon, along with other étoilé's components (hopefully this weekend ? finally ?) .. I need to fix the display glyph bugs in -gui first..&lt;br /&gt;&lt;br /&gt;Else, I'm preparing the GNUstep &lt;a href="http://www.ukuug.org/events/linux2005/programme/abstract-NRoard-1.shtml"&gt;talk&lt;/a&gt; I'm giving at the &lt;a href="http://www.ukuug.org/events/linux2005/programme/timetable.shtml"&gt;UKUUG 2005 Linux Technical Conference&lt;/a&gt; this saturday at the university of swansea, I'll try to make a cool demo of gorm, showing the power of building apps with components .. ;-)&lt;br /&gt;&lt;br /&gt;On other topics.. my bag was stolen this afternoon *on my desk*, in the lab, when I went to lunch for half an hour... quite a few things inside, like, my passport, my keys, my newton... that really, really sucks. damn. This in a building supposedly with secured access..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-112309982617167523?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/112309982617167523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=112309982617167523' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112309982617167523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112309982617167523'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/08/update.html' title='update...'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-112266517090576153</id><published>2005-07-29T20:23:00.000+01:00</published><updated>2007-03-17T20:39:47.780Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><title type='text'>Camaelon's release</title><content type='html'>Ok, finally arrived home... quite a lot of things to do next week at the lab, so I'll try if I can to release a public version of Camaelon tomorrow (even if you can already grab it from the &lt;a href="https://gna.org/cvs/?group=etoile"&gt;étoilé's cvs&lt;/a&gt; in Bundles/Camaelon, of course !)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-112266517090576153?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/112266517090576153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=112266517090576153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112266517090576153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112266517090576153'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/07/camaelons-release.html' title='Camaelon&apos;s release'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-112237844666326174</id><published>2005-07-26T12:37:00.000+01:00</published><updated>2007-03-17T20:40:03.991Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='copyleft'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>Music</title><content type='html'>... One good thing beeing in holiday, you have more time for playing guitar :-)&lt;br /&gt;So I recorded some songs with my cousin, available on &lt;a href="http://boxson.net/telechargement.php?action=w&amp;id=135"&gt;boxson.net&lt;/a&gt;, a french site that provides hosting, etc., for copyleft music (licence art libre, creative commons...). I think it's great that such initiatives appears beyond the software world... &lt;br /&gt;Anyway. Lots of fun. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-112237844666326174?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/112237844666326174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=112237844666326174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112237844666326174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112237844666326174'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/07/music.html' title='Music'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-112138285271166479</id><published>2005-07-15T00:05:00.000+01:00</published><updated>2007-03-17T21:01:35.958Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><title type='text'>Camaelon 2 ?</title><content type='html'>I committed a few things on the cvs today and yesterday... here's a screenshot of the current results with the theme Nesedah:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/screenshots/screenshot_theme49.png"&gt;&lt;img src="http://www.roard.com/screenshots/screenshot_theme49.png" width="320" height="200"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Just grab Camaelon from &lt;a href="https://gna.org/cvs/?group=etoile"&gt;etoile's cvs&lt;/a&gt;, get &lt;a href="http://www.roard.com/gnustep/Nesedah.theme.tgz"&gt;Nesedah.theme 0.3&lt;/a&gt; and follow the readme :-)&lt;br /&gt;&lt;br /&gt;What's missing before an official Camaelon 2.0 release ? well... there's always something missing... for example I'd like to refactorise GSDrawFunctions to use instance methods instead of class methods, so you could change themes on the fly very easily. But I think that can wait for a 2.1 :-)&lt;br /&gt;&lt;br /&gt;Appart from that, well, there's a couple of problems apparently with NSMatrix, some wrong text color with cells in general (actually this one is a gnustep &lt;a href="https://savannah.gnu.org/bugs/?func=detailitem&amp;item_id=13564"&gt;bug&lt;/a&gt;), and you shouldn't use gnustep to manage the windows with camaelon enabled for now. The menu aren't themed properly (the menu items are, but the menu itself isn't really themed), etc. Nothing very complex overall, so hopefully I'll fix that in the next few days before leaving to France.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-112138285271166479?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/112138285271166479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=112138285271166479' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112138285271166479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112138285271166479'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/07/camaelon-2.html' title='Camaelon 2 ?'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-112134755330274511</id><published>2005-07-14T14:19:00.000+01:00</published><updated>2007-03-17T20:49:32.388Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynabook'/><category scheme='http://www.blogger.com/atom/ns#' term='cool'/><category scheme='http://www.blogger.com/atom/ns#' term='newton'/><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Newton...</title><content type='html'>Received the wifi card and memory card, so I was able to connect the newton to my local network :-)&lt;br /&gt;&lt;br /&gt;After some tweaking, I have NTK (the newton dev environment) running under Classic and connected to the newton using the wifi card :-)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/screenshots/screenshot-NTK.png"&gt;&lt;img src="http://www.roard.com/screenshots/screenshot-NTK.png" width="320" height="200"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Just started to play with NTK and NewtonScript, but it's quite cool. By far not as cool as IB/Gorm ;-) but NewtonScript is a rather nice language, and NTK seems ok, though not fantastic... got a very basic app running here, where what you write on the newton is displayed on the above textfield when you click on the button (very dull, but it's just to test things ;-)&lt;br /&gt;&lt;br /&gt;Not sure what I'll do on it... perhaps a simple calc application where you'd write the numbers / operations and have a "paper trail" ? or perhaps simply a battleship game (there are two already, but they don't use the whole screen, and anyway it's just to play a bit more with NTK/NewtonScript ...). I should also try the xmlrpc lib, it could be cool to use the newton to connect to my visualization system at uni ;-)&lt;br /&gt;&lt;br /&gt;I tried VNC on the newton too, both as client and server, and it's extremely cool.. even if it's very slow :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-112134755330274511?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/112134755330274511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=112134755330274511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112134755330274511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112134755330274511'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/07/newton.html' title='Newton...'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-112093662707212238</id><published>2005-07-09T19:31:00.000+01:00</published><updated>2007-03-17T20:41:25.425Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='dynabook'/><category scheme='http://www.blogger.com/atom/ns#' term='newton'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><title type='text'>Newton &amp; Étoilé</title><content type='html'>Well, I didn't do anything last week on gnustep, I just moved from my previous flat to a new one, and in addition to that I also got a newton 2100 from ebay ;-) -- so most of the remaining free time was passed playing with it...&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://en.wikipedia.org/wiki/Apple_Newton"&gt;Newton&lt;/a&gt; is really an incredible beast. Ok, it's a bit bulky compared to my pocket pc or my palm Vx... (right, it pass the test of the pocket, but barely, and only because I tried on a huge winter coat with big pockets ;-) -- no chances with a summer coat, that's for sure !) but technically it's a marvel. The writing recognition engine is fantastic: it works! :D&lt;br /&gt;And the UI is great, very well thought, you do everything with the stylus in a logical way (example, to erase a word, just scrible on it... to correct a letter (say, lower case to uppercase) you have a variety of approaches, but the simplest is just to rewrite the letter on the previous one ;-) etc. &lt;br /&gt;&lt;br /&gt;The most interesting thing in the UI imho is the "assistant" idea. All datas on the Newton are stored on "soups", kind of databases. Any application can read databases from other apps. So it's easy to really have a synergy between applications. The assistant use that fact: basically, it interprets a sentence (one you just wrote and then pressed the assist icon, or one you wrote directly in the assist window). For example, "remember to buy bread" add the task "buy bread" to the todo list; "meet simon friday" add a new meeting in the calendar application with simon (if you have a simon in your addressbook) on the coming friday, etc. It's truely great. It understand some variations of the formulation (eg, the task "schedule" will be triggered when it encounteers the words "schedule, meet, meet me, talk to, breakfeast, lunch, dinner, holiday, birthday, b-day,  bday, anniversary). This mechanism is in fact rather simple, but it works very well ! &lt;br /&gt;&lt;br /&gt;The writing recognition is excellent (by far the best I ever tried) as I already said; you can choose between 2 engines, one which works letter-by-letter (and works really well) and another that works by words (with attached letters) that works really well too ;-) (this one use neural networks, so it's said to improve -- but I think it already works well :-)&lt;br /&gt;&lt;br /&gt;You can also choose to save the writing as "ink text", which let you defer the recognition to a later moment. You can also decide to not have recognition and draw instead; there's two drawing modes, one that "improve" the drawings and a raw drawing. The "improve" drawing means that if you draw something close to, say, a square, it will straighten the lines. Great.&lt;br /&gt;&lt;br /&gt;It also can record sound, the use of sound in the UI is quite cool (well, after a while you remove the stylus noises though ;-).&lt;br /&gt;&lt;br /&gt;The UI is simple, readable, it handles copy/paste, you got lots of connectivity (fax, email, printing...)...&lt;br /&gt;Basically, they got everything right, or nearly right ! After playing with it, it's really difficult to understand why Apple decided to kill the Newton -- it's so much better than WindowsCE (well, duh..) and PalmOS ! and the best thing... the data is stored persistently, even without power -- no more fear of losing datas when the battery run off. And the batteries are simply 4 AA standard batteries..&lt;br /&gt;&lt;br /&gt;The incredible thing is that there's still a lot of people using theses, as well as developers -- I'll try plugging a wifi pcmcia card monday on it, and in theory that should work (got the drivers on a memory card -- two pcmcia ports rulez!); it has web browsers, mail clients, even an mp3 player... not bad for a device made in 1997 ! you just have to wonder what it could have become if apple didn't kill it...&lt;br /&gt;&lt;br /&gt;You can program it in Java (there's a waba port) or C/C++, although the normal way to write GUI apps is to use NewtonScript, an interesting dynamic language, object-oriented, based on prototypes. &lt;br /&gt;&lt;br /&gt;An interesting page showing you some videos of the Newton: &lt;a href="http://www.newtenlightment.de/downloads.html#movies"&gt;http://www.newtenlightment.de/downloads.html#movies&lt;/a&gt;&lt;br /&gt;This one is great too, with a commercial video and its transcript: &lt;a href="http://www.aresluna.org/guidebook/extras/videos/welcometonewton"&gt;http://www.aresluna.org/guidebook/extras/videos/welcometonewton&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In fact, in many ways, I think NewtonOS is a better OS (UI-wise) than current ones for most of the people, with its emphasis on communication, organisation of personal datas (PIM), and in short, with everything centered around the datas, not the apps. &lt;br /&gt;&lt;br /&gt;We should have that kind of orientation in our current computers !! (Actually, Apple made the eMate, which was a NewtonOS device with a keyboard, with a shape a bit similar to the ibook palourde). &lt;br /&gt;&lt;br /&gt;So obviously, it gives me a couple of ideas for Étoilé. I think we should deliver a small suite of PIM applications, with shared databases (well, we already wanted to do that to some extent, but what I mean is, we should try to have a way to easily create "open databases" that Étoilé applications would use to save their datas. Such "open" databases would be public (well, limited to the user's app) and easily "discoverable" -- probably a good idea to include their schema/docs in them for example... need to think a bit about that, and I should read in more detail the newton programming book. Yes, our talks about db-enabled fs and this remarks about "open" databases sounds like WinFS, I know ;-) -- but WinFS' goals are actually very interesting.&lt;br /&gt;&lt;br /&gt;The other thing is, we should have an assistant-like technology (I sent a mail on the mailing list detailing that point).&lt;br /&gt;&lt;br /&gt;A last thing... current PDA/TabletPC UI completeley sucks. Étoilé could perhaps be an excellent choice for a linux-based tabletpc or pda -- as everything already works with only one button (even if it handles more, of course), which is great for such devices, and if we manage to have a good synergy between apps, particularly PIM apps, as well as an assistant technology, that could interest people...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-112093662707212238?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/112093662707212238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=112093662707212238' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112093662707212238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112093662707212238'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/07/newton-toil.html' title='Newton &amp; Étoilé'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-112014386776584631</id><published>2005-06-30T15:45:00.000+01:00</published><updated>2007-03-17T20:59:03.429Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='demo'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='talk'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>How to make a flash video recording on linux ?</title><content type='html'>It's rather easy -- first, you need &lt;a href="http://www.unixuser.org/~euske/vnc2swf/"&gt;vnc2swf&lt;/a&gt;, and a vnc server.&lt;br /&gt;Start the vnc server on a second X port:&lt;br /&gt;&lt;pre&gt;vncserver -geometry 1024x768 :1&lt;/pre&gt;&lt;br /&gt;Then you can launch vnc2swf:&lt;br /&gt;&lt;pre&gt;vnc2swf out.swf :1&lt;/pre&gt;&lt;br /&gt;That will connect it to the vncserver running on localhost:1, and will output the swf file to out.swf. Start the recording by hitting F9; hitting it again will pause, etc.&lt;br /&gt;&lt;br /&gt;Now, to add sound, there isn't a nice way of doing it... but what you can do (and that's what I did) is to launch a sound recorder application in parallel, and start the recording at the same time as the video. At the end of your video recording, you should have the video (out.swf) and a sound file from your recorder app, say "voice.aif". You then need to convert the sound file in mp3 (use the mp3 encoder lame for example). &lt;br /&gt;&lt;br /&gt;After that, you just need to add the mp3 to the swf file, and you can do that using &lt;a href="http://www.unixuser.org/~euske/vnc2swf/"&gt;edit_vnc2swf&lt;/a&gt; :&lt;br /&gt;&lt;pre&gt;edit_vnc2swf.py -o final.swf -a voice.mp3 out.swf&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The last step is to create a html file containing the following section:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;object width="1024" height="768"&lt;br /&gt;CODEBASE="http://active.macromedia.com/flash5/cabs/swflash.cab#version=5,0,0,0"&amp;gt;&lt;br /&gt;&amp;lt;param name="MOVIE" value="final.swf"&amp;gt;&lt;br /&gt;&amp;lt;param name="PLAY" value="true"&amp;gt;&lt;br /&gt;&amp;lt;param name="LOOP" value="false"&amp;gt;&lt;br /&gt;&amp;lt;param name="QUALITY" value="high"&amp;gt;&lt;br /&gt;&amp;lt;embed src="final.swf" width="1024" height="768"&lt;br /&gt; play="true" align="" loop="true" quality="high"&lt;br /&gt; type="application/x-shockwave-flash"&lt;br /&gt; pluginspage="http://www.macromedia.com/go/getflashplayer"&amp;gt;&lt;br /&gt;&amp;lt;/embed&amp;gt;&lt;br /&gt;&amp;lt;/object&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Note that you need to set the same dimension as the video, else you'll have artifacts.&lt;br /&gt;&lt;br /&gt;And... that's it :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-112014386776584631?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/112014386776584631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=112014386776584631' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112014386776584631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/112014386776584631'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/06/how-to-make-flash-video-recording-on.html' title='How to make a flash video recording on linux ?'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-111981540260973211</id><published>2005-06-26T20:48:00.000+01:00</published><updated>2007-03-17T20:55:48.502Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='steptalk'/><title type='text'>STPalette 1.2</title><content type='html'>I uploaded STPalette 1.2, you can find it here: &lt;a href="http://www.roard.com/gnustep/STPalette-1.2.tgz"&gt;http://www.roard.com/gnustep/STPalette-1.2.tgz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The archive contains libStepTalkView, the StepTalkPalette, and CalculatorExample containing the sourcecode and the gorm file of the Calculator done in the flash demo...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-111981540260973211?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/111981540260973211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=111981540260973211' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111981540260973211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111981540260973211'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/06/stpalette-12.html' title='STPalette 1.2'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-111971931503176095</id><published>2005-06-25T17:52:00.000+01:00</published><updated>2007-03-17T20:55:37.663Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='demo'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='steptalk'/><title type='text'>Flash Demo !</title><content type='html'>I just recorded a flash demo showing how to use Gorm + the StepTalk palette... &lt;br /&gt;the link is &lt;a href="http://www.xdev.org/gnustep/demo.html"&gt;http://www.xdev.org/gnustep/demo.html&lt;/a&gt; :-)&lt;br /&gt;I'll probably make a release later today, or tomorrow (just to clean up the last things ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-111971931503176095?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/111971931503176095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=111971931503176095' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111971931503176095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111971931503176095'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/06/flash-demo.html' title='Flash Demo !'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-111957398497874305</id><published>2005-06-24T01:44:00.000+01:00</published><updated>2007-03-17T20:43:25.553Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='étoilé'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><title type='text'>Camaelon..</title><content type='html'>Just to show a screenshot of the StepTalk palette + StepTalkClass inspector + the calculator with Camaelon enabled :-)&lt;br /&gt;(ok, there's one additional thing though -- the popup to select the return type of the method...)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/screenshots/screenshot_steptalkclass2.png"&gt;&lt;img src="http://www.roard.com/screenshots/screenshot_steptalkclass2.png" width="320" height="200"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Shiny, no ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-111957398497874305?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/111957398497874305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=111957398497874305' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111957398497874305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111957398497874305'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/06/camaelon.html' title='Camaelon..'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-111955149312208108</id><published>2005-06-23T19:28:00.000+01:00</published><updated>2007-03-17T20:56:01.634Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='gorm'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='steptalk'/><title type='text'>It works :-)</title><content type='html'>After fixing a couple of bugs, I was able to code a simple calculator entirely in Gorm :-)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/screenshots/screenshot_steptalkclass.png"&gt;&lt;img src="http://www.roard.com/screenshots/screenshot_steptalkclass.png" width="320" height="200"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I need to finish properly the NSMethodSignature encoding, but after that I'll probably make a release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-111955149312208108?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/111955149312208108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=111955149312208108' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111955149312208108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111955149312208108'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/06/it-works.html' title='It works :-)'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-111952829940761124</id><published>2005-06-23T12:46:00.000+01:00</published><updated>2007-03-17T20:57:01.981Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='gorm'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='steptalk'/><title type='text'>integration in Gorm..</title><content type='html'>I have now a reasonably-working StepTalkClass implementing inheritance -- you can inherits from other StepTalkClass instances or from a normal ObjC class (well, only the methods.. the ivars aren't inherited..). I also started a new inspector in Gorm for managing a StepTalkClass, where you can add ivars and methods, and if you modify a variable in your method the variable correctly changes (eh, useful no ? ;-)&lt;br /&gt;&lt;br /&gt;On the other hand, the object model is rather simple -- I don't have classes and instances, I just define ivars and methods. But for a first version that will be enough for most of the needs (you don't really use lots of instances in general for dealing with the UI..), although I think I will implements a class/instance system anyway (I have a StepTalkRuntime that keep tracks of the created classes..)&lt;br /&gt;&lt;br /&gt;I have a slight problem at the moment, calling directly a "script method" in a StepTalkClass works, but for some reasons it doesn't in Gorm, so I need to investigate... it's a bit odd as I inform Gorm of the methods, and I can link a button to a method; I implement respondsToSelector: in StepTalkClass, but somehow I don't even get the message... well I'll see that this evening.&lt;br /&gt;&lt;br /&gt;I had some problems with NSMethodSignature, by default the StepTalkClass methods returned an object and took only objects as parameters; so it was easy to build the signature (I actually used a convenient method available in STObjCRuntime). But for actions in gorm, the methodsignature must apparently have a void return value.. so I need to allow signature creation with different return values. Setting the signature by hand make it works though, so it won't be difficult. The other problem is that I can't seem to be able to return an int (not an object) from a script method, even if the NSMethodSignature is correct: I end up with a vacall error when I set the return value of the NSInvocation... I need to find a way, else it will be difficult to create for example NSTableView delegates ! :-)&lt;br /&gt;&lt;br /&gt;Anyway, I hope that i'll be able to fix the remaining bugs soon and make a release. At least with it you will be able to create for example a calculator completely in Gorm (as in &lt;a href="http://www.levenez.com/NeXTSTEP/IB_ex2.html"&gt;http://www.levenez.com/NeXTSTEP/IB_ex2.html&lt;/a&gt;). I think I'll make a flash video to show how it works :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-111952829940761124?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/111952829940761124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=111952829940761124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111952829940761124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111952829940761124'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/06/integration-in-gorm.html' title='integration in Gorm..'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-111904961732556771</id><published>2005-06-17T23:55:00.000+01:00</published><updated>2007-03-17T20:57:19.502Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='steptalk'/><title type='text'>StepTalkClass !</title><content type='html'>Well, after messing a bit, I have now the following code working:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;@implementation Transcript &lt;br /&gt;+ (void) show: (NSString*) str&lt;br /&gt;{&lt;br /&gt;        NSLog (@"&amp;lt;Transcript&amp;gt; %@", str);&lt;br /&gt;}&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;  StepTalkClass* myClass = [[StepTalkClass alloc] init];&lt;br /&gt;&lt;br /&gt;  [myClass setName: @"NewClass"];&lt;br /&gt;&lt;br /&gt;  [myClass addIVar: @"Transcript"];&lt;br /&gt;  [myClass setTranscript: [Transcript class]];&lt;br /&gt;&lt;br /&gt;  [myClass addMethod: @"display: str" &lt;br /&gt;        withContent: @"Transcript show: str."];&lt;br /&gt;  [myClass display: @"Hello World!"];&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&amp;lt;Transcript&amp;gt; Hello World!&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;:-)&lt;br /&gt;&lt;br /&gt;Basically, it means I have objects written using StepTalk, integrated in the ObjC runtime. So what it really means is that we'll be able to develop complete applications in StepTalk, directly in Gorm :-)&lt;br /&gt;&lt;br /&gt;Well, I still need to do a bit of work -- I need to hook that into the StepTalk palette, and add a reasonably good class browser in Gorm for theses "Steptalk classes", but it shouldn't be to complex.&lt;br /&gt;&lt;br /&gt;I will probably have a Smalltalk-like browser, and in the future I'll try to implement some of the ideas described &lt;a href="http://ide.roard.com"&gt;here&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;Also, as the metamodel is easily modifiable (obviously :), it's possible to implement interesting things... first, I need to implement single inheritance, categories, class methods, class variables to the current simple model...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-111904961732556771?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/111904961732556771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=111904961732556771' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111904961732556771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111904961732556771'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/06/steptalkclass.html' title='StepTalkClass !'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-111896477437462200</id><published>2005-06-17T00:25:00.000+01:00</published><updated>2007-03-17T20:56:51.778Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='gorm'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='steptalk'/><title type='text'>StepTalk "objects"</title><content type='html'>As I said previously, what I want now is "real" objects in Steptalk, not just scripts. Basically, to abuse the runtime thinking classes really exist as objective-c classes, while in fact they will be a special class containing dictionaries for its ivars and its methods, and that will execute theses methods (mere NSString containing a script) via Steptalk.&lt;br /&gt;&lt;br /&gt;It's not done yet... but I have a basic behavior done: I can add a class to the GormClassManager, add a method to it, and connect  a button to this virtual method. And that works -- clicking one button connected to the standard execute: method does something, clicking on a second button connected to the virtual method does something else :-)&lt;br /&gt;&lt;br /&gt;So, well, it's not ready yet, but things looks good :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-111896477437462200?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/111896477437462200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=111896477437462200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111896477437462200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111896477437462200'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/06/steptalk-objects.html' title='StepTalk &quot;objects&quot;'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-111886911781871024</id><published>2005-06-15T21:48:00.000+01:00</published><updated>2007-03-17T20:57:42.376Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='gorm'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='steptalk'/><title type='text'>STPalette 1.1</title><content type='html'>I worked a bit on the steptalk palette today, and I added some nice improvements...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/screenshots/screenshot_steptalk_palette2.png"&gt;&lt;img src="http://www.roard.com/screenshots/screenshot_steptalk_palette2.png" alt="steptalk palette sshot" width="320" height="200"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;You can create script outlets on the fly -- no need to use the object1,object2,...object9 limitation.. :-)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I added a non-ui object that you can instanciate as any object&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The StepTalkView is still there, but more like a button containing a script. And actually by default its target/action is itself, so when you click on it, you execute the script. To change the default image, just dragn'drop another on it :-)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;added a connection inspector to only show the script outlets&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;So basically now, it's more useable imho :-) and starts to be quite nice.&lt;br /&gt;&lt;br /&gt;Check the readme files for more infos. You can download it from here: &lt;a href="http://www.roard.com/gnustep/STPalette-1.1.tgz"&gt;http://www.roard.com/gnustep/STPalette-1.1.tgz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;enjoy :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-111886911781871024?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/111886911781871024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=111886911781871024' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111886911781871024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111886911781871024'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/06/stpalette-11.html' title='STPalette 1.1'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-111879241872594949</id><published>2005-06-15T00:30:00.000+01:00</published><updated>2007-03-17T20:57:56.640Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='smalltalk'/><category scheme='http://www.blogger.com/atom/ns#' term='gorm'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='steptalk'/><title type='text'>StepTalk Palette 1.0 released :-)</title><content type='html'>Well, I had the time this evening to create a small libStepTalkView library (containing... the StepTalkView widget...) and correct a few things, so I thought it was good enough for a release ! For once I'm trying to do "release early, release often". Although I'm not sure about the latter... ;-)&lt;br /&gt;&lt;br /&gt;Anyway, the whole package (libStepTalkView and StepTalkPalette) is here: &lt;a href="http://www.roard.com/gnustep/STPalette-1.0.tgz"&gt;http://www.roard.com/gnustep/STPalette-1.0.tgz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What's wrong at the moment ? well, it seems the StepTalkView class is not properly exported somehow, so you need to reload manually the class in Gorm (Classes-&gt;load class, load StepTalkView.h from libStepTalkView) before drag'n dropping a StepTalkView -- I guess that's probably easy to fix. Else it seems to work..&lt;br /&gt;&lt;br /&gt;What I'd like to do now is to create outlets/actions on the fly (well, actually, tell Gorm about them) -- if I can do that, then I can create an object that will let you dynamically create "StepTalk objects" -- add instance variables, methods, etc. Each "methods" will contains a script, executed on the fly, and each instance variables will be passed to the scripts. Not completely sure about methods parameters, but I'll probably find a nice way to deal with them...&lt;br /&gt;&lt;br /&gt;Anyway, if I can do that (and that seem doable..), then you could really program entirely in Gorm :-) &lt;br /&gt;&lt;br /&gt;(although it probably won't be very fast, for sure... but for prototyping that would be quite useful I think, and if you need perfs, you can create an ObjC object!).&lt;br /&gt;&lt;br /&gt;Have fun, and contact me if you have ideas :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-111879241872594949?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/111879241872594949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=111879241872594949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111879241872594949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111879241872594949'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/06/steptalk-palette-10-released.html' title='StepTalk Palette 1.0 released :-)'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-111870538356131850</id><published>2005-06-14T00:27:00.000+01:00</published><updated>2007-03-17T20:46:36.290Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='steptalk'/><title type='text'>Steptalk palette :-)</title><content type='html'>Making a StepTalk palette was quite simple, as it turned out... &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.roard.com/screenshots/screenshot_steptalk_palette.png"&gt;&lt;img src="http://www.roard.com/screenshots/screenshot_steptalk_palette.png" width="320" height="200"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now I just need to build a proper framework and add a non-view StepTalk object in addition to the current one... :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-111870538356131850?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/111870538356131850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=111870538356131850' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111870538356131850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111870538356131850'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/06/steptalk-palette.html' title='Steptalk palette :-)'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-111867818908121837</id><published>2005-06-13T16:33:00.000+01:00</published><updated>2007-03-17T20:47:16.162Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='smalltalk'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='steptalk'/><title type='text'>Steptalk integration ..</title><content type='html'>Now that I have something mostly working on the "stack" side .. what would be neat is to have a way of adding some little code snippets directly in Gorm and link them to actions; it's not meant to replace ObjC coding, but in my "hypercard"-like idea, it's ok -- you'll use small scripts to do some of the things, and if you want really complex stuff you can use objc objects. Well I guess people could abuse the script system, but hey..&lt;br /&gt;&lt;br /&gt;So, the obvious way to add scripting is to use &lt;a href="http://www.gnustep.org/experience/StepTalk.html"&gt;Steptalk&lt;/a&gt;, Stefan Urbanek's script engine for GNUstep. Furthermore, Steptalk isn't tied to a specific language (actually it can support a smalltalk-like language and scheme, and we could have something else like ruby in the future...). &lt;br /&gt;&lt;br /&gt;I had a look to &lt;a href="http://www.fscript.org"&gt;F-Script&lt;/a&gt; but I was disappointed by its IB palette.. basically it's not really useable for what I want ;-) -- even if I didn't want to use it, I was wondering how the palette was working, as I thought it permitted what I want... in fact, it kinda does, but by setting manually the targets/actions of objects in the script .. bah :-) -- I want something more easy to use.&lt;br /&gt;&lt;br /&gt;Well, I compiled Steptalk on OSX to play a bit with it, and I'm trying to think about how the palette could work to provide an environment as easy to use as possible... F-Script palette's idea of defining a bunch of outlets (object1, object2, .. object9) on the F-Script view where you link objects to have them accessible from the script is a bit crude, but for a start it will do the work. Though I think it should be possible to create a custom editor/connector that will let you add outlets on the fly, which would be a better way. Need to ask greg about that :-)&lt;br /&gt;&lt;br /&gt;So the idea is to create a Steptalk palette that will contain a "Steptalk object" (which will contains a steptalk environment and &lt;br /&gt;a text containing the script). You will be able to connect outlets to this object (and theses outlets will then be accessible from the script), and also use it as a target (so you could connect a button to it, when the button is clicked it will execute the content of the script). That won't be a perfect system and not as transparent as visual basic / hypercard (eg, click on the button, you get a window with the corresponding code executed onClick), but that would be a start. This "Steptalk object" won't be a view, but we could have a simple view so you could put the script on your windows (this view won't show when the program is running...).&lt;br /&gt;&lt;br /&gt;Something that could be interesting too is to use custom widgets that already contains a steptalk object, with their target/action set to it. For example, the Stack could (and probably should) contains such an object. Same for the cards. And we could have a custom button containing a steptalk object too, which will then permit the "I click on the button and the code appears" scenario...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-111867818908121837?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/111867818908121837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=111867818908121837' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111867818908121837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111867818908121837'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/06/steptalk-integration.html' title='Steptalk integration ..'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-111860869904665220</id><published>2005-06-12T21:23:00.000+01:00</published><updated>2007-03-17T20:48:01.702Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='gorm'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='steptalk'/><title type='text'>update on the hypercard idea...</title><content type='html'>Well, after backuping OSX, then formatting my hard drive, then reinstalling the backup image on it.. I was able to easily install ubuntu on my powerbook, and now I've got a working gnustep env :-) &lt;br /&gt;Ok, no touchpad support, no wifi support (&lt;a href="http://www.petitiononline.com/BCM4301/petition.html"&gt;damn you broadcom !&lt;/a&gt;), no luminous keyboard support... but it works :-)&lt;br /&gt;&lt;br /&gt;So I was able to start recoding a palette for Gorm.. with a bit of help from gregory casamento, it now works :-)&lt;br /&gt;Well, sort of. It's not persistent in "test mode" yet. And I need to finish my IB Editor subclass to support the Card connections (eg, connect something to the Card, not just to the Stack object). So what's working ? Well:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;There's a palette containing a Stack object -- you can drag'n drop it on you window&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The Stack object contains one Card by default, and you can drag'n drop things on it (buttons, textfields...)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;There's a Stack inspector, so you can add new cards, and navigate through the existing cards&lt;/li&gt;&lt;br /&gt;&lt;li&gt;There's also the possibility of creating a card from an existing one (eg, the second card will be a copy), which I need to implement the "background elements" thing, useful in the database case&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;So what needs to be done ? Well, as said before, add connection support to the Card view (so you could for example add a button that when clicked go directly to the card); then add persistency to the cards (I will probably just encode them for a first try... perhaps in the future something with CoreData (if we have a clone ..) or GDL2 ? or a custom solution ? but who knows, simply using encoding will perhaps be good enough for the use I expect, eg, very small databases...)&lt;br /&gt;&lt;br /&gt;So anyway, good progresses... and now I have a much better idea about palettes ;-) so i'll probably do some more  --  for example, a palette containing NSArray/NSDictionary could be rather useful, particularly if they have an editor to let you add data, and particularly in my "hypercard"-like scenario.. then, I'll just need a Steptalk palette ! :-D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-111860869904665220?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/111860869904665220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=111860869904665220' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111860869904665220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111860869904665220'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/06/update-on-hypercard-idea.html' title='update on the hypercard idea...'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-111844865336861965</id><published>2005-06-11T00:10:00.000+01:00</published><updated>2007-03-17T20:48:22.756Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='gorm'/><category scheme='http://www.blogger.com/atom/ns#' term='gnustep'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='steptalk'/><title type='text'>Hypercard and Gorm ?</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/HyperCard"&gt;Hypercard&lt;/a&gt; ? Never used it, but always heard good things about it.. (starting from Dave Small's articles ;-) &lt;br /&gt;So in another round of web procrastination, I tried to find more infos about it. Turns out it was quite interesting, and modern incarnations such as &lt;a href="http://www.runrev.com/"&gt;Revolution&lt;/a&gt; are quite cool too.&lt;br /&gt;&lt;br /&gt;So what's cool with Hypercard  ?&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;You could say that it was one of the first easy to use "gui builder" -- you just drag'n drop elements on your screen, click on them to open a script function that will be triggered (for example when the user click on the element), etc. And it's not limited to widgets, you can draw, add images, sound... More than a gui builder, Hypercard was the first multimedia authoring system..&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You program it using Hypertalk, a "natural" programming language (ie, close to english, rather lax). Interesting.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The real interesting bit: everything revolves around the concept of Stacks of Cards. Basically, you start with a stack containing one card. You can have more than one card in a stack (duh), and only one card is displayed at a time. So, a card is a "screen" if you want. And then you have the possibility to navigate through the cards, going from one card to another, to add cards, etc. Which is basically a hypertext (or hypermedia in that case) system. Now, the other great thing is that cards are persistants : if you add something to a card, it will stay. If you quit hypercard, restart it, reload your stack, what you added on the card is still there. Combine that with the ability to specify some of the elements on a card as "background elements" (meaning they'll be there on any cards of the stack) and you have a really simple method to define databases. Which is why Hypercard was also considered as a database. Pfew, quite a lot of possibilites, no wonder Apple's management had a hard time figuring it out ;-)&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;An example of creating a database: Just create a new card, add some textfields... add buttons to navigate (prev card, next card) and a button to add / remove a card. Set the textfields as background elements. And voila ! you're done ! Now you can run your stack, fill in the card, and when you need to add a new card, just click on the button. Great no ? In addition Hypercard could easily search through a stack, so it wasn't difficult to add search possibilities too.. And if you need to add a new information ? just add a new textfield :-)&lt;br /&gt;&lt;br /&gt;So to sum up, quite a neat system. As I never used it, I perhaps misunderstood some of the possibilites, but playing a bit with Revolution, I'm not too far from what I describe.. &lt;br /&gt;&lt;br /&gt;I now understand more why lots of people liked it -- it was really a great system for "non programmers" to actually do great things with their computer. It's a shame Apple didn't push it more...&lt;br /&gt;&lt;br /&gt;Anyway... I needed to explain all that to introduce my idea : Gorm is the InterfaceBuilder-like program for the &lt;a href="http://www.gnustep.org"&gt;GNUstep&lt;/a&gt; framework. You could say it's just another "gui builder" ... and you would be rather wrong ! Because instead of limiting itself to describe UI elements layout.. it really only deals with objects. Live objects. Which means you can even try your user interface, link buttons to actions, etc., all without compiling. And it's any objects -- not just graphical objects. &lt;br /&gt;&lt;br /&gt;When you set options of the elements on your UI, you really work on the objects themselves. Then the UI is saved -- in fact, the objects graph is simply serialized in a file. When your GNUstep (or Cocoa) program starts, it just load this serialized graph of objects back in memory. That's the great thing with InterfaceBuilder and Gorm : you can set up a lot of things directly, without writing a line of code.  The other good thing is you can define your own palettes of objects :-) so at the end, you can build complex program simply by drag'n drop... well, that's the idea anyway. Recent Apple's additions to the Cocoa API goes toward that (NSController, CoreData...).&lt;br /&gt;&lt;br /&gt;So what's my idea then ? Well, it occured to me that you could simply have two objects -- a "Card" object and a "Stack" object, and put them on a Gorm (or IB) palette. The "Card" object will accept other objects (textfields, images...) and will also be in charge of saving their state. So there you'd have a persistant Card. The "Stack" object will maintain a collection of Cards, and will answer to messages like "go to card #2", "go to next card", or "create a new card". &lt;br /&gt;&lt;br /&gt;Thoses two objects will provide you with Hypercard-like functionalities -- just start Gorm, select the "hypercard" palette, drag'n drop a Stack view on your window, and then add what you want on it. Want another card, open the Stack inspector and add one. Add new objects on it. Add some buttons on your window, and link the buttons' actions to some methods of the Stack or of the current card. And of course, instead of widgets, you could drop images or sound ... why not ?&lt;br /&gt;&lt;br /&gt;Now, imagine we'd have a Steptalk palette to create scripts objects... and voila, you have an hypertalk-like system :-) -- all that inside Gorm (or InterfaceBuilder), leveraging the Gorm's UI builder possibilities. Imagine now we add a few nice graphical transitions or other niceties... and you end up with a rather good multimedia authoring system that generates binaries :-)&lt;br /&gt;-- and if you want to add your own objects to it, to extend it.. well, it's still Gorm and GNUstep, so you can easily do that, obviously :-)&lt;br /&gt;&lt;br /&gt;Ok, that was a long post... :-)&lt;br /&gt;&lt;br /&gt;So in short, the idea sounds quite cool to me, and I actually started to implement a palette with thoses two objects on InterfaceBuilder (MacOSX). Sadly, palette creation isn't that well documented and I ran into a couple of strange problems .. so ... I'll do that with Gorm first, it'll be easier. Didn't start with Gorm for a very simple reason -- since Tiger, my GNUstep/OSX installation is b0rked. In the end, I'm installing a linux distrib (ubuntu PPC) ... Should be easier to have a working GNUstep environment ! :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-111844865336861965?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/111844865336861965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=111844865336861965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111844865336861965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111844865336861965'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/06/hypercard-and-gorm.html' title='Hypercard and Gorm ?'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13578244.post-111844701809713793</id><published>2005-06-11T00:00:00.000+01:00</published><updated>2005-06-11T01:11:32.713+01:00</updated><title type='text'>First Post...</title><content type='html'>Well, I finally decided myself to open a blog. What for ? hm.. mainly to record my thoughts and ideas about computer science, programming, etc. I'm not really into writing personal stuff about me :-)&lt;br /&gt; &lt;br /&gt;At least it will give me with a known place where I can write things and find them later...&lt;br /&gt;&lt;br /&gt;Just the bare minimum about myself: I'm 26, french, in the middle of my PhD. I live in Wales, UK. Crap weather, but nice place and nice people.&lt;br /&gt;&lt;br /&gt;I'm involved with some free software projects, mainly &lt;a href="http://www.gnustep.org"&gt;GNUstep&lt;/a&gt; and &lt;a href="http://www.dromasoftware.com/etoile/mediawiki/index.php?title=Main_Page"&gt;Étoilé&lt;/a&gt;. Which is why I'm writing in english rather than in french, as many of the things I plan to write here will likely concern thoses projects.&lt;br /&gt;&lt;br /&gt;We'll see how it turns out !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13578244-111844701809713793?l=camaelon.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camaelon.blogspot.com/feeds/111844701809713793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13578244&amp;postID=111844701809713793' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111844701809713793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13578244/posts/default/111844701809713793'/><link rel='alternate' type='text/html' href='http://camaelon.blogspot.com/2005/06/first-post.html' title='First Post...'/><author><name>Nicolas</name><uri>http://www.blogger.com/profile/04057058584432088746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
