<?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-1597571711823966454</id><updated>2012-01-30T16:07:36.031-02:00</updated><category term='ruby'/><category term='education'/><category term='gsoc'/><category term='attachment_fu'/><category term='squeak'/><category term='agile2009'/><category term='trips'/><category term='macosx'/><category term='uva'/><category term='crystal'/><category term='hostfoss'/><category term='fonts'/><category term='github'/><category term='art'/><category term='qualipso'/><category term='workspace setup'/><category term='fisl'/><category term='agilcoop'/><category term='roadmap'/><category term='redhat'/><category term='archimedes'/><category term='automated build'/><category term='agile'/><category term='opensource'/><category term='screencasts'/><category term='batik'/><category term='izpack'/><category term='rails'/><category term='truetype'/><category term='kanban'/><category term='etx'/><category term='uberdojo'/><category term='xp'/><category term='lean'/><category term='extensions'/><category term='astlinux'/><category term='combo'/><category term='docs'/><category term='workshop'/><category term='research'/><category term='programming'/><category term='smalltalk'/><category term='acm'/><category term='google gadgets'/><category term='voip'/><category term='toolbar'/><category term='selection service'/><category term='maven2'/><category term='encontro agil'/><category term='game'/><category term='open space'/><category term='swt'/><category term='rcp'/><category term='asterisk'/><category term='coaching'/><category term='blah'/><category term='campus party'/><category term='holidays'/><category term='coding dojo'/><category term='oopsla'/><category term='kake'/><category term='talks'/><title type='text'>CodeAche</title><subtitle type='html'>The headache one can have with codes</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>89</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-8190948243671836413</id><published>2010-01-04T10:13:00.003-02:00</published><updated>2010-06-16T09:45:59.588-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile2009'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='workshop'/><title type='text'>Agile 2009 - Day 4 - 27th August - Climbing the Dreyfus ladder</title><content type='html'>On the last of Agile 2009, I started with the last half of Jim Highsmith's talk: &lt;a href="http://agile2009.agilealliance.org/node/409"&gt;Agile Project Management—Innovation in Action&lt;/a&gt;. I have little to say about it but better that can nothing.&lt;br /&gt;He proposed an interesting change on the view of the production "iron triangle". The traditional one having scope, resources and schedule has its constraints. He suggests that in an agile environment those constraints are, in fact, all parts of one corner alone: "Constraints". The other corners being value and quality. I don't have many notes on this talk so I can't add much more.&lt;br /&gt;&lt;br /&gt;On the second slot, I went to &lt;a href="http://www.thekua.com/"&gt;Patrick Kua&lt;/a&gt;'s &lt;strong style="font-weight: normal;"&gt;&lt;a href="http://www.thekua.com/atwork/presentations-and-papers/xp2009/"&gt;Climbing the Dreyfus Ladder of Agile Practices&lt;/a&gt;&lt;/strong&gt;. It was a great experience. The main idea of the workshop is to help coaches set up their expectations regarding the use of practice within their teams. Patrick started with a small presentation about the behavioral model such as &lt;a href="http://alistair.cockburn.us/Shu+Ha+Ri"&gt;Shu Ha Ri&lt;/a&gt; and the &lt;a href="http://en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition"&gt;Dreyfus model skill of acquisition&lt;/a&gt;. His slides are available &lt;a href="http://www.thekua.com/atwork/wp-content/uploads/2009/05/climbingthedreyfusladderofagilepractices.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The mechanics were pretty simple.&lt;br /&gt;Choose a principle or practice you would like to map. I got into the group talking about Story Walls/Big Visible Charts.&lt;br /&gt;Ask people to write down post-its with desired actions or atitudes they expect to happen for this practice.&lt;br /&gt;Once they are done, have them identify on which level of your behavioral model each of the actions they wrote down should fit. Would you expect a beginner to perform that action? Or is that something more common to someone proficient? Some discussion will lead to a mapping of the actions to each level.&lt;br /&gt;With this result, your coaches are now aligned regarding what they might expect from their teams and how they can identify those who managed to climb the ladder and, mostly, how to help people reach a higher level by slowly going up one step at each time.&lt;br /&gt;&lt;br /&gt;The results of our workshop are available on &lt;a href="http://www.thekua.com/atwork/presentations-and-papers/agile-2009/"&gt;Patrick's website&lt;/a&gt; and I strongly suggest this activity to help your teams set a common expectation and improve consistently the members of your team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-8190948243671836413?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/8190948243671836413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=8190948243671836413' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8190948243671836413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8190948243671836413'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2010/01/agile-2009-day-4-27th-august-climbing.html' title='Agile 2009 - Day 4 - 27th August - Climbing the Dreyfus ladder'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-3642342201878947480</id><published>2009-11-22T11:59:00.003-02:00</published><updated>2009-11-22T12:35:15.734-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kake'/><category scheme='http://www.blogger.com/atom/ns#' term='agile2009'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='coding dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='uberdojo'/><title type='text'>Agile 2009 - Day 3 - 26th August - Kake Coding Dojo</title><content type='html'>On Wednesday evening, after the talks were over, I organized a &lt;a href="http://codeache.blogspot.com/2008/10/coding-rumors-or-uberdojo.html"&gt;Kake Coding Dojo&lt;/a&gt; at the open jam area. We had 3 computers (my own running OS X, Thiago Colucci's with Ubuntu Linux and Pedro Leal's one with OS X) and about 10 people participating.&lt;br /&gt;We chose &lt;a href="http://codingdojo.org/cgi-bin/wiki.pl?KataBowling"&gt;Kata Bowling&lt;/a&gt; as our problem.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3422/3861612469_5d03b292f7_b.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 768px; height: 1024px;" src="http://farm4.static.flickr.com/3422/3861612469_5d03b292f7_b.jpg" alt="" border="0"&gt;&lt;/a&gt;We built up the nice sheet you can see above (thanks &lt;a href="http://www.dtsato.com/blog"&gt;Danilo Sato&lt;/a&gt; for the picture) with our explanation of the problem as well as the mechanics. This way, we intend to get people to join us on the fly while the dojo was already running. And it worked! We had about 3 or 4 people that came by, joined for two rounds and then left. A few people kept around just chatting about what was going on and wondering how to things were going. Thanks Pedro Leal for the picture below.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh3.ggpht.com/_9QZIXmDGHKk/SqAaIs30KeI/AAAAAAAAAMY/lFXDyLdFwWM/s640/CIMG1594.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 640px; height: 480px;" src="http://lh3.ggpht.com/_9QZIXmDGHKk/SqAaIs30KeI/AAAAAAAAAMY/lFXDyLdFwWM/s640/CIMG1594.JPG" alt="" border="0"&gt;&lt;/a&gt;The same problem was being solved in Ruby, Haskell and Java on each computer and it worked about fairly well in all of them. We kept 7 minutes round as usual and just had some problems with missing experts on Haskell (just two people very familiar with the language and 2 more with some experience) which drove us to ask out for help to other Agile attendees.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh4.ggpht.com/_9QZIXmDGHKk/SqAaVEaPENI/AAAAAAAAAMs/8aoo4fNtI0k/s640/CIMG1598.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 640px; height: 480px;" src="http://lh4.ggpht.com/_9QZIXmDGHKk/SqAaVEaPENI/AAAAAAAAAMs/8aoo4fNtI0k/s640/CIMG1598.JPG" alt="" border="0"&gt;&lt;/a&gt;Finally, we ran our retrospective which the result you can check on the picture above (or &lt;a href="http://lh4.ggpht.com/_9QZIXmDGHKk/SqAaVEaPENI/AAAAAAAAAMs/8aoo4fNtI0k/CIMG1598.JPG"&gt;this link for the higher resolution one&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Our main problems were about the noise around (downside of being in an open area) and our lack of detached keyboards (which could have jumped from hand to hand more easily). We learned (the hard way) that changing a pair in the middle of a big refactoring is really hard. It is very difficult to explain what is happening to the newcomer when the code is not working.&lt;br /&gt;&lt;br /&gt;People also liked trying Ruby and Haskell but mostly the experience of pair programming with different people from different backgrounds. There was a small issue regarding the stress situation that the format puts participants on. 7 minutes is a short time and having the pressure to explain the code to the newcomer and adding your own contribution in that time (not being able to fail on any or else the whole code might get lost) is not an easy and comfortable situation. From this view point, the format breaks the safety aspect so important in a Coding Dojo. On the other hand it also leads to a more exciting experience and gets you to practice a different set of skills.&lt;br /&gt;&lt;br /&gt;On the overall it was an amazing experience and I would like to thank everyone for joining us. After so much fun, we obviously went out for some dinner at an &lt;a href="http://bostonblackies.com/"&gt;amazing burger place&lt;/a&gt; in Chicago.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.ggpht.com/_9QZIXmDGHKk/SqAaXVHIuDI/AAAAAAAAAM0/CjgF1nc3ATo/s640/CIMG1600.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 640px; height: 480px;" src="http://lh6.ggpht.com/_9QZIXmDGHKk/SqAaXVHIuDI/AAAAAAAAAM0/CjgF1nc3ATo/s640/CIMG1600.JPG" alt="" border="0"&gt;&lt;/a&gt;&lt;br /&gt;You can checkout the generated code of the three solutions at &lt;a href="http://github.com/dojosp/participant-s-projects/tree/master/05-KakeAgile2009/"&gt;Coding Dojo São Paulo's github account&lt;/a&gt;. There are also more pictures from &lt;a href="http://www.flickr.com/photos/dtsato/sets/72157622159130152/"&gt;Danilo at his Flickr account&lt;/a&gt; and some more from &lt;a href="http://picasaweb.google.com/pedrombl/CodingDojoKakeAgile2009Chicago"&gt;Pedro at his Picasa account&lt;/a&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-3642342201878947480?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/3642342201878947480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=3642342201878947480' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/3642342201878947480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/3642342201878947480'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2009/11/agile-2009-day-3-26th-august-kake.html' title='Agile 2009 - Day 3 - 26th August - Kake Coding Dojo'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3422/3861612469_5d03b292f7_t.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-5440274615005363264</id><published>2009-11-22T11:09:00.003-02:00</published><updated>2009-11-22T11:56:15.960-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile2009'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='talks'/><title type='text'>Agile 2009 - Day 3 - 26th August - Placebo</title><content type='html'>Things have gone smoothly (and busy) since last post so I am back to finish my report about Agile 2009. On Wednesday, during the morning I was assigned to Robert Biddle's talk about "&lt;a href="http://agile2009.agilealliance.org/node/3098"&gt;Activity Theory for Manifesting Agile&lt;/a&gt;" which was a very good and a bit too complicated for me. Since I was working couldn't get any notes so I'll skip it just like Johanna Hunt and Rachel Davies' "&lt;a href="http://agile2009.agilealliance.org/node/1989"&gt;Telling Your Stories: Why Stories are important for your team&lt;/a&gt;" workshop. The workshop was pretty fun and I managed to help a little. A brief description would say that it consisted in getting people together to invent stories they've been through and listening to other people repeating them. Interesting results but I can't detail them by lack of notes.&lt;br /&gt;&lt;br /&gt;So for Wednesday afternoon I got a little more time. Not knowing what to attend to, I wandered around during the first slot and ended up (very luckily) at Linda Rising's "&lt;a href="http://agile2009.agilealliance.org/node/408"&gt;Agile: placebo or real solution?&lt;/a&gt;" session. Best thing that could happen to me was to get into that one. Amazing talk.&lt;br /&gt;&lt;br /&gt;Linda started telling us about what is the &lt;a href="http://en.wikipedia.org/wiki/Placebo"&gt;placebo effect&lt;/a&gt;. This effect is now know to exist for a fact and its outcomes are pretty impressive: about 30% of sick people get better no matter what is the medicine that is given to them.&lt;br /&gt;She explained that quite a few experiments have been done regarding this effect. Those experiment show that if you get three people with the same diagnosed disease and you give them all a pill with placebo (which has absolutely no medical effect) without them know it is placebo but really believing that those pills will heal them, one of them will, indeed get better.&lt;br /&gt;One important point is that the patients have to &lt;span style="font-weight: bold;"&gt;know&lt;/span&gt; that they are being treated. The test has absolutely no effect if the medicine is given without the patient's knowledge (hidden in the food or water or applied during sleep). The consciousness of being taken care off is of great importance for the effect to take place.&lt;br /&gt;There are many more experiments that show off that if there is anything that points to a fake, no results are shown. If the patients are not confident that the medicine will help them (if the doctor shows uncertainty, if they've heard from friends that it doesn't work, etc.), the effect also does not present itself.&lt;br /&gt;From those experiments, we can conclude that since belief and awareness of treatment are essentials, it is our own body and mind that makes it so that we get better.&lt;br /&gt;&lt;br /&gt;Having introduced us for this clinical view of the placebo effect, Linda talked about experiments that were run in order to identify why would some patients (not always to same) respond to placebo and others wouldn't. From some brain analysis, it looks like there are two groups of people. People which she called "sheeps" that are more influenced by their unconscious and people which stick much more with their conscious called "goats".&lt;br /&gt;This doesn't mean that you either a sheep or a goat. People can behave like sheep on certain situations and like goat on others. It so happens that the brain activity of people being treated by the placebo effect is very similar to the activities recorded on sheep behavior.&lt;br /&gt;So it is people's unconscious that is capable of healing a disease by itself.&lt;br /&gt;&lt;br /&gt;And what is the relation of such medical results with agile software development? Well, Linda asks us whether all we've been talking about is just placebo and people were just looking for a medicine to improve their situation or is it that there is really an improvement by applying agile methods?&lt;br /&gt;&lt;br /&gt;The answer she provides is a simple one: who cares? As long as it works, let's keep doing it! She gave this end a very scary religious connotation as she brought some people up-front and started talking like a priest with "Oh yeah brother! Amem!" and stuff like that. It was a fun joke but a bit scary if you saw people joining her (they were also having fun).&lt;br /&gt;&lt;br /&gt;Anyway, the whole talk was a very interesting one. Sometimes just having someone with authority (a consultant) come in and use whatever claiming it will solve the problems can solve them even if is nothing special. Better think about it when you are facing a problem with a group.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-5440274615005363264?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/5440274615005363264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=5440274615005363264' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5440274615005363264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5440274615005363264'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2009/11/agile-2009-day-3-26th-august-placebo.html' title='Agile 2009 - Day 3 - 26th August - Placebo'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-5835797186748950143</id><published>2009-10-12T11:03:00.006-03:00</published><updated>2009-10-12T15:29:25.224-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lean'/><category scheme='http://www.blogger.com/atom/ns#' term='encontro agil'/><category scheme='http://www.blogger.com/atom/ns#' term='workshop'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Encontro Ágil 2009 - Lean Lego Game</title><content type='html'>Slightly interrupting the Agile 2009 sequence (I'll come back to it later). I presented the Lean Lego Game at Encontro Ágil 2009 on Saturday (10/10/2009) with Mariana.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3521/3999188658_e3c31f31c9_b.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 1024px; height: 683px;" src="http://farm4.static.flickr.com/3521/3999188658_e3c31f31c9_b.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Our slides (in Portuguese) are &lt;a href="http://sites.google.com/site/hugocorbucci/leanlegogame-hugomari.pdf"&gt;here&lt;/a&gt;. You can check a few pictures of the event (including our workshop) from &lt;a href="http://agileandart.blogspot.com/"&gt;Daniel Cukier&lt;/a&gt; from &lt;a href="http://www.flickr.com/groups/1259797@N23/pool/"&gt;his Flickr account&lt;/a&gt;. The session was a success. We had the room filled and people really looked like they enjoyed it.&lt;br /&gt;&lt;br /&gt;Our results were pretty good. For the pull system hands on, our production line only managed to deliver one house with a total of 300 bricks on stock.&lt;br /&gt;On the push system hands on, we got much better and managed to deliver 4 houses and the stock was around 250 bricks.&lt;br /&gt;And during the Yatai session, we delivered 8 perfect houses and 1 with a slight defect and had all bricks on tables (about 350 bricks). One nice thing that happened was that attendees actually noticed it and complained about it which lead me straight to Kaizen in a great fluent transition.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm3.static.flickr.com/2645/3999188368_b0766c1c67_b.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 1024px; height: 683px;" src="http://farm3.static.flickr.com/2645/3999188368_b0766c1c67_b.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As planned, we finished in around 1h30 which left us with some 20 minutes for questions. Since attendees were a bit shy, it ended up being a story telling session where I shared the story Kenji Hiranabe showed at Agile 2008 about the transition of one of Sanyo's cell phone factories to Lean principles. Too bad the video is not public.&lt;br /&gt;We also mentioned the story about a tooth paste factory that hired engineers to build a huge expensive machine that would separate empty boxes from filled ones. Since it would take some time to build the machine, the manager had one of the employees remove the empty boxes from the line while the machine wasn't ready. After a month, he came back to the factory and was surprised to find a pile of empty boxes on the ground and the employee he had assigned to select the boxes doing something else. Near the line was a fan blowing the empty boxes from the production line. When the manager asked why it was there, the employee explained that selecting the boxes manually was too boring and that he felt he would be more useful somewhere else. So he put the fan there and came by at the end of each day to collect the empty boxes and add them back to the stock therefore accomplishing the task that the huge expensive machine engineers were building.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm3.static.flickr.com/2640/3998430347_3b281f6412_b.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 1024px; height: 683px;" src="http://farm3.static.flickr.com/2640/3998430347_3b281f6412_b.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That story is a great example of why Gemba is so important in Lean. People that actually do the work are usually more suited to find simple solutions to problems they have.&lt;br /&gt;I hope to receive more feedback from those who attended and plan to present this workshop more often. Any questions or critics are very welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-5835797186748950143?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/5835797186748950143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=5835797186748950143' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5835797186748950143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5835797186748950143'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2009/10/encontro-agil-2009-lean-lego-game.html' title='Encontro Ágil 2009 - Lean Lego Game'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3521/3999188658_e3c31f31c9_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-6088801193638542218</id><published>2009-10-02T09:09:00.007-03:00</published><updated>2009-10-02T13:17:30.945-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile2009'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='lean'/><category scheme='http://www.blogger.com/atom/ns#' term='workshop'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Agile 2009 - Day 2 - 25th August - Lean Lego Game</title><content type='html'>After lunch on Tuesdays I was assigned as a volunteer. On the first slot I took care of "Speed Up Your Testing With Acceptance Criteria Conversations". It wasn't really my favorite session to attend to but I needed some time to rest my mind so I took profit of being near the wifi area (believe me, there was only 1 free wifi spot in the conf) to check my emails and catch up with the world a little.&lt;br /&gt;&lt;br /&gt;On the second slot, I joined &lt;a href="http://www.dtsato.com/"&gt;Danilo Sato&lt;/a&gt; and &lt;a href="http://blog.franktrindade.com/"&gt;Frank Trindade&lt;/a&gt; in the Lean Lego Game session they ran.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;The Lean Lego Game - Danilo Sato &amp;amp; Francisco Trindade&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The session was a workshop and, by the way it was built, it couldn't handle more than 30 people participating actively. Since I was on duty I couldn't join the teams but had the pleasure to help. The session started up talking a bit about Lean, velocity and cost but mostly explaining that lots of people in the software industry now have heard of Lean but few of them really understand the context in which Lean was born. I'll skip the talk part (slides are available at &lt;a href="http://www.slideshare.net/dtsato/lean-lego-game"&gt;here&lt;/a&gt;) and go the game itself since it was the most interesting part to me and it is the one that brings back to that first Lean context.&lt;br /&gt;&lt;br /&gt;The participants were divided in four groups of 7 to 8 people each. Each group was in a table and had another table with a few Lego pieces nearby. The idea is that those four groups simulated a house factory that could do houses of four different colors. There were 3 rounds was constituted of 4 sprints of 30 seconds each. Each round followed a slightly different production system.&lt;br /&gt;&lt;br /&gt;The first round simulated a production line. The group closer to the talkers were the assembly workers and their responsibility was to assembly a house. The next group was the selection group responsible for collecting the right amount of each part to build a house from a pile of parts from a certain color. The next group was the one responsible for the coloring separation. Their job was to get pieces and separate them into four piles, each with one color. Finally, the farther away group was responsible for "buying" resources from the big Lego bag and providing them (no more than a certain a amount of each kind) to the other group.  Each person of the group should have a task and could not do anything other than that task. At the end of each sprint, &lt;a href="http://www.thekua.com/atwork/"&gt;Patrick Kua&lt;/a&gt; (the house factory customer) selected two colors (randomly from a card deck) for the houses he wanted to buy to simulate a push system where things were done BEFORE the clients manifested a wish for them (like North American car factories used to do).&lt;br /&gt;&lt;br /&gt;In that scenario, each group knew what do to from start and they followed the colors chosen by the client for that sprint. At the end of each sprint, the talkers collected the results of each group. They counted how many houses were delivered, how many resources were consumed on each stage and the total. This way, the first sprint didn't manage to deliver any houses. Colors were sorted by the client and in the second sprint, the team delivered two houses but one was not from the colors the customer wanted. Another two colors were sorted and one matched the extra house in stock. On the third sprint, the team delivered another two houses but one of them didn't match the requested ones. The last sprint delivered two other matched house. The customer picked another two colors and couldn't get a match so the team ended up delivering 5 houses.&lt;br /&gt;&lt;br /&gt;The session then talked a bit about could have gone wrong. And the team felt many of them were not having work to do or were doing the wrong work because they didn't know what they should be doing.&lt;br /&gt;&lt;br /&gt;So the second round changed the system to pull system. Meaning the teams were supposed to work exactly in the same way internally but the client would pick the card at the start of each sprint and the supplier teams would provide supplies of the colors selected by the client. Results were much more impressive this time and the team managed to deliver one house successfully on the first sprint, two houses on the second and third sprint and three houses on the last sprint. This way they ended up with 8 houses sold. However they still consumed more "money" than the houses "paid".&lt;br /&gt;&lt;br /&gt;This brought up the problems related to keeping a stock and still having people not aware of the whole process. The presenters then introduced the idea of Yatai. So the last round followed a Yatai where each person was responsible for building one house by themselves just picking from the piles available near their tables. Instead of having fours sprints of 30 seconds, the team was given one big sprint of 120 seconds. It ended up that the team managed to deliver 16 houses and the stock was severely reduced.&lt;br /&gt;&lt;br /&gt;Although I couldn't be part of a team, I really had a lot of fun. People were running around, trying desperately to do their best and getting frustrated over the systems they were forced in. I think Danilo and Frank really managed to bring up one of the key issues brought up by Lean ideas and had a great timing to swap between presentation and activities.&lt;br /&gt;I loved the workshop so much that I will be presenting an instance of it at &lt;a href="http://encontroagil.com.br"&gt;Encontro Ágil 2009&lt;/a&gt; on the 10th of October (next week) in São Paulo. If you want to learn a bit more about Lean and personally feel the industry issues that modeled Lean, join us and help us improve this workshop even more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-6088801193638542218?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/6088801193638542218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=6088801193638542218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/6088801193638542218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/6088801193638542218'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2009/10/agile-2009-day-2-25th-august-lean-lego.html' title='Agile 2009 - Day 2 - 25th August - Lean Lego Game'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-7852258205529993020</id><published>2009-09-23T09:02:00.006-03:00</published><updated>2009-09-23T10:18:31.332-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile2009'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='coaching'/><title type='text'>Agile 2009 - Day 2 - 25th August - Top 10 tips to Agile Coaches</title><content type='html'>After Alistair's Keynote, I went to Rachel Davies &amp;amp; Liz Sedley's "Top ten tips to Agile Coaches".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Top ten tips to Agile Coaches - Rachel Davies &amp;amp; Liz Sedley&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The session was mainly based on a summary from what Rachel and Liz learned through their experience and while writing &lt;a href="http://www.pragprog.com/titles/sdcoach/agile-coaching"&gt;their book&lt;/a&gt;. I will just write down the tips with my small notes and let you think about them.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;10. Get Introduced&lt;/span&gt;&lt;br /&gt;Who are you? What do you do? What is your goal?&lt;br /&gt;Explain your point of view to the team you will (or are) coaching and let them understand you are not there to be their boss.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;9. Agile is &lt;span style="font-style: italic;"&gt;NOT&lt;/span&gt; a religion&lt;/span&gt;&lt;br /&gt;Spend time and effort to listen and understand the team and their environment. It might very well happen that agility does not fit their situation. Be sensitive to their context.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;8. Show respect&lt;/span&gt;&lt;br /&gt;Always trust (deeply in your heart, not just for show) that people did their best since the beginning and try to understand why they got in the situation they are in.&lt;br /&gt;Discover the differences between people and use NAMES ("the BA said that the DB guy couldn't do it" versus "Jenny told me that Josh was having troubles to implement it").&lt;br /&gt;Ask what they think about the issues and was suggestions they have and LISTEN to their answer. Pay attention and try to understand. Work with them over those suggestions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7. Step back to see the big picture&lt;/span&gt;&lt;br /&gt;Don't try to fix people. Try to fix the pressures and obligations those people suffer from so that they can do their job decently.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6. Ask questions to spark ideas&lt;/span&gt;&lt;br /&gt;Questions make people explain ideas and understand them. It also makes them create arguments and counter-arguments for their ideas. If you can make their ideas work, it will help the team adopt the movement and carry on.&lt;br /&gt;But be careful: ask questions to other people's ideas, not your own. Do not try to force your ideas through those questions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. Take time out to reflect&lt;/span&gt;&lt;br /&gt;Don't let pressure force your answers. Your calm attitude will relax the team and make them feel more confident. Ask help to other agile coaches/people if you can't think of a good behavior. You don't have to know it all.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Introduce the Elephant&lt;/span&gt;&lt;br /&gt;Show off the problem that everyone know exists but is silent about it. But don't put it as a pressure. Give the team a chance to suggest solutions, ideas, root causes, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Make changes as an experiment&lt;/span&gt;&lt;br /&gt;Go slowly. Try some idea and be ready to remove it if it doesn't work. Don't stick to something that won't work just because you think the team should make it work. Try something else and try it again later, in another context. Give the team chances to suggest those changes and experiment with their ideas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Go with the energy of the team&lt;/span&gt;&lt;br /&gt;Solve the problem the team wants to solve. Eventually they will address the problems you consider important.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Have courage in your convictions&lt;/span&gt;&lt;br /&gt;Don't doubt your capacities, the problem is not easy and you can't let people see you doubt yourself. It will discourage them and make them lose confidence in you. Believe you can make a difference or you really won't.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After the talk, they asked for each table of participants to add their own tips. A few of them were really good but, unfortunately, I couldn't write them down. Those are obviously good ideas and NOT religions either. Any problem can have its context in which any of those tips can fail. But in general, thinking about them can only help you. Do you have any tip you feel should enter that list? Please post it as a comment. I've attached &lt;a href="http://sites.google.com/site/hugocorbucci/A09-TopTenTipsForAgileCoaches.pdf"&gt;their slides&lt;/a&gt; although they don't add so much.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-7852258205529993020?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/7852258205529993020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=7852258205529993020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/7852258205529993020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/7852258205529993020'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2009/09/agile-2009-day-2-25th-august-top-10.html' title='Agile 2009 - Day 2 - 25th August - Top 10 tips to Agile Coaches'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-7632411521020491709</id><published>2009-09-12T11:21:00.005-03:00</published><updated>2009-09-17T08:11:31.473-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile2009'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='crystal'/><title type='text'>Agile 2009 - Day 2 - 25th August - Alistair's Keynote</title><content type='html'>Tuesday at Agile 2009 started well. The conference provided a very good breakfast with chocolate croissant (I love those), coffee, tea, fruits, juices and different kinds of breads.&lt;br /&gt;&lt;br /&gt;From there, everyone went to the Grand Ballroom to watch Alistair Cockburn's Keynote. I won't need to write a full description of Alistair's talk because &lt;a href="http://www.infoq.com/presentations/cockburn-bury-not-praise-agile"&gt;InfoQ just published the full video of it&lt;/a&gt;. So it will be a bit closer to my impressions.&lt;br /&gt;&lt;br /&gt;First thing I need to mention is that once Ahmed Sidky (Agile 2009 Program Chair) introduced Alistair, we had an amazing performance of Wind's Song Flutes playing the one Scottish music used in all movies and Alistair was following silently behind. Very impressive entrance. Alistair then explained why wind's song flutes players always walk when playing: "They are running away from the sound".&lt;br /&gt;&lt;br /&gt;Past the fun, came the sadness. Alistair started his talk reciting an adapted version of the funeral oration from Shakespeare's Julius Cesar to Agile Software Development. A very impressive performance. It was the introduction to say not that Agile was dead but that it was melted. He compared Agile to an iceberg in the ocean (software development) and said that before, Agile was something that people noticed because it was outstanding from the rest. Nowadays, the iceberg has melted. It is not gone. But it is now part of the ocean. It is now something that is accepted by most people.&lt;br /&gt;&lt;br /&gt;He then moved on to his viewing of software development you might know if you read any of his Crystal books or articles or if you attended any session with him.&lt;br /&gt;He defines Developing Software as&lt;br /&gt;People&lt;br /&gt;Making Ideas Concrete&lt;br /&gt;in an Economic Context&lt;br /&gt;&lt;br /&gt;He then showed this image that I particularly like:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_QQ56bAYbO4Y/SquzZpWEhOI/AAAAAAAAAHM/jQ54gyUQuww/s1600-h/GamesSeparation.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 263px;" src="http://4.bp.blogspot.com/_QQ56bAYbO4Y/SquzZpWEhOI/AAAAAAAAAHM/jQ54gyUQuww/s400/GamesSeparation.png" alt="" id="BLOGGER_PHOTO_ID_5380591433000715490" border="0"&gt;&lt;/a&gt;He explains that Software Development can be considered a finite, goal-directed and cooperative game while building IT Systems is open-ended. This means that when you are developing software you should work in a team to reach a goal and you are done when you make the software achieve that goal. On the other hand, when you think about the whole system, you want to work cooperatively in an open ended game. Meaning you are always in a dilemma between delivering the software and setting up for the next software (or game).&lt;br /&gt;He says also that this game is consisted of 3 possible moves: Invent, Decide, Communicate. With those moves you have to deliver the software and be slightly prepared for the next game.&lt;br /&gt;&lt;br /&gt;He then went on to more traditional arguments he uses for Crystal. Team size and criticality of the project are key to decide what practices you should apply. He also mentioned the quality of communication between people and the fact that most means are much more effective than paper to communicate so people should really think about different forms of documentation.&lt;br /&gt;&lt;br /&gt;He also talked a little about the Craft focus that is being given to software development lately. He pointed that thinking of any activity as a craft helps you identify the skills required to perform it and the medium available to achieve the goal. Moved a little to the User Experience entrance in the process of software development and how things changed or should change to be more effective in overall.&lt;br /&gt;&lt;br /&gt;It was a very good talk. A bit repetitive for those that already attended any session with Alistair but still very a great talk. I definitively recommend you see the whole video from InfoQ and feel free to post comments to start a discussion on any of those subjects.&lt;br /&gt;&lt;br /&gt;Next post will present Rachel Davies and Liz Sedley's "Top ten tips to Agile Coaches".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-7632411521020491709?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/7632411521020491709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=7632411521020491709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/7632411521020491709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/7632411521020491709'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2009/09/agile-2009-day-2-25th-august-alistairs.html' title='Agile 2009 - Day 2 - 25th August - Alistair&apos;s Keynote'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QQ56bAYbO4Y/SquzZpWEhOI/AAAAAAAAAHM/jQ54gyUQuww/s72-c/GamesSeparation.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-4432204729609525937</id><published>2009-09-10T22:27:00.006-03:00</published><updated>2009-09-14T09:59:43.988-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile2009'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><title type='text'>Agile 2009 - Day 1 - 24th August - Software Quality</title><content type='html'>On the second slot of monday afternoon, I attended Jim Highsmith's "Zen and the Art of Software Quality". I missed the first 10 minutes but I don't think it was a big deal.&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;&lt;font style="font-weight: bold;"&gt;Zen and the Art of Software Quality - Jim Highsmith&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;When I arrived, Jim was talking about why we should not use the Standish Group Measures to evaluate software development success. The main reason he points is that the outcomes measured are outdated. They focus on projects that are on plan, on schedule and on features.&lt;br /&gt;Meaning that a project that is delayed of a year but has a satisfied customer is a failed project.&lt;br /&gt;A project that achieves an unexpected goal is a failure.&lt;br /&gt;A project that delivers less feature in less time and stops is a failure.&lt;br /&gt;Those are wrong concepts. Canceling a project soon enough is NOT a failure. It is a great success from an agile perspective. It means the client didn't waste his money for several months (or years) until he discovered he couldn't afford (or do) what he wanted to.&lt;br /&gt;&lt;br /&gt;One of Jim's sentence that I liked is:&lt;br /&gt;"Target high and miss&lt;br /&gt;    might be better than&lt;br /&gt;           target low and hit!"&lt;br /&gt;What good is it to estimate every story as an epic story and manage to do it in 6 iterations while you could break the story in smaller ones and deliver 80% of the value in 1 iteration?&lt;br /&gt;&lt;br /&gt;His suggestion from this scenario is that we shouldn't think about the old Cost-Scope-Schedule triangle as our variables in software development. That waterfall iron triangle should be replaced by an Agile Iron Triangle constituted of Value-Quality-Constraint where Constraint would be Cost-Scope-Schedule.&lt;br /&gt;His idea is that those are constraints to software development. Variables related that fit in a greater picture. Our questioning should now be something like "how much value can we deliver given a certain level of quality and our constraints".&lt;br /&gt;&lt;br /&gt;Jim explained then that there are "two kinds of Quality". An iextrinsic quality that is related to the quality imbued from value a given software has for a customer and an intrinsic quality. The intrinsic quality is closer to what we consider quality nowadays. It is the way the software is done. It is its bugless property, its simplicity, etc.&lt;br /&gt;Separating those qualities help us understand something we already know. It is useless to produce the perfect software that solves nobody's problem.&lt;br /&gt;&lt;br /&gt;Jim then defends what I understand as "fail fast". He argued that there is some point where cost outcomes value and that, at this point, the software development should be stopped. If we can pinpoint this moment, it is the best way to be have a good performance. If a feature is not worth being paid for, it should not be implemented. If no feature is worth being paid for then the development should stop. And it is NO failure if that happens in the middle of the original schedule. Quite the opposite!&lt;br /&gt;&lt;br /&gt;Jim finished his talk mentioning the Parking Lot Diagram I reproduced below. The diagram very well known in FDD communities focuses on feature releasables. Meaning that, in opposition to the Gantt shart that focuses on tasks, the Parking Lot shows the features that can be released.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_QQ56bAYbO4Y/Sqo4L-RSW7I/AAAAAAAAAHE/LACu121B9kU/s1600-h/ParkingLotDiagram.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 272px;" src="http://2.bp.blogspot.com/_QQ56bAYbO4Y/Sqo4L-RSW7I/AAAAAAAAAHE/LACu121B9kU/s400/ParkingLotDiagram.png" alt="" id="BLOGGER_PHOTO_ID_5380174483192699826" border="0"&gt;&lt;/a&gt;That was it. I've uploaded &lt;a href="http://sites.google.com/site/hugocorbucci/Agile_2009_Zen_Quality_Handouts.pdf"&gt;Jim's hand outs&lt;/a&gt; for more details.&lt;br /&gt;What I learned:&lt;br /&gt;Revisiting some ideas that were pretty obvious can help refocus on what really matters. It is good to listen to the same ideas without having a brand (XP, Scrum, FDD, etc.).&lt;br /&gt;&lt;br /&gt;Please leave your comments and ideas regarding this talk.&lt;br /&gt;Next post will be about Alistair Cockburn's keynote.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-4432204729609525937?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/4432204729609525937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=4432204729609525937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4432204729609525937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4432204729609525937'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2009/09/agile-2009-day-1-24th-august-software.html' title='Agile 2009 - Day 1 - 24th August - Software Quality'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QQ56bAYbO4Y/Sqo4L-RSW7I/AAAAAAAAAHE/LACu121B9kU/s72-c/ParkingLotDiagram.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-8170868185254022920</id><published>2009-09-10T07:13:00.005-03:00</published><updated>2009-09-10T08:47:56.302-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile2009'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='coaching'/><title type='text'>Agile 2009 - Day 1 - 24th August - Agile Coaches</title><content type='html'>During Monday morning, I was working as a volunteer at Registration. This wasn't as fun as bag stuffing for sure. No big innovations there. Just talking to people, handing bags and shirts. The only ironical part was to received about 6 new items we had to stuff into the bags DURING the morning.&lt;br /&gt;&lt;br /&gt;For the afternoon, I attended two talks. The one I will be writing about in this post and Jim Highsmith's one about software quality that will be the focus of my next post.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;"&lt;span style="font-weight: bold;"&gt;What Do Agile Coaches Do?&lt;/span&gt;" by Liz Sedley and Rachel Davies&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Liz and Rachel started explaining that the session was based on the work they had done to their new book "&lt;a href="http://www.pragprog.com/titles/sdcoach/agile-coaching"&gt;Agile Coaching&lt;/a&gt;". They also pointed out the session was a workshop and that it was aimed to Carlos - internal coach (see the &lt;a href="http://agile2009.agilealliance.org/personas"&gt;conference personas webpage&lt;/a&gt; to a better understanding).&lt;br /&gt;&lt;br /&gt;Their first point was that coaching a software development team was not exactly like coaching a soccer team although the name is the same. It led them towards J. Richard Hackman's work. According to Liz and Rachel, Hackman's book named "Leading Teams - Setting the stage for great performances" out stands from other leadership books because it focuses in teams rather than individuals.&lt;br /&gt;From this, they pointed out a couple things that are NOT coaching namely doing someone else's job and directing the team. In opposite, they explained that a coach should provide feedback, explain dynamics, provide suggestions and become useless (they called it: being transitional).&lt;br /&gt;They explained Hackman divides possible coaching interventions in three groups:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Motivational intervention: one that tries to increase the effort of the team&lt;/li&gt;&lt;li&gt;Consultative intervention: one that attempts to improve the quality of the process&lt;/li&gt;&lt;li&gt;Educational intervention: one that aims to improve learning&lt;/li&gt;&lt;/ul&gt;This means that on a Motivational intervention, a coach would take an attitude that would try to have the team (or a member of the team) commit more with the work. That can be achieve by giving her more responsibility regarding that activities or making turning her into the reference or any other thing that would result in an increase of commitment.&lt;br /&gt;On an Educational intervention, the coach would run an activity that could allow the team to a better understanding of what is happening and why. Retrospectives usually fit very well in Educational interventions because they make the team think about their situation and look for improvements therefore increasing their learning.&lt;br /&gt;A Consultative intervention is one that the coach will apply to adjust the situation to a better one. This is the easiest intervention to make since it only requires that the coach have a suggestion of improvement and use its experience to solve the issue. The problem with it is that it does not helps the team become independent since the knowledge about why applying that solution stays with the coach. On the other hand, this is a very good solution when dealing with a team of novice people (or Shu people - see the Dreyfus learning model or the Shu-Ha-Ri model - I will post about both since there were talks about both) because it will show them one technique.&lt;br /&gt;&lt;br /&gt;This introduction led us to the workshop itself. The room was split into groups of 3 or 4 people and Rachel and Liz handed over several Scenarios of problems in a team for each group so that the group would suggestion some coaching interventions to each scenario. The activity itself was quite interesting but, as most attendees in the session, I felt just having the division of interventions in 3 kinds was worth the session.&lt;br /&gt;Most of the groups reached a fourth division that could be called "Introspection" that consists in any activity that might help understand the problem. Introspection interventions usually lead to Educational interventions from the own team opposed to Educational interventions from the coach (which might have run the Introspection intervention unknowing what the appropriate intervention was). One can argue that Introspection interventions are always performed before any other and therefore can be considered part of each intervention but the point here is that an introspection intervention may result in different sorts of intervention even if the problem is the same.&lt;br /&gt;&lt;br /&gt;More information can be found in &lt;a href="http://sites.google.com/site/hugocorbucci/a09-AgileCoachesWorkshop-final.pdf"&gt;Liz and Rachel's slides&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I learned that classifying your actions according to Hackman's suggestion is very useful to self-analysis and to moderate the kind of actions you take. It can also help sharing experience between coaches and can probably be used in some behavioral studies related to cultural differences.&lt;br /&gt;&lt;br /&gt;The next post will regard Jim Highsmith's "Zen and the Art of Software Quality" presentation. Please leave your comments here and there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-8170868185254022920?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/8170868185254022920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=8170868185254022920' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8170868185254022920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8170868185254022920'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2009/09/agile-2009-day-1-24th-august-agile.html' title='Agile 2009 - Day 1 - 24th August - Agile Coaches'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-4381074769170288444</id><published>2009-09-03T09:05:00.006-03:00</published><updated>2009-09-10T07:15:28.798-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile2009'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='kanban'/><title type='text'>Agile 2009 - Day 0 - 23th August - Bag Stuffing</title><content type='html'>As a volunteer at Agile 2009, you get to attend the conference without having to pay the conference fee (which is NOT cheap) in exchange for some (~20h) of your working time. Most of this time is spend by helping out during sessions or just in crowd control during the big events.&lt;br /&gt;However, there is also some back stage work to be done BEFORE the conference really starts. That is Bag Stuffing.&lt;br /&gt;&lt;br /&gt;Bag Stuffing is an activity that consists in generating enough conference bags with all sponsor materials within each bag. This year the volunteers received a lot of help from various people and we had the honor of having some Kanban people to help us improve our process as we went on.&lt;br /&gt;&lt;br /&gt;Our first job was to gather boxes together and discover what should go into each bag. It wasn't the easiest job on Earth since nobody knew the content of the boxes nor if we were missing something or not. It ended up that we had 3 teams. One building up a sample bag with every item they got and counting and checking that every sponsor had their items listed. One building up a redundant bag that would verify that the first team got everything and that we could point each items' boxes. A last team that placed the boxes in a line with a sample item on the top of them so that we could easily identify the piles.&lt;br /&gt;&lt;br /&gt;This job got done pretty quickly and very soon we had a list of available items and discovered some items were missing and got the news of a few new items arriving. Having included those new items and accounted for the missing ones, the group got split into two groups that would assemble the bags.&lt;br /&gt;&lt;br /&gt;The process started with 7 people on each group following different ideas:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;A production line where the bags would flow from one side to the other being moved by the people assigned to stuff in certain items.&lt;/li&gt;&lt;li&gt;A pick-up line where the people would flow from one side of table to the other filling a complete bag each item at a time.&lt;/li&gt;&lt;/ol&gt;The two groups would then be measured (number of complete bags in 15 minutes) and compared after 4 measures. At each two measures, the teams would have 5 minutes to discuss their process and try to improve it. Just before that, the whole group would get together and talk about the situation.&lt;br /&gt;&lt;br /&gt;As expected, the team 1 was faster on the first iterations but soon team 2 managed to be more productive. Both team identified a problem with the table's height. However, for security reasons, none was allowed to make the tables higher which resulted in some fatigue to everyone. After the first hour, we had discovered the bottleneck for both teams and, surprise, it wasn't within the teams bounds. The greatest issue was to get the cars full of bags to the upper level and unload them into the registration area. So some people got assigned to that task and some adjustments were made.&lt;br /&gt;&lt;br /&gt;Team 1 could easily fit the reduction of people by just assigning more items to each person down the line (we already had extra persons in the line). It even managed to have a person (me) dedicated to refilling supplies (lots of times for both teams).&lt;br /&gt;Team 2 suffered the loss a bit more since each person less in the team meant a reasonable amount of bags that could flow. But they came out with an improvement to reduce their path. Instead of laying out the tables in a line, they moved them to be a U shape. This way, their path got considerably shorter.&lt;br /&gt;&lt;br /&gt;It turned out that this was became a problem because the bottleneck would still be getting the bags upstairs but, this time, because the elevators were not as responsive as possible. So Team 1 adapted to this. People would take a small break every time a car got filled up and so they could rest from fatigue.&lt;br /&gt;Team 2 also enjoyed it because they were moving around so much (having to go back all the table to restart filling a bag) that they were getting pretty tired.&lt;br /&gt;&lt;br /&gt;By the end of the morning, both teams had completed around 800 bags and most people left for lunch. I wasn't at the afternoon's work but heard some good improvements from them. The team that picked up line 1 mainly followed what was already being done since it was reasonably simple and effective.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_QQ56bAYbO4Y/Sp_xlZtNwKI/AAAAAAAAAGk/B0LzqZyVvoE/s1600-h/bagstuffing-tables.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 72px; height: 37px;" src="http://4.bp.blogspot.com/_QQ56bAYbO4Y/Sp_xlZtNwKI/AAAAAAAAAGk/B0LzqZyVvoE/s400/bagstuffing-tables.png" alt="" id="BLOGGER_PHOTO_ID_5377282104961646754" border="0" /&gt;&lt;/a&gt;On the other hand, team 2 identified some very nice improvements. They laid out the tables in the shape of a star (like to image on the right). This way, they managed to dramatically reduce the length of their path to fill a bag, have a quick an big stock of materials and improve their speed. It is also fair to say that it was only possible because they had only 4 people working (they were missing some volunteers).&lt;br /&gt;&lt;br /&gt;In any way, the results were amazing. About 1400 bags were filled and unloaded from 8am to 3pm by some 20 people in the morning shift and about 12 in the noon shift. Great work from everyone and good lessons from applying Kanban techniques.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-4381074769170288444?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/4381074769170288444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=4381074769170288444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4381074769170288444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4381074769170288444'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2009/09/agile-2009-day-0-24th-august-bag.html' title='Agile 2009 - Day 0 - 23th August - Bag Stuffing'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QQ56bAYbO4Y/Sp_xlZtNwKI/AAAAAAAAAGk/B0LzqZyVvoE/s72-c/bagstuffing-tables.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-641009982529306376</id><published>2009-07-18T21:10:00.007-03:00</published><updated>2009-07-19T16:47:30.213-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Forget Art! Refactoring viewed as a critic</title><content type='html'>It has been some time since the last post about the whole &lt;a href="http://codeache.blogspot.com/2009/05/programming-is-maths-but-communicating.html"&gt;"Programming is maths but communicating is art"&lt;/a&gt;. Since then I've had some very interesting discussions with an architecture critic. She obviously got terrified when I told her I used Wikipedia's Art definition to think about programming and refactoring.&lt;br /&gt;It led us to a deeper search of what art is or can be considered. One of the key points Sophia was defending was that we shouldn't give that much value to Art. First because Art, most of times, is not supposed be something nice or pretty. It is supposed to shock, change your view of the world and make you rethink your bases.&lt;br /&gt;I'm not going deeper into the discussion "what Art is" because I don't have enough knowledge to argue in it anyway. I'll take Sophia's definition because it will led us to some interesting discussions.&lt;br /&gt;&lt;br /&gt;So, if Art should change your way of thinking the world, we probably shouldn't want our code to be Art. Pretty much the opposite in fact! Uncle Bob quotes Ward Cunningham: "Clean code is a code that is pretty much what you expected it to be". Well, how can something that is pretty much what you expected make you revalue your life and the world around you? It shouldn't! So any clean code should be the complete opposite of Art and the previous post got it all wrong.&lt;br /&gt;&lt;br /&gt;So a clean code itself is not Art and the programmers that write it are not artists. However, there is a big deal of work involved into transforming a code that a computer can understand into a code that a human being can understand.&lt;br /&gt;&lt;br /&gt;Sophia suggested us that analyzing someone's work (including our own) is a critic's work. You observe and analyze the whats, whys and hows someone ended up creating the object of your analysis. You read it, rethinking it, twist it and try to extract every piece of information you can from that thing.&lt;br /&gt;Once you believe you have enough knowledge about what you were studying, you write to describe the questions you found about the work. If you manage to achieve a good result, you will provide a very different overview and understanding of the work. You will give it a new meaning that will lead people to understand that work and others from your view point.&lt;br /&gt;&lt;br /&gt;That was way too abstract so going back to our practical world. Refactoring code is like criticizing it. You understand it and rewrite it offering your own understanding of why that code needs to be the way it is. By refactoring we are not (or should not) change the result of the previous work. In this sense, we cannot really think of it as a creation process. We are obviously producing something just like a critic produces something. But what really matters is the binaries themselves. The fact that the computer can follow those instructions and do what it is supposed to do. We only provide a view point about what, why and how those binaries are the way they are.&lt;br /&gt;&lt;br /&gt;Accepting this explanation can help us understand a few of the problems we face. First, considering refactoring as a criticism of the code makes it very easy to understand why there is no way to let the code "perfect". It also justifies why programmers should read loads of codes. To be a good critic you have to understand what other critics are saying or said.&lt;br /&gt;Another thing that actually fits very well in this description is that refactoring requires the author to have a good capacity to write. You can have an amazing understanding of a work and still be the crappiest critic if nobody can understand what you are saying.&lt;br /&gt;At last, it also fits very well Uncle Bob's idea of school of thoughts regarding code. Critics tend to analyze a work according to the knowledge and understanding they have learned from other works or other critics. Those characterize school of thoughts and fit very well the way we feel about coding styles. Java people tend to hate the &lt;span style="font-family:courier new;"&gt;return result unless condition&lt;/span&gt; style while rubyist find it very natural.&lt;br /&gt;&lt;br /&gt;I doubt this is the last post about that subject and I hope to get more replies about your opinions and ideas. This is meant to be provide an answer but more likely to point some questions. Would you consider yourself a critic? What are the flaws in that viewpoint? Do you have another parallel to make?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-641009982529306376?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/641009982529306376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=641009982529306376' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/641009982529306376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/641009982529306376'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2009/07/forget-art-refactoring-viewed-as-critic.html' title='Forget Art! Refactoring viewed as a critic'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-814031023904600242</id><published>2009-05-12T08:55:00.015-03:00</published><updated>2009-05-12T19:40:03.725-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Programming is maths! But communicating is art...</title><content type='html'>I tried to sum up the contents of this post (which will surely be long) in the title.&lt;br /&gt;&lt;br /&gt;The discussion came up yesterday after the master's thesis presentation of a friend of mine (&lt;a href="http://agileandart.blogspot.com/"&gt;Daniel Cukier&lt;/a&gt;). His proposal was way too unconventional to pass easily. During the teachers' comments on his thesis, &lt;a href="http://www.ime.usp.br/%7Evwsetzer/"&gt;Prof. Valdemar Setzer&lt;/a&gt; pointed out that he disagrees on Daniel's sentence that said (from my memory that is brief and unprecise) "The art of programming ...".&lt;br /&gt;Prof. Setzer says he disagrees with Knuth (and Daniel) on the fact that programming is an art.&lt;br /&gt;&lt;blockquote&gt;"Programming is formalizing your ideas in order to make a computer execute them and, therefore, cannot be considered art since it must not be  done or influenced by your subconscious and must be an activity on which you are always conscious of your actions."&lt;/blockquote&gt;This is yet another imprecise and crappy translation of what happened but it does not matter. The idea is mainly that if we need to be fully conscious of all our actions when programming, then this activity cannot be considered art since art relies heavily on one's subconscious.&lt;br /&gt;&lt;br /&gt;The whole deal led us (me and Mariana Bravo) to a discussion about what part of what we do is art. Because, obviously, both of us believe that some part of it &lt;span style="font-weight: bold;"&gt;IS&lt;/span&gt; art. We couldn't disagree with Prof. Setzer. Indeed, talking to a machine is pretty much the opposite of art. Formalism, logic and maths are key elements to be used very consciously to achieve the goal of writing something that compiles and run as expected in a computer. From this I conclude that &lt;span style="font-weight: bold;"&gt;writing to execute is not art&lt;/span&gt;.&lt;br /&gt;I also claim that this is also the part of computer science that is very well mastered! Programmers are great to &lt;span style="font-style: italic;"&gt;write something that execute and does what was wanted&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;You can see the proof to this claim on every programming competition out there. &lt;a href="http://cm2prod.baylor.edu/welcome.icpc"&gt;ACM-ICPC&lt;/a&gt;, &lt;a href="http://www.hackday.org/"&gt;Yahoo HackDay&lt;/a&gt;, &lt;a href="http://code.google.com/codejam"&gt;Google Code Jam&lt;/a&gt;, &lt;a href="http://imaginecup.com/"&gt;Imagine Cup&lt;/a&gt; and many others. Those competitions stress this aspect of computer science. They expect the people involved to write a software that executes and does what was expected. And people do GREAT! I have seen amazing codes, amazing solutions and wonderful applications being built on those contests. Yet, every company involved in those contests (to hire the winners) still fights to write better software and are present in tons of conferences trying to achieve better results. The winners of those contests are usually amazing programmers in the sense that they are great to find solutions to a problem and have it compile and run. Why are we still struggling to write better software then?&lt;br /&gt;&lt;br /&gt;The answer is not mine. It has been around for ages and loads of people probably already said it before me (and probably much better than me): "Because the greatest problem of software is the &lt;span style="font-weight: bold;"&gt;maintenance&lt;/span&gt;".&lt;br /&gt;During the maintenance, it is no longer THAT important to talk to the machine. The code is already talking to the machine somehow and some part of it should be saying something different. The code now enters a whole new realm. &lt;span style="font-weight: bold;"&gt;The realm of talking to people&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Having your code talk to people is very similar to having a letter or an email or even a blog communicating your ideas. One could argue that writing with code is bounded to a formalism that breaks the communication and beauty that can be achieved. To which I reply that, for many years, poetry bounded itself to very rigid forms such as &lt;a href="http://en.wikipedia.org/wiki/Alexandrine"&gt;Alexandrine&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Iambic_pentameter"&gt;Iambic Pentameters&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Dodecasyllable"&gt;Dodecasyllabes&lt;/a&gt; and others. I believe I can say that nobody would dare deny that there is great art done following those rigid rules.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.objectmentor.com/omTeam/martin_r.html"&gt;Uncle Bob&lt;/a&gt; says in his &lt;a href="http://www.google.com.br/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fwww.amazon.com%2FClean-Code-Handbook-Software-Craftsmanship%2Fdp%2F0132350882&amp;amp;ei=-msJSrCdBZSEtwePyYzfCw&amp;amp;usg=AFQjCNHR62yE9_f-EXjfGyx8aKcovzjKHw&amp;amp;sig2=3in_1hsvYNvzjWE1ftfAjA"&gt;Clean Code&lt;/a&gt; book: "A good and clean code should read as a newspaper article". He says so because he believes this is the only way one can be quickly parse a code and focus only on what is important to the current matter. It means that complexity should be hidden as much as possible to avoid having to bump into her all the time. It also means (indirectly) that there are TONS of ways to write the same code, that is, to achieve the same computer execution result.&lt;br /&gt;&lt;a href="http://fr.wikipedia.org/wiki/Raymond_Queneau"&gt;Raymond Queneau&lt;/a&gt; is a famous french writer author of "&lt;a href="http://fr.wikipedia.org/wiki/Exercices_de_style"&gt;Exercices de styles&lt;/a&gt;" (Style exercises) and many others. His book presents 99 versions of the same story written in the same language (French) with different styles. Each of the versions have different writing styles and present the reader with a new experience of the same facts. Writing the book was surely an amazing exercise but reading it is also very interesting. Reading 99 ways to achieve the same result makes you think a lot about what you actually write.&lt;br /&gt;&lt;br /&gt;As programmers, we are subjected to such exercise very often. There are dozens of frameworks to achieve the same goal (many times in the same language), there are dozens of libraries that do the same thing but the code is ALWAYS VERY different.&lt;br /&gt;I propose (and will try to) that, as programmers, we force ourselves to take part of this exercise. Our version control systems help to do so and we should be doing it all the time. Write a first version of your code, save it (commit), write a new version of your code (maybe from the first one or not), save it and repeat the action.&lt;br /&gt;&lt;br /&gt;Such description of the thing makes me (and you, probably) remind that we already to this over and over and over. Refactoring is exactly the process to rewrite to achieve the same goal but changing the &lt;span style="font-style: italic;"&gt;style&lt;/span&gt;.&lt;br /&gt;&lt;a href="http://martinfowler.com/"&gt;Martin Fowler&lt;/a&gt;'s definition of &lt;a href="http://martinfowler.com/books.html#refactoring"&gt;Refactoring&lt;/a&gt; is "a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior". It is not really the same thing I previously stated right? This is where the art comes along.&lt;br /&gt;&lt;br /&gt;Here is Fowler's &lt;span style="font-style: italic;"&gt;trick&lt;/span&gt;: "... to make it easier to understand and cheaper to modify...". This definition is amazingly vague! How the heck do you make something get easier to understand or cheaper to modify? &lt;span style="font-weight: bold;"&gt;Formally&lt;/span&gt; you don't! You can only find out what makes the code easier subjectively. You can only know what makes it cheaper to modify when you actually have to modify it and do it.&lt;br /&gt;&lt;br /&gt;Uncle Bob uses the same &lt;span style="font-style: italic;"&gt;trick&lt;/span&gt;. He says Clean Code helps you write better code and detect bad code. Again, this is highly subjective! And more: it depends heavily on the programmer's ability to communicate through the code with other people. Such ability is heavily related to art!&lt;br /&gt;According to Wikipedia (and please feed me better info if you have them),&lt;br /&gt;"&lt;a href="http://en.wikipedia.org/wiki/Art"&gt;Art&lt;/a&gt; is the process or product of deliberately arranging elements in a way that appeals to the senses or emotions".&lt;br /&gt;Again from Wikipedia, "Communication can be perceived as a two-way process in which there is an exchange and progression of thoughts, feelings or ideas towards a mutually accepted goal or direction".&lt;br /&gt;&lt;br /&gt;From those definitions, I would say Art is a form of Communication. Moreover Poetry, Literature, Theater, Painting, Sculpting, Music, Dance and other art activities are holders to a communication channel between the artist and the watcher.&lt;br /&gt;Poetry and Literature use words.&lt;br /&gt;Theater and Dance use the human body.&lt;br /&gt;Painting and Sculpting rely on colors and textures while Music bases itself on sounds.&lt;br /&gt;&lt;br /&gt;The study of art is therefore heavily related to the study of how to communicate with people from various backgrounds and ideas. This is the art matter that is missing in the computer science courses (at least the one I followed) and the computer related careers.&lt;br /&gt;&lt;br /&gt;Regarding literature, someone can put a word after another and make it "run", that is, make sense. But it takes a lot more effort to pass from that to art.&lt;br /&gt;Programming follows the same rule.&lt;br /&gt;Loads of programmers can put an instruction after another but it takes an amazing work to transform that into something that will communicate later on.&lt;br /&gt;&lt;br /&gt;My conclusion from this post (more an article than a post) is that computer science courses are very important because they teach you to communicate with the computer. But once you learned (and it takes more time than just the course) to make the computer do what you want, you must learn to communicate with people. Actually, you should probably do both at the same time but the important part is that you always remember that "executing" is poor and communicating can be art.&lt;br /&gt;&lt;br /&gt;Now all that I need is to actually incorporate such thinking and begin acting to improve in this sense.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-814031023904600242?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/814031023904600242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=814031023904600242' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/814031023904600242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/814031023904600242'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2009/05/programming-is-maths-but-communicating.html' title='Programming is maths! But communicating is art...'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-8358088034319986099</id><published>2009-03-26T12:52:00.006-03:00</published><updated>2009-03-26T15:29:35.509-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='workspace setup'/><category scheme='http://www.blogger.com/atom/ns#' term='automated build'/><title type='text'>Developing for Archimedes</title><content type='html'>Hello,&lt;br /&gt;With the new team working on Archimedes, I had to help them set up an environment to work with Archimedes. I am pretty proud of the outcome.&lt;br /&gt;In order to code for Archimedes, just follow these steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download and install a Java Virtual Machine S.E. SDK version 1.5 or later compatible with the Sun virtual machine (I suggest sun's one called 'Java SE Development Kit (JDK)' under &lt;a href="http://java.sun.com/javase/downloads/index.jsp"&gt;http://java.sun.com/javase/downloads/index.jsp&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;Install Subversion (&lt;a href="http://subversion.tigris.org/"&gt;http://subversion.tigris.org&lt;/a&gt; - or "sudo apt-get install subversion" on debian based linux distributions or "sudo port install subversion" on Mac OS X with MacPorts).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Download an Eclipse version above 3.4 (I suggest the one found at &lt;a href="http://download.eclipse.org/eclipse/downloads/drops/R-3.4.2-200902111700/"&gt;http://download.eclipse.org/eclipse/downloads/drops/R-3.4.2-200902111700/&lt;/a&gt; - Eclipse SDK for your platform should be enough). Make sure it has all of the Eclipse RCP plugins.  If you pick another version, choose the package Eclipse SDK or the specific build for Eclipse Plug-in Development.&lt;/li&gt;&lt;li&gt;Install it on your system. It usually just involves unpacking the zip or tar.gz file you downloaded.&lt;/li&gt;&lt;li&gt;Open it. Usually, just enter the folder that was created on the previous step, there should be an executable called 'eclipse'. Run that executable.&lt;/li&gt;&lt;li&gt;Install subclipse. Go to "Help"-&gt;"Software Updates...". Select the tab "Available Software", click on "Add Site...". Fill in the "Location" field with "http://subclipse.tigris.org/update_1.4.x" (if you installed version 1.6 of Subversion, you can use "http://subclipse.tigris.org/update_1.6.x"). Click on OK. It should list the site on the table with the name "http://subclipse.tigris.org/update_1.4.x". Click the checkbox next to it. Click on the button "Install..." on the upper right corner. Accept the license and let it install. Once it's done, it will ask you to restart Eclipse. Please do.&lt;/li&gt;&lt;li&gt;Download the file "&lt;a href="http://svn.archimedes.org.br/public/mainarchimedes/rcparchimedes/br.org.archimedes.config/trunk/ArchimedesProjectsSet.psf"&gt;http://svn.archimedes.org.br/public/mainarchimedes/rcparchimedes/br.org.archimedes.config/trunk/ArchimedesProjectsSet.psf&lt;/a&gt;". Save it somewhere you can find.&lt;/li&gt;&lt;li&gt;Go back to Eclipse and go to "File"-&gt;"Import...". Expand "Team" and choose "Team Project Set". Click "Next". Click "Finish". It will download all the projects needed to work on Archimedes. This will take some time and a lot of bandwith. If you get an "Svn error", please erase all projects and try again.&lt;/li&gt;&lt;/ol&gt;That's it. Once you've done that, you should have about 100 projects for Archimedes. If you are getting some compile errors ("there are red signs on the projects"), try changing your Java default compile version. To do so, go to "Window"-&gt;"Preferences..." (or "Eclipse"-&gt;"Preferences..." on Mac), type 'compiler' , select the "Compiler" item on your left pane, change the "Compiler compliance level" to "1.5". It should rebuild the project and remove the compiler errors.&lt;br /&gt;&lt;br /&gt;Running Archimedes from within Eclipse should be pretty simple but I've found problems more than once. Here is what you should do:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Find the project "br.org.archimedes.core", expand it. Find the file "archimedes.product", right-click it, "Run As..."-&gt;"Eclipse Application". On Mac, that's enough. It all works. On Linux, I've found that this doesn't select all plugins needed. It then pops an error dialog asking if you want to view the log. Answer "No".&lt;/li&gt;&lt;li&gt;Go to "Run"-&gt;"Run configurations...". Select the tab "Plug-ins". Click the button "Add Required Plug-ins". Click "Apply" and then "Run". This should do the trick and run Archimedes with all plug-ins.&lt;/li&gt;&lt;/ol&gt;Ok! This should be enough to work on Archimedes and try your modifications. Last and final step to have a complete Archimedes environment: setting up the build system. This also got greatly improved. The following steps should be enough:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download an Eclipse version along with its Delta Pack. I suggest you use the same version on development and on building to avoid unpleasant surprises. Therefore, go to &lt;a href="http://download.eclipse.org/eclipse/downloads/drops/R-3.4.2-200902111700/"&gt;http://download.eclipse.org/eclipse/downloads/drops/R-3.4.2-200902111700/&lt;/a&gt;  and download "Eclipse SDK" for your platform and "Delta Pack". Extract both files on the same place (it should merge the contents). This means, if you enter the "eclipse/plugins" directory of that new eclipse path, you should find plugins for all platforms (such as "org.eclipse.swt.carbon.macosx_3.4.0.v3448f.jar", "org.eclipse.swt.gtk.linux.ppc_3.4.0.v3448f.jar", "org.eclipse.swt.gtk.linux.x86_3.4.0.v3448f.jar",&lt;br /&gt;"org.eclipse.swt.win32.win32.x86_3.4.0.v3448f.jar" and others).&lt;/li&gt;&lt;li&gt;Go to your "br.org.archimedes.build" project. Open the "build_local.properties" file. Change all fields. "buildHome" should be the absolute path to your "br.org.archimedes.build" project. "buildDirectory" should be the absolute path to a temporary folder where the build will generate the files. Make sure this is not a folder where you store important files because the build system will erase it. "eclipseDir" should be the absolute path to the Eclipse installation created on step 1. "os" should be the name of your operating system ("linux", "macosx" or "win32"). "ws" should be the name of the widget system of your system ("gtk", "carbon" or "win32"). "arch" should be the architecture of your processor ("x86", "x86_64" or "ppc").&lt;/li&gt;&lt;li&gt;Go to your "br.org.archimedes.build" project and open the folder "maps". Copy the file "all-hugo.map" to "all.map". Open the new "all.map". Replace all occurrences of "/Users/night/Document/Archimedes/" with the path to your workspace (for example "/home/night/" if my workspace if "/home/night/workspace").&lt;/li&gt;&lt;li&gt;On Eclipse, right click the "build.xml" file on "br.org.archimedes.build" project and choose "Run As..."-&gt;"Ant Build". On other systems, open a terminal (or cmd.exe), go to the directory where you "br.org.archimedes.build" project is and type 'ant'. If "ant" is not installed, please install it (&lt;a href="http://ant.apache.org/manual/install.html"&gt;http://ant.apache.org/manual/install.html&lt;/a&gt; or "sudo apt-get install ant" for debian based linux distributions). This should trigger the build process. It takes around 5 minutes to build it all.&lt;/li&gt;&lt;/ol&gt;On the folder you specified for "buildDirectory", you should find a folder "results" that contains several files. Among them, "Archimedes-&lt;current_version&gt;-&lt;os&gt;.&lt;ws&gt;.&lt;arch&gt;.zip" files for macosx, linux (x86 and x86_64) and windows. Those are your executables.&lt;br /&gt;&lt;br /&gt;Happy hacking!&lt;/arch&gt;&lt;/ws&gt;&lt;/os&gt;&lt;/current_version&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-8358088034319986099?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/8358088034319986099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=8358088034319986099' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8358088034319986099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8358088034319986099'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2009/03/developing-for-archimedes.html' title='Developing for Archimedes'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-1795175754936059985</id><published>2009-03-26T12:20:00.003-03:00</published><updated>2009-03-26T12:47:33.506-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='github'/><title type='text'>The silence of the lambs on Archimedes</title><content type='html'>It has a been a while since no news were posted, but, as in the movie, silence doesn't mean nothing is happening. Actually, quite a few things happend since the last post.&lt;br /&gt;&lt;br /&gt;First, a new team of 6 undergrad students is working on Archimedes again. As for the past 4 years, they'll work on Archimedes as part of an eXtreme Programming laboratory course. This semester's goal is "Portability".&lt;br /&gt;I'll have them focus on making Archimedes compatible with other software. This basically means file support for SVG (exporting only for now -- in order to have post project work on &lt;a href="http://www.inkscape.org"&gt;Inkscape&lt;/a&gt;), native support to DXF (importing and exporting without file losses -- should allow to work with most of other CAD systems) and working on a few more essential elements such as Spline and Groups. I've also asked them to finish the work that was started on Trim, Extend and Fillet. I am not sure they will manage to do it all, but I'll help them the way I can so we might actually do it.&lt;br /&gt;&lt;br /&gt;Other than that, I am happy to say &lt;a href="http://www.archimedes.org.br"&gt;Archimedes' new website&lt;/a&gt; is pretty good. It is currently pretty featureless but I intend to improve this with time. My next step is to add a release system plugged into the repository in order to easily generate new versions of Archimedes. If I manage to do it by April, 1st, I'll use it to release the new version with several improvements. For now, please report or request anything you want from Archimedes in the &lt;a href="http://www.sf.net/projects/arquimedes"&gt;SourceForge website&lt;/a&gt;. I hope to remove this dependency with the new website but it will take some time.&lt;br /&gt;&lt;br /&gt;Less exciting news. I recently discovered that Archimedes had a few licensing issues. I've spent two months trying to get in touch with every code contributor of Archimedes so far to change the License of Archimedes and had a partial success. The output is: Archimedes cannot be &lt;a href="http://www.gnu.org/licenses/"&gt;GPL&lt;/a&gt; (any version) because it uses code licensed under &lt;a href="http://www.eclipse.org/legal/epl-v10.html"&gt;EPL v1.0&lt;/a&gt; and changes it, which would mean it should be licensed under GPL which isn't allowed by the EPL license. Therefore, Archimedes code is now licensed under EPL. The only implication of this change is that Archimedes' code is no longer as viral as GPL code so people can use parts of it on commercial application as long as they keep Archimedes' code free. This change also implied that every project of the current Archimedes project is now distributed with a License.TXT file. I was also forced to create a small &lt;a href="http://rubyforge.org/projects/header-inserter"&gt;header-inserter ruby script&lt;/a&gt; which I made available at rubyforge as a library. The library makes it really easy to list all files within a directory that match a certain pattern and also retrieves subversion data for each file if there is one. The code can also be found at my &lt;a href="http://github.com/night"&gt;github page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Last notice, Jhonny warned me that it wasn't clear which page of archimedes should be check. Please, always refer to &lt;a href="http://www.archimedes.org.br"&gt;www.archimedes.org.br&lt;/a&gt;! The incubadora's page is abandoned. Their link is awful and the support is getting thinner and thinner so I guessed it would be better to handle ourselves. That's it for now.&lt;br /&gt;More news soon with the new version.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-1795175754936059985?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/1795175754936059985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=1795175754936059985' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1795175754936059985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1795175754936059985'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2009/03/silence-of-lambs-on-archimedes.html' title='The silence of the lambs on Archimedes'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-305355160371861059</id><published>2009-01-14T09:48:00.003-02:00</published><updated>2009-01-14T10:04:48.977-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><title type='text'>Holidays are over and new archimedes version</title><content type='html'>Hello everyone,&lt;br /&gt;The end of the year is always complicated. This year I had an extra since I am trying to move to new apartment. Luckily, to plan my move, I wanted to have a plan of the place and this sent me back to Archimedes. When I tried to use it, I discovered several bugs that stopped me from working. So I spent a pretty good amount of time solving some of those problems.&lt;br /&gt;&lt;br /&gt;So I've just release a new version with several of those fixes. I have already discovered 4 others bugs in this unstable version and I am working to fix them. I am also working on PDF exporting system again. Most of the code just needs to be adapted and a few classes for the eclipse's system. Extend is also on going but I am not sure I will manage to distribute it on the next stable version without delaying too much.&lt;br /&gt;&lt;br /&gt;I also closed (removed all files from) the repository on https://archimedes.incubadora.fapesp.br/svn/ and let a file saying that everything (including the history) has been moved to http://svn.archimedes.org.br/public/.&lt;br /&gt;This should improve the overall bandwith and allow me to trying and implement a few features on the archimedes website (which is pretty stalled right now).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-305355160371861059?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/305355160371861059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=305355160371861059' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/305355160371861059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/305355160371861059'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2009/01/holidays-are-over-and-new-archimedes.html' title='Holidays are over and new archimedes version'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-4454023344721011969</id><published>2008-10-27T12:32:00.003-02:00</published><updated>2008-10-27T12:50:05.667-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coding dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='oopsla'/><category scheme='http://www.blogger.com/atom/ns#' term='open space'/><title type='text'>Tuesday at OOPSLA'08</title><content type='html'>Tuesday I managed to seen a bit less things from the conference since I had to work as part of my student volunteer program for most of the day. I managed to see the opening keynote and at the end of the day, have a session of traditional &lt;a href="http://http://groups.google.com/group/dojo_sp/web/CodingDojoSP-2008.pdf"&gt;Coding Dojo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The opening keynote was from an archeologist named Mark Lehner who dedicated over 30 years of his life to the history of Egypt. He had a long talk about the way the pyramids are viewed and his search for the city that existed to support the pyramids constructions. Aside from several very interesting information about archeology and the way archeologists work, his talk showed how &lt;span style="font-style: italic;"&gt;modular&lt;/span&gt; the city that built the pyramids was. Amazingly, the houses of the workers were all pretty much the same several times replicated as &lt;span style="font-style: italic;"&gt;instances of a model&lt;/span&gt;. He also showed that the hierarquical structure among the builders was the same as in every social organization where roles were different acording to the structure where you were, or simply &lt;span style="font-style: italic;"&gt;polymorphic&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;All this is interesting and shows the ideas we have nowadays are not even close to be new and have been used over and over. Reassuring but no big deal to me. What amazed me was that those things only happend in the city that built the pyramids and the people in it. The pyramids themselves not modular or polymorphic at all. They are carefully hand crafted to and not slightly modular. I don't know yet what to take away from this information but it sure sounds like something we should think about.&lt;br /&gt;&lt;br /&gt;During the day I did a few volunteers task. I ended my day by attending to the Coding Dojo session. First of all, I wish people with the &lt;a href="http://dojotoolkit.org/"&gt;Javascript library called 'dojo'&lt;/a&gt; would rename their project to something more appropriate. According to their own website, 'dojo' is just a name that won't get them sued. Coding Dojos actually do have a reason to be called as such and I had a few people coming over thinking we were going to talk about the library which is somehow anoying. Anyway, we had a small group (4 people including me and Mariana) and we attacked the &lt;a href="http://acm.uva.es/p/v101/10189.html"&gt;Minesweeper problem&lt;/a&gt; in Java. We managed to code a solution but we were not really very pleased with it at the end. Mostly because we only had two tests (although we had a 100% coverage) and we took some very big steps during the solution. This is a very common outcome for a first session of a Coding Dojo. Feeling which tests will result in a major step is something that does not have (yet?) a &lt;a href="http://codeache.blogspot.com/2008/10/crystal-monday-morning-at-oopsla-2008.html"&gt;&lt;span style="font-weight: bold;"&gt;Shu&lt;/span&gt; or &lt;span style="font-weight: bold;"&gt;Ha&lt;/span&gt; description&lt;/a&gt; and is usually learned with practice and time.&lt;br /&gt;&lt;br /&gt;That's about it for Tuesdays. I'll post a bit about the following days later on this week.&lt;br /&gt;Enjoy yourselves.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-4454023344721011969?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/4454023344721011969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=4454023344721011969' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4454023344721011969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4454023344721011969'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/10/tuesday-at-oopsla08.html' title='Tuesday at OOPSLA&apos;08'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-6710689128012542610</id><published>2008-10-27T11:58:00.005-02:00</published><updated>2008-10-27T12:31:37.447-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coding dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='oopsla'/><category scheme='http://www.blogger.com/atom/ns#' term='trips'/><category scheme='http://www.blogger.com/atom/ns#' term='open space'/><title type='text'>Empty open spaces at OOPSLA'08</title><content type='html'>Hi again,&lt;br /&gt;I spent most of Monday afternoon at the Open Space area at OOPSLA. Open spaces are a very interesting concept to get people gather around a subject. It is based on the fact that it is much more useful to have a conversation than a monologue. Therefore, traditional presentations are less useful than getting people together to chat with each other.&lt;br /&gt;&lt;br /&gt;So what you need to have an open space?&lt;br /&gt;Well, space, a big board, a few tables, a lot of chairs, flip charts and, maybe, just maybe, one projector. On the big board, write down a time schedule with several areas available (places with chairs and a table) and provide a way for people to suggest their topics.&lt;br /&gt;After that, you need to warn people about a few things. There are 4 rules on open spaces and one law. The rules are:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;It starts when it starts&lt;br /&gt;This means that people can be late, people can just post and sit and start talking or people can start it before or after the time schedule.&lt;/li&gt;&lt;li&gt;Those who attend are the right persons&lt;br /&gt;Whoever comes in is welcome and should be there. No matter if that person does not know much about the subject or is an expert. A lot of very interesting things can be achieved by just gathering people that know very little about a subject but are willing to spend some time thinking about it.&lt;/li&gt;&lt;li&gt;Whatever happens was the only thing that could have happened&lt;br /&gt;If the output of the meeting is that this subject is useless to be discussed, so be it. It is still a very good thing to learn. If, on the other hand, you decide that the people there are more interested in something else and you change themes, great too!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It ends when it ends&lt;br /&gt;There is no need to speed or slow people to finish on schedule. If the subject has not been fully discussed, stay. If it has, go. Nothing to worry about.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;The law is called "The law of 2 feet" or "The law of mobility". It states that if you are not giving to or receiving from anything of that open space session, then leave. It is understood and expected that people only stay if they are passionate about what is being discussed. This allows people to leave a group freely at anytime therefore keeping the group always happy about the ongoing discussion. The two feet come from a foot of passion and one from responsibility which should allow you to leave if needed.&lt;br /&gt;&lt;br /&gt;This also allows for two specific behaviors. The first one is the butterfly one which consist of flying around the spaces just to check what is going on without participating actively or staying anywhere. Those can generate new subjects when meeting another of their species. The second one are the bumble bees. Those go around each conversation and sit for a while, engage in the discussion and then leave to another area. Those ones allow for information and different perspectives to flow across the areas. Both should be welcome and accepted in an open space environment.&lt;br /&gt;&lt;br /&gt;This was the first year OOPSLA had an open space are. Dirk Reihle was responsible for that but, sadly, he got stuck in Germany trying to get his work visa to the US. Luckily enough, Deborah Hartmann was there to replace him. Since OOPSLA's open activities really only start on Tuesday, the area was quite empty on Monday afternoon and the Coding Dojo session I had suggested with Mariana ended up empty. We then decided to help Deborah in creating an interactive poster to present the Open Space during the poster presentations at the ice breaker reception later that day. We came up with a three areas poster: What is an Open Space? - The schedule for Tuesday, Wednesday and Thursday - What questions would you like to have answered by Friday?&lt;br /&gt;The idea was to get both people aware of open spaces and people that had no idea what it was to collaborate in order to create new sessions. And indeed, during the reception, we managed to get some people to suggest topics and get interested in the topics that are posted. And that closed Monday around 9pm and we went straight to bed to sleep.&lt;br /&gt;&lt;br /&gt;That was it for Monday. If you have ever been to an open space and would like to give a better description than mine, please do so in the comments here or post a link to your blog. If you would like to have an open space going, contact me or post a comment and I can try to help or get you in touch with other helpers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-6710689128012542610?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/6710689128012542610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=6710689128012542610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/6710689128012542610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/6710689128012542610'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/10/empty-open-spaces-at-oopsla08.html' title='Empty open spaces at OOPSLA&apos;08'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-5373616305142820438</id><published>2008-10-27T11:09:00.007-02:00</published><updated>2008-10-27T12:58:50.348-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='oopsla'/><category scheme='http://www.blogger.com/atom/ns#' term='crystal'/><category scheme='http://www.blogger.com/atom/ns#' term='trips'/><title type='text'>Crystal Monday morning at OOPSLA 2008</title><content type='html'>Hello,&lt;br /&gt;As always with OOPSLA, once it starts it is very hard to keep anything updated since we get so busy. Monday was an interesting day.&lt;br /&gt;&lt;br /&gt;I had to pleasure to attend to &lt;a href="http://alistair.cockburn.us/"&gt;Alistair Cockburn&lt;/a&gt;'s tutorial called &lt;a href="http://www.amazon.com/Crystal-Clear-Human-Powered-Methodology-Development/dp/0201699478"&gt;Crystal Clear Methodology&lt;/a&gt;. As I expected it was very interesting. Alistair's work is well known and I am surely not the best person to talk about it but I will try anyway. Although I already heard about the &lt;a href="http://en.wikipedia.org/wiki/Shuhari"&gt;Shu-Ha-Ri &lt;/a&gt;levels of knowledge (that are not that far from Apprentice-Novice-Expert-Master from the &lt;a href="http://blog.bruceabernethy.com/post/The-Dreyfus-Model-of-Skills-Acquisition.aspx"&gt;Dreyfus model&lt;/a&gt;), it is always better the have them explained from someone that know them very well.&lt;br /&gt;The idea is that the &lt;span style="font-weight: bold;"&gt;Shu&lt;/span&gt; level of knowledge is the one where you want to learn the basis. It basically means you want a recipe that can help you get the thing done without having to give it much thoughts. This is how you learn most of the things in life: reading, writing, riding a bike, cooking, programming and those sort of things.&lt;br /&gt;Once you are comfortable at reproducing those steps, you want to have a better understanding about why the best practioners in the fields do it differently from time to time. You then pass to the &lt;span style="font-weight: bold;"&gt;Ha&lt;/span&gt; level. In this level, you get to collect all sorts of techniques in the field you are learning. This is when you learn the exceptions, the cases, the workarounds and stuff like that. If you take the learning to ride a bike example, this is when you can take those auxiliary wheels off and do those nice curves all by yourself. You might also learn how to straight your bike and have it running on just one wheel.&lt;br /&gt;When you get to master those several techniques, you get to understand how or when to use one technique or another. At this level, you are reaching the &lt;span style="font-weight: bold;"&gt;Ri&lt;/span&gt;. From then on, you can pick techniques according to the context. Your answers to any question become "It depends..." and very slight changes in the environment can make you change radically the way you do things. At this level, you might even inovate with new solutions that you never really thought about, they just &lt;span style="font-style: italic;"&gt;feel&lt;/span&gt; right.&lt;br /&gt;&lt;br /&gt;If you are familiar with the Dreyfus model of knowledge, you can see very clearly that those are very closely related ideas. It is interesting to perceive how the transitions in this model are more &lt;span style="font-style: italic;"&gt;fluid&lt;/span&gt; or, let's say, more oriental opposing to the transitions in the Dreyfus model being more occidental. More on those differences to come on the next posts.&lt;br /&gt;&lt;br /&gt;The rest of Alistair's tutorial showed how XP (first edition) and Scrum are excelent &lt;span style="font-weight: bold;"&gt;Shu&lt;/span&gt; descriptions of Agile methods although the author are clearly at the &lt;span style="font-weight: bold;"&gt;Ri&lt;/span&gt; level themselves. XP (second edition) and the Crystal family, on the other hand, are, according to Alistair, better suited at the &lt;span style="font-weight: bold;"&gt;Ha&lt;/span&gt; level since they present a set of possible solutions according to a given environment. I personally don't think the &lt;span style="font-weight: bold;"&gt;Ri&lt;/span&gt; level can be learned with a book which makes me believe that we can't go much further than Crystal in the matter of describing Agile methods if Alistair is right.&lt;br /&gt;&lt;br /&gt;There was much more content on Alistair's talk but you can learn most of it from his books.&lt;br /&gt;&lt;br /&gt;That was it for Monday morning. More posts comming with the rest.&lt;br /&gt;&lt;br /&gt;See you all!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-5373616305142820438?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/5373616305142820438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=5373616305142820438' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5373616305142820438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5373616305142820438'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/10/crystal-monday-morning-at-oopsla-2008.html' title='Crystal Monday morning at OOPSLA 2008'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-4378417375579501120</id><published>2008-10-19T17:41:00.003-02:00</published><updated>2008-10-19T17:57:01.275-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oopsla'/><category scheme='http://www.blogger.com/atom/ns#' term='trips'/><title type='text'>First day at OOPSLA</title><content type='html'>Hello,&lt;br /&gt;I am currently attending &lt;a href="http://www.oopsla.org"&gt;OOPSLA 2008&lt;/a&gt; at Nashville, Tennessee in the USA. This is the second year that I am a student volunteer at OOPSLA. This year, there are much fewer attendees and, as far as we know, it is the financial crisys' fault.&lt;br /&gt;So far, it has just started. Registration went pretty well this morning and tutorials are going OK so far. No big deal and we are yet waiting for the special talks. I would highlight Dick Gabriel's photography  course that will be going on during the whole conference. Tomorrow we'll have Alistair Cockburn talking about Crystal in the morning and effective agile use cases in the afternoon. I will surely attend to the first one. I might join the second one although I might go to the Design Pattern: Next Generation's workshop by Brian Foote, Dirk Riehle and Joshua Kerievsky. I was slightly disapointed by this year's program.&lt;br /&gt;&lt;br /&gt;Two news that were supposed to be secret but are not. The first one is that next year's OOPSLA will be held at Orlando, Floripa at some hotel inside Disney World. This means I probably won't attend it because hotels will be pretty expensive and flights will be overbooked way ahead so I don't think I'll make it. The second "secret" is that the special event will be held at the &lt;a href="http://www.nashville.gov/parthenon/"&gt;Parthenon&lt;/a&gt; replica in Nashville. I'll try to have Mariana's photos to post them here when we can.&lt;br /&gt;&lt;br /&gt;That's it for now. For those of you who still want Archimedes news, please wait another week or two until I manage to get my time schedule back to regular shift. See you all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-4378417375579501120?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/4378417375579501120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=4378417375579501120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4378417375579501120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4378417375579501120'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/10/first-day-at-oopsla.html' title='First day at OOPSLA'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-8478213366412435308</id><published>2008-10-14T14:19:00.005-03:00</published><updated>2008-10-19T14:21:24.698-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='coding dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='uberdojo'/><title type='text'>Coding Rumors++ or UberDojo</title><content type='html'>Hello,&lt;br /&gt;I previously described the &lt;a href="http://codeache.blogspot.com/2008/09/coding-rumors-or-telephone-coding-game.html#links"&gt;Coding Rumor&lt;/a&gt; game and later on presented the results we had at &lt;a href="http://codeache.blogspot.com/2008/09/pycon-brazil-summary.html#links"&gt;PyCon Brasil 2008&lt;/a&gt; doing it. During the &lt;a href="http://codeache.blogspot.com/2008/10/encontro-agil-was-success.html#links"&gt;Encontro Agil&lt;/a&gt;, we tried having a session of what &lt;a href="http://www.isnomore.net/"&gt;rbp&lt;/a&gt; (or R) called UberDojo to follow the UltraDojo idea (the name he prefered for Coding Rumor).&lt;br /&gt;Just to remind you, UltraDojo (or Coding Rumor) is a Coding Dojo session where you don't need a projector. The code is written in one laptop and the pair switches with rounds just like the regular one. Everyone works on the same problem but you only get to see the code for 2 rounds (14 minutes) in which you are the co-pilot and then the pilot. If you are not on any of those roles, you can chill and chat with other people. The advantage of this is that it requires less time focusing on the problem which makes it a good practice for conferences.&lt;br /&gt;The UberDojo version is just the UltraDojo game with several laptops. You should plan to have at least three people for each laptop but you can have more if you want. In this case, when the pilot leaves, he goes to the "audience" and will choose another laptop to go to on the next round.&lt;br /&gt;&lt;br /&gt;Last Monday's session happened at Thiago's house. We were 14 people (&lt;a href="http://www.dtsato.com/blog"&gt;Danilo Sato&lt;/a&gt;, &lt;a href="http://nutrun.com/"&gt;George Malamidis&lt;/a&gt;, &lt;a href="http://www.isnomore.net"&gt;Rodrigo Bernardo Pimentel&lt;/a&gt;, Thiago Colucci, Fabricio Sousa Nascimento, Jacqueline Marchetti, &lt;a href="http://blog.seatecnologia.com.br/"&gt;Renato Willi&lt;/a&gt;, &lt;a href="http://expressocapital.blogspot.com/"&gt;Bruno Pedroso&lt;/a&gt;, João Pedro Kerr Catunda - a.k.a Yoshi, Mariana Bravo, &lt;a href="http://www.vidageek.net"&gt;Breno Flesch, Rafael Schouery&lt;/a&gt;, Adolfo Rodrigues and myself). We had four laptops splitted in two round tables. Each table defined a language (&lt;a href="http://www.haskell.org/"&gt;Haskell&lt;/a&gt; and &lt;a href="http://www.ruby-lang.org/"&gt;Ruby&lt;/a&gt;) and each side of the table defined a problem (&lt;a href="http://codingdojo.org/cgi-bin/wiki.pl?KataBankOCR"&gt;Bank OCR&lt;/a&gt; and &lt;a href="http://acm.uva.es/p/v101/10189.html"&gt;Minesweeper&lt;/a&gt;).&lt;br /&gt;We followed 7 minutes rounds and tried to keep Haskell and Ruby "experts" available to help out people programming. At the end of each round, the co-pilots would become pilot, pilots would go away and part of the audience would join as a co-pilot on each table. We tried to keep it as random as we could in order to never repeat pairs. We had over 1 hour coding that way. It was very intense and fun. Obvisouly, we never got to finish any problem although we walked pretty well with the Haskell OCR system.&lt;br /&gt;&lt;br /&gt;All the produced source code is available at &lt;a href="http://www.github.com"&gt;Github&lt;/a&gt; on the &lt;a href="http://github.com/dojosp/participant-s-projects/tree/master/"&gt;dojo project&lt;/a&gt; at UberDojo-02. In retrospective people reported that is was very exciting and that it was actually a good teaching system but that they should police themselves to actually explain quickly the code to the newcomer before starting to code and be even more radical with the baby steps approach. I think this might be a very good exercise for experienced TDDers and agile teams. I believe if a team manages to actually code something slightly more complicated than &lt;a href="http://rubyquiz.com/quiz22.html"&gt;Roman to Numerals&lt;/a&gt;, it is actually showing a lot of code cleaness. We acknowledge, however, that this sort of exercise is not especially welcoming to new people and requires quite a few experience with TDD. We agreed to have a UberDojo once a month in our meetings and keep the rest as regular dojo sessions. If you try it, please let me know what went right or wrong and your impressions.&lt;br /&gt;&lt;br /&gt;Thanks and bye bye.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-8478213366412435308?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/8478213366412435308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=8478213366412435308' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8478213366412435308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8478213366412435308'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/10/coding-rumors-or-uberdojo.html' title='Coding Rumors++ or UberDojo'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-2028348404480781324</id><published>2008-10-13T08:52:00.006-03:00</published><updated>2008-10-13T09:44:37.931-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='encontro agil'/><category scheme='http://www.blogger.com/atom/ns#' term='agilcoop'/><title type='text'>Encontro Agil was a success!</title><content type='html'>Hello everyone,&lt;br /&gt;On Saturday, we (&lt;a href="http://www.agilcoop.org.br/"&gt;AgilCoop&lt;/a&gt;) ran the first 2008 agile conference in Brazil (although &lt;a href="http://www.thedevelopersconference.com.br/"&gt;TDC&lt;/a&gt; had quite a few agile talks, the focus was not in agile). The &lt;a href="http://www.encontroagil.com.br/"&gt;Encontro Agil&lt;/a&gt; (or Agile Meeting) happened at the &lt;a href="http://www.ime.usp.br/"&gt;IME&lt;/a&gt; (Instituto de Matemática e Estatística - Mathematics and Statistics Institute) of &lt;a href="http://www.usp.br/"&gt;USP&lt;/a&gt; (University of São Paulo).  The event was free (as in free beer). We had around 200 attendees, 16 speakers, 2 debates and a free lunch.&lt;br /&gt;We followed several ideas from the &lt;a href="http://www.agile2008.org/"&gt;Agile 2008&lt;/a&gt; conference. We had an ongoing retrospective on a wall between the two main rooms, we had an open spaces room that was interesting but quite empty since people are not used to those ideas, we had a birds of a feather session with 5 rooms discussing several topics and a huge updatable conference schedule.&lt;br /&gt;&lt;br /&gt;On the overall, the feedback was great. Some things people pointed out in the retrospective board: we have to have more coffee, especially in the morning and after lunch. There was a load of information to be absorbed in too little time. Maybe increase the conference size or reduce the amount of information on each talk. Hand-over material has to been better selected.&lt;br /&gt;On the other hand, people loved the agility in the event. We had to find a replacement talker (that was me) because another talker (Jorge) was late and the talk ran quite nicely. We adjusted the schedule on the fly to allow Jorge to give his talk anyway. The free lunch was one of the great points and birds got a nice feedback too since interaction is nicer than just listening.&lt;br /&gt;&lt;br /&gt;A few statistics of the event. We had almost 500 people that registered themselves to come. From those, only around 300 confirmed their participation on the event a couple days before. And we had 200 attendees which gives us something around 60% drops from the original registration. As it is frequent on computer science conferences, we had 16% female attendees. Around 80% of the public was either a manager or a developer and had between 25 and 45 years old. We also had 41% of the attendees that had no experience with agile methods and 43% that were novice to it (had less than 1 year of experience). To my information, 60% never contribute to free software projects and 25% contribute occasionally. Finally, music is the extra-curriculum activity that most people practice (44%) and/or would like to learn more (48%) followed closely on the learning wish list by dance (35%).&lt;br /&gt;&lt;br /&gt;I guess this is it for now. We will have all the content of the advanced talks on the web and a few videos of the event published around. I will post those when they are available. All slides should be available at the &lt;a href="http://www.agilcoop.org.br/"&gt;AgilCoop web site&lt;/a&gt; in a few days as well as on the &lt;a href="http://www.encontroagil.com.br/"&gt;conference's web page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Future conferences in Brazil that will have some agile content are &lt;a href="http://www.locaweb.com.br/railssummit/"&gt;Rails Summit Latin America 2008&lt;/a&gt; organized by Locaweb and mainly &lt;a href="http://www.akitaonrails.com/"&gt;Fabio Akita&lt;/a&gt; and &lt;a href="http://www.caelum.com.br/falando-em-agile/"&gt;Falando em Agile&lt;/a&gt; organized by Caelum. Both will happen in October while I am at &lt;a href="http://www.oopsla.org/"&gt;OOPSLA 2008&lt;/a&gt; so I won't be there but I expect them to be quite interesting.&lt;br /&gt;&lt;br /&gt;And get ready for next year, our goal is to have at least one international speaker.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-2028348404480781324?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/2028348404480781324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=2028348404480781324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/2028348404480781324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/2028348404480781324'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/10/encontro-agil-was-success.html' title='Encontro Agil was a success!'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-88799161340180973</id><published>2008-10-04T21:09:00.002-03:00</published><updated>2008-10-04T21:22:14.338-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='attachment_fu'/><title type='text'>Archimedes' screenshots</title><content type='html'>Hello everyone,&lt;br /&gt;I've just updated the &lt;a href="http://www.archimedes.org.br"&gt;archimedes web site&lt;/a&gt; to include user registration. Now, all the content is dynamical. Both the front page as well as the screenshots are dynamically added by a special user (me). I also implemented a release page that will soon become a download page.&lt;br /&gt;The great advantage in all this is not really to the users but mostly to myself. It allows me to easily and quickly update stuff about Archimedes. Once the download page is up, I should probably give it a rest for some time. Work a bit more on the software itself.&lt;br /&gt;&lt;br /&gt;I hope to improve this system to plug it to the repository (http://svn.archimedes.org.br/public/) and have releases and a few more stuff updated automatically. It would be fantastic. If I get it to work, I might even open this to more people to create their projects in another website. Archimedes' site will become a plug in forge in that case. I'm investing a lot into this quick feedback tool in order free more time to code later on. Let's hope it works.&lt;br /&gt;&lt;br /&gt;During my development I found a small bug in &lt;a href="http://svn.techno-weenie.net/projects/plugins/attachment_fu/"&gt;attachment_fu&lt;/a&gt;. If you do not specify an image processor to your image model and you use ImageScience, gif thumbnails' path get messed up. I've sent the patch to &lt;a href="http://www.techno-weenie.net/"&gt;Rick Olson&lt;/a&gt; but if you want it, it is simple. Open up attachment_fu.rb, go to line 85 and 86 and change them from:&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;attachment_options[:processor] = "#{processors.first}Processor"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  processor_mod = Technoweenie::AttachmentFu::&lt;/span&gt;&lt;div dir="ltr"&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-family: courier new;"&gt;Processors.const_get(&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-family: courier new;"&gt;attachment_options[:processor]&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-family: courier new;"&gt;)&lt;/span&gt;&lt;br /&gt;to:&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;attachment_options[:processor] = processors.first&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;processor_mod = Technoweenie::AttachmentFu::&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-family: courier new;"&gt;Processors.const_get("#{&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-family: courier new;"&gt;attachment_options[:processor]&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-family: courier new;"&gt;.to_s.classify}Processor")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Restart your server and this should do the trick.&lt;br /&gt;&lt;br /&gt;Well, that's it for now.&lt;br /&gt;Bye bye&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/1597571711823966454-88799161340180973?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/88799161340180973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=88799161340180973' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/88799161340180973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/88799161340180973'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/10/archimedes-screenshots.html' title='Archimedes&apos; screenshots'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-4792352765343190670</id><published>2008-09-29T08:43:00.002-03:00</published><updated>2008-09-29T08:54:28.867-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><title type='text'>Archimedes' site becoming a forge</title><content type='html'>Hello there,&lt;br /&gt;I've been working on archimedes.org.br website a little lately. It just happens that I have been working on it to make it a forge instead of a simple project website.&lt;br /&gt;The idea is that I can host any plugin development to archimedes on the site providing a repository and a nice bug tracking system and system presentation. It is also open source and is already available at &lt;a href="http://svn.archimedes.org.br/public/br.org.archimedes.www/"&gt;http://svn.archimedes.org.br/public/br.org.archimedes.www/&lt;/a&gt;. It works using Ruby on Rails 2.0.2 (I know I'm a bit outdated) and so far only has features for archimedes.&lt;br /&gt;&lt;br /&gt;So far the system is pretty simple. I have projects, each project has versions.&lt;br /&gt;There are users and users can have a ProjectMembership relationship with a project (and vice-versa).&lt;br /&gt;My next step is to create a screenshot posting system that relates them to versions. This way screenshots can be dated and related to versions and operating system (still to be created). I hope I managed to improve this part until next sunday and then release it to the site itself.&lt;br /&gt;&lt;br /&gt;I am trying to get a repository dump of current archimedes' subversion repository because I want to migrate it to the new address. However, it looks like people are too busy to run a command line to help me at the incubadora. I will insist and, luckily, we will soon have a new home with all the commit logs and past under archimedes' address. It will give me more control over what happens and how to track it.&lt;br /&gt;&lt;br /&gt;That's it for now. Work calls. Bye bye!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-4792352765343190670?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/4792352765343190670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=4792352765343190670' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4792352765343190670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4792352765343190670'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/09/archimedes-site-becoming-forge.html' title='Archimedes&apos; site becoming a forge'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-7949825124470528733</id><published>2008-09-23T11:22:00.002-03:00</published><updated>2008-09-23T11:28:14.145-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><title type='text'>Archimedes' marketing first step</title><content type='html'>Hello,&lt;br /&gt;I've worked a little on Archimedes' first marketing steps.&lt;br /&gt;I've changed the DNS pointers to my dreamhost account and set up a first version of the website. It currently only features the main page and I am working on the Screenshot page. Screenshots will be related to an operating system and a version. This way, people will be able to see screenshots and know how their Archimedes should look like in their computer.&lt;br /&gt;I am working on the model of this and hsould restrict access to a few stuff on that. I hope I can finish this by this weekend. This might also produce the Download page since I will need to have versions which will be linked to the files of those versions.&lt;br /&gt;&lt;br /&gt;I also payed for another 5 years of archimedes.org.br and arquimedes.org.br so the website is ensure for some time.&lt;br /&gt;&lt;br /&gt;Finally, I am trying to reply bug reports and solve them as quickly as I can. I am focusing on Bug Reports and Support Requests leaving Features aside until I can have the current version working decently. Please send me feedbacks about any of those.&lt;br /&gt;&lt;br /&gt;See you later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-7949825124470528733?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/7949825124470528733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=7949825124470528733' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/7949825124470528733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/7949825124470528733'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/09/archimedes-marketing-first-step.html' title='Archimedes&apos; marketing first step'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-7668767255097524616</id><published>2008-09-23T10:35:00.003-03:00</published><updated>2008-09-23T11:19:53.550-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coding dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='trips'/><title type='text'>PyCon Brazil summary</title><content type='html'>Hello,&lt;br /&gt;I came back from PyCon Brazil on Sunday morning. It was a very pleasant experience although I was there only for half of the conference. There were three main things that are worth writing about.&lt;br /&gt;&lt;br /&gt;The first one was a nice chat I had with &lt;a href="http://www.isnomore.net/"&gt;rbp&lt;/a&gt; and &lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=238994"&gt;Bruce Eckel&lt;/a&gt; about the Coding Dojo. To start, I explained a little bit about the Coding Dojo dynamics and the practices used and rbp helped me with some details. Once Bruce got the idea, we talked about collaboration between Dojo (specifically about São Paulo's Dojo and Paris' one) and the tools we needed for that. It soon become a crazy MMOG (Massive Multiplayer Online Game) where people from all over the world could join and choose a theme where there would be rooms hosting coding dojos. It would be running 24 hours per day since there is always a dozen programmers awake willing to code some more. We all agreed that this would never replace the physical coding dojo meetings but it could serve as a motivator to join them. We discussed what are the tools lacking for that and how viable it would be to build them and have them work. Was a pretty cool idea. I would gladly start that if I wasn't already so late with all the other projects ;)&lt;br /&gt;&lt;br /&gt;The next noticeable event was the Coding Rumor (or Ultra-Dojo) session that we hosted. It was very instructive although it obviously didn't work out very well. The main problem was that participants were not TDD programmers which ment that their approach to solve the problems did not followed the baby steps' principle. The result was a code that seemed to work but was very hard to understand and was not very well test covered.&lt;br /&gt;I could learn from the experience that this exercice should only be done with people that are fluent with TDD and the regular Coding Dojo should be used to take people to that step. Another interesting thing was that the retired position was more harm then good. It quickly became a continuation of the previous round were the retired ordered the pilot each step he should make. We, therefore, decided that this position should be eliminated since the pilot always has the pointer to its retired. If needed, he can call him for help but he should be away from the current pair.&lt;br /&gt;&lt;br /&gt;Finally, the Coding Dojo session was pretty cool. We had around 20 attendees and most of them had never heard of Coding Dojo. If I remember correctly, about three persons sometimes wrote test firsts, about eight sometimes wrote tests. So mainly, people were really NOT experienced TDDers. The good thing is that this was not a major problem. I presented the ideas using &lt;a href="http://www.agilbits.com.br/material/DojoIntroPyconBrasil2008.pdf"&gt;this slides&lt;/a&gt; (english version &lt;a href="http://www.agilbits.com.br/material/DojoIntroPyconBrasil2008-en.pdf"&gt;here&lt;/a&gt;) and then we started to solve the &lt;a href="http://codingdojo.org/cgi-bin/wiki.pl?KataBankOCR"&gt;Bank OCR problem&lt;/a&gt; from &lt;a href="http://codingdojo.org/"&gt;codingdojo.org&lt;/a&gt;. I followed Kiko's suggestion to present the problem slowly (giving smaller goals at the beginning and growing them as they were reached) and let them start coding. It was interesting to see how hard it was for them to adapt to other people's ideas. Every co-pilot that arrived had a new idea and wanted to erase the previous one. I let this happen for a couple rounds then stopped it and made them follow the idea they were on by refactoring slowly towards the suggested solution. They managed to solve each digit using a dictionary this way and had some weird suggestion that coupled the implementation and the tests together (using the dictionary on tests or a copy of it) which they abandoned after a few arguments. After that, they went to parse several digits and had some problems to write the split string function. I suggested writing a test and they did and passed it. They were convinced it was going to work so they asked for another two rounds to finish the problem and accepted staying 15 minutes longer after the time for it. Unfortunetaly, the test was not complete and their implementation crashed. Took them a few mins to understand that they were lacking a test but they did and once it was written they accepted to stop.&lt;br /&gt;The retrospective was pretty cool and we noticed that most problems pointed were heavily related to the lack of experience of the group to those programming practices although they valued a lot all the ideas they had seen. I guess it was pretty much a success and I hope people will start more Coding Dojos around Brazil. My homework from the session was to provide a video showing a Coding Dojo session to do the marketing to other people. I already talked to people at São Paulo's Coding Dojo and we are going to record our next sessions to try have this video ready soon.&lt;br /&gt;&lt;br /&gt;I guess that is all for now. Bye bye people.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-7668767255097524616?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/7668767255097524616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=7668767255097524616' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/7668767255097524616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/7668767255097524616'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/09/pycon-brazil-summary.html' title='PyCon Brazil summary'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-5034659551292102368</id><published>2008-09-16T09:43:00.003-03:00</published><updated>2008-09-16T10:01:33.997-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><title type='text'>Archimedes marketing</title><content type='html'>On my trip to São Carlos, I read most of &lt;a href="http://www.red-bean.com/kfogel/"&gt;Karl Fogel&lt;/a&gt;'s book: &lt;a href="http://producingoss.com/"&gt;"Producing Open Source Software"&lt;/a&gt; which I bought to help me on my masters. I realized Archimedes' greater problems come from my lack of care to the marketing department. I have been failing over and over to gather volunteers as well as keeping my users interested.&lt;br /&gt;Most of this is due to the very low rate of updates at the website as well as the access failure caused by the University's server being down. I am planning to move both the website as well as the svn server to my &lt;a href="http://www.dreamhost.com/"&gt;Dreamhost&lt;/a&gt; account. This would allow me to maintain a much more customized website with a few integration tools that I find essential. I will keep the SourceForge website up and running but most of it will be proxied to the website.&lt;br /&gt;The next month will be very busy (you could see that on &lt;a href="http://codeache.blogspot.com/2008/09/upcomming-events.html#links"&gt;this post&lt;/a&gt;) but I am already working on the website both on the layout as well as the application. I will try to maintain it agile and balanced with Archimedes' development meaning I will try to release partial versions slowly. The first step is to transfer the domain's DNS to my Dreamhost account and set up the basics. I would most surely like to have some feedback on both the layout (with suggestion) as well as the content (once I have something online).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_QQ56bAYbO4Y/SM-tuWkD-DI/AAAAAAAAABg/myynGQKjOhk/s1600-h/website-screenshot.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 643px; height: 322px;" src="http://2.bp.blogspot.com/_QQ56bAYbO4Y/SM-tuWkD-DI/AAAAAAAAABg/myynGQKjOhk/s400/website-screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5246603102752340018" border="0" /&gt;&lt;/a&gt;For now, I let you with that screenshot of what I thought about and hope you can provide me some feedback. Thank you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-5034659551292102368?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/5034659551292102368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=5034659551292102368' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5034659551292102368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5034659551292102368'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/09/archimedes-marketing.html' title='Archimedes marketing'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QQ56bAYbO4Y/SM-tuWkD-DI/AAAAAAAAABg/myynGQKjOhk/s72-c/website-screenshot.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-6401634322004461064</id><published>2008-09-16T09:16:00.004-03:00</published><updated>2008-09-16T09:43:09.770-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coding dojo'/><title type='text'>In-company Dojos</title><content type='html'>Hello everyone.&lt;br /&gt;&lt;br /&gt;Last Friday, I was invited by &lt;a href="http://www.async.com.br/%7Ekiko"&gt;Kiko&lt;/a&gt; to São Carlos to organize a Coding Dojo at his company, &lt;a href="http://www.async.com.br/"&gt;Async&lt;/a&gt;. As usual, the Coding Dojo practices was a bit hard at the beginning but pretty quickly, the team started realizing how hard it was to think about software solutions collaboratively. The interesting part is that those are free and open source software developer. However, there is very little in their work methods that really gets them to collaborate on very short periods.&lt;br /&gt;&lt;br /&gt;They stated that the Coding Dojo is an amazing experience to meet your collegues. Obviously, they work on the same room but they ment that the Dojo helped them understand how their co-workers thought and solved problems. Obviously it also showed how TDD (Test Driven Development) can help find errors and drive their designs even if they were pretty much skeptic about it at the beggining.&lt;br /&gt;&lt;br /&gt;I am starting to consider a Coding Dojo as an amazing practical way to demonstrate the benefits from TDD, from quick "releases" and pair programming. It also teaches how to deeply collaborate with other programmers both teaching them new ideas as well as learning from them and follow their ideas. I believe that if it was only the capability to adapt your ideas to someone else's, the Coding Dojo would already be amazingly valuable to most teams. I would, therefore, suggest it as a consulting exercise to new and old teams. Still have to see the future effects it will have to Async's team but I believe communication between them can only improve.&lt;br /&gt;&lt;br /&gt;I'll wait and see but will surely apply it to future works. I suggest you try it at your work if you have the opportunity and if you need someone to help you, please contact me. If I cannot go myself, I will try to point someone else.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-6401634322004461064?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/6401634322004461064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=6401634322004461064' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/6401634322004461064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/6401634322004461064'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/09/in-company-dojos.html' title='In-company Dojos'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-7079614420078456536</id><published>2008-09-09T16:51:00.002-03:00</published><updated>2008-09-09T17:13:09.256-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coding dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Coding Rumors or Telephone Coding Game</title><content type='html'>I "invented" this game yesterday before Sao Paulo's Coding Dojo meeting started. We were going to celebrate one of the attendee's birthday after the meeting and I started this idea being a joke. I suggested we could go have the Dojo at the restaurant.&lt;br /&gt;Someone pointed out that we could not because there would be no way everyone could see what was going on. It then stroke me that this was a full exercise itself.&lt;br /&gt;&lt;br /&gt;The idea is to gather at least 8 people around a table (a round one preferably) with one laptop (the token). To start the game, the group must choose a language and environment they are all familiar with (this is very hard, might only work with certain groups of people). After that they have to choose a problem. Make it a very simple problem to start with. Something such as &lt;a href="http://www.rubyquiz.com/quiz22.html"&gt;Roman to Numerals&lt;/a&gt; or &lt;a href="http://acm.uva.es/p/v1/101.html"&gt;The Block's Problem&lt;/a&gt; or any other that everyone in the can quickly see a solution. Once everyone understood the problem, the game starts.&lt;br /&gt;Get a chronometer to define a round time (I suggest 5-7 minutes as we do at the Coding Dojo) and give the laptop to someone. At max 3 people will be able to look at the laptop's screen at the same time: the one coding (the pilot), the one that just coded (the retired) and the one that is about to code (the rookie).&lt;br /&gt;During a round, the pilot has to follow the TDD cycle (test, pass, refactor) explaining the rookie what he is trying to reach. He can ask for help from the retired to better understand the existing code but should not let him touch the keyboard. Once the round is over, the pilot hands the laptop to the rookie and becomes the retired. The rookie becomes pilot and the person next to him becomes rookie. The game should go on until the solution is ready or each participant received the token three times or when a pilot is not able to produce any effective change to the code in his round.&lt;br /&gt;&lt;br /&gt;I would suggest a local version control repository (git, mercurial or even svn) to be used at each pilot change so that the group can review the code evolution afterwards and evaluate on what were the key moves in the game that made it success or fail.&lt;br /&gt;&lt;br /&gt;I suspect it will be VERY hard to reach a solution on this game but I am pretty sure that playing the game can only be an very rich experience. If the group does manage to reach a solution, I would also say the resulting source code will be very simple to understand and tests will define very well how the methods (or functions) should work.&lt;br /&gt;&lt;br /&gt;As I said, I will try at PyCon and I will report the results here when I have them. If you try to play the and have suggestions for it, please post a comment. Have fun Telephone Coders :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-7079614420078456536?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/7079614420078456536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=7079614420078456536' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/7079614420078456536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/7079614420078456536'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/09/coding-rumors-or-telephone-coding-game.html' title='Coding Rumors or Telephone Coding Game'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-7674960520664648019</id><published>2008-09-09T15:49:00.003-03:00</published><updated>2008-09-09T18:28:35.720-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coding dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='trips'/><category scheme='http://www.blogger.com/atom/ns#' term='squeak'/><title type='text'>Upcomming events</title><content type='html'>Archimedes is still stalled since I have been gathering some interesting activities lately.&lt;br /&gt;I'll state chronologically:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I have been invited to go to São Carlos this Friday (September 12th 2008) to join &lt;a href="http://www.async.com.br/%7Ekiko"&gt;Kiko&lt;/a&gt; (Christian Reis) at Async for a Coding Dojo session in Python with members of his team. Kiko is currently employed by Canonical and is working on LaunchPad for a while. Although I met him at the beginning of the year, we met again at Agile 2008 where we had a better chance to chat which resulted in presenting him the Coding Dojo idea which he liked. Since &lt;a href="http://www.dtsato.com/blog/"&gt;Danilo&lt;/a&gt; is not here in Brazil to help him with it, I am the one that became responsible for that.&lt;/li&gt;&lt;li&gt;Monday, Tuesdays and Wednesday, I will be one of the four monitors of &lt;a href="http://www.mindviewinc.com/"&gt;Bruce Eckel&lt;/a&gt;'s workshop in São Paulo. Bruce will present his future book's ideas about patterns. &lt;a href="http://ramalho.org/"&gt;Luciano Ramalho&lt;/a&gt; invited me and São Paulo's Coding Dojo community for this event which will probably last the full three days and will focus on how to identify, use and understand patterns. Knowning Bruce's work from &lt;span style="font-style: italic;"&gt;Thinking in C/C++&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;Thinking in Java&lt;/span&gt;, it will be a very interesting experience. I will post about it when I get a chance.&lt;/li&gt;&lt;li&gt;From Thursday to Saturday, I will be in Rio de Janeiro since Kiko invited me to present a Coding Dojo with Async's folks at &lt;a href="http://pyconbrasil.com.br/"&gt;PyCon Brasil&lt;/a&gt;. I haven't booked my flight (or bus ticket) yet but I expect to stay there for the whole conference. We intend to present at least a couple Dojos at Async's booth. I will also try to set up a new kind of Dojo exercise with &lt;a href="http://www.isnomore.net/"&gt;R&lt;/a&gt; (Rodrigo Bernardo Pimentel). The idea is pretty aggressive but aims to pick on a very touchy point in every organization's project. I will explain the game on my next post but just to let you wander, I named it "Telefone sem fio" after the &lt;a href="http://en.wikipedia.org/wiki/Chinese_whispers"&gt;Chinese Whisper&lt;/a&gt; game's name in Portuguese thanks to Mariana's suggestion. The name will probably change once I've played it once but for now that should do.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;After that I am giving two courses with Mariana and Dairton Bassi over two months about Object Oriented modeling with UML and an introduction to eXtreme Programming. Both courses will be given to University's employees that have over 20 years of programming experience that are migrating to Java and a more dynamical environment.&lt;/li&gt;&lt;li&gt;October, the 3rd and 4th I will be at Brasilia to present a talk about Squeak and Seaside in the Free Software Festival (&lt;a href="http://www.festivalsoftwarelivre.org/inicio/"&gt;Festival de Software Livre-DF&lt;/a&gt;). I intend to present how to start a seaside application from scratch and deploy it. I am not sure I will be able to include tests for it but I surely would like to.&lt;/li&gt;&lt;li&gt;October 11th, I will attend to (and I am organizing) the &lt;span style="font-style: italic;"&gt;"Encontro Ágil"&lt;/span&gt; (Agile Meeting) that will take place at my college's building at the University of São Paulo. It will be a full day of talks and a few Birds of Feather and discussions. The small logo of participation:&lt;br /&gt;&lt;a href="http://www.encontroagil.com.br"&gt; &lt;img border="0" alt="Encontro Ágil 2008" title="Encontro Ágil 2008" src="http://www.encontroagil.com.br/images/badget1.png"/&gt; &lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;OOPSLA 2008 will be held in Nashville, Tenessee this year from October 19th to 23th. I will be there with Mariana. We leave São Paulo the 15th and come back the 25th. A day before my works at the municipal elections.&lt;/li&gt;&lt;/ul&gt;This is an overall of my activities for the next two months. I am loving all those things to do and travels and conferences to attend to. However, I am pretty sure I am way too overloaded for what I can really handle. Let's see how things go.&lt;br /&gt;That's all for now, I will write about my new coding game in my next post. See you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-7674960520664648019?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/7674960520664648019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=7674960520664648019' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/7674960520664648019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/7674960520664648019'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/09/upcomming-events.html' title='Upcomming events'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-3328586101651075566</id><published>2008-08-24T17:25:00.002-03:00</published><updated>2008-08-24T19:37:45.843-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='trips'/><title type='text'>Friday - Last day at Agile</title><content type='html'>Friday morning was a bit emptier. A few people were leaving or had already left Toronto. Breakfast was calmer and everyone was interested in the sessions that were elected to be rerun after lunch. About 40 sessions were going to be rerun that were chosen by the attendees by voting on one session per day.&lt;br /&gt;On the first slot in the morning, I attended a talk by Arnaud Bailly with Emmanuel Gaillot and Mariana. Arnaud presented us a small game about Haskell intended to teach young students how to solve problems in Haskell. The game is formed by tiles of lambdas, basic operations, color tiles to match variables, pi to describe the pattern matching and a few numbers. The first exercice we did was to write the factorial of a number. The recursive version came out pretty quickly and when we tried to expand it to get the solution, we noticed the huge amount of tiles needed. It was a great way to realize the amount of memory needed when stacking everything. We worked our way through the tail recursion version in which we could realize that the stack was never greater than 2. I found it a very nice way to show students the consequences of those details.&lt;br /&gt;&lt;br /&gt;After the coffee break, everyone went to the Grand Ballroom to the last Keynote of the conference. This time, Alan Cooper, creator of Visual Studio (later sold to Microsoft) and author of several Human-Computer Iteraction books, presented his point of view about Agile and the way software is developed. It was a quite controversial talk. Alan presented his view point regarding the software development process. According to his speach, there four main stages in software development. The first one, "The Big Idea", is completly out of scope to any software development method. It is a creative process that is accomplished by the business experts and developpers should not be involved.&lt;br /&gt;After that stage comes the Design stage followed by the Engineering stage and ending by the Construction stage. He states that Design and Engineering are stages based on iteration and increment, therefore, those are agile stages. And this is where Agile gets it right. However, construction is NOT an iterative stage. Purely incremental. Simplifying a lot, he says that all software should be built once, using agile methods, to be thrown away (since Brooks said, in The Mythical Man-Month, "Plan to throw one away, you will anyway"). After that first sketch, the software should be built from scratch without agile methods. His argument is that the first time, you will discover several new things while you walk ahead. Those things will impact on your software making it harder to understand and more complex. The second time, you already know those problems and can handle them previously working without surprises.&lt;br /&gt;What I don't understand in this way of thinking is why rebuilding the software the first time? The only reason I can find to do that is because you want to change things in it. But if you do, you might encounter more problems and end up having to throw your second attempt away too! And you can go on like that over and over and over. The other question is why not refactor your first version to make it less complex and hard to understand? Maybe it is more expensive to refactor the whole software than starting it from scratch. But if this is true, then you obviously will have new decisions to make when you restart and you may just as well end up with the same problem at the end.&lt;br /&gt;Anyway, the rest of the talk was about how interaction designer can improve the overall quality of the first software development. To this part, I have little to talk about. Alan's presentation can be found in &lt;a href="http://www.cooper.com/journal/agile2008/"&gt;his company's site&lt;/a&gt;. I totally agree that interaction designers are very usefull but I oppose to the idea that developers are not supposed to understand a little about their work and be able to perform a few of their tasks. I agree that in all field there should be experts that can help generalists. But I pretty much like the generalists that are able to do the whole thing decently even if it is not excelent. There is a &lt;a href="http://www.dtsato.com/blog/2008/02/11/generalist-or-specialist-why-not-both/"&gt;nice article&lt;/a&gt; Danilo wrote about the Generalist/Specialist paradox. I believe nobody can be a specialist in all fields becoming therefore a generalist specialist. But I can understand having lots of generalists that have one specific area of expertise. To have a great agile team, all you need is that your generalists have different expertises and everyone knows about it.&lt;br /&gt;&lt;br /&gt;Back to Agile. After the keynote, lunch was served in the corridors and I got ready to attend Kenji Hiratabe's double session. The first one was about the lessons he learned from the chief engineer at Toyota's development and the second one was a video about the migration of a traditional industrial chain to a "Yaigi" system. Those were a couple of amazing talks. I won't be able to summarize everything decently. I'll just say we have a LOT to learn from oriental cultures. Working in such environments where respect is a key is an experience I would like to have in my life.&lt;br /&gt;&lt;br /&gt;That was the end of Agile 2008's reports. It took me three weeks to post my summaries of the five days I spent in the conference but it was worth it. My best advice is to search on the web for more reports and maybe even slides from the event. Also, stay tunned for next year's Agile to be realized in Chicago. If you want to attend Agile but don't think you can afford it, try getting in as a volunteer. You don't need to be a student to apply for it and it saves you the inscription fee which is considerable. In the next days, I will be returning to my usual posting subjects. Archimedes is the next one and I will try to go back to short posts. Hope you liked it. bye!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-3328586101651075566?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/3328586101651075566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=3328586101651075566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/3328586101651075566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/3328586101651075566'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/08/friday-last-day-at-agile.html' title='Friday - Last day at Agile'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-1621827262239317198</id><published>2008-08-21T14:00:00.007-03:00</published><updated>2008-08-22T01:41:17.632-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='trips'/><title type='text'>Thurday at Agile - No lunch</title><content type='html'>Thursday morning started just like the other mornings: breakfast in the Grand Ballroom but with most people late. I guess Wednesday evening was quite exhaustive to many people.&lt;br /&gt;I went straight to the Learning &amp;amp; Education stage where I could enjoy an amazing double session (went all the way through morning) of Game Design. This was NOT software game design. It was "hardware" game development. The idea was how to create games that could be used to teach concepts to people. Hubert Smits from Railly introduced shortly the work of Sivasailam Thiagarajan (aka Thiagi at &lt;a href="http://www.thiagi.com/"&gt;www.thiagi.com&lt;/a&gt;).&lt;br /&gt;After a short introduction, Hubert explained that we were going to build a game to teach Sprint (or Iteration, depending on your flavor of agile) planning.&lt;br /&gt;&lt;br /&gt;We started by playing a game ourselves. Each os uf wrote down 4 cards with strong opinions he had about iteration planning. Hubert collected all of those and shuffled them redistributing 3 cards to each person. He asked us to sort the cards according to the importance we attributed to the sentence on the card. Meanwhile, he was laying down the rest of the cards on an empty table. Once we were done, he asked us to come to the table, now full of cards, and exchange the cards one by one on our hands with the ones on the table if we considered them more important. When he realised we were all happy with the cards we had, he asked us to trade cards among ourselves following the same idea to increase the value of the cards on our hands (according to our personal opinions). Finally, he ordered us to join with two or three other people and form a group. The group would have all the cards from its members and was to chose three cards that they would hold as theirs. The wrapping up was to have each group present their cards explaning why those cards were important to them.&lt;br /&gt;I found this activity very interesting to align people's expectations about something. I could understand that it was a very good way to have people accepting other people's ideas. Hubert suggested it could also help building a team since the involved people would go from an individual perspective to a group perspective. To me, it looked like a very good ice breaker to get people thinking together.&lt;br /&gt;&lt;br /&gt;The next part was the most important one and the goal of the session: to develop our very own game about iteration planning. It was a pretty simple board game. Each player had a character that was in a path leaving from start and aiming to reach the end. The initial rules that Hubert gave us were simple. All players receive about 10 cards at start and those are given back after shuffled when they are over. A player can only go forward if he presents a card that fits the stage in which he is. A player can challenge the presented card if he believes it does not fit that stage. Upon a challenge, all the players in the game should discuss the matter and reach a concensus. If they decide the challenger was right, the challenged player cannot go forward. On the other hand, if the challenged player was right, the challenger goes back one move and the challenged goes forward regularly. The first player to reach the end wins.&lt;br /&gt;Based on those simple rules, we were supposed to define the stages of our game and then write the cards that the players would hold. That was a very interesting activity. It made us think a lot about what were the steps we considered essential in the planning and generated lots of discussion. We then had to gather all the cards we wrote individually and have them classified into the stages we defined. After that, we could change a few rules that we believed would improve the game. Finally, we played our own game to make a few changes with the game experience. We discovered the whole stage stuff was very boring since it took a long time to change stages. The idea that solved it was to have the game being iterative itself. Meaning each move would bring you to another stage and once you were done with the iteration, you would start another until you reach the end.&lt;br /&gt;I loved that experience. It was a great way to have people think about their working system and how to teach it to others. Keeping a coach around as a game driver can be very useful to correct mistakes that the team can make. Finally, playing the game sounded a bit exhaustive but creating it is very revealing. The best part is that such game can be created to teach almost any process or complex non deterministic flow.&lt;br /&gt;&lt;br /&gt;During the game session, Danilo, Mariana, Arnaud, Dan and Liz were working on the Block Problem with a Haskell solution. The most innovative idea was to set up a mercurial server (version control) and commit each step so that people could work on their environment and keyboard (Dan had a dvorak keyboard while Arnaud has an azerty one). Once I managed to take them off the, Mariana and me went have lunch with Danilo, Kiko and Bonnie Aumann (which we met at Kiko's presentation on Tuesday) at the CN Tower (CN stands for Canada National). It was a really good lunch with a great view and the chat was very pleasant. Kiko insisting that I was the french one so I should choose the wine and saying that being old (around 35) was way better than being young (around 25).&lt;br /&gt;&lt;br /&gt;We came back from lunch about 30 minutes late and I went to my work on the Mezzanine floor. I used the half first slot I had left to relax a bit and review the things I want to ask for reruns. The second slot of sessions in the afternoon was filled with a Panel about open source and agile. The session was organized by Dennis Byrne and had Dirk Riehle, Mary Poppendieck, Naresh Jain and Christian Reis (Kiko). The discussion turned around what are the advantages of open source development that agility disregards or lost. Mary was very sharp as always which made the audience defended itself and attack a few points. I would not be capable of summarizing all we discussed there. The two main points that open source have were setting the user's expectation low and having volunteer work (and therefore committed workers).&lt;br /&gt;&lt;br /&gt;After that, we all went to the Banquet where we could enjoy Uncle Bob's talk about Clean Code. Many blogs have already reported what happend but I would like to focus a bit more about his (re-phrased) point: "Craftmanship over Execution". I understand this as a consequence of all the refactoring value we have today. Nobody can sistematically say that refactoring is done. It can always improve. I have to admit I face frequently the question about when should I refactor some piece of code. Should I do it after I've written it and I master it? If I do so, I might be waisting time on something that will never be used (this code won't be extended). On the other hand, if I wait to refactor only when I need to, my code can look really crappy and it might take me some time until I remember how the code was supposed to work. Most of the time, I find myself refactoring things until I just have the feeling that it is enough. I don't know what makes me feel good enough with the code but, at some point, I accept it can be left the way it is even if more refactoring can be done. This sounds obviously as a support to the craftmanship theory since this "intuition" can only come from learning and experience. But shouldn't such motivations be triggered by some regular facts that could be documented? How do we create our craftmanship book? I have no idea but would surely like some tips.&lt;br /&gt;&lt;br /&gt;Finally to close the night, Kenji Hiratabe presented himself with 10 other Japanese people by singing the well-know "Dear ecuspi (XP)". For those of you who lost that moment, check it &lt;a href="http://www.youtube.com/watch?v=zpw8h4OGNxg"&gt;here&lt;/a&gt;.&lt;br /&gt;Believe me, around 800 people stood up and sang and danced hearing that. It was really fun!&lt;br /&gt;&lt;br /&gt;Well, I am almost over for my reports. I hope I will post Friday by the start of next week. Then I should get back to my regular activities (Archimedes and Squeakasts). Bye bye everyone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-1621827262239317198?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/1621827262239317198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=1621827262239317198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1621827262239317198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1621827262239317198'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/08/thurday-at-agile-no-lunch.html' title='Thurday at Agile - No lunch'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-1513831638889247347</id><published>2008-08-15T11:24:00.007-03:00</published><updated>2008-08-17T01:57:13.632-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='coding dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='trips'/><title type='text'>Wednesday - a free night at Agile 2008</title><content type='html'>Wednesday was the day without receptions. The day started as usual: breakfast at the conference. Donnuts, fruits, cakes but no &lt;span style="font-style: italic;"&gt;croissant&lt;/span&gt; or &lt;span style="font-style: italic;"&gt;pain au chocolat&lt;/span&gt; this time. Sessions started at 8:30 as usual and I was doing my volunteer work on the room where I was going to present the Coding Dojo with &lt;a href="http://www.dtsato.com/blog"&gt;Danilo&lt;/a&gt; and Mari. We were a bit late for the beginning of the stage because Microsoft's reception was a bit too open on the drinks (this is obviously NOT a complaint).&lt;br /&gt;It was on the Learning and Education stage. It started with a nice presentation from Laurie Williams about the work she has been doing with other teachers/researchers regarding pair programming. They made up a nice funny video to stimulate teachers to adopt the pair programming practice in their laboratories explaining the advantages it presents as well as evaluation modes that could be used to assign grades to each student. The video was a bit exagerated in the way it presented the facts which gave it a humorous profile. Although I believe there is more work to be done on that presentation, it is a very nice start. As far as I know, the video is not yet available but should be once they consider it ready. If you want to help, please email her at williams &lt;span style="font-weight: bold;"&gt;- at -&lt;/span&gt; csc.ncsu.edu.&lt;br /&gt;After that, Garry Berteig talked about the Learning Circle. He stated that there are four entry points into a learning circle. Action, Reflection, Learning and Planning are stages through which we pass through when learning something new. He established those four points as quarters of a circle in which the center is guidance. Guidance is what helps keeping someone in that circle efficiently. He then elaborated how to support each activity and how to lead one to another. He got short on time by the end just when he presented how this can and should affect the way agility is taught.&lt;br /&gt;On the third slot of this 1h30 was the presentation of our Coding Dojo in Sao Paulo experience report. Danilo posted some infos about our presentation &lt;a href="http://www.dtsato.com/blog/2008/08/12/coding-dojo-agile-2008/"&gt;here&lt;/a&gt;. I would like to highlight the map we built on google maps to show where are the dojos around the world.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_QQ56bAYbO4Y/SKevGa_dIoI/AAAAAAAAAAU/eKi4MMs9jlU/s1600-h/CodingDojoMaps.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_QQ56bAYbO4Y/SKevGa_dIoI/AAAAAAAAAAU/eKi4MMs9jlU/s400/CodingDojoMaps.png" alt="" id="BLOGGER_PHOTO_ID_5235345616701039234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is a reproduction of the image but I would really appreciate it if, in a few years from now, this map counted more dojos in north and central America, in Asia and Australia and in the west coast of south America. Europe has a few dojos but I would also expect to find more options since there are so many countries close to each other and ideas should pass around more quickly.&lt;br /&gt;&lt;br /&gt;During the second half of the morning, I stayed in the room to fulfill my volunteer work but could not stay focused since I had to take care of another 3 rooms so I used my time to post the Tuesday report. Danilo and Mari went to the OpenJam where they met with Emmanuel Gaillot, Arnaud Bailly and some other people to have a Coding Dojo session. They presented the &lt;a href="http://online-judge.uva.es/p/v1/101.html"&gt;Block Problem&lt;/a&gt; and started to solve it in Ruby. I showed up a couple times but could not help them. They could not finish the problem but liked it so much that Arnaud and Emmanuel worked on it later on (I'll explain more on the post about Thursday). We then had lunch at the conference and attended the Programming with the Stars event. It was quite cool again (I attended on Tuesdays too) with some pretty good demonstration since they now had more time to code (6 minutes).&lt;br /&gt;&lt;br /&gt;After the lunch, I went to a session with Esther Derby where she was going to talk about Crossing Cultures. It was going to happen in the French stage (although it was going to be in English) and she had planned a nice game to show how mixing cultures might be hard to endure. Unfortunately, she needed at least 8 people to run the game well enough and we were 7. So she had to cancel it and I was orphan for the rest of the afternoon. Later on that night, we went have dinner with Danilo and the Toughtworks' fellows which was a very pleasant night.&lt;br /&gt;&lt;br /&gt;I'll continue on later with more about Agile and after that series, I'll try to get back to my regular activities. Hope you enjoyed it and bye bye.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-1513831638889247347?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/1513831638889247347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=1513831638889247347' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1513831638889247347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1513831638889247347'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/08/wednesday-free-night-at-agile-2008.html' title='Wednesday - a free night at Agile 2008'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QQ56bAYbO4Y/SKevGa_dIoI/AAAAAAAAAAU/eKi4MMs9jlU/s72-c/CodingDojoMaps.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-5156875333269061813</id><published>2008-08-06T12:13:00.006-03:00</published><updated>2008-08-15T15:46:52.302-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='trips'/><title type='text'>Agile sessions on Tuesday</title><content type='html'>The agile conference is insane!&lt;br /&gt;There are over 30 concurrent presentations going on plus a couple talk/chill out areas and several booths for the companies involved in agile development. Tuesday was the real opening of the conference.&lt;br /&gt;There was breakfast from 7am to 8:30am when the opening Keynote took place. The last post was written during that talk. After that, I ran out to a talk from Dirk Riehle about open source business opportunities. It was a bit empty and Dirk covered mainly only the advantages for companies to use or develop open source. I felt there was more to said about the relationship between agile and open source and how it can help improving your approaches to clients and give you more possible solutions to use.&lt;br /&gt;Lunch followed at the conference where food was pretty like the one from the ice breaker. Nice but could have been better to have some variety. After lunch, I managed to swap work with another volunteer to spend the whole afternoon attending a session with Mary Poppendieck and Christian Reis (Kiko). The first part was a presentation about the way Kiko sees open source development to work and how he works at Cannonical to develop open source. I got a few insights and learned a couple things really interesting. Mostly the very rigid hierarchy that most open source project use to filter contributions in order to maintain a good code base. The second part was just amazing. Mary drove a discussion that should point us to things agilists should learn from open source developers and vice versa. I won't be able to give you a good summary but Mary promissed she would post the results in about 10 days. I've offered myself to help her but I don't really know how I will do it.&lt;br /&gt;Finally, Microsoft hosted a reception from 7pm to 10pm with loads of drinks to everyone and some very funny rock band contest which volunteers proudly won. :) I had a great time chatting with Danilo, Mariana, Kiko, Hernan (an Argentinian volunteer I met here), Elizabeth Keogh, Dan North, Tom Poppendieck as well as many more people. We left around 10:30 pm after about 4 or 5 red wine glasses and having evaluated the Archimedes code with Danilo and Szczepan&lt;em&gt;&lt;/em&gt;&lt;span&gt; Faber (one of Mockito's maintainer) to find out why I was having problems mocking a couple stuff.&lt;br /&gt;So far my evaluation for Agile is great. It is even more extreme than OOPSLA since you have more things going on at the same time and there are more events trying to put everyone in contact to each other. It is very intense (and expensive) but it is really worth it.&lt;br /&gt;&lt;br /&gt;Today's summary should come up tomorrow so stay on.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-5156875333269061813?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/5156875333269061813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=5156875333269061813' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5156875333269061813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5156875333269061813'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/08/agile-sessions-on-tuesday.html' title='Agile sessions on Tuesday'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-2303762661971468925</id><published>2008-08-05T09:30:00.004-03:00</published><updated>2008-08-05T10:43:57.321-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='coding dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='trips'/><category scheme='http://www.blogger.com/atom/ns#' term='holidays'/><title type='text'>Monday at Agile 2008 and past news</title><content type='html'>Hello everyone,&lt;br /&gt;The end of the holidays was very good. I found my supervisor (absolutely NO problem to do it) and we managed to organize a Coding Dojo in Grenoble with some researchers and some industry workers. We worked with ruby (http://www.ruby-lang.org) and rspec (http://rspec.info/) on the block problem (http://acm.uva.es/p/v1/101.html). It was very interesting and I felt they liked the idea. Even promissed me that they would start their own dojo.&lt;br /&gt;The last week was in Paris where I joined the Paris Coding Dojo (http://xp-france.net/cgi-bin/wiki.pl?DojoDeveloppement - in French) where I met Emmanuel Gaillot (http://emmanuelgaillot.blogspot.com/) and a few other regular Paris Dojo attendees. It was an amazing experience and will probably have future great consequences regarding collaboration between the group in Sao Paulo and the one in Paris.&lt;br /&gt;Finally, I should leave France on Saturday morning. Obvisouly, as always near holidays, my flight was overbooked. So I was offered some money and a full paied day to stay one more day in Paris. I accepted it so it would pay off my accomodation expenses in Toronto. Therefore, I arrived in Toronto on Sunday afternoon. Found out that the student accomodations at the University of Toronto is pretty amazing! The room is quite big and nice in a very nice campus and pretty well geared and very well located.&lt;br /&gt;I then went the Agile 2008 volunteers meeting in the Sheraton Hotel Center. It was a pretty good overview of the size of the conference: 1600 attendees. 400 speakers and around 100 staff (70 volunteers, 20 stage directors and about 10 major organizers). Sunday was really smooth since the conference only sort of started in Monday. Monday only had registration and bag deliveries as well as the research talks. The lines were little, everything was flowing pretty smoothly and people were talking quite a lot. Loads of famous agilists were walking around, meeting each other and talking to other people. It ended up with the Ice breaker evening which was a huge meeting with all attendees with 4 food spots that were representing Toronto's main social origins. There were also several weird pass times you could go into: massage, hand reading, handwrite analysis, henna tatoos, taro players and other stuff.&lt;br /&gt;It was on from 7 pm to 10 pm when those services as well as food and drinking stopped sending people out ot bars or the Musik Maztik which is a special stage in the conference for attendees to play music instruments. Since the timezone difference is about 6 hours between Paris and Toronto, 10 pm was 4 am for me so I went to bed.&lt;br /&gt;Today (Tuesday) is the official sessions start of the conference. Things are going very well so far, the breakfast was amazing and everyone is watching a very good talk from James Surowiecki, author of The Wisdom of Crowds (http://www.randomhouse.com/features/wisdomofcrowds/). He is talking about how wisdom can come out of the crowds and why in some cases, it just gets people dumbers. After this, the first sessions will come up and people should spread over. I will try to keep this blog updated about the conference but I am not sure I will manage it.&lt;br /&gt;&lt;br /&gt;That's all for now people. Bye bye!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-2303762661971468925?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/2303762661971468925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=2303762661971468925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/2303762661971468925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/2303762661971468925'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/08/monday-at-agile-2008-and-past-news.html' title='Monday at Agile 2008 and past news'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-1354926732455715145</id><published>2008-07-17T10:52:00.003-03:00</published><updated>2008-07-17T11:33:42.870-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='trips'/><category scheme='http://www.blogger.com/atom/ns#' term='holidays'/><category scheme='http://www.blogger.com/atom/ns#' term='blah'/><title type='text'>Holidays!</title><content type='html'>Well,&lt;br /&gt;I have been pretty away lately but it is just that I am enjoying my holidays here in Europe.&lt;br /&gt;From the 1st of July to the 4th, I spend a few days in Paris enjoying the food and the summer. Then I spend a nice weekend in London where I visited the Thoughtworks office and met a few very nice people thanks to &lt;a href="http://www.dtsato.com/blog/"&gt;Danilo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I could finally offer Mariana her Asus eee Pc 900 which is a fine little piece of computer. The pre packaged Xandros distribution is quite weird and she is anxious to install Ubuntu on it but I still have not managed to create a bootable USB.&lt;br /&gt;&lt;br /&gt;We visited a few places and museums as well as a pub (could not miss that, right?) and went to a magic show. Covent Garden and the London Transport Museum were some of the highlights. The London's eye tour was quite deceiving on the other hand.&lt;br /&gt;&lt;br /&gt;The 7th we got back to Paris and, tired as we were, lost our first opportunity to join the Paris Coding Dojo which made me quite sad. On the rest I had a nice week walking around Paris without any specific destination. Highlights to the top of the Eiffel Tower. It is cheaper and MUCH more interesting than London's eye. No time restriction, more infos and space. A nicer view of the whole city as well as a first and second floor trip that can last long. I had the pleasure to have lunch at the second floor (home made sandwiches and water) and it was very pleasant.&lt;br /&gt;&lt;br /&gt;The 14th we finally went to the parc in front of the Eiffel Tower to wait for the fireworks. It was a very nice evening. Laying down on the grass, having a nice picnic with wine and then listening to classic music while watching an amazing firework show. Only sad part was that people were not polite enough to stay sit so everyone could enjoy it. We had to stand up and the shorter people suffered a bit. Sad to see that civilization is not what it used to be.&lt;br /&gt;&lt;br /&gt;I am currently to the south of France, near Bordeaux, at my grand parents' place. It is a very nice and calm spot although tourists are becoming more and more invasive. Tomorrow I leave to the mountains at a friend's place were I should have 3 days of calm and then we head for Nice to see &lt;a href="http://fly.ath.cx/"&gt;Julian&lt;/a&gt; and then Grenoble to see &lt;a href="http://www.ime.usp.br/%7Egold/"&gt;Alfredo&lt;/a&gt;, my advisor (let's hope I don't run into the same troubles as the &lt;a href="http://www.phdcomics.com/comics.php"&gt;PHD comics&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-1354926732455715145?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/1354926732455715145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=1354926732455715145' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1354926732455715145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1354926732455715145'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/07/holidays.html' title='Holidays!'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-91593532952129824</id><published>2008-06-20T16:49:00.004-03:00</published><updated>2008-06-20T16:59:50.075-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><title type='text'>Archimedes saving and opening!</title><content type='html'>It took a very long time and several complains but it is finally back.&lt;br /&gt;Archimedes' new version (0.56.0) reintroduces open and save feature. We maintained the xml file format with a few minor modifications from the last version. It is not backwards compatible but if you need such support, I can easily write a small translator. Just post a feature request at sourceforge or a comment here.&lt;br /&gt;&lt;br /&gt;There are still a few things I would like to improve on that system (such as disabling import/export as well as open/save when there are no importer/exporter or nativeFormat extensions loaded). I've finally (just now) also improved my generate installer script to generate a source zip file. This way anyone can get the source code related to that version whenever they wish. I remind everyone also that our subversion repository is open (as always) at: &lt;a href="https://incubadora.fapesp.br/svn/archimedes/"&gt;https://incubadora.fapesp.br/svn/archimedes/&lt;/a&gt;. The rcp version (which is the one being released lately) can be found at &lt;a href="https://incubadora.fapesp.br/svn/archimedes/mainarchimedes/rcparchimedes/"&gt;https://incubadora.fapesp.br/svn/archimedes/mainarchimedes/rcparchimedes/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I also decided that unstable releases will only be launched at sourceforge while stable ones will be announced at sourceforge, gnomefiles, wikipedia, codeplex and the brazilian portals (incubadora and codigolivre). I also decided most files will be hosted at sourceforge and the other portals will only refer to the online installer or the full installer since those are more generic.&lt;br /&gt;&lt;br /&gt;Last, but not least, the next plan is to get the team working on trim and extend to add those backs by July 10th. I will work on improving the open/save system and try to readd export to svg, pdf, jpg, bmp and png. Since I believe most of the code can be reused from older versions, I might be quite quick to implement it.&lt;br /&gt;&lt;br /&gt;That's it for now people. Please send us your feedback!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-91593532952129824?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/91593532952129824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=91593532952129824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/91593532952129824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/91593532952129824'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/06/archimedes-saving-and-opening.html' title='Archimedes saving and opening!'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-5426136359910482202</id><published>2008-06-09T13:34:00.003-03:00</published><updated>2008-06-09T13:39:44.056-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><title type='text'>Releasing unstable versions again</title><content type='html'>I am forcing myself to release unstable versions again to try to automatize the process a bit more.&lt;br /&gt;So far I have managed to improve the sourceforge publication decently. There are yet another 3 sites that are much more painful to update that contain archimedes versions.&lt;br /&gt;&lt;br /&gt;I think I will adopt the following rule. Unstable versions go to Sourceforge Only. Stable versions go to the other sites also. This way, maybe I can keep up the habit to release unstable very often (once a week).&lt;br /&gt;&lt;br /&gt;This unstable (0.55.0) contain the export feature working nicely, the trim command back but not working and the infinite line intersector. The team is now working on the Trim system and the import one. So next version may be able to load files and trim correctly.&lt;br /&gt;&lt;br /&gt;Files can be downloaded at &lt;a href="http://www.sf.net/projects/arquimedes"&gt;Archimedes' sourceforge site&lt;/a&gt;. Enjoy it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-5426136359910482202?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/5426136359910482202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=5426136359910482202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5426136359910482202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5426136359910482202'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/06/releasing-unstable-versions-again.html' title='Releasing unstable versions again'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-8129286445488110272</id><published>2008-06-04T00:49:00.004-03:00</published><updated>2008-06-04T15:00:13.932-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='smalltalk'/><category scheme='http://www.blogger.com/atom/ns#' term='screencasts'/><title type='text'>Screencast number 7</title><content type='html'>Well,&lt;br /&gt;I finally recorded the screencast number 7. It shows how to create Smalltalk classes and tests using SUnit. It also demonstrates the use of class packages and categories  as well as the TestRunner tool. It follows a TDD rythm and presents 2 methods from SUnit. Couldn't make it smaller so it is a bit over the last screencasts' length but I think it is still reasonable (around 8 minutes).&lt;br /&gt;&lt;br /&gt;As usual, I'll stop here but you can enjoy them:&lt;br /&gt;Download the English version &lt;a href="http://eclipse.ime.usp.br/%7Enight/06-TestClasses-en.mov"&gt;here&lt;/a&gt; or see it on Google Video.&lt;br /&gt;Download the Portuguese version &lt;a href="http://eclipse.ime.usp.br/%7Enight/06-TestClasses.mov"&gt;here&lt;/a&gt; or see it on Google Video.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-8129286445488110272?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/8129286445488110272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=8129286445488110272' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8129286445488110272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8129286445488110272'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/06/screencast-number-7.html' title='Screencast number 7'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-4764119830037779393</id><published>2008-06-02T13:03:00.003-03:00</published><updated>2008-06-02T13:10:37.121-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><title type='text'>Archimedes 0.54</title><content type='html'>After one year, I've finally released Archimedes 0.54.&lt;br /&gt;It counts with the whole intersection features back and, most notably, the intersection grip and the selection by intersection. The next step is to have trim and extend back as well as the save and open features. The current team will be working on save and open and set a deadline to the 16th so, if I don't get too late, I should release it that week end.&lt;br /&gt;By July, they will have another iteration ready that should bring trim, extend and fillet back. If I am not mistaken, this is pretty much all features that were available in the old version. So we are good. Just need to improve upon it later.&lt;br /&gt;&lt;br /&gt;I am also late with the podcasts and I don't know when I will manage to recover on that.&lt;br /&gt;&lt;br /&gt;See you all later. Enjoy the release!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-4764119830037779393?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/4764119830037779393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=4764119830037779393' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4764119830037779393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4764119830037779393'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/06/archimedes-054.html' title='Archimedes 0.54'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-5164986193783982326</id><published>2008-05-18T19:58:00.002-03:00</published><updated>2008-05-18T20:54:59.029-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='coding dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='screencasts'/><title type='text'>Article link</title><content type='html'>Well,&lt;br /&gt;As usual, I am late with my duties.&lt;br /&gt;&lt;br /&gt;The Dojo São Paulo now has &lt;a href="http://www.dojosp.epistemol.net/"&gt;a blog&lt;/a&gt; where we post the summary of each meeting. We also have a list where Mariana posted the link to &lt;a href="http://groups.google.com/group/dojo_sp/web/CodingDojoSP-2008.pdf"&gt;our article&lt;/a&gt; about our experience that will be published at Agile 2008. And finally, we created a Dojo São Paulo git repository at &lt;a href="http://www.github.com"&gt;Github&lt;/a&gt;. It is supposed to host the projects started at the Dojo. It currently hosts only the &lt;a href="http://github.com/dojosp/participant-s-projects/tree/master/dojo_unit"&gt;Dojo Unit&lt;/a&gt; which is the C Unit testing library we started working on. I have been working on it quite a few to make it a bit more effective. It is, so far, strongly based on conventions and limited to very small projects. If it grows a bit stronger I will post again about it.&lt;br /&gt;&lt;br /&gt;I am not at home now but as soon as I get back, I will update my whole archimedes tree and release version 0.54. It marks the return of intersection features such as intersection grip and selection by intersection. Tomorrow the team will define what will be the next goal and I will post it as it gets defined.&lt;br /&gt;&lt;br /&gt;I have defined the next screencast's script and I hope to record it tomorrow and post it then. I would like to say I am very disapointed with Google Videos since they are failing to process the screencasts I try to upload. I will try something else later but I lack enthusiam.&lt;br /&gt;&lt;br /&gt;That's it for now. See you later folks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-5164986193783982326?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/5164986193783982326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=5164986193783982326' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5164986193783982326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5164986193783982326'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/05/article-link.html' title='Article link'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-5975480455277473461</id><published>2008-05-12T18:31:00.005-03:00</published><updated>2008-05-18T20:07:46.303-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='smalltalk'/><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='screencasts'/><category scheme='http://www.blogger.com/atom/ns#' term='squeak'/><title type='text'>After a while, another screencast</title><content type='html'>Hello,&lt;br /&gt;I've been busy since FISL as always. A couple projects starting over which I will only comment once they go a bit further than now.&lt;br /&gt;&lt;br /&gt;Now for the good news, I had a paper about the Coding Dojo São Paulo accepted at Agile 2008 with &lt;a href="http://www.dtsato.com/blog"&gt;Danilo Sato&lt;/a&gt; and Mariana Bravo. As soon as we finish the last revisions, I will post it here. For those of you who do not know what a Coding Dojo is, check the paper by the end of the week, for the rest, know that we host a coding dojo weekly (soon to be twice a week) in São Paulo and we would be glad if you could join us every wednesday from 8pm to 10:30pm.&lt;br /&gt;&lt;br /&gt;Archimedes is walking slowly. I believe we will have most intersection features working for this release but not the save/open feature yet. Selection by intersection an trim will not be ready either. I should release it by the end of the week and I will post about it.&lt;br /&gt;&lt;br /&gt;I have finally recorded the 6th screencast about Smalltalk, Squeak and Seaside. It shows the System Browser tool along with the Message names and the Method finder. It is not really very important but I had to talk about it before I can start classes (which is next screencast's goal).&lt;br /&gt;That's it for now. Enjoy the recording:&lt;br /&gt;&lt;br /&gt;Download the English version &lt;a href="http://eclipse.ime.usp.br/%7Enight/05-SystemBrowser-en.mov"&gt;here&lt;/a&gt; or see it on &lt;a href="http://video.google.com/videoplay?docid=6439456515329311873&amp;amp;hl=en"&gt;Google Video&lt;/a&gt;.&lt;br /&gt;Download the Portuguese version &lt;a href="http://eclipse.ime.usp.br/%7Enight/05-SystemBrowser.mov"&gt;here&lt;/a&gt; or see it on &lt;a href="http://video.google.com/videoplay?docid=5876706308409776533&amp;amp;hl=en"&gt;Google Video&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-5975480455277473461?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/5975480455277473461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=5975480455277473461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5975480455277473461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5975480455277473461'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/05/after-while-another-screencast.html' title='After a while, another screencast'/><author><name>Hugo Corbucci</name><uri>http://www.blogger.com/profile/08306316717477317361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_QQ56bAYbO4Y/SMbEoSOB8LI/AAAAAAAAAAg/nAdzCCosflw/S220/Hugo%2BYoda.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-4540718720227633683</id><published>2008-04-19T14:15:00.007-03:00</published><updated>2008-04-22T00:15:24.631-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='smalltalk'/><category scheme='http://www.blogger.com/atom/ns#' term='fisl'/><title type='text'>Last and best day of FISL</title><content type='html'>The third and last day of FISL was, for me, the best day of all. Not only could I enjoy my previous night but I could sleep and come to the conference without problems. The day started at 9 am as usual, but the first interesting talk was Randal L. Schwartz about Smalltalk and Seaside. Let me repeat: Randal Schwartz about &lt;span style="font-weight: bold;"&gt;Smalltalk&lt;/span&gt;. Not Perl, Smalltalk! He still loves Perl and is still very important in the Perl world but he said Smalltalk is being an amazing experience.&lt;br /&gt;Sadly, he ran a bit out of time during the talk so the audience could only see very little things about Seaside but the lonely fact of having him spreading Seaside is great.&lt;br /&gt;After the talk, I talked to him about the screencasts and the squeakcasts website idea and guess what? He already knew about the screencasts, saw them and liked it. That scared the hell out of me! :) I will have to think much more to make better screencasts next time.&lt;br /&gt;Already had a small critic about my block explanation that I hope to handle in future screencasts.&lt;br /&gt;Anyway, it seems we might work together to get Squeakcasts under the squeak.org domain. I'll do my best to have the site ready as fast as I can and get more screencasts going.&lt;br /&gt;&lt;br /&gt;Next episode was a talk about Scrum and eXtreme Programming by Guilherme Chapiewski. His justification to present this in a Free Software conference was that people need to work in some way, to work and those methodologies get as close as programmers as we can. His talk was pretty basic showing the default scrum and xp definition with a few examples of his experience. I was amazed that he got the talk accepted because people from Agilcoop tried in the last conference and revisors said that it was an already discussed matter. I didn't like a couple things he said although the presentation was good for a general audience. The part when  he spoke about eXtreme Programming practices like if it was a sin to use them upset me a little. He also said that XP is scary for manager and Scrum is better because you can present it as a simple method and working in a team, etc... The argument sounded amazingly biased since you can present XP in the same way. I don't think managers are so stupid that a name would scare them more than another but anyway. The room was overloaded, people were sitting in the floor and I suppose it will help convert a few more programmers to agile methods so that is good.&lt;br /&gt;&lt;br /&gt;And this was the end for me. Mariana got sick and I left the event earlier to get her into a bed and ensure she didn't get worse. In a short summary, I liked FISL 9 and it was very good but mostly because of the people I can meet there and not so much because of the talks. I hope next year they will have the Smalltalk track running and I can present something nice there. I also expect them to go to a bigger place (maybe FIERGS, which I complained about last year but that can fit the 7500 attendees) and have a more stable wireless connection.&lt;br /&gt;&lt;br /&gt;That's it about FISL. See you soon with the next screencast.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-4540718720227633683?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/4540718720227633683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=4540718720227633683' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4540718720227633683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4540718720227633683'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/04/last-and-best-day-of-fisl.html' title='Last and best day of FISL'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-4649321852795210933</id><published>2008-04-18T19:38:00.005-03:00</published><updated>2008-05-01T13:04:34.448-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fisl'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>FISL 9: First and second day</title><content type='html'>Hello,&lt;br /&gt;This is my first time to breath since we left São Paulo on Wednesday by 16:00h. Since then, our bus was stopped by the Police, we had to drop a girl in a hotel because she didn't had any papers and we were around 6 hours late.&lt;br /&gt;Since then, I've found a couple of friends, met some people and suffered from an overloaded wi-fi.  First day was only to meet people, find friends, chat a bit and no time for talk. In the evening, Google organized a speacher's dinner and, being a presenter, I could enjoy an overloaded restaurant (i.e. they ran out of food and the waiters couldn't reach me) with everything (including drinks) payed. Too bad I didn't know about it since the beginning and couldn't enjoy more of it.&lt;br /&gt;&lt;br /&gt;The second day is about to end and the news were:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I gave my talk with Mariana and Fabricio about the Coding Dojo which was partially successful. It was completly full for the first hour. We started loosing people when the actual coding started. It seems people wanted to learn more about the philosophy behind the dojo and not to see one working. Those who stayed said they liked it thought. Let's hope more Dojos start around Brazil.&lt;/li&gt;&lt;li&gt;I went to a talk about the economics around floss by Rishab Ghosh. Interesting but I prefered the one he gave at IME/USP about copyrights and patents. The idea that we always feel we are contributing less than we receive is very reasonable once well explained.&lt;/li&gt;&lt;li&gt;After that, Fabricio gave a talk about Rails teaching people to start without using scaffold. It looks like people loved it because there was no place in the room 3 minutes after it started and people stayed until the end.&lt;/li&gt;&lt;li&gt;The next talk was about the CCSL (Free Software Competence Center) and partially my masters so I was involved in it. It was much emptier and I only had to talk about my own research so we are good.&lt;/li&gt;&lt;li&gt;Finally, about 1 hour ago, when that talk ended, the whole bunch of people from college were buzzing the Google stand to earn t-shirts and mugs by solving 3x3x3 rubik's cube. Since a lot of people know the algorithm already, we got almost banned from it and never got any price for solving the 4x4x4 cube (Yoshi did it). They (Yoshi and Mari) are now trying a cube that is not separated into smaller cubes but in weird forms.&lt;/li&gt;&lt;/ul&gt;I now just lost my last talk by writing this post but I guess it wasn't that important anyway. I'll write another post in the bus back so I should post it back in São Paulo. Have fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-4649321852795210933?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/4649321852795210933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=4649321852795210933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4649321852795210933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4649321852795210933'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/04/fisl-9-first-and-second-day.html' title='FISL 9: First and second day'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-8535679833020603292</id><published>2008-04-15T20:28:00.003-03:00</published><updated>2008-04-15T20:47:49.449-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><title type='text'>Archimedes 0.54 defined</title><content type='html'>Ok, this week I worked with the Archimedes' undergraduated and graduated students team to define what will be their goal for the 15th may 2008. It will be three weeks of work for them, which is the equivalent of 21h per pair (3 pairs total). And their goal for it is to get most intersections back working. This means that the version released the 16th or 17th should have the features 0.52 has plus the whole snap intersection system running.&lt;br /&gt;If I manage to get time, I hope to release an unstable (really unstable) version 0.53.0 during FISL and keep it being updated weekly. My work for the team will be to provide support to each pair and coordinate the work. I hope I manage to get some coding going but I am not sure I will be able to.&lt;br /&gt;&lt;br /&gt;Last news is that we found a couple open source Java DXF library that should help us provide import and export support for DXF in Archimedes. Don't expect it ready so soon but I hope we manage to release a version with DXF support by July (or August since July will be my big holidays in Europe).&lt;br /&gt;&lt;br /&gt;Finally, to answer a couple critics I have been hearing a lot: I wish I could have a centralized website where I could both keep the code repository, the website, the developers center and the blog. But, so far, nothing fits my needs so I am planning to create it myself (and if possible, make it my masters). That's all for now.&lt;br /&gt;&lt;br /&gt;See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-8535679833020603292?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/8535679833020603292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=8535679833020603292' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8535679833020603292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8535679833020603292'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/04/archimedes-054-defined.html' title='Archimedes 0.54 defined'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-8815596074827289158</id><published>2008-04-15T20:07:00.003-03:00</published><updated>2008-04-15T20:28:32.289-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='smalltalk'/><category scheme='http://www.blogger.com/atom/ns#' term='screencasts'/><category scheme='http://www.blogger.com/atom/ns#' term='squeak'/><title type='text'>Squeakcasts running on Seaside?</title><content type='html'>I am considering idea of having Squeakcasts made with Seaside and running on a squeak virtual machine at my &lt;a href="http://www.dreamhost.com/"&gt;Dreamhost&lt;/a&gt; account. It would be a bit more honest to do it this way instead of having a rails application for it (although I guess the rails structure for railscasts could help a lot). I will try to contact folks at Dreamhost to see if that is possible/allowed. If it is, I will do it until I find a big problem (hopefully never).&lt;br /&gt;&lt;br /&gt;With this episode (04-Loops), the screencasts so far have covered a bit of visual script programming with morphic and the main part of Smalltalk syntax. The only parts missing are the class and message creation which we will see in the next screencasts. Just a quick summary until RSS for those screencasts are not ready:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;00-Morphic (&lt;a href="http://eclipse.ime.usp.br/%7Enight/00-morphic-800.mp4"&gt;Portuguese&lt;/a&gt; and &lt;a href="http://eclipse.ime.usp.br/%7Enight/00-morphic-800-en.mp4"&gt;English&lt;/a&gt; version): 15 minutes&lt;br /&gt;Teaches how to create a simple game using the Morphic environment and its scripting language. Not a single line of Smalltalk code written to have a small racing game.&lt;/li&gt;&lt;li&gt;01-Transcript (&lt;a href="http://eclipse.ime.usp.br/%7Enight/01-Transcript.mov"&gt;Portuguese&lt;/a&gt; and &lt;a href="http://eclipse.ime.usp.br/%7Enight/01-Transcript-en.mov"&gt;English&lt;/a&gt; version): 5 minutes&lt;br /&gt;Presents the Transcript and Workspace tools in Squeak and shows the three main messages to manipulate the Transcript (&lt;span style="font-family:courier new;"&gt;clear&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;show:&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;cr&lt;/span&gt;). Shows variable and string declaration and concatenation.&lt;/li&gt;&lt;li&gt;02-Conditionals (&lt;a href="http://eclipse.ime.usp.br/%7Enight/02-Conditionals.mov"&gt;Portuguese&lt;/a&gt; and &lt;a href="http://eclipse.ime.usp.br/%7Enight/02-Conditionals-en.mov"&gt;English&lt;/a&gt; version): 5 minutes&lt;br /&gt;Working on the previous code, transforms what was done into a conditional that prints the parity of a number correctly based on conditions.&lt;/li&gt;&lt;li&gt;03-Blocks (&lt;a href="http://eclipse.ime.usp.br/%7Enight/03-Blocks.mov"&gt;Portuguese&lt;/a&gt; and &lt;a href="http://eclipse.ime.usp.br/%7Enight/03-Blocks-en.mov"&gt;English&lt;/a&gt; version): 7 minutes&lt;br /&gt;Using the code that prints parity, refactors it to use blocks returns, attribute blocks to variables, discuss its scope and shows parametrized blocks.&lt;/li&gt;&lt;li&gt;04-Loops (&lt;a href="http://eclipse.ime.usp.br/%7Enight/04-Loops.mov"&gt;Portuguese&lt;/a&gt; and &lt;a href="http://eclipse.ime.usp.br/%7Enight/04-Loops-en.mov"&gt;English&lt;/a&gt; version): 7 minutes&lt;br /&gt;Using the parametrized blocks from episode 03, teaches how to create 3 styles of loops like 'for', 'while' and 'do while'.&lt;/li&gt;&lt;/ul&gt;That's it for now. I hope to post tomorrow before we leave for Porto Alegre where FISL will take place but I am not sure. Enjoy it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-8815596074827289158?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/8815596074827289158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=8815596074827289158' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8815596074827289158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8815596074827289158'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/04/squeakcasts-running-on-seaside.html' title='Squeakcasts running on Seaside?'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-6126891978118403106</id><published>2008-04-15T00:29:00.005-03:00</published><updated>2008-04-15T11:26:26.410-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='smalltalk'/><category scheme='http://www.blogger.com/atom/ns#' term='screencasts'/><category scheme='http://www.blogger.com/atom/ns#' term='squeak'/><title type='text'>Squeakcasts coming soon?</title><content type='html'>I was chatting with a very good friend yesterday (&lt;a href="http://www.dtsato.com/blog/default/"&gt;Danilo T. Sato&lt;/a&gt;) and he was pretty happy with my screencasting and suggested I should have a website/blog running only about those screencasts. Since I am a big fan of &lt;a href="http://www.railscasts.com/"&gt;Railscasts&lt;/a&gt; (in English) and &lt;a href="http://www.akitaonrails.com/"&gt;Akita&lt;/a&gt;'s tips (in Portuguese) on Rails, I am seriously considering doing it. While chatting, I suggested "smallcasts" and we had some fun about the name and some ideas about it. Today, however, I though maybe "squeakcasts" would be better. It would relate Smalltalk, Squeak and the OLPC project pretty good and would make a more meaningful name.&lt;br /&gt;I intend to have some sort of start on this website on the bus trip to FISL and maybe, when I come back, I get this started. If you have suggestions about a short music, a logo or anything else, please tell me and I would be glad to use them.&lt;br /&gt;&lt;br /&gt;For now, just enjoy the Block's screencast that is a bit longer (7 mins) and half an hour late.&lt;br /&gt;&lt;br /&gt;Download the English version &lt;a href="http://eclipse.ime.usp.br/%7Enight/03-Blocks-en.mov"&gt;here&lt;/a&gt;. &lt;a href="http://video.google.com/videoplay?docid=4674989856602355282"&gt;Google Video&lt;/a&gt; seems bugged and can't upload correctly. Removed the link until I can fix it again.&lt;br /&gt;Download the Portuguese version &lt;a href="http://eclipse.ime.usp.br/%7Enight/03-Blocks.mov"&gt;here&lt;/a&gt;. &lt;a href="http://video.google.com/videoplay?docid=-493708168298199858"&gt;Google Video&lt;/a&gt; seems bugged and can't upload correctly. Removed the link until I can fix it again.&lt;br /&gt;&lt;br /&gt;Enjoy it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-6126891978118403106?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/6126891978118403106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=6126891978118403106' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/6126891978118403106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/6126891978118403106'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/04/squeakcasts-comingo-soon.html' title='Squeakcasts coming soon?'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-6389936094845557079</id><published>2008-04-13T12:21:00.004-03:00</published><updated>2008-04-13T13:10:40.405-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='smalltalk'/><category scheme='http://www.blogger.com/atom/ns#' term='screencasts'/><title type='text'>Speeding up releases</title><content type='html'>It is, indeed, much better to record shorter screencasts. At least for my productivity.&lt;br /&gt;I managed to produce another couple (English and Portuguese) episode of my screencasts between yesterday and today. So expect more frequent releases.&lt;br /&gt;This episode (02) shows how to create conditionals in Smalltalk and give a very brief example of blocks. I strongly suggest watching the previous episode (available on this blog &lt;a href="http://codeache.blogspot.com/2008/04/shorter-screencasts.html"&gt;here&lt;/a&gt;) to get the context. I hope to have two more ready tomorrow about blocks and loops. This way I expect to release two more about classes and tests before I leave São Paulo to go to the &lt;a href="https://fisl.softwarelivre.org/9.0/"&gt;FISL&lt;/a&gt; (International Forum of Software Libre).&lt;br /&gt;&lt;br /&gt;I think I will try to write shorter posts also so I can be a bit more frequent with them also. Keeping this active is always a challenge to me.&lt;br /&gt;&lt;br /&gt;For now, enjoy the screencasts.&lt;br /&gt;Download the English version &lt;a href="http://eclipse.ime.usp.br/%7Enight/02-Conditionals-en.mov"&gt;here&lt;/a&gt; or see it on &lt;a href="http://video.google.com/videoplay?docid=7442409703777368144&amp;amp;hl=en"&gt;Google Video&lt;/a&gt;.&lt;br /&gt;Download the Portuguese version &lt;a href="http://eclipse.ime.usp.br/%7Enight/02-Conditionals.mov"&gt;here&lt;/a&gt; or see it on &lt;a href="http://video.google.com/videoplay?docid=-2976583565186270228&amp;amp;hl=en"&gt;Google Video&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Bye bye!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-6389936094845557079?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/6389936094845557079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=6389936094845557079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/6389936094845557079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/6389936094845557079'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/04/speeding-up-releases.html' title='Speeding up releases'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-1043463576019972305</id><published>2008-04-12T17:04:00.007-03:00</published><updated>2008-04-12T18:40:00.210-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='smalltalk'/><category scheme='http://www.blogger.com/atom/ns#' term='screencasts'/><title type='text'>Shorter Screencasts</title><content type='html'>Hello,&lt;br /&gt;I've finally improved my screencast recording environment. I've receive my USB headset (which scared me by not working out of the box) and bought myself a license of &lt;a href="http://www.shinywhitebox.com/home/home.html"&gt;iShowU&lt;/a&gt;. I've also created a 'screencast' user on my laptop which has 800x600 screen resolution, a big mouse and much less polution on its environment.&lt;br /&gt;While trying to record the english version of my last screencast (Blocks, Conditionals and Loops), I've realized that long screencasts are hell. If I made a mistake by the end of the screencast, I was loosing 15 mins because editing videos makes nasty interruptions I hate. So if I keep screencasts shorter, I waiste less time with my mistakes, people get less bored over time with it and I can record them more frequently.&lt;br /&gt;&lt;br /&gt;In order to keep things in line, I decided also to release the English and Portuguese version of the screencasts at the same time so both can make suggestions and ask for help about the same topic. In order to have this going well, I restarted the portuguese series to the point where I started about Smalltalk (not talking about Morphic). So I now present the Transcript and the Workspace tools available on Squeak and teach how to use them to write code and see its result. I also teach how to concatenate strings on Smalltalk and how to declare variables. I hope to release another screencast in 3 or 4 days abording Conditionals. You can download the image of Squeak I used under: &lt;a href="http://squeak.ofset.org/squeak-dev/"&gt;http://squeak.ofset.org/squeak-dev/&lt;/a&gt;.&lt;br /&gt;Meanwhile, enjoy the screencasts.&lt;br /&gt;&lt;br /&gt;Download the English version &lt;a href="http://eclipse.ime.usp.br/%7Enight/01-Transcript-en.mov"&gt;here&lt;/a&gt;, or see it on &lt;a href="http://video.google.com/videoplay?docid=-6765116668415458281&amp;amp;hl=en"&gt;Google Video&lt;/a&gt;.&lt;br /&gt;Download the Portuguese version &lt;a href="http://eclipse.ime.usp.br/%7Enight/01-Transcript.mov"&gt;here&lt;/a&gt;, or see it on &lt;a href="http://video.google.com/videoplay?docid=8110133268543884090&amp;amp;hl=en"&gt;Google Video&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Removed the option to see the video in this page since it was too little and crappy quality. I hope you enjoy it. Bye bye!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-1043463576019972305?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/1043463576019972305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=1043463576019972305' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1043463576019972305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1043463576019972305'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/04/shorter-screencasts.html' title='Shorter Screencasts'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-3385541563482746161</id><published>2008-04-01T12:11:00.002-03:00</published><updated>2008-04-01T12:24:16.821-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><title type='text'>Archimedes directions</title><content type='html'>Hello everyone,&lt;br /&gt;Archimedes has been a bit confusing lately. Mainly because I am no longer that excited about the project as a result of working alone for too long (being an agile developer, I love pairing).&lt;br /&gt;&lt;br /&gt;I previously announced we were going back to the 0.17.x series to improve it until it reaches a more usable status. The bad news is:&lt;br /&gt;I keep supporting that idea but it seems I will be doing so alone for another long time. I am still working (slowly) on an infra-structure project to simplify the menu/toolbar/statusbar update in Archimedes in order to keep it all more consistant with the program's state. It would also help me maintain the interface code decent enough. Once it is done, I can already release a new verison of that series. The problem is, I cannot estimate when it will happen. All I can say, it is that it will take longer than 3 months.&lt;br /&gt;&lt;br /&gt;The good news, however, is that the team of undergraduated and graduated students working on Archimedes has chosen to improve the 0.52.x series by readding the intersection feature. This means intersection selection, single clicks selection, trim, extend, fillet and other intersection dependent features will most likely appear in this series until the end of the semester. On parallel, I hope to work on the importer/exporter features to have save/load and import and export features back also by the end of the semester. If we manage to do it, I might even forget about the 0.17.x series since 0.52.x will be much more maintainble and will have almost all the features from the previous versions. Let's wait and see. I plan to release 0.53.0 by this weekend (6th of april 08) and retake the old weekly releases pace if the team can help me do it.&lt;br /&gt;&lt;br /&gt;That's it for now folks.&lt;br /&gt;Cya!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-3385541563482746161?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/3385541563482746161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=3385541563482746161' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/3385541563482746161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/3385541563482746161'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/04/archimedes-directions.html' title='Archimedes directions'/><author><name>Hugo "NighT" Corbucci</name><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>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-6021693942663820502</id><published>2008-03-27T23:44:00.005-03:00</published><updated>2008-04-01T14:37:12.275-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='smalltalk'/><category scheme='http://www.blogger.com/atom/ns#' term='screencasts'/><category scheme='http://www.blogger.com/atom/ns#' term='squeak'/><title type='text'>More screencasting</title><content type='html'>I had a really good feedback about my first screencast with a couple suggestions, helps and ideas. The first suggestion is that I should improve my screencasting environment. First buying a usb microphone (and headphone) and then a local screencast software with mouse effects and keyboards exibitions. Can't solve everything now but I've made some improvements. Got the keyboard and mouse problems solved and ordered a usb mic. Researched a lot about the screencast softwares but couldn't really make my mind about it.&lt;br /&gt;&lt;br /&gt;I've recorded two more screencasts. The first one is an English speaking version of the Morphic example I posted previously. I've already received critics about it and I'm gonna try to improve next time but I can't ensure anything (speaking in English uses a considerable cpu share in my head). But here goes the links:&lt;br /&gt;&lt;a href="http://www.screencast-o-matic.com/watch/cjetqAVD6"&gt;http://www.screencast-o-matic.com/watch/cjetqAVD6&lt;/a&gt; - Requires Java 1.5 browser plugin&lt;br /&gt;&lt;a href="http://eclipse.ime.usp.br/%7Enight/00-morphic-en-800.mp4"&gt;http://eclipse.ime.usp.br/~night/00-morphic-en-800.mp4&lt;/a&gt;&lt;br /&gt;Or you can see it here (problem is that is it very tiny and no fullscreen option):&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-8b936db33200bd3c" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v22.nonxt5.googlevideo.com/videoplayback?id%3D8b936db33200bd3c%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330138676%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D75224F3A530FAF241424FAB08039A573ED580CDE.62A7C1B6A18DF6CB39680673A84CF351BB189454%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D8b936db33200bd3c%26offsetms%3D5000%26itag%3Dw160%26sigh%3D3mZhWKl3e5NJVjAMgbIz9yiUvMg&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v22.nonxt5.googlevideo.com/videoplayback?id%3D8b936db33200bd3c%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330138676%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D75224F3A530FAF241424FAB08039A573ED580CDE.62A7C1B6A18DF6CB39680673A84CF351BB189454%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D8b936db33200bd3c%26offsetms%3D5000%26itag%3Dw160%26sigh%3D3mZhWKl3e5NJVjAMgbIz9yiUvMg&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;The other one is in Portuguese and focuses on the Squeak developments tools. It was recorded based on a &lt;a href="http://damien.cassou.free.fr/squeak-dev.html"&gt;developer's image&lt;/a&gt; assembled by Damien Cassou. I present Smalltalk blocks, the conditional system and the loop one. All the code use the Transcript and Workspace widgets to write code detached from a class. I still haven't received my new headset so the voice is still pretty low and I was a bit sick when I recorded it so you can hear me cough. The sound was improved in the mp4 version so you can hear a bit better. As I said, it is only availble in Portuguese for now but I hope to keep the pace and release an English version along with the next portuguese episode next week. You can see the screencast (if you speak Portuguese and/or don't care about the very low voice) at:&lt;br /&gt;&lt;a href="http://www.screencast-o-matic.com/watch/cjfViPVDH"&gt;http://www.screencast-o-matic.com/watch/cjfViPVDH&lt;/a&gt; - Requires Java 1.5 browser plugin&lt;br /&gt;&lt;a href="http://eclipse.ime.usp.br/%7Enight/01-blocksifsloops-800.mp4"&gt;http://eclipse.ime.usp.br/~night/01-blocksifsloops-800.mp4&lt;/a&gt;&lt;br /&gt;Or see here (tiny video, good sound, will post feature request for blogger to add a fullscreen option):&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-89ce5eac1bbc54fa" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v14.nonxt8.googlevideo.com/videoplayback?id%3D89ce5eac1bbc54fa%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330138676%26sparams%3Did,itag,ip,ipbits,expire%26signature%3DBA03F1D50A2B2691E8E184FDD607E3D6812A0B0.44A7283668BFDC4BA64F7004470DE337F8F60DA5%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D89ce5eac1bbc54fa%26offsetms%3D5000%26itag%3Dw160%26sigh%3D0vK9KoH78nsTTYakMjPuZuIKVz8&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v14.nonxt8.googlevideo.com/videoplayback?id%3D89ce5eac1bbc54fa%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330138676%26sparams%3Did,itag,ip,ipbits,expire%26signature%3DBA03F1D50A2B2691E8E184FDD607E3D6812A0B0.44A7283668BFDC4BA64F7004470DE337F8F60DA5%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D89ce5eac1bbc54fa%26offsetms%3D5000%26itag%3Dw160%26sigh%3D0vK9KoH78nsTTYakMjPuZuIKVz8&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enjoy it people!&lt;br /&gt;Bye bye&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-6021693942663820502?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=89ce5eac1bbc54fa&amp;type=video%2Fmp4' length='0'/><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=8b936db33200bd3c&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/6021693942663820502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=6021693942663820502' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/6021693942663820502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/6021693942663820502'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/03/more-screencasting.html' title='More screencasting'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-2005637459119657773</id><published>2008-03-19T10:48:00.009-03:00</published><updated>2008-04-01T14:38:28.411-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='smalltalk'/><category scheme='http://www.blogger.com/atom/ns#' term='screencasts'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='squeak'/><title type='text'>Screencasts on Smalltalk, Squeak and Seaside</title><content type='html'>Hello everyone,&lt;br /&gt;During Campus Party, I've met &lt;a href="http://www.akitaonrails.com.br/"&gt;Fabio Akita&lt;/a&gt; and he was asking about some demonstration of &lt;a href="http://www.seaside.st/"&gt;Seaside&lt;/a&gt; and screencasts about it. Seaside is a framework to build web applications written in &lt;a href="http://www.smalltalk.org/main/"&gt;Smalltalk&lt;/a&gt; and whose main name is &lt;a href="http://www.avibryant.com/"&gt;Avi Bryant&lt;/a&gt; (who Akita interviewed in two parts: &lt;a href="http://www.akitaonrails.com.br/2007/12/15/conversando-com-avi-bryant-parte-1"&gt;part 1&lt;/a&gt; and &lt;a href="http://www.akitaonrails.com.br/2007/12/15/conversando-com-avi-bryant-parte-2"&gt;part 2&lt;/a&gt;). It is a very neat way of building web applications even easier than &lt;a href="http://www.rubyonrails.org/"&gt;Rails&lt;/a&gt;. It is mainly used with &lt;a href="http://www.squeak.org/"&gt;Squeak&lt;/a&gt; that is the most advanced free and open source Smalltalk Virtual Machine.&lt;br /&gt;&lt;br /&gt;Being the current teacher assistant for an Object Oriented Programming course at the university, I've decided to launch myself into screencasting about Smalltalk, Squeak and Seaside to attend Akita's request. The first one has just been recorded but was aimed to the students so it is in portuguese and speaks about &lt;a href="http://wiki.squeak.org/squeak/30"&gt;Morphic&lt;/a&gt;, the main user interface for Squeak. You can see it at (requires java browser plugin installed):&lt;br /&gt;&lt;a title="Screencast Morphic" href="http://www.screencast-o-matic.com/watch/cjeFrOV2c"&gt;http://www.screencast-o-matic.com/watch/cjeFrOV2c&lt;/a&gt;&lt;br /&gt;Or download it in an MP4 47 Mb file (requires some free codecs) at:&lt;br /&gt;&lt;a title="Screencast na Eclipse" href="http://eclipse.ime.usp.br/%7Enight/00-morphic-800.mp4"&gt;http://eclipse.ime.usp.br/~night/00-morphic-800.mp4&lt;/a&gt;&lt;br /&gt;or&lt;br /&gt;&lt;a title="Screencast no IME" href="http://www.ime.usp.br/%7Ekon/MAC5714/00-morphic-800.mp4"&gt;http://www.ime.usp.br/~kon/MAC5714/00-morphic-800.mp4&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've found this new feature in blogspot to upload a video. Trying here:&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-441860da51c0df3b" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v5.nonxt6.googlevideo.com/videoplayback?id%3D441860da51c0df3b%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330138676%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D3CA6DC29EE7DB6D8EAB1674F2F8FEF2C088BD766.5A54AA8276CC2F57A464B13DB085BF9B3C712091%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D441860da51c0df3b%26offsetms%3D5000%26itag%3Dw160%26sigh%3DfSyVaq3v_BCDhSvQ0T_sfwAWk4U&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v5.nonxt6.googlevideo.com/videoplayback?id%3D441860da51c0df3b%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330138676%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D3CA6DC29EE7DB6D8EAB1674F2F8FEF2C088BD766.5A54AA8276CC2F57A464B13DB085BF9B3C712091%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D441860da51c0df3b%26offsetms%3D5000%26itag%3Dw160%26sigh%3DfSyVaq3v_BCDhSvQ0T_sfwAWk4U&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I &lt;del&gt;pretend&lt;/del&gt; intend (thanks Kenzo) to release another version of it in english for those interested in it but I will wait for some feedback to correct and improve the current version.&lt;br /&gt;&lt;br /&gt;It requires that you have Squeak installed and running which can be easily done by downloading the correct package for your operating system at &lt;a href="http://www.squeak.org/"&gt;http://www.squeak.org/&lt;/a&gt;. Click your operating system link on the top right side of the site to download squeak (the virtual machine) and a clean image of Squeak's world.&lt;br /&gt;&lt;br /&gt;Smalltalk is slightly different than most current object oriented languages. The Squeak Image (.image file and .changes) is a representation of Squeak's world as it was on last save. This means when you load it, it is just like if you were back at the exact time when you saved your image. The same things are showing, same processes are running, same everything. Especially this means, if you screw up your image and save it, closing and opening won't help at all. Therefore, create backups of your .image (and .changes) every once in a while.&lt;br /&gt;&lt;br /&gt;Then you can do some very fun things such as changing the behaviour of the True class (in Smalltalk, there is no syntax specific word... EVERYTHING is a class, even conditionals and loops but we will see about that in another screencast).&lt;br /&gt;&lt;br /&gt;For now, I'll leave you, non-portuguese speakers, testing squeak by yourselves (although the speaking is not THAT important in the screencast) and the others, have fun creating games for your kids!&lt;br /&gt;&lt;br /&gt;bye bye&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-2005637459119657773?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=441860da51c0df3b&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/2005637459119657773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=2005637459119657773' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/2005637459119657773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/2005637459119657773'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/03/screencasts-on-smalltalk-squeak-and.html' title='Screencasts on Smalltalk, Squeak and Seaside'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-7956250913624233625</id><published>2008-03-19T10:34:00.003-03:00</published><updated>2008-03-19T10:45:57.851-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><title type='text'>And rejected... once more</title><content type='html'>That's it people. The Free Software Competence Center was rejected once more as a mentoring organization at Google Summer of Code. Therefore Archimedes will NOT receive fundings to contribution projects. Back on lonely development for another year. Sorry people.&lt;br /&gt;&lt;br /&gt;Another news is that I have a 3 graduation students and 3 masters students team starting to work on  Archimedes next week. They chose to continue the Rich Client development which means I will keep the non-RCP version going by myself.&lt;br /&gt;The bad part of this is that it will evolve slowlier but the good part is that the RCP version might reach a very good state by the end of the semester if everything works fine. Our plans are to implement the intersection features in order to have snap, trim, extend and other intersection dependent features in the RCP version.&lt;br /&gt;&lt;br /&gt;Another good news is that I've hired Dreamhost to host a couple of sites related to my family. Those are my mother's french litterature site (&lt;a href="http://www.maremurex.net"&gt;http://www.maremurex.net&lt;/a&gt;) and my father's architecture office site (&lt;a href="http://www.bacco.com.br"&gt;http://www.bacco.com.br&lt;/a&gt;) that we are rebuilding on rails. I will migrate all Archimedes resources and infos to Dreamhost when I get some time. This will mean a new website for archimedes with a much better system (that I hope to build) than the one on sourceforge or the incubadora. This blog will also be migrated there whenever I get some time. I'll post a warning here when I do migrate it.&lt;br /&gt;&lt;br /&gt;Next post coming up is about my current work on screencasts for Smalltalk, Squeak and Seaside. See you soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-7956250913624233625?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/7956250913624233625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=7956250913624233625' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/7956250913624233625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/7956250913624233625'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/03/and-rejected-once-more.html' title='And rejected... once more'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-4461191736244804377</id><published>2008-03-05T15:43:00.003-03:00</published><updated>2008-03-05T16:21:42.250-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><title type='text'>Archimedes and GSoC</title><content type='html'>Hi again,&lt;br /&gt;Like last year, I will register Archimedes in the &lt;a href="http://code.google.com/soc/"&gt;Google Summer of Code&lt;/a&gt; (GSoC). This time I hope the server will stay online so that the evaluators can take a look at the project. As last year, Archimedes will be inscribed as one of the projects of the Free Software Competence Center in São Paulo. I am not sure this is really a very good idea since it will not display Archimedes in the main project lists (since it will be considered a sub project). On the other hand, Archimedes, as well as other projects in the Competence Center may benefit from "partial" votes that may result from proposals to the various projects.&lt;br /&gt;&lt;br /&gt;The due date for the registration is next week (wednesday, 12th march) but I already started listing possible subprojects for Archimedes. So far, I have listed the following projects:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Implement a DXF and DNG importer and exporter&lt;/li&gt;&lt;li&gt; Implementing the printing configuration and viewing system (a.k.a layout)&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Creating an improved layer table widget to allow property modifications in the toolbar's combo and implement the line style creation/edition system for those layers&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Improve the performance of the current snap system and intersection to handle over 1000 elements on screen without any noticeable lag&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Implement another view system to match the Microstation's interaction pattern&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Implement a DWG importer and exporter&lt;/li&gt;&lt;/ul&gt;I've tried to make projects equally interesting and work demanding (which explains why DXF and DNG make one project while DWG alone is another). If you have any other suggestion, requests or ideas, please let me know. I will try to gather them (or break them) into projects the same size as these ones.&lt;br /&gt;&lt;br /&gt;Last thing: I've updated the developer's team on SF. All developers I removed haven't coded one single line in the last year and showed no interest about keeping the work going. There are now 3 developers listed there including myself. They haven't coded much lately but they promised they would do their best to restart contributing. It is a bit more fair to see the project having 3 developers instead of 10. Explains more the lack of advance.&lt;br /&gt;&lt;br /&gt;Bye bye!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-4461191736244804377?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/4461191736244804377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=4461191736244804377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4461191736244804377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4461191736244804377'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/03/archimedes-and-gsoc.html' title='Archimedes and GSoC'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-8384420451271666825</id><published>2008-02-29T14:07:00.008-03:00</published><updated>2008-02-29T15:33:52.059-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agilcoop'/><title type='text'>Agile courses in São Carlos</title><content type='html'>Hello,&lt;br /&gt;A couple weeks ago, I participated as an instructor in an agile course in São Carlos for &lt;a href="http://www.agilcoop.org.br/"&gt;Agilcoop&lt;/a&gt;. We used mostly the same slides and structure from the course in São Paulo available &lt;a href="http://agilcoop.incubadora.fapesp.br/portal/slides/curso-de-verao-2008"&gt;here&lt;/a&gt;. It was a 36 persons class with various backgrounds and age. Although instructors felt it as one of the best courses we gave so far, the feedback from the class wasn't that good.&lt;br /&gt;For the courses, our &lt;a href="http://kallokain.blogspot.com/2008/01/increase-customer-satisfaction-with-net.html"&gt;Net Promoter Score&lt;/a&gt; were:&lt;br /&gt;&lt;table border="1px"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;São Paulo&lt;/th&gt;&lt;th&gt;São Carlos&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Theoretical&lt;/th&gt;&lt;td&gt;68%&lt;/td&gt;&lt;td&gt;58%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Practical&lt;/th&gt;&lt;td&gt;60%&lt;/td&gt;&lt;td&gt;80%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;It should mean that students from São Carlos liked less the theoretical course  and more the practical one while São Paulo had the opposite effect. Considering those are different persons with different motivations and expectations, I would believe one course was as good as the other one and just the expectations were different.&lt;br /&gt;&lt;br /&gt;The results of the practical course are also available &lt;a href="http://agilcoop.incubadora.fapesp.br/portal/projetos/agilpizza-verao-2008"&gt;here&lt;/a&gt; for São Paulo and &lt;a href="http://agilcoop.incubadora.fapesp.br/portal/projetos/agilpizza-verao-sao-carlos-2008"&gt;here&lt;/a&gt; for São Carlos. The project is pretty nice but students had many problems with the Java Server Faces (JSF) technology. We expect to reduce this overhead for next courses by changing the project to something simpler. Maybe using Jabber or some instant message API. If you have any suggestions for projects that require little background knowledge, let me know. Bye bye!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-8384420451271666825?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/8384420451271666825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=8384420451271666825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8384420451271666825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8384420451271666825'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/02/agile-courses-in-so-carlos.html' title='Agile courses in São Carlos'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-5282837222565862321</id><published>2008-02-28T20:42:00.003-03:00</published><updated>2008-02-28T21:06:43.043-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>Research in progress paper to Agile 2008</title><content type='html'>I've just posted a &lt;a href="http://nightao.googlepages.com/CorbucciGoldman.pdf"&gt;research paper&lt;/a&gt; at Agile 2008.&lt;br /&gt;It describes partially the work I have been doing in my masters. I will post the abstract since it was not supposed to be in the paper itself:&lt;br /&gt;&lt;pre wrap=""&gt;Agile methods and open source software communities share similar cultures with different approaches to overcome problems. Although several people are involved in both worlds, neither agile methodologies are not as strong as they could be in open source communities nor are those communities known for their collaboration in agile methods. This work intends to identify and expose the obstacles that separate those communities in order to extract the best of them and improve both sides with suggestions of tools and development processes.&lt;/pre&gt;I think it might have been better but I am quite happy with it. I will correct a few details thanks to &lt;a href="http://beewebhead.net/"&gt;Barbara Dieu&lt;/a&gt;, my former english teacher who is responsible only the correct parts of my writing, no the bad ones (I learned those on my own).&lt;br /&gt;&lt;br /&gt;Agile 2008 has two very good proposals related to the work I am doing. &lt;a href="http://submissions.agile2008.org/node/376"&gt;The first one&lt;/a&gt; is from Mary Poppendieck (very strong player in the Lean community) and Christian Reis from &lt;a href="http://www.async.com.br/"&gt;Async&lt;/a&gt; that I had the pleasure to meet about a month ago. I am pretty confident they will get accepted and I will surely be there to see this. Another work that is related to their but kind of opposed to it in the sense that it uses Open source as a basis instead of Agile is &lt;a href="http://submissions.agile2008.org/node/3292"&gt;this one&lt;/a&gt; by &lt;span class="submitted"&gt; Dennis Byrne and Naresh Jain. I think (and hope) that it will get through also so I can attend to both and get some more material for my masters.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Finally, I also submitted a &lt;a href="http://submissions.agile2008.org/node/4922"&gt;session proposal&lt;/a&gt; with &lt;a href="http://www.dtsato.com/blog/default/"&gt;Danilo Sato&lt;/a&gt;, about the &lt;a href="http://groups.google.com/group/dojo_sp"&gt;Coding Dojo&lt;/a&gt; he started and I'm keeping running with a couple friends here in São Paulo. Since it is a very long session, we're not sure people will understand the benefits of it or difference with previous Dojo experiences. Let's wait an see if people like the idea or not. I also helped Danilo submit &lt;a href="http://submissions.agile2008.org/node/4261"&gt;another proposal&lt;/a&gt; related to the Dojo with Mariana Bravo and they are bit more confident since this session was a much shorter one. Let's hope both happen. And for now, feedback for all of those is welcome. See you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-5282837222565862321?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/5282837222565862321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=5282837222565862321' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5282837222565862321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5282837222565862321'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/02/research-in-progress-paper-to-agile.html' title='Research in progress paper to Agile 2008'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-2667994652360743959</id><published>2008-02-25T22:56:00.005-03:00</published><updated>2008-02-26T02:53:56.199-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='campus party'/><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><title type='text'>Feelings about Archimedes</title><content type='html'>I am very sorry to have to post this but I can no longer endure that feeling alone. I am getting seriously tired of being questioned about when Archimedes will have a better documentation and the new features and 64 bits support and updated informations on the site and a better site and this and that. Believe when I say I would love to provide every single one of those things but I am NOT being payed by anyone (except maybe myself) to work on this project. I am NOT unemployed or full time free to do whatever I want and most of all: I am not even a USER of Archimedes. I honestly and truly work on this project out of my good will!&lt;br /&gt;&lt;br /&gt;Although I would really like to be paid to work on Archimedes, I do not expect people to raise money to afford my work. What I am expecting is that people stop complaining about me not doing to work and start doing it themselves. Start providing instalation tutorials for all platforms for instance, then maybe use tutorials directed to architects. Suggest a different page format. Update websites you have access on such as wikis and reports. Understand that anything that I do that does not involves programming Archimedes itself, features will NOT get implemented. So if you can take off anything what so ever from my duties, it means I get to program more (which is the part I like) and implement more features, correct more bugs and solve more problems.&lt;br /&gt;&lt;br /&gt;And finally, if none of this is possible to you, try gathering architecture offices and professionals to donate any mount of money to the project that could be reverted into freeing me some time and working more on the project. If you do not feel comfortable with that, hire a local developer in your country to contribute with the project and ask me to give you feedback about his work if you don't feel secure to measure it.&lt;br /&gt;&lt;br /&gt;It pains me to have to make this post especially because it is a clear signal that I am getting tired of the project. But I am getting each time more disapointed with the architect's community since it is not able to unite for a simple matter. Free and open source software should mean collaboration from everyone! Not just me working and you waiting for the job to be done. Especially considering that the greatests beneficiaries are the users of the software, a group from which I am NOT part.&lt;br /&gt;&lt;br /&gt;Well, enought of complaining. Now to the news: during my talk at &lt;a href="http://www.campusparty.com.br"&gt;Campus Party&lt;/a&gt;, I promised attendees that I would release a new version of &lt;a href="http://www.arquimedes.org.br"&gt;Archimedes&lt;/a&gt;. It will happen within the next 2 weeks because I will need to release some version for my graduation student team but I will delay it as much as I can in order to produce all the infra-structure I am working on. New versions that include features and improvements to users should only be available by the end of march. Let's hope I can keep that promise!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-2667994652360743959?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/2667994652360743959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=2667994652360743959' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/2667994652360743959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/2667994652360743959'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/02/feelings-about-archimedes.html' title='Feelings about Archimedes'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-663061261620349814</id><published>2008-02-25T16:19:00.006-03:00</published><updated>2008-02-25T22:53:05.317-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='campus party'/><category scheme='http://www.blogger.com/atom/ns#' term='blah'/><title type='text'>A week at Campus Party</title><content type='html'>Hello everyone,&lt;br /&gt;It has now been two weeks since I started going to &lt;a href="http://www.campusparty.com.br/"&gt;Campus Party&lt;/a&gt; and eight days since I stopped it. It was a very nice experience where I could meet a couple persons I wanted to.&lt;br /&gt;&lt;br /&gt;I must admit I was a bit disapointed with the audience since I was expecting a bit more people interested in development activities such as &lt;a href="http://www.arquimedes.org.br/"&gt;Archimedes&lt;/a&gt; and &lt;a href="http://www.codingdojo.org/"&gt;Coding Dojos&lt;/a&gt; or an eXtreme Programming (XP) laboratory. I had something like 10 attendees from start to the end and another 10 passing by during Archimedes demonstration, the Coding Dojo had about 8 newcomers while the XP lab managed to reach amazing 4 attendees.&lt;br /&gt;&lt;br /&gt;Besides hanging on with friends during the whole week and seeing computer geeks getting a lot of attention from the press (which I had some but threw away by being busy), Campus party was mostly a big lan party with tons of file sharing, game play and robots wandering around hiting people or waking them up with music.&lt;br /&gt;I think I earned three good experiences with the event:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Learned to disassemble executable code and debug it with gdb (this will make a post later when I achieve my goal with it).&lt;/li&gt;&lt;li&gt;Worked on Archimedes and got some feedback from users about wether or not it is decent. While people told me it was great, nobody (except one person maybe, as far as I know) really started to use it.&lt;/li&gt;&lt;li&gt;Met &lt;a href="http://www.akitaonrails.com/"&gt;Akita&lt;/a&gt; that suggested that we produced a couple of screencasts about &lt;a href="http://www.seaside.st"&gt;Seaside&lt;/a&gt;. I though about it and since I am the teaching assistant for the Object Oriented Programming (OOP) course and we are going to work with it, I will probably do it. I will post them here when it's done.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Finally I could meet with people from &lt;a href="http://www.4linux.com.br"&gt;4Linux&lt;/a&gt; again which is always fun, especially when Maddog is also around. So that was basically Campus Party for me. As far as I am concerned, it is an interesting event but more focused to fun and meetings than serious work or talks.&lt;br /&gt;&lt;br /&gt;Anyway, next posts will cover my promises about Archimedes, news about the courses in São Carlos, my next works on OOP for graduation students  and posts to session in &lt;a href="http://www.agile2008.org/"&gt;Agile 2008&lt;/a&gt;. See you in a bit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-663061261620349814?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/663061261620349814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=663061261620349814' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/663061261620349814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/663061261620349814'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/02/week-at-campus-party.html' title='A week at Campus Party'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-2007934490271825143</id><published>2008-02-02T16:52:00.000-02:00</published><updated>2008-02-03T13:02:59.766-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='xp'/><category scheme='http://www.blogger.com/atom/ns#' term='agilcoop'/><title type='text'>Teaching agile methods: a nice experience</title><content type='html'>In the last couple of weeks I was envolve in two courses related to Agile methods. The first one, more theoretical counted with 9 talks:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;an Introduction to Agile Methods (talking almost nothing about XP)&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;an Introduction to eXtreme Programming (XP)&lt;/li&gt;&lt;li&gt;Refactoring explained with examples&lt;/li&gt;&lt;li&gt;Tests: unit, acceptance, interface, integration and everything else possible&lt;/li&gt;&lt;li&gt;Planning agile projects&lt;/li&gt;&lt;li&gt;Test Driven Development: a practical approach&lt;/li&gt;&lt;li&gt;Tracking agile projects&lt;/li&gt;&lt;li&gt;Short introduction to Scrum&lt;/li&gt;&lt;li&gt;Short introduction to Lean&lt;/li&gt;&lt;/ol&gt; All the slides are available at &lt;a href="http://agilcoop.incubadora.fapesp.br/portal/slides/curso-de-verao-2008"&gt;http://agilcoop.incubadora.fapesp.br/portal/slides/curso-de-verao-2008&lt;/a&gt; in portuguese only. I've been part of 3 of then (2, 5 and 7)  and it has been a very good experience. It is amazing how people don't really care about understanding the depth of agile methods. They mostly want to hear that it works and that people actually do it for real. Other than that, I was quite happy with the results since I was evaluated pretty well among the talkers and the experience was good.&lt;br /&gt;&lt;br /&gt;The last week was the practical course: eXtreme Programming Laboratory. We had 4 teams of 6 students each plus one coach for each. The project was a Java web system built with Java Server Faces (JSF) and the goal was to generate a site to a pizza delivery store cutely called AgilPizza. We had a small bootstrap ready with a static page, a dynamic listing page and a form one each of those with JUnit tests and some Selenium testing.&lt;br /&gt;This experience was much more exhausting since those were full 4 hours teaching days with all sorts of codeaches one might have with a project. I am sad to think that my team probably didn't enjoyed and learned as much as possible during the course. Time restrictions, technical issues and the fact that I was the only one able to solve network problems took a lot of my energies and quality.&lt;br /&gt;One thing that I can assure is that Java web projects are not the best system to work on. I am still searching for a system that has a very flat learning curve on a language that most people can understand and use. Maybe some more dynamic languages such as python and ruby would be good but people have a hard time learning new syntax so I might just take a deeper look into Groovy as an option.&lt;br /&gt;Never the less, it was a very enriching experience and I am pretty sure next time (which will happen in 2 weeks) will flow a bit better even using the same project and the same coaches. I will post later on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-2007934490271825143?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/2007934490271825143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=2007934490271825143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/2007934490271825143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/2007934490271825143'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/02/teaching-agile-methods-nice-experience.html' title='Teaching agile methods: a nice experience'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-3783557382116494409</id><published>2008-01-23T12:57:00.000-02:00</published><updated>2008-01-23T15:53:21.439-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><title type='text'>Archimedes mainstream back to version without Eclipse's Rich Client Framework</title><content type='html'>I'm working on Archimedes again. After 6 long months, I decided to restart working on the project after a chat with &lt;a href="http://www.linuxjournal.com/blog/1000864"&gt;Maddog&lt;/a&gt; during the &lt;a href="http://www.openbeach.org.br/"&gt;OpenBeach&lt;/a&gt; (site in Portuguese). I admitted that the migration idea was not very bright because of the complexity involved in RCP and the state of the project so far.&lt;br /&gt;&lt;br /&gt;This is way I decided to go back to the version 0.17.x version and work on it.&lt;br /&gt;Most of my work so far has been focused on infrastructure. I've developed a small library that parses an XML file into an abstract structure and another one that transforms that structure into SWT widgets, more specifically,  a menu bar and/or a cool bar (a toolbar that can be moved). I've tweaked it to adapt better with os x menu system.&lt;br /&gt;The source and tests and examples of this work are available in a specific folder of the SVN tree of Archimedes:&lt;br /&gt;&lt;a href="https://incubadora.fapesp.br:8043/svn/archimedes/actionsystem/"&gt;https://incubadora.fapesp.br:8043/svn/archimedes/actionsystem/&lt;/a&gt;&lt;br /&gt;There is no build system but if you use eclipse, you can just export the project as a jar file. I will add a build.xml file whenever I get some time to do it decently.&lt;br /&gt;&lt;br /&gt;Another main change was restructuring the whole archimedes SVN tree. It now follows the default suggested structure. Every project is contained in the trunk folder inside the projects name. It's much easier to understand looking than explaining. Most work will still be kept on trunk. Branches will be used for main releases so that we can correct bugs for running versions more quickly. Tags will be used to keep track of what revision is related to which release.&lt;br /&gt;&lt;br /&gt;Finally, the other thing is that I changed the build to generate an executable file for each system (.exe on Windows, .app on OSX, executable on Linux) with embedded icons (except on linux).&lt;br /&gt;&lt;br /&gt;My next work will focus on finishing the action system so that the application that uses the library can populate, enable/disable buttons and add dynamic itens and other features desirable. Once this is done, I'll restart working on feature for archimedes mainly bringing new features implemented in the migrated version to this old system. I've got a ton of work to do until March when I finally will have another student team working with me on the project. I'll give further news as I evolve.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-3783557382116494409?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/3783557382116494409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=3783557382116494409' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/3783557382116494409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/3783557382116494409'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/01/archimedes-mainstream-back-to-version.html' title='Archimedes mainstream back to version without Eclipse&apos;s Rich Client Framework'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-5429907141230483241</id><published>2008-01-23T12:39:00.000-02:00</published><updated>2008-01-23T12:56:43.410-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='agilcoop'/><title type='text'>A research about developers' education failures</title><content type='html'>I'm working with a group of teachers, students and ex-students of my university with agile methods, as I already mentioned. In mid December, we've got a project approved with the Brazilian government to research what are the greatest problems that companies find in their developer's education.&lt;br /&gt;We've set up a nice rails (&lt;a href="http://www.rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt;) application with our questions to interview project leaders/managers in all sorts of companies. So far we have interviewed around 20 companies in Sao Paulo, Rio de Janeiro, Campinas (our very small Silicon Valley) and Sao Carlos. There is no clear problem so far but I will be able to give you more information once we compile all the data to generate our report.&lt;br /&gt;&lt;br /&gt;This report will be delivered in about 2 or 3 weeks with our conclusions to the responsible institution. Then we hope to request more funding to develop the courses that the companies selected and offer them. The best part of this is that all the material we produce will be available under a &lt;span style="font-style: italic;"&gt;Creative Commons&lt;/span&gt; license in our website: &lt;a href="http://www.agilcoop.org.br/"&gt;www.agilcoop.org.br&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Note that the bad part of this is that all will be in Portuguese which means people will have to translate this work to be able to use it somewhere else. Since it's an open research, I hope I will be able to post a link with our report. As they say:&lt;br /&gt;To be continued...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-5429907141230483241?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/5429907141230483241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=5429907141230483241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5429907141230483241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5429907141230483241'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/01/research-about-computer-science-lacks.html' title='A research about developers&apos; education failures'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-1335799501360624934</id><published>2008-01-23T12:34:00.000-02:00</published><updated>2008-01-23T12:39:05.083-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='trips'/><title type='text'>New York! New York!</title><content type='html'>After OOPSLA I could spend another week in New York. It was my first time in NYC and I must admit that I liked Manhattan a lot! Didn't have time to go outside of it so I cannot talk about the rest. The best experiences there were:&lt;br /&gt; &lt;ul&gt;&lt;li&gt;The NYC Opera where I could enjoy "Carmen". Beats any Broadway musical on quality and price if you are a student. NYC Opera have U$ 16 tickets for students when those are bought on the day of the event and you can get whatever seat is available. Non students also have discounts but those are more expensive.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The central park is a very nice place to be if you want to relax, enjoy the sun and think about life. It's like a big, quiet and peaceful island inside the Manhattan.&lt;/li&gt;&lt;li&gt;For those of you who like to be impressed by technology and stores: Time square is really amazing.&lt;/li&gt;&lt;li&gt;Last, but not least, all the museums are very impressive and specially HUGE. Walking around the city is also very pleasant.&lt;/li&gt;&lt;/ul&gt;The New York City feeling is something quite unique (just like most big towns in the world I suppose) and, although people are not exactly very friendly, one can get along pretty well. Especially if you speak English or Spanish because, unlike most movies show, half of New York is Spanish speaker and lots of adds use both languages.&lt;br /&gt;&lt;br /&gt;And just to close: the only thing that is free in NYC is the fairy to Staten island so enjoy it. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-1335799501360624934?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/1335799501360624934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=1335799501360624934' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1335799501360624934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1335799501360624934'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/01/new-york-new-york.html' title='New York! New York!'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-5769719413561465756</id><published>2008-01-23T12:32:00.000-02:00</published><updated>2008-01-23T12:34:03.710-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oopsla'/><title type='text'>A very short summary of OOPSLA 2007</title><content type='html'>OOPSLA was amazing! I reported the first 2 days but the rest was just great also. The most memorable events I participated are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The NSB (No Silver Bullet) workshop that brought me a lot of knowledge and very interesting discussions. The result is not that important but participating was a far more enriching experience.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The NSB panel with an extra-ordinary performance by the werewo... I mean, Martin Fowler. There is a small 2 mins video to give people an idea of what happend at: &lt;a href="http://www.youtube.com/watch?v=Z-1X3duvryA"&gt;http://www.youtube.com/watch?v=Z-1X3duvryA&lt;/a&gt;&lt;/li&gt;&lt;li&gt;The "50 in 50" presentation by Dick Gabriel and Guy Steele. A real great work of art!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The poster session that gave me a very good chance to talk to people which is the best part in those events.&lt;/li&gt;&lt;li&gt;And the "off-topic" talk about a great parallel between geographic exploration and knowledge exploration established through maps. Makes you think a lot!&lt;/li&gt;&lt;/ul&gt;This was it to OOPSLA 07 and I hope to participate and maybe meet you at OOPSLA'08 in Nashville.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-5769719413561465756?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/5769719413561465756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=5769719413561465756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5769719413561465756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5769719413561465756'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/01/very-short-summary-of-oopsla-2007.html' title='A very short summary of OOPSLA 2007'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-2931907922219349866</id><published>2008-01-23T11:52:00.000-02:00</published><updated>2008-01-23T12:32:28.020-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blah'/><title type='text'>Those alive, always... blog</title><content type='html'>After dying and resurrecting a couple of times since my last post (in late October), I'm restarting to blog. I have, of course, tons of news and updates but I will not drown you with everything. I will post everything in small separate posts so that everyone can refer to what ever is important to them.&lt;br /&gt;I will also try to maintain the blog style that way from now on. I understand that big posts are something that can rarely be reused (just like happens to code), so I will try to refactor my posts to improve reusability.&lt;br /&gt;I will also try (again) to post a bit more often to keep this updated.&lt;br /&gt;Well, this was only a blah, feel free to read what interests you on the rest.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-2931907922219349866?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/2931907922219349866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=2931907922219349866' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/2931907922219349866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/2931907922219349866'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2008/01/those-alive-always-blog.html' title='Those alive, always... blog'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-6239899300700296383</id><published>2007-10-21T18:09:00.001-02:00</published><updated>2007-10-21T18:42:54.360-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oopsla'/><category scheme='http://www.blogger.com/atom/ns#' term='trips'/><title type='text'>Sunday at OOPSLA '07</title><content type='html'>We're getting close to the end of the real day here at OOPSLA '07. I've worked today as a flotter from 7h to 10h and then again from the 12h to 16h (I did 1 extra work hour than I was scheduled for to help people). Now, you must be wondering what a flotter does, right? Very simple: flotters float! Meaning we just stay in the Student Volunteers (S.V.) Room (a nice room with great wifi, power and free food) and wait for some work to show up. This could be anything: from replacing a missing SV to carrying stuff around and helping in registration. But most of the time, you just sit in the SV Room and chat, organize extra activities (such as Ice skating on Monday or Tuesday!) and have fun. This is how I managed to write the whole last post, read my feeds, check emails, etc...&lt;br /&gt;&lt;br /&gt;I'm now off duties but I've already lost around 65% of any tutorials and around 80% of any workshop for today so I decided to stay here and write a bit about the conference itself. We got a lot of people here from all over the world. I've met Canadians, Polish, Americans, Mexican,  German, Romenian and even Brazilian students. :) I'm not sure what we're doing tonight but Mariana promissed she would report on the tutorial she attended: "Pick up your pen!" from Steve Metsker. I will try to upload, classify and comment every picture we got from yesterday and today.&lt;br /&gt;&lt;br /&gt;Tomorrow afternoon I will be hosting the tutorial: "Why users say 'Start with the Screen!': Effective Test-Driven Development, Presentation Layer-First" from Bobby Norton and Chris Stevenson and I will report about it. I'm not sure yet about which tutorial or workshop I will attend during the morning but I'm seriously thinking about Steven Fraser, Dennis Mancl and Bill Opdyke's "No silver bullet - a Retrospective on the Essence and Accidents of Software Engineering" although I might attend to the beginning of the Mini-PLoP which would not be as good since I would have leave in the middle. I don't know. I will probably talk to Linda Rising about it (since she's responsible for the PLoP) and find about it tomorrow morning during breakfast.&lt;br /&gt;&lt;br /&gt;So, activities here finish around 17h (which is in a couple mins) and then we will probably try to agenda something with other SVs and go out in the city and later on go to some pub maybe. Tomorrow's duties start later on (8:30h instead of 7h today) so we might have a couple more sleep hours (or writing). And, finally if anyone is wondering where will be next OOPSLA: Nashville, Tennessee. So get ready to subscribe as student volunteers because there are around 10 or 12 guys from Monterey University which means, there are not limits for a single university. You just need to show interest and be ready to work a little to get a lot of fun.&lt;br /&gt;&lt;br /&gt;That's it for now guys, I'll get ready to go somewhere with Mariana before we meet with the rest of the SVs. Bye bye and see you guys later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-6239899300700296383?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/6239899300700296383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=6239899300700296383' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/6239899300700296383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/6239899300700296383'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/10/sunday-at-oopsla-07.html' title='Sunday at OOPSLA &apos;07'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-5461958569189214435</id><published>2007-10-21T07:53:00.000-02:00</published><updated>2007-10-21T11:49:08.615-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oopsla'/><category scheme='http://www.blogger.com/atom/ns#' term='trips'/><title type='text'>From Montreal after the first workday</title><content type='html'>Hello there,&lt;br /&gt;I'm writting very early in the morning while Mariana takes her bath. It is sunday morning and the OOPSLA conference starts today. We've been in Montreal for 2 days already and the city is very friendly. Distances between things are quite big although it is not even nearly as crowded as Sao Paulo. Friday we walked a lot and saw the UQAM university and a very nice park filled with squirells. We spent the evening with our hosts chatting, eating and drinking. They cooked a very nice "Fondue chinoise" which has nothing from China from what they told us and we gave them their gifts. Yesterday (Saturday) they took us for a car ride in the city where we could see the Formula 1 circuit and quite some parts of the city.&lt;br /&gt;In the afternoon, we had a very good vietnamese sandwich in the best vietnamese sandwich maker in town according to Vincent. And then, from 15h to 19h, we started our work at OOPSLA at the registration booth with Eduardo, a Brazilian that lives in Waterloo (since 1999), Diana, a local girl that studies at Mcgill university and Bernardo (I guess), a Mexican PhD student. It was pretty cool since there were not so many registration but we could register Dick Gabriel, Linda Rising and Martin Fowler. Dick took some very embarrasing photos of Mariana while she was eating our excelent vietnamese sandwich. I will have to ask for them later. :)&lt;br /&gt;We left after that with a couple of Mexican students from Monterey University (Juan and Ramiro) and other Brazilians (friends of Eduardo, also known as Dudu) and a polish PhD student from Waterloo called Mihau (don't know if this is correctly spelled). We went to a nice classical bar called Saint Sulpice which is in Rue Saint-Denis. That's an amazing thing about the city, all bars areas are close to the biggest unversity. Rue Saint-Denis is close to UQAM (Université de Québec À Montréal) and there are other streets filled with bars close to the McGill university and another close to Columbia.&lt;br /&gt;We left the bar around 23:30 and went to sleep just arriving at home. I'll continue for today later on. This is only for now but I'll update more later.&lt;br /&gt;&lt;br /&gt;Bye bye&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-5461958569189214435?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/5461958569189214435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=5461958569189214435' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5461958569189214435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5461958569189214435'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/10/from-montreal-after-first-workday.html' title='From Montreal after the first workday'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-3022573335377076929</id><published>2007-10-15T18:39:00.000-02:00</published><updated>2007-10-15T19:02:06.753-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oopsla'/><category scheme='http://www.blogger.com/atom/ns#' term='trips'/><title type='text'>Quick news before the trip</title><content type='html'>Some very few news before the trip:&lt;br /&gt;&lt;br /&gt;I will be arriving in Montreal the 19th, which means, 1 day before any activity from the OOPSLA. I'll be staying at a friend's house (which is great!) and the first two days I'll probably walk a lot around the city. I'll try to get some nice picture and upload them. From the 21th to the 25th, I'll be full time at the conference but I'll try to post (with the help of Mariana, my girlfriend) some reports about the conference, talks and chats we will have. This will only happen during the nights because we won't have any laptops in site.&lt;br /&gt;&lt;br /&gt;We leave Montreal on Saturday 27th by night by bus to NYC. We should get there by 7am or 8am of Sunday 28th. We'll enjoy the day walking around the city and then get to a friend of a friend's house where we will be staying for the news. Our only plans will be to visit the museums and walk a lot. I'll try to post some pictures too.&lt;br /&gt;&lt;br /&gt;If you have suggestions, please send them in.&lt;br /&gt;Write back soon (hopefully).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-3022573335377076929?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/3022573335377076929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=3022573335377076929' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/3022573335377076929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/3022573335377076929'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/10/quick-news-before-trip.html' title='Quick news before the trip'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-4615182199908191962</id><published>2007-10-10T14:45:00.000-03:00</published><updated>2007-10-10T15:08:37.082-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='oopsla'/><category scheme='http://www.blogger.com/atom/ns#' term='acm'/><category scheme='http://www.blogger.com/atom/ns#' term='blah'/><title type='text'>News after almost 2 months</title><content type='html'>Well,&lt;br /&gt;It is quite evident that I'm not a compulsive writter. Almost 2 months since my last post now but I've got some pretty good amount of news.&lt;br /&gt;&lt;br /&gt;First and sad news: The paper was reject by the ETX comittee. The following reasons were the principal ones that got it rejected:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It was not clear enough in the sense that the english writting was not very good.&lt;/li&gt;&lt;li&gt;The paper had to focus mainly on either the project history and then be a paper about a success case of using Eclipse's RCP or on the technical side. This last one should bring to discussions the main CAD architecutres and discuss the impact eRCP could have on it.&lt;/li&gt;&lt;li&gt;The last reviewer said that the project and the article were pretty good but it lacked an implementation to prove itself usefull. I don't know if I didn't understood the comments or if the reviewer really (REALLY) didn't understand what we wrote.&lt;/li&gt;&lt;/ul&gt;So, as they say, better luck next time right? We will work more to get it accepted for next year's OOPSLA.&lt;br /&gt;&lt;br /&gt;Other than that: Archimedes is currently almost completetly stalled. I haven't been finding time to code anything on the project with the master's work. It is sad to admit but I should only be able to refocus on the project in december or beginning of the next year. I surely hope next year I will have again another group of volunteers to work on the project on the XP course.&lt;br /&gt;&lt;br /&gt;More personal matters and things that might interest this blog's readers. I will attend (with Mariana) at the OOPSLA '07 anyway. We were accepted as student volunteers so we will spend our whole week (from the 20th to the 25th) helping the people from the organization to make this amazing conference. I cannot promise much but I can assure everyone that me and Mariana are going to do our best to post everything we can on this blog about the OOPSLA. Maybe we even broadcast a couple talks if we manage to (and are allowed to). Once we find out what will be the infrastructure there, we will try to keep you guys up to date.&lt;br /&gt;We leave São Paulo the 18th evening and reach Montreal the 19th morning. Works might start the 20th and we will stay in Montreal until the 27th (or 28th) depending on some details.&lt;br /&gt;&lt;br /&gt;Last, but not least, I've classified with my team (Jeferson R. da Silva and Marcio Oshiro) to participate in the brazilian's finals (&lt;a href="http://maratona.ime.usp.br/"&gt;http://maratona.ime.usp.br/&lt;/a&gt; in portuguese) for the ACM ICPC programming maraton contest (&lt;a href="http://icpc.baylor.edu/icpc/"&gt;http://icpc.baylor.edu/icpc/&lt;/a&gt;). So I will be in Belo Horizonte from the 9th november to the 11th. We surely hope to manage to be in the top 10 this year and we are training a lot for it (which is the reason why Archimedes lost my coding time).&lt;br /&gt;&lt;br /&gt;Well, that's about it. And remember, from the 20th to the 25th, stay tunned because news will be flowing quickly here. See you guys.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-4615182199908191962?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/4615182199908191962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=4615182199908191962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4615182199908191962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4615182199908191962'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/10/news-after-almost-2-months.html' title='News after almost 2 months'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-1881438622089297582</id><published>2007-08-13T14:32:00.000-03:00</published><updated>2007-08-14T23:14:13.054-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='etx'/><category scheme='http://www.blogger.com/atom/ns#' term='docs'/><category scheme='http://www.blogger.com/atom/ns#' term='hostfoss'/><title type='text'>The article at last!</title><content type='html'>Just to change a bit (and follow Danilo's advice), I've been really busy but  I've submitted the article at last.&lt;br /&gt;The last weekend has been quite insane. Sleeping around 2 or 3 hours per night and working the rest of them on this article for the &lt;a href="http://www.cs.mcgill.ca/%7Emartin/etx2007/"&gt;Eclipse Technology eXchange&lt;/a&gt; conference to take place at the &lt;a href="http://www.oopsla.org/oopsla2007/"&gt;OOPSLA 2007&lt;/a&gt;. The last result was not the best thing ever produced but I am quite happy about it.&lt;br /&gt;Even if it is not accepted, the parallel developed with IDEs and CADs looks promising. Even more since I've read this article (&lt;a href="http://sigchi.org/cdg/cdg2.html"&gt;http://sigchi.org/cdg/cdg2.html&lt;/a&gt;) where programming environments (IDEs) and CADs/CAMs are joined together in a design software category. Maybe with this kind of support, I can have stronger arguments further on to support my theory that CADs should have a platform to be built on, just like Eclipse is a platform to build IDEs.&lt;br /&gt;I'm sorry since revisions won't help to submit the article since it is gone already but I'm sure Mariana and Alfredo (my co-authors) would be glad if the article was improved only for its own good. For those interested, the article is published at &lt;a href="http://nightao.googlepages.com/ArchimedesETX.pdf"&gt;http://nightao.googlepages.com/ArchimedesETX.pdf&lt;/a&gt; and you can send me comments, critics and suggestions to my email, through here or any other way you can find.&lt;br /&gt;&lt;br /&gt;With the article madness I haven't been able to do anything else so today I've taken my agenda and solved a couple things. Messages about Archimedes at the sourceforge form have been answered at last, emails are almost all solved but I still have to read about 20 articles and hear some 10 podcasts besides the university works that still need to be done. So don't expect many updates here in the next few days.&lt;br /&gt;&lt;br /&gt;Changing of subject abruptly: this morning, while coming back from my run (to keep my not-so-round shape), I got this crazy idea. Since &lt;a href="http://www.ohloh.net/"&gt;Ohloh&lt;/a&gt; is being such a success, I was thinking about a trip network just like the &lt;a href="http://www.lions.org/"&gt;Lions club&lt;/a&gt; has but for FOSS developers to attend to FOSS conferences all over the world with reduced costs.&lt;br /&gt;The idea is that most FOSS developers really love what they do and would certain attend to every single event where they can meet their idols developers or just their friends. Problem is that this costs more than a lot can afford: plane tickets, hotels, meals, conference entrance, etc...&lt;br /&gt;On the other hand, when there is a FOSS event somewhere in the world, there ought to be more than a couple FOSS developers living in that place. Being so, some of them might be able to host a developer for the conference period. The campaign "Host a FOSS developer" can even be spreaded to FOSS friends or even FOSS grandmothers.&lt;br /&gt;In return of being hosted, the FOSS developer could repay the hosting with commits to some project the hoster points. This way both sides benefit and even get to understand each other's world a bit better. If I get to ellaborate this idea a bit better, I will try to contact Ohloh's guys and maybe organize this. I'm sure some well known developers would love to contribute to such an initiative.&lt;br /&gt;&lt;br /&gt;Just to finish this post, the &lt;a href="http://fisl.softwarelivre.org/8.0/www/?q=en/node/88"&gt;WSL&lt;/a&gt; article accepted at the &lt;a href="http://fisl.softwarelivre.org/8.0/www/?q=en"&gt;FISL 2007&lt;/a&gt; is already translated. I just need Mariana to revise it because my english is a real crap. As soon as it is decent, I will publish it somewhere and post the link here.&lt;br /&gt;&lt;br /&gt;Once I get more info to talk about, I will post again. Let's hope it's not too far from now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-1881438622089297582?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/1881438622089297582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=1881438622089297582' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1881438622089297582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1881438622089297582'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/08/article-at-last.html' title='The article at last!'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-361791056845597952</id><published>2007-07-30T17:27:00.000-03:00</published><updated>2007-07-30T18:38:43.574-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qualipso'/><category scheme='http://www.blogger.com/atom/ns#' term='coding dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='etx'/><category scheme='http://www.blogger.com/atom/ns#' term='agilcoop'/><title type='text'>Late as always</title><content type='html'>Well,&lt;br /&gt;As usual I am very late with everything. But this time, things are a bit more dangerous. I haven't finished the article about archimedes to submit to the Eclipse Technology eXchange (ETX). Worse than that, I am quite stuck with it. Can't write more than 1 paragraph per day currently. A big problem.&lt;br /&gt;&lt;br /&gt;Also, I stopped working on last thursday so I should be a bit more active and present from now on. Got a lot of things to do but still I will make an effort to keep this up to date.&lt;br /&gt;&lt;br /&gt;I have very few news at the moment about anything. Just a couple things that might interest people from around here:&lt;br /&gt;I've been going to a &lt;a href="http://codingdojo.org/"&gt;Coding Dojo&lt;/a&gt; that just started in São Paulo (&lt;a href="http://groups.google.com/group/dojo_sp"&gt;http://groups.google.com/group/dojo_sp&lt;/a&gt;). It is a very nice practice that aims to make programmer train their talent just like musicians and sportists do. Our meetings have been very nice and it is helping most of us to learn python and also to be more disciplined. We just changed our schedule to have meetings weekly on wednesday at 20:00 local time.&lt;br /&gt;&lt;br /&gt;Also, I just became a student sponsored by the &lt;a href="http://www.qualipso.org/"&gt;Qualipso project&lt;/a&gt;. I will be doing my masters on the lines of the project and, therefore, hope to finish my studies providing a nice set of practices based on agile methods to develop open source software. And, if possible, I hope I will participate in some nice open source development on the next couple years.&lt;br /&gt;&lt;br /&gt;Last, but not least, I just joined as a junior member a very nice group called &lt;a href="http://www.agilcoop.org.br"&gt;Agilcoop&lt;/a&gt;. The groups main purpose is to spread agile methods into the industry to improve the quality of software produced. Got a few nice tasks to do such as learning some Java FX (that's why I've been having codeaches with the eclipse plugin) and learning to write some classes. It promisses to give me work and fun.&lt;br /&gt;&lt;br /&gt;Well, I guess this is all I can get you guys now. I hope to write more often from now on but let's see right?&lt;br /&gt;&lt;br /&gt;Hugo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-361791056845597952?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/361791056845597952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=361791056845597952' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/361791056845597952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/361791056845597952'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/07/late-as-always.html' title='Late as always'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-4539123363121608812</id><published>2007-07-12T00:02:00.000-03:00</published><updated>2007-07-17T01:05:09.099-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='selection service'/><title type='text'>Selection service, archimedes and docs</title><content type='html'>Once again I am too late to keep my old pace. Anyway, the end of the semester is always very time consuming.&lt;br /&gt;&lt;br /&gt;Anyway, I would like to comment on a few things about RCP today.&lt;br /&gt;I learned a few stuff about it lately. First thing is that there is a very nice tutorial about it at &lt;a href="http://www.eclipse.org/articles/Article-WorkbenchSelections/article.html"&gt;http://www.eclipse.org/articles/Article-WorkbenchSelections/article.html&lt;/a&gt;. The other thing is that this selection service can be quite useful if you start working with it from scratch.&lt;br /&gt;&lt;br /&gt;Archimedes didn't, until now, had anything to do with that service and refactoring it to use the service will be another big work. With this, there are now 5 tasks that have top importance:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Remodel the intersection finder system&lt;/li&gt;&lt;li&gt;Re implement persistence support with XML/Arc, images, pdf and svg.&lt;/li&gt;&lt;li&gt;Refactor Archimedes to make it profit from RCP's selection service.&lt;/li&gt;&lt;li&gt;Adapt Archimedes and its plugins to be built with maven.&lt;/li&gt;&lt;li&gt;Improve Developer support and User support.&lt;/li&gt;&lt;/ol&gt;I listed those without a priority order but I am sure those are top level.&lt;br /&gt;&lt;br /&gt;I should be getting more time to write here and to code during the next semester since I am quitting my job to dedicate to my masters.&lt;br /&gt;&lt;br /&gt;The development speed, however, will probably not improve a lot since I am now almost on my own to code. I might get some help from one or two volunteers but it won't be enough to keep the pace from last semester.&lt;br /&gt;&lt;br /&gt;Apart from that, regarding documentation. I finished translating an article I wrote with Mariana last semester for the FISL. She needs to read it and correct all my numerous mistakes but the big boring part (translating) is done.&lt;br /&gt;In the same subject, we are preparing another article in English to present Archimedes at the &lt;a href="http://www.cs.mcgill.ca/%7Emartin/etx2007/"&gt;Eclipse Technology eXchange&lt;/a&gt; that will be held at the &lt;a href="http://www.oopsla.org/oopsla2007/"&gt;OOPSLA 2007&lt;/a&gt; in October at Montreal. Once we finished it, I will release it somewhere on the net and post the link. If I can, I will try to do it one week before the submission date so that I can hear critics.&lt;br /&gt;&lt;br /&gt;Basically that is it. I wish I would write here more often since I probably don't post all I could and would like to. But, hey, it's life right? So seen you soon (hopefully).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-4539123363121608812?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/4539123363121608812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=4539123363121608812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4539123363121608812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4539123363121608812'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/07/selection-service-archimedes-and-docs.html' title='Selection service, archimedes and docs'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-4622403457868303693</id><published>2007-06-25T20:37:00.000-03:00</published><updated>2007-06-25T21:14:06.085-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='toolbar'/><title type='text'>ToolBar paths and Archimedes news</title><content type='html'>The end of the semester is always a disaster. Tons of things to do and not enough time.&lt;br /&gt;For once I don't have tons of tests, the only hard work is to maintain the job, the work on Archimedes, the studies and the corrections going.&lt;br /&gt;&lt;br /&gt;Anyway, enough complaining.&lt;br /&gt;I got some news about Archimedes:&lt;br /&gt;This release is coming to an end but I am proud to say that most of the work that should have been done is complete. There are a few details missing but those are mostly related to difficulties we are finding with RCP.&lt;br /&gt;Both the import and the export feature that will become the save and open one are finished, all that is left to do is to integrate this with the platform so that the users can enjoy all the flexibility of Eclipse's wizards.&lt;br /&gt;&lt;br /&gt;Also, Mariana is now responsible for releasing updates for the old 0.17.x version and get our bug fixes and new features ported to that platform until the RCP one is not perfect. I wish her luck and hope to see a lot of report from you guys when she does.&lt;br /&gt;&lt;br /&gt;Most of the reported bugs have been correct so far and I even learned how to organize the action icons on the toolbar. This means that, from now on, Archimedes' toolbar will be a bit more organized than it was before.&lt;br /&gt;&lt;br /&gt;Since I found absolutely NO documentation about this, I wanted to write a little bit about how to make it work. It is quite simple but worth saying.&lt;br /&gt;&lt;br /&gt;Mainly, when you extend &lt;code&gt;org.eclipse.ui.actionSet&lt;/code&gt; and create an action, you can add two attributes: &lt;code&gt;menubarPath&lt;/code&gt; and &lt;code&gt;toolbarPath&lt;/code&gt;. The first one is quite decently documented so you can find several tutorial that will explain you that you should add some &lt;code&gt;MenuManagers&lt;/code&gt; in your &lt;code&gt;ApplicationActionBarAdvisor&lt;/code&gt; and then refer to the paths you set on those managers to decide where the actions should appear.&lt;br /&gt;&lt;br /&gt;Regarding the latter, you will find almost nothing. I've search a lot and very little is published to explain you one very tiny and simple thing: It works EXACTLY the same way. May sound stupid for me to say it like that but if you have no documentation or example, this may not be evident because when you create &lt;code&gt;ToolBarManagers&lt;/code&gt;, you cannot add slots within those to specify boxes where the actions should appear. However, you must pretend that you did. In most cases, this will mean that you will simply copy paste whatever you did on the &lt;code&gt;menubarPath&lt;/code&gt; to the  &lt;code&gt;toolbarPath&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;I am pasting a simplified version of the &lt;code&gt;fillMenuBar&lt;/code&gt; method and the &lt;code&gt;fillCoolBar&lt;/code&gt; one as well as a couple of plugins that add actions to those slots.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;protected void fillCoolBar (ICoolBarManager coolBar) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;IToolBarManager fileBar = new ToolBarManager(coolBar.getStyle());&lt;br /&gt;&amp;nbsp;&amp;nbsp;coolBar.add(new ToolBarContributionItem(fileBar, "file"));&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;protected void fillMenuBar (IMenuManager menuBar) {       &lt;br /&gt;&amp;nbsp;&amp;nbsp;MenuManager fileMng = new MenuManager("File", "file");&lt;br /&gt;&amp;nbsp;&amp;nbsp;fileMng.add(new GroupMarker("start"));&lt;br /&gt;&amp;nbsp;&amp;nbsp;fileMng.add(new Separator());&lt;br /&gt;&amp;nbsp;&amp;nbsp;fileMng.add(new GroupMarker("end"));&lt;br /&gt;&amp;nbsp;&amp;nbsp;menuBar.add(fileMng);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;With those method set up, you can add plugins (or just your RCP application xml descriptor) that use those paths:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;actionSet description="The action set containing some file actions."&lt;br /&gt;&amp;nbsp;&amp;nbsp;id="br.org.archimedes.example.actionSet" label="File Action Set"&lt;br /&gt;&amp;nbsp;&amp;nbsp;visible="true"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;action icon="icons/my_icon.png" style="push"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;id="br.org.archimedes.example.action"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;label="My Action" tooltip="An example action"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;menubarPath="file/end"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class="br.org.archimedes.example.MyAction"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;toolbarPath="file/end"/&amp;gt;&lt;br /&gt;&amp;lt;/actionset&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you just add a couple more of those plugins, you will see that all the actions will be grouped both on the menu and on the toolbar.&lt;br /&gt;&lt;br /&gt;And that's about it for now. Have fun guys.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-4622403457868303693?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/4622403457868303693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=4622403457868303693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4622403457868303693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4622403457868303693'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/06/toolbar-paths-and-archimedes-news.html' title='ToolBar paths and Archimedes news'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-3499128939277136554</id><published>2007-06-07T21:24:00.000-03:00</published><updated>2007-06-07T21:42:19.875-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='extensions'/><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='talks'/><category scheme='http://www.blogger.com/atom/ns#' term='blah'/><title type='text'>A tutorial for programmer</title><content type='html'>I think I will just have to admit that no mather how often I hope to publish news on this blog, I will always be late. But the fact is, running late is the only thing that pushes me to write here so I will keep trying to keep a reasonable pace and I will keep complaining about being late. I hope you guys don't mind.&lt;br /&gt;&lt;br /&gt;As for now, I have some news although not many. Archimedes is quite stuck this week since today (thursday) is a holiday and it was half of our programming time. The other half was monday and we didn't used it to program for once. It was burned down making up a talk and a demonstration about how to develop plugins for Archimedes.&lt;br /&gt;I've tried to keep all the documents in english so I could share them later on the internet but I still have a big work to do: the screencast.&lt;br /&gt;The talk was composed of three parts, two of which I made and the first one was made by an Archimedes collaborator (Julien Renaut). It is mostly focused on programming problems and how people can add features to Archimedes. His talk was about extensions and extension points which are some concepts used by eRCP to allow plugins to add functionality to the main software. His work was done in Portuguese but I will translate it and insert it into the main talk I will upload.&lt;br /&gt;The second part was my talk which was a lot more about Archimedes and how our main structure works. It tries to let people understand the flow of information within the software. It has a couple of "UML" (those are not really UML but kind of) figures and a nice review about Archimedes' main classes. I need to add the notes on this talk so that people can look at the talk and understand what I was trying to talk about.&lt;br /&gt;The third and last part was a small example of how to create a plugin project that would add a new element to the software. This is quite a long work and I want to have a screencast of that with my voice explaining what is going on. So it will probably take me some time (maybe a month) to have it all working fine.&lt;br /&gt;&lt;br /&gt;Also, there is a volunteer architect building up a user guide much better than anything we could ever produce. It is currently ongoing and is in Portuguese but as soon as it is finished, I will ask for help on translating this to several languages.&lt;br /&gt;&lt;br /&gt;Speaking of languages, I am getting desperate to have Archimedes' build system working with maven 2 has said before. This would allow me to have a src.zip deploy once more as well as a nice translation zip file to have people translating the software more frequently and easily.&lt;br /&gt;&lt;br /&gt;So that's what I've been doing. I've also been working hard to try to solve the problems from the uva gadget but I've been failing a lot which is not really keeping my moral up. :( Also, my desktop seems to have died on me. This doesn't means many loses at the moment but makes me quite upset and will probably take me some precious time to fix. Until then I might just not have anything to test Archimedes on Windows or Linux so I hope you guys keep sending us reports.&lt;br /&gt;&lt;br /&gt;That's it. Bye bye!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-3499128939277136554?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/3499128939277136554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=3499128939277136554' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/3499128939277136554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/3499128939277136554'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/06/tutorial-for-programmer.html' title='A tutorial for programmer'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-8585531967069232019</id><published>2007-05-29T21:19:00.000-03:00</published><updated>2007-05-29T21:37:05.024-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='uva'/><category scheme='http://www.blogger.com/atom/ns#' term='google gadgets'/><category scheme='http://www.blogger.com/atom/ns#' term='blah'/><title type='text'>A new release for Archimedes</title><content type='html'>Hello,&lt;br /&gt;I'm amost late AGAIN. At least this proves me something: I surely prefer tons of things before writing down to this blog. Sad but true, I'm not a writter, I'm a programmer.&lt;br /&gt;Anyway, yesterday I've released the latest version of Archimedes concentrating several features I've been talking about such as Text, dimension, layers, etc...&lt;br /&gt;We already found about 6 or 7 bugs during our demonstration to the architects that help us but this is only a proof that we should release unstable versions and have more people testing it. I hope make this possible by using maven to control Archimedes build and tests as well as the deploy system. Don't know for sure when this is going to happen but I will work on it in July.&lt;br /&gt;I've tried to test the install system and the zip files on all three platforms and I believe everything is working fine but PLEASE tell me if something goes wrong.&lt;br /&gt;&lt;br /&gt;Changing the subject, I've found out today how to write &lt;a href="http://www.google.com/apis/gadgets/index.html"&gt;google gadgets&lt;/a&gt; and how fun this can be. I felt the need to find a gadget that would show me a &lt;a href="http://acm.uva.es"&gt;UVa problem&lt;/a&gt; from the &lt;a href="http://icpc.baylor.edu/icpc/"&gt;ACM contest&lt;/a&gt; each day so I could train a bit more since I wish to show a better performance on the local contest here in São Paulo this year. Looking up on their search system gave me nothing so I decided I could write my create my own gadget since Google has been asking people to do so since they renamed the personalized home to iGoogle. Checking out that feature I discovered it is only a very limited gadget factory aimed to non programmers but there I found the link I added at the begining of the paragraph.&lt;br /&gt;&lt;br /&gt;I understood how the system worked (quite simple, it is just xml parsed into HTML code with javascript) and wrote my own gadget. I used google's users page to upload my gadget and there you go: &lt;a href="http://nightao.googlepages.com/uvaGadget.xml"&gt;http://nightao.googlepages.com/uvaGadget.xml&lt;/a&gt;. I still wish to add tons of features such as a user id preference that would make the gadget load only problems you haven't solved. Maybe parse the site to create 3 tabs with description, input, output and maybe another one to submit a solution. I got tons of ideas and with Javascript, almost anything can be done (although it is very hard to design and debug it). For those of you who use google's personalized home, I do suggest you take a look on how to build your own gadget because I can bet there are gadget you would like to have that does not exists.&lt;br /&gt;&lt;br /&gt;That's it for now,&lt;br /&gt;Bye bye&lt;br /&gt;&lt;a href="http://www.google.com/apis/gadgets/index.html"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-8585531967069232019?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/8585531967069232019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=8585531967069232019' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8585531967069232019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8585531967069232019'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/05/new-release-for-archimedes.html' title='A new release for Archimedes'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-539432614899713962</id><published>2007-05-22T09:11:00.000-03:00</published><updated>2007-05-22T09:31:14.953-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redhat'/><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='fonts'/><category scheme='http://www.blogger.com/atom/ns#' term='blah'/><title type='text'>Last week of release</title><content type='html'>Ok! I AM late!&lt;br /&gt;I admit it. But at least I remembered.&lt;br /&gt;Anyways...&lt;br /&gt;Haven't got tons of news. We are entering the last week of iteration and basically this will be devoted to improve the software in a programmer point of view. This means we won't be adding features. The work planned is to improve the software's tests (that are kind of messy since the migration) and maybe focus on a better build system using maven2. I should release the version 0.52.0 late on Sunday or maybe early on Monday.&lt;br /&gt;I could already give some insights. The first one is that we will be using the recently published &lt;a href="https://www.redhat.com/promo/fonts/"&gt;truetype fonts from RedHat&lt;/a&gt; since they are compatible with the Windows core fonts and are GPL compatible. Those will be distributed with Archimedes to ensure full compatibility across platforms. I would like to thank gtroza for this tip.&lt;br /&gt;The other one is not so good. We will not be delivering any persistence system yet. The old xml persistence system that existed previously is not yet ported to this new architecture because we are figuring a way to make it flexible enough to fit all our requirements. The PDF export is not ready either... Those will probably be the highest priority in the next release so it should be done in a month.&lt;br /&gt;Mainly that is it about Archimedes. The rest I have talked about on the last few weeks.&lt;br /&gt;I will probably not post any other news for the rest of the week since I will focus on having the release decently ready and tested not to have as many problems as last time. Again, no screenshot since you will be able to see the news by yourselves!&lt;br /&gt;&lt;br /&gt;Bye Bye!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-539432614899713962?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/539432614899713962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=539432614899713962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/539432614899713962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/539432614899713962'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/05/last-week-of-release.html' title='Last week of release'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-4565848208059096027</id><published>2007-05-14T22:09:00.000-03:00</published><updated>2007-05-14T22:37:30.822-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='blah'/><title type='text'>Almost one week later</title><content type='html'>Ups... I almost failed again to keep this blog up to date.&lt;br /&gt;But recovered "on time". So, what are the news I have to share?&lt;br /&gt;&lt;br /&gt;Well, mainly Archimedes news:&lt;br /&gt;We are deciding if we launch the release this week end or the next one. This choice is mainly related to the free time people have to make this happen. The features that we had to develop according to the road map are not ready but a nice bunch is ok.&lt;br /&gt;&lt;br /&gt;Just to be a bit more precise:&lt;br /&gt;- The text feature is complete with an Arial font that is being packed with Archimedes. I still have to find out what are the legal issues about that and if I am allowed to distribute this. Otherwise we will have to find a cross-platform TrueType Font open-source or discover how the ones from OpenOffice are used. If anyone has any answer to those questions, please warn me.&lt;br /&gt;- The layers are working again with the combo box and the layer editor window (with a lot of update bugs fixed).&lt;br /&gt;- The Rectangle feature is back.&lt;br /&gt;- The behaviour of the Orto system when you snap to Grid point has been "corrected". Which means that gripping has priority over orto.&lt;br /&gt;- The Pan feature is back (although its shortcut through middle click isn't).&lt;br /&gt;- Moving (or streching) by clicking on the snap points should be ready with a small amout of work.&lt;br /&gt;- Dimensions are walking slowly but surely.&lt;br /&gt;- The mouse cursor now changes when on a command. There is a big cross when waiting for a command and the small rectangle when you are on a command.&lt;br /&gt;- The snap points are now dark red (just like the icons showed) and if you grip to any with the mouse, it will light up to yellow so that it is clear that you snapped.&lt;br /&gt;- The infinite line is almost back. I'm just having a minor problem to render it correctly (meaning infinitely) but it should be solved quickly.&lt;br /&gt;&lt;br /&gt;Features that we should have done and will probably be late:&lt;br /&gt;- Zoom command&lt;br /&gt;- Export to PDF&lt;br /&gt;- Open/Save XML(.arc)&lt;br /&gt;&lt;br /&gt;There are also several things we would like to improve in the programmer side. I can quote the build process that could be much better with Maven2, the deploy process that could be much better with continuum (or Cruise control), the test coverage of what we have done so far and a few other things.&lt;br /&gt;&lt;br /&gt;I will probably focus on the simpler things now which are to finish the features that are almost done and, if I have some time, import the Zoom command from the last version.&lt;br /&gt;&lt;br /&gt;I guess that's it. No screenshot this time... I'll let you guys holding your breath for the next release. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-4565848208059096027?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/4565848208059096027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=4565848208059096027' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4565848208059096027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/4565848208059096027'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/05/almost-one-week-later.html' title='Almost one week later'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-5986221068072345249</id><published>2007-05-08T10:00:00.000-03:00</published><updated>2007-05-08T10:11:08.903-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='swt'/><category scheme='http://www.blogger.com/atom/ns#' term='combo'/><title type='text'>Combos as Contribution Itens on rcp</title><content type='html'>Okay! Maintaining the post rate for more then 1 day. My current record so far.&lt;br /&gt;This time I will focus on a problem I had last week while implementing Archimedes' layer combo. Using combos in SWT is quite simple, you just create it linking it to its parent and add the texts. In an RCP application things are a bit more complicated since the widgets are positioned in the parent composite only when needed. This basically means that the ContributionItem abstraction is a closure to insert those widgets when needed.&lt;br /&gt;&lt;br /&gt;I've implemented about 3 or 4 times this class because I had several problems and couldn't understand why since I got no exception message and the widget just wasn't being shown. I created this implementation thanks to an example posted in this mailing list (&lt;a href="http://http://dev.eclipse.org/newslists/news.eclipse.platform.rcp/msg00952.html"&gt;&lt;span style="font-size:85%;"&gt;http://dev.eclipse.org/newslists/news.eclipse.platform.rcp/msg00952.html&lt;/span&gt;&lt;/a&gt;) by Jean-Michel Lemieux (author of &lt;span class="sans"&gt;"&lt;span style="font-style: italic;"&gt;Eclipse Rich Client Platform: Designing, Coding, And Packaging Java Applications&lt;/span&gt;", one of the best books about eRCP I found). You can find a more complete implementation of this in Archimedes (&lt;span style="font-family:courier new;font-size:85%;"&gt;br.org.archimedes.gui.rca.LayerComboContributionItem&lt;/span&gt;) but here goes a simplified version.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public class ComboContributionItem extends ContributionItem implements&lt;br /&gt;&amp;nbsp;&amp;nbsp;IContributionItem {&lt;br /&gt;&amp;nbsp;&amp;nbsp;private Combo layersCombo;&lt;br /&gt;&amp;nbsp;&amp;nbsp;private CoolItem coolItem;&lt;br /&gt;&amp;nbsp;&amp;nbsp;private List&lt;string&gt; texts;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public ComboContributionItem(List&lt;string&gt; texts) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.texts = texts;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;public void fill (ToolBar parent, int index) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ToolItem item = new ToolItem(parent, SWT.SEPARATOR);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Control box = createLayersCombo(parent);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;item.setControl(box);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;item.setWidth(500);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;public void fill (CoolBar coolBar, int index) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Control box = createLayersCombo(coolBar);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int flags = SWT.DROP_DOWN;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (index &gt;= 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;coolItem = new CoolItem(coolBar, flags, index);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;coolItem = new CoolItem(coolBar, flags);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;coolItem.setData(this);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;coolItem.setControl(box);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Point toolBarSize = box.computeSize(SWT.DEFAULT, SWT.DEFAULT);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;coolItem.setMinimumSize(toolBarSize);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;coolItem.setPreferredSize(toolBarSize);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;coolItem.setSize(toolBarSize);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;private Control createLayersCombo (Composite parent) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Composite top = new Composite(parent, SWT.NONE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GridLayout layout = new GridLayout();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layout.marginHeight = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layout.marginWidth = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layout.verticalSpacing = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layout.horizontalSpacing = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layout.numColumns = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;top.setLayout(layout);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layersCombo = new Combo(top, SWT.READ_ONLY);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (String text : texts) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layersCombo.add(text);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layersCombo.setLayoutData(new GridData(GridData.FILL,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GridData.BEGINNING, true, false));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return top;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;public void fill (Composite parent) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;createLayersCombo(parent);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;public void setText (String text) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (layersCombo != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layersCombo.setText(text);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I've cut the package and imports info but this should not be hard to add. I suggest you just copy this code and alter it to match your needs slowly so you see the result. If you have any problem with this code or need help because things are not rendering, please contact me.&lt;br /&gt;&lt;br /&gt;With some minor changes on this code, I managed to enable the layer combo once again. Which means Archimedes is now back with Layers. The layer editor is still a bit buggy since the last refactoring but it should be solved very soon. I hope I have some nice screenshots by the week end with everything solved out.&lt;br /&gt;&lt;br /&gt;See you later guys.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-5986221068072345249?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/5986221068072345249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=5986221068072345249' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5986221068072345249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5986221068072345249'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/05/combos-as-contribution-itens-on-rcp.html' title='Combos as Contribution Itens on rcp'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-7975957647652607279</id><published>2007-05-07T10:48:00.000-03:00</published><updated>2007-05-08T10:02:30.273-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='truetype'/><category scheme='http://www.blogger.com/atom/ns#' term='batik'/><title type='text'>Archimedes on going &amp; TrueType fonts</title><content type='html'>Keeping the speed is now critical. I am trying to make it a habit to write down every problem or achievement I have here so that people can benefit from those and I can get used to post more frequently on this blog.&lt;br /&gt;&lt;br /&gt;Last week end I worked a lot on Archimedes to have the text problem solved. Mainly the thing is Archimedes needed to have a text feature so that users could write things on the drawing and the dimension feature could write the dimensions too. Last time we solved this problem, we had no idea about how to draw fonts on OpenGL and therefore the team chose to implement its own font system and fonts. This was heavily critized by the clients and users and by the developers too. So this time, we decided to implement it right. This means that we focused on reading existing fonts and what our clients asked was Arial which is a TrueType font. So we tried to learn how to parse ttf files and then find out how to render those.&lt;br /&gt;&lt;br /&gt;After some research on the internet about java ttf parsers we found an interesting Apache project called Batik. This project focuses on SVG support to a lot of things and, especially, having truetype fonts ported in svg paths. Thanks to the Apache Software license (thanks free and open source movements) we were allowed to read the source code, modify it and use it in Archimedes. So after a couple hours studying the code, we grabbed the packages that were in our interest and brought them into an RCP plugin and used them in Archimedes.&lt;br /&gt;&lt;br /&gt;Now a few comments about truetype fonts. The &lt;span style="font-family:courier new;"&gt;Font&lt;/span&gt; class in batik that encapsulates a TTF font is mainly formed of 10 or 15 tables that contain infos about the glyph (characters), platform and several other details I don't understand decently. What we needed to use the font was just the cmapTable and the cmapFormats. Those classes contained mapping between several encodings to the glyph number in the font. Also each point of the glyph contains information about whether it is a normal point or an "endContour" point which means it is the last point of a circle and should be connected to the first point non "endContour" found. We also learned (although we didn't implement it) that interpolation between those points should be done with a bezier curve of second degree but this having this on Archimedes is probably an overkill at the moment.&lt;br /&gt;&lt;br /&gt;Dropping a bit the technological part (all the code can be found in the &lt;span style="font-family:courier new;"&gt;br.org.archimedes.batik&lt;/span&gt; package and &lt;span style="font-family:courier new;"&gt;br.org.archimedes.gui.opengl.OpenGlWrapper&lt;/span&gt; class), all this information means that the software is now loading a truetype font and rendering it with OpenGL. There are still a few problems to fix like mapping weird characters and having this working perfectly on all platforms but all the rest is working fine. And here is a small screenshot just to prove I'm not lying:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PNRF4z85-Po/Rj6PyO8MGEI/AAAAAAAAAAk/pWa9q3FXGUY/s1600-h/Imagem1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_PNRF4z85-Po/Rj6PyO8MGEI/AAAAAAAAAAk/pWa9q3FXGUY/s400/Imagem1.png" alt="" id="BLOGGER_PHOTO_ID_5061641124377794626" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-7975957647652607279?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/7975957647652607279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=7975957647652607279' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/7975957647652607279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/7975957647652607279'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/05/archimedes-on-going-truetype-fonts.html' title='Archimedes on going &amp; TrueType fonts'/><author><name>Hugo "NighT" Corbucci</name><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://1.bp.blogspot.com/_PNRF4z85-Po/Rj6PyO8MGEI/AAAAAAAAAAk/pWa9q3FXGUY/s72-c/Imagem1.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-5326744941323590084</id><published>2007-05-06T19:48:00.000-03:00</published><updated>2007-05-06T21:29:43.166-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='fonts'/><category scheme='http://www.blogger.com/atom/ns#' term='blah'/><title type='text'>Loading files with RCP</title><content type='html'>Keeping my efforts to post about interesting things instead of just complaining most of the time like I use to do, today, I will write about how discover the file path of certain files from within an RCP application.&lt;br /&gt;&lt;br /&gt;First of all, the problem of loading a file in that situation must be explained. It sounds a bit stupid to explain something if it seams there is no problem to solve, right?&lt;br /&gt;So, loading a file when you are coding an RCP plug-in is a problem because you can never know where your application will be relatively to the plug-in. You could hack some way out of this by assuming some things about your platform since eRCP, by default, generates always the same structure. But the fact is that this could be broken by just a few minor changes on your platform. So if we want to solve the problem correctly, we have to rely on the main application to load things correctly since it knows exactly where it is and where the plugin is.&lt;br /&gt;&lt;br /&gt;Now that the problem should be clear, let's understand what is eRCP solution to it. The first simple solution presented is implemented in the default &lt;span style="font-family:courier new;"&gt;Activator&lt;/span&gt; class eclipse generates for each plugin if required. This class contains a static method &lt;span style="font-family:courier new;"&gt;findImageDescriptor&lt;/span&gt; that loads an image with a relative path. This is very useful since most plug-ins have some kind of image that they wish to load (icons, images, etc...) but it obviously does not solve the problem of loading any file. This operation is a bit trickier because it is pretty well decoupled so that people can load things at the level they desire.&lt;br /&gt;&lt;br /&gt;Before version 3.2, eclipse (and eRCP in general) suggested to use the method "find" implemented in the &lt;span style="font-family:courier new;"&gt;Activator&lt;/span&gt; class reachable from &lt;span style="font-family:courier new;"&gt;Activator.getDefault()&lt;/span&gt;. Since version 3.2, this has changed and that old method is now deprecated. I don't know the reason for sure but I would guess that they found out that the &lt;span style="font-family:courier new;"&gt;Activator&lt;/span&gt; class shouldn't contain knowledge about how to load a file. The fact is that the static class &lt;span style="font-family:courier new;"&gt;FileLocator&lt;/span&gt; was created to encapsulate that knowledge.&lt;br /&gt;&lt;br /&gt;Now that class is quite simple to use and it is probably not a problem to find out how to use the &lt;span style="font-family:courier new;"&gt;FileLocator.find(Bundle, IPath, Map)&lt;/span&gt; method. Most of the time, you will get the bundle from you &lt;span style="font-family:courier new;"&gt;Activator&lt;/span&gt; class (&lt;span style="font-family:courier new;"&gt;getDefault().getBundle()&lt;/span&gt;) and the Map will be empty because you probably want to load a file that has no dynamic info (otherwise, check the javadoc to know how to use it). Most commons uses of this method will just instantiate a new &lt;span style="font-family:courier new;"&gt;Path&lt;/span&gt; with a &lt;span style="font-family:courier new;"&gt;String&lt;/span&gt; argument that is the path to the file relative to the plug-in's root folder. This will return you an &lt;span style="font-family:courier new;"&gt;URL&lt;/span&gt; instance containing the info about your bundle and the file's path. If you check it, you will notice it is not a normal path but something like "&lt;span style="font-family:courier new;"&gt;bundleentry://bundle_number/path_to_your_file&lt;/span&gt;". As you can guess, there is no way you can use that to instantiate a &lt;span style="font-family:courier new;"&gt;File&lt;/span&gt; or a &lt;span style="font-family:courier new;"&gt;FileInputStream&lt;/span&gt; to read it.&lt;br /&gt;&lt;br /&gt;And that is the hard part: You will find two static methods in FileLocator that can help you:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;FileLocator.resolve(URL)&lt;/span&gt;&lt;br /&gt;and&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;FileLocator.toFileUrl(URL)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;In most of the cases, both method will return the same correct path. But what is the difference about them? &lt;span style="color: rgb(255, 0, 0);"&gt;I am not sure so please do not take this info for the truth before looking for more information&lt;/span&gt;. From my viewpoint, the difference regards only the path you will get at the end. The first method will return URL with http, ftp, jar, etc.. protocols while the second one will only return file protocols which is, in most cases, what you desire. Having tried to explain all this, here is the code  you will get to load a file from your RCP plug-in:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Bundle bundle = Activator.getDefault().getBundle();&lt;br /&gt;Path path = new Path("path/to/your/file.extension"); //$NON-NLS-1$&lt;br /&gt;URL url = FileLocator.find(bundle, path, Collections.EMPTY_MAP);&lt;br /&gt;URL fileUrl = null;&lt;br /&gt;try {&lt;br /&gt;fileUrl = FileLocator.toFileURL(url);&lt;br /&gt;}&lt;br /&gt;catch (IOException e) {&lt;br /&gt;// Will happen if the file cannot be read for some reason&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;File file = new File(fileUrl.getPath());&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I hope this helped you guys and please feel free to ask any question if I wasn't clear on something. See you guys later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-5326744941323590084?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/5326744941323590084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=5326744941323590084' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5326744941323590084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/5326744941323590084'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/05/loading-files-with-rcp.html' title='Loading files with RCP'/><author><name>Hugo "NighT" Corbucci</name><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>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-6139731912383109168</id><published>2007-05-02T20:11:00.000-03:00</published><updated>2007-05-03T08:50:33.850-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='blah'/><title type='text'>More errors &amp; Archimedes screenshots</title><content type='html'>Well,&lt;br /&gt;People always say we should do things while rested and without rush. Otherwise we will screw everything and make it all go wrong all the time. I never really listen to those advices although I really believe they are 100% correct. That is a BIG mistake!&lt;br /&gt;&lt;br /&gt;This BIG mistake made me screw out two Archimedes' releases in a row. 0.50.0 was a crap because the zip files were trash and the linux (and windows) installers and zips did NOT contained the OpenGL plugin required to be able to see any drawing. The next day I was there, tired again, trying to fix all the problems and, as it should be, I fixed a couple of them but never even realized that my regular expression to match the openGL plugin was NOT matching with the windows plugin. Just to have a last cherry on the cake, I found out later on (at work) that for some mysterious reason, the linux opengl plugin was generating a nice and friendly crash regarding something on the native library. So great!&lt;br /&gt;&lt;br /&gt;This means I will release later on today yet another version of Archimedes with not 1 more feature just trying to have the bloody files to work! While I don't complete this work, I will attend to a request from a greek reader to post some Archimedes's screenshots. I took those using the deploy generated by pde for that next version. Let's hope my script will not screw everything up once again! If it does, I will be forced to stop all development and have Archimedes' core and all the plugins compiled and tested by maven2. This should solve my problems at least for some time.&lt;br /&gt;&lt;br /&gt;The first screenshot is a clean view of a drawing on MacOS X (from my development laptop):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PNRF4z85-Po/RjktKu8MGDI/AAAAAAAAAAc/gYMRpq3PlHc/s1600-h/Imagem2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_PNRF4z85-Po/RjktKu8MGDI/AAAAAAAAAAc/gYMRpq3PlHc/s400/Imagem2.png" alt="" id="BLOGGER_PHOTO_ID_5060125318749886514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The second screenshot is a view of Archimedes with a nice very simple drawing during an arc creation on Ubuntu (GNU/Linux):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PNRF4z85-Po/RjkhnO8MGBI/AAAAAAAAAAM/owtRn_Azokc/s1600-h/Archimedes_ubuntu.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_PNRF4z85-Po/RjkhnO8MGBI/AAAAAAAAAAM/owtRn_Azokc/s400/Archimedes_ubuntu.png" alt="" id="BLOGGER_PHOTO_ID_5060112614236624914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The last one is the layer editor view of Archimedes on Windows:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PNRF4z85-Po/Rjkr2-8MGCI/AAAAAAAAAAU/YmRVMQpRnH0/s1600-h/Archimedes_win.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_PNRF4z85-Po/Rjkr2-8MGCI/AAAAAAAAAAU/YmRVMQpRnH0/s400/Archimedes_win.png" alt="" id="BLOGGER_PHOTO_ID_5060123879935842338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;We will probably have nicer and better screenshots after the next release (in about 3 weeks) and I will update the ones at sourceforge and those ones then. For now, this is all. I will be back as soon as possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-6139731912383109168?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/6139731912383109168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=6139731912383109168' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/6139731912383109168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/6139731912383109168'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/05/more-errors-archimedes-screenshots.html' title='More errors &amp; Archimedes screenshots'/><author><name>Hugo "NighT" Corbucci</name><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://2.bp.blogspot.com/_PNRF4z85-Po/RjktKu8MGDI/AAAAAAAAAAc/gYMRpq3PlHc/s72-c/Imagem2.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-2917231298271039380</id><published>2007-05-02T20:10:00.000-03:00</published><updated>2007-05-02T20:10:48.796-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='blah'/><title type='text'>Script errors &amp; eRCP shortcuts</title><content type='html'>Well,&lt;br /&gt;Let's see the good part of things: I'm posting a lot more on this blog (if that is somehow good). But as I started announcing good parts, it is quite obvious I did something wrong. Well, I screwed the script that generates Archimedes's installers. The result was that the generated zip file was all messed up with the path. Also, the installers were not adding most of the plugins with operations because I forgot to add the entries into the core. So I decided to add a package with those. I should probably enhance that system though. Too bad I won't do it so soon.&lt;br /&gt;&lt;br /&gt;Anyway, back to what is important. Retaking that old series I promised about Eclipse Rich Client Platform. I'm going to talk a bit about the new shortcut system on eRCP. I thought this might be usefull because Archimedes' developers will have to do this a lot and a friend of mine was asking me about this and couldn't find anything around.&lt;br /&gt;&lt;br /&gt;First thing people will notice when having to handle with shortcuts in eRCP is that all action has a wonderful "accelerator" field which seams to make this help useless. Unfortunatly, if you use that accelerator you friendly get a warning message and once you take a look at it, you'll find out that it is deprecated. Well, as you all should know, deprecated means that you can use it... for now! You have absolutely no guarantee that in a couple weeks it will still be there. Therefore we should try not to create new features with things that might disapear in a couple weeks. So we agree that we should find another solution to it. Great!&lt;br /&gt;&lt;br /&gt;Make some research you find out that there is a new way to do accelerators that is much more flexible and powerful. The only problem is you hardly find any example or tip anywhere. After having suffered a lot to find how it should be done, I reached this not so simple way but indeed much more flexible and powerful. Here is an example from Archimedes:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;  &amp;lt;extension&lt;br /&gt;    point="org.eclipse.ui.commands"&amp;gt;&lt;br /&gt;    &amp;lt;command&lt;br /&gt;      defaultHandler="br.org.archimedes.orto.OrtoHandler"&lt;br /&gt;      id="br.org.archimedes.orto.command"&lt;br /&gt;      name="orto"/&amp;gt;&lt;br /&gt;  &amp;lt;/extension&amp;gt;&lt;br /&gt;  &amp;lt;extension&lt;br /&gt;    point="org.eclipse.ui.bindings"&amp;gt;&lt;br /&gt;    &amp;lt;key&lt;br /&gt;      commandId="br.org.archimedes.orto.command"&lt;br /&gt;      schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"&lt;br /&gt;      sequence="F8"/&amp;gt;&lt;br /&gt;  &amp;lt;/extension&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;What this xml does?&lt;br /&gt;Basically defines two new extensions: commands and bindings.&lt;br /&gt;The idea is that each command can have several bindings or diferent bindings for diferent languages or platforms, etc...&lt;br /&gt;&lt;br /&gt;Why do you need those?&lt;br /&gt;&lt;br /&gt;What you really want is the binding extension which defines a binding between a command and a key sequence. Of course, you need a command in order to have this binding. That's why you need the command. Now, if you pay attention I had to create a new class (&lt;code&gt;OrtoHandler&lt;/code&gt;) to deal with the key match event. This class has to implement IHandler interface that is a publisher that allows subscribers to listen to that event and informs whether it is able to run or not and has a run method. In most cases, this will replace or be the same class you used in your Action.&lt;br /&gt;&lt;br /&gt;There you go. Now it is easy to define accelerators for your eRCP applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-2917231298271039380?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/2917231298271039380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=2917231298271039380' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/2917231298271039380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/2917231298271039380'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/05/script-errors-ercp-shortcuts.html' title='Script errors &amp; eRCP shortcuts'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-1365715225888702375</id><published>2007-04-29T23:11:00.000-03:00</published><updated>2007-04-29T23:34:28.897-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='astlinux'/><category scheme='http://www.blogger.com/atom/ns#' term='voip'/><category scheme='http://www.blogger.com/atom/ns#' term='asterisk'/><category scheme='http://www.blogger.com/atom/ns#' term='blah'/><title type='text'>VoIP wonders</title><content type='html'>The last couple month have been very happy months.&lt;br /&gt;I got my beloved macbook pro and got a wonderful gift from Kristian Kielhofner (founder of &lt;a href="http://www.astlinux.org/"&gt;astlinux&lt;/a&gt; distribution): a small thin client (a.k.a the box) and a small phone/ethernet converter box (a.k.a the black box).&lt;br /&gt;Now, those small boxes are just great. During the &lt;a href="http://fisl.softwarelivre.org/8.0/www/"&gt;fisl 8.0&lt;/a&gt;, Kris gave me a not-so-short class about &lt;a href="http://www.asterisk.org/"&gt;asterisk&lt;/a&gt; and how to work on those two boxes. Since I've been so busy, I had not had the time to have fun with them but this weekend I decided to make them work.&lt;br /&gt;It took me no longer then 3 hours to have the box plugged to the cable modem, the wireless router plugged to the box working as a hub and both the black box and my desktop plugged to the router. Meaning that my whole network was running behind the box.&lt;br /&gt;So far, nothing great about this right?&lt;br /&gt;The great part starts now. With some help from Kris, I logged on the box and set it up to recognize the laptop's softphone, the desktop's one, my mom's laptop's phone and my home phone. Meaning that I can now, make or transfer calls from any of those to any of those. Sounds useless at home I agree. But just think about what this can do if you have a small/medium business and can't afford a PBX company (since those are REALLY expensive). You could have your whole internal communication running over your ethernet network. Let's agree on a couple things here: less cables == less pain/troubles. And the best part, this can work if you are not all the time at your office. As long as you have an internet connection, you can receive your incoming calls and people will never know you are not there. This really owns!&lt;br /&gt;Following those ideas, thing about how much it would cost you to call someone in another country. The answer is simple, the local phone call from an asterisk server in that country to the phone you are calling. This is exactly what I paid to chat with Kris for about 20 minutes this afternoon as a test for the system. Except maybe that I paid nothing, more likely, Kris did. But again, this could be changed. The fact is, people could easily call my home number and dial a couple of extension to make phone calls to their beloved ones that have a good internet connection paying just a local phone call. Just imagine how great this is. It just means we are crossing another line. Years ago, the phone system was getting fans all over the world because people could speak to other people all over the world just like if they were 10 feet away. This was indeed wonderfull but it also turned out very expensive. What we are reaching now, is a cheap simple way to get all those people connected to each other.&lt;br /&gt;&lt;br /&gt;This just amazes me. I am now for sure a fan and will become as soon as I can, a good user and maybe even a developer for those open source solutions. And once I get all my system set up, I will post a few other details and maybe I could get my config files somewhere to help anyone that wishes to try it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-1365715225888702375?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/1365715225888702375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=1365715225888702375' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1365715225888702375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1365715225888702375'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/04/voip-wonders.html' title='VoIP wonders'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-3464369436023729581</id><published>2007-04-29T22:49:00.000-03:00</published><updated>2007-04-29T23:09:17.843-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='roadmap'/><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><category scheme='http://www.blogger.com/atom/ns#' term='automated build'/><category scheme='http://www.blogger.com/atom/ns#' term='blah'/><title type='text'>Archimedes Road map for May 2007</title><content type='html'>Well,&lt;br /&gt;It was quite obvious I am not ready to maintain a blog yet. But I will keep trying anyway.&lt;br /&gt;At the moment what I have to say is that publishing a new version of Archimedes is a time taking operation. Besides from generating all the releases and zips and uploading everything to the internet both Sourceforge and CodigoLivre and manually having to upload the same files to a couple of other sites, I have to generate about 10 texts that should be published as news on those websites, mails on the releases mailing list, comments on the change log and release infos and a web page to be added to the Archimedes website.&lt;br /&gt;All this work can be very time consuming and gets me very tired and bored. At the moment I have an automated system working with Eclipse PDE and bash scripts that allow me to generate the deploy and the zips and installer and upload all those files to the sourceforge and codigolivre. It basically runs an ant call on eclipse to do the pde work and then works with zip and ftp to generate the files and upload them. Took me about 1 hour to make since I'm a crappy shell scripter but now it's done. So that's the quick part now, but I still have to upload files one by one two sites (codeplex and incubadora) which is a very slow operation and I fall in the old problem: generating all those texts.&lt;br /&gt;As anyone can notice, I am a REALLY crappy english writter and my teachers usually say the same about my french or portuguese writting skills. That can comforts me since I usually generate those texts very fast since I know it will suck anyway but it still takes a lot of time and energy. Especially when I have to translate some parts of it. Anyway... enough complaining.&lt;br /&gt;About Archimedes, the next release should be launched may 26th if nothing goes wrong. This would mean about 1 month between both releases although I would really like it if we had news to publish weekly from now on (meaning next week should have something new to users). The plan for the next release includes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Text and Edit text working with Truetype fonts loaded from the system. This should allow users to use the text feature for real, not just like it was before.&lt;/li&gt;&lt;li&gt;Simplified Dimensions with the hability to reposition the dimension's text. We might not have the time to get this completed since it depends heavily on the text to work decently.&lt;/li&gt;&lt;li&gt;Layers should be back with all the old features and maybe even some improvements.&lt;/li&gt;&lt;li&gt;A small "bug" on the snap behaviour with orto on will be fixed. This means snap will overrule orto if the mouse grips on some snap point.&lt;/li&gt;&lt;li&gt;Moving will be enabled when selecting certain snap points for certain elements.&lt;/li&gt;&lt;li&gt;Saving and Opening files on the Archimedes format should be back also.&lt;/li&gt;&lt;li&gt;PDF Export should also be back to allow users to print their work or just show it to someone else.&lt;/li&gt;&lt;li&gt;Rectangle, Zoom and Pan will also be back but those have no improvements planned yet.&lt;/li&gt;&lt;/ul&gt;This should be about it. It is not a lot and we might even get some few other features implemented but all will depend on how the team manages to work on the next few weeks. I will try to post a bit more about it as soon as possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-3464369436023729581?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/3464369436023729581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=3464369436023729581' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/3464369436023729581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/3464369436023729581'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/04/archimedes-road-map-for-may-2007.html' title='Archimedes Road map for May 2007'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-1379564736778526081</id><published>2007-04-02T09:23:00.000-03:00</published><updated>2007-04-29T23:10:38.475-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='maven2'/><category scheme='http://www.blogger.com/atom/ns#' term='archimedes'/><title type='text'>Can't keep promisses</title><content type='html'>Okay! I admit it: I can not keep my promises regarding publication.&lt;br /&gt;This is clear when you look at the blog's history and at the Archimedes' history.&lt;br /&gt;So I'll try not to make any other promise. (Remark I am not making it a promise)&lt;br /&gt;&lt;br /&gt;Anyway, regarding the automization process of Rich Client Applications: I found a nice article about using maven2 to make the whole build and testing process. You can find it &lt;a href="http://www.eclipse.org/articles/article.php?file=Article-Eclipse-and-Maven2/index.html"&gt;here&lt;/a&gt;. My next mission is to take a deep look in that article and try to make archimedes use this.&lt;br /&gt;It would deeply improve the build creation and maintenance and would allow me to use a continuum (or similar) server to deploy up to date sites with documentation.&lt;br /&gt;&lt;br /&gt;Other then that, Archimedes is, at the moment, more or less like it was in version 0.6.0. This is aproximately the current status of features. The new atempt is to publish a "stable" version april 16th but I am pretty sure it will lack some of the most important features.&lt;br /&gt;&lt;br /&gt;Anyway, that is about it. I'm using about 25% of my coding time to try and keep this blog and the sourceforge news up to date which means I am programming much less then I would like but since so many people pointed out that the projects infos should be always updated, I am doing what I can to keep this true.&lt;br /&gt;&lt;br /&gt;I hope I'll be back next week with more news.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-1379564736778526081?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/1379564736778526081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=1379564736778526081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1379564736778526081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1379564736778526081'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/04/cant-keep-promisses.html' title='Can&apos;t keep promisses'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-3551831886266104676</id><published>2007-03-06T19:54:00.000-03:00</published><updated>2007-03-09T06:28:12.470-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blah'/><category scheme='http://www.blogger.com/atom/ns#' term='macosx'/><title type='text'>In love with my MacBook Pro</title><content type='html'>Hello,&lt;br /&gt;I'm sorry I'm late with posting my article about automating your build and installer generation. There are two main reasons for that. The first one is that I have to learn how to do it before I can write about it. I kind of have an idea about how to do it but I should start to write a couple script and test it before I write a load of craps about it.&lt;br /&gt;&lt;br /&gt;The second reason is that I just received my brand new MacBook Pro. This is mainly taking most of my time since I want to try every feature I discover on it. Totally got me impressed. As many say, once you try a Mac, you think twice before coming back to another OS. I could tell you that, for sure, I'm going to stay REALLY away from Windows since the only thing I used to do on Windows was playing games. But since most games I play are available for Mac, really no need to use Windows.&lt;br /&gt;&lt;br /&gt;I wouldn't go as far as to say I'm quitting Linux that fast however. I surely believe Mac OS X is a much nicer Desktop interface and since it has a sort of Unix core I can use most of my scripts and things in it.&lt;br /&gt;There are some limitations however and the problem of losing some freedom. I am, however, very pleased to see that, for once, I paid for something that was worth it. Very stable, very nice, very pretty, lots of cool features and cool softwares.&lt;br /&gt;&lt;br /&gt;For sure I now recommend Mac for people who don't give a damn about freedom to alter the code (since usually they don't even know what "the code" is) and want a very productive and good interface.&lt;br /&gt;&lt;br /&gt;If some day (and I doubt it) Mac opens their source code, I would consider it the best OS for personal computers anyone. Some miles ahead of Linux and some year lights ahead of Windows for sure. I should here apologize to the Gnome and KDE developers, you guys are doing a freaking good job, but Mac OS X managed to accomplish an amazing work and the Leopard version (to come yet this year they say) should bring the little features I'm missing a bit using Tiger.&lt;br /&gt;&lt;br /&gt;Anyway, as you can read, I'm totally thrilled about my new computer so I'm a bit behind schedule on any thing while trying to have it fully configured for extensive use. If I don't have the next post ready until the week end, I promise I'll do it for Sunday.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-3551831886266104676?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/3551831886266104676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=3551831886266104676' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/3551831886266104676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/3551831886266104676'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/03/in-love-with-my-macbook-pro.html' title='In love with my MacBook Pro'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-1174867861444124775</id><published>2007-02-28T22:02:00.000-03:00</published><updated>2007-03-01T00:11:54.018-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='izpack'/><title type='text'>Creating a multiplatform installer (with IzPack)</title><content type='html'>Hello once again.&lt;br /&gt;As promised, today I'll talk about how to create your multiplatform installer for your Eclipse Rich Client Application without having to add all the folders PDE (Plugin Development Environment) created.&lt;br /&gt;&lt;br /&gt;First of all, understand that what I'll explain for IzPack can be used for any other installer you like. Just search for a feature similar to the one I quote in your installer and you should have no problem.&lt;br /&gt;Now that this is explained, let's get started:&lt;br /&gt;First of all, part of your jobs is already done thanks to the eRCP imposed architecture. I'm talking about having your project split in several parts that are almost completly independent. This is very useful since it'll allow your user to choose the plugins he wishes to install.&lt;br /&gt;This reminds me of something: feature != plugins.&lt;br /&gt;Your update site or your product uses a set of plugins and call it a feature if you followed most of the tutorials. This doesn't means your installer must care about your feature definitions.&lt;br /&gt;The feature definition will allow your update system to know which updates it should look for and which features are considered "new features". This means that if your application is running without any feature and you ask for an update, it'll show you the core feature (which you obviously already have since you're running your application) as a "new feature" to be installed. That can be explained by the fact that sites only know about features and never look to plugins.&lt;br /&gt;&lt;br /&gt;Therefore, a good practice is to have your core feature as a required package in your installer. Any other feature you would like the user to update through the update system should also be joined as a package in your installer. However, if you wish to offer the user the choice to install only one plugin regardless what is its feature, you can do it without further consequences. Your application will work without a problem and with this plugin activated.&lt;br /&gt;&lt;br /&gt;So, you have decided what will be the packages available in your installer. You must know what license you'll use and you can have a couple shortcuts because it's always useful.&lt;br /&gt;&lt;br /&gt;Now let's produce the XML file that will explain to IzPack how it should work.&lt;br /&gt;Your first section of the IzPack XML should be the something like:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; &amp;lt;info&amp;gt;&lt;br /&gt;   &amp;lt;appname&amp;gt;Your App&amp;lt;/appname&amp;gt;&lt;br /&gt;   &amp;lt;appversion&amp;gt;@{version}&amp;lt;/appversion&amp;gt;&lt;br /&gt;   &amp;lt;authors&amp;gt;&lt;br /&gt;     &amp;lt;author name="Tarantulus Corp." email="archimedesproject@googlegroups.com" /&amp;gt;&lt;br /&gt;   &amp;lt;/authors&amp;gt;&lt;br /&gt;   &amp;lt;url&amp;gt;http://www.archimedes.org.br/&amp;lt;/url&amp;gt;&lt;br /&gt;   &amp;lt;webdir&amp;gt;http://arquimedes.sf.net/update&amp;lt;/webdir&amp;gt;&lt;br /&gt; &amp;lt;/info&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;No big secret on that. It defines mainly the first screen post language choose. Excepting 'webdir' all those fields are shown in that screen. The 'webdir' is the addressed used to search for the package if you are about to create an online installer. This is mainly the only thing that changes from a local installer to an online installer in IzPack.&lt;br /&gt;The second part of your XML should be:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;guiprefs width="640" height="480" resizable="no"&amp;gt;&lt;br /&gt;  &amp;lt;modifier key="useButtonIcons" value="yes" /&amp;gt;&lt;br /&gt;  &amp;lt;modifier key="useLabelIcons" value="yes" /&amp;gt;&lt;br /&gt;  &amp;lt;modifier key="langDisplayType" value="native" /&amp;gt;&lt;br /&gt;  &amp;lt;modifier key="headingPanelCounter" value="progressbar" /&amp;gt;&lt;br /&gt;  &amp;lt;modifier key="headingPanelCounterPos" value="inNavigationPanel" /&amp;gt;&lt;br /&gt;&amp;lt;/guiprefs&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This is a bit more obscure. The first lines are quite easy to understand. 'landDisplayType' is not that easy however. It sets how the installer will show the options of language to the user on the first screen of your installer. In this case, native tells the software to use the system's locale to write the languages. 'headingPanelCounter' and 'headingPanelCounterPos' defines how the steps remaining and the current step should be shown to the user. If those lines are not present, nothing will be displayed.&lt;br /&gt;&lt;br /&gt;Next you have:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;resources&amp;gt;&lt;br /&gt;  &amp;lt;res id="installer.langsel.img" src="installer.png" /&amp;gt;&lt;br /&gt;  &amp;lt;res id="LicencePanel.licence" src="license.txt" /&amp;gt;&lt;br /&gt;  &amp;lt;res id="shortcutSpec.xml" src="shortcutSpec.xml" /&amp;gt;&lt;br /&gt;  &amp;lt;res id="packsLang.xml_eng" src="packsLang_eng.xml" /&amp;gt;&lt;br /&gt;&amp;lt;/resources&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Okay. Now we're talking! First of all, the image to be shown in the first screen of the installer is the one on the first line. The license that will be displayed to the user and that he will be forced to accept unless it quites the install. Beware, this license should be in a text format because IzPack will display it as a text only file. The last lines regard the shortcut creation and the internationalization of this installer. Take a look on the official documentation and this should be enough.&lt;br /&gt;&lt;br /&gt;The next part is what will define the flow of your IzPack installer:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;panels&amp;gt;&lt;br /&gt;  &amp;lt;panel classname="HelloPanel" /&amp;gt;&lt;br /&gt;  &amp;lt;panel classname="LicencePanel" /&amp;gt;&lt;br /&gt;  &amp;lt;panel classname="PacksPanel" /&amp;gt;&lt;br /&gt;  &amp;lt;panel classname="TargetPanel" /&amp;gt;&lt;br /&gt;  &amp;lt;panel classname="InstallPanel" /&amp;gt;&lt;br /&gt;  &amp;lt;panel classname="ShortcutPanel" /&amp;gt;&lt;br /&gt;  &amp;lt;panel classname="FinishPanel" /&amp;gt;&lt;br /&gt;&amp;lt;/panels&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Those panels are available by default in IzPack. You can, however, create your own panels as well as install new ones created by the community and available mainly at IzPack's site (http://www.izforge.com/izpack).&lt;br /&gt;&lt;br /&gt;At last, the last part is the most important one. The one that will specify each pack of your application:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;packs&amp;gt;&lt;br /&gt;  &amp;lt;pack name="Core" id="core" required="yes"&amp;gt;&lt;br /&gt;    &amp;lt;description&amp;gt;The core of Your App.&amp;lt;/description&amp;gt;&lt;br /&gt;    &amp;lt;fileset dir="@{deployDir}/win32.win32.x86/YourAppName/" targetdir="$INSTALL_PATH"&amp;gt;&lt;br /&gt;      &amp;lt;include name="startup.jar" /&amp;gt;&lt;br /&gt;      &amp;lt;include name="configuration/config.ini" /&amp;gt;&lt;br /&gt;      &amp;lt;include name="features/org.eclipse.rcp*/**/*" /&amp;gt;&lt;br /&gt;      &amp;lt;include name="features/your.company.project.feature*/**/*" /&amp;gt;&lt;br /&gt;      &amp;lt;include name="plugins/**/*" /&amp;gt;&lt;br /&gt;      &amp;lt;exclude name="plugins/your.company.project.*.jar" /&amp;gt;&lt;br /&gt;      &amp;lt;exclude name="plugins/org.eclipse.swt.*linux*.jar" /&amp;gt;&lt;br /&gt;      &amp;lt;exclude name="plugins/org.eclipse.opengl.linux*/*" /&amp;gt;&lt;br /&gt;      &amp;lt;exclude name="plugins/org.eclipse.opengl.linux*/**/*" /&amp;gt;&lt;br /&gt;    &amp;lt;/fileset&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;fileset dir="@{deployDir}/linux.gtk.x86/YourAppName/" targetdir="$INSTALL_PATH"&amp;gt;&lt;br /&gt;      &amp;lt;include name="icon.xpm" /&amp;gt;&lt;br /&gt;      &amp;lt;include name="yourapp" /&amp;gt;&lt;br /&gt;      &amp;lt;include name="about.html" /&amp;gt;&lt;br /&gt;      &amp;lt;include name="libcairo-swt.so" /&amp;gt;&lt;br /&gt;      &amp;lt;include name="about_files/**/*" /&amp;gt;&lt;br /&gt;      &amp;lt;include name="plugins/org.eclipse.swt.*linux*.jar" /&amp;gt;&lt;br /&gt;      &amp;lt;include name="plugins/org.eclipse.opengl.linux*/**/*" /&amp;gt;&lt;br /&gt;      &amp;lt;os name="linux" /&amp;gt;&lt;br /&gt;    &amp;lt;/fileset&amp;gt;&lt;br /&gt;    &amp;lt;fileset dir="@{deployDir}/macosx.carbon.ppc/YourAppName/" targetdir="$INSTALL_PATH"&amp;gt;&lt;br /&gt;      &amp;lt;include name="yourapp.app/**/*" /&amp;gt;&lt;br /&gt;      &amp;lt;include name="plugins/org.eclipse.swt.*macos*.jar" /&amp;gt;&lt;br /&gt;      &amp;lt;include name="plugins/org.eclipse.opengl.macos*/**/*" /&amp;gt;&lt;br /&gt;      &amp;lt;os family="osx" /&amp;gt;&lt;br /&gt;    &amp;lt;/fileset&amp;gt;&lt;br /&gt;    &amp;lt;fileset dir="@{deployDir}/win32.win32.x86/YourAppName/" targetdir="$INSTALL_PATH"&amp;gt;&lt;br /&gt;      &amp;lt;include name="yourapp.exe" /&amp;gt;&lt;br /&gt;      &amp;lt;include name="plugins/org.eclipse.swt.*win32*.jar" /&amp;gt;&lt;br /&gt;      &amp;lt;include name="plugins/org.eclipse.opengl.win32*/**/*" /&amp;gt;&lt;br /&gt;      &amp;lt;os family="windows" /&amp;gt;&lt;br /&gt;    &amp;lt;/fileset&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;!-- The windows scripts --&amp;gt;&lt;br /&gt;    &amp;lt;executable targetfile="$INSTALL_PATH/yourapp.exe" stage="never"&amp;gt;&lt;br /&gt;      &amp;lt;os family="windows" /&amp;gt;&lt;br /&gt;    &amp;lt;/executable&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;!-- The Linux scripts --&amp;gt;&lt;br /&gt;    &amp;lt;executable targetfile="$INSTALL_PATH/yourapp" stage="never"&amp;gt;&lt;br /&gt;      &amp;lt;os name="linux" /&amp;gt;&lt;br /&gt;    &amp;lt;/executable&amp;gt;&lt;br /&gt;  &amp;lt;/pack&amp;gt;&lt;br /&gt;&amp;lt;/packs&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Each &amp;lt;pack&amp;gt; must have one or more files registered. Those can be added using the file tag (when you want to work with one specific file) or the fileset tag (when you want to work with folders) as shown. The fileset accepts both &amp;lt;include&amp;gt; and &amp;lt;exclude&amp;gt; tags which allows you to easily create exceptions in your folders. Also, all those tags accept &amp;lt;os&amp;gt; that will be interepreted as a mark to tell the installer on which OSs those files should be unpacked. This is mainly how you separate things. The first fileset defined in the example above is the one that grabs all non-OS specific files from the RCP. The next 3 filesets are used to select os specific files as the 'os' tag shows.&lt;br /&gt;&lt;br /&gt;At last, the &amp;lt;executable&amp;gt; tag marks the file you target as executable. This means a double click or a command will try to run those files. This is required because the installer will zip all the files in jars and loose all kind of permissions over the file on install. So it needs to know which files should be diferent from the read and write permissions.&lt;br /&gt;&lt;br /&gt;All this should allow you to create a simple multi platform installer for your eRCP application. Once this is done, you'll probably want to add the &amp;lt;locale&amp;gt; tag to add internationalization support to your installer and then you'll need to create some language specific XML with pack descriptions translations and everything else.&lt;br /&gt;&lt;br /&gt;A last tip, beware to export all of your features and plugins when you are in Eclipse. You'll need all the files available on your deployDir to make the installer work well.&lt;br /&gt;&lt;br /&gt;The next post will discuss about how to create all the application, the installer and transfer all to a website using one simple script. This allows a much quicker and constant deploy of your software to your users. Expect it done for saturday or sunday.&lt;br /&gt;&lt;br /&gt;See you guys soon. Bye bye.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-1174867861444124775?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/1174867861444124775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=1174867861444124775' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1174867861444124775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/1174867861444124775'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/02/creating-multiplatform-installer-with.html' title='Creating a multiplatform installer (with IzPack)'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-6723533483482362609</id><published>2007-02-24T10:54:00.000-02:00</published><updated>2007-02-24T11:42:56.749-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><title type='text'>How to export multi-platform?</title><content type='html'>Well,&lt;br /&gt;I hope that after those last two posts, you are already capable of adding your classes to your project and growing it without any further problems. Once this is done, I also expect that you can export your project and run it outside of Eclipse with no headache. You choose your deploy directory (which I'll call $DEPLOY_DIR) and you can run your executable software at $DEPLOY_DIR/yourapp(.exe). If this is not the case, feel free to contact me either by email or posting a comment.&lt;br /&gt;&lt;br /&gt;So, now that you have your development environment set up and you can run your software in your platform, you probably want to export it into other operating systems (OS). For now, you don't even have this option anywhere you can find it. If you search a bit through the internet you'll discover you need the RCP-Delta-Pack to do so. Very good... but where the hell is that pack? If you search around the RCP download you'll eventually find it although it's not really very well exposed.&lt;br /&gt;&lt;br /&gt;The way to find the up to date version is:&lt;br /&gt;http://www.eclipse.org/downloads/&lt;br /&gt;Choose "Other downloads for ..."&lt;br /&gt;Get down to "RCP SDK" and the last file is the RCP delta pack.&lt;br /&gt;For the 3.2.2 version, just click &lt;a href="http://download.eclipse.org/eclipse/downloads/drops/R-3.2.2-200702121330/download.php?dropFile=eclipse-RCP-3.2.2-delta-pack.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now that you have your delta-pack, it's really easy. Just unzip the file into $ECLIPSE_HOME/plugins and restart your eclipse. Now when you ask to export your application, you'll get a nice checkbox asking if you want to export to multiple platforms. If you select it, the "next" button will become active and if you click it, you'll have a list of supported OSs. Let's say you'll select macosx_ppc, linux_x86 and win32_x86 (like Archimedes does).&lt;br /&gt;The export system will use the $DEPLOY_DIR and create in it, 3 folders (one for each system):&lt;br /&gt;linux.gtk.x86&lt;br /&gt;macosx.carbon.ppc&lt;br /&gt;win32.win32.x86&lt;br /&gt;And each of these folders will contain all files needed to run the software on these OSs with those graphical interfaces.&lt;br /&gt;&lt;br /&gt;If you take a look, you'll find that much is common to all OSs and we hope so, since it should be a platform-independent software. I cared to take a deeper look and list what is common and what is not.&lt;br /&gt;Mainly, the "configuration" and "features" folder are identical. The "plugins" is mainly identical, the only thing that may change is a couple of plugin fragments that are OS specific (like "org.eclipse.opengl.linux" and "org.eclipse.open.macosx"). If the fragments have requirements regarding the OS, they will be selected only by the OSs that support that requirements. Careful about that! If you depend on a plugin that has a fragment like that one and it doesn't get exported, you'll get the friendly "There was an error. Please check .metadata/.log for more details." message. If you check the log, you'll find the also friendly (but known already) "No application ID found" message.&lt;br /&gt;&lt;br /&gt;The root folder, however, is quite diferent depending on the OS you look. The only file that is always available is "startup.jar" which contains the basic RCP plugin system which will activate whatever needs to be activated.&lt;br /&gt;All the rest is quite diferent. For example:&lt;br /&gt;Windows has only a "yourapp.exe" file.&lt;br /&gt;MacOS X has a whole folder "yourapp.app" with a nice deep structure required to make your software run like a native Mac software.&lt;br /&gt;Linux is the most poluated one. It has "youricon.xpm", a folder "about_files" and a page "about.html", "libcairo-swt.so" and a "yourapp" executable file.&lt;br /&gt;&lt;br /&gt;Now why is that important? Because you will probably want to make an installer (like Archimedes does) or a common package that would allow your users to download once the core and add the OS specific files as they need it. In this case, you'll need to know what is core and what is OS specific.&lt;br /&gt;&lt;br /&gt;I'll stay here for today but my next post will be about creating this installer. I'll use IzPack (&lt;a href="http://www.izforge.com/izpack"&gt;http://www.izforge.com/izpack&lt;/a&gt;) to make the example because it's what Archimedes uses and it is very simple and powerful. You can probably, however, use the example in any installer you'd like just adapting the procedure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-6723533483482362609?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/6723533483482362609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=6723533483482362609' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/6723533483482362609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/6723533483482362609'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/02/how-to-export-multi-platform.html' title='How to export multi-platform?'/><author><name>Hugo "NighT" Corbucci</name><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>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1597571711823966454.post-2067781374247553901</id><published>2007-02-22T22:39:00.000-02:00</published><updated>2007-02-22T23:29:37.556-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><title type='text'>Your first problems with RCP</title><content type='html'>Well,&lt;br /&gt;Now that we had a good start with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;RCP&lt;/span&gt;, we face a couple of problems upgrading our application. First of all, if you are a curious person (and this is a good thing), you might be facing a couple of problems while trying to run your application from outside of Eclipse.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Problem number 1:&lt;/span&gt;&lt;br /&gt;You can run your application from within Eclipse but when you try it outside of Eclipse you get a: "No class definition found ...".&lt;br /&gt;If you are having this problem and the class that can't be found is one of your own, you probably made the wrong move! Check on your MANIFEST.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;MF&lt;/span&gt; file if you have a line: "Bundle-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;ClassPath&lt;/span&gt;:".&lt;br /&gt;If you don't, you have gone even further that I though. Add it quickly!&lt;br /&gt;If you have it, check that the path '.' is there. You MUST have '.' as a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;class path&lt;/span&gt; for your application or else none of your classes will be found.&lt;br /&gt;&lt;br /&gt;Okay! That was easy to solve now that you found the solution.&lt;br /&gt;You move along and you get challenged again:&lt;br /&gt;&lt;br /&gt;You probably created your first &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;RCP&lt;/span&gt; application with a product that was based on &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;plug ins&lt;/span&gt;, right? Now it's time to move it to feature based architecture. Great! &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;That will&lt;/span&gt; enable your application to benefit from the update features.&lt;br /&gt;Go ahead! Change your product file to be feature based. Once you done that, all works perfectly within Eclipse but, again, when you run it outside, it does not works.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Problem number 2:&lt;/span&gt;&lt;br /&gt;You can run your application from within Eclipse but when you try it outside of Eclipse you get a: "No application id found ...".&lt;br /&gt;&lt;br /&gt;Okay! First thing to do, check the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;plug in&lt;/span&gt; folder from your application. It should contain all &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;plug ins&lt;/span&gt; that are necessary to run you application. If one &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;plug in&lt;/span&gt; is missing, you get the "No application id found ..." message.&lt;br /&gt;If this does not help you, try opening the file "$YOUR_APP_HOME/workspace/.metadata/.log" with the Error log view in Eclipse. Take a look at the most recent entries. You should see the "No application id found ..." message and some warnings surrounding it.&lt;br /&gt;Take a good look over the warnings looking for one of them that says something about "Bundles missing". It should be &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;extensible&lt;/span&gt;. Extend it twice, you'll get a list of missing bundles. Those are the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;plug ins&lt;/span&gt; that the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;RCP&lt;/span&gt; is trying to load and is not finding. Search for errors within those &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;plug ins&lt;/span&gt; or if they are available. Once they do, it should restart working once more.&lt;br /&gt;&lt;br /&gt;Wonderful! So now you are feature based and your application works perfectly well inside and outside of Eclipse. Time to create an extension point for your application. Eclipse really helps for that. It creates all the necessary files for you and you can focus on whatever you want.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Problem number 3:&lt;/span&gt;&lt;br /&gt;You want to define your extension point and you would like it to have children. Like in:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;extension-point id="myapp.myext"&amp;gt;&lt;br /&gt;  &amp;lt;myext id="ext3"&amp;gt;&lt;br /&gt;    &amp;lt;status name="fileSystem" /&amp;gt;&lt;br /&gt;    &amp;lt;status name="swap" /&amp;gt;&lt;br /&gt;  &amp;lt;/myext&amp;gt;&lt;br /&gt;&amp;lt;/extension-point&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;First of all, when creating your extension point, you'll find out that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;PDE&lt;/span&gt; 3.2 won't let you create a new definition within the extension point element. Don't worry! That's normal. It just doesn't create the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;xml&lt;/span&gt; tree at definition it understands when you use it. Second thing, just like the extension point, you can't create a new definition within your extension-point. Again, same procedure: ignore it and create it after your extension point definition but use it inside and all will go fine.&lt;br /&gt;&lt;br /&gt;Now you have your extension points created. Time to create a new project that will extend this point. Go ahead! It's a good idea. So you start and once you done the whole thing you get a warning: "Illegal child element ..." at your "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;plugin&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;xml&lt;/span&gt;".&lt;br /&gt;Well, my tip: Ignore it! It's a know bug from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;PDE&lt;/span&gt; 3.2 that is already fixed at the repository.&lt;br /&gt;&lt;br /&gt;Well, those must be the first problems you'll face with RCP and probably the once you'll loose more time. After this, you understand the errors a bit faster and starts not getting stucked for stupid reasons like I did. :)&lt;br /&gt;&lt;br /&gt;If you have other problems with or without solution, please post them and I'll do my best to help or to spread the solution a bit more.&lt;br /&gt;&lt;br /&gt;Enjoy yourselves!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-2067781374247553901?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/2067781374247553901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=2067781374247553901' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/2067781374247553901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/2067781374247553901'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/02/your-first-problem-with-rcp.html' title='Your first problems with RCP'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-8082900419619581085</id><published>2007-02-17T08:33:00.000-02:00</published><updated>2007-02-17T09:07:32.795-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><title type='text'>Why Eclipse's RCP?</title><content type='html'>Well, let's start producing something interesting:&lt;br /&gt;First of all, there are two things that you may be thinking of doing that will make you choose to work over Eclipse's Rich Client Platform (eRCP from now on):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You want to develop a plug in for Eclipse. In such case, you have absolutely no choice. You will have to work over eRCP. On the other hand, you will be doing a lot of things that other persons already did and you will find several tutorials and samples that can help you.&lt;/li&gt;&lt;li&gt;You want to develop a standalone application of your own. This will be the focus because it's doing this that you will find most problems.&lt;/li&gt;&lt;/ol&gt;Okay then, you want to develop your standalone application.&lt;br /&gt;Why should or shouldn't you work over eRCP?&lt;br /&gt;&lt;br /&gt;Mainly, what you will gain from working over eRCP is a very strong extensibility for your application with a great architecture as well as a very decent internal update system and a nice help system. Wow! Wonderful right? And there is more! If you start now, you get a "native" cross-platform application for free!&lt;br /&gt;&lt;br /&gt;Ok! I got a bit too far with that last sentence. So let's keep cool, not all applications are meant to be developed using eRCP. So what are the counters?&lt;br /&gt;&lt;br /&gt;You will spend some time learning how eRCP works. And when I say some time, I mean something like 3 or 4 days totally lost doing things you don't really understand how they work.&lt;br /&gt;You will also have some megabytes inserted into your software even before you have anything working. To get an idea, if you use all the features I quoted before, before you have any code of your own, your application will already have some 16 Mbs. If your application is meant to be light weight, forget it!&lt;br /&gt;At last, you will have to adapt to eRCP's architecture and believe when I say it: It's a very very good architecture but it forces you to achieve, at least, a very good architecture level. This may take you some considerable time (I'm still trying to reach it).&lt;br /&gt;&lt;br /&gt;So, okay, when should I use eRCP than?&lt;br /&gt;When you want to develop a pluggable application, flexible, very strong.&lt;br /&gt;When you want/need a very good Internet update system.&lt;br /&gt;Let's say the help system is a bonus because it is not that hard to do in any standalone application.&lt;br /&gt;&lt;br /&gt;And when shouldn't I use it?&lt;br /&gt;When you want things to go quickly, you have little time to do your little application.&lt;br /&gt;When you don't need plug ins.&lt;br /&gt;When you have limited memory or processing.&lt;br /&gt;&lt;br /&gt;Okay! But you don't like IBM/Eclipse... is there an alternative?&lt;br /&gt;Yes. Sun Microsystems has the Netbeans Rich Client Platform (nRCP). It has almost all the features eRCP has but you'll loose a bit of community support since it's much less widely used and you'll win good documentation because Sun manages to have some very competent documentation writers.&lt;br /&gt;&lt;br /&gt;Now that we are set about what is Eclipse Rich Client Platform, I'll leave you some links where you can have more insights about it:&lt;br /&gt;&lt;a href="http://wiki.eclipse.org/index.php/Rich_Client_Platform"&gt;http://wiki.eclipse.org/index.php/Rich_Client_Platform&lt;/a&gt; (RCP's faq and official RCP's site)&lt;br /&gt;&lt;a href="http://www.eclipse.org/articles/Article-RCP-1/tutorial1.html"&gt;http://www.eclipse.org/articles/Article-RCP-1/tutorial1.html&lt;/a&gt; (The first part of a trilogy article from Ed Burnette. Very useful to start with RCP)&lt;br /&gt;&lt;a href="http://www.eclipse.org/articles/Article-Branding/branding-your-application.html"&gt;http://www.eclipse.org/articles/Article-Branding/branding-your-application.html&lt;/a&gt; (an article to read after Burnette's one by Andrew Eidsness and Pascal Rapicault)&lt;br /&gt;&lt;a href="http://eclipsercp.org/book/"&gt;http://eclipsercp.org/book/&lt;/a&gt; (The best book I found for eRCP though it's not free)&lt;br /&gt;&lt;br /&gt;Of course you can find much more looking over the Internet for "Rich Client Platform Eclipse" or "Rich Client Platform Netbeans" or just "RCP your-topic".&lt;br /&gt;&lt;br /&gt;The next step is to start developing your own RCP application from scratch but you'll have to wait until I'm back from the Brazilian Carnival for that. See you next week!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-8082900419619581085?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/8082900419619581085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=8082900419619581085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8082900419619581085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/8082900419619581085'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/02/first-steps-with-eclipses-rcp.html' title='Why Eclipse&apos;s RCP?'/><author><name>Hugo "NighT" Corbucci</name><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-1597571711823966454.post-7306781375026220594</id><published>2007-02-15T20:08:00.000-02:00</published><updated>2007-02-15T22:02:52.738-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blah'/><title type='text'>Initial post</title><content type='html'>My name is Hugo and I'm a brazilian programmer but I'll write this blog in english for some reasons. The main reason for that is that I wish to share my programming and coding experience with as many people as possible. The second reason is that I really need to practice my writting in english (in other languages also but I'll handle that somewhere else).&lt;br /&gt;&lt;br /&gt;I should have explained this earlier but this blog will be used to report several information about my programming experiences and problems faced. Most of my code is written in Java so you'll find a lot of infos about Java specificities and platforms available for it.&lt;br /&gt;&lt;br /&gt;The main thing that drove me to start this is the lack of information there is about Eclipse's Rich Client Platform. I found several problem using it and I wanted to share those experiences. Another important part of this blog will be dedicated to &lt;a href="http://www.archimedes.org.br/"&gt;Archimedes&lt;/a&gt;. I started this project almost 2 years ago (around july 2005) and I'll use this blog to give some infos from inside it's development.&lt;br /&gt;&lt;br /&gt;This should be the main road although some things may come out of it from time to time. Of course, all comments and critics are welcome (even if it regards my crappy english spelling and grammar).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1597571711823966454-7306781375026220594?l=codeache.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeache.blogspot.com/feeds/7306781375026220594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1597571711823966454&amp;postID=7306781375026220594' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/7306781375026220594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1597571711823966454/posts/default/7306781375026220594'/><link rel='alternate' type='text/html' href='http://codeache.blogspot.com/2007/02/initial-post.html' title='Initial post'/><author><name>Hugo "NighT" Corbucci</name><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></feed>
