Saturday, May 2, 2015

Process Address Space (Linux)

Process Address Space

  • Linux (and all modern OSs) virtualizes physical memory.
  • i.e. processes do not directly address physical memory.
  • Each process gets a unique virtual address space.
  • This address space is linear; addresses start at zero, and increments continously upto the max of 32-bit/64-bit integer value.
  • A part of this address space (~1GB) is reserved for the kernel. 

Memory Pages

  • The virtual address space is broken into memory pages.
  • A memory page is 4KB for 32-bit OSs and 8KB for 64-bit OSs.
  • A page is the smallest unit that the MMU (Memory Management Unit) can manage.
  • A page can be either valid or invalid.
  • A valid page is memory that has been allocated for the process; this page could be in physical memory or on disk (swap partition).
  • An invalid page is memory that has not been allocated (or freed).
  • Accessing an invalid page causes a segmentation fault.
  • Different virtual memory pages of different processes, could map to the same physical page; eg: standard C lib will have only one copy in physical memory, but will be mapped by different virtual memory pages of multiple processes.

Paging

  • A valid page, which has been swapped to disk, cannot be directly accessed; it needs to be brought to physical memory first; 
  • This task is handled automatically by the OS, and is not visible to the process. 
  • When a process tries to access a valid page which is on disk, MMU generates a page fault, which is captured by the OS kernel; kernel then page-in that page from disk to RAM, transparently.
  • When page-in is required, some existing pages (least used) might be paged-out, to make room for the new pages.

Memory Regions

  • Virtual memory pages of a process are grouped into several blocks called memory regions (or memory areas).
  • Text segment: contains the process's read only data -- program code, string literals, cont vars etc.
  • Stack: contains the process's execution stack -- local vars etc.
    • stack dynamically grows/shrinks as the stack depth increases/decreases.
    • multi-threaded processes contains one stack per thread.
  • Heap (data segment): contains the process's dynamically allocated memory.

References:

Friday, February 14, 2014

Monday, January 7, 2013

Good budget smart phones in Sri Lanka


iPhones are still the craze in Sri Lanka, like it is in any other part of the world. However if you have used/experienced several generations of iPhones, you would have realized that the feature differences in each generation isn't that significant, and might not justify the high prices it demand (especially in Sri Lanka).

At the time of writing iPhone 5 prices start at around Rs. 115,000. This is fine for bragging rights, but if you have used/experienced an android phone, you would have realized that you could get the same functionality/productivity for a much lesser price. It could be argued that the user experience / interface is far superior on the iPhone, but having heavily used both, I beg to differ; while my wife owns an iPhone, both my dad and father-in-low (both non-techies) use android phones with no trouble.

Most adults looking to switch to a smart phone from their regular/dumb phone, basically require/look-for the following functionality:

1. Basic voice call and SMS functionality (obviously).

2. Send/receive emails.

3. Browse Facebook. (yes they need to see those pics of their relatives living abroad)

4. Read news on the internet.

5. Navigate using (Google) maps.

6. Play a casual game when bored.

However most people do not know that all these tasks can easily be achieved via a low cost android phone. There's heavy competition in the low end phone market, so it's not easy to pick which one to buy.
Here are the main features to look for:

1. A big screen with decent resolution - most of the above tasks will benefit from a large, sharp screen; should be at least 4 inches.

2. A decent processor - should be 1Ghz+; better yet if dual core. - lower power processors will make the phone feel sluggish.

3. Enough RAM - should have at least 512mb; Please note that this should not be confused with the internal storage memory. RAM is where your applications are loaded and run.

4. Build quality - low end phones use cheap materials which might not be durable. Yet there are exceptions and you need to find such a phone.

I have found the following two phones to have the best bang for the buck, in the current SL market.

1. MicroMax A110 - Rs. 25k - simply the best bang for the buck phone out there. Brilliant big screen,  dual core and 512 ram.  (bit difficult to find though since they frequently run out of stock due to high demand.)

2. Huawei G300 - around Rs. 29k

Sunday, November 4, 2012

Intelligent web page reflow - badly needed in Android tablets.

