Tuesday, July 31, 2007

First Amendment

Over the previous weekend I have been sparingly indulging in the new Found Joys of WPF. WPF really does what I choose to call the First amendment to the way of development i.e. It effectively separates Presentation and Code-behind in desktop applications. Generally speaking few people have the gift of knowing how to create a stunning UI and design optimal code, this is generally due to the fact that Creative Artistic Juices rarely flow in the same veins as Creative Analytic Juices (except my friend Emmanuel Kitonyo). This has led to a need to segregate duties and thus a it results in a great deal of documentation and work on paint shop pro to design a useful UI that can be sent to the developers to implement AS IS. XAML now enables the implementation of the UI design to be done away from the code behind. so naturally the designers will be left with Expression blend and most of us with Visual Studio.

WPF has introduced the concept of Styles in desktop Apps (any one who has done CSS understands what am talking about). Thus it is my recommendation that every programmer/developer/engineer should have a run on this (not so newly) found technology. you can get Expression Blend, it really makes some neat UIs.

In the next few weeks I will run an article on how to create a mapping application for Kenya. Stay tunned.

On another front, I yesterday took some IQ test and scored really well and knowing the mindset of programmers/coders/developers/engineers and scientists of this computing field. I wish to challenge you my beloved reader to test yourself. You will feel really nice when you finally get to tabulate your "Superior" intelligence therefore confirming your long held belief that you are indeed...The Smarter one Now!!!...but don't take my word for it- do the test.

Friday, July 27, 2007

The Duckling phenomenon

An old adage says that the first thing a Duckling sees after being hatched from an Egg becomes the Mother, the analogy has never been more truer than when it is used to describe Programmers/coders. All programmers and other script-writing fellows are normal beings that normally follow the path (image) of their creators, the first language a programmer learns become the basis of argument and language of choice and consequently becomes the language to which they would fight to defend to the bitter end. Few characters have been able to escape this silly situation.

The big fight as far as programming is concerned can be summarized as a fight between two kinds of people. People who love to use BASIC-like languages vs. the Rest who love delimiting their lines with semicolons and using curly braces all over. The latter loves to bash the poor former and in day gone by “Dim x As Integer” loving coder/programmers/scripters were regarded as Para-Programmers who seemed to know nothing and had nothing to offer to the development environment. Fiery quips of “VB6 provides a better GUI development environment” were quickly pacified by the then quite effective “If VB (6) is so great, why doesn’t Microsoft use it?” and most definitely they (me included) didn’t have an answer to it. Arguments of Memory Access (like anyone used it anyway) were additional armory in the Arsenal of the Pro-semicolon faction. As they years passed so the argument evolve and with the evolution (re-writing) of VB6 to VB.NET and finally we had something in common - the CLR that made “Us Equal and Had No” equal (sorry Java Folks). Thus the argument changed form to “VB.NET can do anything C# can do.” This has been going on for a while and is kinda tiresome. So this is what I say, if you only know one language, you are crippling yourself. The world is out there, the weekend is ripe, fire up a new IDE and jot down a few lines of a not so friendly language –you might actually like it.

By the way what happened to “Managed C++”? No one seems to be defending it so much!

Thursday, July 26, 2007

Its a Bugs Life...

My reflections on the life cycle of a Kenyan developer are as follows, the Kenyan breed of programmer/developer e.t.c has a life cycle that tends to be like a soccer players. You start in college and proceed to start working of course depending on how luck/good/both you follow the following steps.

  1. Division three

This is where you are picked by the small boys, you generally do every thing, “Mambo ni one man show”, and this place have problems in that the salary is always late. You work too hard, you basically learn the ropes ,you may get to ‘management’ level here but its only a title-the salary is “Mteja hapatikani” and get to discover the best software development…sorry soccer clubs around. There are no KPIs, and basically what you earn can stagnate for X number of years , depending on the Managing Director/Owner/CEO or can grow in “Leaps and bounds” depending on your Managing Director /Owner/CEO.

  1. Division two

This are basically better paying clubs that people move to and it seems like the best of places to be around, get a better developme...sorry playing side. More structure, the salary is seldom late and of course it harder to climb the programming ladder, you get in as a Junior guy-regardless of your performance in Division three but you are still ok of course until the next review meeting and you get a few coins to your pocket...and as the old adage goes-the rest is history, you start looking for opportunities to move up the ladder.

Most “Big Software Firms” in Kenya are here.

  1. Division one

This is a place where you find even more structure, but the roof top is ceiling is quite high, you rarely get to be “Head” anything without serious “Siasa and well, KPIs are a bit stringent. In Kenya such firms tend to be Multinationals and large firms, Software…sorry Soccer may or many not be the Core business.

  1. Premier League.

This are basically multinational companies that rarely get guyz from Kenya…think of them as the Barça and Real Madrids of Software development. Companies like Google, Apple and Microsoft fall in this bracket. “Ukienda umefika.”

