<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>