<p dir="ltr">Personally, I go the Gnu/Linux way and try and always say Erlang/OTP and avoid saying Erlang.</p>
<div class="gmail_quote">On 13 Feb 2014 12:11, "Thomas Lindgren" <<a href="mailto:thomasl_erlang@yahoo.com">thomasl_erlang@yahoo.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div style="font-size:10pt;font-family:HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif"><div>Regarding teaching erlang/OTP, I think this one is nice: </div><div><br></div><div style="background-color:transparent">
<a href="http://www.amazon.com/Erlang-OTP-Action-Martin-Logan/dp/1933988789/ref=sr_1_1?s=books&ie=UTF8&qid=1392292179&sr=1-1" target="_blank">http://www.amazon.com/Erlang-OTP-Action-Martin-Logan/dp/1933988789/ref=sr_1_1?s=books&ie=UTF8&qid=1392292179&sr=1-1</a><br>
</div><div style="font-style:normal;font-size:13px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif"><br></div><div style="font-style:normal;font-size:13px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif">
Diving into OTP is a bit messy, but in the larger scheme of things it doesn't make sense to hide one of the main features of practical
 erlang programming. (I wouldn't mind a more elegant OTP on the other hand, but we're getting there.)</div><div style="font-style:normal;font-size:13px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif">
<br></div><div style="font-style:normal;font-size:13px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif">By the way, since you mention e2, here's a little project to fast-forward the <span style="font-weight:bold">simple</span> uses of applications and supervisors: <a href="https://github.com/thomasl/gen_app" target="_blank">https://github.com/thomasl/gen_app</a></div>
<div style="font-style:normal;font-size:13px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif"><br></div><div style="font-style:normal;font-size:13px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif">
Example:</div><pre style="font-family:Consolas,'Liberation Mono',Courier,monospace;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(221,221,221);line-height:19px;overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-wrap:normal;color:rgb(51,51,51)">
<code style="font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12px;margin-top:0px;margin-bottom:0px;padding:0px;border:none;background-color:transparent;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;white-space:pre-wrap;word-wrap:normal">gen_app:app_sup(testapp, [{sup, my_sup}]).</code></pre>
<div style="font-style:normal;font-size:13px;background-color:transparent"><span style="font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif">This starts a (dynamic) application </span><span style="font-family:'Courier New',courier,monaco,monospace,sans-serif">testapp</span> running a supervisor <span style="font-family:'Courier New',courier,monaco,monospace,sans-serif">my_sup</span> without children. You can also easily start more complex things like supervisor trees with various strategies, including the classic supervised gen_server, and much more. Note that what's often a couple of boilerplate modules are replaced by a few lines. </div>
<div style="font-style:normal;font-size:13px;background-color:transparent;font-family:'Courier New',courier,monaco,monospace,sans-serif"><span style="background-color:transparent;font-family:'Courier New',courier,monaco,monospace,sans-serif"><br>
</span></div><div style="font-style:normal;font-size:13px;background-color:transparent"><span style="background-color:transparent">I'm currently debugging, pondering the API and looking at how to specify more complex cases like the ssl application in this framework.</span></div>
<div style="font-style:normal;font-size:13px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif"><br></div><div style="font-style:normal;font-size:13px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif">
(PS. You will probably have to massage the Makefile a little bit to build, sorry. See the link for more.<span style="background-color:transparent">)</span></div><div style="font-style:normal;font-size:13px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif">
<br></div><div style="font-style:normal;font-size:13px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif">Best,</div><div style="font-style:normal;font-size:13px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif">
Thomas</div><div style="display:block"> <br> <br> <div style="font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif;font-size:10pt"> <div style="font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif;font-size:12pt">
 <div dir="ltr"> <font face="Arial"> On Thursday, February 13, 2014 11:00 AM, Ivan Uemlianin <<a href="mailto:ivan@llaisdy.com" target="_blank">ivan@llaisdy.com</a>> wrote:<br> </font> </div> <blockquote style="border-left:2px solid rgb(16,16,255);margin-left:5px;margin-top:5px;padding-left:5px">
  <div>On 13/02/2014 09:51, Garrett Smith wrote:<br clear="none">> ...<br clear="none">> What sucks IMO is that OTP is treated as "advanced" by the community<br clear="none">> and by book authors. I understand the history of this, but there's a<br clear="none">
