Monday, September 29, 2008

Archimedes' site becoming a forge

Hello there,
I've been working on 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 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

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

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