Lord and Saviour

Kinda like a tale of the vicious cycle of debt…

You owe the bank a lot of money and decide to pay it off. But it’s hard going and you could spend a long time trying to pay off that debt. Let’s assume that day eventually does arrive and you square up your account… what then? From that moment on you have the opportunity to live your life starting with zero debt and every decision from then on is a conscious one to either engage in debt, or not. If you choose to not engage in any more debt, you have to think differently. You cannot expect the same style of thinking that got you into debt in the first place to now suddenly keep you out of debt. Remember, before you even started round one, you already had no debt [and sometimes you might even protest, had no choice]. No matter how you try and decide to look at it or convince otherwise, your debt is still your debt.

God makes it easy for us to square the account. In fact, He already paid the debt for our sin. Our sin is against God Himself. But He says No-More-Debt. He paid the price [because someone had to do it] and He shows us, at length and in detail, just how He did it. He explains the What, Why, How, and Who. We need to accept that and when we receive His grace, we start life with a clean slate. Jesus, The Saviour.

Now we’re walking a “Christian” walk- but it’s not just about how we pray, who we pray to, what church we attend [or not], wether we have long hair and tattoos or wear a hat on Sundays. Those are not the primary issues. What is primary is: Is Jesus Lord of your life? Are you obeying what He says? Because you need a new way of approaching life now. You cannot reasonably expect that the mind that sold you into sin is going to now keep you out of it. Listen to someone who knows how to live a debt-free life: listen to Jesus. And Jesus is the Word Of God [John1]

To those in Christ, keep fighting the good fight. the connection between the promises God has for us and our obedience to Him have always been interlinked. We cannot expect to walk in Christ if we do not obey Him. To those who have yet to know Christ… set yourself free. Accept Jesus is Saviour and embark on living your life “new” with a just, loving and mighty Lord!

(Joh 3:36) He that believeth on the Son hath eternal life; but he that obeyeth not the Son shall not see life, but the wrath of God abideth on him.

(Act 5:32) And we are witnesses of these things; and so is the Holy Spirit, whom God hath given to them that obey him.

(Rom 6:16) Know ye not, that to whom ye present yourselves as servants unto obedience, his servants ye are whom ye obey; whether of sin unto death, or of obedience unto righteousness?
(Rom 6:17) But thanks be to God, that, whereas ye were servants of sin, ye became obedient from the heart to that form of teaching whereunto ye were delivered;

(2Co 10:5) casting down imaginations, and every high thing that is exalted against the knowledge of God, and bringing every thought into captivity to the obedience of Christ;

(Heb 5:8) though he was a Son, yet learned obedience by the things which he suffered;
(Heb 5:9) and having been made perfect, he became unto all them that obey him the author of eternal salvation;

(1Jo 5:2) Hereby we know that we love the children of God, when we love God and do his commandments.
(1Jo 5:3) For this is the love of God, that we keep his commandments: and his commandments are not grievous.

(Mat 19:17) And he said unto him, Why askest thou me concerning that which is good? One there is who is good: but if thou wouldest enter into life, keep the commandments.
(Luk 11:28) But he said, Yea rather, blessed are they that hear the word of God, and keep it.
(Joh 8:51) Verily, verily, I say unto you, If a man keep my word, he shall never see death.
(Joh 14:15) If ye love me, ye will keep my commandments.
(Joh 14:23) Jesus answered and said unto him, If a man love me, he will keep my word: and my Father will love him, and we will come unto him, and make our abode with him.
(Joh 14:24) He that loveth me not keepeth not my words: and the word which ye hear is not mine, but the Father’s who sent me.
(Joh 15:10) If ye keep my commandments, ye shall abide in my love; even as I have kept my Father’s commandments, and abide in his love.
(1Jo 2:3) And hereby we know that we know him, if we keep his commandments.
(1Jo 2:4) He that saith, I know him, and keepeth not his commandments, is a liar, and the truth is not in him;

(1Jo 3:22) and whatsoever we ask we receive of him, because we keep his commandments and do the things that are pleasing in his sight.
(1Jo 3:23) And this is his commandment, that we should believe in the name of his Son Jesus Christ, and love one another, even as he gave us commandment.
(1Jo 3:24) And he that keepeth his commandments abideth in him, and he in him. And hereby we know that he abideth in us, by the Spirit which he gave us.

