Sunday, October 17, 2010

Links dump 11-Oct-2010 to 17-Oct-2010

The Seven Wastes of Software Development

This talks about reducing the costs of developing software from a process-driven perspective. The seven wastes highlighted are:

  1. Partially Done Work

  2. Extra Features

  3. Relearning

  4. Handoffs

  5. Delays

  6. Task Switching

  7. Defects


As a programming grunt, I can readily identify with the problems highlighted. Basically the series talks about delivering value to customers and eliminating overheads while delivering software to the customer. These overheads are what constantly pisses off programmers. Unchecked-in, untested codes. Lost of domain knowledge. Unexplainable design decisions. Customer requests not correctly captured. Multi-tasking. Long-standing bugs that are just uncovered. The list goes on.

This is a must read for all involved in the business of building software.

Replica Island

Replica Island is a free, open-source game for Android.  I'm interested in designing some simple games but I've no experience doing such things. This website is great as source codes are provided for people to use some reference. The developer notes are also enlightening, tracing the design decisions and problems faced by Google developer, Chris Pruett. One of the most important sources of knowledge on Android game development.

chmod -x chmod

A puzzler for system administrators, what can you do if you remove the execute permission for the program that changes file permissions, aka chmod? Assume a data center environment and no Internet connection. Very interesting solutions provided.
Partially Done Work

Extra Features

Relearning

Handoffs

Delays

Task Switching

DefectsPartially Done Work

Extra Features

Relearning

Handoffs

Delays

Task Switching

Defec

Saturday, August 28, 2010

Important task completed – lessons learnt II

Recently I've been involved in a change request that modified some data that is returned to a web service client.

There was a bug that occurred whenever the stub made a remote service call, there was a conflict in the security algorithms being used. Even after googling, I still couldn't figure out what the problem was.

After some futile investigation, my colleague advised me to print out the security providers as additional providers may have been loaded during the remote service call.

So I did something like

Provider[] providers = Security.getProviders();
for (Provider p: providers)
{
System.out.println(p);
}


before and after the call, and true enough, there are security providers being dynamically added! So I called Security.remove(providerName) for those additional ones and lo and behold, it works! This is something totally new to me as I've not done much work on this aspect of Java programming before.

While debugging the problem, I realized it's sometimes more convenient to check the existence of environment variables rather than playing around with the program arguments.


#To get the environment variable in Unix
echo $PATH

#To get the environment variable in DOS/Windows
echo $PATH

#To set the environment variable in Unix
export VARIABLE=value # for Bourne, bash, and related shells
setenv VARIABLE value # for csh and related shells

#To set the environment variable in DOS/Windows
set VARIABLE=value

More info can be found at this Wiki.

Sunday, August 1, 2010

Missed 4 trains last Friday during morning rush hour

SMRT CEO Saw Phai Hwa says that even though trains are crowded during peak hours, people can still board the trains if they choose to. Well, there was certainly not much choice last Friday. I had to stand by the side and watch 4 trains whizz past me. All of them pulled into Bedok MRT station nearly filled to the brim. And the platform was nearly half-full with passengers going toward the city. Only some of them manged to squeeze in. Considering that there only a handful of stations east of Bedok, you can guess how bad it is for the rest of the passengers further down the eastern part of the East-West line.

Random checks with my friends seems to suggest that the congestion already started before 8.30am.

Friday, July 16, 2010

Challenger setting up shop at Bedok Point

Taken from their company announcement on SGX. A piece of good news to me, I'm usually too lazy to go down to Sim Lim

So around my area, there's quite a few branches. Excluding the upcoming one, there's one in Tampines 1, one in Eastpoint Mall, one in Parkway Parade
http://info.sgx.com/webcorannc.nsf/AnnouncementLast3Months/92D6AC4B193A94274825774400246E2A?opendocument#

Friday, June 11, 2010

World Cup 2010 on free-to-air channels

With the World Cup around the corner, I dug out my trusty A-B converter again to tune in to the Indonesian channels. The reception is a bit grainy but still acceptable. And it's way cheaper than the $94.16 you have to shell out for Starhub and Singtel's World Cup package.

A-B Converter

The good news is that I'm getting pretty good quality on Malaysia's TV1  and TV2, so I can watch that as well.  As I said before, if our neighbours can provide us with free World Cup coverage, why can’t the local channels do the same?

Saturday, May 1, 2010

Spamming the word "professional" makes you look quite the opposite

Just spotted this comment, which I will mark as spam.

Couple of days back I have started my local recruiting agency and now i am looking for some good highly professional place that is dedicated in placement of professionals, that can help me to expand my business of recruiting. I am also having many professional candidates looking for professional jobs and I also look for professional companies that require professional candidates from different areas right from restaurant jobs to highly trained engineers job and also management jobs. Does anyone know about anything nice place?


That's 6 "professional"s in 2 sentences. Wow. Besides showing a lack of vocabulary, the author also trips up on his/her grammar.

Saturday, April 24, 2010

Edsger W. Dijkstra's manuscripts

Edsger W. Dijkstra should be a familiar name to any computer science student, since one of the most important algorithms, Dijkstra's algorithm, is taught in graph theory.

Besides being a brilliant computer scientist, he's also written some articles regarding the computer science discipline and the computer industry. Click here for the link.

As such, most of what he covers are quite esoteric to those without any programming experience. Case in point, when I first started programming, I had to get used to the fact that in many languages, numbering starts at zero. Ie, the the first item in a list is indexed as 0, the second item is indexed as 1, and so on. An interesting view I discovered is that according to him, many mathematicians view computer science in poor light, and these are usually the poorer mathematicians.

My favourite piece is The Humble Programmer.

Some quotes:
On poor mathematicians:

I gave the puzzle as a sobering exercise to one of the staff members of the Department of Mathematics at my University, because he expressed the opinion that programming was easy. He violated the above rule and, being, apart from a pure, perhaps also a poor mathematician, he started to look for interesting, non-obvious properties

On poor mathematicians again:

Programming is one of the most difficult branches of applied mathematics; the poorer mathematicians had better remain pure mathematicians.

On learning:

We are all shaped by the tools we use, in particular: the formalisms we use shape our thinking habits, for better or for worse, and that means that we have to be very careful in the choice of what we learn and teach, for unlearning is not really possible.

On the Internet's impact on computer science:

No, I'm afraid that computer science has suffered from the popularity of the Internet. It has attracted an increasing —not to say: overwhelming!— number of students with very little scientific inclination and in research it has only strengthened the prevailing (and somewhat vulgar) obsession with speed and capacity.

On the power of machines:

Machine capacities now give us room galore for making a mess of it. Opportunities unlimited for fouling things up! Developing the austere intellectual discipline of keeping things sufficiently simple is in this environment a formidable challenge, both technically and educationally.

On society's expectations:

.....machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming had become an equally gigantic problem. In this sense the electronic industry has not solved a single problem, it has only created them, it has created the problem of using its products. To put it in another way: as the power of available machines grew by a factor of more than a thousand, society's ambition to apply these machines grew in proportion, and it was the poor programmer who found his job in this exploded field of tension between ends and means. The increased power of the hardware, together with the perhaps even more dramatic increase in its reliability, made solutions feasible that the programmer had not dared to dream about a few years before. And now, a few years later, he had to dream about them and, even worse, he had to transform such dreams into reality!