Friday, July 27, 2007

World is full of bugs

It happens to me pretty often. I'm up to something. Doing some research, playing with a new technology or just using a system that should work. And then when you really need something, you find out that that feature is buggy. In my flat in London I'm using D-link router to connect to the internet. I'm using a WiFi connection, with mac address filtering. My D-link router looses (somehow???) a safe list. The list of mac addresses that should be allowed to use WiFi connection. Then you have to go to router, connect to it by cable and re-add your mac address to the safe list once again. Sound simple, unfortunately there is a problem. The problem is called software bug, or laziness. I'm using web interface to configure my router. Unfortunately software that runs there was written to support only IE, in some cases. And this part is really interesting, cause majority of functionality is working under Firefox, Safari or you call it. Unfortunately not the functionality responsible for the modification of the safe list. Operating systems that I hold on my computer change in time (always doing something). Sometimes I have a working version of windows sometimes I do not. The only operating system that is working all the time is my Ubuntu. I was trying to use IE for GNU/Linux to modify the safe list, and it worked. I would not be myself if I did not write software that would run not only on IE but also on other thin clients. First thing to do is to see what the problem is. Firebug showed me that javascript engine can not find any element by it's id:

function jslSetValue(variable,value)

I've search the web to find out if somebody had already reported D-link with the problem, or did D-Link created any software update for that router model. I did not find anything. I've reengineered JavaScript that is used in that web interface and I've send it to D-link, maybe they will use my code instead of the current one. Now don't laugh I always send corrected code to the producer, unfortunately not very often I receive any reply. I can even bet that D-Link is not going to do anything with my code, they will just /dev/null it. But if even one per 20 companies that you send a code to will replay and thank you it is worth a try. If you face this same problem as I do there is a more simple way to quick fix your problem. After loading "Wireless Management" page just type in your URL:


where 00-1b-77-27-ca-72 is your mac. And hit enter. Then hit history.back button in your browser. Then click "Add", now you will notice in a JavaScript console that there are bugs on the page, then click the "Apply button". Vuala your mac is added.

For smart ones, don't try to use 00-1b-77-27-ca-72 mac near my flat, it won't work cause it is just an example, I don't use it.

There are some interesting things about this particular pice of software. You may say that it is not a bug but producer simply just not want to support anything else besides IE. If it is true then why did they write JavaScript so some functionality will work on Firefox and some will not? Next interesting thing is the design. You probably noticed that they extracted some very simple logic into separate functions. I truly enjoy that. It also means that somebody did either a good design or refactored that software in a really nice manner. Why then he did not check if all the functionality works on different then IE thin clients? I'll never known. Whatever guess I'll take I'll still be just a child living in the big world. The world that I can never truly understand.

Tuesday, July 24, 2007

First Agile achivement

I've managed to do it. I like to describe my work as a contractor. I'm reassigned from project to project to do some job, achieve some goals. In my current work environment I've noticed a huge stagnation and frustration of the development team. They are using old technologies, old tools, old systems. They do not have any visionary person who would be able to push them forward. Don't get me wrong, people who work here were open to try something new, there wasn't just any person to show them a different way. Show what possibilities do they have, explain why by using some technique they can increase their performance. And then they faced me. So far organisation that I've described did not used any methodology, they were unorganised, did not have any deadlines, did not estimate their work, at least in a core of the development team. Because you could feel that they need some help I took some steps in order to push them forward. I've suggested agile as a methodology that might be helpful for them. I've provided them with tools to measure daily activity, explained basic agile concepts. I was really glad to see that a group of people is starting to work as a team, they organize themselves. Separate sprint from new activities assigned by product owner. Sprint is taking over their work. Now they estimate, they can see results of their work. What is more important their bosses also can see their work.

You can not became an agile user from day to day. This process takes time. What a great pleasure is to guild people through that way. See that it works for them. Then you can start corrections, explain why something should be done differently, suggest different tools. Today I was glad to see their retrospection presentation that was send to their bosses. One of the most beautiful things that one can experience is too see joy of the work that was done. And I saw it today, joy, proud, hope for better tomorrow. I just hope that I'll be able to guild them well. I do my best. As for today I attache pictures of their sprint blackboard. Keep your fingers crossed for us - the team.

Sunday, July 22, 2007

Orcas Subversion and SharePoint

I've moved to London, and I've been working on some ancient technologies lately. But what bothers me the most is the stagnation. If you stop discover the world surrounding you, you loose entire passion that you have. At least it happens to me. Anyway I've been playing a little bit with new Orcas and LINQ features; I was trying to write web parts using those technologies. Unfortunately I've hit the wall, as I see it is possible and I mange to go forward, but every step you take takes you to next challenge. The problem is that there is no plug-in for web parts for Orcas, and it makes a little bit harder to do all the tasks that you usually do when you develop in MS VS 2005. Any way I give up, but will give it a next shot next day. One thing that I've discovered is small number of blogs that describe VS projects done on a Subversion system. Hej, what’s going on, don't tell me that you still use VSS !!!.

Integrating already existing project with Subversion

I've decided to describe how easy it is to integrate your VS and subversion system. There are many ways to install Subversion on a windows box, I usually use one click project, and because it is the simplest way I know. Installation is pretty strait forward. Next thing to do is to download the VS plug-in. The only one I use is ankh, it will do the job. Here you can see some screens of how it looks like. Installation of plug-in is again really simple. Just be sure not to install repository in the default location, sooner or later everything stops working if there is " " spacebar in a location path (just like in string "Program Files"). To create a new repository I use my GNU/Emacs eshell, but you can use normal cmd shell. Just type:

svnadmin create C:\worek\subversionRepositories\myProject

and a repository is ready to be used. Now I import a project to that repository. I simply navigate to the directory where I keep my VS projects I click on my project then:


in URL I specify a path to the repository:


Then I can checkout that project to any location, and when I run a solution file Ankh plug-in asks me if I like to enable Ankh for that solution. Now my VS project is integrated with subversion.

I hope that I'll be able to add some value to my current project (at work). And I will manage to break through the stagnation in my current environment. After all life is just a bowl of cherries.

Bon App├ętit