(Mat 7:21) Not every one that saith unto me, Lord, Lord, shall enter into the kingdom of heaven; but he that doeth the will of my Father who is in heaven.
(Mat 7:22) Many will say to me in that day, Lord, Lord, did we not prophesy by thy name, and by thy name cast out demons, and by thy name do many mighty works?
(Mat 7:23) And then will I profess unto them, I never knew you: depart from me, ye that work iniquity.
(Mat 7:24) Every one therefore that heareth these words of mine, and doeth them, shall be likened unto a wise man, who built his house upon the rock:

Myth Busting

Atheists.org are a fascinating bunch.
For a start, an atheist is supposed to beleive that there is no God; have no theistic beliefs; disbelieve the existence of deities; the idea of god to them is senseless; yet is an as active religious system as most others? more definitions here

So despite the fact they don’t believe there to be God, they go one step further out of their way to propogate what they call “myths” about Christianity. Now, it’s one thing not have a belief in God, but a completely different story if you’re going out of your way to try and prove that He doesn’t exist.

Why do you need to prove that He doesn’t exist if you already believe that He doesn’t?

My guess is because the evidence is so overwhelming that He does exist that if you want to hold to the belief that He doesn’t, with any form of reasonable grip and integrity, you need to counterweigh the evidence. And the weighing, in most cases, is based on quantity rather than quality of argument.

For example, one of their arguments for one of the many alleged myths around Christianity go something like…
<argument>
Jesus said..
If I alone bear witness about myself, my testimony is not deemed true- John 5:31

And then later says…

I am the one who bears witness about myself.. – John 8:18

So therefore he’s a false witness.
</argument>

It’s funny how we will sometimes scrutinize fragments of the scripture to try and make a point. In cases like this, it seems the search for “truth” already began with a foregone conclusion and then evidence was gathered in support. Honestly, if we were to be real here, we would set out to find the evidence first and then come to a conclusion….

1. In John 8:18, the FULL quote is actually…
I am the one who bears witness about myself, and the Father who sent me bears witness about me.
And just before that He says [v14]
Even if I do bear witness about myself, my testimony is true, for I know where I came from and where I am going, but you do not know where I come from or where I am going

2. John 5:13 leads into the next verse…
There is another who bears witness about me, and I know that the testimony that he bears about me is true.
And then He continues and talks about John bearing witness too.

Both, fully quoted in context, make very powerful and merciful claims.. but i guess there are none so deaf as those who do not want to hear.

Doom?

The List itself should probably be rated somewhere ๐Ÿ™‚
But certainly some valid reasons to point out the obvious: we cannot continue as we currently are [as a species] with our pervading [and degraded] morals and [de-]values and still expect to survive in some half-functional world.

who be bluffing who?

but that’s not to be a nay-sayer… o no.. on the contrary:

life is for living and living to the full.. indeed:
the Good Shepherd came so that we could have life and life more abundantly.
and we all know that life is not just the breathing and eating part.. it’s that which refers to vitality- and that is what He came to give us… abundant vitality ๐Ÿ™‚

so look past the doom and nay-saying- these are more comments stating the obvious… life is good, because God is good.

Obituary Of Common Sense

circulated and received by email… author: unknown.

Today we mourn the passing of a beloved old friend, Mr. Common Sense.
Mr. Sense had been with us for many years. No one knows for sure how old he was since his birth records were long ago lost in bureaucratic red tape.

He will be remembered as having cultivated such value lessons as knowing when to come in out of the rain, why the early bird gets the worm and that life isn’t always fair.

Common Sense lived by simple, sound financial policies (don’t spend more than you earn) and reliable parenting strategies (adults, not kids, are in charge).
His health began to rapidly deteriorate when well intentioned but overbearing regulations were set in place.

Reports of a 6-year-old boy charged with sexual harassment for kissing a classmate; teens suspended from school for using mouthwash after lunch; and a teacher fired for reprimanding an unruly student, only worsened his condition.

Mr. Common Sense declined even further when schools were required to get parental consent to administer aspirin to a student; but, could not inform the parents when a student became pregnant and wanted to have an abortion.

