New Blog

I’ve finally changed my blog from carrying the Thoughtworksuk inital to a more general kashanuk. The blog is now going to continue at:

It has some new and cool posts about job hunting, generalising language experience, reporting and scope changes, as well as what a Microsoft Shop is.


Leave a Comment

Knowing When to Log Errors

In a recent chat iwth Daniel Bodart, I realised that after programming Java over the past few years, it offers programming an open option of handling bugs. Handling errors needs great care and scrutiny and care. When writing error handling code one has to decide – do you really want to handle the code?

It’s not too uncommon to encounter a code which logs every single error (e.g. user did not enter his telephone number in the online form) into a log file. This results in a horribly long, few gigs of error log file daily depending on site usage. Then looking through that file is like finding needle in a haystack, unless the large log file in itself does not cause issues serious enough (system hangs, time consuming to search).

The idea here is to either handle an error as it is if possible to handle it, otherwise should we let the system crash on errors we don’t know how to handle giving the user a negative experience. 

If we had 10,000,000 users signing up for a £20 service. The system does not work for 0.05% of them which results in 5,000 users having issues resulting in £100,000 direct loss of potential revenue. It also depends on how fast the technicians are in catching the error, thus if we catching it after 1,000,000 users used the system, the direct loss of potential revenue will be reduced by a 10th to £10,000, all the while causing no issues that the remaining users that might have had the same problem. But any potential loss is hit on the revenue and needs to be balanced out.

Leave a Comment

Mingling with Mingle : Intuition

The past couple of days were spent working on Mingle. I had used mingle a few months ago, and it seemed fairly simple. This is because most of the features like any good user-interface programs are intuitive.

The beauty of Mingle is that it is for all kinds of people in a project. It seems to be geared with projects that rely on Excel to manage business points and stories. In the “old way”, by giving the Excel file to the client, information is shared. However, that seems risky business as not everyone (yep, its true) has Excel (or Excel 2007 with .xlsx extension that can’t be read by old readers – painful when you have v2003 at home).Transferring to Mingle from excel via import is a simple process.

I particularly like the way reports are customisable without going to extreme lengths by keeping everything associated with cards (stories/business point) and their properties. Generating tables from queries, as well as having graphs, pie charts are fairly simple to do – given that there is a readily available example. There are examples included from the Thoughtworks studios website, but going through Thoughtworks sandbox and looking at what other people have done was the best way for me to learn [Learning by example]. No thorough studying or learning is necessary to work in MQL.

It is also vital to understand the limitations, and what a person can’t do at the present (like extracting comments, or cards that were modified recently) in reporting. Perhaps those sort of things are not intended for MQL, or maybe Mingle was not set up correctly by its users as they did not know what sort of report they wanted, thus Mingle was not being used the way it was intended.

But nevertheless, I’ve been able to do almost everything that was requested in generating reports, and that after a few minutes of looking at other projects MQL usage.

It comes back to saying how important a good user-interface design is, and that coupled with making different parts intuitive for Devs, QAs, Clients, and PMs which I think is the #1 reason for Mingle ‘s success.

Leave a Comment

Coding Food

I am different states of mood when I am coding which does not involve tea or coffee after lunch. Depending on the code, I develop different tastes and cravings that go with the coding I do.

1. No mangoes I’ve tried can ever begin to taste like Indian and Pakistani Mangoes. I tried having Oceanic and African Mango which tasted horrible as compared to these sweet mangoes. Unfortunately, they are only available from Jun-Aug. If care is taken to remove the skin and cut into cubes, coding is easy while eating with a fork, otherwise be prepared for some mess while eating if they are cut into slices. The most popular varities in Pakistan are are Sindri, Anwar Rathore, and Chaunsa. These go really well when leisure coding.

2. The best food is Mango Pickle. Calling it pickle is doing disservice to the food. It should be called Achar (as it is called in Pakistan and India) in English as well because it does not taste at all like the pickles we’d find in the UK supermarkets. It is an oily flavoursome extreme of a pickle which can be enjoyed with a Paratha (flat bread).

