<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jan 17, 2015, at 8:23 PM, Harit Himanshu <<a href="mailto:harit.subscriptions@gmail.com" class="">harit.subscriptions@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><br class=""><div class="gmail_extra">This is really dumb question and I am pretty sure that there is limit to how much distributed programming could be learnt using single machine(I am using Mac in this case).<br class=""><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class=""><div class=""><br class=""></div><div class="">I am reading through Programming Erlang, Chapter 14, Distributed Programming where Joe talk about how to run Name Server in distributed mode as </div><div class=""><br class=""></div><div class=""><div class=""><ol class=""><li class=""> I write and test my program in a regular nondistributed Erlang session. This is what we’ve been doing up to now, so it presents no new challenges.</li><li class=""> I test my program on two different Erlang nodes running on the same computer.</li><li class=""> I test my program on two different Erlang nodes running on two physically separated computers either in the same local area network or anywhere on the Internet.</li></ol></div></div></div></blockquote></div></div></div></div></blockquote></div><div>You can get pretty far using all of the networking tools provided with your operating system to simulate various network conditions.  I do all of my daily distributed programming and research using a stock MacBook.</div><br class=""><div class="">Consider Kyle Kingsbury’s work on Jepsen where he’s able to find bug in several major distributed databases.  There are also tools such as â€˜tc’ which can be used to add arbitrary latency between processes.</div><div class=""><br class=""></div><div class="">For what it’s worth, Basho does a significant amount of fault testing on a single machine by using fault-injection tools, or by facilities like â€˜intercepts’ provided by Riak Test.</div><div class=""><br class=""></div><div class="">My advice is this: do everything locally on your machine until you have a reason to move to separate infrastructure; it will be easier to develop and debug.</div><div class=""><br class=""></div><div class="">- Chris</div><div class=""><br class=""></div><div class=""><div class=""><div class="">Christopher Meiklejohn</div><div class="">Senior Software Engineer</div><div class="">Basho Technologies, Inc.</div><div class=""><a href="mailto:cmeiklejohn@basho.com" class="">cmeiklejohn@basho.com</a></div><br class="Apple-interchange-newline"></div></div><div class=""><br class=""></div></body></html>