Finally, Common Sense lost the will to live as the Ten Commandments became contraband; churches became businesses; and criminals received better treatment than their victims.

Common Sense finally gave up the ghost after a woman failed to realize that a steaming cup of coffee was hot, she spilled a bit in her lap,and was awarded a huge financial settlement.

Common Sense was preceded in death by his parents, Truth and Trust, his wife, Discretion; his daughter,Responsibility; and his son, Reason.

He is survived by three stepbrothers; My Rights, Not me, and Lazy.

Multicast Delegate Gotcha

There are enough multicast delegate samples in .Net available on coding websites including MSDN to get you started on how to make use of them. The ‘why’ is tackled on some of them but not many include a section on “things to look out for”. This post details one such gotcha: using it in the Observer Pattern.

Let’s start with a commonly published multicast delegate sample, flavoured with Observer Pattern language:

public class Subject
{
   public delegate void EventHandler(object from, EventArgs e);
   public event EventHandler Notify;

   public Void OnNotify(EventArgs e) {
   if(null != FireEvent)
      Notify (this, e);
   }
}
public class ObserverA
{
   public void Notify(object from, EventArgs e) {...}
}

This design has several advantages and is endorsed by popularity of use in ASP.Net, so why not use the model outside that environment? For instance, an observer simply needs to subscribe by:

ObserverA obs = new ObserverA();
subjectInstance.Notify += new EventHandler(obs.Notify);

The burden of managing subscriptions is relegated ๐Ÿ™‚ to the multicast delegate. No more foreach loops and keeping references on the observers. So, on the surface, all seems well in paradise. Further, the loose coupling between subject and observer via an interface [the delegate] promotes a warm and fuzzy feeling. The only snag is scope.

None of the samples you find deal with scope effectively since most of them deal with observers as either static methods [probably the most famous] or with methods inside and ASP.Net page cycle. And things can get fuzzy there. My next challenge is, what happens when Observer goes out of scope?

In order to clean up properly, the observer has the responsibility of unsubscribing. If it doesnรขโ‚ฌโ„ขt, the subject will just “resurrect” it each time it fires an event, even you dispose your observer. Ideally then, in order to overcome this problem, the “destructor” on the observer needs to unsubscribe, if subscribed. To do this, the observer must keep a handle on the subject [still part of the pattern rules]in order to:

subjectInstance.Notify -= myEventHandlerInstance;

Whic means the observer starts to take on more form:

public class ObserverA
{
   private Subject source;
   private EventHandler myEventHandlerInstance;
   public ObserverA(Subject subjectInstance) { source = subjectInstance; }
   public void Notify(object from, EventArgs e) {...}
}

Now we have each observer maintaining a reference to the subject instance so that if the observers fall out of scope, they can clean up their subscription. But now what happens if the subject instance goes out of scope first? How does it know notify observers of its unavailability? First jump is create a “DyingEvent” which becomes a mandatory subscription for all observers: Yuk! But thinking some more on it, does it even matter? If the subject dies, the observers wonรขโ‚ฌโ„ขt receive any more notifications, but then when they die, they try “unsubscribe”. Oops. Gotcha!

Any ideas?

Other references:
Softsteel Solutions: C# Tutorial Lesson 16: Delegates and Events
A Beginner’s Guide to Delegates

Seduction of Reduction

There are many definitions for reductionism but the most fitting here is
…complex systems can be completely understood in terms of their components
…the analysis of complex things into simpler constituents

Aaahh… this is the stuff of programmers. Give us any complex problem and we can quickly break it down into simpler consituents and provide a solution. Unfortunately, this habitual mode of thought also stops us from *really* seeing things they way they are.

The problems we deal with are indeed complex, but by no means linear. By this, i mean that the impact on the global system of a proposed solution in one area cannot always be accurately predicted. This becomes particularly true as the scope of the system increases. Manifested, we look to the codebase to see how this principle plays itself out.

As the codebase grows, small changes may ripple across the system and produce undesired consequences somewhere else. This is not always a design flaw, but can be attributed to the natural evolution of the system. However, in both cases, you end up with the same emergent non-linear complexity. Wether it falls into complete chaos or not is another discussion ๐Ÿ™‚

