Developers in open work spaces

Are you working in open work space where all your co-workers are sitting in the same place with no walls between each desk? If your answer is yes, then mostly you know that the majority of people don’t understand how their loud talks can affect the productivity of their colleagues. some jobs require a big amount of concentration, let me just be specific and talk about software developers.

Most companies don’t give each software developer his own office and a door that he can close whenever he wants to concentrate and get isolated of the world. to provide an office to every developer you need a big place and big places are expensive and most software companies are managed by people who don’t get why would these developers need offices; they say that developers are just normal employees, not super stars.

We know that it’s not about being super stars as much as it’s about a fact that developers work on solving problems that contain a lot of little details, and the normal human brain won’t be able to hold those details together for longer than 5 minutes and connecting the little details is another harder task. I don’t imagine that a developer working while surrounded with many talking people will write code with good quality. he won’t be able to focus and won’t notice many logical errors and after some days this will give him more bugs to solve and more time to lose. this will force the company to pay more money and lose more time.

I don’t think that you will get your own office soon; unless you get the chance to work in a company that treats developers as super stars or maybe you will wait longer till you become a manager.

But now, what can you do? I think you can try to talk with your managers about how this noise affects you and your colleagues. and try to come up with some easy to implement ideas like making every 2 or more guys who want to discuss something go out of the work area till they finish their talk or even just stay in the work area and keep it down as much as they can. it won’t be a hard thing if your co-workers respect the value of working in a quiet place. but some times it won’t be that easy, like when you find yourself sharing the same work space with people who talk a lot as their job forces them to. like customer care and marketing guys. and I don’t know a solution for this case.

Another thing that you have to put a solution for is the interruptions done by co-workers. haven’t you ever been working on a very hard to solve problem that needed all your brain power and you were just seconds away from finding the solution and suddenly you find someone tapping on your shoulder to ask you about the name of a function that he doesn’t remember ?! I know that you hate this guy and at that moment maybe you wanted to kick him in the face, but you controlled your anger and just answered his question and left him to leave in peace and tried to go back to what you were doing and you couldn’t remember the last point you arrived to in your thinking, and probably it took you around 15 minutes to get back to your last concentration level.

You have to talk to your colleagues about this problem and tell them that they can send you emails that you will answer later when you are free, or maybe you can use a piece of paper with “No Interruption, please” written on it. you can put this paper on your chair/desk whenever you need to focus on something important, so your co-workers will know that you aren’t ready to talk at the moment.

there are many pros and cons of working in open work spaces, but we can get over the cons by putting effective rules that can control the noise and interruptions, and you won’t succeed in that unless your co-workers are understanding the problem and believe in the solutions.

maybe you want to read more. Joel Spolsky talked about this topic before when he was talking about the design of his company’s new office and it was the 8th rule in the famous Joel Test “Do programmers have quiet working conditions?” . also,  you can make your managers and colleagues read the field guide to developers.

so at last, I have to say that I don’t hate open work spaces but it will be a good work environment if all co-workers understand the new rules that have to be applied to make it a healthy work environment .

Irssi as your IRC client with notification using shnotify.pl

After spending the last years trying many IRC clients, I found that all GUI clients suck. so I decided to use a terminal based client and all recommendations pointed me to use Irssi. It took me around 2 hours to get used to how it works, just some commands and installing some of its scripts got me to do what I want. maybe you will love using it too if you are spending your day in front of terminals or if you just believe that GUI clients aren’t your best choice.

Installing it on Ubuntu wasn’t a problem, just like what you always do

sudo aptitude install irssi

now run irssi in your terminal to start it. now you can connect to any IRC server by typing this

/connect irc.freenode.net

Irssi won’t remember any settings and auto start it till you tell it to do so, and I wanted to make Irssi auto-connect to freenode.net on startup

/SERVER ADD -auto -network freenode irc.freenode.net

also, I didn’t want to type my password every time I connect to this server

/NETWORK ADD -autosendcmd "/msg nickserv identify mypassword;wait 2000" freenode

