Duty of a Programmer

While reading through The Problem with Programming, an interview with Bjarne Stroustrup, i found myself nodding enthusiastically with punctuated Amen’s and Uhhuh’s. The nub of the problem:

I think the real problem is that “we” (that is, we software developers) are in a permanent state of emergency, grasping at straws to get our work done. 

which is exacerbated by

People reward developers who deliver software that is cheap, buggy, and first. 

which brings me back to an earlier post: Don’t Panic. Seriously, that’s my first rule of programming. The only time you panic is when the word “Don’t” precedes it.
Panic implies all sorts of rush and confusion; which leads to hasty decisions [both technical and commercial] and promises; which ultimately leads to sub-standard software; which becomes the norm 🙁 Or worse yet, you can only deliver software in a state of panic…

But ’tis a mindset thing.

And of course, the often neglected side to the debate is from the end-user:

My super high-tech cell phone crashes fairly often, and it takes 2 minutes to reboot. Sometimes I wonder, what if this ever happens in an emergency situation?…in an emergency, 2 minutes is an eternity, and it can easily mean the difference between life and death. The list of our everyday software dependence could go on and on, yet whenever you buy a software package, you’re always forced to accept the “…as is…” terms. In other words, the software makers never take responsibility if their crappy creations are causing you damage. I don’t know of any other product category, which is sold on an “as is” basis. Only used cars perhaps…but even there you can find lemon laws, and dealers who are willing to sign a warranty. 

I wonder if we, as developers, truly grok the impact of what we do [or don’t do] on society, aka enduser? More than mindset, it’s also an attitude of heart with which we enter into our profession, dare i say, calling. That same attitude which motivates us to work through every debate and every challenge we face [both internal and external] to deliver something reliable…
But don’t think i am getting it right *all the time* 🙂 I’m just learning, over time, what the goal should be and working towards that, slowly- but with intent.

Tech Battles

while trying to make myself comfortable with “the other world” of PHP and MySql, i came across this insightful post on MySql vs. PostgreSQL. Written almost 3 years ago, some of the comments remain relevant to this day. Those comments themselves though are mere echoes of history…

So the article attempts to dissect which is “better”: MySql or PostgreSQL? But the introduction i found more fascinating: why do people care so much about which is “better”? Indeed, why do they?

i have been involved in many contentious debates around which language is better; which compiler is better; which browser is better; which design is better; which OS is better; which methodology is better; which you-name-it is better. And mostly, they all have the same smell to them 🙂 The debate rages on, in various forms across multiple spectrums and shows no signs of slowing down.

This is not new, and as one writer observes:

“The ancient quarrel between Protestant and Catholic is a scabious wound in-waiting, still capable of producing pus and pain long after those ditch-digging migrants and clever children they gave us became proper Australians and doctors and professors once more”- Bryce Courtney, Four Fires 

In technology, there is no shortage of the classic Protestant-Catholic scab.
[ agile-traditional; .Net, Ruby, Java, C++; IIS-Apache; Windows-Linux; MS SQL-Oracle; IE-Firefox; ad nauseum ]

And one day, INSERT_TECH_BATTLE_HERE may agree to disagree and the quarrelling may subside briefly into a lurking; a wound-in-waiting. And there will evolve peacekeepers who may, from time to time, find a middle ground and mediate some sort of truce- for a season. But our desire to be on the “winning side” is just too strong. Which means we also need a losing side, or at least a side where we can prove our “victory”. And therein lies the rub of most arguments.

When last did your debate PRO-Agile [or any technology for that matter] not revolve around the pitfalls of waterfall, or vice-versa? And although a valid argument, in your specific context; as a dogmatic doctrine without intimate knowledge of another project situation, the only expected result you can effectively achieve is an equally vocal response 🙂 Indeed, why do we care so much about which technology is “better”? And of course, you can also end up with the situation which propogates and defends that a pragmatic approach is really the “better” approach 😀

It’s funny just how ancient IT really is…

Timeline + Blog = Blogline

:all that playing around has paid off nicely for some useful code of high geek value 😀

welcome, Blogline

u can plug just about any rss feed into it.. at least, that is, i have been playing with implementations for Rss2 and Atom.

Rest [as defined by a techie]

