Ada Obsession
Well, well, well. Kazeserver alpha RC1 has to be delayed due to some design issues and I am rewriting most part of the software so that the source can be understood easily. For the past two weeks, I was troubled by the old design but I have got a new picture now.
Isn’t Ada code easy to understand? Well, yes. But I was using a lot of Unbounded_String in records which made my code hard to read and understood. While Unbounded_String is compatible with database operation, it lacks the understandability and readability if compared to String (1 .. 10) for example.
Today, I am totally obsessed in Ada and am feeling the strongest Ada obsession after a couple of years. The feeling is still burning. If my Ada obsession keep burning, I believe I can release KazeServer for alpha testing before of June. Hopefully.
Subversion client hangs after post-commit
I had been hit by this problem since I setup Subversion on Ubuntu in January. The svnserve was properly invoked on Ubuntu server but whenever any svn client was trying to commit something back to the server, the client would hang for hours before it prompted an error: “Connection reset by peers.”
I searched all the Subversion and Ubuntu forums but could not find any solution to my problem. In the past months, I tried to identify the source of the problem and even tried many solutions suggested by people on these forums but the problem persisted. I had been committing to svn server with post commit email notification turned off and lost quite a number of post commit message. I used to keep track of changes by these email notification.
Yesterdat, I was trying my luck again and I accidentally noticed sendmail and sendmail-mta were called after commit. A look into syslog confirmed that sendmail process was put into sleep by some unknown reason. Failing to identify the cause, I removed sendmail and related packages from my Ubuntu server and installed Exim4. It is claimed to be easier to installed and configured than sendmail. The problem diminished after I got exim4 up and running. Now I am able to receive post commit email notification after every svn commit. Every commit takes a few seconds to complete after this. Problem resolved.
HOWTO – Clone your Mac OS X hard drive
First of all, why do I need to clone the hard drive? Good question though. Here are a few possible answers:
- I have too much money to spend for a spare hard drive to clone my Mac hard drive.
- I want to have a bootable external hard drive, installing on an external USB hard drive is not possible.
- I want to upgrade my Mac’s hard drive, and I don’t want to do the installations and setup all over again
Obviously number 3 is my answer. I acquired a bigger capacity hard drive to upgrade my current 120GB hard drive in my MacBook. After some Googling around, I found an answer.
There is an Apple utility program called Apple restore or asr located in /usr/sbin. Connect your external USB hard drive and format it using Disk Utility. Open the Terminal in Applications -> Utilities. Type the following command line into the Terminal to copy your hard drive over your external drive.
% sudo asr -source /Volumes/OSX BOOT VOLUME NAME/ -target /Volumes/TARGET VOLUME NAME/
Replace “OSX BOOT VOLUME NAME” and “TARGET VOLUME NAME” with actual volume names. asr will take quite some time to copy the contents of hard drive to external hard drive. Get a cuppa, pop in your iPod earphone and relax.
When asr completes the execution, it will print a message:
asr: did not copy blessed information to target, which may have missing or out-of-date blessed folder information.
Then, bless your target drive with this:
% sudo bless -folder /Volumes/TARGET VOLUME NAME/System/Library/CoreServices
Now, the hard drive is bootable. Restart your Mac and hold down “option” key. A screen will appear allowing to choose which volume to boot from.
Hacker and Cracker
I received an email from my sister, M. In her email, she pointed out I should not label myself as “hacker”. Well, I could not agree to her opinion so I decided to write this post entry to clear the name for all hackers.
Many people have watched too much Hollywood movies and have developed a perception that hackers are bad guys. They do not understand, nor can distinguish the difference between Hacker and Cracker.
Very well, Hacker and Cracker are like Good Sorcerer and Bad Sorcerer. Hackers are generally referring to a group of programmers or software engineers who dwell into codes of a computer system to find faults or loop holes so that the functionality, usually, security of the computer system can be improved. Hackers are also contributing to many open source device drivers to be used in open source software such as Linux. They study how a device communicates with a computer system without any documentation from the manufacturer (sometimes, some device manufacturers are reluctant to release technical information fearing their competitors may steal their secrets) and write codes to allow the device to communicate with the operating system.
Some hackers visit websites to look for security loop holes and put a file there to indicate their successful hack. Usually, they cause no disruption or damage but to alert system administrator of such security vulnerabilities. One of my website was hacked by hacker from Turkey last week. No damage or disruption caused but simply alerted me of security vulnerability. I quickly corrected the security flaw.
Hackers also study computer codes (binary or source) to learn about a computer software system so to rebuild another similar computer software system for the interest of know-how or to improve the software system. Instead of hacking, reverse engineering best described this type of activity.
Crackers, on the other hand, have the intention to harm or steal. They look for security vulnerabilities to get access into your computer system to cause disruption or steal your information for illicit purposes. Their ultimate goal is to cause damage or to gain something from you to be used for illicit activities, such as stealing your financial accounts or credit cards data for their financial gain.
There are many hacker organizations, for instance, BlackHat. It holds many international technical conferences and training around the world to improve information security.
Laypersons who do not understand the meaning of hacker generally think hacker is a bad guy. Being a hacker myself (sometimes), I just want to clear the name for hackers. And to show the good nature of a hacker, please read here and here.
Mathematics – The Systematic Reasoning
I remembered the way my mathematic teachers taught maths in class. Although none of them explained why we must learn maths, as it was the way supposed to be, they taught me systematic problem solving. I began to appreciate the beauty of mathematics when I started immersing myself in programming. The algorithm development and language constructs which are based on mathematics fascinate me with its beauty.
A good programming language teaches us systematic discipline and systematic reasoning. The first programming language which I learned was Commodore BASIC. I hated that. I learned half way (as the matter of fact, 2 days) and I switched to Apple Basic. In the mid 1980s, Apple II was the most popular home computer after Commodore VIC 20. Apple II that ran Apple DOS caught on the wagon very fast. The most common programming tool on Apple II was of course Apple BASIC. That was my first programming language and I had written many programs with it.
Then I was exposed to FORTRAN 77. The language construct was pretty much like Apple BASIC. I caught on with FORTRAN pretty fast. Then under some influences from friends whom I met at the computer center, I learned Apple Pascal. We challenged one another to increase the boot speed of Apple DOS. We rewrote Apple DOS with Apple Pascal and evidently increased the booting speed of Apple DOS.
Pascal is a very structured language (compared to Apple BASIC and FORTRAN 77) invented by Professor Niklaus Wirth to teach students programming and systematic reasoning. The structural construct of the language enables the programmer to think of the problem in a structural approach. Pascal cultivates structural discipline in solving programming problems. Pascal has provided me most of the necessary training in systematic discipline and systematic reasoning in solving problems.
When CP/M was introduced on Apple II, I was able to use UCSD Pascal on CP/M enabled Apple II machines. It wouldn’t be long before IBM and IBM compatibles (8086) stirred up a turmoil with MS-DOS. Then, Turbo Pascal (by Borland) emerged. Turbo Pascal was the lightest and fastest compiler at that time. I became addicted in writing computer programs with Turbo Pascal.
Then I caught on with C and C++ and began to develop software with Borland’s Turbo C/C++ compiler. When MS Windows became a de-facto standard on every desktop computers, I dwelled into Borland’s Delphi (based on Object Pascal) to develop GUI applications.
During Apple CP/M era, I was exposed to Ada. I discovered Ada compiler by accident in another computer shop. I bought the program without thinking twice. Of course, it was a pirated copy. Copyright law was not enforced then but thanks to the pirated Ada compiler, otherwise I would not know such beautiful programming language has ever existed!
In 1995, I started to learn Ada when books became available. In no time, I fell in love with Ada until today. Whenever I was told or perhaps requested to look at computer programs written in any other languages, e.g. PHP, Visual Basic, C/C++ and etc., I feel that represent an insult to mind trained in systematic reasoning as in Pascal papers which Professor Wirth wrote.
Ada and Pascal are very alike because Ada developers had adopted Pascal’s structural language construct. Both Ada and Pascal clearly represent logical expression without any difficulties. Both languages are constructed heavily based on mathematic concepts and thus enforce systematic discipline and systematic reasoning.
Virtualization – Installing Ubuntu Linux with VMware on MacBook
I have successfully installed 64-bit Ubuntu 8.04 (Hardy Heron) Linux on my Mac Book. Out of my expectation, the installation was rather quick and easy compared to installing Solaris 10. I had tried installing Solaris 10 on my Mac Book. Solaris installation was successful but I couldn’t boot into it. I wondered why.
My Mac Book sports an Intel Core 2 Duo 2.16GHz with 2GB RAM and 160GB hard drive. I am too skeptical to have 2 physical partitions on my hard drive. Thanks to VMWare Fusion, I can create virtual partition with it. After I have installed VMware Fusion 1.1.1, I created a Ubuntu-64-bit virtual partition and installed Ubuntu from the ISO disk image. With VMware Fusion, I can install directly from the disk image without having to burn a CD or DVD.
Since my Mac Book is codenamed Uranus, I called my Ubuntu on Mac Book, Uranus-Zeta. The idea is from the ζ-ring of Uranus
Like Linux, Mac OS X is a UNIX like operating system. Why do I need Linux? Well, there are a number of reasons. One being you can and another to learn new things. But these are not the reasons to motivate me. Being a software developer developing cross-platform software, I do tests on multiple platforms. Having Linux to run on my MacBook means I can develop and test my software on both Mac OS X and Linux environment without switching to my Linux/Solaris boxes. Another important reason is that I see the needs to support my clients on Linux arise and soon Solaris. Having the ability to run three different operating systems on one machine can be productive and versatile for me.
The other obvious reason is that I have a Core 2 Duo. Meaning I am having two 64-bit CPUs in one processor. It will be a waste of resources if I don’t utilize the computing power I already have. Assigning each CPU to run different operating systems and tasks is called virtualization.
With VMware Fusion, I can run Linux and Solaris side-by-side with Mac OS X without the need to boot into anyone of them at one time. This is a great feature when supporting clients in Mac OS X, Linux and Solaris.
Here are some screen shots (click to enlarge) of Uranus-Zeta:

