Monday, October 27, 2008

Tuesday at OOPSLA'08

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 Coding Dojo.

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 modular the city that built the pyramids was. Amazingly, the houses of the workers were all pretty much the same several times replicated as instances of a model. 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 polymorphic.

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.

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 Javascript library called 'dojo' 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 Minesweeper problem 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 Shu or Ha description and is usually learned with practice and time.

That's about it for Tuesdays. I'll post a bit about the following days later on this week.
Enjoy yourselves.

Empty open spaces at OOPSLA'08

Hi again,
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.

So what you need to have an open space?
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.
After that, you need to warn people about a few things. There are 4 rules on open spaces and one law. The rules are:
  1. It starts when it starts
    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.
  2. Those who attend are the right persons
    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.
  3. Whatever happens was the only thing that could have happened
    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!
  4. It ends when it ends
    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.
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.

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.

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?
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.

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.

Crystal Monday morning at OOPSLA 2008

Hello,
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.

I had to pleasure to attend to Alistair Cockburn's tutorial called Crystal Clear Methodology. 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 Shu-Ha-Ri levels of knowledge (that are not that far from Apprentice-Novice-Expert-Master from the Dreyfus model), it is always better the have them explained from someone that know them very well.
The idea is that the Shu 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.
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 Ha 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.
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 Ri. 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 feel right.

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 fluid 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.

The rest of Alistair's tutorial showed how XP (first edition) and Scrum are excelent Shu descriptions of Agile methods although the author are clearly at the Ri level themselves. XP (second edition) and the Crystal family, on the other hand, are, according to Alistair, better suited at the Ha level since they present a set of possible solutions according to a given environment. I personally don't think the Ri 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.

There was much more content on Alistair's talk but you can learn most of it from his books.

That was it for Monday morning. More posts comming with the rest.

See you all!

Sunday, October 19, 2008

First day at OOPSLA

Hello,
I am currently attending OOPSLA 2008 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.
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.

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 Parthenon replica in Nashville. I'll try to have Mariana's photos to post them here when we can.

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.

Tuesday, October 14, 2008

Coding Rumors++ or UberDojo

Hello,
I previously described the Coding Rumor game and later on presented the results we had at PyCon Brasil 2008 doing it. During the Encontro Agil, we tried having a session of what rbp (or R) called UberDojo to follow the UltraDojo idea (the name he prefered for Coding Rumor).
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.
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.

Last Monday's session happened at Thiago's house. We were 14 people (Danilo Sato, George Malamidis, Rodrigo Bernardo Pimentel, Thiago Colucci, Fabricio Sousa Nascimento, Jacqueline Marchetti, Renato Willi, Bruno Pedroso, João Pedro Kerr Catunda - a.k.a Yoshi, Mariana Bravo, Breno Flesch, Rafael Schouery, Adolfo Rodrigues and myself). We had four laptops splitted in two round tables. Each table defined a language (Haskell and Ruby) and each side of the table defined a problem (Bank OCR and Minesweeper).
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.

All the produced source code is available at Github on the dojo project 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 Roman to Numerals, 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.

Thanks and bye bye.

Monday, October 13, 2008

Encontro Agil was a success!

Hello everyone,
On Saturday, we (AgilCoop) ran the first 2008 agile conference in Brazil (although TDC had quite a few agile talks, the focus was not in agile). The Encontro Agil (or Agile Meeting) happened at the IME (Instituto de Matemática e Estatística - Mathematics and Statistics Institute) of USP (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.
We followed several ideas from the Agile 2008 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.

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.
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.

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%).

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 AgilCoop web site in a few days as well as on the conference's web page.

Future conferences in Brazil that will have some agile content are Rails Summit Latin America 2008 organized by Locaweb and mainly Fabio Akita and Falando em Agile organized by Caelum. Both will happen in October while I am at OOPSLA 2008 so I won't be there but I expect them to be quite interesting.

And get ready for next year, our goal is to have at least one international speaker.