I bought a Samsung Galaxy tab 2 7" recently. One of the biggest problems I had was that general web browsing was not a very pleasant experience on it. The mobile versions of the web sites were too small for it; the desktop versions were mostly too big and awkward to navigate. Web pages need to be zoomed in and out like an image when reading, and  needs both horizontal and vertical scrolling, which is very annoying.

I'm quite surprised that (android) tablet browsers still haven't implemented an intelligent page reflow scheme which will reposition the page elements and resize the text to a comfortable size based on the screen resolution and physical screen size. Page should be readable by having to scroll only vertically; even better would be an automatic formatting into a flipboard like mechanism where we could just 'flip' pages, instead of scrolling. I find flipping is more natural than scrolling, and probably uses much less cpu cycles on the tab.

Sunday, September 18, 2011

Reading and Writing to the parallel port on Windows 7 (and all post NT win OSs)

Recently one of my cousins from the electronics field wanted me to help him out on a problem; He had some electronic circuits which were controlled via a PC parallel port. These worked properly on Win98 machines but gave trouble on post NT win OSs (2000, XP, Windows 7 etc.). 

The problem was related to the difficultly in reading/writing to the parallel port in the newer OSs. In Win98 and older OSs, user programs could directly read/write to underlying hardware ports without restrictions. However the newer OSs had prevented this, and only kernel mode apps could write directly to the hardware ports.

The first option explored was to use UserPort, a kernel mode driver. The approach of UserPort is to manipulate the IOPM (I/O Permission Bitmap), so that user applications can be granted permission to directly write to the hardware. It uses a undocumented function (Ke386IoSetAccessProcess in NTOSKRNL.EXE) in order to achieve this.

However the UserPort driver didn't seem to behave correctly on windows 7. It would randomly freeze up the machine upon service start/stop operations. This could probably be a bug in the driver implementation, and not necessarily a problem of the approach, but the fact that a undocumented function has to be used, makes it that much unreliable.

The second option explored was to use inpout32.dll from here. This uses a more elegant approach where the user application calls the read/write of the dll, which in turn uses a embedded kernel driver (Hwinterface.sys) to do the actual hardware read/write (via DeviceIOControl API). The full details of its inner workings are explained here.

However my program in concern was written in java, and the inpout32.dll didn't have the necessary support to directly call it via JNI. One workaround would have been to write a bridge dll with JNI support, which in turn called inpout32.dll. 
The other option was to directly modify the inpout32.dll (since the source was available) to support JNI calls, but luckily someone had already done it here - as jnpout32.dll. This worked right out of the box, solving my problem at hand.



SugarSync - A powerful alternative to DropBox (cloud sync)

I'm currently trying out alternatives to DropBox, which has a (rather annoying) limitation of being able to sync only one folder. Putting everything I want to sync in a single folder doesn't suite my taste of folder organization. Also the free 2GB disk quota doesn't feel sufficient either (you could pay to get more though).

The alternative SugarSync seems to be more powerful with multiple folder sync and more control. Also it offers 5GB of free disk quota which is quite attractive. I have synced 4 devices so far, including my office laptop, home laptop, home desktop, and my Android mobile phone, and all seem to work very well.


SugarSync referral link  (to get me some additional disk quota ;)


Sunday, February 20, 2011

Software Architecture in practice - eBay Design - by Randy Shoup

I found this very interesting presentation (from 2008) about the eBay architectural design, done by Randy Shoup, who is a distinguished architect at eBay.


Presentation pdf file: Download from qconsf.com

He talks about the main forces which drives the architectural design of eBay, which are:
  1. Scalability
  2. Availability
  3. Latency
  4. Manageability
  5. Cost
And the 4 main strategies used to achieve these goals, which are:
  1. Partition Everything
  2. Async Everywhere
  3. Automate Everything
  4. Remember Everything Fails
The presentation runs for about 1 hour, and is very interesting to listen to, until the very end. It contains lots of examples of real-life problems and how those are tackled at eBay.

This is a "must-watch", for any software architect or anyone aspiring to become an architect in the future.

Monday, March 22, 2010

Building a budget Gaming PC in Sri Lanka

Building a budget gaming PC here in Sri Lanka is not so straight forward. This is because advice found on the internet on building "gaming rigs" can't be directly applied here, because of the price differences and non-availability of the components. So if you need to build a balanced gaming PC under a tight budget, you need to do some serious searching.

