Here is the deal for next developer event @ Digicorp:
1) This is completely voluntary event so people are free to participate and not to participate without any hard feelings.
2) You are encouraged to make teams of 4. You can choose team members with whom you would like to work with. Make teams in your department only. For e.g. .NET developer can not pair up with PHP developer.
3) One statement of work will be given to each team having detailed milestones. All teams will have same statement of work.
4) 24-hours will be given to each team to work on the statement of work on their choice of technology.
5) Yes!! that means The Coding War game will start at 10 AM on one day and will finish on 10 AM the next day.
6) You as a team have to plan, code, test whatever you complete in 24 hours. It is not compulsory to complete the whole thing but if you can you have high chances of winning.
7) Lunch, Dinner, Tea, Resources everything you need will be provided by company.
8 ) Rules of the event will be sent to you before hand.
9) This will be head to head competition with fellow developers and will be a great chance to know your skills, strengths, mind under stress and in team.
10) Products developed from each team will be installed for few days after competition and our QA team will test them extensively and we will be doing the code review for few days.
11) We are planning to hold this event on this Saturday. I know its a Holiday but developers who are participating will get a holiday on Monday. As I said earlier this a great chance to know your skills, strengths, mind under stress and also of your team members.
12) Project definition will not be a live requirement from client so don’t worry we do not plan to sell your efforts after 24 hours
13) It is necessary to hold this event on Weekend so that we do not disturb other developers who are not participating. We are going to make lot of noise on achievement of each milestone. It is like a Race.
14) Developers who are not participating do not have to come to see the event. But they are always welcome to see what is happening at 3 AM in the night!! We may be at the Kitli drinking hot tea!!
15) Winning teams will be getting a party from Digicorp and a trophy.
The idea of Coding War Games is taken from wonderful book called “Peopleware” by Tom DeMarco and Timothy Lister which I am reading right now. The book is about creating and maintaining Productive Projects and Teams. It is the same book that inspired us to start this blog.
Looking forward to teams for this event. It is going to be one hell of an event and one of its kind at Digicorp.
What do you do to ignite fire in your development teams?
Pinal Dave is Microsoft SQL Server MVP and author of over 800 SQL Server articles. He has over six years experience as Sr. Project Manager and Principal Database Administrator in MS SQL Server 2008/2005, .NET (C#) and ColdFusion MX. He has a Masters of Science degree in Computer Networks, along with MCDBA, MCAD(.NET) and ColdFusion Advanced MX Certifications.
Friends this will cover Xdebug installation in 2 different way, you can choose as per your need
1.) Install XDebug for use with XAMPP on Ubuntu Linux.
2.) Install xDebug by apt-get install way.
Install XDebug for use with XAMPP on Ubuntu Linux.
Lets assume you have XAMPP installed with developer source code and header of XAMPP. If you don’t have XAMPP developer package installed you can install it by following…
Build Environment Setup
XDebug will need to be compiled. A couple of packages need to be in place before you can build the source.
1. Install the build-essential package to setup a basic build environment:
2. Download the development archive for your version of XAMPP and extract it over your existing installation (you may want to backup your XAMPP directory first):
wget http://www.xdebug.org/files/xdebug-2.0.3.tgz
tar xzf xdebug-2.0.3.tgz
cd xdebug-2.0.3/
phpize
After this you will have following output on your console…
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
./configure
make
sudo make install
Then the output will be this.. please monitor the directory specified.
Installing shared extensions: /opt/lampp/lib/php/extensions/no-debug-non-zts-20060613/
After the Xdebug extension is installed, you’re ready to enable and configure the extension.
First create a folder in your temp folder that will holds the data file generated by Xdebug
sudo mkdir /opt/lampp/tmp/xdebug
sudo chmod a+rwx -R /opt/lampp/tmp/xdebug
Open php.ini in a text editor, and add the following lines at the end.
( generally you will find it in /opt/lampp/etc/ )
;xDebug Configuration starts
zend_extension = /opt/lampp/lib/php/extensions/no-debug-non-zts-20060613/xdebug.soxdebug.profiler_output_dir = "/tmp/xdebug/"xdebug.profiler_enable = On
xdebug.remote_enable=On
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
;xDebug Configuration ends
After adding the lines and verifying that your output directory is writable, restart your XAMPP server.
you can do it by sudo /opt/lampp/lampp restart
and thats it..!! you have xDebug server running with apache..
MySQL’s full-text search functions provide a simple framework for an easily implemented, approximate site search. web-applications or desktop applications, written in an interpreted language and powered by MySQL, can use MySQL’s full-text search to avoid third party dependencies.
The basics
The basics of the MySQL full-text search functions are well-documented in the MySQL online documentation. For those lacking patience, here is a quick rundown.
Full-text searching is somewhat akin to a LIKE condition, but is much faster, requiring a FULLTEXT index to be created for the table columns targeted in the search. To search the title and description columns of a table, entries, the following statement would create the proper index:
To search these columns for the text, “python threading,” the MATCH...AGAINST functions are used:
SELECT id, MATCH(title, description) AGAINST ('python threading')AS score
FROM entries
ORDERBY score DESC
Notice that we keep the result of the match. The value returned is a float representing the relevance of the match. The higher the number, the more relevant the match.
There are several caveats to the full-text search. In particular, any words that are common between many entries are treated as noise and their relevance in any search is diminished. This means that were every article in entries to be about threading in Python, searching for “python threading” may not return extremely relevant results. Refer to the MySQL docs for more information.
The hard part
If the content to be searched is not conveniently located in one table, things get more complex. In this case, a method must be devised to create an intermediary table to contain the search target.
This might be accomplished with a cron script that aggregates the information nightly or using stored procedures to keep the target table updated.
Refining results
A common case is to weight the search to favor more recent results. Assuming that each entry has a DATETIME field named timestamp, this is easily accomplished by using the entry’s age to modify the score.
For an even reduction to the score based on the article’s age, divide the score by the age, which is determined with DATEDIFF(NOW(), timestamp).
(MATCH(title, description) AGAINST ('python threading'))/GREATEST(1, DATEDIFF(NOW(), timestamp))
Since DATEDIFF returns the difference in days, an entry written today could cause division by zero. GREATEST means that entries written today and yesterday have equal weight, but prevents results from omitting today’s articles.
A quick test of this will show that results become wildly incorrect after a few days as the text match score begins to diminish further with age. This effect can be reduced by taking the LOG of the age, making the divisor increase less and less the greater the age.
LOG(GREATEST(1, DATEDIFF(NOW(), timestamp)))
The use of LOG causes a steep drop initially, smothing over time. For a less dramatic effect, substituting the square root causes a similar drop in the weight of the entry’s age over time, but diminishing less starkly over time and without the initial steep drop.
SQRT(GREATEST(1, DATEDIFF(NOW(), timestamp)))
The complete SQL statement is now:
SELECT id,(MATCH(title, description) AGAINST ('python threading'))/SQRT(GREATEST(1, DATEDIFF(NOW(), timestamp)))AS score
FROM entries
ORDERBY score DESC
You can see what has been created using thousands of photos taken on the inauguration ceremony of 44th President of United States, Barack Obama.
Second example you can look at is an Indian Temple Heritage Site which is been captured with the use of PhotoSynth.
So you can see how you can create a more meaningful and much engaging 3d images. And this is created very easily using the photographs that you take while you go there and just give it to PhotoSynth and it will create it for you. So these synths basically give you a feel of the place you visited.
Second of the tool is Microsoft HD View, now this I have encountered today only.
The above heritage site video shows how HD View can be useful.
I was just wondering that these tools give a new dimension to digital photography. So from now on when you go to any place for photography, you can keep these tools in mind and while you return you can create synths and share it with others that will give them a better look and feel of the place you visited.
Share your thoughts on the same and another thing I would like to know if you can share any of the synths or hd view images that you might have created and we can have a look at them.
pChart is a PHP class oriented framework designed to create aliased charts. Data can be retrieved from SQL queries, CSV files, or manually provided. To have a complete overview of what pChart can do for you, we invite you to take a look on the on-line documentation which is trying to show all basic & advanced functionalities of this library.
At Digicorp, we have recently started code inspection process. It is too early to say that it is producing wonders but it does look promising in the long run.
We are inspired from the Fagan Inspection invented by Michael Fagan at IBM in mid 1970s. We do not follow the process completely but we have done changes according our environment.
Following presentation will give you more idea about the process:
We make it a point to involve newly recruited developers in the inspection process so they get an idea where experienced developers are also going wrong.
This way it becomes part of training for newly recruited developers.
So far we have had half a dozen code reviews and some of them were good, some of them were bad. But all the developers at the end looks satisfied with the result. Developers are not making it an ego issue so far.
What do you do at your company to do make your code better? Any suggestions to make this process better?
This is first of my experience regarding documenting an already developed project.
Let me first describe the situation which we are going through.
We have developed a system and before a couple of years and currently it is in a maintenance stage.
It is in use in the production for last 1 year. The project is developed in Visual Studio 2003. It is a purely Windows Based Application and developed in VB.Net. The database behind it is SQL Server 2000 and we are using ASP.Net Web Services as middle layer.
Now as the client is going through the inspection of the project, we are now to generate the documentation of the whole project.
Normally, this happens in many of the projects which I see around, typically in our part of world the developers are more inclined to do coding rather then do designing, documentation and planning and then actually doing coding.
Now in this situation, I would like to share with you what we have decided to develop as part of our documentation of the system which might help you at certain point of time in your project. The main part is we are not having enough time right now and we are in a real hurry.
We have decided to prepare the following documents.
1. Database Dictionary
We have found out a very useful tool for generating database documentation. The tool is DBScribe. It is an excellent tool, it automatically generates all the documentation related to all the database objects from the database itself. Right now we are using the trial version in order to check the capabilities. Other nice thing about tool is it is automatically defining the dependencies between the database objects. It generates a chm and html document as output. We are trying to figure out how to insert some of the information in the tool. For example, how to add description of the table and how to add description of stored procedure parameters.
2. Code Commenting
We are using the VB Commenter for generating comments in the code. We are to do two level of commenting in the code. Class level commenting and Procedure level commenting. Following are snippets of what we are going to put as comment in the code.
Class Level Commenting
”’<summary>
”’ [Name] FrontController
”’ [Description] Acts as the initial point of entry/exit into the system
”’ and manages the handling of the request, including invoking security services such as authentication and authorization.
”’ [Reference]
”’ </summary>
”’——————————————————
”’ <remarks>
”’ </remarks>
”’——————————————————
”’ <history>
”’ <creation>
”’ [amita] [anokhi] 12 June 2007
”’ </creation>
”’ <modification>
”’ </modification>
”’ </history>
”’——————————————————
Procedure Level Commenting ”’<summary>
”’ [Name] AuthenticateRequest
”’ [Description] Validates UserID and Password and updates Database by Authenticating Login Request
”’ [Reference]
”’ </summary>
”’——————————————————
”’ <history>
”’ <creation>
”’ [amita] [anokhi] 12 June 2007
”’ </creation>
”’ <modification>
”’ </modification>
”’ </history>
”’——————————————————
”’ Algorithm
”’ Steps
”’ [1] Get Current Context
”’ [2] If Request is of Login from Home page then
”’ [3] Retrieve User Id and Password
”’ [4] If user ID exist in hastable then get its Users Object else goto [7]
”’ [5] If Password is not Correct then goto [7]
”’ [6] Generate Ticket, identity and Principal
”’ Assign it in Context, User object (also in HashTable), Session, Database
”’ [7] If Password or UserId is incorrect then set Users object as nothing and call Invalid Login
”’——————————————————
3. Class Diagram We are planning to convert our project which is in .Net 2003 to .Net 2005 and generate a class diagram from the IDE itself. Now here I am searching for some more sophisticated automatic class diagram generator tools as generating class diagram from this code manually will be a very time consuming and tedious work. Right now VS-2005 editor is giving some errors while I try to generate the class diagram and also I do not find those class diagrams very attractive.
4. Database Relationship Diagram
This will be similar as what SQL Server generates. We will link up all the tables and then submit the diagram.
Can you suggest me some better and efficient ways of doing this?
One of the inspirations for creating this blog is a wonderful book called “Peopleware” by Tom DeMarco and Timothy Lister which I am reading right now. The book is about creating and maintaining Productive Projects and Teams.
Yesterday I read an interesting chapter called “TEAMICIDE”. It is about making teams jell at your company.
The authors could not come up with “Six things you can do to make team formation possible” so they tackled the problem by the trick called “inversion” described Edward deBono’s Lateral Thinking.
“Inversion” is a technique to achieve your goal by looking for ways to achieve exactly opposite of your goal. This helps in clearing brains cobwebs which keep you from being creative.
So they focused on six things which will keep them away from creating jelled team. They came up with following
defensive management
bureaucracy
physical separation
fragmentation of people’ s time
quality reduction of the product
phony deadlines
clique control
I would not go into details here but I can say these are some of most commonly found techniques in all the companies.
I don’t deny that we are not affected by any of the above techniques but fortunately the effect is less and manageable. My personal target is to make sure above techniques are completely removed from Digicorp.
My first target should be to remove phony deadlines from the projects if there are any. This is the most prevalent technique in most of the companies today and I do feel that it kills the motivation of developers to do well.
I would encourage my development team to write something more on this and what we can do it remove this.
I would love to hear from you more on this. What other techniques you think can hamper creating jelled teams?
Where am I?
You are currently viewing the archives for February, 2009 at Digicorp.