<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Feb 15, 2014 at 1:01 PM, Pieter Hintjens <span dir="ltr"><<a href="mailto:ph@imatix.com" target="_blank">ph@imatix.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On Fri, Feb 14, 2014 at 4:39 PM, Miles Fidelman<br>
<<a href="mailto:mfidelman@meetinghouse.net">mfidelman@meetinghouse.net</a>> wrote:<br>
<br>
> Actually, the demand for both Cobol and analog engineers is UP.<br>
<br>
</div>Friend of mine was just laid off from a 15-year Cobol job. One can't<br>
make general conclusions from small samples.<br>
<br>
The argument that keeping technology elitist creates wealth is insane<br>
and should be laid to rest rapidly. Who here is building new<br>
businesses on LU6.2? Right.<br>
<br>
It was extremely enlightening last week, at a workshop with a medium<br>
sized Erlang shop. Opening statement: "We chose Erlang because it lets<br>
us build large distributed systems with a small team." Then two full<br>
days of, "oh, that's one more serious problem we're facing, caused by<br>
how Erlang does things."<br></blockquote><div><br></div><div>Could you be more explicit? What is that Erlang does that causes problems?</div><div>It seems crazy that there are two days of discussion about this and the</div>
<div>core Erlang group gets to hear nothing about this.</div><div><br></div><div>I'm really keen to hear about problems users have, bit I'm not psychic. I can't read minds</div><div>somebody has to tell us what the problems are. If you don't tell us about the problems</div>
<div>we can't fix them.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
A technology either lives, by growing and merging with others, or it<br>
dies. </blockquote><div><br></div><div>Technologies don't die once they get to a critical mass. They live forever.</div><div>Cobol never died. It just stoped expanding. This happens when the cost of converting legacy</div>
<div>code exceeds cost of developing new code.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Erlang is far from being a living technology and survives pretty<br>

much thanks to a single dominant customer and investor.</blockquote><div><br></div><div>It was actually banned by it's "single dominant customer" but survived anyway :-)</div><div><br></div><div>What would happen if the single dominant customer lost interest is a matter of pure speculation.</div>
<div>Things would happen :-)</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> It claims to<br>
be the best solution for distributed systems, </blockquote><div><br></div><div>Where?</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
yet is entirely<br>
homogeneous,</blockquote><div><br></div><div>Yes</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> which is also an insane contradiction.</blockquote>
<div><br></div><div>No</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> Distributed<br>
systems by definition must span space and time, or they are<br>
LegacyAsAService.<br></blockquote><div><br></div><div><br></div><div>Ummm - problem is we haven't a clue how to do this. </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
Erlang's elitism and lack of broad appeal is the #1 threat to its long<br>
term survival. It is frankly the Algol 68 of the telco industry.<br>
Awesome language!! Yay!!!<br></blockquote><div><br></div><div>I don't understand the elitism jibe. I (and others) believe Erlang to be</div><div>better at solving a particular class of problems that some other languages.</div>
<div>If we say so, is this what you call elitism? or should we keep quiet?</div><div><br></div><div>Erlang is really really bad at solving a boatload of problems, and we also say this.</div><div>"Lack of broad appeal" is understandable. I guess " building apps for android" </div>
<div>has "broad appeal" or "desktop applications" has board appeal.</div><div><br></div><div>Making servers that "never stop" is never going to have broad appeal.</div><div>The only thing we could ask for is "broad appeal in a niche" where the  niche</div>
<div>is "building non-stop servers". This is a bayesian concept - broad appeal</div><div> "subject to the condition that you are building faulty tolerant servers" and in this</div><div>niche I think we are well thought of.</div>
<div><br></div><div>Many niche language do not have broad appeal - but are totally dominant in their niche.</div><div>For example, postscript for printers :-)</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

