In the last few days, I attended a series of events organized by Ma3bar.org to disseminate the use of open source in the Arab Region. The vision is to contribute to the development of the society through such initiative. The objectives are truly amazing. However, is it doable?? Personally, I am very optimistic even with the differences in opinions on how to approach this.

My optimism stems from my experience with students. I saw skills, knowledge, awareness and enthusiasm that can overcome any obstacles in such area. I guess our role (academics) is to guide and motivate the students who are an integral part of such initiative. They are tomorrow’s employees, managers, educators, etc

However, before we start doing anything, I believe we (current Ma3bar members) should really adopt the open source philosophy and practices. Are we truly open? It is not easy. I have loved and used open source tools since my undergraduate years (*cough cough* long time ago *cough cough*). However, it wasn’t easy for me to be that open in my open source SE course. I have to develop and write my material on the wiki and share it with the students in a draft mode. It is not easy for me that students read my incomplete text. Additionally, I share all my thoughts (good and bad) with the students through the blog. It is truly truly open. So, are we ready???

One thing I learned about open source is that we can’t fake it :) We can’t pretend that we believe it while we don’t. It just won’t work. Therefore, let us first get into this culture. Let us see if it is for us and then decide to spread it.

I believe the Ma3bar’s workshop was enriched by the differences among the community members with their variety of expertise, experiences and visions. Diversity caused richness, but of course it wasn’t easy to reach to a common ground. However, I believe the panel discussion at the end of the launch event was very fruitful and a great wrap up of the things said. The most important output in my opinion is the decision to spread the culture and to work online as a community. Whether it is in the awareness, development or training, I believe we all have something that we can start with. So, let us start by following the Bazaar model. We have no chance otherwise ;)

I am already blogging about what we are doing at the GUC and g-osc but in the future, I will do my best to blog about specific experiences in the Arab region.

g-osc visualisations

November 1, 2009

During the third week in the open source course, the students were asked to develop any type of visualisation using processing.js for our g-osc wiki which is powered by mediawiki.

I suggested the use of the Mediawiki API which can be used to get some interesting data from any instance of media wiki, for example, list of pages, history of pages, list of users, their contributions and more.

Three of my students worked on “Blogs on Blobs” which gives a cute burst of bubbles that can be moved around. Each blob has the name of a specific blog. When you click on a blob, it opens the related blog. This is a demo of it, try it on firefox.

If you try to view it in google’s Chrome, you will not see the text. Saher El-Neklawy grabbed my attention that this is a problem with processing.js since the text doesn’t appear in chrome. You will also notice that in chrome, the blobs are moving really really fast :) In my discussion with saher, he associated this to the speed of Chrome’s V8 compared to firefox’s spider monkey, but is it really? I feel I am missing something here ;)

Another very interesting visualisation shows all the wiki pages, their relationships and history. As you can
see in this demo, all the pages are visualised as nodes with edges connected linked pages to each other. You can play around with the nodes with a speed that gives you an intuitive feeling of interaction ;) If you click on a node, the details of the page and the contributors will appear in another view. Very cool guys :) One of the team members blogged about this experience which appears to have been somehow unpleasant ;)

We have more visualisation, yet non interactive. For example, visualising members’ contributions to the wiki or the daily activities of the wiki as bar charts.

A great thing about these visualisations is that they can be used with any instance of mediawiki. So, they are actually a contribution to the mediawiki community.

Again, well done to everyone who contributed to this work.
I am very happy my students are more and more involved in the real worl. Good job everyone.

What is it with students that make them want to jump (skip) any process? They can be intereted in a project but still they resist and avoid any process that is proved to help them achieve their final goal. The easier the steps get, the more resistant they are. Instead of being encouraged by the fun part of doing the step, they choose to underestimate it and not take it seriously. They can’t even believe that such steps are done in real lfe :)

In HCI, it is that time again when I ask students to do a task analysis before going into any implementation details. The analysis is being treated as if it is an unncessary milestone that can be fabricated or just randomly put right before the deadline. Taking time to think of it is a joke. This is happening even with me skipping many of the details required in an analysis (for time purposes).

The problem gets bigger when i ask for a paper prototype which is something that is very effective to make a cheap and fast start of your system. A paper prototype is really effective in capturing features. However, the idea of cutting paper and doing a the testing on it makes them laugh without any appreciation.

I am just wondering why developers resist any process. They abide by it only if forced (by a manager or a teacher). Can’t we learn from all the mistakes we do by jumping right into code? We have to start appreciating what current research is telling us about a successful process. Let us even do better than that, let us go through the process and pick up the problems with it in order to improve it. Don’t underestimate,explore then innovate.