Here's the system configuration I managed to put together after searching around some shops at Unity Plaza.

Intel Pentium Dual Core E5300 8,500/= (PC Partner)
M/B: Asrock G31m-S 4,500 /= (Barclays)
2GB DDR2 Kingston 800MHz 5,500 /= (PC Partner)
GeForce 9600GT 11,500 /= (Barclays)

This is assuming you already have a basic computer with a HDD and a monitor. If not you'll have to spend some on the following as well.

HDD 500GB 7,000/=
Casing with power supply 3,000/=
Acer 18.5" WideScreen LCD 15,000 /= (almost everywhere)

You can customize these components according to your requirement, but there are a few important points to keep in mind:

* A gaming PC needs to be balanced. i.e. its components should match one another. Having a high end Q6600 quad core processor with a low GeForce 5200 won't game well; Neither will a powerful Radeon HD 4850 coupled with a low 2.0GHz single core processor. You will be wasting the power of the graphics card or the processor.

* E5300 runs at 2.6GHz but can easily be overclocked to 3.0GHz. I've seen gaming centers (cyber cafes) use this in their PCs. The next higher processor would be the core2duo e7500 running at 2.9GHz, which also is a good overclocker, but costs Rs. 14,500/=. For the GeForce 9600 GT, the overclocked E5300 would be quite sufficient, but if you don't mind the extra Rs. 6,000, it's better to go for the E7500. Going for other similar processors such as E5200, E7400, etc. are pointless in my opinion.
The mostly recommended budget gaming processors such as the AMD Athlon II X3, are unfortunately not available in SL.
Core i5 is available in SL now, but is very expensive. The processor+m/b will cost you close to Rs. 40,000/=!

* Asrock m/bs are a good choice because of their tool set for overclocking; and their price.

* You need a minimum of 2GB. 1GB is simply insufficient these days. DDR3 is already here, but we wouldn't really need them yet; Besides they are expensive.

* GeForce 9600 GT is the best graphics card you can find for less than Rs. 12,000/= here in SL. GeForce 9800 GT is better but costs around Rs. 16,000/=. The newer 240 GT comes close to the 9600GT but not worth it's Rs 14,000+. The 250GT is way too pricey. For the E5300 processor I picked, 9600GT seems to be the perfect fit.

* Finally if you need to buy a new monitor, it's absolutely pointless to buy a CRT monitor or a 15" LCD. Just reach out for that few extra bucks and go for a 19" LCD. You will be thankful.

Let me know if you have found better prices / components / configurations.

Happy gaming!

Saturday, August 1, 2009

Barn Buddy, Tower Defense, and Shooters Mashup.

Barn Buddy on facebook is a very addictive game spreading among friends very fast. People spend hours and hours on it (including my wife) and some even set reminders for harvesting. Ability to interact with friends is the core attraction point of the game.

However there are some people who think the game is too silly or not challenging enough or not their preferred genre of play. That includes me. I'm a strategy game fan and like tower defense games and chess etc. Then there are people who like shooters like Counter Strike and Unreal Tournament (again including me). These different groups are currently isolated from each other and shares nothing across the game genres.

What if we could have all these different types of games to interact with each other? For example, someone playing barn buddy could define a defended path to his barn to protect it from others stealing. He could invite a friend (hire, in terms of the game) who likes tower defense games to protect the path by building towers. Someone who wants to steal from that barn could invite (hire) one of his friends to infiltrate the barn by playing the defended path.

One important point here is that the two game screens (barn and the defended path) will be completely different. They in fact could be two completely separate games developed by different people. The games will be played independently, but will interact when someone crosses the defended path and enters the barn etc.

Another example would be for the barn owner to hire security guards, and the one who wants to steal, to hire mercenaries. The guards and the mercenaries can battle it out on a shooter style game. If the guards win there'll be no entry to the barn or vice versa.

This game play might also be attractive in ways such as for example a guy could fight to defend a girls barn and try to be her hero etc.

Practically implementing this is not that difficult either. Since these games can be developed independently and interacts only through strictly defined interfaces, the additional complexity involved would be low. Even existing games could be made to interact this way. The best place to try this would be on facebook, and probably with barn buddy.

