Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Locked thread
Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

Police Academy III posted:

How is the library situation with Erlang, like if I want to do something with graphics + sound or a native-looking UI, how easy is that?

For the most part, they don't exist, or they're bad. Don't use Erlang for a desktop app.

Police Academy III posted:

Also, what does a good Erlang development environment look like, is there an IDE or am I fine with just emacs?

Joe Armstrong uses emacs, Sublime is good too.

Adbot
ADBOT LOVES YOU

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

MononcQc posted:

No explicit reason. The gist of it is that whatever is in the official OTP repository is the responsibility of the OTP team at Ericsson. I figure they don't want to have to maintain and document rebar, especially given a lot of its functionality is just a wrapper around existing tools.

That, OTP doesn't have a reputation for pulling in packages developed externally, and that rebar is basically the Dizzy show with Tuncer as comic relief.

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

more like dICK posted:

Can you explain this for people who don't follow Github or HN drama? I've found rebar quite useful.

Dave "Dizzy" Smith was Erlang User of the Year prior to MononcQc, used to be VP of Engineering at Basho, and wrote rebar.

Tuncer made some bad PRs with some WTF parts but I haven't heard any gripes about his changes lately v:shobon:v

rebar's basically the best way to make a blank OTP app, and the only good way to make a new riak_core app.

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

Jerry SanDisky posted:

So I've got an existing OTP app that's using TCP sockets right now. I'd like to add in an HTTP front end to it. The two names I keep seeing come up are Yaws and MochiWeb (and of course raw httpd). MochiWeb seems simple enough, but as far as I can tell it uses its own build system. For httpd it looks like I'd be looking at mod_esi?

Does anyone have experience with these?

MochiWeb is what webmachine (and therefore riak_kv, riak_cs, etc.) use, and those are pretty standard rebar apps?

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug
Some of the Erlang User Conference presentations are starting to appear publicly.

How Basho packages Riak for multiple OSes: https://speakerdeck.com/jaredmorrow/packaging-erlang-applications

How Basho tests Erlang code: http://www.erlang-factory.com/upload/presentations/818/joedevivo-test.pdf

More: http://www.erlang-factory.com/conference/ErlangUserConference2013/talks

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

MononcQc posted:

Sorry for the thread necromancy, but I was wondering if anyone in here planned to be around for the Erlang Factory Lite in September, in New York City?

I've been invented to talk there and am still working on a presentation outline, but I was wondering if I'd meet anybody from here there.

Also it seems http://thisotplife.tumblr.com is dead, which is a shame.

I saw three posts surface just now :)

"Accidentally disconnecting a remote shell while doing a live upgrade" is something I've got even worse stories about. I'll let these patch notes speak:

quote:

Changed behavior of riak attach

If you are a frequent user of riak attach it is worth noting that the behavior has changed in 1.4. riak attach used to attach to a named pipe that erlang provides to talk to running erlang nodes. This is great except that an accidental Ctrl-C would not only kill your session, but also kill the running node. The behavior has now changed to use -remsh (remote shell) to connect to the node. This method is safer because a Ctrl-C will not kill a running node. In cases where distributed erlang having problems for some reason and a -remsh is not wanted, riak attach-direct is a new command which uses the old pipe behavior of riak attach.
(emphasis mine)

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

Shinku ABOOKEN posted:

Post this in your blog.

E: Pressed post too soon:

What projects do people use Erlang in? By that I mean, what happened that made you go "I need Erlang for this!"?

From Justin Sheehy, CTO at Basho:

quote:

We use the Erlang/OTP programming language in building our products here at Basho. We made that choice consciously, believing that it would be a tradeoff – significant benefits balanced by a handful of costs. I am often asked if we would make the same choice all over again. To answer that question I need to address the tradeoff we thought we were making.

The single most compelling reason to choose Erlang was the attribute for which it is best known: extremely high availability. The original design goal for Erlang was to enable rapid development of highly robust concurrent systems that “run forever.” The poster child of its success (outside Riak, of course) is the AXD 301 ATM switch, which reportedly delivers at or better than “nine nines” (99.9999999%) of uptime to customers. Since when we set out to build a database for applications requiring extremely high availability, Erlang was a natural fit.

We knew that Erlang’s supervisor concept, enabling a “let it crash” program designed for resilience, would be a big help for making systems that handle unforeseen errors gracefully. We knew that lightweight processes and a “many-small-heaps” approach to garbage collection would make it easier to build systems not suffering from unpredictable pauses in production. Those features paid off exactly as expected, and helped us a great deal. Many other features that we didn’t understand the full importance of at the time (such as the ability to inspect and modify a live system at run-time with almost no planning or cost) have also helped us greatly in making systems that our users and customers trust with their most critical data.

