Rants Technology

Pending Changes

One of the great habits now ingrained into my being are doing diffs on code before committing a check in. It’s a great habit, and worth the extra quick 2 minutes. It’s also a great time to review your changes and get your head into the right space for your next move. Of course, having great tools like Subversion and Tortoise (or even git and bzr) make the job a pleasure. But then you have this…

Pending Changes

(Names have been blanked for privacy reasons)

My pending changes tells me i got a whole bunch of changes to commit but comparing each one tells me they’re the same. 😮 Not exactly conducive to keeping up a good habit, i would say. I actually only had 4 files that really changed, in case you’re wondering. No amount of refreshing, getting latest version or checking out could give me just the files i want to review before committing. Sigh.

And most people still ask me why i insist on using open source tools to do the job (properly) :p


I stumbled upon Derek’s posting on TFS and it does seem that things which should be simple (and were solved moons ago) are indeed quite difficult with TFS. The “plus” side though is ian has taken the time out to do something about it: cue LizardTF. Keeping an eye on that while i simply have to use TFS…


Howto Help the Economy

A bit of locally flavoured South African non-technical posting… on how to help an economy in need.

Indeed, when the chips are down, and prices are going up, and the economy is under threat of recession; what’s the most tactful move you can make? Why, organise a mass-action protest stayaway that effectively costs businesses billions of rands- just to put the cherry on top. Maybe put one or two out of action while you’re at- slam the final nail into the coffin? Oh, and don’t forget to cripple transportation and emergency services- hold the country at ransom during an economic crisis. What a sure fire way to send out a great message. At least you’re guaranteed of getting some attention.

Exactly what the message is however, and to whom it’s addressed to remains a mystery. ‘Cos the ubiquitous “business” and government of South Africa sure aren’t responsible for the price of barrel of oil.

Sadly, true character will always be revealed during the trials. But I suppose the alternative was to organise a call to come together and find innovative ways to save and help each other… Mmmm…

With great power, right, comes…?

Business Rants Technology


UPDATE: 3 July 2008
Updated code to reflect more recent tax tables (2009)

When I was asked to estimate PAYE on a gross monthly salary, i hauled out the calculator and started chipping away, according to the SARS Tax Tables. Not being a tax consultant or looking at various structured packages, the first stab is mostly always a straightforward estimate without investigating further deductions. While doing this, the math-programmer inside me went… “Mmmm. Calculator. Boring. Ruby. Smile”

Turns out, it’s a simple little script; a useful little snippet and, bonus, i migrated some more learning onto Ruby. An aside; there’s definitely something about the difference in speed and endurance of learning between my brain versus my hands. You know the feeling. You can forget a password mentally, but let your fingers do the talking… And utilising muscle memory as an aid is just one of the many senses you can draw on…

Back to the snippet. Not too much interesting going on in terms of code. I chose a multidimensional array for storing the tax table. First used a hash, found it was overkill, reverted. Also did a classic switch in the beginning, to determine which “bracket” your pay falls into, but then figured a straightforward loop works just as well. This was an interesting break in habits from C# however.

In C#, looping through an array would be: for(int ii=0;ii<array.length-1;ii++)
I did the same in Ruby, transliterated the code, first time round: for ii in 0..array.length-1
But then, the knowledge of the “times” method changed my thinking completely: 6.times { |ii| … }
There are, afterall, one of 6 tax brackets you are likely to fall in (for all positive salaries)

And that’s where it hit me: the uncomfortable (more about that later) shift away from a corporate-sponsored, statically typed, IDE-integrated, certificate-oriented, compilable(?) programming language into a community-driven, dynamic scripting language is underpinned by these sudden ferocious rushes of freedom. Too much freedom? Certainly, too much to what i’m accustomed to sometimes.

Why’s that uncomfortable? Well, MSDN, VS, MS communities and the framework tell you how to code- to a large extent. They dictate the patterns, the constructs, the idioms; in short, they impose a very definite way of doing things. And it’s a big abstraction layer, forever changing (but not really) and giving you tons of resources to make your coding easier. This is good. Books, online help, built-in help, IDEs, intellisense… and more of all the good stuff. Don’t get me wrong, these things made me very productive and i’m grateful for that. But then you break away from that.