Of course any programmer/developer/coder e.t.c worth their salt dreams of either two things,

  1. Working in a Premier league level firm i.e. playing in La LIGA, Serie A.
  2. Owning a Premier league team equated to being Roman Abramovich.

Going into number 2 above however tends to take you to Division one…but as the Manager/CEO/Director, then “doing unto others what was done unto you.” This stage is normally characterized by research, one starts researching on how Bill Gates made it big in the software business or how Larry Page and Sergey Brin had their big break. In a number of years depending on wit and/or luck you make it big and follow the same steps of a player but as a Managing Director/CEO/Director.


In conclusion, you whoever you are; wherever you are in the development cycle, work hard and progress to the next level. But all in all its like chasing the wind.

Wednesday, July 25, 2007

whats in a name anyway?

By the way if you haven’t noticed yet this blogs address is 'wordsofankenyanprogrammer' which and should be ''wordsofakenyanprogrammer'...but who cares? It’s my blog and thus it will remain!! (Read: it is a problem renaming this blogs)

You say Potato...

The clock is ticking as I approach departure time; the morning has come with questions of what I think the differences between a Coder, a Programmer, a Software Developer a Software engineer and a computer Scientist are.

A coder:

I think a coder is just a fellow who simply writes code, any type of code. For a hobby, for kicks or for a little bit of money. Work from coders generally would be likened to a street fighter's prowess in fighting-Raw,

Brute-force and sometimes inefficient. But one thing is for certain he has passion.

A Programmer:

A programmer, on the other hand, is a coder who kinda went to class a bit. A programmer knows about data structures, the difference between bubble sort and quick sort, OO techniques i.e. Polymorphism, modularity encapsulation, why not to use "GO TO" statements. This fellow can be equated to a street fighter who went to a Dojo and was taught the art of war. He is more elegant yet passionate. He/she is better equipped to do damage. He/she works alone so does not get the usual team benefits. But has the benefit of working from system analysis, design, coding, QA and deployment. So he can become an all rounder. He resides in companies that have software development is not the core process.

A Software Developer:

Well this is a programmer in a larger team; he sticks to the implementation of a design or the interpretation of a Requirement to a code design. A Developer writes Components and not the whole program. Software developers are also concerned with Version Control, Build Process. Software developers also experience team benefits and thus slowly get to trust the other developers in the team. They basically reside in companies that have software development as their core duty. The analogy is that of a street fighter whose gone to a Dojo then later joined the Justice League as Batman.

A Software engineer:

This is a glorified name for a Software developer who has hang around the development circles for a while. He is the old Batman in Batman of the future; he gives experience to the younger developers in order for them to avoid pitfalls that cost him.

A Computer scientist:

These are folks that went through a computer science course, they think about optimizing algorithms, low level memory operations e.t.c. they may or may not have programming tendencies. he/she is seldom involved in the 'crunching' of requirements to make code- they consider that work to mundane and repetitive and when they do get involved they operate only as 'consultants'. He thinks Visual basic and any other Microsoft software development product are verbose and thus is a “Waste of their Fries”, they are obsessed with put “semi colons” at the end of each line. Using the fighting analogy, this is the “Master” in a dojo, always finding ways of validating himself and criticizing the street fighter. He ends up being a lecturer.

So you might ask who I am. I am a software developer, at least to my definition.

Tuesday, July 24, 2007

Finally Footware I Like


Check out this pair of sandals...IS MUOTO!!!!

2 of a Kind

I woke up this morning feeling kinda angry because of matters which I will not divulge on this forum, but later as I realized their are two kinds of people, programmers and others and my analysis of all this brought me to the point where I got to understand folks who watch “Art scene” and that Tim Njiru program- “In Sync” or is it “insync”. Not that am implying that you can’t belong to the two sides but it is kinda hard to be in touch with the artistic side and be thorough and passionate about writing code. As far as work is concerned today has been a kinda slow day and am hoping that it ends soon, as far as what I have learnt today...

That u can actually invoke activex objects in Javascript e.g.

var WshNetwork ;
WshNetwork = new ActiveXObject( "WScript.Network" );
document.write(WshNetwork.ComputerName );

Writes the name of your PC on the page that hosts the script. of course the page has to be a 'HTML application' i.e. a '.HTA' file.

Today also marks the “Genesis” of this forum namely- the Mass exodus of one and it is my solemn prayer that I keep this blogspot running.

The Mass Exodus of One

this post comes in as live my twilight days in FWAscribe as a senior developer, with great hope of moving to a (hopefully) bigger office at Celtel. i am spending my last days at FWA closing calls on my tray and finishing up some web training that hopefully will be useful in years to come :).
of course this implies that after 6th i will be available only on the Celtel network and whoever wishes to contact me will then be forced to call me on that network, people form 'other' networks (read safaricom) will attract large expenses-poleni. But i will be loyal to my own as form 6th.