Saturday, October 4, 2008

Archimedes' screenshots

Hello everyone,
I've just updated the archimedes web site 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.
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.

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.

During my development I found a small bug in attachment_fu. 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 Rick Olson but if you want it, it is simple. Open up attachment_fu.rb, go to line 85 and 86 and change them from:
attachment_options[:processor] = "#{processors.first}Processor"
processor_mod = Technoweenie::AttachmentFu::
Processors.const_get(attachment_options[:processor])
to:
attachment_options[:processor] = processors.first
processor_mod = Technoweenie::AttachmentFu::Processors.const_get("#{attachment_options[:processor].to_s.classify}Processor")

Restart your server and this should do the trick.

Well, that's it for now.
Bye bye

Monday, September 29, 2008

Archimedes' site becoming a forge

Hello there,
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.
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 http://svn.archimedes.org.br/public/br.org.archimedes.www/. It works using Ruby on Rails 2.0.2 (I know I'm a bit outdated) and so far only has features for archimedes.

So far the system is pretty simple. I have projects, each project has versions.
There are users and users can have a ProjectMembership relationship with a project (and vice-versa).
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.

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.

That's it for now. Work calls. Bye bye!

Tuesday, September 23, 2008

Archimedes' marketing first step

Hello,
I've worked a little on Archimedes' first marketing steps.
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.
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.

I also payed for another 5 years of archimedes.org.br and arquimedes.org.br so the website is ensure for some time.

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.

See you later.

PyCon Brazil summary

Hello,
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.

The first one was a nice chat I had with rbp and Bruce Eckel 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 ;)

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.
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.

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 this slides (english version here) and then we started to solve the Bank OCR problem from codingdojo.org. 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.
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.

I guess that is all for now. Bye bye people.

Tuesday, September 16, 2008

Archimedes marketing

On my trip to São Carlos, I read most of Karl Fogel's book: "Producing Open Source Software" 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.
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 Dreamhost 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.
The next month will be very busy (you could see that on this post) 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).

For now, I let you with that screenshot of what I thought about and hope you can provide me some feedback. Thank you!

In-company Dojos

Hello everyone.

Last Friday, I was invited by Kiko to São Carlos to organize a Coding Dojo at his company, Async. 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.

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.

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.

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.

Tuesday, September 9, 2008

Coding Rumors or Telephone Coding Game

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.
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.

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 Roman to Numerals or The Block's Problem or any other that everyone in the can quickly see a solution. Once everyone understood the problem, the game starts.
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).
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.

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.

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.

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 :)

Upcomming events

Archimedes is still stalled since I have been gathering some interesting activities lately.
I'll state chronologically:
  • I have been invited to go to São Carlos this Friday (September 12th 2008) to join Kiko (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 Danilo is not here in Brazil to help him with it, I am the one that became responsible for that.
  • Monday, Tuesdays and Wednesday, I will be one of the four monitors of Bruce Eckel's workshop in São Paulo. Bruce will present his future book's ideas about patterns. Luciano Ramalho 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 Thinking in C/C++ and Thinking in Java, it will be a very interesting experience. I will post about it when I get a chance.
  • 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 PyCon Brasil. 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 R (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 Chinese Whisper 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.
  • 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.
  • October, the 3rd and 4th I will be at Brasilia to present a talk about Squeak and Seaside in the Free Software Festival (Festival de Software Livre-DF). 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.
  • October 11th, I will attend to (and I am organizing) the "Encontro Ágil" (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:
    Encontro Ágil 2008
  • 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.
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.
That's all for now, I will write about my new coding game in my next post. See you.

Sunday, August 24, 2008

Friday - Last day at Agile

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.
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.

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.
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.
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.
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 his company's site. 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 nice article 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.

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.

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!

Thursday, August 21, 2008

Thurday at Agile - No lunch

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.
I went straight to the Learning & 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 www.thiagi.com).
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.

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.
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.

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.
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.
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.

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).

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).

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.

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 here.
Believe me, around 800 people stood up and sang and danced hearing that. It was really fun!

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.