Friday, July 31, 2009

My "Writer's Block"

It's end of July; Half the year is gone. I just looked at my blog and realized, I have only posted on one single day for this entire year so far! (3 articles on the same day). I am a software engineer passionate about computers and technology; Lots of technology related ideas and thoughts cross my mind on a daily basis. Why then is my blog so empty? I do know that I have the craving to blog them.. but it just doesn't happen. Why?

I badly needed to figure out the reasons and try to overcome them.

My first problem is that it takes quite a lot of effort for me to organize all the different points I have in mind into a meaningful flow of thoughts. This exhausts me halfway down an article which I then end up scrapping off. Worse, this creates friction for starting a new article next time.

My second problem is the "writers block", caused by the exact reasons as mentioned by William Stafford:

"I believe that the so-called "writing block" is a product of some kind of disproportion between your standards and your performance ...one should lower his standards until there is no felt threshold to go over in writing. It's easy to write. You just shouldn't have standards that inhibit you from writing . . . . I can imagine a person beginning to feel he's not able to write up to that standard he imagines the world has set for him. But to me that's surrealistic. The only standard I can rationally have is the standard I'm meeting right now...You should be more willing to forgive yourself. It doesn't make any difference if you are good or bad today. The assessment of the product is something that happens after you've done it."
(William Stafford)

My final problem is lack of time. This, in reality, should not be a problem since however busy I may be, I'm sure I should be able to find 15-30 minutes a week to blog my ideas on technology.

Wednesday, January 14, 2009

Windows 7: First Impressions

Today I tried the latest Windows 7 beta on my old Athlon XP 3000+ (1GB RAM) desktop, and I have to say it was a very pleasant experience. I hated Vista so much and never did anything more than install and evaluate it for a while; but Windows 7 was much much better.

Installation was quick (~25 mins), and the system was up and running in less than 45 mins. The OS felt very responsive and fast and it was taking only about 500mb of my RAM which was pretty good.. Boot speed, login speed and shutdown speeds were all good. IE 8 beta felt very slugish compared to Chrome and Firefox, but everything else was nice and fast.

However I did have several issue with it. My XP partition was missing in Windows Explorer, but got it sorted soon. My SoundMAX onboard sound is still not working. I'm still struggling to get the disk shared so that I can access it from my Ubuntu laptop, but I think I'll figure that soon too.

In conclusion, MS seem to have nailed it this time. They have managed to make a good looking, but (relatively) light weight OS with good performance, that will appeal to a lot of people.

Windows 7: How to edit the boot menu

There's no built in tool in Windows 7 to change the boot menu. However if you need to change the default boot OS to be XP instead of windows 7 or you need to change that ugly "Earlier operating system" line to a nice "Windows XP", or any other boot menu related task, you can use a small free tool called EasyBCD.

IMPORTANT:
If you need to rename the "Earlier.." to "Windows XP" or something, first make sure the XP partition is visible in Windows Explorer. If not follow the instructions in How to add the missing XP partition, and then do any changes.
(When I installed Windows 7, I had my XP in the boot menu but it was not visible in Windows Explorer; using EasyBCD then made my XP not bootable. Adding the partition to exporer and then running EasyBCD fixed the issue).

Windows 7: How to add back the missing XP partition

If you find that your Windows XP partition is not shown in Windows 7 (beta), you can add it as follows:
* search for "computer management" in the program search box and launch it.
(or via Control Panel> Administrative Tools> Computer Management)
* under Storage> Disk Management you should be able to see the missing XP partition (without a drive letter)
* now right click> "Change Drive Letter and Paths", and specify a drive letter.

now you should be able to see the XP partition in Windows Explorer.

Tuesday, September 2, 2008

A quick look at Google Chrome browser

Today morning I downloaded the chrome browser for windows and gave it a quick spin. Since I run linux, I had to try it in a virtual machine - VirtualBox running Windows XP.

It was a small download in two parts: First the installer, which then downloads the actual application. Installation was smooth and fast. I was up and running in 5 mins.

The very first impression on looks - Wow!. very sleek, clean, and simple. Minimum space taken for the frame and other non-viewing areas. I really liked it. +1 for the looks.