I am back to my undergraduate years. The open source course is bringing me back to the real excitement of playing around with software tools. My only problem is that I don’t have time for anything else related to my teaching duties (keep the secret ;)

I think I am the only who is enjoying the course. Well, I can’t blame the students for being overwhelmed but I am hoping that they will be at least interested. Today, we were supposed to play around with BesPin, build it and set it up. We were supposed to insepct paver and pavement.py but we ended up just fixing totaly irrelevant issues and just verbally discussing things. I don’t see the huge problem now because as they start working on their assigned BesPin bugs, they will have to get involved deeply and personally with things.

Ubiquity commands:

The students submitted a list of ubiquity commands to server our g-osc community. They are still in the process. So far, there are some very interesting things ;) I am preparing a voting extension to collect voting for a super contributor in this specific contribution related to ubiquity.

YAROCAB:

It is still evolving. Review of the review followed by my pre and post review ;) I love that. Hopefully, it will end up in a nice document ;)

About the basics:

I decided to dedicate one whole lab to do the basics that we missed so far: svn and maven. I already have the tutorials and exercises prepared for them, so I will prepare for an extra sessions to be an easy ride for whoever is interested ;)

I have to stop now, more updated soon. I need to leave the tools and do some slides ;)

The Mess-Understanding

October 15, 2009

The second meeting in the open source SE course was a mess with misunderstandings that ended in contributions and self discovery. Apart from the fact that I actually caused confusion among the students about version control, it was very useful in many ways.

I am not going to go through the details of the mess when it comes to available lab resources (which are hopefully available now) or to timings. I believe that my main problem was trying to conduct a lab that meets the expectations and the skills of all the students. Some students expect basic step by step type of work and others expect to jump and I believe some are ready to fly. I learned a few lessons about this since I will try to be ready with step by step, jumping and flying material and let everyone pick the suitable ride. Again, it is not easy but what is ;)

I believe a very useful part of the lab was the real contribution to ubiquity-firefox. With different speeds, a good number of the students were able to find the proper solution for an enhancement requested for ubiquity. So far, I only know of one team who worked on completing the task and they already submitted it to ubiquity trac. This is the whole purpose of the course: to contribute to real systems and become part of a real community. I was also very happy to see what people are made of: how presistent they are? when will they give up on something? how will they approach the search of a solution? It is amazing how this type of work can reveal one’s personality.

I am writing down my own lessons learned and preparing my self for more learning :)

HCI is a joy :)

October 8, 2009

I had a technologies workshop for my HCI students today. The great part about it is that it was done by students as well :) I arranged for students to mentor other students with new technologies that they have learned through their bachelor projects: silverlight, flex, Java-ME, the Android and multitouch interfaces. The idea is to pick a technology and think of a new “out of the box” idea for a rich interactive interface.

My student Saher already blogged about the workshop. I will stay away from technicalities and just entertain my self by blogging about the fun parts. First of all, the war between silverlight and flex. Silverlight and Flex can be used for building rich interactive web applications but the affiliations are so different ;) Adobe versus Microsoft. You can imagine the interesting discussion. The students were laughing, some from understanding the war and the others from being confused (why there is a war) ;)

Second is the discussion about ideas of projects with students during the breaks. That was very interesting.
It is so nice when you encourage people to think totaly out of the box. Many of them can’t see the box at all ;) Ahhh there were many other hilarious situations happening throughout the workshop. We should do this more :)

At the moment, I am very eager to start working on their projects. I hope the smiles don’t go away as as soon as the real work starts ;)

The First Meeting

October 6, 2009

Yesterday, we had our first meeting in the open source development course. I am not sure how the meeting went. The number of attendees were more than I ever expected. This makes me happy and honoured since alot of the attendees are people I deeply respect. I got a bit worried though about our future meetings since we will do alot of practical work in which I am expecting to face many problems :)

In this meeting, my main goal was to trigger the students’ interests in the philosophy of open source and make them eager to learn the practices of open source. Again, I don’t have a clue if I was successful in that except from very few positive comments. However, I believe I could have done better in introducing collaborative and communication tools. I will do my best to catch up on that. Anyhow, my main disappointed was that I lost all the energy by the end of the first two hours. I literaly felt the term “out of order”. I couldn’t put two words together. May be the four hours is not the best idea. We will see how it goes.

Our first contribution will be the YAROCAB document. This document is a collaborative effort to reflect on the Cathedral and the Bazaar document by Eric Raymond. Every students will take one piece of the document and write his thoughts. Then, we will review each others’ pieces together. Let us see what GUCians can do :)