Friday, August 15, 2008

Wednesday - a free night at Agile 2008

Wednesday was the day without receptions. The day started as usual: breakfast at the conference. Donnuts, fruits, cakes but no croissant or pain au chocolat 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 Danilo 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).
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 - at - csc.ncsu.edu.
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.
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 here. I would like to highlight the map we built on google maps to show where are the dojos around the world.


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.

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 Block Problem 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).

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.

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.

Wednesday, August 6, 2008

Agile sessions on Tuesday

The agile conference is insane!
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.
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.
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.
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 Faber (one of Mockito's maintainer) to find out why I was having problems mocking a couple stuff.
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.

Today's summary should come up tomorrow so stay on.

Tuesday, August 5, 2008

Monday at Agile 2008 and past news

Hello everyone,
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.
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.
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.
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.
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.
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.

That's all for now people. Bye bye!

Thursday, July 17, 2008

Holidays!

Well,
I have been pretty away lately but it is just that I am enjoying my holidays here in Europe.
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 Danilo.

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.

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.

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.

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.

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 Julian and then Grenoble to see Alfredo, my advisor (let's hope I don't run into the same troubles as the PHD comics).

Friday, June 20, 2008

Archimedes saving and opening!

It took a very long time and several complains but it is finally back.
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.

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: https://incubadora.fapesp.br/svn/archimedes/. The rcp version (which is the one being released lately) can be found at https://incubadora.fapesp.br/svn/archimedes/mainarchimedes/rcparchimedes/.

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.

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.

That's it for now people. Please send us your feedback!

Monday, June 9, 2008

Releasing unstable versions again

I am forcing myself to release unstable versions again to try to automatize the process a bit more.
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.

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).

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.

Files can be downloaded at Archimedes' sourceforge site. Enjoy it!

Wednesday, June 4, 2008

Screencast number 7

Well,
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).

As usual, I'll stop here but you can enjoy them:
Download the English version here or see it on Google Video.
Download the Portuguese version here or see it on Google Video.

Monday, June 2, 2008

Archimedes 0.54

After one year, I've finally released Archimedes 0.54.
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.
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.

I am also late with the podcasts and I don't know when I will manage to recover on that.

See you all later. Enjoy the release!

Sunday, May 18, 2008

Article link

Well,
As usual, I am late with my duties.

The Dojo São Paulo now has a blog where we post the summary of each meeting. We also have a list where Mariana posted the link to our article about our experience that will be published at Agile 2008. And finally, we created a Dojo São Paulo git repository at Github. It is supposed to host the projects started at the Dojo. It currently hosts only the Dojo Unit 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.

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.

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.

That's it for now. See you later folks.

Monday, May 12, 2008

After a while, another screencast

Hello,
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.

Now for the good news, I had a paper about the Coding Dojo São Paulo accepted at Agile 2008 with Danilo Sato 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.

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.

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).
That's it for now. Enjoy the recording:

Download the English version here or see it on Google Video.
Download the Portuguese version here or see it on Google Video.

Saturday, April 19, 2008

Last and best day of FISL

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 Smalltalk. 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.
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.
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.
Already had a small critic about my block explanation that I hope to handle in future screencasts.
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.

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.

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.

That's it about FISL. See you soon with the next screencast.

Friday, April 18, 2008

FISL 9: First and second day

Hello,
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.
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.

The second day is about to end and the news were:
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
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.

Tuesday, April 15, 2008

Archimedes 0.54 defined

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.
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.

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).

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.

See you!

Squeakcasts running on Seaside?

