Knock knock...

I *am* alive and kicking. The lack of blog updates is a direct reflection of the effects the onset of winter is having on me. Winter has brought in that dreaded cold and gloom over the skies and has kicked the sunshine out of me. I prefer to hibernate than move about the slightest.

Most of the past week is up in a blur except for the last weekend, when I got myself to go visit my uncle and his family in Bristol. The trip from Reading to Bristol was quite memorable. The trip took a good two and half hours on the train with me having to switch in between due to a cancelled train route. I spent an additional two hours waiting for trains and another hour waiting for a bus in Bristol. The bus would have taken me right next to my uncle's place had I not been dumb enough to prematurely get off the bus in the middle of nowhere. I offered myself consolation by telling myself that it was dark and that anyone may easily loose bearings on an empty stomach. Luckily, my navigational abilities landed me at their doorstep with another half an hour of walking - which I wouldn't have minded were it not for the chilly air, the laptop and miscellaneous heavy scrap I had in my backpack. I was drained by the time I reached the warm coziness of their home and ended up falling asleep on their large comfy couch a few minutes later.

Despite the hassles in getting there, I had a fun weekend in Bristol. Being at the behest of a family and being smothered by their hospitality cheered me up (not to say that I was depressed prior to that). The little kids injected much needed energy into the environment ? especially the youngest one who seemed to be on a constant high on Speed all day around. I wish I had that much energy to burn. Hehe.


JavaScript Dhivehi Character Recognition

Here is another of my pet projects brought back from the land of the deceased.

This one is called "JavaScript Dhivehi Character Recognition". It was created early 2003 (or maybe late 2002) and made available on bichoo.net. Basically, it lets you draw a Thaana character using your mouse and then it "recognizes" what you have drawn. The purpose was mostly to satisfy my curiosity into artificial intelligence and pattern recognition at the time, however it also showed promises of the beginnings of a future where Dhivehi documents maybe scanned in and processed by a computer to convert it to text just as Optical Character Recognition technology has been doing for English documents. I think this rudimentary application was the first ever Dhivehi character recognition implementation released to the public. More interestingly, this seems to be the only character recognition implementation programmed in JavaScript floating around on the Internet even now. :-D

I spent a bit of time tonight reworking some bits of the code for clarity. The entire implementation is done using JavaScript and DHTML. You are welcome to study the code to see how it works. The code is well commented and maybe a good starter into AI and pattern recognition basics. It uses a single layer single Perceptron model to really simplify things however it is a good enough practical implementation to work for characters drawn on a 10x10 grid. The grid makes up the input data to the neural network. The neural network is hard-coded into the page and has definitions for each character in the alphabet. I do hope you are surprised by the accurateness of the recognition of this little application.

Have a look at it HERE. Let me know if you find it amusing... or not.

My company - Technova Pvt Ltd - is currently working on bringing a full fledged Dhivehi OCR software to the Maldivian public. It will probably be made available early 2006, as a service for customers requiring bulk OCR processing. We shall be releasing Windows, Linux and Mac versions of the software for home and business use around mid 2006.

Blobsy : Relaunch

There are a lot of little "projects" that I start with much gusto; however me being me, I burn out of enthusiasm in a few months. So today, while I was in my happy place I felt this utter need to rejuvenate the orphaned projects and stuff I've created over the years and bring them back to life. This renewed enthusiasm, so far, extends as far as bringing back online the orphaned projects by injecting some vitality into them or in a lot of cases bringing them back from the land of the dead.