Our linear reductionism works effectively in small systems where the number of interacting components is easy to snapshot at any one time. As it grows, we need to adapt our thinking to facilitate this shift in complexity. This pattern of thinking i call, Density Dependance, adapted from a similar concept in the research of AI.[1]

When we start finding that our habitual reductionism starts letting us down [manifested most notably by statements like: “Aaah.. yes, i forgot about that”], we should flag ourselves to start actively looking at the global properties of the system and start thinking about solutions “holistically” [ although i’m quite hostile towards that word itself ๐Ÿ™‚ ]. How we think directly depends on the density of the solution, and conversely, the density of the solution depends on how we think.

Ironically, loose coupling contributes towards complexity through perpetuating the fallacy of composition, yet, it’s [LC] considered a good practice.
If all my components are reusable, i should be able to plug ‘n play different components- thereby making TheSystem itself a reusbale component.
Integration is easy? Not that loose coupling is a bad idea. It’s just funny, is all ๐Ÿ™‚

Even more funny, when business employ reductionism to negotiate deliverables, dev reacts badly:
If it takes one developer 4 days to do the job, then it should take 4 developers one day. So why can’t we ship on Tuesday?
Again, we’re never really engaging with any kind of linearity, so that kind of maths won’t fit. And software delivery is complex [on many fronts] but governed by a few deeply simple rules in order to manage the complexity. Get your simple rules right, and it’s B-E-A-Utiful ๐Ÿ™‚

And again, the theme keeps coming up time and again– even they way we think about our project should just be one of many tools we have available to deliver successfully what we, as programmers, agree to deliver.

References:
[1] Brooks, R, Cambrian Intelligence, MIT Press, 1999

Crime Expo

[Ammended: 9:15pm]

Crime Expo South Africa is attracting a fair amount of attention of late. With good reason. South Africa relies on tourism and foreign investment for growth, notwithstanding 2010, when we have the honour of hosting the greatest game on earth ๐Ÿ™‚ But how long can we pretend that all’s well when there’s serious trouble [not without good evidence] in paradise?

What’s more troubling though are the many responses to the site from people of all walks of life.

find more “civilised” :p debate at:

The Civic Platform
or
The Unbroken Barometer

I find it deeply troubling [irony aside] that many “peaceful” saffers would advocate crime [hacking] as a solution to combat something they don’t like. Oops. Although not meant to be serious and more said out of frustration or bursts of emotion, i do hope the site remains up and gets tested against time. further, this site is a showcase for our tolerance and commitment to democracy and freedom of speech. so let it be…
personally, i’m already bored with that site that ‘cos it’s just so negative- it ruins my day completely! but that doesn’t mean i’m not ignoring crime- that’s still a big issue for me. i need something to be done about it… but i’m pretty sure there are better ways of doing it…

Design Rules

li#font {font-color: #000000}

Obscurely labelled as the The Zen of Python (by Tim Peters) offers some lighthearted pragmatism and welcome relief in the face of TheCheeseMovement.

  • Beautiful is better than ugly
  • Explicit is better than implicit
  • Simple is better than complex
  • Complex is better than complicated
  • Flat is better than nested
  • Sparse is better than dense
  • Readability counts
  • Special cases aren’t special enough to break the rules
  • Although practicality beats purity
  • Errors should never pass silently
  • Unless explicitly silenced
  • In the face of ambiguity, refuse the temptation to guess
  • There should be one– and preferably only one –obvious way to do it
  • Although that way may not be obvious at first unless you’re Dutch [personally don’t get the Dutch connection but it does apply to some i have in mind ๐Ÿ™‚ ]
  • Now is better than never
  • Although never is often better than *right* now
  • If the implementation is hard to explain, it’s a bad idea
  • If the implementation is easy to explain, it may be a good idea
  • Namespaces are one honking great idea — let’s do more of those[erm… well.. mmm…]

Code Publishing

Being a subscriber [either by email or RSS] to various sites, i get a plethora of handy hints each morning which i archive, either physically or mentally- depending on the juiciness of the hint. Over time, i have noticed that the number of code samples being published daily is increasing. Some are new, some not. Others; interesting twists on old concepts and every once in a while, a real gem. Regardless of their subjective quality, it is encouraging to see the larger developer community thriving and eager to share. Yet, not without it’s a funny little twist.