To measure market success in terms of "how much can a developer earn"<br></blockquote><div>    is also so foolish I'm embarrassed to read such views. </div><div><br></div><div>I agree</div><div><br></div><div>
This is meant<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
to be a list of clever people. For pity's sake. That's like claiming a<br>
protocol is valuable because it's so hard to implement.</blockquote><div><br></div><div>But I never ever heard anybody claim that a protocol was valuable because it was</div><div>difficult to implement.</div><div><br>
</div><div>One the contrary, encodings like JSON are claimed to be valuable for exactly the</div><div>opposite reason that they are easy to implement.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 Wealth comes<br>
from building up. How can you build up if your basic layers aren't a<br>
commodity? There's a million times more wealth built on PHP than<br>
Erlang. Real wealth.<br></blockquote><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Erlang needs to shed its telco ties, and get an independent steering<br>
committee, and create standards, and multiple implementations, and<br>
also reach out to other language communities through distribution<br>
protocols like ZMTP, and educate those communities, while also<br>
exploiting them and merging with them. Living systems are like the<br>
Borg; they grow by merger.</blockquote><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Mock Java all you like. It's a hateful language in many ways. </blockquote>
<div><br></div><div>Who mocks Java? We say "for this class of programs we believe Erlang to better than Java</div><div>and here is our evidence"</div><div><br></div><div>Java is great for what it was designed to be good at (as is Erlang) - </div>
<div>My  smart card for public transport is a Java VM powered by induction currents,</div><div>it's a miracle of technology, I'm not mocking this.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
But Java<br>
programmers know how to work together. </blockquote><div><br></div><div>Do they? What's the evidence for this? When I meet Java programmers all they seem to do is argue about</div><div>which framework to use. People in general find it difficult to work with each other. I can't think</div>
<div>of any reason why Erlang programmers would be less good at working together that X programmers</div><div>(where X is any language you care to name).</div><div><br></div><div>The ability to work with other people must be a property of the people involved and not the technology they work with, </div>
<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">There are 6+ different Erlang<br>
stacks for ZeroMQ, all one-man projects, all lacking any community.<br></blockquote><div><br></div><div>This is avery interesting comment. Why are there 6 stacks and not one?</div><div>Possible reasons:</div><div><br></div>
<div>1) The 6 different developers didn't know about each other</div><div>2) They knew about each other but their stacks have different non-functional requirements</div><div>3) They wrote the stack for their own personal enlightenment and had no interest in</div>
<div>it being widely used</div><div>4) Nobody uses the code</div><div><br></div><div>That they lack community might mean that erlang programmers feel no pressing need to </div><div>communicate with applications in other languages.</div>
<div><br></div><div>When code starts getting widely used, new users start asking questions like "they are 6 stacks" which is best? - and then a shake-down occurs. This has happened previous with HTTP stacks - there used to be</div>
<div>several - but they seem to have converged on one now.</div><div><br></div><div>The fact there are 6 ZeroMQ stacks means this is "early days" and that this convergence on the</div><div>best stack has not yet happened.</div>
<div><br></div><div>I'm speculating here: At a guess  5% of all programmers are writing distributed applications. Of these</div><div>10% are writing cross-language applications. Most will use REST protocols. The number of people</div>
<div>who want to connect Erlang to X via AeroMQ must be rather small and so we don't see any pressure to</div><div>consolidate the libraries.</div><div><br></div><div>Me, I'm interested in Connecting Erlang to Julia via ZeroMQ, but the real underlying problem has</div>
<div>nothing to do with the plumbing problems, ie I'm not that excited about whether it's ZeroMQ of TCP</div><div>but rather the *semantics* of the interface. In the Julia world there are things called arrays (of 64 bit signed integers) and int the Erlang world there are tuples and lists of big integers. So when we talk</div>
<div>to each other we need to do some conversions, and it's very unclear how.</div><div><br></div><div>ZeroMQ (or Erlang) or sockets, or UDP solves part of the problem, but what about the rest.</div><div>Do we add an XML layer, or JSON, or ASN.1 or thrift. In the erlang world (and smalltalk) integers</div>
<div>are integers - but in C they are (signed|unsigned, 8|1632|64) integers and life gets tricky.</div><div><br></div><div>Another reflection: 6 implementations rather than one means 6 chances to get it right. It means diversity.</div>
<div>It's kind of nice to go into a bar and find 6 different beers, rather than one, but it is confusing to</div><div>a newcomer, and a stranger who walks into the bar and does not know what to order.<br></div><div><br>
</div><div><br></div><div>This mail reply got long - it was triggered by Pieters comment about 6+ different implementations</div><div>of ZeroMQ. I keep pondering this - it raises and interesting question.</div><div><br></div>
<div>I am very guilty of not collaborating with other people and</div><div>making my own implementations and I don't know if its a strength or a failing.  </div><div>The main reason I implement stuff myself is to learn how things work through my own personal experience, not though a lack of a desire to collaborate. I just don't really understand how things work if I haven't</div>
<div>implemented them myself.</div><div><br></div><div>Cheers</div><div><br></div><div>/Joe</div><div><br></div><div><br></div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<span class="HOEnZb"><font color="#888888"><br>
-Pieter<br>
</font></span><div class="HOEnZb"><div class="h5">_______________________________________________<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>
</div></div></blockquote></div><br></div></div>