Shoulder bursitis
I had shoulder pain since March. Initially, it began at my left shoulder after waking up one morning. The pain was not too serious until recently (for the past two weeks), I had lousy sleep. Both of my shoulders were aching and often woke me up in the middle of the night. I thought it was some kind of spraining and it would go away after good rest with less training. But it seems to self-exacerbate. The pain was getting more intense every night.
Last night, I read articles about shoulder bursitis or rotator cuff injuries and treatment. After reading these articles, I decided to give it a try. I applied Fastum gel (Ketoprofen) on both shoulders. Guess what? I had the best sleep ever since March. I woke up early this morning without any pain.
Fastum is used to relief localized pain of arthritis, rheumatism or sports injury. I should have acted earlier.
On and off, I had been doing some wauke spontaneously while I was thinking or working on some programming problems. Some kind of off-my-mind of physical activities after sitting in front of computer for too long. I guess it was the effect of banging my head on the keyboard and I lost sense of safety. Without doing proper stretching, I performed wauke with speed and force as in a counter attack situation. That could have torn my muscles or tendons on the bursa and I overlook the seriousness of the pain. How insanely I was!
Alright, now I am on Ketoprofen and I am going to apply it for the second time. Hope my shoulders will recover in a month or two.
GPS Guided Delivery
Delivery all done! A dozen hampers at 4 locations in Selangor/Kuala Lumpur. 3 out of 4 locations were alien places to me because I had never been there. Drop #1 in Sungai Long, Drop #2 was in Sungai Besi, Drop #3 in PJ and Drop #4 in Selayang. 1, 2 and 4 were places I was not familiar with and had never been there.
I arrived at Kajang toll at 1130 hours and started to use my GPS device to guide me. Found the place easily by following the GPS guidance. It took some times to navigate through some messy traffics and finding the block and the unit. But I managed to drop off and proceed to Drop #2 at 1215 hours.
Drop #2 and #4 needed some communication with the clients as their address were without street name. They used lot number as they were in industrial park. That complicated the process a little. By 1507 hours, all goods delivered.
On the night before, I researched on the GPS map and found Drop #1 and marked it. Easy job. I had to defer Drop #2 and #4 until morning so that I could call up the clients for some direction. I called them this morning and could roughly know the locations and marked them.
What made this mission interesting was an ironic demarcation which a traditional delivery versus technology-assisted delivery. While heading to Sungai Long after exiting Kajang toll, I saw a cab driver with a full load of hampers in his cab. He was on a hamper delivery mission too. The difference was that he was looking at his hand drawn map on the steering wheel. In great contrast, I was guided by GPS.
The mission had helped me to build a Clientele GIS.
IP Flooding
I am experiencing IP flooding on my router. It notifies me by email about this attack. Right now, I have identified the source and hopefully I can nail this attacker soon. This is not the first time I experience IP flooding. I have received quite many email notifications in the past 3 weeks but I was out. It is coincident that I am still at my computers solving some server problems.
SVN setup
I’ve finally found time to setup svn at my home net after so many months. My svn server was down when my previous Linux box was down with a dead hard disk last year. The setup was quite a brisk. I had everything installed and configured last night. The test for remote access using a url was successful. I could import, checkout and check in. Because it was already late, about 1AM, I felt rather tire and went to bed.
This morning, I hacked some codes to provide a rather informative post commit email notification. All are done except the check in will stall. It takes a long time (and possibly hang!). I have yet to fully test before I begin my development project again.
Is your connection secured?
Internet has become a common tool to connect your mobile computer back to the computers in your office while you are on the go. When you are out there negotiating business with your client, you need to extract a file from your computer in your office but you are hundred or maybe thousands miles away, how can you retrieve your file?
The answer is by using FTP or File Transfer Protocol. You can make connection from your mobile computer to your office computer via an Internet connection. It is very convenient to use. But there is a security concern. All communications between your mobile and office computers can be read like an open book by anyone lurking in the Internet. You need a secured way to transfer your sensitive business data.
Pragma Systems SFTP client provides you a secured FTP connection by encrypting all data before they leave your computers. You can be rest assured of the confidentiality of your data during transmission. Don’t leave your office without it. You never know who is watching.
Product Seminars
This morning I attended the Panasonic IP Camera Seminar at Panasonic Malaysia in Shah Alam. The drive was smooth but I was lost in Shah Alam trying to locate the place. I did not bring along my GPS but I managed to get to USJ11 where I was a little more familiar with. I took the long way by getting to the Federal Highway, paid the toll and found Panasonic Malaysia at last.
The seminar was organized by Panasonic and its distributor. Not so much of interesting talk. Organization was a little messy but overall good. Speakers were not very well trained and lack of exposure. The entire presentation was not too bad at all and it wasn’t boring as there were some people asking interesting questions. Most important of all was that I managed to establish contacts with Panasonic Malaysia.
Panasonic treated its guest very well with a nice buffet lunch. I took the lunch, washed down with dessert and drinks. Talked to my vendor and to establish closer relationship.
Then I had to rush to Hilton PJ to attend another IP camera event. It was a dealers gathering organized by Axis Communication and one of its distributor in Malaysia. The event was organized in Uncle’s Chili, a restaurant pub. Nice setup and cozy environment. The presentation was presented by Axis Singapore. The presentation was absolutely good and informative. Axis is a Swedish company and its IP cameras are world number 1.
Axis presentation had been very entertaining and educating at the same time. The presenter, Nafis Jasmani, had done a great job.
Axis and its distributor treated their guests very well too. Excellent and delicious food. I had a great “meal” with a beer together with some people I met there. Dessert was great too! The only thing I disliked was that people began to puff cigarette after food and beer. The smoke immediately destroyed the cozy environment and the nice cool air.
I spoke to Nafis before I left. We talked about Axis Developer Program and some technical details. As I understood from him, there are 4 developers in Malaysia developing some vertical Axis solutions. Quite an interesting fact.
Lost your password?
There goes year-end and you need to prepare your new year budget. You retrieve an Excel budgeting file to work on. You have not been touching this file for a year and you encounter problem. You can’t remember the password to unlock the Excel file. You can’t recall where you have written down the password either. You need to do the budgeting for first review in the board meeting tomorrow. What should you do?
You need a Excel password recovery software. It is an easy to use software to unlock the password for Microsoft Word, Excel and Access. Password-Studio Pro cracks the password from instantly to within minutes. It uses Smart Dictionary and Bruteforce hacking methods. With Smart Dictionary, it checks through 5.8 million common password combinations in a matter of minutes.
Password-Studio Pro cracks your password as easy as 1-2-3. First, start the wizard. Second, select an attacking method. Third, reap your rewards.
How to choose a web hosting provider?
There are thousands of WHP (Web Hosting Provider) with various plans. It is very difficult to make comparison of these plans and services offered by these WHP. Finding one is already a hard start. Web Hosting Choice (http://www.webhostingchoice.com) lets you source your favorite WHP. It also provides useful database query tool to search for the WHP of your choice according to your requirement or budget.
The query tool is very easy to use. Just enter your budget and requirement parameters, for example, the monthly fee you are willing to pay, the amount of hard disk space and bandwidth you expect to be provided. Then it will list all the WHPs that fit into your budget and requirement. Simple!
Whether it is for business or personal website hosting, no more wasting time, Web Hosing Choice is the right place to begin with.
Coding War or Extinction of Human Race?
When I stumbled on this story about a software engineer and his encounter of a bug in a missile launch command and control system, I read with delight because it has been a while since I read an exciting piece of story about Ada. On the other hand, I was so nervous because our extinction might just be a string away.
The story is about a software engineer trying to maintain a 400KSLOC legacy system when the OS and compiler version were upgraded. You can read the full story here.
It is pretty exciting to read about the job of working on the legacy Ada code of such mission critical system. Why was the error occurring? What would be the consequence if the missile launch test failed? What if the missile were launched “accidentally”?
I believe, one day, the human race will extinct as was portrait in the movie Terminator. The extinction will be due to an error in a software, or rather the negligence or ignorant of a software engineer.
What the story tells us is that it appeared to be some 20 lines of code which caused the upheaval this Thanksgiving. May be it is really Thanksgiving for giving the human race another chance to survive. So, do what you want to do most, enjoy life while you can.







Listen to my podcast