It’s easy enough to code and it’s also getting harder ๐Ÿ™‚ Gotta love paradoxes. In getting easier to code, it’s getting easier to do the cool stuff that used to take “rocket-scientists” many lines of code and various libraries to get right. It was fragile work and the versions between languages, compilers, linked libraries and even OS’es sometimes, had to be just right. Not so much anymore though. But gettting the fragile stuff right taught you things you didn’t know you needed to know. And on the plus, your application failed fairly quickly [yes, that’s a plus], keeping that feedback loop tight. Now, that feedback tends towards the false-positive.

Applications take longer to fail because the semi-automatic cleanup of resources and layers of abstraction [framework of a framework of a framework] do their best to hide the fragile stuff away. They’re not perfect [yet] but we do rely on them to the point that we can end up writing code with “unknown” consequences [to ourselves that is]. Particularly when we do something outside the majority solution scope. More than it being a problem for us, in our enthusiasm, word is spread too quickly and it becomes a problem for someone else too. Hence an equally growing number of “You did what?!” and support forums ๐Ÿ™‚

And this is where it also gets harder because the framework of the framework of the framework is so overloaded to accommodate every conceivable situation that the volume of required interacting objects increases. And it’s knowing the nuances of each object which is not always easy to do, particularly if you’re not working with it every day. So when your brain hits upon an ingenious little trick, how sure can you be about the assumptions the frameworks below you made about your neat little implementation?

Nonetheless, the ecosystem of sharing we have created thus far is well balanced with a lot of diligent watchers out there making good catches and as enthusiastically sharing the gotchas. It’s keeping that balance in harmony which is interesting as the increasing number of developers communicate their increasing learnings in an increasing technology set within the increasing scope of business possibilities. All this, within the increasing number of mediums in which to communicate…

Of course, the disclaimers about the code not guaranteed to be working in a production environment, yadah yadah yadah, are all good and fine… but you do need to take responsibility for what you publish ๐Ÿ™‚

Not Responsible

Experience with service providers over the years has taught me one thing and that is that they all share the same common philosophy:
“We are not responsible for the service we provide you”

Telkom, the South African telecommunications monopoly has this in their terms and conditions, amidst a bunch of other CYA [cover your ass]:
“Telkom may provide hyperlinks to websites not controlled by Telkom (“target sites”) and such hyperlinks do not imply any endorsement, agreement on or support of the content, products and/or services of such target sites”

So, more than just not being responsible for the service they provide you, it seems they are not even responsible for their own website ๐Ÿ˜ฎ How many other companies out there do the same? And then we perplex at the breakdown in the fabric of society. It comes as no surprise really when the public examples are so insipid… aaah, but that itself is another discussion.

Vodacom too has it’s fair share of CYA. I’ve had *issues* with the software they provided [there is no alternative] for monitoring data usage. On more than one occassion i’ve been short-changed 80MB-100MB. Their customer care [less] response: The software we provide you cannot be used to reliably track data usage. Again. Another weak and, quite frankly, pathetic excuse- in the sense that is “so miserable as to be ridiculous”.

ADT, a security provider also suffers the symptoms of this modern day lukewarm customer [dis]-orientated behaviour. After waiting outside our house, in the rain, at night, for 45 minutes for their patrol vehicle to respond- we demanded an explanation. That was weeks ago. Still no word after many phone calls. Again, it seems that they are not responsible for the service they provide.

Edgars, yet another clueless organisation, allowed my mom to purchase a gift card for me which had no credit on it ๐Ÿ™‚ Again, that was my problem. What i have had to go through to NOT have this problem resolved, is unreal. The rest of the list is thick with these weak-willed corporations who make it your problem once you’ve signed a deal with them. And read the fine print. You will see that any problem that does arise: eventually becomes yours. Afterall, you made the decision to deal with them, so deal with it ๐Ÿ™‚

‘Cos remember:
“We are not responsible for the service we provide you”

Disclaimer: the author of this blog cannot be held responsible for any thoughts, messages and opinions expressed herein… yeah, riiiight! puhlease ๐Ÿ™‚ imagine that? what would be the point of saying anything if you weren’t held responsible for it?