So tonight, I started with one of my once most beloved projects known as Blobsy (http://www.blobsy.org/). Blobsy is an MSN Messenger bot framework written in PHP and works with any PHP version 4.3.0 and above. It can run on both Linux and Windows. It was the first PHP based bot to be distributed on the net as far as I know but then again I might be buttering up myself too much. Blobsy got featured on the main MSN Messenger fan sites such as mess.be and msnfanatic.com over the various versions I released. The live Blobsy demo bots had 3000+ people using it before I took them down. I was quite a really happy teenager back then. :-)

What does Blobsy do? It provides a base framework for providing bot services to clients on MSN Messenger chat network. It was meant to do to Messenger chat, what Eggdrop did for IRC. Blobsy provides very flexible methods to extend the functionality of basic framework via what I've called Handlers. So if you want to provide news, phone number lookups, emailing, group chat or whatever else your imagination lets you conjure up with the MSN Messenger chat network, then Blobsy would probably be able to pull it off. Blobsy supports Custom Emoticons and Display pictures as well. The current release versioned B2 beta 5 is compliant with the MSNP9 protocol used by Messenger 6.

Some of you may have used my live Blobsy demo bots which carried the same name (post a comment if you have encountered it or used it!). It had features such as sending SMS to DhiMobile phones easily via MSN Messenger. It also let you see the latest news from Haveeru and Aafathis. It let you lookup phone numbers and addresses on the phone directory. You could also store notes on it so that you could retrieve it from wherever you had access to MSN Messenger. Another Blobsy experience would have been the IRC2MSN bot that I launched sometime late last year or early this year. It used the Blobsy framework to let you see what was going on the Maldivian IRC channels while you were on Messenger. There have been quite a number of Blobsy based bots run by various organizations and individuals around the globe over the years.

However, the usage and support has waned over the past months due to my lack of updating the Blobsy project. I hope to renew the Blobsy project by regularly updating the project to provide for the changes being brought to MSN Messenger. I also plan to relaunch the live Blobsy bots targeted mainly for the Maldivian MSN Messenger users, by providing the old live bot features in addition to a mix of new features such as chat rooms right on Messenger. Imagine the fun!

Drop me a line if you got any feedback regarding the project/code or if you have suggestions for the features of the live bot.

Blobsy 2 box

Entangled in phlegm

I hate colds and with good reason too. I don't mean to be disgustingly graphic but my nasal passage is being filled with phlegm as I write. Meanwhile, my head now feels like it weighs a ton - leading me to the conclusion that my paranasal sinuses have been filled with lead.

All this started when I risked taking a 20 minute walk to the Students Union building at the University a few nights back with just a shirt and jeans on. It soon turned out to be an unwise decision as 5 minutes into the walk, the wind brought with it bone chilling air and had me shivering in no time. That is the end of risk taking for the month - I've learnt my lesson. Common sense eludes me more times than I would be comfortable with... :S

Rock climbing

I went rock climbing last night with a friend who kindly offered to play tutor. It was decided that we would be doing "bouldering" from the various types of rock climbing. Bouldering is quite fascinating since it is done without any ropes holding you safe and thus gives such an adrenaline rush. I stood in amazement as I watched the regular climbers scale the heights with seemingly no effort. They did not even flinch!

Not surprisingly, I had high expectations of myself when I made my first attempt. I was convinced it would be easy as it looked. However, I could not have been further from the truth. Climbing required a sharp eye - looking for place to grip and gain a foothold. It also required planning - organizing the route to take to get to the top in the least strenuous manner. I got the hang of it after repeated tries and much despair. However, I never seemed to get it done the way I plan it out in my head, which was of course very frustrating to say the least. It required fast thinking and decision making which was quite hard to do when I was dangling in the air and doubting the grip my trembling hands had on the holds.

An hour and half later I was in a slump, tired and worn out. My arms and legs were in cramps as I had stressed myself with more exercise than I have had in recent weeks. My fingers, hand and arms are still tense. Nevertheless, I enjoyed rock climbing so much that I have decided to try and make it a regular activity!


Snap taken while at rock climbing

I, Dhiraagu proxy server

Now I know quite a few people would wet themselves on hearing of the dirty things one can do to Dhiraagu. I also know quite a few people would risk actually trying what I am about to narrate, so here I begin with a disclaimer.

-----
Disclaimer: The information presented in this article is mostly for entertainment purposes and whatever educational value it may posses must be the result of some exotic butterfly flapping its wings under the canopy of the Amazon. At no time do I recommend you or any circus animals attempting these and consequently, I take no responsibility for your actions.
-----

If you are a dialup user on Dhiraagu Dhivehinet then every time you dial-in you get an IP address assigned automatically. An IP address is sort of a unique identifier for your computer on the internet. I was setting up an internet dialup connection to Dhiraagu on a friend's computer a few years ago when I wondered what would happen if I were to specify my own IP address in the settings rather than let Dhiraagu automatically assign me. If things were set correctly at Dhiraagu, what I was about to do should not be possible. However, I decided to try it out anyway, hoping that they might have mucked it up.

I decided I would attempt using the IP for the Dhiraagu proxy server, i.e. assign myself the same identity as the web proxy operated by Dhiraagu. As you might already know, all WWW traffic flows through a proxy server if you are a Dhivehinet customer, therefore the proxy server knows what you browse, when you browse and can totally keep tabs on you. Similarly, by assuming myself its identity I should be able to see what the real proxy sees. I should be able to grant myself the same power! Sure enough, as soon as I dialed in with the forced IP, the connection status icon at the bottom of the screen lit up. The received packet count in the connection status window kept on increasing endlessly. I was getting bombarded by the web traffic coming into the proxy! I had successfully assumed its identity. I then disconnected and I sat there with a wicked smile painted on my face, imagining the possibilities this opened up.

Few minutes later, my fingers were flying over the keyboard furiously as I wrote a quick ?n dirty proxy server software. Its purpose was to act as a proxy, logging all the data it receives. I could have done a kazillion fun things to add to that but I resisted the temptation. An hour or so later, I had the proxy program working as I wanted and so went back to dialing in. As soon as my connection got established, the program started displaying the various requests coming in from users on the Dhiraagu network. Less than a minute into the dialup and my program crashed due to overflow. There was too much data! I reprogrammed bits to fix the issue and went back on, logging data for about 5 minutes before disconnecting.

I opened up the log file created by my program and analyzed the various connection attempts. By the end of going over the log, I had another reason to be quite amused. The log indicated that about 75% of all requests I had intercepted was for pornographic websites. This was proof that much of the Maldivian internet users used the internet for porn!!

Anyway, this "flaw" gives rise to a whole set of opportunities. I could impersonate any server on Dhiraagu. I could become one of their FTP servers and start logging username/passwords. I could become one of the web servers and start serving rogue web pages. I could become the email server and log username/password as people attempt to check mail. The possibilities were almost endless...

I have mailed Dhiraagu several times over the years regarding this issue but never received a reply. Sadly, this was still working about 6 months ago according to a friend who tried it. However, it may have been fixed in the recent endeavor by Dhiraagu to improve the security in their networks.


UPDATE (11-09-2005):
I just received a log from "Fatty" of Digitial Squid that re-confirms what I revealed in the article. Thanks Fatty!

Below is a screenshot of the captured traffic in Ethereal where I have placed a "http" filter to list only the web traffic. On the right side, it shows the various websites people are browsing and on the left of that is the associated IP address requesting that particular page. It is interesting to note that 53 percent of the requests are for porn :-)