> cost: programmers delay learning core Erlang principles of<br clear="none">> *applications* -- i.e. supervisor trees -- because it's not taught up.<br clear="none"><br clear="none">This I very much agree with.  I think an Introduction to Erlang book <br clear="none">
that started with releases and applications would be a very good idea.<br clear="none"><br clear="none">> It's also incredibly complicated, if you don't use e2.<br clear="none"><br clear="none"><a shape="rect" href="http://e2project.org/" target="_blank">http://e2project.org/</a><br clear="none">
<br clear="none"><br clear="none">><br clear="none">> The irony is that *advanced* Erlang programmers can get away<br clear="none">> programming outside the OTP guard rails. Beginners should not even<br clear="none">
> consider doing this until they understand why OTP works and why they<br clear="none">> should deviate.<br clear="none">><br clear="none">> e2 helps, a lot.<br clear="none">><br clear="none">> The whole point of e2 is to simplify the correct use of OTP -- letting<br clear="none">
> programmers *start* with applications, supervisors and gen_servers (in<br clear="none">> e2 they're called services and tasks -- simple huh). I know it's<br clear="none">> controversial, but it's controversial to those who
 have been teaching<br clear="none">> Erlang while this stuff was being baked. I don't run into new learners<br clear="none">> who object to starting with OTP using e2 (though maybe they're just<br clear="none">
> being polite -- if you're out there and had problems learning with e2,<br clear="none">> please drop me a line, or yell at me here).<br clear="none">><br clear="none">> I agree wholeheartedly with Pieter. It's just Erlang. Keeping the term<br clear="none">
> OTP is a historic vestige. We're used to it, but it's a dead weight<br clear="none">> that adds only confusion.<br clear="none">><br clear="none">> The Ruby / Rails comparison is not accurate. It's more like Rails 1.0<br clear="none">
> / Rails 2.0.<br clear="none">><br clear="none">> Sadly though, I just don't see "OTP" going away because there's a<br clear="none">> trickle of noise from this list :|<br clear="none">><br clear="none">
> I make
 videos to cope.<br clear="none">><br clear="none">> On Thu, Feb 13, 2014 at 2:54 AM, Ivan Uemlianin <<a shape="rect" href="mailto:ivan@llaisdy.com" target="_blank">ivan@llaisdy.com</a>> wrote:<br clear="none">
>> On 13/02/2014 08:13, Pieter Hintjens wrote:<br clear="none">>>><br clear="none">>>> ... (a) stop using OTP as a<br clear="none">>>> confusing and needless synonym for Erlang, ...<br clear="none">
>><br clear="none">>><br clear="none">>> Is that what OTP is used as?  I thought OTP was a set (or framework, or<br clear="none">>> platform) of libraries (behaviours, supervision, etc.) that facilitate the<br clear="none">
>> development of highly scalable and reliable applications (telecoms-grade<br clear="none">>> scalability and reliability you might say).  AFAIK it's open-source.<br clear="none">>><br clear="none">
>> Yes, let's
 rename it to something that more closely reflects what it really<br clear="none">>> is.  How about the "Open-source Telecoms-grade reliability and scalability<br clear="none">>> Platform"?<br clear="none">
>><br clear="none">>> Ivan<br clear="none">>><br clear="none">>><br clear="none">>> --<br clear="none">>> ============================================================<br clear="none">>> Ivan A. Uemlianin PhD<br clear="none">
>> Llaisdy<br clear="none">>> Speech Technology Research and Development<br clear="none">>><br clear="none">>>                      <a shape="rect" href="mailto:ivan@llaisdy.com" target="_blank">ivan@llaisdy.com</a><br clear="none">
>>                       <a href="http://www.llaisdy.com" target="_blank">www.llaisdy.com</a><br clear="none">>>     
                      <a href="http://llaisdy.wordpress.com" target="_blank">llaisdy.wordpress.com</a><br clear="none">>>                <a href="http://github.com/llaisdy" target="_blank">github.com/llaisdy</a><br clear="none">
>>                       <a href="http://www.linkedin.com/in/ivanuemlianin" target="_blank">www.linkedin.com/in/ivanuemlianin</a><br clear="none">>><br clear="none">>>                          festina lente<br clear="none">
>> ============================================================<br clear="none">>><br clear="none">>> _______________________________________________<br clear="none">>> erlang-questions mailing list<br clear="none">
>> <a shape="rect" href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br clear="none">>> <a shape="rect" href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><div>
<br clear="none"><br clear="none">-- <br clear="none">============================================================<br clear="none">Ivan A. Uemlianin PhD<br clear="none">Llaisdy<br clear="none">Speech Technology Research and Development<br clear="none">
<br clear="none">                     <a shape="rect" href="mailto:ivan@llaisdy.com" target="_blank">ivan@llaisdy.com</a><br clear="none">                      <a href="http://www.llaisdy.com" target="_blank">www.llaisdy.com</a><br clear="none">
                          <a href="http://llaisdy.wordpress.com" target="_blank">llaisdy.wordpress.com</a><br clear="none">               <a href="http://github.com/llaisdy" target="_blank">github.com/llaisdy</a><br clear="none">
   
                   <a href="http://www.linkedin.com/in/ivanuemlianin" target="_blank">www.linkedin.com/in/ivanuemlianin</a><br clear="none"><br clear="none">                         festina lente<br clear="none">============================================================<br clear="none">
_______________________________________________<br clear="none">erlang-questions mailing list<br clear="none"><a shape="rect" href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br clear="none">
<a shape="rect" href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br clear="none"></div><br><br></div> </blockquote>  </div> </div>   </div>
 </div></div><br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div>