Hanoi Coding Dojo Session #7
Monday 30 May 2011Written by Dương “Yang” ヤン Hà Nguyễn (cmpitg) and available on his weblog, here is the full text of the post:
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[1].
After a short discussion, we decided to use the Prime Filter Kata as a Prepared Kata, presented by Yang, and Common Lisp[2] 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[3]. 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[3] 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[4] (aka. Test-driven Development) in Coding Dojo[5] 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:
“That’s all, folks!”[6]. 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[8] @ HanoiLUG mailing list (see session Links)
Coding Dojo Session 5 (scheduled):
Links:
By Dương “Yang” ヤン Hà Nguyễn (cmpitg)
#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 :
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
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:
http://www.slideshare.net/ntoll/organise-a-code-dojo
and here:
http://www.slideshare.net/caikesouza/coding-dojo-2879242
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.
Un cours d’introduction à la ligne de commande sous GNU/Linux sera organisé en français (traduction vietnamienne simultanée), le samedi 16 mai 2009, de 8h00 à 12h00, avec la participation de Francis Dufeil, membre récent de la liste Hanoilug. Ce cours est avant tout destiné à un public vietnamien de débutants qui ont déjà installé un système GNU/Linux en mode graphique et qui désirent améliorer leur maîtrise du système grâce à la ligne de commande.
Pour tout renseignement complémentaire, veuillez contacter le Campus numérique francophone (CNF) de Hanoi (Tél: 04-38.68.48.85 ; @ : cai at vn.auf.org)
LTSP stands for the Linux Terminal Server project. It is a technology which ables several users to work on a same computer (the LTSP server) through connected terminal clients (the LTSP network). Similar technologies (requesting special equipment hardware) exist in the Windows environment, but LTSP under GNU/Linux makes it very cost effective as no special hardware is necessary other than ordinary network components.
After nearly one year of an experimental LTSP deployment, involving one Core 2 Quad (4 GB RAM) server installed with Ubuntu 8.04 serving up to 16 terminal clients, the Campus numérique francophone of Hanoi is launching its first hands-on LTSP short training course (in Vietnamese) on saturday 18th April 2009 (see details in Vietnamese here).
This first course of 3.5 hours should be sufficient for providing GNU/Linux users the ease of installing themselves a small LTSP network for their own purpose afterwards.
The LTSP technology, associated with Ubuntu, makes it an user-friendly experience, even for GNU/Linux beginners (not complete beginners though, but who are at ease with using computers), allowing them to recycle old computers for e.g. building up an internet-connected network in small libraries, associations, at home, etc.
More details on the C3LD website.
Trung tâm kỹ thuật số (CNF) của AUF [1] tại Hà Nội sẽ phối hợp với Hanoilug để mở một lớp học Linux cho những người hoàn toàn không biết gì về Linux ngày thứ bảy 17/05/2008, kéo dài 3 buổi, kết thúc sáng chủ nhật 18/05/2008.
Lớp học sẽ bắt đầu vào 8g00 sáng ngày thứ bảy và 8g30 sáng ngày chủ nhật. Mỗi lớp học chỉ nhận tối đa 12 học viên (thao tác 1 người 1 máy), nhận theo thứ tự đăng ký và nộp phí trước.
Học phí [1] cho lớp học, bao gồm các tài liệu in, các đĩa CD để cài đặt và xem video, các buổi giai lao uống cà fê, là 100.000 VND (người đi làm) và 50.000 VND (học sinh, sinh viên các trường đại học công lập và dân lập). Đặc biệt các bạn nữ sẽ được ưu tiên và sẽ được giảm 30% chi phí (tức là 70.000 đ người đi làm và 35.000 đ cho sinh viên).
Thời gian đăng ký và nộp phí từ ngày 28/04 đến hết ngày 15/05/2008 tại trung tâm CAI-CNF, ngõ 42 Tạ Quang Bửu (Q. Hai Bà Trưng), Hà Nội (ĐT : 868.48.85). Các bạn muốn theo lớp học vui lòng tải một trong 3 loại phiếu đăng ký sau đây :
http://hanoi.centre-linux.org/article.php3?id_article=88
Đối tượng của lớp học Linux này là những người chưa biết gì về Linux hoặc chưa biết cài Linux trên một ổ cứng để dùng song song với một hệ điều hành khác.
Trung tâm kỹ thuật số (CNF) của AUF tại Hà Nội sẽ phối hợp với Hanoilug để mở một lớp học Linux cho những người hoàn toàn không biết gì về Linux ngày thứ bảy 01/12/2007, kéo dài 3 buổi, kết thúc sáng chủ nhật 02/12/2007.
More information in the CL3D website
Đối tượng của lớp học Linux này là những người chưa biết gì về Linux hoặc chưa biết cài Linux trên một ổ cứng để dùng song song với một hệ điều hành khác.
Trung tâm kỹ thuật số (CNF) của AUF tại Hà Nội sẽ phối hợp với Hanoilug để mở 2 lớp học Linux cho những người hoàn toàn không biết gì về Linux trong tháng 04/2007 theo lịch như sau :
Saturday 16th December, HanoiLug volunteers LeRoy Duvall and Lê Xuân Thảo trained 13 Vietnamese participants to install Linux during a full day, at the CNF-AUF.
Ubuntu 6.06.1 LTS, Desktop edition, customized for Vietnam by JC André, has been used for demonstration during the Linux crash course. A Vietnamese translation of the Ubuntu Desktop Guide was given to the participants, as well as two CDs including the one cited for demonstration and Ubuntu 6.10 alternate CD.
Among the 13 participants, 4 had never used Linux and 9 had never tried to install Linux before the course. All but one have their own computer at home.
All successfully installed Ubuntu on the computers provided by CNF-AUF. After the course, all of them declared capable to install Linux by themselves and wanted to learn more about using Linux with computers.