Tuesday, 19 January 2016

Notes on Concurrency and Distribution

In the age of distributed software applications, the focus of computing has shifted towards solving communication problems. In the industry, these problems are tackled by making domain specific assumptions, using strict communication protocols etc. Such approaches are troublesome as they require significant development effort and time. The non-determinism involved makes it very difficult to debug and document such applications. I’ve built large distributed systems and I’ve personally felt this problem. In addition to the nightmare of deployment and maintenance, these systems are largely unpredictable due to the convoluted dependencies. In addition, the problem worsens exponentially as the system grows due to the increased intercommunication between the components. 

 Ideally, we shouldn't have to worry about this at all. In the past, programming language principles have solved such low level problems. Programming languages have, as a result, been successful in providing powerful abstractions for effectively solving computational problems. 

What we need is a system and a programming model that provides a reliable abstraction to easily build and understand distributed applications. It would be fruitful to explore existing programming language principles and relevant ongoing research to solve distribution problems.

 I hope to do some research in this area and will be posting a summary of my findings and understanding every weekend. I would also like to understand the role of concurrency in distributed systems. So, I will be beginning with basic aspects of understanding concurrency, parallelism, distribution and then moving on to defining the actual problem before jumping into papers. I've realized that starting by reading papers can be quite misleading. 

During my trip to Bangalore, I've gotten some wonderful questions, comments and suggestions on the directions to look into from friends and folks at Papers We Love - Bangalore. Also got some comments from Prof. Shriram Krishnamurthi (from Brown University) on this topic - who was a speaker at one of the PWLB meetups. I will be trying to understand, answer and analyze all of these inputs in my coming up posts. This should be a good learning exercise for me too!


  1. Erlang! That's all you need ;)

  2. Falls under 'wonderful suggestions'. :)
    Yes, I do plan to study and evaluate Erlang as a part of this exercise.

  3. Very nice article!
    Thank y, it's very useful.
    secure data room

  4. this would be a topic that would interest most network administrators nachi thanks for sharing this awesome piece I know a couple of do my paper I could refer to this page

  5. I should say only that its awesome! The blog is informational and always produce amazing things. Chi-squared distribution

  6. Managing the bankroll correctly is essential guarantee that|to make certain that} a participant doesn’t wager a higher amount than they’re ready to lose. It also permits a participant to avoid topping up the steadiness of their account when angry or once they can’t afford extra money for covering their potential losses. Proper bankroll administration is 빅카지노 what ensures that a casual gambler doesn’t become an issue gambler. It can also prevent shedding everything when an individual turns into an issue gambler. If the casino doesn't present a history of previous palms, maintain note yourself that you just can|so as to|to find a way to} see previous wins and losses for participant and banker and modify your betting accordingly. Although previous wins or losses have completely no bearing on the next hand.

  7. Instead of conventional, rules-based quoting, we use machine Pencil Sharpener Electric learning algorithms to match your CAD to tens of millions of previously manufactured components and generate a quote instantly. Ideal to extend the corrosion resistance of the half while sustaining its conductive properties. Parts are manually brushed with fine sandpaper to attenuate the machining marks and then anodized. The most cost-effective anodizing option; ideal for non-cosmetic, functional components. Ideal for put on abrasion and corrosion resistance, not for cosmetic purposes.