Monday, May 19, 2008

The 4 Core Principles of Agile Programming

Author: Joe Winchester, JDJ's Desktop Technologies Editor, is a software developer working on development tools for IBM in Hursley, UK.

One of the things I really enjoy at the moment is the recognition and adoption of agile programming as a fully fledged powerful way to deliver quality software projects. As its figurehead is a group of very talented individuals who have created the agile manifesto http://agilemanifesto.org/. At its core are four simple principles that, when followed and applied to software projects, generally will ensure a great flexibility and hence higher agility.

Leaving aside how great agile projects are, what worries me at the moment is that more and more people seem to be buying into this idea that agile programming is a noun rather than a verb, and that to do it correctly you have to follow a certain process to the letter.

Point 1: the manifesto for agile developemt states that it puts "Individuals and interactions" over process and tools. In other words, you adapt the process and tools to the team and not vice-versa.

A colleague of mine recently attended a lecture on how their company was going to roll out a company wide agile methodology. They'd given it a silly in-house acronym and appointed a team of people to help projects adopt this new methodology. At the lecture attendees were given a 97 page ring bound handout explaining agile programming that, on page 85, warned people to "beware of powerpoint architects". Forget having a black fly in your chardonnay folks, this is like having a herd of dinosaurs squash your PC and replace it with a punch card mailbox.

Point 2: the manifesto for agile development states that it puts: "Working software over comprehensive documentation".

In the same week a friend of mine e-mailed me to complain that at her company they'd decided to become agile and renamed all of their meetings to scrums. Folks, if it smells like a pointless meeting, if it looks like a pointless meeting, if it tastes like a pointless meeting, then it probably is a pointless meeting. Calling it a scrum isn't going to change that. What was even more ironic was that at said meeting my friend, who was the only person there who'd written any code in the last ten years, yet had to suffer watching six colleagues stare at PowerPoint charts of dates and endlessly argue about which documents had to be signed off at which points in the next few months to obtain the right sizing to get the right approval to go ahead with the project that had the right marketing messages, blah blah, and so forth. The thought of actually coding something and showing it to customers to see what they thought and repeating this process to create an iterative feedback loop was clearly beyond their comprehension. Forget having ten thousand spoons when all you need is a fork; it's like having ten thousand planners when all you need is a developer.

Point 3: the manifesto for agile development state that it puts: "Responding to change over following a plan."

Legal departments can be a huge obstacle to agile development. I've heard so many stories of projects that want to reach customers early to get feedback yet find immovable hurdles thrown up by lawyers who insist that documents must be signed by the customer that their legal departments refuse to do so, creating a deadlock that keeps both sets of lawyers happily engaged, yet drives a massive wedge between the developer and their potential future user ,thereby destroying the whole feedback loop that is essential to the "perpetual beta" concept. When pressed most of the arguments given by lawyers, often pseudo lawyers because they don't actually have law degrees, are usually ridiculous and involve extrapolating things ad absurdum; "What if Foo does Boo and Moo sues us and we all get crushed by a falling comet ?", or recounting quondam horror stories, "Remember when Foo messed up and we all got sued and had to save the day and you're just about to do the same, etc...". Unfortunately legal departments hold a huge amount of power at corporations and love nothing more than to remind other groups of just how big and important they are.

Point 4: the manifesto for agile development state that it puts "Customer collaboration over contract negotiation".

If companies refuse to actually change themselves, even if means changing the core and fabric of all that prevents the projects from becoming agile, then they'll just end up about as flexible as an elephant with two left feet. Being agile is not a buzzword; it is not a religion; it is not a methodology; it is about taking a few core principles and applying them to everything related to the entire development process. It is about taking risks, getting customers more involved with the development cycles, and reaping the rewards at the end when higher quality, better functioning, and more thoroughly tested code is delivered.

