Skip to main content


Showing posts from July, 2006

Element of practice in programming

Sportsmen, artists, musicians... all follow a system of practice and tournament|product|concert. In the tournament they have to be perfect, but that perfection comes from hours of practice, mistakes, and explorations that happen during training. Software developers on the other hand are always working in tournament mode... cranking code for clients. This is not good, because they do not get a chance to practice, explore, make mistakes, and polish their skills. Some might argue, that their practice happens at work. But such practice is very limited, because at work, developers are always working under time pressure. For practice to be effective, it must happen in a pressure free environment where the trainee can explore, repeat, and perfect her skills. A Kata is an exercise in karate where you repeat a form many, many times, making little improvements in each. Dave Thomas, has combined the principles of Kata and coding practice to create a unique form of coding exercices called code ka

Podcast Session at Omniscient

Had a very interesting podcast listening session at Omniscient today. We listened to an audio interview of Martin Fowler from Bruce Eckel's thinking in code series. Martin Fowler spoke about a lot of things ranging from MDA (and WHY IT CANNOT WORK), why he stays away from multi-threading, his thoughts on authoring and refactoring. He explains why programming cannot be thought of as constructing a bridge. The only people who seem to think that programmers are a commodity are those who have not written a line of code in years. I would really like the team to give some feedback on what they learned from the session, what they liked, and what  they did not like.

Java SE 6.0 has smoother rendering

Prior to Java SE 6.0, there were some issues with Swing painting. When a minimized swing window was unobscured, it took a while for it to repaint. Till then the user saw a gray box. I think they also call it the "gray rect" problem :-) Assume that the application is blocking the event dispatch thread (maybe because it is performing a large computation or loading a large file...). If we minimize and application, then it will not show a painted window upon unobscuring untill the event dispatch thread is unblocked. (offcourse we should not block the event dispatch thread for such a large task. Ideally a task larger than 250 ms should be started in a seperate thread) In Java SE 6.0 these issues are resolved with "true double buffering". Java maintains a buffer that keeps an image of the onscreen window. This buffer is updated whenever the contents of the onscreen window are changed. If we minimize and then maximize the window, the window will not be repainted fr

Video By Richard Stallman

Everyone must watch this absolutely awesome video by Richard Stallman on why free software is important. He had a vision in 1983, and over two decades later he is still absolutely dedicated to it.  Among other things, free software promotes learning, because in RMS's words when a student is doing something with a computer, maybe typing  a command, he might be curious to understand how it works. Well if he is working on a GNU/Linux box, he will actually be able to do that. This ability is the biggest advantage, because it allows students to study a system under the hoods. 

Learning 2.0

What do you think is the future of education? ELearning?... Classroom Learning?... or Blended Learning? All of the above have their supporters and detractors. Without taking any sides, I think each methodology has it's pros and cons. What is effective depends on the type of course, background of students, and access to technology infrastructure. However, there is a trend that points towards the growing popularity of eLearning, and not without reason. A professor in UK has abolished classroom lectures and has replaced them with podcasts, forums, email, and the like. Read more about it here . Having taught technical courses from the last three years, I have some observations on the process of teaching & learning. The process has various components: Presentation of facts Resolution of queries and doubts Ensuring that the facts are retained (through questions and repitition) Promoting a better understanding through discussions and thought provoking questions Promoting even