The rollercoaster

August 3, 2009

I feel I just came out of a roller coaster ride. Do you know this feeling? shocked, happy, scared but mostly on top of the world :) I realised “again” how blessed I am to be an educator. For the last hour and 25 minutes, I watched the most inspiring and amazing lecture one could see. I cried alot and I laughed more. At some point, I was crying and laughing at the same time. I stumbled into this lecture as I was browsing through HCI research and I wasn’t expecting to find something that alerting for me. It is a lecture by Randy Pouch, an accompolished and a famous academic in HCI. It is exactly what I needed to hear as a junior academic. I can’t get over the fact that everything I heard in this lecture was something that I desperately needed to hear to become the academic that I always longed to be.

There is nothing that can compensate watching this lecture but I will put together a summary of what I need to remind myself of all the time. The title of the lecture is “Really achieving your childhood dreams”. How Randy Pouch moved from “really achieving your childhood dreams” to “enabling the childhood dreams of others” was unbelieveable. Even more, he introduced a different look at dreams and now it is about “leading your life” where your dreams are only some steps to where you should go. The pivot Quote of the talk was: “The brick walls are there for a reason: they are not there to keep us out, they let us prove how badly we want something“. There is endless advice to take away from this lecture but here are some of what I loved as literary said by Randy Pousch:

Bring people from various fields together to enrich the experience for everyone involved

When your students exceed your expectations then raise the bar because that means you don’t know where the bar should be and it would be unfair to put it any lower.

Showcase and share the work
If you are going to do anything that is pioneering, then you will get arrows in your back. You have to put up to it.
If you have to give up something precious, find someone better than you to take over
Give credit when credit is due
From Education to Edutainment
Focus on People and Learning to work in Group
Take feedback from your peers and become self reflexive on your own issues
Don’t be arrogant because it will limit what you can accomplish
Have fun doing what you do :) (there is no other way to play it)
Help Others
Loyalty is a two way street
Get people to help you because you can’t get there on your own; do that by:
telling the truth; being earnest (long term quality); apologize when you make a mistake; focus on others not yourself.
Brick walls are there to show our dedication; they are there to separate us from the people who don’t REALLY want to achieve their dreams.
Don’t bail; the best gold is at the bottom of barrels of crap
When you do the right thing, good stuff has a way of happening
Get a feedback loop and listen to it; the hard part is the listening

Show gratitude

Don’t complain; just work harder

Be good at something; it makes you valuable

Work HARD

Find the best in everybody; no matter how much you have to wait for them to show it

Be prepared: “Luck” is where preparation meets opportunity

If you lead your life the right way; the dreams will come to you

I shouldn’t forget why I got into this career in the first place. The advice about not bailing is the most important for me. I will try to focus on only one thing: edutainment :)

Teaching the “soft skills” of software engineering is a real challenge. As an academic I was stressing the difference between soft skills and programming skills based on my vision and my experience but here you go, it seems that everyone is there with me: Here is the podcast

May be we should have it clearly stated in books, instead of following books that don’t match real life. Introducing the “culture” of Software engineering and stressing the “Global” (love this word) practices is the key. I have to say that I have seen many good students who are not good software engineers. I feel I did my job in introducing them to the culture that “exists” now and I only hope that by experience they will start emersing in these practices.

In the podcast, I loved the part about the assessment. That was my main challenge. Seriously, the main challenge for me and my TA was how to assess. I believe that took us the most effort. As it is said in the podcast, it is not the quality of the software, but it is how they worked as a team: email, posting, forums, meetings. Wowwwww, we were doing it right in the Software engineering course :) )))) Who would have thought that our first time is so experienced :) )

Some of the great practices I recommend and which can also help in assessment as well are the QA, peer reviews, peer mentors and focal points. Early team deadlines was another technique introduced by the students to their teams. A great idea. We also suggested tasks reshuffling in order to keep the development going and at the same time, push the disengaged members.

What the students didn’t experience so far is working in a physically distributed team in different time zones and with absolutely no physical face to face communication. Ahhh an idea for a nice course, it is an experience in our advanced SE course but not a requirement in it.

What is next? A global initiative?? Let us start by a national initiative and see what will happen ;)

Nokia Bel3arabi Contest

July 17, 2009

I believe the competitions are a great learning experience for students as they get to compare their work and learn in the real world. Mobile application development is becoming mainstream now and the challenge is to get the killer app idea that could spread and scale. I found this interesting contest and I hope our students get to do something in it:

http://www.callingallinnovators.com/bil3arabi/default.aspx