[source: http://xml.sys-con.com/read/522904_1.htm]

Sunday, May 18, 2008

Metacrap

Metacrap is a portmanteau drawn from metadata and crap. The origin of the word is unknown, but it was popularized by Cory Doctorow in a 2001 essay titled "Metacrap: Putting the torch to seven straw-men of the meta-utopia."

In the essay, Doctorow illustrates problems in relying on metadata for knowledge representation in online records or files by drawing humorous parallels to real-world systems, as well as showing examples of metadata collapse in online, web-based systems. The fragility of metadata is an important concern because much planning for improving the web (such as the semantic web) is predicated upon certain flavors of metadata becoming widely adopted and used with care -- something which, according to Doctorow's essay, will not and cannot happen.

Doctorow's seven insurmountable obstacles to reliable metadata are:

  • People lie
  • People are lazy
  • People are stupid
  • Mission Impossible: know thyself
  • Schemas aren't neutral
  • Metrics influence results
  • There's more than one way to describe something

The complete article can be read here.

[source: http://en.wikipedia.org/wiki/Metacrap]

Friday, May 09, 2008

Dua' to help you with your studying

Dua Before Studying

Allahumma infa’nii bimaa ‘allamtanii wa’allimnii maa yanfa’ unii.
O Allah! Make useful for me what You taught me and teach me knowledge that will be useful to me.

Allahumma inii as’aluka fahmal-nabiyyen wa hifthal mursaleen al-muqarrabeen.
O Allah! I ask You for the understanding of the prophets and the memory of the messengers, and those nearest to You.

Allahumma ijal leesanee ‘amiran bi thikrika wa qalbi bi khashyatika.
O Allah! Make my tongue full of Your remembrance, and my heart with consciousness of You.

Innaka ‘ala ma-tasha’-u qadeer wa anta hasbun-allahu wa na’mal wakeel.
(Oh Allah!) You do whatever You wish, and You are my Availer and best if aid. Protector and the best of aid.

Dua After Studying

Allahhumma inni astaodeeuka ma qara’tu wama hafaz-tu. Faradduhu ‘allaya inda hagati elayhi. Innaka ‘ala ma-tasha’-u qadeer wa anta hasbeeya wa na’mal wakeel.
Oh Allah! I entrust You with what I have read and I have studied. (Oh Allah!) Bring it back to me when I am in need of it. (Oh Allah!) You do whatever You wish, and You are my Availer and Protector and the best of aid.

Dua While Studying Something Difficult

Allahumma la sahla illama ja-’altahu sahla wa anta taj ‘alu al hazana etha shi’ta sahla.
O Allah! Nothing is easy except what You have made easy. If You wish, You can make the difficult easy.

Dua For Anxiety

Allahumma inni a’oodhoo bika minal-hammi-walhazan. Wa’a oodhoo bika minal-ghammi-wal-kasal. Wa’a oodhoo bika minal jubni wal bukhl. Wa’a oodhoo bikal min ghalabatid-dayni-waqarir rijal.
Oh Allah, I seek refuge in You from worry and grief, from helplessness and laziness, from cowardice and stinginess, and from overpowering of debt and from oppression of men.

Dua For Distress

Allahumma rahmataka arjoo falaa takilnee ilaa nafsee tarfata ‘aynin wa aslih-lee sha’nee kullahu, laa ilaha illa anta.
O Allah! It is Your mercy that I hope for so do not leave me in charge of my affairs even for a blink of an eye and rectify for me all of my affairs. None has the right to be worshipped except You.

Dua For Distress and Grief (Taken from USC-MSA website)

This is based on the following saheeh hadeeth reported by Imaam Ahmad (translation adapted from www.islam-qa.com; see question 1392):
The Messenger of Allaah (peace and blessings of Allaah be upon him) said: ‘There is nobody who is afflicted with distress or grief and who says: “Allaahumma inni ‘abduka wa ibn ‘abdika wa ibn amatika, naasiyati bi yadika maadin fiyya hukmuka ‘adlun fiyya qadaa’uka, as’aluka bi kulli ismin huwa laka sammayta bihi nafsaka aw ‘allamtahu ahadan min khalqika aw anzaltahu fi kitaabika aw asta’tharta bihi fi ‘ilmi al-ghaybi ‘indaka an taj’al al-Qur’aana rabee’a qalbi wa noor sadri wa jilaa’a huzni wa dhihaaba hammi.’

‘O Allaah, I am Your slave, son of Your slave, son of Your maidservant, my forelock is in Your hand, Your command over me is ever executed and Your decree over me is just. I ask You by every name belonging to You which You have named Yourself with, or which you revealed in Your Book, or which You taught to any of Your creation, or which You have preserved in the knowledge of the Unseen with You, that You make the Qur’aan the life of my heart and the light of my breast, and a departure for my sorrow and a release for my anxiety,” - but Allaah will take away his distress and grief, and replace it with ease.’ He was asked, ‘O Messenger of Allaah, should we not learn it?’ He said, ‘Of course, whoever hears it should learn it.’

[source: George Mason University - Muslim Students Association, http://gmu.edu/org/msa/]

Thursday, May 08, 2008

Tornado Warning

TORNADO WARNING NATIONAL WEATHER SERVICE BALTIMORE MD/WASHINGTON DC 1133 PM EDT THU MAY 8 2008

THE NATIONAL WEATHER SERVICE IN STERLING VIRGINIA HAS ISSUED A TORNADO WARNING FOR... PRINCE GEORGES COUNTY IN CENTRAL MARYLAND FAIRFAX COUNTY IN NORTHERN VIRGINIA PRINCE WILLIAM COUNTY IN NORTHERN VIRGINIA STAFFORD COUNTY IN NORTHERN VIRGINIA CHARLES COUNTY IN SOUTHERN MARYLAND UNTIL 1215 AM EDT

* AT 1132 PM EDT...NATIONAL WEATHER SERVICE DOPPLER RADAR INDICATED A DEVELOPING TORNADO NEAR TRIANGLE... MOVING NORTHEAST AT 27 MPH.

* LOCATIONS IMPACTED INCLUDE... WOODBRIDGE... INDIAN HEAD... LORTON... FORT BELVOIR...

IF YOU ARE IN OR NEAR THE PATH OF THIS STORM...TAKE COVER NOW! IF NO UNDERGROUND SHELTER IS AVAILABLE MOVE TO AN INTERIOR ROOM ON THE LOWEST FLOOR. MOBILE HOMES AND VEHICLES SHOULD BE ABANDONED FOR MORE SUBSTANTIAL SHELTER. AVOID WINDOWS!

[source: http://www.weather.com/weather/newscenter/alerts/USVA0262?alertId=579280]

Monday, May 05, 2008

Jabber: agsXMPP SDK

agsXMPP is a SDK / library for the eXtensible Messaging and Presence Protocol (XMPP) protocol written in managed C# dedicated to .NET and Mono technologies. The SDK is released as open source under a dual license.
Our SDK could be used for XMPP client, server and component development.

----------- FAQS -----------

Will you add feature xyz?
We work continuous on new features and XMPP extensions. Feel free to contact us if you want to sponsor certain functionality.

Does the agsXMPP SDK run on Mono/Linux?
Yes it does.

Is the agsXMPP SDK API stable?
Yes, agsXMPP is used in many open source and commercial projects today. The version is still below 1.0 because there are still some features on our roadmap which we want to add before increasing the version to 1.0.

Can I use the agsXMPP SDK in a commercial application?
Contact us by Email if you are interested in a commercial license.

Can you release a LGPL or BSD licensed version?
No we can't

Can I build a XMPP server with agsXMPP?
Yes you can. But writing a XMPP server is a very compex task.The idea of XMPP is: simple client, complex server.Even if agsXMPP does lots of work for you, you have to study the XMPP RFC's in detail.

The examples don't support feature xyz and are crashing sometimes
the examples are not meant to be a usable client or server. Just to show off particular features of the API and get started with agsXMPP development.

I can't authenticate to my server, I'm sure that the password is correct
In the most cases this is a problem with your server configuration and the XMPP domain.Never use IP addresses in your Jid or XMPP domain for testing.The XMPP domain is part of the SASL authentication and must match.