For the technical lot who are keen to see the actual Ethereal capture, HERE is the log that Fatty provided me with.


Captured data on Ethereal when posing as Dhiraagu proxy

My meals

I am feeding myself. I realized that 48 hours had passed since I had a decent meal and of which the latter 24 was spent inside the confines of my room.

I can't even remember most of what I did for the first 24 hours of the 48. I remember going out the night. I remember meeting up with friends of a friend. I remember celebrating the birthday of a friend at the flat block in their student residence. I remember a cute chick, two drunken guys and blood. The cute chick had a lovely smile and greenish-blue eyes that set me ablaze. I know she talked to me but I can't remember what she said. I remember the drunken guys arguing and breaking into a fight. Blood spilt from one their noses, punched and smashed - but I can't remember why they had such a violent disagreement. I think I got back to my room. I think I even made tea after getting back. Or maybe it was much later... Whenever it was that I made the tea, I know I never drank it. It stood on the table top getting cold, never having passed down my esophagus, till I threw it out today. Why I never drank it, I don't remember.

I have been on fluids much of today - orange juice, tomato juice and water to be exact. I finally walked into the kitchen as the sunset and the fireworks began, yet again, with the excuse of still celebrating Guy Fawkes. I made beef curry, mostly because the beef had a "best-before" date of tomorrow. Well I usually do not take heed of those "best-before" dates. It says "best-before" after all. It would say "expiry" if it was going to be invalid after a certain date right? I chose not to ignore the notice this time since I still have the vivid memories of drinking funny tasting orange juice and ending up puking it all out to be flushed down the toilet - the juice had passed its "best-before" date... Must have been a freak accident I guess. Afterall, it never happened before - except for once when I ate a tub of yoghurt - throwing up a few minutes later. Again, it was only a few days past "best before". They really should start printing "expiry" instead of best before. They should realize that there are people who don't have too high expectations - people for whom "best" is meaningless, especially when used in combination with "before". These group of people do not care whether the best period has passed. They are numb to the high expectations everyone else seem to have. Then again, I can understand why certain products come with "best-before" dates. Lets take the shining example of women. Nature makes women with a "best before" of 35 while he chose men to only have "expiry" dates. Maybe there is wisdom in our food being labelled ?best-before? too?!

I shall share with you some of my lovely meals from the past week. These photos were taken to satisfy my mom, who gets utterly concerned over my eating habits. She wasn't too happy to know I still haven?t consumed the "theluli bambukeyo" she gave me when I came to Reading. Sadly, there is only so much one can eat of "theluli bambukeyo" with sugar without getting bored of the bland taste...


Spaghetti with lamb mince.


Beef curry and egg rice.