so life in the land of .net has been a little quiet. there’s been a gap in our project which i have been making the most of to get my head around some *other* things 😀
so, the backend and data coding has been burning slowly, but what has been happening has been interesting.. adventures in the land of PHP, JSON and Ajax…
*whew*
luckily, i had a project to help keep things *focused* [ my beautiful belly.net ] 😀
the most facinating piece of software to emerge from all this was: Timeline. Wow.
I’ve used it here:
Pregnancy Due Dates and it really is an awesome implementation….
right! back to learning 🙂

Delegate Gotcha

A while back i was trying to find a solution to the delegate gotcha and stumbled upon, even more recently, some answers to a lot of my questions… they trackback and link with each other at some point, but my entry point to this discussion was mostly through, in no specific order:
Observable property pattern, memory leaks and weak delegates for .Net. – Alexey A. Popov
Simulating “Weak Delegates” in the CLR – Greg Schechter
.Net 2.0 Generics, Anonymous Methods, and Delegate inference bug – Udi Dahan

After reviewing a lot of the different solutions, i’m currently experimenting with an idea. Given your usual suspect:

public class EventSource
{
    public event EventHandler FireEvent;
    public void OnFireEvent( )
    {
      if(null != FireEvent)
          FireEvent( this, EventArgs.Empty );
    }
}

I’ve reworked some ideas and using WeakReference, rewritten the EventSource above as follows:

public class EventSource
{
    private Dictionary<EventHandler, WeakReference> origDelgs =
            new Dictionary<EventHandler, WeakReference>();   
    public event EventHandler FireEvent
    {
        add
        {
            if( !origDelgs.ContainsKey( value ) )
                origDelgs.Add( value, new WeakReference( value ) );
        }
        remove
        {
            if( origDelgs.ContainsKey( value ) )
                origDelgs.Remove( value );
        }
    }
    public void OnFireEvent( )
    {
        foreach( WeakReference aref in origDelgs.Values )
        {
            if( null != aref.Target )
            {
                EventHandler hdl = (EventHandler)aref.Target;
                hdl.Invoke( this, EventArgs.Empty );
            }
        }
    }
}

Now, at least, if my sink goes out of scope, it won’t get resurrected 🙂
Will continue experimenting with this idea and see how it performs….

Baby J II

First scan today… and awesome! The little peanut is only 5mm BIG and the heart is starting to form… brain about to develop some time soon… and the hands and feet are coming along. Thinking about all this, you cannot seriously believe that this creation of life is a result of “coincidence” and trial-and-error. Inconceivable (no pun intended) that a bunch of gasses and chemicals collided and somehow developed a purposeful reproductive system which is without defect- the process itself i’m talking about…

Fortunately, we all know that God Almighty knits us together in the womb, fences us in with bones and sinews… we don’t need to be ignorant about who designed this process and get on with endulging in the rapture of praise as we give thanks to Jesus as we get to know Him [and about Him] that much more.. each day… 😀

Baby J

Baby J’s Progress

He/She/They are looking sooo cute 😀 Little tiny hands… little tiny feet.. and look at that little biddy itsy teeny peanut…

>> ETA: June 25, 2007.
( although my guess is 1 July : )

Agile Manifesto

It was about time for me…

We are uncovering better ways of developing software by doing it and helping others do it.
Through this work we have come to value:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Agile Manifesto

Bible Versions

As part of my current course at World Bible School ( high recommended ) i was required to do some research into the validity and authenticity of the various works of translations and multitude of versions available today….

Heavy. There is sooooo much information available from such a wide range of audiences it made me realise on thing…

Nothing else has ever created so much of a response over so long a period of time- from believer, non-believer and even the anti-believer. It’s incredible how so much time, effort and money is dedicated to disseminating evidences, facts, opinions, arguments, counter-arguments, you-name-it on the Bible! Even the anti-believers are a dedicated crew spending their nights slaving away trying to convince everyone that God’s Word is.. well.. not His Word. So it seems the world’s biggest common interest and focal point, despite of and because of what you believe, is always going to be Jesus…

The very fact that Jesus has created so much “intensity” over so long a period of time, despite the controversy and critical attacks, by sooo many different people… well, for me.. that just proves that even today, God’s Word is alive, despite what we may want to believe…

Heb 4:12 For the word of God is living and active, sharper than any two-edged sword, piercing to the division of soul and of spirit, of joints and of marrow, and discerning the thoughts and intentions of the heart.

And whoever said that, wasn’t lying ‘cos you can see that in operation, even today. And if that remains true 2000 years later, you got to ask yourself, what else is true?