I am considering idea of having Squeakcasts made with Seaside and running on a squeak virtual machine at my Dreamhost 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).

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:

  • 00-Morphic (Portuguese and English version): 15 minutes
    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.
  • 01-Transcript (Portuguese and English version): 5 minutes
    Presents the Transcript and Workspace tools in Squeak and shows the three main messages to manipulate the Transcript (clear, show: and cr). Shows variable and string declaration and concatenation.
  • 02-Conditionals (Portuguese and English version): 5 minutes
    Working on the previous code, transforms what was done into a conditional that prints the parity of a number correctly based on conditions.
  • 03-Blocks (Portuguese and English version): 7 minutes
    Using the code that prints parity, refactors it to use blocks returns, attribute blocks to variables, discuss its scope and shows parametrized blocks.
  • 04-Loops (Portuguese and English version): 7 minutes
    Using the parametrized blocks from episode 03, teaches how to create 3 styles of loops like 'for', 'while' and 'do while'.
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!

Squeakcasts coming soon?

I was chatting with a very good friend yesterday (Danilo T. Sato) 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 Railscasts (in English) and Akita'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.
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.

For now, just enjoy the Block's screencast that is a bit longer (7 mins) and half an hour late.

Download the English version here. Google Video seems bugged and can't upload correctly. Removed the link until I can fix it again.
Download the Portuguese version here. Google Video seems bugged and can't upload correctly. Removed the link until I can fix it again.

Enjoy it!

Sunday, April 13, 2008

Speeding up releases

It is, indeed, much better to record shorter screencasts. At least for my productivity.
I managed to produce another couple (English and Portuguese) episode of my screencasts between yesterday and today. So expect more frequent releases.
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 here) 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 FISL (International Forum of Software Libre).

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.

For now, enjoy the screencasts.
Download the English version here or see it on Google Video.
Download the Portuguese version here or see it on Google Video.

Bye bye!

Saturday, April 12, 2008

Shorter Screencasts

Hello,
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 iShowU. 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.
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.

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: http://squeak.ofset.org/squeak-dev/.
Meanwhile, enjoy the screencasts.

Download the English version here, or see it on Google Video.
Download the Portuguese version here, or see it on Google Video.

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!

Tuesday, April 1, 2008

Archimedes directions

Hello everyone,
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).

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:
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.

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.

That's it for now folks.
Cya!

Thursday, March 27, 2008

More screencasting

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.

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:
http://www.screencast-o-matic.com/watch/cjetqAVD6 - Requires Java 1.5 browser plugin
http://eclipse.ime.usp.br/~night/00-morphic-en-800.mp4
Or you can see it here (problem is that is it very tiny and no fullscreen option):


The other one is in Portuguese and focuses on the Squeak developments tools. It was recorded based on a developer's image 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:
http://www.screencast-o-matic.com/watch/cjfViPVDH - Requires Java 1.5 browser plugin
http://eclipse.ime.usp.br/~night/01-blocksifsloops-800.mp4
Or see here (tiny video, good sound, will post feature request for blogger to add a fullscreen option):



Enjoy it people!
Bye bye

Wednesday, March 19, 2008

Screencasts on Smalltalk, Squeak and Seaside

Hello everyone,
During Campus Party, I've met Fabio Akita and he was asking about some demonstration of Seaside and screencasts about it. Seaside is a framework to build web applications written in Smalltalk and whose main name is Avi Bryant (who Akita interviewed in two parts: part 1 and part 2). It is a very neat way of building web applications even easier than Rails. It is mainly used with Squeak that is the most advanced free and open source Smalltalk Virtual Machine.

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 Morphic, the main user interface for Squeak. You can see it at (requires java browser plugin installed):
http://www.screencast-o-matic.com/watch/cjeFrOV2c
Or download it in an MP4 47 Mb file (requires some free codecs) at:
http://eclipse.ime.usp.br/~night/00-morphic-800.mp4
or
http://www.ime.usp.br/~kon/MAC5714/00-morphic-800.mp4

I've found this new feature in blogspot to upload a video. Trying here:


I pretend 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.

It requires that you have Squeak installed and running which can be easily done by downloading the correct package for your operating system at http://www.squeak.org/. 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.

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.

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).

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!

bye bye