this will run the IDENTIFY command with my password after connecting to the freenode server and will wait for 2 seconds before doing any thing else.

now I can join any channel the normal IRC way by typing

/join #channelName

and I can jump between my opened channels using CTRL+n and CTRL+p , or by pressing ALT+ window number . if you are using gnome-terminal with many opened tabs, maybe you will have problems with moving between channels using ALT+number as this shortcut is used by gnome-terminal to jump between tabs.

Also, I found some nice scripts for Irssi like
nickcolor.pl , this script will give each user in your opened channels a separate color.

trackbar.pl , this one will put a separator (one line) after the last message appeared in every channel before you leave it.

installing these script is easy, you can put these script in ~/.irssi/scripts/ , then in irssi load them using

/run scriptname.pl

if you like a script and want to auto-load it on start, just create another directory “~/.irssi/scripts/autorun/” and create links in this directory pointing to your scripts that should be auto-loaded.

I wanted Irssi to notify me when anybody mention my name by showing me a notification bubble. I found here a script “mumbles.pl” written be Matthew Weier O’Phinney our Zend Framework warrior. but for my bad luck I didn’t know how to get the mumbles notification server specially as its website is down. so I tried to play with that script to make it show notifications using zenity. you will find the code here, you can create a new file “shnotify.pl” in your ~/.irssi/scripts directory and put that code in it. this will show you a notification bubble whenever your nickname or any other word you tell Irssi to highlight using the /hilight yourword command is mentioned.

use strict;
use Irssi;
use Irssi::Irc;
use vars qw($VERSION %IRSSI);

$VERSION = '0.1.0';
%IRSSI = (
 authors     => "Ahmed Shreef",
 contact     => 'ahmed@shreef.com',
 name        => 'notification bubble for Irssi',
 description => 'This script will show a notificatin bubble near the systray when your nickname is mentioned',
 license     => 'New BSD',
 changed     => "2010-6-9"
);

sub shnotify {
 my ($dest, $text, $stripped) = @_;

 if (($dest->{level} & (MSGLEVEL_HILIGHT|MSGLEVEL_MSGS)) && ($dest->{level} & MSGLEVEL_NOHILIGHT) == 0)
 {
 if ($dest->{level} & MSGLEVEL_PUBLIC)
 {
 my $message = $dest->{target} .": " . $stripped;
 `echo "message:$message" | zenity --notification --listen --window-icon=null`;
 }
 }
}

Irssi::signal_add({
 'print text'    => \&shnotify
});

tell me if you like it or if you need some help.

Slides: 20 minuntes intro. to TDD (Test Driven Development)

Today I had my first chance to give a talk about TDD. as this was my first talk ever . it felt weired and before the start of the talk, I tried to focus and some colleagues gave me some hints before the start and gave me guidance and some material to help me prepare for the talk. it took me full day to be able to get an idea on what I will include in my slides and how to keep the attendees awaken and interested as much as I can throughout the time of the session.  anyway, it went well and had good feedback from the attendees. here you can see the slides and leave me your comments to enhance this talk in the future.


The new move

Looks like I lost the habit of blogging allot after my long stay in the army. I did move this blog to a new server after its long stay for 5 years on spaces.live.com, as I thought it’s time to give this blog a kind of personal look and feel. I will try to start blogging here again about my daily experiments with tools and ideas I meet every day. I did think before that I have only to write posts that contain code or that have expert feel in every sentence, but this didn’t feel like me or what I wanted this blog to be.

Last November, I did move to Cairo to start working for OTS on their interesting projects and ideas. the move to Cairo was something I wanted to do long time ago. being in the capital where all the big events happen is very important for someone like me. I did benefit from attending events like Cairo Code Camp 2010 , GNU/Linux Install Fest and the awesome seminars organized by AgileEgypt and the new UXers group. the benefit isn’t only in the big knowledge you gain from events like thos, but also from meeting smart and enthusiastic people who care about what they do and try to spread the knowledge they have. I always wanted to be part of something like that.