You gotta search for help (no nicely packaged MSDN DVD delivered to your door). You gotta scratch under the hood. You have to engage with community blogs and real people in a virtual world. You are forced to read opinions. You are stripped to the only the most simple of tools- a plain text editor. On a coding level, you are forced to remember namespaces, method names, variable names, libraries… no more intellisense to rely on. And this is where it was difficult. No more crutches to help me be more productive. I had to start thinking- for real now- and remembering stuff. And then i got scared: what if the “community” changed something and i didn’t know about it- or worse, didn’t agree with it? And I didn’t get an email with an updated change delivered to me automatically via updates or DVD? Hang on! Is that really the way it’s supposed to be? Have i become that lazy? Oops.

And all i was doing was having some fun, writing a little script to calculate PAYE so that next time someone asks me, i save myself a little more time.

Btw, the Source Code is here, if you’re interested.

Rants Technology

Clamour of Petty Kings

We have some serious issues facing our world today. Heck, in South Africa, the land of opportunity, we have more serious issues than we sometimes care to face up to. Tackling real issues is hard work. So, what’s the alternative?

Stop the press! Houston, we have a problem! In fact, call Heather Brenner out of retirement! Google does not display a link to it’s privacy statement on the home page. God forbid!

Something so serious demanded the attention of the world media (and my blog :sigh:), along with a host of, ahem, clamour, of petty kings. Good thing they were watching because if Google manage to continue getting away this kind of arrogant in-your-face lawlessness, who knows what cheecky and utterly ludicrious cheap shot they might plan to get away with next? :p

Rants Technology

World’s Most Annoying Dialog

No matter how many times you say “later” it just keeps on asking the same question.. over and over and over…


Business Rants Technology

IT “Industry”

I say “industry” but there’s no real regulation put in by the government (at least here) which keeps the industry in check. For one, it’s not illegal to provide IT services or build software without a licence, while in more established industries, it is illegal to, for example, provide medical, financial, engineering or manufacturing services (where people’s lives are at risk) without a licence. Anyway, that’s not a formal classification or rule, just an idea that appeals to me. Why the necessity to make the distinction?

Over the last decade of building software, i’ve seen a fair share of hair-brained ideas. I’ve also seen some brilliant ones. What i haven’t seen much of though, is brilliant management. I’ve seen some, but these generally come from the business-oriented bunch who just happen to end up in IT; very rarely from tech-savvy management trying to keep a business going. In fact, most of the time, tech-savvy management who try to run their business without business-focused partners end up either working way too much overtime (work = life =work) or going belly up. Somehow, there exists this hype perpetuated by punctuated newsworthy stories of geeks-in-a-garage-cashing-in. So if they can do it, why can’t we? ‘Cos not every story turns out that way.

And particularly software. Manufacturing, distribution or sales, whether it’s IT or food, is the same thing, mostly. That is, the science and art of management has been established and the discipline is well understood. Software, on the other hand, doesn’t fit the mould. Yes, it’s plain manufacturing, distributing and selling, but therein lies the rub. You approach it with business fundamentals, and it works, but if you don’t adapt some of those implementations; you get left behind- and quickly. You toss out the fundamentals in order to keep up; you get dropped behind- even quicker.

As an example, my last company just liquidated. There are lots of different stories as to why, how, when, where or who. Bottom line, no more business. I can only comment on the software aspect; not the rest of the operation. So the only thing i do know is that it was very tricky getting the software strategy just right. Everyone pushed and pulled and chewed on this one all the time trying to get it to work. Maybe, with a little more time, it could have worked out ok in the end? Next time 🙂