Next I tried the address bar to see if it was as good as firefox's "awesome bar".
Nop, not that good. I tried training it for gmail, which I use a lot. In firefox, aftergoing to gmail about 2,3 times, it 'learns' the page, and next time when I start typing 'gmail', the first entry in the dropdown is the gmail url. But in chrome, it's always the third entry. The first entry is always 'search for gmail'. Takes more key presses for me to select the url. Not very smart. -1 for the address bar.



Next I tried facebook, to test the 'super fast' V8 javascript engine. Chrome claims it to be very advanced, very fast and very responsive.
So I went to facebook, and tried to view an image. Chrome just froze for about 4 seconds taking 99% CPU!!.
However Chrome was specially designed to handle this kind of scenarios where a page misbehaves, and has a built-in 'Task Manager' where we can see which page is misbahaving and kill it. So I tried it. Alas! It wasn't a specific page but 'chrome' itself that was misbehaving and taking 99% CPU; and it couldn't be killed from chromes task manager. Chrome simply failed at one of it's primary goals!. Anyway what was chrome doing taking 99 CPU? maybe it was doing some advanced calculus to figure out the most optimum path to be 'super responsive'!. -9 for overall performance.
(maybe this had something to do with me running it in a VM; but I don't see how)



Next, the 'Most Visited Pages' available on a new tab. Very much like Opera's speed dial. Not a feature I really liked, but it was ok. However it had this glitch where it would show me gmail twice; Not very smart.

I'll wait for the linux version of chrome, and try it out. I really hope google irons out the theses wrinckles before they do.

Saturday, July 12, 2008

Trying OpenSolaris 2008.05

I needed to do some performance analysis on some applications for my MSc project. So I wanted to try the latest SunStudio12 with D-Trace. I downloaded the OpenSolaris 2008.05 image, burned on disk and tried to install on my Athlon64 3000+.

Unfortunately I couldn't even get to the first screen of the installation. OpenSolaris just failed on me giving some weired errors. After doing a lot of googling, I figured that OpenSolaris just couldn't work on my SATA drive!
I have installed XP, Vista, Fedora, and Ubuntu on this machine without any hickups and OpenSolaris was the first modern OS to fail on it!.

Next I tried to install it on my laptop but alas! it couldn't recognize logical partitions on an extended partition. So much for OpenSolaris.

I have to get this done somehow, so my next attempt will be to borrow an old IDE disk from a friend and try again. I'm sure there'll still be 101 problems before I actually see the first performance graph on SunStudio.

Sunday, July 6, 2008

getting ADSL USB modem working on Ubuntu Linux

Here are the steps I took to get my ADSL USB modem to work on Ubuntu.

Details:
Country = Sri Lanka (ISP = SLT; uses PPPoE)
Modem = Aztech ADSL USB Modem (DSL206U) (chipset = ADI Eagle II)
OS = Ubuntu Linux 8.04 (Hardy)

Steps:
* first have a terminal open and tail the syslog. (to see whats going on)
$ tail -f /var/log/syslog

* using synaptic package manager install br2684ctl (required since my ISP uses PPPoE)
(search for br2684)

* find and download the firmware for the modem chipset (Eagle-II in my case)
--- deprecated; use the .deb below instead ---
(firmware => ueagle-data-1.1.tar.gz)
(http://eagle-usb.org/ueagle-atm/non-free/ueagle-data-1.1.tar.gz)
* install firmware:
$ tar -xvzf ueagle-data-1.1.tar.gz
$ sudo mkdir /lib/firmware/ueagle-atm
$ cd ueagle-data-1.1/
$ sudo cp -a * /lib/firmware/ueagle-atm
--- update(17-Nov-08) ---:
Now there's a .deb which can be directly installed.
http://eagle-usb.org/ueagle-atm/non-free/ueagle-data_1.1-2_all.deb

* plug-in the modem; check if the firmware loads (in the syslog tail output).

* edit the connection file:
$ sudo gedit /etc/ppp/peers/ueagle-atm
type in the following:
user "myusername"
password "mypassword"
plugin rp-pppoe.so
nas0
noipdefault
usepeerdns
defaultroute
persist
noauth

* edit chap:
$ sudo gedit /etc/ppp/chap-secrets
add this line:
myusername * mypassword *

* edit pap:
$ sudo gedit /etc/ppp/pap-secrets
add this line (same as for chap):
myusername * mypassword *

* now create dial script to dial the modem.
$ gedit dialSLT
type in the following:
#!/bin/bash
sudo modprobe ppp_generic
sudo modprobe pppoatm
sudo modprobe br2684
sudo br2684ctl -b -c 0 -a 8.35
sleep 3
sudo ifconfig nas0 192.168.0.1 netmask 255.255.255.0 up
sleep 5
sudo pon ueagle-atm

* set exec permisions for the dial script and we're done!
$ chmod u+x dialSLT

* now to dial the modem just type:
$ ./dialSLT

// -----------------------------------------
important:
* in case the connection drops, do the following before redialing:
$ sudo poff ueagle-atm
$ sudo ifconfig nas0 down
$ sudo killall br2684ctl

Saturday, May 3, 2008

Startup delays in today's software

I have been using computers since the days of the 8086 machines, and have seen computer hardware grow in power and software applications grow in features and productivity.

Seeing all that growth, I have come to believe that any modern day computer should be able to startup, boot and be ready for use within a second or two. Unfortunately it's not the case.

My dual core laptop with 1GB memory can be considered a decently powerful machine. Nevertheless it takes a painful 40 seconds (even after optimizations) to startup and be ready. When I want to check mail and fireup MS Outlook 2007 (which I have to use due to company policy), it takes a good 10 - 20 seconds before it finishes crunching the disk and is ready to use. Also during this time I pretty much can't do anything else due to the disk activity. If I need to type in a new document and fireup MS Word 2007, it takes around 5 - 10 seconds before I can start typing. If I need to jot down something quickly and fireup MS OneNote, it takes around 4 seconds before I can type it in.

The problems are not all about MS applications. Linux startup is just as bad as Windows; OpenOffice 2.0 startup takes even longer than MS Office; Thunderbird startup is no breeze and Firefox (3 beta 5) takes a good 4 - 8 seconds to startup (I admit I have a couple of add-ons installed though).

Here's my point: Even with powerful hardware and decades of software development, we still don't have software that simply starts up and runs as quickly as we need them to be.

The contra-argument here is that features come at a price, and a more feature rich application would take longer to start. I strongly disagree.
However feature rich an application is, all those features will never be used at once. In fact some features may never be used by some users. Hence it's a waste to load all those features during the startup of a program (creating delays and disk crunches).

In my opinion there's not enough emphasis on startup time in today's software, and here are my suggestions for improvement:

1. The software industry needs to consider startup time and startup cost as critical quality metrics and pay more attention to it (specially in general productivity applications).

2. Software design patterns for general on-demand feature loading should be established and popularized.
- This can be simple on-demand feature loading or delayed feature loading based on idle computer resources. (eg: Diskeeper's InvisiTasking).

3. Better support from the operating system for faster application startup.

Sunday, October 14, 2007

The IT Workforce in Sri Lanka

The IT workforce in Sri Lanka mainly comprise of IT Managers, Business Analysts, Project Managers, Software Architects/Software Engineers/QA Engineers, and Hardware/Network/System Engineers. Almost all of these categories are highly in demand, but short in supply.

Hardware, Network and System Engineers demand at least a Diploma in IT and several years of hands on experience; Software Engineers, Architects demand a Degree in IT and extends over to Masters level as well. IT Managers, Project Managers are expected to have at least a Management Degree along with an arsenal of communication and management skill sets.

When considering the demand and supply of the IT workforce, an obvious observation is that Sri Lanka doesn’t have the in-house capacity to produce the required IT workforce to meet the demand; This is the case, even when all the IT Engineers graduated from all our universities, combined with private institutions output are taken. However the quality of this small output can be considered to be on par with (if not better than) global IT workforces.

The Government has a huge responsibility in implementing a national strategy that will increase the annual IT workforce output continuously. Building new Universities specializing in IT, expanding existing universities to produce more IT workforce, encouraging/helping private IT institutes, introducing more IT related subject matter at school level, as well as to broaden the IT awareness among the public in general, are some of the measures that can be taken by the government. India’s national IT strategy and its success gives us a good indication of what needs to be done by the government to increase the IT productivity as a nation.

Universities have the responsibility of improving the quality of the IT workforce produced, as well as to broaden the IT awareness of the general public. Universities need to play a larger role in inspiring the younger generation at the school level, and to help them understand the opportunities available in the IT industry and the many benefits it can provide. In my opinion the current inspirations and ambitions towards the IT industry, at the school level, is very limited and needs some major uplifting. This can be done by Universities, by organizing more interactive sessions, workshops, presentations etc. with schools.

Also the Universities have a major role in improving the IT awareness of the general public and to cultivate a more favorable perception towards IT. I feel that the current IT exhibitions etc. done by the Universities are too technically oriented, and need to focus more on the people aspect and the business aspect of IT, demonstrating the opportunities available, the financial benefits, how IT is actually helping Sri Lankan businesses to grow etc. This improvement in perception, cannot be done alone by the Universities, and needs the government support.

The IT companies are the places where the IT workforce will actually engage in productive work and produce tangible benefits. Hence they have a high responsibility in grooming the IT workforce to reach global quality and efficiency standards. This can be done by having quality training programs, continuous improvements plans etc. IT companies also have the responsibility of guiding the Universities in bridging the gap of the produced graduates skills and the actual industry demands. For example the IT industry demands very strong team playing skills along with technical skills, so producing graduates with only a high technical skill set will not suffice. Programs like “Are-You-Ready” at the University of Moratuwa, helps in this matter.

Wednesday, September 5, 2007

Personal Firewall Nightmare

Recently I've been looking for a good personal firewall for my Windows XP laptop. My requirements, in order of importance, were as follows;

1. It should be stable! (no BSOD crashes please!)
- I don't mind having to turn off advanced application behavior monitoring stuff if it makes the firewall more stable; mostly these advance stuff cause too much instability than benefits.

2. It should be light weight.
- firewall is a background tool; it should behave as one!.. I don't want it to eat my CPU cycles or keep crunching my disk. I don't want a big bloated security suite forcing protection on me; at least I should be able to enable/disable the modules I want.

3. I should be able to simply enable/disable the firewall completely with a click of a button.
- hey it's my computer! Don't try to be too smart 'n force protection all the time! there are plenty of times when I simply need the firewall off my back.. completely.

4. ability to tell the firewall that an application is 'trusted', with a single click.
- I shouldn't have to answer multiple popups for the same application; hey, I told you once.. 'I trust firefox!'.. don't nag me again. of course the ability to edit that rule later and fine tune it if required, is a definite plus.

5. showing useful information like which applications are sending/receiving data at which rate etc.;
- I need to know which applications are sending data or eating my bandwidth behind my back.

Are these too much to ask from a firewall? I don't think so. These requirements are pretty basic, straightforward and what most people would need too.

* I'm not at all worried about being 100% secure; If the world's smartest hacker is going to hack me, he'll hack me anyway. What I don't need is my PC crashing on me while I'm doing some important work; but thats exactly what happens when firewalls try to be perfect and add all the security measures in the world! KISS - Keep It Simple Stupid!

The Painful Discoveries:

* ZoneAlarm Pro
- stable; easy to use.
- $$; takes too much CPU 'n crunches my disk too much.. hey I need my resources for productive work. also not much useful stats. (uninstalled after a week)

* Comodo Firewall 2.4
- free; easy to use; useful stats.
- too many BSODs. (conflicts with "folderlockbox"); takes too much CPU 'n crunches my disk too much. (uninstalled after a week)

* Jetico Firewall v1.x
- free. stable. light weight.
- way too complicated rules.. even for me! (I'm a software engineer!); they just have screwed up badly trying to create the "worlds most flexible rule set!".. (uninstalled after 2 days)

* Sunbelt Personal Firewall
- light weight; easy to use.
- $$; too many BSODs!! (uninstalled after a day!)

* Prisma Firewall
- ??
- didn't detect my USB ADSL.. didn't allow me to browse untill I uninstalled it! (uninstalled after 5 mins!)

* GhostWall
- free; very stable. ultra light weight!
- no application rules; less configurable. (uninstalled, but might end up using this again)

and I'm still looking for a decent firewall! ...