Some friends started encouraging me to start giving technical speeches about different topics. I already know that public talks aren’t simple and require courage and some practicing. our team in OTS started a new activity by doing internal technical sessions twice every week about various topics that can increase our knowledge. I was thinking about proposing to give a session as part of this internal effort, and it can be my start to get some experience on how to handle the public speaking phobia and on how to organize my talks. I hope this can be a good start -isA-.

I still don’t know what should be the topic I should talk about. I was thinking about giving something light but contains some tricky points where most developers fail into when they write JavaScript as they just think about it the same way they think about their server side programming languages whatever it was Java, C# or PHP. also, another idea was to talk about TDD (Test Driven Development) as a concept and showing some simple test cases with JUnit, and if they get interested more in the topic, it can be a good idea to continue this with a series of sessions about TDD and  test automation.

Beside all this, I always wanted to continue my studies to get a bachelor degree in IT or CS. so, I started studding again by attending the EELU (Egyptian E-Learning University). I hope this can be another push to achieve some of my goals -isA-.

GNU/Linux Install Fest [April 3, 2010]

Next Saturday April 3, 2010 in Culture Wheel [Sakiet El-Sawy], there will be a Gnu/Linux Install fest.  in that day, EGLUG volunteers will give sessions about installing, using and programing [web/desktop] applications over Linux. if this is your first time to hear about Gnu/Linux and want to install it on your PC or Notebook or you already installed it but you are still having some problems with some programs or you don’t know the best alternatives for your old MS Windows/Mac programs over Linux, you can come to the install fest and you will find the tech support team standing there to give help and support to you.

some of the topics will presented in the sessions will be :

Basic:
- Installing GNU/Linux
- Alternatives for your Windows/Mac programs
- Desktop usage under Linux

Advanced & Programming:
- Installing Web Servers
- Desktop programming under Gnu/Linux
- Python
- Drupal
- Security

Graphics and Design:
- GIMP
- Inkscape

General:
- Free Culture
- Wikipedia

the day will start around 9:00am in the River Hall in Culture Wheel. the sessions will be working in parallel all day so whenever you show up there before 5:00pm , you will find interesting sessions to attend.

That day is going to be totally Free ;-)

and wait for my move to a new blog on my own host soon -isA-.

Software Freedom Day @ Alexandria University

N98WBG78TR28

I knew about this event 2 days ago by coincidence. A group of programmers and software and knowledge freedom advocates are organizing an event in Alexandria University’s Faculty of Engineering to educate people about some targeted topics from the 1st to 15th of September 2009.

from their sessions schedule. I can see that they concentrate on topics related to
- programming under Linux
- Open Solaris
- Security
- Wikipedia

I had an interest in attending this event as I didn’t attend any offline event for a long time, maybe that last one I attended was .NetWork‘s 7th gathering. the fact that I’m a night programmer, makes trying to wake up early seem impossible. I go to bed every day at 7:00 am and I can’t succeed to sleep before that time. but today I did it somehow and slept for 2 hours then went to the event.

The first session was a beginners level session about Linux Ubuntu and the presenter did well at introducing the audience to what is Linux, but the only thing I hated, is that way he described windows as evil or bad operating system compared to the great Linux system. he wasn’t fair enough, but this is how most of the my operating system rocks people do (whatever if they are using Mac, Windows or Linux). in total, the session was good but I was seeking for a more advanced session, maybe I didn’t have to attend that session .

The second session was about Wikipedia. a number of the Arabic Wikipedia contributors were there trying to get some of the audience into writing for Wikipedia or even contributing suggestions. between the sessions they held a workshop to educate the interested audience on how to add/edit pages on Wikipedia.

I noticed something interesting. The Wikipedia presenter in the second session had a notebook with Windows 7 installed. I thought that he will be using Linux but it seems like those Wikipedia guys/gals don’t belong to the same geeky class as the other organizers of the event, but they share the same vision and target.

the day is rated good and I wish to attend the next sessions till the end of the event. if you are in or near Alexandria or passing by and interested,  join the sessions at lectures hall M3 in the preparatory building in faculty of Engineering Alexandria.

the next  2 sessions will be on 7-9-2009, these will be about security. check the the full events schedule and the Facebook event page .