Comments (1)

Java Vs C# Worlds

This is what I understand about the Java Vs C# conflict from the open source perspective:

We have come a long way since The Semicolon Wars

There is an everlasting debate about open source software has done considerable damage to the commercial aspect software community. Or perhaps this debate brought in competition and improving standard causing the damage argument to no longer hold as consumers get more for less (therefore reducing potential profits of companies like Microsoft).

But with open source and further advances in technologies, there is always a technological exchange taking place between commercial software enterprises and open source community (more like adopting each others ideas).

Borland’s C was once the dominant force in these barrens lands which very few people like Turing trekked beforehand. Eventually the monopoly was broken up by lack of market understanding and internal political issues in the company, and thus with time, Visual C and Java emerged.

As soon as it became apparent that nothing was free and something had to be done to provide free extensions to the language and the environment, thus Open Source Guerrilla’s gained force and members. It is interesting to note that Guerrilla’s did not just stay with their own party and focus on improvement of one subset of the whole developer land. Some rebels, encouraged by Microsoft, started open source community through the flexibility afforded by Microsoft and won some rebels back which helped start an Open Source movement of its own.

Now, there are many Java and .Net (probably those that migrated from C and C++) users. Microsoft tried to tug by building a failed language such as J# to entice users. It probably even paid people to write books and promote the language. But the propaganda machine in this war did not work. Java users would not have it no more. They were there to stay, not as refugees but a dominant source of power in their territory.

In the end, both Java and C# are facing each other eyeball to eyeball waiting for the other side to blink and lag behind after which the commercial force will wipe the enemy. For now, no treaty will be signed, but the temporary harmony will remain until the next version!

Leave a Comment

My Pakistan and Musharraf

I would normally reserve non-technical posts for my personal blog, but think that given the attention it caught that I would post it here.

“At last, Musharraf is gone!” is what most people in Pakistan would say. But don’t we always start accusing government of corruption and malpractice at the cost of Pakistan’s poor after 2 or 3 years of their resign.

Each of Pakistan’s government could be summed up by a quote from a 1999 movie Sunshine based on two great Hungarian Jews who won Gold in 1936 Berlin Olympics. Valerie comments:

“I have seen the collapse of government after government, and they all think they can last a thousand years. Each new one always declares the last one criminal and corrupt, and always promises a future of justice and freedom.”

Musharraf sold out (to some foreign power) lots of Pakistanis by means of disappearances. Probably the most famous one is known as “Prisoner 650” (Dr. Afia Siddiqui) – an MIT PhD graduate who studied genetics was kidnapped by Pakistan’s intelligence agency (ISI) and held in Afghanistan without any charges and for more than 4 years (and counting) and tortured (beyond mental capacity). Her husband, 3 small children, had to endure life of uncertainty.

Other political parties in Pakistan are being ruled like a sub-Monarchy. The current leading party – PPP was handed down to Benazir by her father, and now – temporarily to her husband until her son is capable of taking over after finishing his education from Oxford University. It is a culture where the elite pursue super-elitism without any sense of fairness.

Pakistan’s history has been rather cyclical in the past fifty year, because no new figure has really emerged in the political scene!

Leave a Comment

Variables and Names

I’ve been working with C# for the past few months, and never encountered a “var”. Mark commented seeing var’s all over the code base he is working on here.

It probably happens that once in a while a person encounters ancient code base, or people still using old methods of coding. I remember a few years ago in VB class at university, they were saying that to improve readability, variables should be named as “String strReceipt” and “int intTotal” which was probably the most ridiculous thing I’ve ever heard.

Even worse was the (Q)Basic era where variables were variables were named a, b, c and when there were too many, I was told to keep some sort of documentation for future reference as to which variable is for what for purpose. No matter how primitive, this can never be beautiful as some things I found in my previous blog about Ugly Code turning beautiful.

Comments (2)

Older Posts »