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.