Written by Dương “Yang” ヤン Hà Nguyễn (cmpitg) and available on his weblog, here is the full text of the post:
Last Saturday (2011/05/07) at AUF/CNF center, Hanoi Coding Dojo session 4 was held sucessfully. Due to the former schedule of Hanoi Ubuntu release party, we had to shift our session from 2:00PM – 4:00PM to 1:00PM – 3:00PM. Compare to our previous sessions, fewer people came but it was still a great one!
Unlike usual, Serge did not prepare any Katas, leaving the room in a dead silence for a very long period of time (by that I mean for ages). Everyone was looking at each other with unspeakable feelings. Until Yang (cmpitg), breaking the freezing of fear, proposed a Kata for the session. The problem was named Prime Filter, with the idea of extracting prime numbers from an arbitrary list of integers. The full problem specification and source code can be found at Github.
After a short discussion, we decided to use the Prime Filter Kata as a Prepared Kata, presented by Yang, and Common Lisp as the programming language. Common Lisp has an unusual syntax (using prefix notation) and different way of thinking compared to other popular programming languages, so each time Yang wrote some code, he had to state clearly about what he was doing and why he was doing that for everyone to understand. The Kata was being solved in more than an hour, leading to many interesting discussions.
Our first discussion was about solving a problem in BabySteps. Normally, developers write a relatively “big” unit of code once at a time. On the contrary, Coding Dojo’s Kata requires you to write one small unit of code at a time. “One small unit of code” means just a few lines of code with very simple logic, solving a very simple problem. This is not a usual tendency of a developer, which often leads to confusion for newcomers. When thinking of baby steps instead of big ones, developers don’t know whether the way on which they are going would solve the problem. So should we “think big” first and “think small” latter or should we just “think small” and let it show us what goes right and what goes wrong? After a while discussing the question, we decided to use the latter method: think small and let the idea correct our solution. Why? Remember the purposes of Coding Dojo? The point is to learn as much as possible. The former way (aka “think big”) might help us solve the problem faster and easier, but the latter definitely helps us learn much better. The slower we go, the more we can see. The more we see, the more we learn. Not only is this important in theory but also it’s worth doing it in practice. You code would be much better if you take your time learning more about the problem, the solution and your code itself.
The second discussion was about code refactoring as Yang did not do it properly. Whenever you refactor some piece of code, remember the vital point: change the face, not the heart. I.e. restructure the code, rename identifiers, encapsulate data, … but keep the semantics.
And lastly, we had a very interesting discussion about TDD (aka. Test-driven Development) in Coding Dojo and in practice. We had more understandings about TDD, its advantages and disavantages, its uses in practice, why its cost (money, time, …) is worthy. We had taken real world example into the discussion, including the development of Python, eXoPlatform, and OpenOffice.org. Ideas include:
- TDD is time-consuming at the beginning of the project but time-effective when the project is already in progress.
- TDD helps developers keep track of the exact features they want to develop. Remember, developers are usually not users, their standpoint is usually different from users’ standpoint. Hence, what they make is not always what users need.
- TDD reduces the time spent on debugging a complex system since developers are able to know exactly what goes wrong when using tests.
- TDD helps keeping application backward-compatible.
- TDD might be used as a good tool to track the progress of a project.
- TDD is a double-edged sword, being extreme or focusing too much on testing may dramatically slow the project down. It could even lead to a forever-project.
- Sometimes, tests are so trivial and unnecessary.
- Not everything can be tested. Not everything which can be tested can be tested automatedly.
“That’s all, folks!”. The TDD discussion ended our session successfully. Thank you all for coming and sharing with us on that day. We really hope to see you again in the next session.
Bonus: JC’s PR for Hanoi Coding Dojo @ HanoiLUG mailing list (see session Links)
Coding Dojo Session 5 (scheduled):
- Date: 14 May 2010
- Time: 2:00PM – 4:00PM
- Place: AUF/CNF center, Institut de la Francophonie pour l’Informatique, 42 Ta Quang Buu, Hai Ba Trung district, Hanoi. See Wikimapia.
- Discussion group (free to join): http://groups.google.com/group/hanoicodingdojo/
- Source code and problems: https://github.com/organizations/HaNoiCodingDojo
By Dương “Yang” ヤン Hà Nguyễn (cmpitg)
This is the announcement for the first #CodingDojo in Ha Noi by Serge Stinckwich !
#CodingDojo session was first invented in Paris in 2004 by the XP (eXtreme Programming) community. The aim of these sessions is to enhance the coding skills of attendees by doing some very small exercices in a funny atmosphere. This is like when you want to practice a sport like Judo, you need to practice some basic exercices with some judo masters before doing serious business like competitions. There are usually two styles of exercices :
- Kata prepared by someone before the session and executed in front of the public or
- Randori, a more exploraty form of a Kata where the whole group participates.
More information are available here: http://www.codingdojo.org/
Ha Noi #CodingDojo Organizers: Dương “Yang” Hà Nguyễn + Serge Stinckwich
Location: CNF Hanoi, Viện Tin học Pháp ngữ (IFI), ngõ 42 Tạ Quang Bửu, quận Hai Bà Trưng, Hà Nội
Schedule: Saturday, April 16th 2011 2pm => 4pm
Program of the first session (we will follow the same format than the
#CodingDojo from Paris):
- 5 min: Select the frequency and the date of the next #CodingDojo
- 20-30 min: Presentation of what is a #CodingDojo (Serge) – For the next session, this time slot will be used to do a retrospective of the previous session (what went well, what was interesting, what was frustrating).
- 10 min: Decide on a topic for this session
- 40 min: code (Kata or Randori)
- 5-10 min: Mid-session break to discuss how things are going
- 40 min: code (Kata or Randori)
The sessions will be completely language agnostic. The programming languages chosen at each session will depend of the attendees.
At the moment, the organizers know about (in no particular order) : 1) Python 2) Ruby 3) Smalltalk 4) Common/Lisp 5) Clojure 6) Java
More exotic programming languages like Haskell, Brainfuck, Scala, Lua, … are welcome. This is not really a big deal if not all the people don’t know the programming language of the session, but you may notice that a #CodingDojo is not a good place to learn a new language. The goal is to learn how to better program not to do some proselytism (mine language is better than yours). We need people who knows about these languages in order to conduct sessions. What is also particulary important if you want to organize a Kata or Randori, is to know how to write unit tests with these languages.
More information about the philosophy behind a #CodingDojo are available here:
PS : As this is the first session and we lacking some experiences about this kind of event, we want to know before saturday the people who want to come. There is no prerequisite regarding programming languages or knowledge, but you need to sufficiently proficient in programming and knows a little bit about object-oriented programming. We expect that more elaborate sessions will be organized in the future and we will discuss about the frequency of the #CodingDojo
during the first session.
Like every year, since the first time in 2006, The Hanoi University of Sciences (HUS) will organize a celebration of Free softwares on Saturday 11th December 2010, starting at 8:00 am and finishing in the late afternoon.
Address of the event is at: 334 Nguyên Trai, Hanoi. More information on the event will be updated on the event’s web site at http://fossathus.com/. The program includes presentations in the morning, distribution of Free software CDs. A game contest with SuperTuxKart will also take place.
Saturday 16th October 2010, 14h-18h, we will celebrate the final release of Ubuntu 10.10 “Maverick Meerkat” at the CNF Center located inside the Institut de la Francophonie pour l’informatique (IFI), 42 Tạ Quang Bửu (phone: 04-38 68 48 85 ; email: email@example.com). It will be followed by a “beer-party” from 18h to 20h. Several presentations on the new features of Ubuntu Maverick will be made starting 16h30. There will be questions and answers. Free live CDs (self-birned) will be distributed as well as original 10.04 LTS CDs. If you like help in installing or testing your computer with Ubuntu, you may bring it starting from 14h00. Do not forget to first backup all your essential data !
This OSM event, hosted by CNF-AUF, will be the first one to be celebrated in VietNam. Among its activities it has been arranged an OpenStreetMap workshop and a Mapping party. ¡Mapping and activities are free!
When? Saturday 18th July, 2009, starting from 10h00 with the workshop, going through (free) lunch, then mapping til 17h00, before entering the data in OSM.
Details and registration to the event are here !
To celebrate the new release Fedora 11, iWay and HanoiLUG, with support of FedoraProject.org, will organize Fedora 11 Release Party on Friday, 12th June, 2009 (from 18:30) at Lam Anh Cafe (120, A5, Van Phuc st., Ba Dinh dist., Hanoi).
The party is an opportunity for HanoiLUG and all friends who use, promote and contribute to Linux (not difference between Fedora, Ubuntu or any Linux distros) and FOSS to meet and discuss about interesting topic, welcome the new Linux distro release Fedora 11.
More details available at: http://www.iwayvietnam.com/en/Fedora-11-release-party.html
Please kindly forward this information to your friends and colleagues.
You may also send a confirmation of your participation by email to Miss Nguyêt Phuong (phuongnn (at) iwayvietnam.com) to facilitate the organization.
Thank you very much and welcome to join with us!
A first meeting of the OLPC Vietnam developers will be organized in Hanoi on the 5th of June starting from 2pm until 6pm. The meeting will be hosted by CNF (Campus Numérique Francophone)
Hanoi. Address: Ngõ 42 Tạ Quang Bửu, Q. Hai Bà Trưng, Hà Nội (Tel: 04-188.8.131.52)
The tentative schedule for the meeting is as follows:
– 14h00-14h30 : Report of Vung Vieng OLPC deployment experiment (Serge Stinckwich)
– 14h30-15h30 : Sugar development platform presentation + XOs demonstrations
– 15h30-16h00 : EToys demonstrations (Serge Stinckwich)
– 16h00-18h00 : Discussions about OLPC-Vietnam
If you want to talk/demonstrate something related to OLPC and/or Sugar, you are welcome to come and propose a topic.
The morning, if you wish to, you may come to the CNF, from 10h00 to 12h00, to get Sugar on a Stick (based on Fedora 13) or Trisquel Toast (Sugar ready environment based on Ubuntu 9.04) installed on a USB key (minimum 1 GB) or installed as dual boot on your computer. This is the best way to test the Sugar environment with your own children or your young brothers/sisters.
Some useful links:
Barcamp Hanoi 2009 will be held on April 19th, from 8.30 AM to 5.00 PM, at RMIT International University, Hanoi campus – 2/2C Van Phuc Compound, Kim Ma street, Hanoi.
Topics may include, but are not limited to: online services, social media, startups, UI design, entrepreneurship, VC, Web 2.0 technologies, online marketing, online advertising, online payment, e-commerce, open source software, hardware hacking, robotics, mobile computing, bioinformatics, programming languages, even the future of technology or global issues.
Registration is free and the number of seats is limited. Click here to register your topic.
Document Freedom Day (DFD) is a global day for document liberation. It will be a day of grassroots effort to educate the public about the importance of Free Document Formats and Open Standards in general.