It turns out that our assessment of the key trade-off — a more limited pool of talented engineers — is, in practice, not a problem for a company like Basho. We need to hire great software developers, and we tend to look for ones with particular skills in areas like databases and/or distributed systems. If someone is a skilled programmer in relatively arcane disciplines like those, then the ability to learn a new programming language will not be daunting. While it’s theoretically a nice bonus for someone to bring knowledge of all the tools we use, we’ve hired a significant number of engineers that had no prior Erlang experience and they’ve worked out well.

This same purported drawback is a benefit in some ways. By not just looking for “X Engineers” (where X is Java, Erlang, or anything else), we make a statement both about our own technology decision-making process and the expected levels of interesting work at Basho. To help me work on my house, I’d rather have someone who self-identifies as an “expert carpenter” or “expert plumber,” not “expert hammer wielder,” even in the cases where most of the job might involve that tool. We expect developers at Basho to exercise deep, broad interests and expertise, and for them to do highly creative work. When we mention Erlang and the other thoughtful decisions we made in building our products, they value the roadmap and leadership.

I had an entertaining and ironic conversation about this recently with a manager at a large database company. He explained to me that we had clearly made the wrong choice, and that we should have chosen Java (like his team) in order to expand the recruiting pool. Then, without breaking a stride, he asked if I could send any candidates his way, to fill his gaps in finding talented people.

We continue to grow and to bring on great new engineers.

That’s not to say that there are no downsides. Any language, runtime, and community will bring with it different constraints and freedoms, making some tasks easier and others less so. We’ve done some work over the years to participate in the highly supportive Erlang community. But the big organizational weakness that so many people thought would come with the choice? It’s simply not a problem.

That lesson, combined with the ongoing technical advantages we enjoy because of Erlang, makes it easy to answer the question:

Yes, we would absolutely choose Erlang today.

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

quote:

However, the problem with Erlang's fun syntax is, well, it isn't fun.

Ton'y a great guy and a good friend of mine but let's just say keyboards aren't the only buttons he's good at pressing.

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

Mniot posted:

I'm not a frequent poster to the forums, but I'll be there and it would be fun to say hi.

I've only just started learning Erlang, and your book was highly recommended by my coworkers.

Did you have coworkers at Erlang DC?

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug
What're the consequences if the two tables get out of sync due to latency, slow node startup, or other issues?

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug
Not Erlang per se but is anyone else going to Ricon 2013 in SF this week?

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

Posting Principle posted:

The main impression I got from the Erlang Factory was that there is a big world of distributed Erlang that's not easily accessible for the hobbyist. :smith:

Also I'm stealing lpgauth's L macro for proplists.

I wasn't there, but I quite agree about the difficulty of keeping up with a lot of the cutting edge academic stuff that goes around. There's a feeling that if you can't keep up with academics that maybe you should sit back and let the people that have been doing it for a few years already solve the hard problems, but that's a little too "priesthood" for me. I'd like to find more time to make the subject more approachable, but there's the day job and other side work to keep me busy :effort:

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

MononcQc posted:

Plenty of bugs and missing features because this is 17.0-rc1, i.e. pre-alpha of what would have been R17A. The Maps implementation will not even be totally complete for 17.0 final, and the insertion times are still lovely for large maps.

Will maps get faster at insertion/retrieval eventually?

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

more like dICK posted:

The San Francisco Erlang Factory is this week I'm not sure if anyone else here is going. I'll be the bewildered Canadian.

A bunch of my coworkers are going, and I believe MononcQc will also be a bewildered Canadian in attendance.

(I'm going to Ruby on Ales instead :) )

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

more like dICK posted:

I won a book. My week is complete.

Who are you? http://instagram.com/p/lQ8C7oxiEm/

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

more like dICK posted:

The Basho people are really really loud when you get them all together.

Did they have a sponsored party again?

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

MononcQc posted:

Erlang 17.0 Has just been released: http://www.erlang.org/news/73

  • Funs can now be given names (and therefore be recursive)

Guess I won't be needing this anymore.

code:
Y(M) ->
    (fun(X) ->
             X(X)
     end)
      (fun (F) ->
               M(fun(A) ->
                         (F(F))(A)
                 end)
       end)
end.

%% use like:

Fac = fun (F) ->
          fun (0) -> 1;
              (N) -> N * F(N-1)
          end
      end.
Fib = fun(F) ->
          fun(0) -> 0;
             (1) -> 1;
             (N) -> F(N-1) + F(N-2)
          end
      end.
(Y(Fac))(5). %% 120
(Y(Fib))(8). %% 21

Adbot
ADBOT LOVES YOU

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

MononcQc posted:

Let me know if you're interested, I really need eyes on this.



I've got some time to read this, and could shop it around to coworkers if necessary.

  • Locked thread