More evidence supporting the notion that “software is hard”. And it makes me wonder how different things would be if you had to be officially licenced/qualified, by law, to operate in providing a software writing service. Not a fly-by-night programming course. Not a dummy’s guide to programming. Something professionally trustworthy and legally accountable. I wonder just how far would that go towards stabilising the “industry”? Make it more reputable and have governing bodies presiding over fair exchange between vendors and clients; also ultimately curbing the number of software businesses that just don’t make it.

Neh. Where would we be without the hype? It’s part of the magic of this little world 😉

Business Rants Technology

Crack My App

What do you do if someone asks you to do something illegal?

Of course (and i do sincerely mean and hope, “of course”) the first response is to just say “No”. But does it end there? Maybe it depends, maybe it doesn’t?

Well, I was asked by a company to crack some software. Everything was totally illegal and i declined, of course. But as i sit here thinking about it, revising my study module on business ethics, i wonder if just declining is enough? Should i actually report it to the authorities?

If someone asked me to go steal a car, i would definitely report that to the police, after carefully and probably politely removing myself from the company of the requestor.
If someone asked me to steal some money, even if it was money owed to them, i think i would also probably alert “someone”. But if someone asked me to crack software (because i can since i’m a programmer- or at least, that is the assumption), whom do i tell? Do i even need to? Nothing illegal has happened.. but just where does the line end?

Grrrr. Why do idiots want to crack stuff anyway? Just play by the book and it’ll be easier for all of us 🙂

Rants Technology

Recycled Software

What’s up with everything being ported to .NET? There’s nothing more boring than copying somebody else’s idea, unless of course, your own ideas are pretty crap 🙂

And (sup)porting a dozen applications to be used with the .NET framework surely cannot be considered as innovative either- it’s real name is “market strategy”. I must confess though, we’ve (that is, i) benefitted much from having tried and trusted Java libraries (example, NHibernate) ported across, but i’ve also wondered many a time, why not just use Java then? And now

An aside, what i loved about the marketing around NHibernate is that it builds on the solid reliability and legacy robustness of Hibernate in a Java world 🙂

But it’s all just recycled software ideas and methinks a large pop of the lemming community are looking for “innovation” in all the wrong places.

<warning>Massive Generalisation About to Occur</warning>

Software developers are more into being “advertained” (advertisement + entertainment) than any other population group i know. Trouble is, i always presupposed we’re more critical than most. But perhaps we’ve reached a point where we’ve started buying into our own hype? Afterall, we can make it fly with words like interoperability, multi-platform and integration. Oooooo… :p

Rants Technology


Much has been said about quality of software, and even more attention has been given to it. Further, a lot of methodology, and general how-to-do-stuff from project management to code implementation, even design and testing is focused on quality, including the ubiquitous “best practices” and framework collections out there. But then it struck me. All the software i “actually” work with is buggy.

It’s good enough, get’s the job done and i live with it, mostly. And like any good web-theme, the software will be replaced (read: recycled) soon enough, so why the big fuss about quality anyway?

If you got a good idea, get it out, sort the bugs out later, and if your idea is any good, you’ll break even before you manage to iron out most your major bugs, by which time it won’t really matter anyways. Uhuh, i hear a lot of “but that won’t work with real business software”. Really?

How many projects you code, pick up, migrate, port, patch, fix, debug or rewrite because business was complaining that they were (now) “too buggy”? But they were using them, right? And probably surviving pretty well with the “broken software” since now they can afford a software team to code, pick up, migrate, port, patch, fix, debug or rewrite. And the job would be done “ok” except that now, quality is an issue.

Reactionary management has a lot to do with it, but it leads astray and breeds a buzz which forges a plethora of blogging on delivery quality, all under the guise and good name of “it’s what the customer wants”- which they do. But not actually :p

When last did you use bug-free software to pay the rent?

Disclaimer: naturally, this is not a call to “down with quality”, or even “forget about tests”. it’s just a very radical and extreme (for me, at any rate) reflection on the focus we give to quality. For one, i groove on quality 🙂 while at the same time i can secretly admire that *some* manage to manage buggy software better than they can actually write it 😀

Life perspective Rants

Common Sense

there’s nothing common about “common” sense…