The restart

Yup, I’m back again to the old days of setting all day/night here reading blogs, books and coding. I really missed these things. after a 22 month serving in the army, I don’t feel that I was not connected to this world. actually every vacation, I kept reading the dozens of blog posts collected by my RSS reader (Google Reader) and followed my friends on FaceBook to keep up about their news. maybe my only problem now is with updating my list of programs and tools to continue what I started before.

I have installed the latest version of Subversion, and I had a problem with making my svn repository work on a virtual host I created before on my Apache web server 2.2.11 . the svn book wasn’t really helpful with this problem and I had to find a solution. also, updated my PHP installation to v5.3 . I really like the new improvements to the language, but I don’t really know the reason of adding the GoTo operator, maybe I missed something in the last months, and this feature is helpful someway or another. but I still don’t remember that somebody was in need for this functionality before.


thanks Xkcd.com 

anyway, I still have to update to MySQL 5.4 and to explore what’s new in python 3.0 . and about .Net, I will keep it a way at least to the end of this month till I finish the revision of php and python.

I had that idea of getting back again to contributing to open source projects. my last experience as a contributor to ZendFramework was really great. it gave me challenges I didn’t face before and was a great chance to get in touch and work with number of the most recognized PHP developers in the world and the developers of the core of the php language. I’m still searching for the right project to contribute to. let me know If you have a challenging and interesting one.

This is all what I have for this post. you are welcome to contact me if you need something or if you just want to say hi. you can follow me on Twitter or on FaceBook or you can follow my shared items on Google reader .

Looking at the wheel from another side

I really miss how I used to blog here before joining the army. every vacation I come and find that allot of things changed, people got married, or traveled to another country. new technologies and buzz words appear and others disappear. this makes me feel like I’m living in a cave far away. anyway, there still just another 6 months till I finish my military service, I wish they will go fast and harmless.

the most annoying thing is the time it takes to travel from Alexandria to El-Salloum, it takes from 14 to18 hours using the military train and military buses. this is enough to make anybody hate the idea of going home that way, especially if that person is living in one of uper egypt’s cities, it will take him 2 days to reach home.

Anyway, I always try to spend my vacation in useful things like reading technical blog posts, reading news and maybe attending offline technical events if possible. In a previouse vacation I was able to attend DotNetWork.org‘s 7th event in Cairo.

this days you will find me moving from website to another. the unclosable tabs in my browser are Gmail , Google reader and Facebook. myabe this vacation I got more interest in StackOverflow.com because of its high quality. I like how this website is self managed by its users. the idea it self is so old and there is allot of websites provide the same service, but this didn’t stop the creators of the website from building the same idea again but with new features and concepts. that made this website better than the other old ones.

This made me think about focusing more on the old websites that we got used to, and find these websites weaknesses that can help in creating other better websites that serves the new needs of the users.  Innovation isn’t always about building new things, it can also be about looking at the old things from another way and trying to make it better for people.

Most of the big websites now are alternatives for an old websites that provided the same service, but for some reason it lost its shine. websites like facebook , flickr and Gmail are all not new ideas, but just a cleaned and improved versions of old websites.

From my first days as a computer user, I always had the dream of building a user centric website. I wish someday -isA- I will start my own company that builds websites for the normal users. I don’t have interset in the creation of business centrec software, I know how profitable it is, but this isn’t the thing that I will love to spend the rest of my live time doing. maybe I did it and I will do it as an emplyee in software companies, but this will be for gaining experience and saving money for my own future projects – isA-.

Comics: semicolon

check xkcd.comgeekculture.com for more.

I’m still live

Do you remember me?I

Actually it’s not my fault. they give me short vacation for each month or more I spend in the desert. put yourself in my shoes, when you live in a far isolated place where you don’t have time to watch the news or have any way to know what happens in the world, what will you be able to blog about. I have nothing to say as I know nothing.

I just wanted to say hi again and tell you that I’m still a life. It’s good that facebook, twitter, Google reader help me know what happened to my friends and what’s the new technologies.