Last weekend was a memorable day for our small family. It was the first birthday of our cute little son "Ahmed Rasheed" who was born on July, 12th last year. I am sure those of you with a kid in the house will be in agreement to the excitement and happiness that surround this great milestone. Time really flies very quickly as it just seem like yesterday when we brought Ahmed from hospital and probably for the first time in my life, I was feeling very nervous while driving. Anyways we are thankful for such a great gift and wish him a great and prosperous future.

I wrote cflog4j last year while working with an application at work that needed significant amount of logging. CFLog4j is essentially a ColdFusion based wrapper around the powerful Java library for logging i.e. log4j. I also wrote few Fusebox lexicons to log activity from the circuit files as that was the framework of choice at my last job. I haven't had a chance to improve and extend the original code for a while now. However Eric Knipp has been doing some excellent work with this project. Here are few blog posts related to this topic.
- ColdFusion and Log4j
- ColdFusion & Log4j Part 2 - Writing Logs to a Database
- ColdFusion & Log4j Part 3 - Custom Attributes and Mapped Diagnostic Context
Thanks Eric!
Last week was my last at INDUS Corporation where I worked for almost 5 years on a government contract with NTP. I started my career at INDUS as a junior programmer and worked my way up the corporate ladder to become Project Manager/Technical Lead. I truly enjoyed my career at INDUS and made some good friends. However now I feel that it is my time for a new challenge and experience. Today was my first day of orientation with SRA International where I will be working as Sr Software Architect Lead on a goverment contract with NIEHS. I am very excited about this new and challenging opportunity as I'll be leading a team of 5-6 developers. We will be providing support and maintenance for over 50 ColdFusion applications and developing new ones as needed. "Act as if what you do makes a difference. It does." -- William James
I recently finished reading a short article titled "Tools for Agility - White Paper" written by Kent Beck. I am using this blog post as a reminder to myself to revisit this article few months down the road. Kent provided a concise and to the point view of agile software development and dismissed various false notion about this practice. Here are few personal takeaways 1. Agile development seeks to increase the value of software development by an increased collaboration between customers and developers. 2. Individual and interactions are more valuable than processes and tools as processes and tools represent common situations. Tools and processes will be likely unable to adapt to any uncommon situation whereas human can. 3. With an outgrowth of Agile development, driving shorter release cycles, tools need to support frequent transition between activities. 4 Principal of flow - All other things being equal, frequent delivery of smaller batches of functionality is more valuable than infrequent hand over of larger batches of functionality. 5. In contrast to a miniature waterfall, agile development quickly integrates analysis, coding and testing and set up a quick feedback loop. 6. Transparency - Every quantitative change of an order of magnitude creates a qualitative change. Kent cited Test-Driven Development (TDD) as an metaphor where TDD encourages programmers to accept primary responsibility for the quality of their work. 7. A common activity for agile teams is toolsmithing. You can view the article in it entirety here Tools for Agility
As I mentioned during the session that I'll be releasing the code after the conference. It took me a while as some work related issues took precedence. Anyways without further delay, you can download the code from the following links
- Presentation
- ANT demo
- CFUnit demo
- Selenium demo
- CFPrototype Application with unit tests, selenium tests and the build files.
I appreciate the patience as several folks have emailed me to inquire about the code.
Folks who were unable to attend this year CFUnited conference, there is good news. Several presentations were recorded via Adobe Connect which IMHO is far better than power point. My presentation for titled "Continuous Integration with SVN, ANT, CFUnit and Selenium" can be find here. The entire list is available on CFUnited blog Also I'll be releasing the code and presentation hopefully this weekend. Thanks
One thing that I mentioned during my first presentation at CFUnited was to change the ANT home in eclipse preferences. Eclipse comes bundled with ANT however I like to keep ANT in one central location as
- All ANT external jars can be placed under ANT/lib folder. In this way it becomes available to all Eclipse projects
- It is easier to upgrade to a newer version of ANT if one becomes available
- If I've to switch machines, I can just copy the ANT folder to a new machine without much fuss
These are the steps to change the ANT home for Eclipse
- Download the latest ANT distribution from here and unzip it to a folder in your drive e.g. c:\ant
- Go to Windows -> Preferences
- Browse to the ANT section either by clicking ANT or using the filter box on the top.
- Under Runtime you'll see an entry for ANT Home. Click the button "Ant Home" and browse to the directory where you have unzipped ANT distribution
- Click "Apply"
Hope that helps
Subversion development team has released a version 1.5 of the awesome source control system with several new features. My favorite feature one is "merge tracking" as defined in release notes as "Merge tracking means Subversion keeps track of what changes have been merged where. This reduces the overhead involved in maintaining branches, and gives users a way to inquire what changes are merged -- or are available to be merged -- on different lines of development". We follow a structured release process at work where before production, we will create a release branch for the code. This branch is where we will run our integration (selenium) tests, fix last few bugs and things of that nature. Presently we have to keep track of those changes individually and ensure that those are merged into trunk appropriately. Subversion's "merge tracking" feature fixes the manual figuring of which changes need to be merged between branches. Instead you just tell Subversion you want the branch changes merged to the trunk, and it figures out what to merge. Pretty neat. However for some of the feature in new release both client and server have to be upgraded.
I got home late last night after a long 5 hours drive to NC and then I slept like a baby for more than 12 hours. My sessions went really well especially on Saturday as I wasn't expecting such a great attendance. Seeing 30-35 people in the class on the last day of conference (almost the last session) really made my day. This was my first time speaking at CFUnited so it was all a wonderful experience. As mentioned during the session, I'll be posting the code and the slides on my blog later. Thanks to TeraTech for putting together such a wonderful and exciting conference.