Michael's Interest in Distributed Computing

Amazon Simply put, a distributed system is composed of multiple hosts who communicate across the Internet to do something useful for us Homo Sapiens. That's right. It is our slaves, but it is far from being as smart as the dumbest human slave.

If everything worked perfectly at all times and nothing ever failed, distributed computing would be freed of one of its biggest challenges.
However the world doesn't work this way: 'If anything can go wrong, it will (Murphy's Law).'
A host can fail at any moment; a network link can fail at any moment; a bug can manifest itself at any moment. This is one of the main reasons that make distributed computing an ongoing research topic. Failures considered, how can consistency be maintained throughout every single machine in the system?

Also, the Internet is an extremely dynamic world; hosts come and leave. Making sure the system is doing its work correctly despite possible failures and dynamic configuration is extremely difficult.

Other issues include communication latency, model of memory access, scalability, and concurrency control. All in all, distributed computing is a great way of realizing the idea,
'The Internet is just a big computer,' but we are still far from making it a reality.

A course in advanced distributed system, that in advanced transactional database management system, and that in Java-centric RMI (Remote Method Interface) have given me a solid background in this area both at a conceptual level and implementation level. In the database course, we wrote a Global Transaction Manager for Sleepycat's Berkeley DB.

In Java-centric RMI, we used Java RMI to implement distributed and parallel systems that perform a variety of tasks. We read papers extensively and it is intriguing seeing people come up with different models to
approach this problem. Our project, Document Search Engine, is built on distributed and parallel concepts.

Take a look!
Post your comment below.
Anything is okay.
I am serious.