Zotonic - Atom Feed Module2014-02-07T16:50:05+00:00http://erlanginside.com/en/feed/articleErlangInside - Articlehttp://erlanginside.com/en/id/4702014-02-07T16:50:05+00:002014-02-07T16:37:00+00:00Site Administratorhttp://erlanginside.com/en/id/1A Call for Talks and Papers!Erlang Factory Stockholm needs you<p>Have a good idea for a talk? <a href="http://www.erlang-factory.com/conference/show/conference-23/home/">Erlang Factory Stockholm</a>, scheduled from June 9 - 13, is currently looking for ideas to be presented at the conference. The deadline is March 10, so get started soon!</p>http://erlanginside.com/en/id/4692014-01-31T16:07:23+00:002014-01-31T15:42:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Erlang Factory Lite ZurichErlang Factory Lite Zurich planned for April 7 - 10.<p><a href="http://www.erlang-factory.com/conference/show/conference-22/home/">Erlang Factory Lite in Zurich</a> is scheduled for April 7 - 10 this year, with Erlang training and OTP from April 7 - 9 and talks on the 10th.</p><p>Talks are being accepted until February 21, so get thinking and submit soon!</p>http://erlanginside.com/en/id/4682014-01-31T15:39:56+00:002014-01-31T15:16:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Erlang OTP R16B03-1 ReleasedCorrections for R16B03 have just been released!<p><a href="http://www.erlang.org/news/66">OTP R16B03-1 has just been released</a>, correcting some of the issues found in R16B03. According to Erlang.org, here&#39;s what&#39;s been corrected:</p><blockquote><ul><li>The ODBC application was missing in the prebuilt Windows installers</li><li>3 corrections in the SSL application:<ul><li>Add missing validation of the server_name_indication option and test for its explicit use.</li><li>Elliptic curve selection in server mode now properly selects a curve suggested by the client, if possible.</li><li>The server did not indicate support for secure renegotiation during TLS extension handling.</li></ul></li><li>In the syntax tools application a bug was introduced which broke reverting of local funs. This is now corrected (thanks to Anthony Ramine)</li><li>wx - Solved a problem which caused the debugger to crash when closing a window. Fixed static linking on Mac.</li><li>xmerl - Fixed a problem in the SAX-parser when the header of the next document was appearing in the buffer when using the xmerl_sax_parser:stream/2 function.</li></ul></blockquote>http://erlanginside.com/en/id/4672014-01-28T17:27:55+00:002014-01-28T17:20:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Erlang.mk & Relx Erlang ReleasesTake advantage of this Nine Nines for Erlang tutorial<p>Building OTP releases has always been difficult -- until now. Finally, learn to build better Erlang releases with erlang.mk and relx from <a href="http://ninenines.eu/articles/erlang.mk-and-relx/">this Nine Nines post!</a></p>http://erlanginside.com/en/id/4662014-01-17T13:07:17+00:002014-01-16T13:20:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Erlang Factory SF: Talks AnnouncedEvent speakers have been announced, including one of our very own, Fernando "Brujo" Benavides!<p>Fernando &quot;Brujo&quot; Benavides, Inaka&#39;s Director of Engineering and an Erlang die-hard, has been accepted to speak at Erlang Factory San Francisco 2014. He will be discussing how to use Erlang and Java together, detailed as follows:</p><blockquote><p>This talk is about how to interconnect Erlang and Java through JInterface and send messages back and forth. To show this interconnection, I&#39;ll show lucene_server, a java-backed Erlang application that lets users index documents and run queries against a lucene database.</p><h4>Talk Objectives</h4><p>This talk will introduce lucene_server, an erlang application that provides seamless access to a lucene database. It will also showcase many important lessons to keep in mind when connecting Erlang and Java nodes using JInterface.</p><h4>Target Audience</h4><p>Java developers who want to jump into the Erlang world, Erlang developers who need to index and query documents in a lucene-way or that just want to learn some tricks about how to connect Erlang VM with Java VM in a transparent way.</p></blockquote><p>To read more and take a look at the other speakers, <a href="http://www.erlang-factory.com/conference/show/conference-6/home/">visit the Erlang Factory SF site</a>. And remember, early bird tickets are on sale until February 11!</p>http://erlanginside.com/en/id/4652013-12-13T15:47:09+00:002013-12-13T15:32:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Erlang OTP R16B03 ReleasedQuick overview on changes worth noting<p>Erlang OTP R16B03 has been released! The changes are comprised mostly of small corrections and user contributions. A list of a few such changes worth noting, <a href="http://www.erlang.org/news/62">compiled and published on Erlang.org</a>:</p><blockquote><ul><li>A new memory allocation feature called &quot;super carrier&quot; has been introduced. It can for example be used for pre-allocation of all memory that the runtime system should be able to use. It is enabled by passing the +MMscs (size in MB) command line argument. For more information see the documentation of the +MMsco, +MMscrfsd, +MMscrpm, +MMscs, +MMusac, and, +Mlpm command line arguments in the erts_alloc(3) documentation.</li><li>The LDAP client (eldap application) now supports the start_tls operation. This upgrades an existing tcp connection to encryption using TLS, see eldap:start_tls/2 and /3.</li><li>The FTP client (inets application) now supports FTP over TLS (ftps).</li><li>~50 open source contributions. Many thanks for that!</li></ul></blockquote>http://erlanginside.com/en/id/4632013-12-13T15:26:16+00:002013-12-13T15:22:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Planned Power OutageErlang.org servers will be down Sunday<p>On Sunday, December 15, from 7AM to 2PM CET, there will be a planned power outage in the building where the Erlang.org servers are located. This will affect the website and email accounts, among other services, on that day. Please plan accordingly.</p>http://erlanginside.com/en/id/4622013-12-10T15:24:56+00:002013-12-10T12:10:00+00:00Site Administratorhttp://erlanginside.com/en/id/1The Erlang HandbookAnother useful source for your library<p><a href="http://opensource.erlang-solutions.com/erlang-handbook/">The Erlang Handbook</a>, written by Bjarne Däcker and revised by Robert Virding, provides a quick introduction of the language features and runtime system. It is best suited to those who already have some programming experience but are looking to learn Erlang.</p><p>It is <a href="http://opensource.erlang-solutions.com/erlang-handbook/">available for download</a> under the Creative Commons Attribution-ShareAlike 3.0 License. </p>http://erlanginside.com/en/id/4612013-12-10T15:26:20+00:002013-12-03T16:52:00+00:00Site Administratorhttp://erlanginside.com/en/id/1New Erlang Queries at Stack OverflowCourtesy of the Erlang Twitter bot<p>Some new Erlang-related queries on Stack Overflow, brought to us by the <a href="https://twitter.com/erlnews">Erlang Twitter bot</a>:</p><p>-- How to <a href="http://stackoverflow.com/questions/20286909/how-to-include-erlang-cassandra-client-files-into-ejabberd-server">include Erlang cassandra client files on a ejabberd server</a></p><p>-- <a href="http://stackoverflow.com/questions/20161953/erlang-rebar-kernel-options">Erlang rebar and kernal options</a></p><p>-- How to <a href="http://stackoverflow.com/questions/19982931/convert-an-elixir-ast-to-an-erlang-ast-is-it-possible">convert an elixir AST to an Erlang AST</a></p>http://erlanginside.com/en/id/4602013-11-27T16:11:32+00:002013-11-27T15:48:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Erlang Factory SF Bay 2014Dates for San Francisco have been announced!<p>As Toronto Erlang Factory Lite came to a close this weekend, the details for Erlang Factory San Francisco Bay were announced. This year, it will be held on March 5 - 7 at the Marines&#39; Memorial.</p><p><a href="https://docs.google.com/spreadsheet/viewform?formkey=dEdqTC0xc0RCbjBDM2wxaEM1QUVVckE6MA">Submissions for talks are now open</a>. For more information, please <a href="http://www.erlang-factory.com/news/list">check the site</a>.</p>http://erlanginside.com/en/id/4592013-11-26T18:18:26+00:002013-11-26T18:02:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Podcast: Mostly ErlangNeed more ways to get your Erlang fix?<p>Looking for a way to squeeze more Erlang into your life? Download episodes of the <a href="http://mostlyerlang.com/">Mostly Erlang</a> podcast with host Zachary Kessin. Episodes range in topic from Zotonic to continuous integration, and the most recent episode, posted last Thursday, is on refactoring with Wrangler. There are also interviews and talks with Jose Valim, Francesco Cesarini, Joe Armstrong, Kostis Sagonas, and more Erlang superstars.</p><p>Best of all, they&#39;re free. It&#39;s the perfect way to spend your long commute or hear about programming while you program, whichever you prefer.</p><p>You can download or stream them on the <a href="http://mostlyerlang.com/">Mostly Erlang website</a> and iTunes.</p>http://erlanginside.com/en/id/4572013-11-18T12:27:00+00:002013-11-18T09:20:00+00:00Site Administratorhttp://erlanginside.com/en/id/1The How and Why of Fitting Things TogetherAnother great online lecture by Joe Armstrong<p>In another interesting lecture by Joe Armstrong -- called &quot;<a href="http://www.youtube.com/watch?v=ed7A7r6DBsM">The How and Why of Fitting Things Together</a>&quot; -- he picks apart why software doesn&#39;t always fit together and what we can do about it with Erlang.</p><p>Armstrong delves into how performance, correctness, blame, and guilt relate to programming and cites Postel&#39;s Law and Joe&#39;s Law. The lecture itself is pretty entertaining: he uses a pipe and plumbing metaphor to get into program connectivity, puts on his best Gandalf impression for a half-second, and even whips out a bit of Swedish.</p><p>&quot;When you&#39;re programming Erlang,&quot; he says, &quot;you assume the whole world is in Erlang, but you need those middle men -- an abstraction so obvious we don&#39;t even realize we&#39;re doing it.&quot;</p><p>He goes on, &quot;The middleman is the Higgs-Boson of Erlang, because it imposes order as the creator of mass.&quot; Oh, and did I mention there&#39;s a delightfully terrible Higgs-Boson joke in there too?</p><p>It&#39;s well worth the view. <a href="http://www.youtube.com/watch?v=ed7A7r6DBsM">Check it out here</a>.</p>http://erlanginside.com/en/id/4582013-11-12T17:22:52+00:002013-11-12T14:46:00+00:00Site Administratorhttp://erlanginside.com/en/id/1How to Create a RESTful Server with ErlangA new tutorial by Fernando "Brujo" Benavides<p>Brujo is at it again. On the Inaka blog, he recently published another <a href="http://inaka.net/blog/">Erlang tutorial</a> called &quot;Canillita - <a href="http://inaka.net/blog/2013/11/06/your-first-erlang-app-canillita/">Your First Erlang Server</a>.&quot; In it, you will learn how to build a RESTful server with Erlang, a useful but very basic project.</p><p>He uses SSE, cowboy, sumo_db, and jiffy to build an SSE/RESTful server which handles &quot;thousands of listeners in one node&quot; and &quot;benefits from the virtues of Erlang.&quot; The system handles crashes effortlessly, it&#39;s easy to add new nodes, and changes can be compiled without turning off the servers.</p><p><a href="http://inaka.net/blog/2013/11/06/your-first-erlang-app-canillita/">Read the tutorial in full here</a>, or get in touch with Brujo on <a href="https://twitter.com/elbrujohalcon">Twitter</a> or at <a href="http://about.me/elbrujohalcon">his personal website</a>.</p>http://erlanginside.com/en/id/4562013-11-05T16:00:04+00:002013-11-05T14:55:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Erlang Central's Erlang CookbookNeed help trouble-shooting something in Erlang and can't find the documentation for it? <p>Erlang Central&#39;s <a href="https://erlangcentral.org/wiki/index.php?title=Category:CookBook">Erlang Cookbook</a> has a fairly thorough listing of Erlang &quot;recipes&quot; to save you the trouble of figuring things out yourself. Most of the solutions are directed at OTP Erlang specifically, but you may find other answers listed as well.</p><p>The Cookbook was originally compiled to provide solutions to common Erlang programming problems, but, naturally, it has also become a project dedicated to furthering Erlang adoption.</p><p>It&#39;s a collaborative document, so if you have something useful to add, you can <a href="stg.erlangcentral.org/wiki/index.php/ErlangCookBookAuthorGuide">submit articles of your own here</a>. If you contribute to the Cookbook, though, you must agree to a copyright statement. This way, should the Cookbook one day get published, the publishers will have no qualms about including your work.</p>http://erlanginside.com/en/id/4552013-11-01T15:17:10+00:002013-11-01T14:31:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Technical Preview of Riak 2.0 ReleasedSo it's not exactly Erlang news, but...<p>Tuesday, Basho <a href="http://basho.com/technical-preview-of-riak-2-0/">announced the release of the Riak 2.0 technical preview</a>. According to Basho, Riak is used by thousands of companies, including about a third of the Fortune 50. The improvements implemented in Riak 2.0 include:</p><ul><li>Riak data types</li><li>Strong consistency</li><li>Full-text search integration with Apache Solr</li><li>Improved security</li><li>Simplified configuration management</li><li>Reduced replicas for secondary sites</li></ul><p>To read a detailed description of each improvement or download the technical preview, check out the official announcement <a href="http://basho.com/technical-preview-of-riak-2-0/">here</a>.</p>http://erlanginside.com/en/id/4532013-10-22T17:18:15+00:002013-10-22T15:11:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Erlang Experience for Better ClojureHave five minutes to spare? Watch this InfoQ lecture on how to apply Erlang-based lessons to Clojure-based programming.<p>Reid Draper, Erlang hacker at Basho, programs in both Erlang and Clojure. <a href="http://www.infoq.com/presentations/erlang-clojure">In this InfoQ lecture</a>, he discusses how he transferred lessons he learned from Erlang to Clojure, making him a better all-around programmer.</p><p>These lessons -- remote REPL, dynamic tracing, code reloading, and restartable components -- might make you a better all-around programmer, too. Or, if you think Reid missed something, he invites you to <a href="https://twitter.com/reiddraper">harass him on Twitter</a>.</p>http://erlanginside.com/en/id/4512013-10-18T14:04:59+00:002013-10-18T17:11:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Codemesh 2013: The Alternative Programming ConferenceBeginning December 3, Codemesh 2013 will begin its three-day event in London.<p>From December 3 - 5, IT architects, software developers, and project managers alike will come together in London for <a href="http://codemesh.io/#home">Codemesh 2013</a>. This year, the event consists of one day of training plus two days of talks on non-mainstream software technologies from experts.</p><p>Speakers will include Jose Valim, Joe Armstrong, Garrett Smith, Francesco Cesarini, Torben Hoffmann, Susan Potter and dozens more. Attendees will also be able to attend the Code Brew, a night where speakers and delegates can mingle, eat snacks, and drink specially selected craft beer to the sound of live hand-coded music by <a href="http://meta-ex.com/">Meta-eX</a>.</p><p>A one-day tutorial-only ticket is available, as well as the early bird special, which lasts until November 13. To register, <a href="http://codemesh.io/#register">please refer to the site</a>.</p>http://erlanginside.com/en/id/4502013-10-17T17:00:17+00:002013-10-17T16:50:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Toronto Erlang Factory Lite 2013Erlang Factory Lite comes to Toronto on November 23, 2013.<p>On November 23, 2013, Erlang Factory Lite will be held in Toronto. Speakers will use personal experiences to demonstrate how Erlang solves current scalability and performance issues, as well as delve into the advantages of Elixir and discuss Riak distributed database updates.</p><p>If you would like to give a talk on an idea or project of yours -- or just learn more about Erlang -- this is your time! You can <a href="https://docs.google.com/spreadsheet/viewform?formkey=dGxSVFR1UEJ6MmtSV2sxemJsZi1jVVE6MA#gid=0">submit your topic here</a>, or sign up for the <a href="https://docs.google.com/spreadsheet/viewform?formkey=dGxSVFR1UEJ6MmtSV2sxemJsZi1jVVE6MA#gid=0">early bird registration here</a>.</p>http://erlanginside.com/en/id/4462013-10-07T17:53:35+00:002013-10-07T15:38:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Interview with Jose Valim on ElixirJose Valim, lead developer of PlataformaTec and member of the Ruby on Rails Core Team, takes the time to talk with us about his experiences developing Elixir.<p><strong><!-- z-media 449 {"align":"block","size":"middle","crop":"","link":""} -->EI: To start us off, just for fun -- could you give us a screenshot of your current desktop?</strong></p><p>JV: I got this one (and probably my last 20 backgrounds) from <a href="http://reddit.com/r/earthporn">reddit.com/r/earthporn</a>. :)</p><p><strong>EI: Beautiful! So when and how did you start programming?</strong></p><p>JV: I was kind of a late bloomer. I started programming when I joined university and my first programming language was C. From there I went to learn Java, C#, PHP until I finally encountered Ruby. Even though I spent some good time using those languages, like writing my thesis in C, Ruby was the first programming language that I really considered myself to be an expert. From then on, I continued learning and studying other languages.</p><p><strong>EI: What gave you the idea to develop Elixir?</strong></p><p>JV: It was really many factors coming together. Back in 2009, it was already very clear that we were looking into a multicore future and I was becoming unhappy with the tools to solve concurrency issues in Ruby. That&#39;s what led me to continue studying and looking at other programming languages.</p><p>Although I have already read and played with Erlang a bit, it wasn&#39;t until I read the fantastic Seven Languages in Seven Weeks book that I realized that I really wanted to be using the Erlang VM for writing those concurrent applications. And even better, by using the Erlang VM, I&#39;d also get distributed applications almost for free!</p><p>From then on, I decided to put more energy into learning and studying Erlang and the underlying VM. I was quite happy with all the tools available but I particularly felt some of them were missing, like the ability for meta-programming and some extensibility mechanisms like protocols. That&#39;s how Elixir was born.</p><p><strong>EI: And now, how would you sell Elixir to others? What are its most important advantages?</strong></p><p>JV: Well, it depends to whom I am selling it. :-) In general, our main asset is the Erlang VM. We wouldn&#39;t have Elixir if it was not for the Erlang VM. Put that together with our meta-programming and extensibility mechanisms and you get a solid look of what are our goals and what we want you to be able to achieve with the language. I have recently written a <a href="http://elixir-lang.org/blog/2013/08/08/elixir-design-goals/">blog post that goes over our goals in detail.</a></p><p><strong>EI: Great, I&#39;ll be sure to check that out!</strong></p><p><strong>Given the Erlang VM, for which types of applications would you pick Elixir over Erlang or Erlang over Elixir?</strong></p><p>JV: The use cases are pretty much similar. Since Elixir can interact with Erlang and vice-versa, with no performance cost or no bridging, they can be used interchangeably. The big win here is making the Erlang VM polyglot and allowing developers to choose the tools they are most comfortable with.</p><p><strong>EI: So is migration from an Erlang app to Elixir something a developer should worry about, and if so, how should it be approached?</strong></p><p>JV: They can also be used interchangeably in the same project! You can either install something like <a href="https://github.com/yrashk/rebar_elixir_plugin">rebar_elixir_plugin</a> and start adding Elixir into your tool chain or migrate your application to Mix, which is Elixir build tool.</p><p>It is very common, both in Elixir and Erlang, to build your project into many applications, where you have a parent umbrella project and all the children are in the apps directory. We have also heard reports of people using this style of development and mixing both languages with success.</p><p>If in doubt, join our <a href="http://groups.google.com/group/elixir-lang-talk">mailing list</a> or #elixir-lang on IRC and we will be glad to help you! </p><p><strong>EI: Psychology has a large effect on a programmer&#39;s perception and the uptake of a language. How might coming from Erlang and Ruby affect Elixir adoption, given that Erlang and Ruby have pretty opinionated communities surrounding them?</strong></p><p>JV: When you are learning another programming language, you need to expect it is going to value different things than what your current language does. If you don&#39;t approach it with such expectations, all you get is a knee-jerk reaction instead of rationally thinking about the trade-offs. Of course, at the end of the day, some Ruby developers may conclude that multi-process concurrency will be enough for their use cases in the next couple years or some Erlang developers decide that a language that has not reached 1.0 yet is too soon for change, and that is fine.</p><p>That said, developers studying and adopting Elixir have been mostly successful, which is expected since, at this point, most of them are early adopters.</p><p><strong>EI: I think that&#39;s a great point, that it should be expected that each advantage has its disadvantage, that certain aspects are prioritized differently in different languages.</strong></p><p><strong>Moving on to macros -- macros are one of the sources of Lisp&#39;s legendary power, and some have called it too powerful for the day-to-day work of regular programmers. Do you think there is any merit to this?</strong></p><p>JV: Macros definitely give developers a lot of power and that is exactly why they are not a day-to-day resource. They are a last-resource tool. You should resort to macros when all the other abstractions provided by the language fails to solve the problem at hand. And even when you need to write a macro, the macro should do as little work as possible, often delegating to a function.</p><p>So educating developers about proper use of macros is definitely one of the concerns we have. I have been reviewing two of the books coming about Elixir (<a href="http://pragprog.com/book/elixir/programming-elixir">Programming Elixir</a> and <a href="http://shop.oreilly.com/product/0636920030584.do">Introducing Elixir</a>) and I asked both authors to leave similar warnings when introducing macros. After all, the first rule of the macro club is: &quot;don&#39;t use macros!&quot;</p><p>The language also goes a long way to ensure macros are self-contained. One of them is hygiene that ensures a macro won&#39;t pollute variables in the user namespace. Also, we limited the macro system to quote and unquote (there is no quasi-quote) and those operations don&#39;t have shortcuts. You need to be explicit and type quote and unquote.</p><p><strong>EI: Are you planning on having any embedded way of writing and running unit tests with Elixir? What&#39;s next for the Mix rad?</strong></p><p>JV: We believe Elixir is extensible enough for developers to try such features without a need to bake them into the language. So even though I have no plans, anyone can go for it! In general, my particular philosophy for tests is that you shouldn&#39;t test your private functions directly because this usually lead to tests too coupled to the implementation.</p><p>Regarding Mix, we are luckily going into the direction where tools are getting more and more stable, so I am happy to say there isn&#39;t much planned for mix except improving what we provide today.</p><p><strong>EI: What would you consider a desired or complete ecosystem and tooling for the Elixir dev environment?</strong></p><p>JV: That will depend a lot on which kind of applications you want to build. The things that are absolutely essential were baked into the language: interactive elixir (IEx), a test framework (ExUnit) and a build tool (Mix). For my company <a href="http://plataformatec.com.br">Plataformatec</a> to use Elixir in production, we need proper web-related tools and we have been working on that on the side too. </p><p><strong>EI: And what do you see in the near future for Elixir?</strong></p><p>JV: This is a very interesting question because, at this point, I figure I have the next 2 years of Elixir development already sketched. Looking at our own community and what other functional languages are tackling, there are common issues we will have to eventually tackle, like how to better handle nested data structures and proper date and time abstractions.</p><p>But we are not in a hurry. The short-term goal is to build better logging into the language, continue refining our current tools and integrate with Erlang R17 once it is out. Then get 1.0 out.</p><p><strong>EI: Well we&#39;re looking forward to it! Thank you so much for taking the time to talk with us.<br /></strong></p><p>JV: My pleasure!</p>http://erlanginside.com/en/id/4452013-10-07T17:54:24+00:002013-10-02T16:15:00+00:00Site Administratorhttp://erlanginside.com/en/id/1“The Free Lunch is Over”: Why Erlang MattersIn “The Free Lunch is Over,” Herb Sutter explains how hardware changes will dictate software changes which, in turn, will change the way we write software and how we think about programming languages in a more general sense.<p>To really get a feel for the rising significance of concurrency, you need to understand the CPU conundrum. Sutter explains the situation with aplomb in “<a href="http://www.gotw.ca/publications/concurrency-ddj.htm">The Free Lunch is Over: A Fundamental Turn Toward Concurrency in Software</a>”. The article was originally published in 2004, and then appeared in <a href="http://www.gotw.ca/publications/concurrency-ddj.htm"><em>Dr. Dobb’s Journal</em></a> in 2005. The information remains a relevant as ever, however, and the embedded chart was updated in 2009 to reflect on-going changes.</p><p>Essentially, up until a decade or so ago, it was a given that CPUs would continue to get faster and faster as the years went by and technology improved. By simply upgrading your CPU, programs would run better and faster, simply because you had better hardware.</p><p>But now, CPU performance is no longer on the rise. There continue to be more and more transistors, yet clock speed remains stagnant. What does this mean?</p><p>For one, to be able to fully exploit CPU improvements from here on out, programs will need, more and more, to be concurrent. It’s no longer enough to rely solely on CPU muscle. And guess what? Erlang was built to make use of hardware concurrency.</p><p>Learning Erlang, then, is truly an investment. In knowing Erlang, you ensure that you will be able to take advantage of technological improvements to come, that you will be able to build concurrent programs as it becomes increasingly important – nay, necessary – that they do, in fact, run concurrently.</p>http://erlanginside.com/en/id/4152013-10-07T17:55:56+00:002013-09-23T16:02:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Chicago Erlang Factory Lite 2013Details on another opportunity to learn about Erlang, held this October 4 in Chicago.<p>For those of you in or around Chicago, the first <a href="https://www.erlang-factory.com/conference/Chicago2013">Chicago Erlang Factory Lite</a> will be held on October 4. Speakers include <a href="https://www.erlang-factory.com/conference/Chicago2013/speakers/AlexanderGounares">Alexander Gounares</a>, <a href="https://www.erlang-factory.com/conference/Chicago2013/speakers/AdamDenenberg">Adam Denenberg</a>, <a href="https://www.erlang-factory.com/conference/Chicago2013/speakers/GarrettSmith">Garrett Smith</a>, and <a href="https://www.erlang-factory.com/conference/Chicago2013/speakers/MaheshPaoliniSubramanya">Mahesh Paolini-Subramanya</a> on topics ranging from Elixir and neuroevolution, to fault tolerance and The Huffington Post’s commenting system.</p><p>Entrance is $119 – or $49 if you’re a student – and it appears that there are still some spaces available. You only have a week and a half left <a href="https://www.erlang-factory.com/conference/Chicago2013/register">to register</a>, so now is the time!</p>http://erlanginside.com/en/id/4142013-10-07T17:58:09+00:002013-09-17T13:43:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Online Erlang LectureJoe Armstrong, the principal creator of Erlang, explains why it’s the best language for building highly parallel, distributed, fault-tolerant systems.<p>“[It] is a language used by people in-the-know,” Armstrong writes on the site for his book, <a href="http://pragprog.com/book/jaerlang/programming-erlang"><em>Programming Erlang: Software for a Concurrent World</em></a>. “It solves one of the most pressing problems facing developers today: how to write reliable, concurrent, high-performance systems.” Learning Erlang, he says, is an investment.</p><p>He begins <a href="http://www.infoq.com/presentations/joe-armstrong-erlang-qcon08">this lecture</a> by asking, “What problems will you solve with Erlang?” Well, it can handle hundreds of thousands of parallel activities in real time, for example, and it’s highly reliable. What’s more, you can upgrade it without stopping the program in question. So for Armstrong, who currently works in the telecom industry, Erlang is the perfect fit. It’s the perfect fit for building other highly parallel, distributed, fault-tolerant systems, too.</p><p>Armstrong also touches on Moore’s Law and the fact that, as of 2002, you could no longer reach the entire chip in one clock cycle. “Each year, your sequential programs will go slower,” he points out, “and each year, your concurrent programs will go faster.” The hardware keeps changing, so system architecture has to change, too.</p><p>Erlang, then, is becoming more and more of a necessity. And in this way, Armstrong is right: learning Erlang is an investment.</p><p><a href="http://www.infoq.com/presentations/joe-armstrong-erlang-qcon08">Watch the lecture here.</a></p>http://erlanginside.com/en/id/4132013-10-07T17:56:55+00:002013-09-12T16:35:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Evan Miller: Why Program in Erlang?Now, now, I know you don’t need any more convincing, but this piece by Evan Miller may still be worth the read.<p><em>“</em>Erlang is the culmination of twenty-five years of correct design decisions in the language and platform,” says Miller.<em> “</em>Whenever I&#39;ve wondered about how something in Erlang works, I have never been disappointed in the answer.”</p><p>The beauty of Erlang’s design, of course, is in contrast to Java’s “pendantic thing”, Perl’s “kludgy thing,” Ruby’s double “implementations of the wrong thing”, and C’s nothing. To realize Miller is right, all you have to do is take a look at Erlang’s garbage collection, string concatenation, and the transparency of its data structures.</p><p>But, even Miller admits, Erlang is not a perfect language. Its syntax is strange, it lacks libraries, and it can be slow. And what is good about it is “back-loaded”; that is to say, it’s only after many years of programming experience that you may understand the beauty of its design.</p><p>But the trade-off has proven itself worthwhile. To date, Miller has spent “well over a thousand hours” programming in Erlang, and it doesn’t look like he’ll be giving it up any time soon.</p><p><a href="http://www.evanmiller.org/why-i-program-in-erlang.html">Read Miller’s article in full here.</a></p>http://erlanginside.com/en/id/4122013-10-07T17:59:57+00:002013-09-10T15:45:00+00:00Site Administratorhttp://erlanginside.com/en/id/1The Best Erlang GuidesHere’s a round-up of the best guides online -- only making it easier for you to ditch the excuses and learn Erlang already!<p><em></em>In no particular order:</p><p> </p><p><a href="http://learnyousomeerlang.com"><strong>LEARN YOU SOME ERLANG FOR GREAT GOOD</strong></a><strong> </strong>BY FRED HEBERT</p><p><em>Learn You Some Erlang </em>is a great beginner’s guide, intended for those who have programming experience but may not be too familiar with functional programming specifically. In many ways, it’s the most thorough guide on this list.</p><p>Each chapter is built around a concept, from the most fundamental to the most esoteric: shells, modules, syntax in function, types, recursion, higher order functions, errors and exceptions, multiprocessing, event handlers, mnesia, and on.</p><p>Though Herbert is well aware of Erlang’s merits, he is equally wary of overzealous Erlang enthusiasts. He decided to write this guide as honestly as possible, “selling Erlang for what it is, acknowledging its weaknesses and strengths.”</p><p>(E-books and physical copies are also available.)</p><p> </p><p><a href="http://www.erlang.org/doc/getting_started/users_guide.html"><strong>GETTING STARTED WITH ERLANG</strong></a></p><p><em>Getting Started with Erlang</em>, on the other hand, throws thoroughness out the window in favor of a simple, necessity-based approach, so as not to bog you down. Keeping in its simplicity, this guide assumes you understand something about the way computers work, but you don&#39;t have to be a programming wizard.</p><p>It begins with sequential programming, then progresses to concurrent programming, robustness, and finally macros. It does not talk about local error handling, OTP, or changing code in running systems, among other things. If you&#39;d rather just learn the essence of Erlang, though, this will get you off on the right foot.</p><p> </p><p><a href="http://www.scribd.com/doc/44221/Thinking-in-Erlang"><strong>THINKING IN ERLANG </strong></a>BY ROBERT BARUCH</p><p>If you’re already very comfortable with Java (or C++ or C#), this guide is for you. In <em>Thinking in Erlang</em>, Baruch focuses on how Erlang works given that it is not a procedural programming language but a functional programming language. So, naturally, sufficient experience with procedural programming languages is necessary in order to compare the two in a meaningful way.</p><p> </p><p>And finally, from the creator of Erlang himself:</p><p><a href="http://pragprog.com/book/jaerlang/programming-erlang"><strong>PROGRAMMING IN ERLANG: SOFTWARE FOR A CONCURRENT WORLD</strong></a><strong> </strong>BY JOE ARMSTRONG</p><p>This guide – though it costs a cool $27 (and the physical copy will run you upwards of $50) -- has something the others don&#39;t. It takes you beyond the building blocks of code and actually teaches you about a program or two.</p><p>For example: you will learn how to build a SHOUTcast server, through which you can stream music to all your household computers; and you will learn how to build a full-text indexing and search engine that can index gigabytes of data for either a single computer or a parallel network.</p><p> </p><p><strong>ALSO USEFUL</strong>:</p><p>Later, to get a handle on good coding practices, <a href="http://www.erlang.se/doc/programming_rules.shtml">here’s a helpful guide to Erlang programming rules and conventions</a>.</p><p><br />Good luck!</p>http://erlanginside.com/en/id/4102013-10-07T17:58:57+00:002013-09-09T15:15:00+00:00Site Administratorhttp://erlanginside.com/en/id/1From Erlang to Java and Back AgainOn the Inaka blog, Fernando “Brujo” Benavides gives us a walk-through on how to create a Java/Erlang OTP application.<p>Not so long ago, Brujo was required to write an Erlang application that would use some Java libraries through JInterface<em>.</em> Here, he details the process step-by-step so others can learn from his experience.</p><p>The post is called &quot;From Erlang to Java and Back Again,&quot; and it’s the first part of a series. In the article, he shows how he compiled the Java and Erlang together using <em>rebar compile</em>, as well as how to start and stop the Java node from Erlang.</p><p>If you, too, are interested in creating a Java/Erlang OTP application, save yourself a few headaches by benefitting from Brujo’s experience. <a href="http://inaka.net/blog/2013/09/05/from-erlang-to-java-and-back-again-1/">You can read part one in full here.</a></p>http://erlanginside.com/en/id/4082013-10-07T17:55:28+00:002013-09-04T14:16:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Joe Armstrong's "A Week With Elixir"Joe Armstrong’s critique of Elixir – written after spending a week learning the language – is a thoughtful breakdown of the good, the bad, and the complicated. <p>Joe was first intrigued by Elixir when he realized two people he admired – <a href="http://pragprog.com/book/elixir/programming-elixir">Dave Thomas</a> and Simon St. Laurent – were writing books on it. As Joe says, “Experts in a particular field can often instantly know that something is right, but they can’t explain why.” Both felt there was something special about Elixir, though, so Joe followed their lead. When they responded to his emails with copies of their books, he decided to start learning.</p><p>Elixir, he noticed, shares Erlang’s semantics but has a different syntax. The syntax is inspired by Ruby and is, as he puts it, much “friendlier”.</p><p>He then breaks down Elixir piece-by-piece, judging it against his Laws of Programming Language Design:</p><ol><li>What you get right, nobody mentions.</li><li>What you get wrong, some will nit-pick.</li><li>What you make difficult, you have to explain over and over and over again.</li></ol><p>The good, the bad, and the complicated. In terms of Elixir, for Joe, the good includes the pipe operator, sigils, macros, and closures, to name a few; the bad includes the send operator, post-list commas, and no leniency for extra whitespace outside of strings, for example. And then there’s the (sometimes unnecessarily) complicated, like the fact that functions have an extra dot.</p><p>In the end, though, he agrees that the good far outweighs anything else.</p><p><a href="http://joearms.github.io/2013/05/31/a-week-with-elixir.html">Read the critique in full here</a>.</p>http://erlanginside.com/en/id/4072013-10-01T16:26:30+00:002013-09-03T16:33:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Who Uses Erlang (and Why)?If you've ever wondered what's being done with Erlang, we've got you covered. <p><a href="http://stackoverflow.com/questions/1636455/where-is-erlang-used-and-why">This Stack Overflow question</a> will start to give you a good idea:</p><p><strong>Amazon</strong> uses Erlang to implement SimpleDB, providing database services as a part of the Amazon Elastic Compute Cloud (EC2).</p><p><strong>Yahoo!</strong> uses Erlang in its social bookmarking service, Delicious, which has more than 5 million users and 150 million bookmarked URLs.</p><p><strong>Facebook</strong> uses Erlang to power the backend of its chat service, handling more than 100 million active users.</p><p><strong>T-Mobile</strong> uses Erlang in its SMS and authentication systems.</p><p><strong>Motorola</strong> uses Erlang in call processing products in the public-safety industry.</p><p><strong>Ericsson</strong> uses Erlang in its support nodes, used in GPRS and 3G mobile networks worldwide.</p><p>The most popular open source Erlang applications include the following: the <strong>Ejabberd</strong> system, <strong>Wings3D</strong> subdivision modeler, the <strong>CouchDB</strong> database, the <strong>MochiWeb</strong> library, and <strong>RabbitMQ</strong>, an AMQP messaging protocol implementation.</p><p>And, <a href="http://erlanginside.com/en/article/406/online-lecture-elixir-modern-programming-for-erlang-vm">as Jose Valim points out in his lecture</a>, <strong>Whatsapp</strong> – a free instant messaging program that runs across iPhones, iPads, Blackberries, and Androids alike – uses Erlang. Amazingly, there are 2 million connections on a single node, running from only 10 machines.</p><p>That’s the power of Erlang!</p>http://erlanginside.com/en/id/4062013-10-01T16:22:09+00:002013-09-02T16:01:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Online Elixir Lecture by Jose ValimWondering what's the deal with Elixir? Jose Valim will tell you all about it.<p>Jose Valim is the lead developer of PlataformaTec and a member of the Ruby on Rails Core Team. He is active in the Open Source community and has been developing software for over eight years. He’s also on vacation right now, but with any luck, we’ll have interview with him in the next month or so.<br /><br />Until then, <a href="http://www.infoq.com/presentations/Elixir-Erlang-VM">check out this lecture</a> of his on the differences and similarities between Elixir and Erlang, and how Elixir exposes – and improves upon – Erlang’s shortcomings. The goals for Elixir, which he calls “modern programming for the Erlang VM,” are productivity, extensibility, and compatability. What’s more, everything you can write in Erlang you can also write in Elixir, and there’s no conversion cost.</p><p>Sounds pretty cool, if you ask me.</p><p> </p>http://erlanginside.com/en/id/4052013-10-01T16:27:43+00:002013-08-20T15:56:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Erlang Sessions at Strange Loop 2013More opportunities to learn and use Erlang are coming up this September at the Strange Loop Conference in St. Louis. Here are three sessions you can’t miss:<p><strong> </strong></p><p><a href="https://thestrangeloop.com/sessions/erlang-for-authoritative-dns"><strong>Erlang for Authoritative DNS</strong></a><strong>, Thursday at 10:40 in the Centene Room</strong></p><p><a href="https://twitter.com/aeden">Anthony Eden</a> maintains that you should never write an authoritative DNS server, but – if you must – you’ll be needing Erlang. In this session, Eden will explain what makes Erlang the language for the job, as well as what obstacles he discovered while developing the <a href="https://dnsimple.com/">DNSimple</a> server and how to overcome them.</p><p> </p><p><a href="https://thestrangeloop.com/sessions/building-a-multi-master-distributed-redis-in-erlang"><strong>Building a Multi-Master Distributed Redis in Erlang</strong></a><strong>, Thursday at 1:50 in Midland States</strong></p><p>In this session, <a href="http://inaka.net/">Inaka</a>’s <a href="https://twitter.com/chaddepue">Chad DePue</a> will discuss how to build a Redis clone written in Erlang – that is to say, a Highly Available NoSQL database that speaks Redis protocol. Not to be missed by NoSQL users, the Erlang-curious, and those who want to learn more about distributed computing.</p><p> </p><p><a href="https://thestrangeloop.com/sessions/cqrs-with-erlang"><strong>CQRS with Erlang</strong></a><strong>, Friday at 9:50 in the Centene Room</strong></p><p><a href="https://twitter.com/bryan_hunter">Bryan Hunter</a> of <a href="http://fireflylogic.com/">Firefly Logic</a> will show why and how Erlang’s quirks work seamlessly with CQRS. Through a sample implementation written in Erlang, he’ll demonstrate how to take advantage of each by hitting the sweet spots of both.</p><p> </p><p>The Strange Loop Conference will be held September 19 &amp; 20. It is already sold out this year, but you can add yourself to the waiting list <a href="http://www.regonline.com/Register/Checkin.aspx?EventID=1239014">here</a>.</p>http://erlanginside.com/en/id/4012013-10-01T16:23:46+00:002013-07-17T14:09:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Lamba Jam 2013 RecapLast week was the week to brush up on your Clojure, Scala, Erlang, Haskell, or F#, because last week was the Lambda Jam conference. <p> </p><p>Lambda Jam (sponsored in part by <a href="http://inaka.net/">Inaka</a>) was held this past week in Chicago. From July 8 to 10, attendees honed their skills in the aforementioned languages, not just through listening but also through hands-on practice and workshops.</p><p>Throughout the conference, there were three keynote speakers. <a href="http://groups.csail.mit.edu/mac/users/gjs/">Gerald Jay Sussman</a> of <a href="http://www.eecs.mit.edu/">MIT</a> discussed the benefits of using programming to fully comprehend mathematical methods, and <a href="http://armstrongonsoftware.blogspot.com.ar/">Joe Armstrong</a>, one of the inventors of Erlang, spoke of self-healing scalable systems. <a href="https://twitter.com/swannodette">David Nolen</a>, on the other hand, made a case for revisiting – and reexamining – the roots of computer programming. “We have had more than a half a century of computer science,” he said, “At best we continue to draw inspiration from an extremely small portion of it, [and] at worst we blindly adopt known bad ideas.”</p><p>Between the keynotes, workshops, and additional sessions (with titles like “Living in a Post-Functional World”), Lambda Jam was a hotbed of functional programming wisdom.</p><p>We hope to see you next year!</p>http://erlanginside.com/en/id/3992013-09-27T23:22:46+00:002013-04-10T04:49:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Google Sponsors Projects on the Erlang VM<p><!-- z-media 400 {"align":"block","size":"middle","crop":"","link":""} -->The BEAM Community is a group of projects that run on the Erlang VM. Their goal is to host relevant projects in the Erlang community, making it easy for those projects to participate in the Google Summer of Code (GSoC) 2013 and for interested students to pick their best choice. <a href="http://beamcommunity.github.io">Check out their site for more information.</a></p>http://erlanginside.com/en/id/3842013-09-27T23:20:21+00:002011-05-16T18:33:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Motivated Reasoning and Erlang vs. Python vs. Node<p><a href="http://www.ostinelli.net/a-comparison-between-misultin-mochiweb-cowboy-nodejs-and-tornadoweb/">Check out this comparison between Misultin, Mochiweb, Cowboy, Node.JS, and Tornado</a>. Tests such as this one tend to focus on either raw parsing speed or total number of concurrent connections, and which is more important depends on the ultimate application. Or they perfectly tune the tester’s favorite framework and use a stock configuration for the other competitors. For instance this test doesn’t use multiple cores (which is one of the points of Erlang) and the test server was running locally on the same box as the test client, which could affect the results in unexpected ways. Ironically, Erlang often does poorly in this style of benchmark as it’s not known as being good at raw language performance and even worse at string parsing. However in this case it comes out on top… and would have been much stronger had it been able to run on multiple cores.</p><p>Framework benchmarks are a joy to me for a different reason, however. In theory, dispassionate analysis should prevail in benchmark blog posts. In this case Roberto seems to do a good job of testing even-handedly. But what exactly is the goal of the test? Faster = better; and Erlang is rarely called fast. Pretty = better; and Erlang is never the belle at the ball. Would Roberto have published the results if Misultin were slower? I’m not implying he wouldn’t, but (and this is not to pick on him) I’ve <strong>never</strong> seen a framework battle royale where the author of one of the contenders published the results and their framework didn’t win. More informed readers please enlighten me if there are obvious examples.</p><p>Incidentally, one of the things I found fascinating about Tim Bray’s <a href="http://www.tbray.org/ongoing/When/200x/2008/05/01/Wide-Finder-2">Wide Finder</a> was that he didn’t really have a dog in that fight, so the results seemed…objective. I can’t fault his motives even though I can still wonder what exactly was the point of the project.</p><p>Taking a step back, I am always struck by the comment threads below these posts. They remind me that most people deal with insecurity; most people self-identify with groups for (often) arbitrary reasons, and most pick a group and then reason backwards as to why they’re a member of that group or school or team or church. Their motivations are mostly unclear internally, much less to others around them. This is so common in the software world. (See <a href="http://erlanginside.com/interview-with-tino-breddin-ruby-vs-python-vs-erlang-communities-261">my recent interview with Tino Bredden on Erlang other communities</a> where we discuss this.) Incidentally, I could easily see myself running a blog on programming sociology even though I’m not a sociologist, because I find group behavior -- particularly group geek behavior, as I am one -- fascinating.</p><blockquote><p>We are all somewhat impervious to new information, preferring the beliefs in which we are already invested. We often ignore new contradictory information, actively argue against it or discount its source, all in an effort to maintain existing evaluations. Reasoning away contradictions this way is psychologically easier than revising our feelings. In this sense, our emotions color how we perceive facts. – <em>David P. Redlawsk</em></p></blockquote><p>What’s the point? In this project, Erlang seemed faster, uglier (according to some), and had one hand tied behind its back, as it wasn’t allowed to use multiple cores. Does that make me feel happy or sad? Does that make me feel like I need to justify my platform or library? Do I feel myself engaging in <a href="http://www.nytimes.com/roomfordebate/2011/04/21/barack-obama-and-the-psychology-of-the-birther-myth/a-matter-of-motivated-reasoning">Motivated Reasoning</a>? Or should I take a step back and realize it probably doesn’t matter either way…and that my response to the test says more about me than about my choice of framework.</p>http://erlanginside.com/en/id/3832013-09-27T23:26:04+00:002011-05-16T18:33:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Erlang in Haskell<p>Haskellers who want to experiment with the concepts of Erlang in Haskell can now do so with an <a href="http://hackage.haskell.org/trac/ghc/wiki/ErlangInHaskell">experimental Erlang-like distributed computing framework called ‘remote’</a>. It’s quite basic but covers concurrency, selective receive of messages, local and global registration of processes, and trapping exits. Plus, here&#39;s a <a href="http://research.microsoft.com/en-us/um/people/simonpj/papers/parallel/">related Microsoft research paper</a>.</p>http://erlanginside.com/en/id/3812013-09-27T23:21:13+00:002011-04-13T18:32:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Memory Models in Erlang vs Java<p><a href="http://www.javacodegeeks.com/2011/04/erlang-vs-java-memory-architecture.html">A view of Erlang</a> (focused on the memory model) from a “Java Code Geek”.</p>http://erlanginside.com/en/id/3532013-09-27T23:19:35+00:002011-03-28T12:57:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Playdar Codebase Reduced by 75% by Erlang Rewrite<p><a href="http://www.playdar.org/">Playdar</a>, an open-source ‘music content resolver service’ that finds music on your local computers or your friends’ computers and streams that music to you, rewrote the code in Erlang. From the original C++ codebase, Richard Jones <a href="http://www.metabrew.com/article/rewriting-playdar-c-to-erlang-massive-savings/">reduced</a> the lines of code by 75%. In other words, it went from 8000 to 2000 lines of code. The code is on <a href="http://github.com/RJ/playdar-core">GitHub</a> and the old <a href="http://github.com/RJ/playdar">source</a> is available if you want to compare the two. The biggest hurdle Richard has yet to overcome is the redistributable binary is about 10MB vs 2.5 MB for the C++ version. Does Erlang have a future in desktop applications outside of CouchDB?</p>http://erlanginside.com/en/id/3802013-09-27T23:22:04+00:002011-03-16T18:31:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Interview with Tino Breddin: the Social Science of Tech CommunitiesTino Breddin, embedded Erlang developer, takes some time to talk with us.<p>Why are communities such as Erlang’s and Ruby’s so different? What makes them approchable or not? Is the US the problem? <strong>Should we forcibly relocate all Ruby developers to Sweden? </strong>Tino talks about these questions and more in this fascinating interview.</p><p>Tino Breddin is a Systems Engineer at Erlang Solutions Ltd where he spends quality time on building scalable, highly-reliable systems for messaging and data storage. When not using Erlang he prefers using Python or Ruby for anything which needs to be automated. Previously Tino worked at the research labs of SAP Labs LLC in Palo Alto and SAP AG in Dresden focusing on massively scalable systems development. We talked over Skype two weeks ago about his experience with Erlang and his talk at the San Francisco Bay Erlang Conference starting next week.<em><br /></em></p><p><strong>Chad (Erlang Inside):</strong> Well thanks for the call… So are you based in Sweden?</p><p><strong>Tino:</strong> No, I’m based in Germany. In fact, I’m the only one.</p><p><strong>Chad:</strong> How long have you worked for Erlang Solutions?</p><p><strong>Tino:</strong> I started one and a half years ago working for Erlang Solutions and before that I worked for SAP, one of the larger German companies, so I used to live in California. I kind of moved from Java to Erlang. In the beginning when I worked at SAP there was a division called SAP research. They were focused on what the company would need in five years in terms of technology or systems. As part of one project which I worked on in California, I was looking at alternative technologies, and before I joined my team lead picked Erlang for our project… I think because he met Francesco [ed - Founder of Erlang Solutions] at some point as the technology fit the research goal of the project, so we started using it in a very niche project at SAP research (nobody else was using it) and we tried to advertise it at the company as well.</p><p><strong>Chad:</strong> How did evangelizing Erlang inside SAP go?</p><p><strong>Tino:</strong> That’s always a challenge, I suppose. I don’t know whether you’ve been in this situation, but it’s similar to trying to get people to use other niche technologies such as Haskell. If you try to advertise such a technology from a tech point of view, most managers will say, “let’s stick to the old stuff which has been proven and we know how it works”. So we quickly realized that it was a dead end to try to advertise the language itself or even OTP, so in the end we just decided to try to advertise the results, which I think were awesome. We made a lot of small prototypes which showed that the technology was superior to what was used before. This was something people could understand, see it in the numbers and metrics.</p><p><strong>Chad:</strong> Tell me a bit more about the research you did and specifics on the projects you were working on?</p><p><strong>Tino:</strong> I was focused on small prototypes around getting messages, evaluating the type of message and routing to some destination or creating new messages. These systems were meant to be very big, scalable, and integrated with other systems, and Erlang was a good fit. I also worked on some data processing with huge amounts of data and that’s also where Erlang came into play.</p><p><strong>Chad:</strong> You said you did quite a bit of Java and Python in the past. How do you feel Erlang compares and contrasts to those languages?</p><p><strong>Tino:</strong> Just as a recap I used Java a lot before I started to work on Erlang fulltime, mainly because it was the language we used at work for various projects. I did and do use Python and Ruby a lot fo anything else – more scripting, deployment scripts, etc. and I think for me personally those two languages have a nice style that fit in really well. I think that Erlang is really good for anything I need to do in terms of backend processing, whether it is some system which is TCP based and needs to route messages or some data processing system; whereas Ruby and Python are in my opinion are really strong in the web front and so if I had to do a web application I would still use one of those languages – Django or Rails.</p><p>For Java, I think it falls into the same kind of category as Erlang. I wouldn’t use it for web front end stuff. It has it’s advantages (or at least the Java Virtual Machine has it’s advantages over Erlang and the BEAM machine in certain respects – though the BEAM has advantages as well), so I think one should really evaluate the use case, and I wouldn’t say Erlang is always the better choice. And that’s also where I think technologies like Erjang will really change the picture of how people think of Erlang as a language.</p><p><strong>Chad:</strong> Yes. Have you used <a href="https://github.com/trifork/erjang/wiki">Erjang</a> at all? Last year at the conference in San Francisco I met Kresten and saw him working on it. It was pretty early but I’m curious if people are using it now.</p><p><strong>Tino:</strong> Well I don’t know of any production use of Erjang but I spoke to one of the core committers to it a few weeks ago – a guy from Germany as well and he said that they are at a stage now where they’re trying to get a really cool use case going or at least show some unique usage of mature Erlang frameworks such as Riak for instance but I don’t think there’s anything in production yet that uses Erjang.</p><p><strong>Chad:</strong> What do you think about <a href="http://github.com/tarcieri/reia">Reia</a> since you have an interest and background in scripting languages?</p><p><strong>Tino:</strong> Well I think that there are two sides of the coin (at least) in my perception. I think it’s cool that people are building things on top of BEAM, which has a different appeal to people in terms of syntax and semantics, but I personally don’t feel attracted to it. I quickly got over the point where the language syntax of Erlang annoyed me; that’s not a problem anymore, so I pretty much stick to Erlang. So I haven’t even tried Reia at this point.</p><p><strong>Chad:</strong> To me the syntax of Erlang is something I actually like about it once you get used to it.</p><p><strong>Tino:</strong> I think you are right, it’s because it’s different. When you think about other languages they’re often very similar. I feel at least that when I switch from one language to the other I always mix certain syntactical aspects. But when you switch from Erlang to Python you won’t mix syntactic aspects because the two are so different. I see that as a strength.</p><p><strong>Chad:</strong> I haven’t met a lot of people that are excited about scripting languages. We have some Erlang developers here and I keep threatening people here that we are going to use Reia on a project, and they’re not happy with me. There is part of me that’s a language evangelist that likes Reia – it’s easier to convince people to use a Ruby-like scripting language that runs on BEAM than it is to get them into Erlang. My sense that there may be people that will find over time that like it better, so it probably just needs some time and attention.</p><p>Let’s talk about your talk. I know you were involved in continuous integration, but what’s your talk on?</p><p><strong>Tino:</strong> I mainly want to talk about the ecosystem around Erlang.</p><p><strong>Chad:</strong> Oh, okay, great.</p><p><strong>Tino:</strong> You are also involved with Ruby right?</p><p><strong>Chad:</strong> Yes.</p><p><strong>Tino:</strong> You can probably understand my reasoning. In my opinion the various communities around Ruby and Python, Erlang and other languages, are very different. That stems from how they evolved and where they came from and where they are going. In my opinion, the Erlang community has really made a big effort and big jump over the last two years, and I just want to explain how that ecosystem has evolved up until now, and where I think it’s headed over the next two years, and how that compares to other communities, and what benefit that brings to the user.</p><p><strong>Chad:</strong> And when you say how that compares to other communities, do you mean from mostly a technology perspective or from a personal and group dynamics per? Or both?</p><p><strong>Tino:</strong> I’m more focused on the group dynamics and what the relationship between contributors and users is and how easy it is to get in touch and kind of be a part of the community. So from a technology point of view I think that the communities are very similar. There might be some different processes in place but overall they’re similar.</p><p>I really want to focus on how people can get into the community. You know when you start using Erlang it might feel like the community is small, you know it only has one community website and one mailing list. But if you dig a little bit deeper, it might look from the outside a bit small, but there is a lot of knowledge and a lot of people involved in it so you can get a lot out of the community if you really want to.</p><p><strong>Chad:</strong> Right.</p><p><strong>Tino:</strong> So I kind of talked a little bit about that at the Erlang Factory Lite in Munich which we do whenever there is some interest. That was a small meeting for 4-5 hours where I talked about the ecosystem and the response was really good. People who were mostly new to Erlang really liked this overview as they instantly saw how the whole dynamic worked and they saw how to get information and how they can actually get in touch with people.</p><p><strong>Chad:</strong> That sounds like a great idea. This is actually a pet topic of mine, so I’m really interested to hear the talk.</p><p><strong>Tino:</strong> Well you’re doing kind of the same thing with your website right?</p><p><strong>Chad:</strong> That’s really the goal. As we’ve gotten bigger with Inaka we haven’t had a lot of time to focus on it and update the website but we hope to change that this year. But my goal has been to evangelise a platform and a language to people that aren’t familiar with it. Which is kind of why often with my questions I do bring up scripting languages and I ask questions that a lot of the more “hard core” Erlang guys are asking “What? Why are you bring that up?” and they’re just uninterested in a more web perspective. Whereas I feel like if you’re talking to the average Ruby or Python developer (perhaps not quite as much but to some extent), you’re going to be talking to people building websites and doing Facebook integrations, etc, and so that’s the commercial reality of software development for a lot of developers, and so I think it’s important to talk about Erlang from this perspective.</p><p><strong>Chad:</strong> So I don’t want to get into too much on your talk but why is it that, for instance with Ruby it’s full of these sort of “rock star” guys with near cult-like followings and Erlang is basically a lot of serious legends but the general feeling is that they’re quite down to earth and very easy to get along with and very open. Do you have a theory on why that is?</p><p><strong>Tino:</strong> I guess everybody has a theory about that but also I think that the people who are attracted to Ruby, at least some of them or a significant part of the community are more opinionated. They do like to go out and shout that Ruby is the best thing that ever happened to software development. And that’s not how Erlang people operate, at least the “legends” you were referring to.</p><p>Part of that might also be the origin of most of the people. Swedes are not the most opinionated or loud people out there so whereas -- not to be offensive -- but people from the US are more open and like to talk (which is not a bad thing)…</p><p><strong>Chad:</strong> Hah right…The Benjamin Franklin style self-promotion.</p><p><strong>Tino:</strong> And that’s the difference…</p><p><strong>Chad:</strong> Yeah but Ruby is Japanese… and frankly Rails was invented by a Dane… so they took root outside the domain of their creators.</p><p><strong>Tino:</strong> That’s true but he [ed - DHH, Rails founder] moved to Chicago and the inventor is very opinionated as well and he kick started the community there. Whereas the community around Erlang started and still is focused around Sweden. So now there are more and more people in the US getting interested in Erlang and you instantly see that there is more and more hype generated as people in the US take it up. They are more open and talk more about their opinions, at least on the web, and you see companies like Basho and the guys around <a href="http://www.manning.com/logan/">OTP in Action</a>. You have the Erlang Cam…</p><p><strong>Chad:</strong> What’s that?</p><p><strong>Tino:</strong> Erlang Camp.</p><p><strong>Chad:</strong> Oh I thought you were referring to some camera that, perhaps, followed Joe Armstrong around or something. Eric and Martin from OTP in Action put Erlang Camp together. Got it.</p><p><strong>Tino:</strong> It feels like when the Ruby community got started and was very open and going out and saying they’re a new technology and then new frameworks came and it now feels like Erlang is moving in the same direction. Which is great because it means that more people are learning the technology and are getting to have a choice.</p><p><strong>Chad:</strong> Yes. That’s really cool. I agree with what you are saying though I think it’s a mystery to some extent why Ruby went the way it did; I have more Ruby developers currently than Erlang here but we are slowly converting them… We often have projects where we use Ruby on the front end or for admin and we use Erlang on the back end.</p><p><strong>Tino:</strong> And I think that’s the perfect use case for the two technologies.</p><p><strong>Chad:</strong> Have you done any of that type of work where you’re mixing those languages or Python?</p><p><strong>Tino:</strong> Oh yeah I’m trying to evangelize this kind of use case and setup all the time.</p><p><strong>Chad:</strong> When you do, how do you tell people that you communicate between them, technically? Do you make Python look like an Erlang node or HTTP or BERT and Ernie?</p><p><strong>Tino:</strong> It really depends on the use case. Generally HTTP though there are times we use the database and have some kind of notification mechanism to tell the Erlang subsystem or backend that something has changed. But most often I stick to HTTP because it’s just so simple and any component can talk HTTP.</p><p><strong>Chad:</strong> Any other questions we should discuss?</p><p><strong>Tino:</strong> Well you asked me one here we didn’t answer – what are some underrated technologies in Erlang? I think there are two kinds of people. #1, the kind who likes to use print statements and when there is a bug try to narrow it down some way or another with them, and #2 the others who try to debug, and that&#39;s where tracer comes in really handy, especially when you’re running a distributed system, because then printing out values just doesn’t make any sense anymore – it just becomes too hard to monitor a distributed system in that respect. So tracer and the dbg module are things which have really bad documentation but should be used more. And I think they’re one of those things where you really need somebody to get you started. You can just sit next to someone and watch how they use it and therefore learn from them. dbg is one of those system tools that is just so well hidden that way too few people use it.</p><p><strong>Chad:</strong> Yeah I used it once and it was useful and then every time I need to use it again I cannot remember how to use it so I have to start over.</p><p><strong>Tino:</strong> The function names are nice abbreviations.</p><p>So the second one is kind of a my colleague Ulf Weiger is one of the more experienced Erlang users I would say…</p><p><strong>Chad:</strong> [Laughs]</p><p><strong>Tino:</strong> And a couple of projects where we were thinking about how to store data, most of the time we end up using Mnesia. But the public perception of <a href="http://erldocs.com/R14B01/mnesia/mnesia.html">Mnesia</a> – it doesn’t have a good reputation, it’s documentation is sub-par and it’s really hard to figure out how it does things because it’s fairly complicated. I usually use the comparison where when you think about a database, when you want to store data you use the database, and it’s a black box. you don’t start digging around in the storage subsystem of mysql, whereas with mnesia its just a component which you use to create a database system. It’s really an embedded component so you have to work hard how to wrap your head around how you would use Mnesia.. and that’s the hard part. So I hope someone will write a book about it and people will see the light and use it to go on and do more cool stuff.</p><p><strong>Chad:</strong> That’s interesting. I’ve had trouble with Mnesia, we’ve used it for a few projects. The problem would be we would have a small database and maybe we would shut the node down poorly and then it would take 25 minutes to boot the server and it wasn’t that much data, and we kind of said to ourselves, if we have that problem with test data, in production where we gather about 1GB of data a day of Twitter data, which frankly isn’t that much... There were just too many warts related to startup time and maintenance. You kind of have to be a db expert to run it, so I’m curious do you feel the same thing or do you often feel like you’re working with people who can deal with the ‘warts’.</p><p><strong>Tino:</strong> No I think you’re right in that you need a little bit more expertise in terms of database systems, and how do you architect your database. We often use it so I have a good feeling about using mnesia but I have the same observation as you do – it’s not always a good fit. Especially when you get started for the first or second time, you need a lot of time to figure out how the little features fit together and shouldn’t be afraid to just dig down into the code because this is for the most part how I learned how mnesia works. And this is just natural because it’s a component which you need to embed and add your code on top of it in order to make it really useful for you. So out of the box it most often doesn’t fit into any system – you have to engineer some layer on top of it to make it do what you need it to do. And to do just exactly that thing we need to step up and create better documentation and a better awareness of the technology and I think Ulf does a good job evangelizing the technology. So hopefully at some point he gets a chance to write a book about it.</p><p><strong>Chad:</strong> That would be a useful book. As the Erlang community grows I think you’re finding that there is now room for specialty books that there wasn’t before. The OTP book is a good example.</p><p>OK that’s really helpful and a good interview.</p><p><strong>Tino:</strong> Well, you said you have some Ruby devs being converted to Erlang devs – that probably already makes you the largest Erlang development shop in South America.</p><p><strong>Chad:</strong> Hah well there used to be about 10 developers at a company here that only did Erlang and for some reason they disbanded. One of those guys is here so we often joke that there are 9 former Erlang samurai warriors wandering the desert of Argentina like “Ronin”, and we must find them. So there are some Erlang guys here, and a lot of shops that are using Erlang. Hopefully we’ll have enough projects to round all of them up.</p><p>Well thanks for the interview – I’m really looking to seeing you in San Francisco in a few weeks!</p><p> </p><p><strong>Follow Tino on twitter at @tolbrino and follow me at @chaddepue. Get an alert when we publish a new story by following @erlang_inside.</strong></p>http://erlanginside.com/en/id/3792013-09-27T23:17:37+00:002011-03-04T18:29:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Interview with Kostis Sagonas: On Erlang Tools, Type Systems, and How HiPE Compares to JIT<p><em>I’m pleased that we have a fascinating interview with Kostis Sagonas – leader of the HiPE team, one of the creators of Dialyzer, and a speaker at the <a href="http://www.erlang-factory.com/conference/SFBay2011/speakers/KostisSagonas">SF Bay Erlang Factory</a>. This is a bit longer than normal but absolutely worth the read. We cover Erlang’s unique type system, Java’s JIT vs Erlang/OTP’s HiPE, tools such as Dialyzer, and why we will have a future post on Language Creators who have never used a debugger in their language. As usual I transcribed a Skype call so feel free to submit errors and I’ll correct them in the original for the next day or so.</em></p><p><strong>EI: Maybe it’s a good place to start to just have you go over a quick background on yourself. I know your history just from looking at your personal website, but anything that you wanted to kind of say, particularly about how you got into Erlang would be really helpful.</strong></p><p>KS: Ok. So, I’m in academia and I’ve been in academia I guess for 20 years now. So when I was an undergraduate student I got fascinated by programming languages and Prolog. It was pretty hot at that time so I chose to do my thesis work, PhD work, on implementing extensions of the <a href="http://en.wikipedia.org/wiki/Warren_abstract_machine">Warren Abstract Machine for Prolog</a>.</p><p><strong>EI: Ok.</strong></p><p>KS<strong>:</strong> So, I was very interested in the implementation of high level languages, the declarative languages. So then I found a position in Sweden as an assistant professor. There was a very exciting project here in the department on, during the high performance Erlang compiler. So, since my interest was in implementing declarative languages and Erlang had a lot of similarities with Prolog I said, “This is for me,” so I led that group.</p><p><strong>EI: What do you like about Erlang? What, what was interesting to you about it, originally?</strong></p><p>KS: It was interesting because it was, it was a language that had potential to succeed in some areas where Prolog did not materialize its full potential. So it was, a very down-to-Earth language, it, even back then had an interesting user base in industry. It was “for real,” so to say.</p><p><strong>EI: Right.</strong></p><p>KS: And well, there was local industry supporting it and we seemed to have an implementation that was the most advanced implementation apparently at the time. The compiler back then wasn’t really mature, but we could with effort become part of the Erlang distribution. I think HiPE has been part of Erlang/OTP since 2001 or 2.</p><p><strong>EI: Did you have a hard time convincing Ericsson, at the time, to add HiPE to, to the language or to the platform, or? What was the response when it was suggested to add it?</strong></p><p>KS: So, I think Ericsson has been very, very positive for what we are doing at Uppsala university from the start. So they have been extremely supportive. On the other hand, I think that they are a bit, I think that the word is ‘conservative’ since they do not have the expertise to, be supporting the compiler they were a bit reluctant to announce it or to announce it as a supported component to their customers. They were extremely happy having it, HiPE the compiler in the distribution as an experimental addition at first, and then as a component that, is on the same status as many other applications that exist in OTP.</p><p>I think that they are still a bit reluctant to say that they’re, that’s supported. Basically because they don’t have the expertise or anybody working at OTP who understands the guts of the compiler.</p><p>The OTP team has been supportive from the start and for the last 3 years now. The HiPE compiler is being used more and more. It’s actually being used every time you use dialyzer for a big set of files. It automatically compiles a lot of key files for dialyzer to native code. There have been a lot of projects that I know that are using HiPE. Especially in France, they seem to be an active community there that is using HiPE all the time. So it’s, it’s I think has come to the point that it’s mature enough to be used in many applications that require the extra speed that HiPE gives them.</p><p><strong>EI: Right. Well, it seems it’s become quite popular just from talking to people in the community. Also I have a few developers at <a href="http://inakanetworks.com/">Inaka</a> (which is my consulting company) and they’ve been quite happy with it in terms of performance. So, I’m curious, when you started HiPE, was this was sort of an academic project, was it sponsored by Ericsson or was there a connection to Ericsson, or was it totally separate research project only?</strong></p><p>KS: So, when I started HiPE was in a bit of a, how do I describe this? So, there were two students at Uppsala University developing HiPE as their master thesis. Then it was a bit left on its own in some sense. Basically because the first, when I came in, the version of HiPE we had was based on JAM [ed- Joe&#39;s Abstract Machine]. This was at exactly the time that JAM was being obsoleted, taken out from the Erlang/OTP distribution, and BEAM was left as the only machine. So it was a time that BEAM started being the default, and probably the only machine back then. So I realized the danger there. We were going to be left a bit behind and so the first thing I did was to actually write the translation from BEAM to HiPE’s intermediate code presentation. It was actually my second program in Erlang I’ve ever written. The first one was – it’s still in the distribution, by the way, the first one – is the BEAM disassembler. It was really, really fun to write that program. It is still in a file (called beam_disasm.erl) under the compiler application</p><p><strong>EI: So most people’s first program is factorial or something. So that’s that’s impressive. (laughs)</strong></p><p>KS: So it was even more impressive because there was no documentation about the BEAM formats<strong>. S</strong>o, I was just guessing what Erlang’s byte codes could possibly be.<strong> I</strong>t was really fun, writing that program. And you can still see my code. I think it&#39;s still pretty good for being my first Erlang program!</p><p><strong>T</strong>he language, that I actually had no—I never read an Erlang book, believe it or not. So, I picked it up from just programming.</p><p><strong>EI: Actually, I don’t know when the first Erlang book came out because the Pragmatic Programmer’s was quite a bit after that.</strong></p><p>KS: Yes, yea, well, it, there had been an Erlang book back then, the first Erlang book, but it was very hard to find, even still back then.<strong> </strong>So, yeah-</p><p><strong>EI: That’s funny. Actually just a couple more questions on HiPE. Did you, so it currently-</strong></p><p>KS: Sorry, sorry, I did not actually answer your original question. So—</p><p><strong>EI: Yes—</strong></p><p>KS: So, actually, we the university and Ericsson were part of the same project, sponsored actually by research foundations back in Sweden, that was in Sweden at that time, called, NUTEK [ed: currently VINNOVA]. NUTEK was a foundation that was giving money to encourage collaboration between academia and industry. So most of the sponsoring of the HiPE system, came from NUTEK. Now there were some matching funds from Ericsson, but I think it was a small percentage in actual money. But Ericsson was actually sponsoring HiPE back then.</p><p><strong>EI: So, that’s helpful, actually. The next question I have is that I’m sort of curious about the design decisions made, with HiPE. I don’t know a lot about compilation to native code from bytecode –</strong></p><p>KS: Don’t worry, just shoot the question and, we’ll correct it.</p><p><strong>EI: Well, I’m curious why you decided to use an intermediate format versus going directly to the native code and could you explain that and the reasons behind it? Because, you already had a virtual machine format so it’s kind of interesting.</strong></p><p>KS: So, we actually use two different formats inside HiPE. There is an intermediate code presentation which is much closer to Erlang and then there is another RTL so-called Register Transfer Language which is quite similar to GCC’s RTL, but not the same. So the, need for the reason for these two representations has to do with the difference in the representation for Erlang terms in the intermediate code format all the terms are just like Erlang terms all the variables contain Erlang terms. In the RTL we use the explicit representation in memory, so they are tagged by use.</p><p>So technically that’s the big difference between these representations. So we start from the BEAM format which we just translate to some representation of our own. Mostly because we want to be doing some optimizations there. Now, BEAM does some of its optimizations while it compiles, and then it does some very heavy optimization when it loads the file.</p><p><strong>EI: Okay.</strong></p><p>KS:<strong> </strong>So you see the BEAM loader it’s actually a Turing complete piece of software there. It does magic when it loads the file.</p><p><strong>EI: Right. And, actually I saw a post by you on the Erlang questions forum where you someone asked you about because I was going to ask you about this – LLVM and is that kind of a future direction and then I saw you wrote a response to someone where you mentioned that the BEAM loader is doing quite a bit of magic and that affects the reasons why you would use a particular format or not. So are there sort of design decisions, with the overall Erlang platform that maybe for historical reasons make the job of the HiPE compiler much more difficult than for instance something like the Java JIT.</strong></p><p>KS: Absolutely. Absolutely. So, there has been so Erlang file use certain properties in writing Erlang programs more than others. So, one of them is this ability to do change the code at any point. This basically means that it’s very difficult to do global optimizations. To do inter-module optimizations. Even across functions it’s pretty difficult to do this sort of thing because you need mechanism also to undo this optimizations if a new version of the module gets loaded which violates the assumption you had before.</p><p><strong>EI: Wow. Okay.</strong></p><p>KS: Okay, so you need this. It doesn’t mean it’s impossible. Just means that it’s very very difficult.</p><p><strong>EI: Right and how much of that is related to the thing that you just said in terms of optimizations is related to the lack of a static type system per se or—</strong></p><p>KS: It’s not so much the lack of the static type system is the ability to then load something which is completely different that what you had before.</p><p>Now, the—of course if we had the perfect type information, a very strict type system, we could take advantage of it. But actually I don’t think even in this case we would be very, very careful because you could always load a new version of the module that violated the assumptions when you made the optimization. So, they value this sort of thing much more than some possible performance improvement that you could get.</p><p><strong>EI: Okay, yeah, that’s very interesting.</strong></p><p>KS: Yes. So, I always thought it was a bit weird to be loading just one module at a time. And one of the things that I many times thought was the ability to declare a set of modules as an application and then do this whole code loading at the application level as opposed to at the just-one-module level.</p><p>And my understanding is that most projects out there actually do it this way. They don’t just update a single module, they update a set of modules. But, in the language, actually, you can just update a single module.</p><p><strong>EI: Okay.</strong></p><p>KS: I think it’s a remnant from the time where machines were slower and it took considerably longer to update a whole set of modules.</p><p><strong>EI: I see, that makes sense. It’s more a historical artifact than it is—</strong></p><p>KS: I think it is more historical artifact. If one designed a new Erlang right now, I think it would make more sense to declare— to have a way of declaring certain things as an application and then loading them all at the same time.</p><p><strong>EI: Right. What else would you change if you were to build New Erlang today? Kind of keeping in mind the similar goals of the immutability and message passing and some of the robustness of Erlang. What would you change with those constraints?</strong></p><p>KS: It’s a very interesting question. So, I think I’m a guy that likes to do small changes at a time, as opposed to doing grand changes to the language. One thing that I would definitely do is I would be more aggressive in taking out certain remnants of the past from Erlang which are ugly; You carry a lot of legacy code and just support weird constructs that were added to the language once-upon-a-time and by now there are better ways of doing these things. For example there is still support for calling tuples of pairs of module name and a function name and calling that sort of thing with some arguments. This is an remnant of the period before Funs existed in the language. It’s still supported.</p><p><strong>EI: I see.</strong></p><p>KS: There are some other examples I can give you where some things that were basically a mistake are still part of the language.</p><p><strong>EI: Interesting. So you would get rid of the module-function-argument syntax and just pass functions, as one example.</strong></p><p>KS: Actually, it’s not the M/F/A syntax. It’s the module-function which you can then use as a Fun. Very few programmers use this. But, it’s still part of the language.</p><p><strong>EI: Right.</strong></p><p>KS: This is just an example, of course, okay? There are other things that are remnants of the past and they they don’t — they’re not removed from the language due to backwards-compatibility arguments.</p><p><strong>EI: Right. Related to that — and I ask this question often of people — what do you think about the record syntax and would you change that? Do you think it’s a problem in the language?</strong></p><p>KS: I haven’t been bothered by the record syntax so much as other people. Basically because I’m using records in a very disciplined way. So, these days whenever I go to use a record for some data structure I try to create a abstract data type, a module, that basically has a, in the Java jargon, getters and setters. And these are the functions that get exported from the ADT module. I even declare these data type as opaque because there is a type syntax for doing that sort of thing. And then I have dialyzer check that I’m not violating the opacity of this term anywhere else. So, records are great if you use them in this way. They are pretty nasty if you try to mix tuples where you explicitly pattern match on the representation, or use element, which is really really bad.</p><p><strong>EI: Right.</strong></p><p>KS: That’s really the problem.</p><p><strong>EI: Very interesting. So, how often do you use parameterized modules, and what do you think about those? And I actually specifically asking because one of my developers asked me, he said “oh you’re going to talk to Kostis, you should ask him about why dialyzer doesn’t support paramaterized modules.”</strong></p><p>KS: Actually, I think this is wrong. Dialyzer supports paramaterized modules. So we have support on this since, oh, two years ago?</p><p><strong>EI: Oh, interesting, ’cause he told me he had some problems recently using it, so I’ll have to ask him—</strong></p><p>KS: Now, it’s conceivable that there are some problems. But, in principle there is support for this.</p><p><strong>EI: Okay.</strong></p><p>KS: Now, there might be some bugs, obviously we have not verified dialyzer, it’s a very complex program to do that sort of thing. But, if there are any issues I think he should just send a bug report. There is support for that sort of thing. Now, I think parameterized modules are an interesting addition. People especially coming from a more object-oriented background, they find them are more familiar to them, the whole idea is more familiar to them. Personally, I’ve not written anything that used paramaterized modules, ever. I didn’t really feel the need for it. But, I think it’s a bit of a chicken and egg problem. As long as there are not that many users the Erlang/OTP Team is not so keen in making this official and as long as it’s not official there’s very little incentive to change all that to understand parameterized modules, which makes them even less popular, and you see that this is a bit of a vicious circle.</p><p><strong>EI: Yes, right.</strong></p><p>KS: But I actually have no strong opinion either in favor or against them.</p><p><strong>EI: I found often Erlang developers are quite opinionated about them and don’t like them, and it’s very interesting. Well, let’s talk really quickly about a couple of HiPE questions and I want to talk a bit about dialyzer a bit more, and then talk about your talk at Erlang Factory and then we will be done. With HiPe I was wondering if you could talk a bit about comparing it to the JVM, to the JIT in the JVM and I don’t know if you saw my question three here about sort of, you know, how it compares with regard to the idea that there are these thousands of man-hours going into the Java HotSpot VM. Do you have any thoughts on that and how HiPE compares and how it fits into the world of bytecode compilers?</strong></p><p>KS: So. At the end of the day the only reason to do native code compilation is to get performance. So, the performance that HiPE gives you is not limited due to the fact that we’ve not spent thousands of man-years to do optimizations. But it’s constrained by certain decisions at the language level.</p><p>It’s also constrained by certain decisions that the HiPE compiler has done. In HiPE you can take a single function and compile only that to native code. Now, obviously there is very little that you can do in these situations since you do not have global information to do global optimizations. So it’s actually this problem that doesn’t give performance that is say, an order of magnitude better than the BEAM compiler. On the other hand I’ve not been impressed with the speed-ups that the JIT or HotSpot Java implementations achieved. My experience is that they typically get between three and four times speed-up over the JVM code. And, it’s about the same speed-up that one gets from HiPE. So, if I have to code a number — now obviously it depends on the application but we get something like two and a half to three and a half times better speed than BEAM and BEAM is actually very well-engineered. So, I don’t think that by going to something like the JVM that you get so much improvement in performance. So yes, it may be many many thousands of man-years there, but I don’t think they were very well spent. I think Erlang/OTP has achieved that with fewer man-years.</p><p><strong>EI: Right. That’s very interesting. So what’s the future for HiPE? Is it kind of done? I know it’s not your focus now.</strong></p><p>KS: The last five years it hasn&#39;t been my main focus. But the things are slightly changing. Perhaps I shouldn’t be announcing this right now, but I do have a project with two students of mine and a colleague to have an LLVM backend for HiPE. The compilation through LLVM. Now, it’s very early in the process to say anything more than that. But, we’ll see what speed-up we get.</p><p><strong>EI: Oh, interesting.</strong></p><p>KS:<strong> </strong>So I hope I will have something more complete to say on this, perhaps in the London Factory. It will be very early to say something about it in San Francisco.</p><p><strong>EI: That’s very interesting. Yeah, I saw in that post that you mentioned you had a few students researching it but then it sounded like they didn’t have time before they had to move on.</strong></p><p>KS: Yeah, but it was also two years ago and LLVM was not so mature back then. So understanding is that currently there is a lot of effort around LLVM. And, we’ll see how this turns out.</p><p><strong>EI: So, let’s talk then quickly about dialyzer. Do you find people reacting negatively because it sort of bolts a type system on top of Erlang, or do you find people like it? What’s the feeling in the community about it?</strong></p><p>KS: I think you should ask somebody else about the feeling of the community but I think…</p><p><strong>EI: (laughs)</strong></p><p>KS: —because I’m obviously biased here. But I think dialyzer is an extremely cool idea. I’m obviously biased, I have to say this, but personally I do not see and disadvantage whatsoever in dialyzer.</p><p>Because, it’s actually not right that it imposes a type system on top of a language. On the contrary, dialyzer can be used without any type annotations whatsoever. So you can use dialyzer with your program as you wrote it, without a single type declaration or a single spec, and it will find bugs in your program just by typing dialyzer and giving it filenames afterwards. So I don’t really see any reason not to use it. Now, if you want to get the most out of dialyzer then you will have to supply some information, but you can supply as much information as you want or feel like. My personal view is that the types are very good for documentation purposes. So, I think there is an advantage in using types for catching some programming errors. What most people don’t realize is that you need a different type system for doing optimizations and for catching programming errors, and Dialyzer has taken the approach of using a type system only to catch programming errors. So the types that you can write are very very relaxed. Actually they are types that you cannot write in any other statically typed language that I know. You cannot say that something has a type of “any” in most other languages. So—</p><p><strong>EI: Hmm, interesting. So it’s different than saying a type like a variant or Objective-C id. It’s essentially saying it can truly be any type.</strong></p><p>KS: Yes, it can truly be any type. Or you can have arbitrary unions. You can mix without using any constructors. You can mix integers and floats. Integers and lists. Anything basically. So—</p><p><strong>EI: That’s a good point. That’s quite different than any other types system I’ve ever used.</strong></p><p>KS: It’s very very different than any other type system out there. And it’s actually something that I’ve not seen—the approach is something that I’ve not seen anywhere else. So it’s fundamentally a different approach than anything that has been tried out there for adding types to a dynamically typed language.</p><p><strong>EI: Can you quickly explain for a non-academic what “success type” is and how that’s different than a normal type in another system?</strong></p><p>KS: So, success typings try to approximate the set of values for which a function will return something; will not throw an exception.</p><p><strong>EI: I see. Okay. That makes sense.</strong></p><p>KS:<strong> </strong>So, they are trying to find—So, in typical type systems—Sorry I’m a bit slow here because I try to seek how to say it without being too technical.</p><p><strong>EI: It’s mainly that I think this is really interesting because there’s not a lot of explanation of this out on the Web, so feel free to kind of say it in more technical terms.</strong></p><p>KS: So the typical type systems want to guarantee type safety. Okay? Which means that they artificially restrict the users of functions in order to guarantee type safety. Now, Erlang is a dynamically typed language, alright, but it’s also a type-safe language. The only thing that can go wrong is that you get an exception during runtime. You are not going to get a segmentation fault because of using a wrong type. Okay? So, success typings try to find all information they can find about when a function will not throw an exception. That’s where the “success” comes from. When it will return, it will succeed in its evaluation.</p><p><strong>EI: Okay. Perfect. Yeah, that’s helpful, and I saw at least a couple references to your paper —you wrote a paper on that, I guess, on success types. [ed - &quot;Practical Type Inference Based on Success Typings&quot;] and it’s on my reading list here. Where do you think dialyzer is headed? Is there any future development happening there?</strong></p><p>KS: Oh, there is a LOT of development happening there. So, we have added some components recently to detect also concurrency errors that might exist. So there is already something in the distribution that detects race conditions you may have in Erlang. And we have another analysis that finds message passing errors, in applications. But one of the nice things about success typings is that you can make them stronger and stronger and stronger in each pass and you will see that dialyzer detects more and more errors as you are using a newer OTP version. We can do that sort of thing because we can improve on the inference, we can make it more fine-grained. So we have already some future additions that detects some really really interesting errors.</p><p>You will see this in I think a year.</p><p><strong>EI: So it sounds like you’re working on things that won’t go into production use for quite a long time?</strong></p><p>KS: One of the reasons for this sort of thing is that we are very conservative; so we want to guarantee that Dialyzer is never wrong; that it does not produce any false positives. So we thoroughly test every release. Also, we would like to, before we announce, before we put something in the OTP distribution, we want to eliminate all errors of that sort that exist in OTP itself. And that takes a bit of time.</p><p><strong>EI: I see. That makes sense. So, some sort of “dog-fooding” the product before it goes out.</strong></p><p>KS: Yes</p><p><strong>EI: That makes sense. So, anything else you want to cover on Dialyzer or HiPE?</strong></p><p>KS: There have been a lot of positive stories about Dialyzer users. I got a very very nice mail quite recently from a guy that I have a lot of respect for his programming ability. He’s working a company – I will not even mention the company. They have been using older OTP version recently and they switched to R14 just a month ago. And, he gave Dialyzer a run on his codebase. His codebase was around 50,000 lines of code and he was very positively surprised about the things that Dialyzer discovered. So, I think there is very little reason not to use Dialyzer these days, because it takes absolutely no effort from the programmer.</p><p>It takes effort to correct the results!</p><p><strong>EI: That’s the thing! When we first ran Dialyzer on our product we were about to release, we found a lot of issues. So, we’ve had a lot of good results with it. Any thoughts on Reia or Effene or Lisp-Flavored-Erlang?</strong></p><p><strong></strong>KS: I haven’t had the time to seriously look into them. I think science is (and this is not my quote but I will use it anyway) I think science — and you can extend that to programming—is like sex. It might have some practical consequences but that’s not the reason why we do it. Okay, so as long as these people have fun in developing these things, I think it’s great. So, they are interesting efforts and I think that the community should look into them. Now, my view is that not all of them will obviously survive, or they will be come so interesting that many people will be using them. But, it’s nice to be having a lot of other developers using Erlang as a target language.</p><p><strong>EI: Right.</strong></p><p><strong></strong>KS: Now, I would have liked to see some communities around these efforts and not being a single man’s project. But I guess people are just busy doing things, not only for fun but for money. The Erlang programming community is, these days, very successful in writing real applications, and they only do things like LISP-flavored Erlang or Reia</p><p><strong>EI: Yes, exactly, it’s a hobby.</strong></p><p>KS:<strong> </strong>It’s a hobby.</p><p><strong>EI: As a final question, I thought it was kind of funny that in last year’s Erlang Factory, Joe Armstrong said he doesn’t, he’s never, used the Erlang debugger. And, it made me think –</strong></p><p>KS: So actually, I’m in the same category. I’ve never used the Erlang debugger. I don’t know how to use the Erlang debugger. I really do not—I’ve never used this. I never felt the need in a language like Erlang, where the exceptions you get are so detailed you use anything but io:format for debugging.</p><p><strong>EI: Interesting.</strong></p><p>KS:<strong> </strong>Some of my students have used the debugger and they say it’s great. I’ve never used it. It’s amazing. So, although I don’t always agree with Joe, we are in the same team there.</p><p><strong>EI: Okay. It feels like I should write an article called, “Erlang legends who have never used the debugger”. Or perhaps a comparison of major languages and whether or not you need to use the debugger to write in them. So, I guess related to that then, is there a tool that you think people should be using, other than Dialyzer, that they aren’t using right now?</strong></p><p>KS: So, that’s exactly what my talk was going to be about.</p><p><strong>EI: Okay! Well, you don’t have to reveal your whole talk but—</strong></p><p>KS: No, I will not reveal my whole talk, definitely not. But I think that the era where one fired up an editor and then wrote a program, used a compiler to compile this program, and wrote some unit tests for this, is long gone. So, one needs more modern tools for development of programs. And a big part of my effort over the last seven or eight years has been to develop such tools. Dialyzer is one of these tools. I’m going to talk about half a dozen tools there, and there are some other tools that are in the pipe-line. Some of them are known to some parts of the community, some other ones will be revealed at the San Francisco Erlang Factory. I will not say more.</p><p><strong>EI: Well that’s a good way to end the interview. I appreciate your taking the time, and I’m hoping to make it to San Francisco, so we’ll see.</strong></p><p>KS: It’s actually going to be my first time in the Erlang Factory San Francisco. I’ve been to the London. And I think it’s great because it’s going to be many more Americans than Europeans there. It’s in Silicon Valley and it will be very nice to see the interest that exists around Erlang in the Silicon Valley community. So I’m really really looking forward to that trip. It so happens that these days I’m doing a lot of traveling, and especially my March schedule is a mess. But, I’m really really looking forward to going and spending as many days as I can in the Erlang Factory and in the University in San Francisco. I think it will be a very great event.</p><p><strong>EI: Well, last year it was amazing so I’m looking forward to it. Well, thanks a lot Kostis.</strong></p><p>KS<strong>:</strong> Okay. Sounds good.</p>http://erlanginside.com/en/id/3782013-09-27T23:12:16+00:002011-02-21T18:28:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Erlang Factory San Francisco BayLast day for the early bird special of $200 off is February 28!<p>I just heard from Erlang Solutions that the last day for <a href="http://www.erlang-factory.com/conference/SFBay2011">early bird special in San Francisco</a> is the 28th. That’s $200 off so if you are thinking of going <del></del>this week would be a good time to book. Still plenty of time for the west coasters!</p>http://erlanginside.com/en/id/3762013-09-27T23:18:26+00:002011-02-12T14:12:00+00:00Site Administratorhttp://erlanginside.com/en/id/1How To Optimize Egitd, Erlang's Git Daemon<p>I remember a GitHuber who I met in Montevideo at the Ruby conference last year (but whose name currently escapes me). He said that their egitd daemon was just too slow for their needs, so he eventually switched away from it. Well, here’s <a href="http://andrew.hijacked.us/article/324/optimizing-egitd-introduction">a gripping series on optimizing egitd</a> by using OTP best practices by Andrew Thompson.</p>http://erlanginside.com/en/id/3742013-09-27T23:19:00+00:002010-12-15T14:09:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Webmachine, ErlyDTL and Riak<p>Oliver Reeves at buffered.io has a <a href="http://buffered.io/2010/09/01/webmachine-erlydtl-and-riak-part-1/">good overview of using webmachine with Riak</a>. It&#39;s the first in a series.</p>http://erlanginside.com/en/id/3732013-09-27T23:24:53+00:002010-12-03T14:08:00+00:00Site Administratorhttp://erlanginside.com/en/id/1SyncPad Rewrites Simple Node.js Server into ErlangSyncpad has an interesting experience building a simple node.js server and then rewriting that server in Erlang<p>Roder over at <a href="http://mysyncpad.com/">SyncPad</a> built his app with node.js and then, due to performance problems, rewrote it in Erlang. He does a good job of not taking any shots at node <a href="http://blog.mysyncpad.com/post/2073441622/node-js-vs-erlang-syncpads-experience">while explaining his experience</a> with each platform. In his own words:</p><blockquote><p>Erlang was also a delight to code. It is a very rich language with lots of features and OTP is a great framework with which to build servers. The SyncPad server acts as messaging server, so Erlang was what fit best. I would encourage you to try your next project in Erlang as well.</p></blockquote>http://erlanginside.com/en/id/3722013-09-27T23:09:10+00:002010-11-23T13:55:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Gen_event: Unlinking Processes When Unsubscribing from a Publisher?<p>As Erlang Inside has been quiet lately we’ll publish a technical question.</p><p>Should gen_event unlink processes when they unsubscribe from a publisher? <a href="https://github.com/elbrujohalcon"> Fernando Benavides</a>, our <a href="http://inakanetworks.com/">Erlang development lead at Inaka Networks</a>, found this issue with gen_event. Is this behavior by design? The output of running this code on R14B is below, and the source is below that:</p><p>The question is should they be linked in the first place? Or should they just be monitored? <del> Either way, the behavior should match the documentation… </del><strong>UPDATE: Robert Virding points out that the documentation does say it links but there’s no matching delete_sup_handler. </strong></p><div>1&gt; event_test:run().</div><div><em>We start a publisher and three subscribers...</em></div><div>Publisher running on &lt;0.33.0&gt;</div><div>sub1 subscriber running on &lt;0.34.0&gt;</div><div>sub2 subscriber running on &lt;0.35.0&gt;</div><div>sub3 subscriber running on &lt;0.36.0&gt;</div><div> </div><div><em>Now you should see three event receptions...</em></div><div>sub3: Event received: {local_time,{{2010,11,23},{11,25,40}}}</div><div>sub2: Event received: {local_time,{{2010,11,23},{11,25,40}}}</div><div>sub1: Event received: {local_time,{{2010,11,23},{11,25,40}}}</div><div> </div><div><em>Now we shut down sub3, so according to the docs ?MODULE:terminate/2 will be called for sub3 with {stop,normal} as argument...</em></div><div>sub3: Terminate: {stop,normal}</div><div>sub2: Info received: {&#39;EXIT&#39;,&lt;0.36.0&gt;,normal}</div><div>sub1: Info received: {&#39;EXIT&#39;,&lt;0.36.0&gt;,normal}</div><div> </div><div><em>What happened? Each other subscriber received an info message? That&#39;s because they&#39;re linked to the publisher since they were added using gen_event:add_sup_handler/3. That&#39;s not on the erlang docs. </em></div><div><em> <br /></em></div><div><em>Now we&#39;ll unsubscribe sub2 without actually stopping it, that should result in sub2 process receiving a gen_event_EXIT message...</em></div><div>sub2: Terminate: {unsubscribed,sub2}</div><div>sub2: Handler removed: normal</div><div> </div><div><em>We would expect the publisher to be unlinked from sub2, so we stop sub2 hoping that nothing happens...</em></div><div>sub1: Info received: {&#39;EXIT&#39;,&lt;0.35.0&gt;,normal}</div><div> </div><div><em>But something actually happened! sub1 received an info message telling him that sub2 exited</em></div><div><em>That means that even when sub2&#39;s handler was deleted, sub2 process is still linked to the publisher.</em></div><div><em> <br /></em></div><div><em>Cleaning up...</em></div><div>sub1: Terminate: stop</div><div>sub1: Handler removed: shutdown</div><div>https://gist.github.com/cbd/711844</div>http://erlanginside.com/en/id/3712013-09-27T23:07:27+00:002010-10-26T13:53:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Mariano Guerra on Efene, an Algol-like Syntax Language that Compiles to Erlang Bytecode<p>InfoQ has an interview with Mariano Guerra, an Argentine from Cordoba. He recently finished university and has been working on <a href="http://www.marianoguerra.com.ar/efene/">Efene, a new language that targets the Erlang VM</a>.</p><p><a href="http://www.infoq.com/interviews/guerra-efene-erlang">Interview is here.</a></p><p>We’ll do an interview soon with Mariano and focus on some of the language constructs.</p>http://erlanginside.com/en/id/3702013-10-01T15:21:39+00:002010-10-07T13:51:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Phoebus: A Distributed System for Processing Very Large GraphsOn Phoebus, an Erlang version of Google’s Pregel<div class="entry"><p><a href="http://github.com/xslogic/phoebus">Phoebus</a> is a system written in Erlang for distributed processing of very large graphs that span billions of vertices and edges. Phoebus is an implementation of the Pregel paper published by Google Research. Phoebus supports a distributed model of computation similar to MapReduce, but more tuned to Graph processing.</p><p>From the <a href="http://googleresearch.blogspot.com/2009/06/large-scale-graph-computing-at-google.html">Google Research Blog</a> post by Grzegorz Malewicz:</p><blockquote><p>Take, for example, geographic locations. A relatively simple analysis of a standard map (a graph!) can provide the shortest route between two cities. But progressively more sophisticated analysis could be applied to richer information such as speed limits, expected traffic jams, roadworks and even weather conditions. In addition to the shortest route, measured as sheer distance, you could learn about the most scenic route, or the most fuel-efficient one, or the one which has the most rest areas. All these options, and more, can all be extracted from the graph and made useful provided you have the right tools and inputs.<em><br /></em></p></blockquote><p>Essentially, Phoebus makes calculating data for each vertice and edge in parallel possible on a cluster of nodes. Makes me wish I had a massively large graph to test it with.</p></div>http://erlanginside.com/en/id/3692013-10-01T15:38:26+00:002010-08-30T13:47:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Russia’s Numerous Contributions to the Erlang CommunityA guest post from Dmitrii Dimandt, creator of erlanger.ru.<div class="entry"><p><em>Erlang Inside is sponsored by <a href="http://inaka.net">Inaka Networks</a>, Erlang consultants combining experience with Telecom to build high performance web applications.</em></p><p><em>This week, Erlang Inside has a guest post from Dmitrii Dimandt, a Russian developer and creator of the site </em><a href="http://erlanger.ru/"><em>erlanger.ru</em></a><em>.</em></p><p>I’d like to talk about the Russian Erlang community and what it’s doing with Erlang. In Russia, the Erlang community is very “English-centric”. Most mailing lists, sites, tutorials, books, podcasts and so on are in English. Because of this, there’s rarely any talk of products developed for non-English speaking communities and countries. It’s not that they don’t exist. They are not widely publicized (being of no interest to non-Russian speakers) or present a competitive advantage that few would like to lose.</p><p>Russia is that legendary country where bears still roam the streets of Moscow and bearded Russian hackers drink gallons of vodka so as not to freeze to death. <strong>This stereotype is hard to beat even today</strong>, so it’s all the more surprising to the outside world to hear about cool things to come out of Russia and its neighboring post-Soviet countries.</p><p>One such project that immediately comes to mind is, of course, <strong>ejabberd</strong>. ejabberd was created by Alexey Shchepin from the Ukraine and is now so ubiquitous that it’s almost boring to write about it. You can read an interview with Alexey over at <a href="http://blogs.openaether.org/?p=59">http://blogs.openaether.org/?p=59</a> for more insight into the history of this project.</p><p>Other projects may not be as known or as popular, but they do exist:</p><p><a href="http://moodbox.com/">MoodBox</a> (or in Russian here, <a href="http://risovaska.ru/">http://risovaska.ru/</a>) is an instant messenger which allows you to draw and share your creations realtime, online with your friends. Several people can work on the same picture at once.</p><p>MoodBox uses Qt for its client application and Erlang running on top of several Amazon EC2 instances for its server part. You can explore MoodBox’s channels at <a href="http://moodbox.com/channels">http://moodbox.com/channels</a> and user created works at <a href="http://moodbox.com/moodstrips">http://moodbox.com/moodstrips.</a></p><p>While MoodBox is a relatively unknown project, there’s another user-oriented project which many have already seen in action and used, perhaps, on a daily basis: <strong>JS-Kit, </strong>which has been recently renamed to <a href="http://aboutecho.com/">Echo</a>. Echo is a real-time embeddable commenting system that can be integrated into any website. Its feature list is <a href="http://wiki.js-kit.com/Feature-List">impressive</a>, and today Echo is one of the largest commenting systems on the web, powering comments for Washington Post, Forbes, cnet, Technorati and many, many others.</p><p>Although they don’t talk much about the technical side of things, it’s known that Echo is powered on the server side by Erlang (for content aggregation and distribution) and OCaml (for number crunching). Some of their tools have been open-sourced at <a href="http://github.com/EchoTeam">http://github.com/EchoTeam</a></p><p>Echo Team’s co-founder, Lev Walkin, is available on Twitter at <a href="http://twitter.com/levwalkin">http://twitter.com/levwalkin</a> and is worth following as he sometimes posts interesting things about technology (see, for example, his posts on ”<a href="http://lionet.livejournal.com/42016.html">Erlang, Yaws and the deadly Tornado</a>” post and “<a href="http://lionet.livejournal.com/53656.html">Riak vs Voldemort</a>“).</p><p>While MoodBox and Echo are very user-oriented, there’s one project that is targeted specifically at developers. Max Lapshin revived the stagnating <a href="http://erlyvideo.org/">erlyvideo codebase</a> and made marvelous things with it.</p><p>Right now erlyvideo has reached version 2.0 and supports a lot of things like RTMP, MPEG-TS, iPhone Live Streaming, RTSP/RTP and more. erlyvideo is dual-licensed under GPL v3 and a commercial license. Maxim Treskin is also available on Twitter at <a href="http://twitter.com/evilmartians">http://twitter.com/evilmartians</a> (mostly in Russian).</p><p>Other projects that use Erlang are not openly available or publicized. A Russian company used Haskell and Erlang for <a href="http://mskhug.ru/attachment/wiki/MskHUG1_1/hhm.pdf?format=raw">prototyping new processor chips</a> (PDF, in Russian); a distributed system for municipal services was developed using Erlang for server-side and dynamic GUI generation and Tcl/Tk for the GUI itself, though details on where Erlang is being used are rare.</p><p>However there is significant interest in Erlang at various programming conferences, both big and small, from <a href="http://www.highload.ru/">Highload++</a> (a conference on scalability and high load systems, featuring high profile speakers) to <a href="http://margincon.ru/">MarginCon</a> (a new conference on “esoteric and marginalized languages” in Omsk).</p><p>All in all, the Russian Erlang community is alive and kicking. Those brave enough can join us at <a href="http://erlanger.ru/">http://erlanger.ru/</a> and <a href="http://groups.google.com/group/erlang-russian/">http://groups.google.com/group/erlang-russian/.</a></p><p><em>Thanks Dmitrii!</em></p><div><strong> </strong></div></div>http://erlanginside.com/en/id/3682013-10-01T15:19:42+00:002010-08-06T13:46:00+00:00Site Administratorhttp://erlanginside.com/en/id/1ErlangCamp Chicago 2010Details for ErlangCamp this October 23 - 24<p>This event is incredibly cheap at $100.00 USD for two days of Erlang/OTP sessions in Chicago. <a href="http://erlangcamp.com/">Check it out!</a></p>http://erlanginside.com/en/id/3672013-10-01T15:23:09+00:002010-07-22T13:44:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Interview with Steve Vinoski: Erlang and RESTSteve Vinoski gives an interview at Erlang Factory<p>There are people who you meet and you say to yourself, “How can this guy be so good at so many things?” Steve Vinoski is one of those people. He has a wonderful interview, recorded at Erlang Factory, where he discusses the key concepts of RPC frameworks such as CORBA, and how that compares to REST, and how Erlang fits into both worlds. You can find the <a href="http://www.infoq.com/interviews/steve-vinoski-erlang-rest">interview here</a>. Steve is the author and maintainer of <a href="http://yaws.hyber.org/">Yaws</a>, the Erlang web server that makes Apache cry like a baby.</p>http://erlanginside.com/en/id/3662013-10-01T15:18:58+00:002010-07-08T13:42:00+00:00Site Administratorhttp://erlanginside.com/en/id/1PostgreSQL Erlang Client Library EpgsqlEpgsql supports asynchronous messages from LISTEN/NOTIFY events<p>If you use PostgreSQL with Erlang, you’re probably already familiar with the epgsql client library.</p><p>Something that slipped my attention was the addition of <a href="http://www.postgresql.org/docs/8.1/static/sql-notify.html">LISTEN/NOTIFY</a> support for the <a href="http://github.com/wg/epgsql">Erlang PostgreSQL driver, epgsql</a>. This is an incredibly interesting feature that allows you to wake up any client that has executed a LISTEN ; command. Other clients can then notify connected clients this way. Erlang process semantics suit this type of notification – epgsql just sends all NOTIFY events to a listening process.</p><blockquote><p>Asynchronous Messages</p><p>PostgreSQL may deliver two types of asynchronous message: “notices” in response<br />to notice and warning messages generated by the server, and “notifications” which<br />are generated by the LISTEN/NOTIFY mechanism.</p><p>Passing the {async, Pid} option to pgsql:connect will result in these async<br />messages being sent to the specified process, otherwise they will be dropped.</p></blockquote><p>I’m curious if there are people using this functionality out there. Zotonic, maybe?</p>http://erlanginside.com/en/id/3652013-10-01T15:33:45+00:002010-07-05T13:28:00+00:00Site Administratorhttp://erlanginside.com/en/id/1New Erlang Job BoardLooking for a job using Erlang? Look no further!<p>Marc Worrell over at Zotonic says:</p><blockquote><p>“We are looking for an Erlang programmer and found that it is quite difficult to find someone. We also found that the available positions are spread out over many websites. Which makes it hard to find interesting positions for those that are looking for Erlang work.”</p></blockquote><p>So Marc put together <a href="http://totally-erlang.com/" target="_blank">http://totally-erlang.com/</a> to quickly (and freely) publish any Erlang positions. If you know of positions, pass them on!</p>http://erlanginside.com/en/id/3642013-09-27T22:48:08+00:002010-06-29T13:27:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Erldocs.com Updates: R14A Support, Mochiweb, Available for Your Own Projects<div class="entry"><p>Dale Harvey just recently updated <a href="http://erldocs.com/">erldocs.com</a> with R14A support. If you are doing any Erlang development, or even looking to just learn a bit about Erlang, I highly recommend using erldocs over the official documentation. The ease of use just makes looking up a module, function, or argument so much easier. And the search is real-time so you can basically use it as a discovery tool. For instance, did you know Erlang has an <a href="http://erldocs.com/R14Aextra/ic/ic.html">IDL compiler</a>? Or a<a href="http://erldocs.com/R14Aextra/inets/tftp.html?i=0&amp;search=tftp">tftp server</a>? What’s your favorite heretofore unknown Erlang standard library ‘gem’?</p><p>Additionally, <a href="http://github.com/daleharvey/erldocs.com">http://github.com/daleharvey/erldocs.com</a> has instructions for how to use with your own libraries and now includes support for Mochiweb.</p></div>http://erlanginside.com/en/id/3632013-10-01T15:37:43+00:002010-06-24T13:26:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Spanish Language Erlang List<p>If you’re looking for a Spanish language group to discuss Erlang, Mariano Guerra recently started “<a href="http://www.erlang-ar.com.ar/">ErlAr</a>“, a mailing list for all things Erlang, but in Castellano.</p><p>Mariano is the author of <a href="http://marianoguerra.com.ar/efene/">Efene</a>, a Javascript-syntax language that compiles to Erlang bytecode. I’m planning an interview with Mariano on Efene soon.</p><p>There is a small but growing group of Erlangers in Latin America; here’s hoping they continue to grow, but if you speak Spanish, or know someone who does, please join or pass along the invite.</p>http://erlanginside.com/en/id/3622013-10-01T15:39:29+00:002010-04-13T13:25:00+00:00Site Administratorhttp://erlanginside.com/en/id/1RabbitMQ acquired by SpringSource/VMWare<p>Erlang-based RabbitMQ was <a href="http://www.springsource.com/newsevents/springsource-acquires-rabbitmq-cloud-messaging">acquired</a> today by SpringSource, which is owned by VMWare. Congrats to Alexis and the team. As SpringSource provides commercial support for ActiveMQ it’s obviously a perfect fit, and it gives commercial players who want to try out Erlang no excuses with regard to support. RabbitMQ was already faster (from my experience), so there were no other excuses left.</p><p>There are a number of ways VMWare could use Rabbit on the server side, so it’s a good fit there as well.</p><p>Additionally, Redis is at VMWare, and it’s interesting that two of the ‘hottest’ queueing/caching infrastructure technologies are now in the same “home”, or at least neighbors. Redis has been adding a number of pub/sub features in the latest release and has the freedom to not be bound to silly working-group hydras like the AMQP spec. Perhaps RabbitMQ will be able to broaden the offering because they’re inside a bigger entity and not as defined as simply an AMQP provider.</p>http://erlanginside.com/en/id/3612013-10-01T15:36:30+00:002010-03-21T13:15:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Simple Chart of Embeddable Scripting Options In Erlang<p>In preparation for my upcoming talk this week at Erlang Factory San Francisco, focused on Lua integration in Erlang, I’m reviewing Lua, Javascript, and Reia, and I came up with <a href="http://erlanginside.com.s3.amazonaws.com/Erlang_Embedded_Scripting_Options.pdf">this very simple decision tree</a>.</p><p>Please send any thoughts, or additional languages I should cover. I left out languages that aren’t truly ‘embeddable’, though technically you can access anything via a Port, or BERT-RPC, Protocol Buffers, HTTP, sockets, etc. I wanted to capture the projects that are genuine alternatives to Lua, which is the focus of my talk.</p><p>For Lua, there are two projects – erl-lua and erlua. The first, erl-lua is a linked-in driver, originally by Ray Morgan, updated by Darrik Mazey, <a href="http://github.com/darrikmazey/erl-lua">available on GitHub</a>. erlua is <a href="http://gitorious.org/erlua">available on gitorious</a>, and is an Erlang Port. <a href="http://www.basho.com/developers.html">erlang_js</a> is written by Kevin Smith of Basho. <a href="http://wiki.reia-lang.org/wiki/Reia_Programming_Language">Reia</a> is well known to Erlang Inside readers.</p><p>Looking forward to the conference this week!</p>http://erlanginside.com/en/id/3602013-10-01T15:33:09+00:002010-03-09T13:13:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Interview with Marc Worrell: Zotonic Rethinks the CMS with Erlang<p>I took a minute from getting ready for my talk at <a href="http://erlanginside.com:8181/wordpress/www.erlang-factory.com/conference/SFBay2010">Erlang Factory</a> (and working on the day job) to talk with <a href="http://zotonic.com/zotonic-team">Marc Worrell</a>, Lead Architect of <a href="http://zotonic.com/">Zotonic</a> – a new Content Management System written entirely in Erlang. This is a brief overview of the system focused on the ‘why’ – the technical details are well covered on their site, but I wanted to understand the motivations behind a company taking on a project like this. Marc also runs his own programming consultancy, <a href="http://whatwebwhat.com/">WhatWebWhat</a>.</p><p>I’m excited to experiment with Zotonic, but I frankly don’t have a downloaded copy of Postgres lying around. I’m planning on getting that installed in order to try it out and will report back.</p><p>Here is the interview, as usual, emphasis mine.</p><p><strong>EI: Hi Marc, can you tell me the impetus for Zotonic?</strong></p><p>MW: I used to be the CTO at Mediamatic. Mediamatic built and maintains the community management system Anymeta. Anymeta grew from a simple library to a full fledged community management system. For that we added more and more interactivity and connectivity. Which brought us in a head-on collision with PHP.</p><p>PHP is far from stellar in handling many small requests, can’t keep connections open and gets really slow when your codebase grows. Though we need open connections to user agents, XMPP connectivity and quick turnaround on Ajax requests. All are challenging for PHP. So we ended up adding more and more system services to make PHP perform and have the system support our requirements.</p><p>Growing a site with PHP starts with opcode caches, memcached, a modified memcached with dependency checking, extra servers and then more servers. Finally adding XMPP server and client processes written in Python. A whole lot of extra software.</p><p>And then we were still rewriting PHP tables into code so that it performed better on application load.</p><p>Frustration, especially considering my background with building embedded development platforms. Embedded systems and the programming language C show what you can do with the available CPU power.</p><p>After I left Mediamatic I started ask myself how to do this better, how to support those multi-core cpus, how to use those gigabytes of memory and how to have all the connectivity a modern website (information hub) needs.</p><p><em>I checked out Ruby on Rails, I checked Django and some other frameworks. They promise a lot. They fall short when you benchmark their efficiency on modern cpus and server systems.</em></p><p>That is when I rediscovered Erlang. The book from Joe really brought me to the realisation that Erlang could solve most, if not all, the problems I was encountering. And his approach to failure was nothing short of a revelation to me.</p><p>This lay the seed for Zotonic, as there was nothing else.</p><p><strong>EI: The Zotonic team seems to have a lot of experience, what brought you together, and what do you do now? Is Zotonic your full-time venture or are you doing something else?</strong></p><p>MW:<strong> </strong>We all know each other from Mediamatic. Tim and Arjan still work for Mediamatic, Peet is a former colleague and now works for Mirabeau. I am currently a freelancer. Zotonic is my tool to deliver great looking web sites that perform well. You could say that it is my full time occupation. Tim and Arjan are part time working on Zotonic.</p><p>We get more and more project requests, so we are happy that we did make the right decision to start Zotonic and make it Open Source as well.</p><p><strong>EI: Why Erlang? How does it make a CMS easier if most will be non-distributed/one-box systems, and Erlang isn’t known for Raw I/O performance? How are you taking advantage of Erlang’s sweet-spot of easy distributed message passing?</strong></p><p>MW: We are now using Erlang’s excellent failure handling and multiprocessing capabilities. I think that the failure handling and with it the possibility to make robust systems is one of the often overlooked features of Erlang, when not the most important.</p><p>We don’t use the distributed nature of Erlang, yet. But that might change quite soon.</p><p>That text processing is essential for web apps is a misconception. Most web apps only parse requests, fetch some data, concatenate a whole lot of text chunks and then output them over a socket back to the user agent. You don’t need text processing for that. In fact on low end machines Erlang is quite capable of saturating a gigabit connection. Informal benchmarks gave more than 6000 page requests per second (famous helloworld templates) on a low end server. That should be enough.</p><p>To achieve this performance we made some rather big changes to Webmachine. Basho will be looking into incorporating those changes into the mainstream Webmachine code.</p><p>And programming in a functional language is fun <img class="wp-smiley" src="http://erlanginside.com:8181/wordpress/wp-includes/images/smilies/icon_smile.gif" alt=":-)" /></p><p><strong>EI: NoSQL support? is it important for a CMS? Are there plans to support Riak or Couch or MongoDB?</strong></p><p>MW: NoSQL is really the story of the day. A lot of people see it as a means to an end. Some think you need it for performance. That is not true. An external party did some benchmarking on Zotonic and expected the database to be the main bottle neck. It was not, by far.</p><p>As I often say, the best way to achieve high performance is to not hit the database. Add some caching and the current RDBMS products can bring you a long way, especially on modern hardware. When you don’t need millions of objects and 99.99% uptime guarantees then I suggest that you just use a RDBMS. Your data will be safe and the administrators of your customer will be happy that they can access the data easily.</p><p>Having said that, we are looking into Riak and some other distributed stores. We have some projects at hand that require a scale and uptime that will make us move to a distributed system with elegant failure handling. Only with these requirements a distributed store becomes important.</p><p><strong>EI: How do you guys use Zotonic yourselves? From an end-user perspective, how does it differ from WordPress or Drupal?</strong></p><p>MW:<strong> </strong><em>A first impression is important. And the first impression of Zotonic is its speed</em>. I had people asking things like “stop… did I really see five pages just now?” They are used to the slowness of WordPress and Drupal, at least when not using Google, Yahoo or one of the other big sites.</p><p>Over time there will be another big difference: realtime. We are in the process of adding more and more realtime features. They enable realtime communicationa and federation of data. It doesn’t matter where your data (profile, blog etc.) is, it matters that it is up to date and can be published where you want it.</p><p>For ourselves, we are moving all our sites, blogs, and whatnot to Zotonic. It is more fun in Zotonic and we are eager to use the PubSub capabilities Arjan just added.</p><p><strong>EI: From the IT-guy perspective, why should he roll out Zotonic?</strong></p><p>MW: You need less hardware for more visitors. Let’s give an example.</p><p><em>We made the site for the New Island Festival, a cultural festival in New York. At some point we were seeing sustained traffic of 2 mbit. What made that traffic impressive was that the site was hosted on a small VPS and only using 5-10% cpu.</em> We have seen other requirements for PHP sites <img class="wp-smiley" src="http://erlanginside.com:8181/wordpress/wp-includes/images/smilies/icon_smile.gif" alt=":)" /></p><p><strong>EI: What are the largest deployments so far?</strong></p><p>MW: The New Island Festival was a nice test bed for the number of visitors. A bit bigger, content-wise, site we just finished is the site for the Mediafonds in the Netherlands. This site has around 25000 pages.</p><p>We are now working on a project with a projected page count of around a million and later we will have a project that requires a ten fold higher page count.</p><p><strong>EI: Roadmap – what are your plans for the future of Zotonic?</strong></p><p>MW: We have now scheduled or are planning:<br />- redesign of the admin environment.<br />- redesign of the access permission system to better support user generated content.<br />- extended support of XMPP PubSub, also sharing images and other metadata.<br />- realtime tools for server monitoring.<br />- support for distributed Zotonic nodes (still with a central store).<br />- support for a distributed, fault tolerant data and file store.</p><p>And many smaller changes that will make the system better for building the websites our customers and programmers love.</p><p><strong>EI: MySQL Support? Is it planned?</strong></p><p>MW: No, we don’t plan MySQL support. Though it should be do-able with the new binary driver. Right now we are focusing on the distributed version with a k/v store.</p><p><strong>Thanks, Marc!</strong></p><p><strong>Edit: Only July 21, I took out ‘destroys WordPress’ from the title; upon reflection, I realized my Erlang zeal got the better of me..</strong></p>http://erlanginside.com/en/id/3752013-09-27T23:27:09+00:002010-02-09T14:11:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Erlang Factory San Francisco BayDetails for Erlang Factory San Francisco this March 21 - 25<p><a href="http://www.erlang-factory.com/conference/SFBay2011">Erlang Factory is back in the US</a> with new speakers and a three-day course from <a href="http://learnyousomeerlang.com/">Learn You Some Erlang’s</a> Fred Trottier-H&#39;bert.</p><p><strong>UPDATE: There are more speakers than last year, including some from Basho, AT&amp;T, CouchBase, and Ericsson, among others. Early bird rate is over February 28. That is also the deadline to book the hotel at the conference rate.</strong></p>http://erlanginside.com/en/id/3592013-09-27T22:50:26+00:002010-01-30T13:09:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Interview with Francesco Cesarini: Conference and Old-School vs New-School Erlangers<p>The <a href="http://www.erlang-factory.com/">Erlang Factory’s</a> 2010 <a href="http://www.erlang-factory.com/conference/SFBay2010">conference</a> is <strong>March 25 - 26 </strong>in <strong>San Francisco</strong>, with the university three days before, starting<strong> March 22</strong> The conference is at the Hilton San Francisco Airport with three tracks, each on a different theme. The number of tracks gives attendees an unusually broad set of choices for talks. When attending conferences I use the times when one or both talks are uninteresting to check email and generally hang out with people. Occasionally there are two talks I want to see at once so I’ll pick one and then duck out to catch the end of the other, like with <strong>Joe Armstrong</strong> and <strong>Nick Gerakine’s</strong> simultaneous talks on Day 2, for example. However, in this case there will at times be three interesting subjects running concurrently, which is only appropriate for a conference on Erlang.</p><div><strong>The conference is USD $500 until TOMORROW January 31, then the price goes up to USD $700.</strong></div><div><strong> </strong></div><div>(If you can’t make it to the Bay Area, the <a href="http://www.erlang-factory.com/conference/London2010">Erlang Factory London</a> is <strong>June 10 - 11</strong> with the university the three days before.)</div><div>We’re going to be doing a series of posts on the event with interviews with the keynote speakers, starting with conference organizer <strong>Francesco Cesarini</strong>, founder of <a href="http://www.erlang-solutions.com/">Erlang Solutions Ltd</a>. Both conferences and universities were smashing successes last year so I expect that they will be well attended and worth the price of admission. I’m personally making it back to the states as well to go for the first time.</div><div><img class="alignleft" title="Francesco Caesarini" src="http://www.erlang-factory.com/upload/peopleimage/London2009_francescocesarini/francescocesarini-small.jpg" alt="" width="120" height="140" /></div><div><strong>Erlang Inside: How many attendees will be at the SF Bay Event?</strong></div><blockquote>Francesco Cesarini: Erlang Factory is becoming a very popular event. We are expecting an increase in participants, somewhere between 150 – 200 delegates. We have seen a growing trend, irrespective of the state of the economy.</blockquote><div><strong>EI: What is the experience level of the average developer?</strong></div><p>FC: It varies. Last year, we had students who never used Erlang in a commercial project but were interested in learning more. They were interacting with people who have been working with Erlang full time for 15 years. Even with this huge gap, you did not notice any divide. That’s the beauty of our conferences; Erlang enthusiasts from architects to newbies have an opportunity to exchange knowledge, ideas, experience and have a great time together. Of those attending, about 50% came from the west coast, 17% from the east coast, 15% from the Midwest and 18% from the rest of the world, mainly Europe, but also from Canada, Central and South America.</p><div><strong>EI: What percentage of people go to the university and the conference?</strong></div><p>FC: About 20% attend the Erlang University. The value of attending the courses in this way is that they are condensed versions of the 5-day courses and allow delegates to attend the training as well as the conference. Furthermore, having the training together with the conference provides the opportunity to discussions and networking, multiplying the value many times. New for this year is a course by <a href="http://www.basho.com/">Basho Technologies</a>‘ very own <strong>Kevin Smith</strong> on <em>Web Development in Erlang</em>. This course will run alongside the <em>OTP Express</em> course, taught by Erlang Solutions’ training manager Henry Nystrom; <em>Erlang Express</em>, taught by <em>Erlang Programming</em> O’Reilly author <strong>Simon Thompson;</strong> and <em>Quick Check Express</em>, taught by <strong>Professor John Hughes </strong>and<strong> Professor Thomas Arts</strong>.</p><div><strong>EI: How has the attendance and the demographic of the group changed in the past few years? Last year people talked about ‘old school’ and ’new school’ Erlang crowds. Do you see this as a genuine dichotomy and if so what does it mean for the community?</strong></div><p>FC: It felt very strange being referred to the Old Guard last year. But during the first day of the conference, I heard newcomers comment on how approachable and friendly everyone was. As one of the speakers put it, the Erlang community seems to lack Prima Donnas….which is an advantage. Gone are the days when you knew everyone on the erlang-questions mailing list personally, but the community still feels small and welcoming. Where else do you see inventors of the language helping newbies on mailing lists? Those who have been around a while get excited at all the new projects and companies adopting Erlang, and will help out to ensure it happens. This is what we have all collectively been working for, and seeing presentations from Facebook, E*Trade, Yahoo! or SAP (to mention but a few of the success stories) makes us all very proud.</p><div><strong>EI: Do you see a shift from Europe toward North America? Or Asia?</strong></div><p>FC: The community seems to be growing the fastest in North America, Eastern Europe and China, but have no hard facts to back this up other than tweets, blog posts and websites. In 2004, it was easy to derive by examining the email addresses of the erlang-questions mailing list subscribers. Today, the majority of subscribers seems to be using a gmail account. We are aggregating concrete data from Erlang related websites, book sales and other sources which we hope to present in San Francisco.</p><div><strong>EI: In training classes, do you see the push for Erlang coming from inside larger corporations, startups, consultants? Or is it more driven by technical needs – multicore, distributed systems, etc.?</strong></div><p>FC: It is very varied. In the US, we have a lot of private individuals attending the training courses and the conferences. In Europe, it is mainly companies; everything from one man band consultancies and small start-ups to multinational corporations. This difference is cultural, where the responsibility is moved from the employee to the employer. These companies, in turn, are using Erlang to solve problems related to distribution, concurrency, reliability and scaling on multicore. Five to ten years ago, Erlang was primarily used within Telecoms. Today, you will find it in finance, banking, messaging, web development, as well as in cloud computing backbones. Another emerging area covers test automation and property based testing.</p><div><strong>EI: What can the average developer who is not using Erlang expect to get out of the conference and university?</strong></div><p>FC: The Erlang Factory is a conference not only for Erlang Developers but also for non technical people, including managers, testers and system architects. We advocate the right tool for the right job, so expect to meet Ruby and Haskell enthusiasts alongside Java and Python developers, all there to learn more. If you are thinking of introducing Erlang in your organization or just want to learn more about it, this is the event to be. This is the major difference with the User Conferences, which are primarily aimed at developers.</p><div><strong>EI: What about the Erlang developer using it on a daily basis?</strong></div><div>FC: Those using Erlang on a daily basis will be able to get the latest news directly from the horses’ mouth, meeting members of the community they have previously only met in ascii format. With the ratio of four delegates to every speaker, the Erlang factory gives everyone the opportunity to network, provide feedback on tools and libraries, and discuss ideas, projects and solutions. Many have even found new jobs this way.</div><div><strong>EI: Any other thoughts on the conference in SF or London for people thinking about going?</strong></div><p>FC: Don’t hesitate to try it out one year and we promise you will come back for more, maybe not only as a delegate, but also as a Speaker. With <strong>Joe Armstrong</strong> and <strong>Steve Vinoski</strong> in San Francisco, and <strong>Robert Virding</strong> and <strong>Martin Odersky</strong> in London being just some of the 35+ speakers at each event who have confirmed, the Erlang Factory has now become the largest Erlang conference around. We are also working hard to reduce costs so as to enable more people to attend. This is something which in San Francisco has been reflected not only in reduced Early Bird rates, but also in the conference hotel room rate, which we managed to negotiate down by $70 per night compared to last year.</p><p><strong>Thanks, Francesco! Remember tomorrow is the last day to get signed up for $500. Hope to see you there!</strong><em><br /></em></p>http://erlanginside.com/en/id/3582013-10-01T15:41:02+00:002009-12-30T13:08:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Mustache: GitHub’s Framework Agnostic Templating Ported to Erlang<p><a href="http://github.com/mojombo/mustache.erl">Mustache</a> is an <strong>Erlang port of the Ruby framework of the <a href="http://github.com/defunkt/mustache">same name</a></strong>, originally written by <a href="http://defunkt.github.com/">Chris Wanstrath</a>, one of the founders of <strong>GitHub</strong>. A powerful feature of this type of framework is the ability to write a ‘template’ that you could use in a Rails application and then reuse in an Erlang application with no changes to that file. The ‘view’ (which in MVC terms is more like the ‘controller’) would have to be re-written, but this would greatly simplify the work of porting an application, OR simply running a part of application in a different framework for performance reasons.</p><p><strong>Chris calls Mustache “a replacement for your views.”</strong> Instead of views consisting of ERB or HAML with random helpers and arbitrary logic, your views are broken into two parts: a Ruby class (or Erlang module) and an HTML template.</p><p>They call the Ruby/Erlang part the “view” and the HTML template the “template.”</p><p>All your logic, decisions, and code is contained in your view. All your markup is contained in your template. The template does nothing but reference methods in your view.</p><p>This strict separation makes it easier to write clean templates, easier to test your views, and more fun to work on your app’s front end.</p><p>Check it out!</p>http://erlanginside.com/en/id/3572013-10-01T15:25:50+00:002009-12-28T13:02:00+00:00Site Administratorhttp://erlanginside.com/en/id/1The State of Erlang Web Middleware: EWGI and SimpleBridge<p>In the interest of publishing more often and covering smaller topics, let&#39;s review web-server-agnostic middleware for Erlang.</p><p>The current standard for Erlang web application middleware is <a href="http://github.com/skarab/ewgi">EWGI</a>, inspired by Python’s <a href="http://www.python.org/dev/peps/pep-0333/">PEP 333</a> and providing similar functionality as Ruby’s <a href="http://rack.rubyforge.org/">Rack</a>. All major Erlang web servers support EWGI and most web frameworks. </p><p>Created by Rusty Klophaus, <a href="http://github.com/rklophaus/SimpleBridge">SimpleBridge</a> “takes the pain out of coding to multiple Erlang web servers by creating a standardized interface.” It is used by the soon to be released new version of <a href="http://nitrogenproject.com/">The Nitrogen Web Framework</a>. According to Rusty, SimpleBridge has some improvements over <a href="http://github.com/skarab/ewgi">EWGI</a>, such as a smaller code base; its easy extendability (takes about 150 lines to add support for a new HTTP server, vs. ~350 for EWGI); support for multipart file uploads with size limits and handle-able errors; static file support; more specific interface functions for getting and setting cookies.</p><p>However, based on my experience with <a href="http://rack.rubyforge.org/">Rack</a>, I&#39;d say that multipart file uploads, static file support, and anything but basic cookie manipulation are all best handled by a web server such as nginx or a reverse proxy like HAProxy anyway. Perhaps it is better that EWGI tries to do less in this case…</p><p>Let’s look at a simple EWGI example with Mochiweb (shamelessly pulled from the docs):</p><p>First we startup mochiweb calling the loop/1 function. Mochiweb will call our loop/1 function whenever a request is received. In loop/1 we setup a call to our simple implementation of the EWGI interface. </p><p>Now the EWGI implementation is called with a tuple that always starts with ewgi_context, and contains a Request and a Response. This code returns a 5-tuple response (further details in the <a href="http://github.com/skarab/ewgi/blob/master/doc/SPEC.rst">documentation</a>). </p><p>EWGI solves the problem of creating a standard interface to middleware components. It has become the standard, <em>and the power of such standards lies in their implementations’ ubiquity</em>. Making your own hit web framework at home in your spare time has never been easier.</p>http://erlanginside.com/en/id/3562013-10-01T15:40:10+00:002009-11-15T13:00:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Go Borrows Key Concepts from Erlang<p>The Go language -- which has been getting a lot of attention when it was recently <a href="http://golang.org/">open sourced</a> by Google -- seems to be a sort of programmers’ Rorschach test in that everyone calls it a replacement for C++/Python/Erlang/Your Language Here.</p><p>My sense is it wouldn’t be getting that much attention if it were released apart from Google. But thinking about Go for the past few days made me realize that the most important part about Go is actually its “Erlang-ness”. If you’re a C++ developer doing systems programming already, everything else is nice, but not critical. But the goroutine/channel piece is the part that actually differentiates the language as something worth investigating that you can’t easily work around with the existing toolset.</p><p>Would it replace Erlang for many applications? Probably not, because though the coroutines will be powerful in certain systems, Go is not a platform like Erlang, with all the benefits of hot swappable code, supervisor processes, hibernating processes, etc. To a non-developer I would describe Go as containing some of the building blocks that make Erlang a great language and platform, but ultimately Go is targeting lower-level systems development. That type of coding wouldn’t be a good fit for Erlang anyway.</p><p>So where would they overlap? Probably most likely the two languages would be in applications that are not too OS-level but not too application-centric where OTP or hot-swapping code, multi-machine communication, etc would be requirements. The most obvious example would be web infrastructure. Would Go be a good fit for writing a web server instead of Yaws or Mochiweb? Probably. Would I want to use Go to write my own cross-node communication that i get for free with Erlang? Probably not.</p><p>So I’m realizing that Go provides a service to the Erlang community in that it validates the fundamentals of the Erlang platform. <a href="http://golang.org/doc/go_lang_faq.html">Goroutines</a> are equivalent to Erlang processes:</p><blockquote><h3>Why goroutines instead of threads?</h3><p>Goroutines are part of making concurrency easy to use. The idea, which has been around for a while, is to multiplex independently executing functions coroutines, really onto a set of threads. When a coroutine blocks, such as by calling a blocking system call, the run-time automatically moves other coroutines on the same operating system thread to a different, runnable thread so they won’t be blocked. The programmer sees none of this, which is the point. The result, which we call goroutines, can be very cheap: unless they spend a lot of time in long-running system calls, they cost little more than the memory for the stack.</p></blockquote><p>And Channels to Erlang messages: (see slide 28 from <a href="http://golang.org/doc/go_talk-20091030.pdf">this deck</a>). Very cool stuff and further evidence of the slow but inexorable march toward mainstream multi-core programming.</p>http://erlanginside.com/en/id/3552013-10-01T15:41:42+00:002009-11-15T12:59:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Comparing Erlang, Go, Java, and C<p>Tim over at <a href="http://timyang.net/">timyang.net</a> has an interesting ‘hello world’ <a href="http://timyang.net/programming/c-erlang-java-performance/">web server test</a> between Erlang, Go, Java, and C. The C code is an nginx plugin, Java uses the MINA framework; Erlang and Go are small standalone apps. Java ‘won’, with Erlang in second place. Interesting article and the first I’ve seen comparing Go and Erlang performance.</p>http://erlanginside.com/en/id/3522013-10-01T15:26:27+00:002009-08-26T12:57:00+00:00Site Administratorhttp://erlanginside.com/en/id/1New Erlang Documentation Site<p>As Erlang usage grows the documentation surrounding the platform is being subjected to much more scrutiny. The existing Erlang documentation site is difficult to navigate and I often find myself hunting for a particular module by guessing the module name in the address bar of my browser.</p><p>However, Dale Harvey’s <a href="http://erldocs.com/">erldocs.com</a> takes a lot of the pain out of the old documentation. It has an ‘ajaxy’ fast search, where you can search for a particular function, a module, or both; but it doesn’t sacrifice state in favor of interactivity, because the pages are still static html.</p><p>Overall erldocs.com is a great improvement on the presentation of Erlang documentation. My only quibble is there’s no link to Erlang Inside on the erldocs home page. <img class="wp-smiley" src="http://erlanginside.com:8181/wordpress/wp-includes/images/smilies/icon_smile.gif" alt=":)" /></p>http://erlanginside.com/en/id/3512013-09-27T23:11:15+00:002009-07-29T12:56:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Fault-Tolerant News: Erlang:lists/2<p>Welcome to the second of the erlang:lists series where we list some interesting happenings in the world of Erlang.</p><p><strong>erlang:lists(NewErlangIRC)</strong> – <a href="http://weblog.hypotheticalabs.com/">Kevin Smith</a> just launched a new IRC channel: #erlang-otp. Have an Erlang question you need answered quick? Wishing you had a friendly place to hang out online with other Erlangers? Tired of either the silence or trolling on #erlang? If you answered yes to any of these consider hanging out in #erlang-otp, the friendly Erlang IRC channel. Erlang newbies are especially welcome!</p><p><strong>erlang:lists(BuildYourNextWebAppWithErlang)</strong> – Steve Vinoski has a <a href="http://steve.vinoski.net/blog/internet-computing-columns/">new article</a> on “Build Your Next Web App With Erlang”, the latest downloadable pdf in his Functional Web series.</p>http://erlanginside.com/en/id/3502013-10-01T15:27:46+00:002009-07-15T22:03:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Watch Out, Nextflix! Erlang dev offers $1000 bounty to improve his multicast code<p>In the spirit of NetFlix -- but 1000 times less lucrative -- Joel Reymont, a freelance developer who lives in Tenerife, one of the Canary Islands, has issued an interesting challenge. Not able to get his multicast Erlang code to send 20,000 messages in less than four seconds, he asked the erlang-questions forum for help for the last few weeks. I’ve been impressed by the forum’s support but no one could solve the issue. So, he proposed a challenge: $1000 to the first person who can get the broadcast under one second, $500 if under two seconds. In his words:</p><p><em>The Ultimate Erlang Challenge is on:</em></p><p><em><a href="http://github.com/tinycode/janus/tree/master">http://github.com/tinycode/janus/tree/master</a></em></p><p><em>Be the first to improve Janus to unicast to 20K clients with a consistent maximum latency of less than 1s and grab a $1000 bounty.</em></p><p><em>Be the first to get the maximum latency consistently under 2s and claim $500.</em></p><p><em>Develop on any hardware but test on Amazon EC2 for final numbers.</em></p>http://erlanginside.com/en/id/3492013-09-27T23:10:32+00:002009-06-30T22:01:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Fault-Tolerant News: Erlang:lists/1<p>Welcome to the start of the erlang:lists series where we list some interesting happenings in the world of Erlang.</p><p><strong>erlang:lists(CouchDBNaked)</strong> – Harish Mallipeddi, a performance engineer at Yahoo, has put together a great post on the <a href="http://blog.poundbang.in/post/132952897/couchdb-naked">internals of CouchDB</a>, and how to even use some of the couch source to build your own B-Tree based mini-application.</p><p><strong>erlang:lists(ErlangFactory)</strong> – Slides and videos are up from the <a href="http://www.erlang-factory.com/conference/London2009/talks">2009 London Erlang Factory</a> conference. About half have videos and most have slides available. Not sure yet if they will all have videos or if there are reasons for not showing the films for some speakers.</p><p>Each week I’ll mention a few must-see articles, blog entries or videos. If you have something to bring to my attention, contact me at chad at inakanetworks dot com.</p>http://erlanginside.com/en/id/3472013-10-01T15:42:55+00:002009-06-08T21:55:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Sneak Preview of O’Reilly’s New BookErlang Programming by Francesco Cesarini and Simon Thompson<p>For the past two years in the Erlang community, when someone says I used <em>The Book</em> to learn Erlang, it was an unequivocal reference to Joe Armstrong&#39;s book by The Pragmatic Programmers. It has been the guide to learning Erlang, responsible for inducting a whole new generation of developers to the language. Yet, now that<em> <a href="http://oreilly.com/catalog/9780596518189/">Erlang Programming</a> --</em> by Francesco Cesarini and Simon Thompson, published by O&#39;Reilly -- is out, the use of the phrase The Book will be followed by the question &quot;Which one?&quot;</p><p><em>Erlang Programming</em> is a worthy contender for the best Erlang book, and evidence of the growth and maturity of the community. I received a pre-release copy of the book, which is scheduled to be published in a few weeks, and I spent the weekend exploring it.</p><p>First, the inevitable comparison between the two books. Joe Armstrong is probably best described as a prophet of the Erlang world. His book is a polemic for parallel programming in general and Erlang specifically. Why shared nothing is everything, why message passing and the actor model are important, and why 5 nines doesn&#39;t make Erlang break a sweat. Joe set out to tell the world why any system sufficiently advanced is an attempt at rebuilding Erlang. Joe succeeded wildly – he produced a book that gently preaches and occasionally dazzles us with one line IP protocol parsing. Speaking for myself, it was the major influence that drew me into the Erlang world.<br /><strong><br />Francesco and Simon&#39;s work is altogether different</strong>. It&#39;s still for the beginner, but it has the luxury of living in a world where many readers <em>already</em> know why they want to learn Erlang. In fact, it&#39;s partially due to the success of Joe&#39;s book that this one can be so good. So they don&#39;t have to proselytize. They can teach and tell stories. We’re ready to listen and we know why we’re here.</p><p>They produced a great book. They could have titled it <em>Practical Erlang Programming</em>, even; it&#39;s the best way to describe the book. In just a few days of reading I&#39;ve learned practical tips on the best way to structure processes and pass requests through the system, to the reason why defensive programming designed to handle every possible input without failing can make your programs much more difficult to debug.</p><p>The book starts with a great summary of the happenings in the Erlang world in the past few years, which could be useful to show to your boss if he&#39;s still not sure the language has legs. Next, they dive into a summary of basic Erlang, a great primer on data types, atoms, guards, lists, comparing lists and tuples, and the shell. It&#39;s the best introduction to Erlang syntax I&#39;ve read yet.</p><p>It moves on into a description of sequential programming, how to use case statements, guards, the “BIFs” (built-in functions), and much more. It even tells us things they’ve left out because they promote bad programming practices, such as the process dictionary, which is an easy way to subvert “shared nothing”.</p><p>They provide a good intro to the Erlang debugger, and then dive into concurrent programming. The overview of message passing assumes you know why you would want to pass messages, and spends more time talking about the best way to architect a multi-process system than the specifics of low-level message passing.</p><p>A section on Design Patterns gives a great overview of the patterns used in Erlang development, including client/server, finite state machine, and event handler patterns. In general, you can tell that these guys have built a lot of real-time systems with Erlang. Tips for patterns to avoid and real-world reasons pepper the work with the kind of depth that only comes from experience, like why using a particular pattern is wise or foolish.</p><p>Error Handling, dynamic functions, and OTP are all given detailed treatment in their own chapters.</p><p>Unit testing and Test-Driven development are covered in a separate chapter, with specifics on EUnit. The culture of TDD, which recently has become so popular in the Rails community, is clearly not as prevalent in the Erlang world, so it’s important that this is included.</p><p>How to interact with Ruby, Java, and C via Erlang ports is taught, along with a brief mention of how to accomplish interactions between Perl, Python, Haskell and PHP.</p><p>ETS and Dets tables are covered as well as Mnesia. The reasons to use and not to use Mnesia are explained thoroughly, with discussions on gotchas in bringing up Mnesia nodes with extremely large tables. Unfortunately CouchDB and MySQL are mentioned but using them is not discussed. <em>This is a real world need – perhaps a whole book on data access with Erlang is in order?</em></p><p>The book concludes in Chapter 20 with a discussion of coding style, best practices, and optimizing programs. I can say that my Erlang code will improve just from reading this section and this chapter alone is worth the price of the book.</p><p>What did they leave out? For the beginner, one more chapter on web programming and relational database access would have been a bonus, but the book is thorough enough without it.</p><p>So which book would I recommend? If you can afford both, they complement each other well. But, if you had to buy one, I&#39;d recommend this one, mostly because of the practicality and depth. It builds from a great introduction to the Erlang language to in-depth discussions of the most powerful parts of the platform, with a solid focus on best practices throughout. <strong>Joe&#39;s book has made the converts, now Francesco and Simon&#39;s equips the Erlang Faithful with the tools to conquer the world…</strong></p><p><em>The Safari version of the O&#39;Reilly work will be available around June 15th, and the print version should be available the week of June 22nd.</em></p>http://erlanginside.com/en/id/3462013-10-01T15:43:37+00:002009-05-13T21:54:00+00:00Site Administratorhttp://erlanginside.com/en/id/137 Signals Creators Embrace Erlang (Where It Makes Sense)<p>You may be familiar with 37 Signals, the guys who brought us Ruby on Rails, Campfire, and Basecamp, among other products. Mark makes a wonderful case for using the right tool for the job in this “Nuts &amp; Bolts” post on how the Campfire internals work better with Erlang.</p><p>Campfire is a web-based messaging and chat room system that used a C-based polling system to determine if messages need to be sent to connected browsers. The team replaced 240 separate C processes with 3 Erlang processes, and they explain how and why <a href="http://www.37signals.com/svn/posts/1728-nuts-bolts-campfire-loves-erlang">here</a>.</p>http://erlanginside.com/en/id/3442013-10-01T15:44:48+00:002009-04-21T21:51:00+00:00Site Administratorhttp://erlanginside.com/en/id/12009 Erlang Factory: Biggest Gathering of Erlang Expertise Outside of Sweden<p>Next monday the <a href="http://www.erlang-factory.com/">Erlang Factory</a> conference starts in San Francisco. If you’re in the Bay Area and can make a last minute change of plans, it looks to be a milestone conference for the Erlang community.</p><p>The <a href="http://www.erlang-factory.com/conference/SFBayAreaErlangFactory2009/university">University</a> is the 27th – 29th, with the <a href="http://www.erlang-factory.com/">Conference</a> from the 30th-1st. Speakers include Robert Virding, one of the inventors of Erlang, Damien Katz (CouchDB), Chris Anderson, Rusty Klophaus (Nitrogen), Yariv Sadan (ErlyWeb), Eugene Letuchy (Facebook) and Ezra Zygmuntowicz, who will be a special treat for any fans of Ruby/Rails/Merb as he is the founder of EngineYard and a lead contributor to Merb.</p><p>Since our focus here tends to lean toward web development with Erlang, and as I’m a Ruby/Rails and Erlang programmer, I’m particularly interested in the talks by Yariv, Ezra, and Rusty. Ezra’s talk will be on <a href="http://github.com/ezmobius/nanite/tree/master">Nanite</a>, a self-assembling fabric of Ruby daemons communicating via RabbitMQ.</p><p>If you can’t make it to San Francisco, there is a similar conference in <a href="http://www.erlang-factory.com/conference/London2009">London</a> in June.</p><p>Looks to be an incredible conference and I’m only sad that I won’t be able to make it this year.</p>http://erlanginside.com/en/id/3432013-10-01T15:45:33+00:002009-03-23T21:49:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Erlang Inside Interviews Joe Armstrong<p>Writing Ruby code for a living, building a company in a foreign country, learning a human foreign language (Spanish) and a computer foreign language (Erlang) on the side hasn’t left a lot of time for blogging about Erlang. But in the past month, we were able to spend a few minutes with Joe Armstrong, creator of Erlang and certainly the language’s most famous ambassador.<strong><br /></strong></p><p><strong>EI: In the past year Erlang has started to become much more popular – how has this affected you?</strong></p><p>JA: I get invited to a lot of conferences – I used to say yes to every invitation I got, but this got silly. So I now only accept a few per year.</p><p><strong>EI: Do you get asked for autographs in the street yet?<br /></strong><br />JA: No.</p><p><strong>EI: But seriously, does it seem like Erlang is headed the same way Ruby was 5 years ago?</strong></p><p>JA: No idea – but scratch the surface there seems to be lots of interesting stuff going on.</p><p><strong>EI: Related to Erlang’s increasing popularity, any thoughts on the proliferation of web platforms for Erlang?</strong></p><p>JA: Not really – Erlang wasn’t designed for building web platforms – it was designed for building fault-tolerant systems. Where Erlang seems to excel is in instantant messaging (ejabberd for XMPP and rabbit-MQ for AMQP) and schema-free data-bases (CouchDB, Amazon SimpleDB, Scalaris) etc.<br /><strong><br />EI: How about Reia – any thoughts about this language? It has mutable variables, among other things…</strong></p><p>JA: I haven’t tried it – I don’t like mutable anything.</p><p><strong>EI: When I try to introduce Erlang to developers, I often get incredulous stares because when they first see the syntax they’re overwhelmed with how unusual it looks. What do you think the major barriers to adoption are with Erlang? Is it syntax or is it unfamiliarity with functional programming? Or something else?</strong></p><p>JA: Fear of failure – this is always why people don’t try new stuff. Functional programming takes people out of their comfort zones. Once you get started it’s pretty easy, but the step to getting started is perceived as being large.</p><p><strong>EI: If you could change anything about Erlang’s syntax, would you?<br /></strong><br />JA: The record syntax is a mess, I’d like to introduce hashmaps in some convenient notation …</p><p><strong>EI: Do you see language design as a hobby or is this the only language you’ve ever created?<br /></strong><br />JA: A hobby and obsession. I’ve made several languages – Erlang is the only one that has escaped.</p><p><strong>EI: Any thoughts on other functional languages such as Haskell or F#?<br /></strong></p><p>JA: I like Haskell very much – not so keen on F# – By tightly integrating with .net you get a lot of benefits but this damages the conceptual integrity of the language.<br /><strong></strong></p><p><strong>EI: Any plans for another book?</strong></p><p>JA: I’d like to write some more programming books.</p>http://erlanginside.com/en/id/3422013-10-01T15:47:25+00:002009-03-12T21:46:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Hacker News Full of Erlang Articles<div class="entry"><p>Hacker News’s author was complaining yesterday about a spike in traffic due to a ‘fluff piece’ on a woman building a blog to get hired by Twitter. His solution – asking the faithful readership to post only Erlang stories to drive away ‘mainstream’ readers. It worked to drive away less hacky-readers, but probably only attracted more attention. <a href="http://news.ycombinator.com/news">The whole first two pages is filled with Erlang-related submissions.</a></p><p><strong>Update: and it’s happening again as of August 20, 2009. With news of _why’s online persona vanishing without a trace filling HN, another call for only Erlang articles…</strong></p><div><strong> </strong></div></div>http://erlanginside.com/en/id/3402013-10-01T15:48:22+00:002009-03-10T21:41:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Tic-Tac-Toe In Erlang<p>Neal over at nealabq.com has a long tutorial on Erlang Tic-Tac-Toe, which is incidentally the first program I wrote when learning Erlang. Programmers may want to take a look at the tutorial, but perhaps the most interesting aspect of the tutorial is the way he takes the problem space and shrinks it down by analyzing the algorithm and the properties of a game of tic-tac-toe.</p><p><a href="http://nealabq.com/blog/2009/03/06/tic-tac-toe-erlang-smart-game-space/">Click here to give it a try!</a></p><p>Do you know of other game tutorials in Erlang? Send them to me or post in the comments.</p>http://erlanginside.com/en/id/3392013-10-01T15:51:54+00:002009-01-12T21:38:00+00:00Site Administratorhttp://erlanginside.com/en/id/1The Top Ten Erlang News Stories of 2008<p>It goes without saying that 2008 was a difficult year for many, with 2009 looking to be more of the same. But for the Erlang community, it was probably the best year since Joe Armstrong released <em>Programming Erlang</em>. OK, that was 2007… still, it’s a great time to use Erlang. Here are the top ten Erlang related events of 2008, from ‘smallest’ to ‘biggest’. This is my subjective ranking with a focus on the trends that will introduce the most number of developers to the power of Erlang in 2009.</p><p>10. Erlang jobs more than <a href="http://www.itjobswatch.co.uk/jobs/uk/erlang.do">quadrupled</a> in the UK last year, according to IT Jobs Watch. I believe similar results in the US but don’t (yet) have the data to prove it.</p><p>9. Sites like <a href="http://langpop.com/">LangPop.com</a> recognize that languages like Erlang and Haskell are being talked about more than they’re being used (so far). For instance, Erlang has passed C# and Visual Basic in discussion frequency and sites such as SD Times cover <a href="http://www.sdtimes.com/DEVELOPERS_MOVING_TO_ERLANG_FOR_CODE_SCALING/About_DATABASES_and_ERLANG_and_SERVERS_and_PROCESSONE/33136">more stories on Erlang.</a></p><p>8. In the Top-Ten Self Promotion Department, <a href="http://erlanginside.com/">Erlang Inside</a> releases and tries to fill the gap in Erlang-related news sites.</p><p>7. Amazon uses more Erlang with its <a href="http://aws.amazon.com/simpledb/">SimpleDB release</a>. OK, this was in beta in 2007 but not officially released until 2008.</p><p>6. Pragmatic Programmers release a set of brilliant <a href="http://www.pragprog.com/screencasts/v-kserl/erlang-in-practice">Erlang Screencasts</a>.</p><p>5. <a href="http://wiki.reia-lang.org/">Reia</a> is released in alpha, and provides a scripting language with the power of the Erlang runtime and VM, as covered in this exclusive <a href="http://erlanginside.com/interview-with-reia-creator-tony-arcieri-on-erlang-reia-python-and-rails-48">Erlang Inside interview</a>.</p><p>4. <a href="http://www.rabbitmq.com/">RabbitMQ</a> – see this <a href="http://google-ukdev.blogspot.com/2008/09/rabbitmq-tech-talk-at-google-london.html">Google Talk</a> about RabbitMQ.</p><p>3. As for <a href="http://nitrogenproject.com/">Nitrogen Web Framework for Erlang</a>, which we <a href="http://erlanginside.com/interview-with-rusty-klophaus-on-the-nitrogen-erlang-web-framework-37">covered earlier this year</a>, Rusty has come a long way recently with a great looking website including screencasts showing the power of the framework.</p><p>2. <a href="http://couchdb.apache.org/">CouchDB</a> became the schema-less DB of choice for a growing number of users, was inducted into the Apache Incubator, and everyone starts discussions about it with “Did you know it was written in Erlang?”.</p><p>1. And finally… <a href="http://www.facebook.com/note.php?note_id=14218138919&amp;id=9445547199&amp;index=9">Facebook launches chat to 70 Million Users</a>… All At Once. Using Erlang. I can’t think of a better advertisement for the power of Erlang (outside of the Telco space) than the successful release of this feature.</p><p>Thoughts on this list? Missed something big? Add other ideas in the comments…</p>http://erlanginside.com/en/id/3382013-10-01T15:53:23+00:002009-01-03T21:37:00+00:00Site Administratorhttp://erlanginside.com/en/id/1BeepBeep, Another New Erlang Framework<p>Happy New Year! It’s been a great 2008 for Erlang, which we’ll cover in our 2008 Retrospective in another post later this week. For today, it’s a new, simple web framework for Erlang called <a href="http://github.com/davebryson/beepbeep/tree/master">BeepBeep</a>. Written by Dave Bryson, it uses <a href="http://code.google.com/p/mochiweb/">MochiWeb</a>, which most Erlang Web developers are familiar with, and <a href="http://code.google.com/p/erlydtl/">ErlyDTL</a>, which is an Erlang port of the Python Template Language. Travis Slicegood has a <a href="http://www.travisswicegood.com/index.php/2009/01/02/playing-with-beepbeep-and-flickr">demo application</a> written in BeepBeep that grabs photos from Flickr, and Dave Bryson has a sample <a href="http://github.com/davebryson/beepbeep-blog-demo/tree/master">blog application</a> as well.</p><p>The new set of Erlang web frameworks is more proof that the number of ambitious, sharp developers moving to the language is growing.</p>http://erlanginside.com/en/id/3372013-10-01T15:58:48+00:002008-12-18T21:36:00+00:00Site Administratorhttp://erlanginside.com/en/id/15 Reasons to Use Erlang in a Cloud, or On a Sunny Day<p>John Bender has a <a href="http://nickelcode.com/2008/12/15/erlang-and-cloud-computing-a-fine-pair-indeed/">good post</a> on reasons to use Erlang in building a cloud computing application. Though the points aren’t specific to cloud computing, it’s a good and concise summary of some of Erlang’s benefits.</p>http://erlanginside.com/en/id/3362013-10-01T16:06:40+00:002008-12-12T21:33:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Interview with Tony Arcieri, Reia Creator: Part Two<p>For part one, click <a href="http://erlanginside.com/interview-with-reia-creator-tony-arcieri-on-erlang-reia-python-and-rails-48">here</a>.</p><p><strong>EI: Where is Reia in the development cycle? When will it be beta or production ready?</strong></p><p>TA: You can consider it to be in an “early alpha” stage at this point. There are a number of open tickets for known issues on our ticket tracker. While there are a small number of tests many parts of the language are completely untested. The goal is to implement a specification/testing tool similar to <a href="http://github.com/rubyspec/mspec/tree/master">MSpec</a> and use that to create an executable specification of the language itself. Once this is underway the language should effectively be “beta”. Unfortunately there are still some additional language features needed before such a tool can be written, like simple inheritance.</p><p><strong>EI: How will releases work – with multiple, frequent releases similar to the Rails cycle, or a slow release cycle focused on a ‘perfect 1.0′ similar to Django?</strong></p><p>I would like to develop the language iteratively as opposed to the boil-the-oceans approach seen in Python 3000, Ruby 2.0, Perl 6, and C++0X. This is easy when a language is new and here’s little concern about breaking compatibility with existing programs, since there aren’t many. However I think even entrenched languages have managed to do it successfully. C# comes to mind.</p><p><strong>EI: How can a developer get involved and contribute?</strong></p><p>TA: If you’re interested in Reia, join the mailing list:</p><p><a href="http://lists.reia-lang.org/cgi-bin/mailman/listinfo/reia-talk">http://lists.reia-lang.org/cgi-bin/mailman/listinfo/reia-talk</a></p><p>Also, consider forking Reia on GitHub:</p><p><a href="http://github.com/tarcieri/reia/tree/master">http://github.com/tarcieri/reia/tree/master</a></p><p>Once you’ve forked a copy, take a look at the open tickets on Lighthouse:</p><p><a href="http://reia.lighthouseapp.com/">http://reia.lighthouseapp.com</a></p><p>Try capturing one of the known defects with a (failing) test, and see if you can try to fix it. Once you’ve captured a bug in a test, or better yet fixed the bug and made that test pass, send me a pull request on Github and I’ll merge your changes back into my branch.</p><p>Or, just try using Reia. The test coverage right now is fairly poor, and many defects have been discovered just by people trying to use the language. If you find a problem, open a ticket on Lighthouse and I’ll try to get it resolved.</p><p><strong>Thanks again, Tony!</strong></p>http://erlanginside.com/en/id/3352013-10-01T16:13:57+00:002008-12-11T21:30:00+00:00Site Administratorhttp://erlanginside.com/en/id/1BeeBole: Erlang Web Application with Video TutorialBeeBole creates a sample Mochiweb Erlang web application with video tutorial.<p><a href="http://beebole.com/">BeeBole</a>, creators of an online expense tracking application for small business, has a zipped up a sample <a href="http://beebole.com/blog/2008/10/20/tutorial-web-application-erlang/">Erlang MochiKit web application</a> that just may be the easiest way to experiment with Erlang and the web. The application is a JSON-driven sticky pad in a browser.</p><p>Once you’ve experimented with that, take a look at the tutorial on <a href="http://beebole.com/blog/2008/12/11/how-to-send-emails-from-an-erlang-web-application/">sending mail with erlang</a>.</p>http://erlanginside.com/en/id/3342013-10-01T16:07:45+00:002008-12-10T21:21:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Interview with Tony Arcieri, Reia Creator: Part One<div class="gmail_quote"><div class="gmail_quote">We interrupt the recent holiday-related posting hiatus for an interview with <strong>Tony Arcieri</strong>, creator of <a href="http://wiki.reia-lang.org/wiki/Reia_Programming_Language">Reia</a>. Tony has a lot more information on Reia in the <a href="http://wiki.reia-lang.org/wiki/FAQ">FAQ</a>, where he covers reasons for some of the design decisions of the language. He can be reached at his blog <a href="http://tonyarcieri.org/" target="_blank">tonyarcieri.org</a>, and on Twitter at <a href="http://twitter.com/bascule" target="_blank">twitter.com/bascule</a>. This has become part one of two, as I have some follow up questions for Tony on the status of the language and how people can contribute.</div><div class="gmail_quote"><strong>EI: What gave you the idea for Reia?</strong></div><div class="gmail_quote"><strong> </strong></div><div>TA: About this time last year I was developing an Erlang-like implementation of the actor protocol for Ruby called Revactor. While this was fun to use, two things kept annoying me. First, actors in Ruby duplicated a lot of the functionality of objects, and the more I tried to unify the two the more frustrated I got. It felt like I was reimplementing method dispatch on top of the Actor protocol. Second, even though I was using the new “fibers” feature of Ruby 1.9, the messaging speed between actors was over a hundred times slower than Erlang.<p>At the same time I was dealing with a number of minor annoyances in Erlang. Having worked primarily in a dynamic scripting language like Ruby for some years I missed Ruby’s syntax. I’ve never been a fan of single assignment. But more than any of that, any time I tried to cultivate interest in Erlang among other Rubyists I knew, they shyed away. Erlang was too weird for them.</p><p>I was also talking to Zed Shaw who really sold me on the idea that everyone should try to make a programming language. Erlang gives you easy access to all the different parts of its compiler and makes it easy to load compiled code directly into the virtual machine. So I figured I’d give making my own language a try. I really sought to find a way to make objects and actors play well together, and I decided to do that by having objects talk the actor protocol. This also makes all objects concurrent, as they are fundamentally Erlang processes.</p><p><strong>EI: What’s your background with functional programming? Have you built substantial applications with Erlang, Lisp, Prolog, etc?</strong></p></div><div>TA: The first functional language I tried out was Standard ML, which was probably a mistake. Since then I’ve explored Scheme through virtue of SICP. I’ve never built a substantial application in any functional language, including Erlang. That’s probably a bad thing considering I’m building a language on top of what’s largely a functional language platform, but what can I say, if I were content to write substantial applications in functional programming languages I probably wouldn’t be making Reia in the first place.</div><div><strong>EI: How do you see a web framework working with Reia? Do you forsee a Rails-style &quot;convention over configuration&quot; framework being constructed with Reia?</strong></div><div><strong> </strong></div><div>Not only do I foresee it, people have already started working on it. Phil Pirozhkov has written a binding between YAWS, the Erlang web server, and Reia, and also begun writing a small Merb-like web framework.<p>Concepts from existing web frameworks written in Ruby, Python, and Erlang should port over to Reia easily.</p><p><strong>EI: How do you think programming in Reia will make the average developer more productive? Do you see Reia as an entry-point into Erlang programming or something more? Do you see a time when people will build projects only in Reia with little understanding of the underlying Erlang language?</strong></p></div><div>TA: I see Reia as allowing Erlang-like programs to be rapidly prototyped as I believe Reia will lower the cognitive load of developing distributed applications and also simplify many day-to-day tasks. It can certainly be seen as a stepping stone to learning Erlang. I see the main audience as being people completely unfamiliar with Erlang, but perhaps familiar with Ruby or Python.</div><div><strong>EI: Let’s talk about the Erlang Community – have they been receptive to the idea of a scripting-style language on top of BEAM?</strong></div><div><strong> </strong></div><div>TA: Reaction to Reia in the Erlang community has been fairly mixed. Most people in the Erlang community don’t see the use of Reia, which is understandable. Others seem to like it conceptually but would probably not use it themselves. Perhaps the strongest reaction in the Erlang community has been an almost universally negative opinion of abandonment of single assignment, which has overwhelmingly been the one aspect of the language people have latched onto and complained about.</div><div>Conversely, the reaction among Ruby and Python programmers has been overwhelmingly positive.</div><div><strong>EI: How do you see this community evolving versus Rails or Python community?</strong></div><div><strong> </strong></div><div>TA: There’s been a surprising amount of interest given the early state of the language. I see Reia as more of a spiritual successor to Ruby than to Python, yet so far most of the people interested have a Python background, perhaps because the Python community is larger. However, that said, I still think it’s too early to tell what community will form around the language. I hope it appeals to enthusiasts of concurrent and distributed programming in general, who have grown frustrated with threads or event-driven programming and are seeking a friendlier way to make their programs scale across multicore CPUs or multiple computer systems.<p>As CPU manufacturers continue to increase the number of cores of their processors and network services shift towards deployment on cloud computing systems, I see the niche for a concurrent and distributed languages expanding dramatically. I see people whose interests lie in these areas as forming the basis of the Reia community.</p></div></div><p><strong>Thanks Tony!</strong></p><p><em>We’ll have the rest up later this week.</em></p>http://erlanginside.com/en/id/3332013-10-01T16:11:34+00:002008-10-30T21:11:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Interview with Rusty Klophaus: Nitrogen Erlang Web Framework<div>Nitrogen is the soon to be released Erlang framework for web development that uses an event-based programming model similar to ASP.NET. <strong>Rusty Klophaus</strong>, the creator of the framework, agreed to answer some questions about Nitrogen and how he got started in the Erlang community.</div><div><strong> </strong></div><div><em>This is the first in our series of Q&amp;A sessions with the leaders of the Erlang community.</em><strong></strong></div><div><strong> </strong></div><div><strong>EI: How did you get started using Erlang?</strong></div><div><strong> </strong></div><div><div>RK: I started using Erlang in February 2008. I was setting out to build a distributed Web 2.0 application and had grown tired of OOP, and I was looking for something better. Like a lot of other people working on the edge of Web 2.0, when I heard what Erlang could do I knew that it was something special.</div><div>To understand why it’s special, you have to know a little about the history of the language. Erlang was born about 20 years ago -- way before the Internet became popular -- as a language for building telecom applications. Erlang was created out of necessity to solve a very unique set of problems at the time.</div><div><div>Today the internet is moving in a direction where more and more of today’s problems look like the problems that Erlang was designed to solve 20 years ago. For example, one of the biggest ways to gain a competitive advantage today is to change where your computation gets done. This could mean using Amazon’s EC2 or building your own data centers in the middle of nowhere. Managing this kind of distributed application can be a challenge in other languages, but Erlang makes it easy.</div><div>Erlang was clearly a better tool to solve these problems. Not perfect, but definitely better. And given that I had spent many, many hours struggling with these problems, Erlang’s ability to solve them so cleanly felt like magic.</div></div><div><strong> </strong></div><div><div class="Ih2E3d"><div><strong>EI: A lot of people say that Erlang is great for the back-end part of a system but that it’s better to use Ruby (via Rails,Merb, etc) or Python (via a number of frameworks) to build the UI, because Erlang is not good at string manipulation, makes simple methods where a loop would be handy more complicated than necessary, etc. The alternative is to use a more modern language and bridge the two with JSON, REST, etc. This is the approach that recent applications have taken. GitHub is probably the latest example. Any thoughts on this critique of Erlang and any comments on how Nitrogen addresses these concerns?</strong></div><div><strong> </strong></div></div><div>RK: My intention had always been to build the back end of my company’s technology in Erlang, and to build the front end in Rails. But, by the time I got around to writing the front end, I had just finished a wildly productive period of time with Erlang, and I couldn’t bring myself to slow down and go back into learning mode with Rails. Plus, the idea of having to bridge Erlang with something else felt risky, it’s an opportunity for breakage, bottlenecks, and other surprises. Finally, Erlang has a powerful ability to structure data very differently than other languages, and that’s something that you lose as soon as you push data across the bridge.</div><div><div>Nitrogen certainly reduces the need to hop into a different language for front-end work. But, because of string manipulation, unicode, staffing reasons, legacy code, or any number of other reasons, it may still make sense for some projects to only use Erlang on the backend. I really see Nitrogen hitting two major demographics:</div><div>First, there are the existing Erlang users who want to write an application on the web, but want to keep working in Erlang. I believe that these are the early adopters who will provide the best suggestions and feedback, and who will push Nitrogen to become a better framework. Nitrogen gives this community the same Web 2.0 toolbox that other languages have had for a few years now.</div><div>Second, there are the websites who are butting heads against the limitations of their current languages, who come to Erlang to break through these limitations, and then who use Nitrogen because they hate the idea of a bridge. Both Nitrogen and Erlang have a number of problems to solve (like string manipulation and unicode support) before we can really attract this part of the community.</div></div></div><div><strong> </strong></div><div class="Ih2E3d"><div><strong>EI: Why did you use an event-based design similar to .NET vs a MVC design like Rails, Struts, etc?</strong></div><div><strong> </strong></div></div></div><div>RK: Here is the short answer: I come from a background of <a href="http://asp.net/" target="_blank">ASP.NET</a> which uses an event-driven model, so 50% of the answer is that I wrote what I know, and the other 50% is that I tried to follow the wood grain of Erlang as much as possible.</div><div>Specifically, when thinking about the grain of the language, here is what I was thinking: Erlang lacks a good string manipulation library, so it doesn’t lend itself well to having templated HTML views, I’d rather express the page as Erlang terms. Erlang doesn’t have objects, so a Model object would be a hack. And finally, Erlang’s pattern matching made it really easy to envision how events would work. The list goes on, but you get the idea. This all added up in favor of an event-driven framework.</div><div><div>The rest of this answer may get me in trouble, but here goes:</div><div>I think part of the reason that people have seen such huge gains from MVC is because it forces code organization. It can be very easy to write sloppy code in a scripting language; that’s the double-edged sword of making a language extremely productive for small tasks, it’s easier to hang yourself on the big tasks. So when MVC came along in Rails, one of the biggest benefits was that it gave developers clear direction on how to separate their code. Erlang, by its nature as a functional language, forces you to be a little more neurotic about organizing your code from the start, so for Nitrogen to impose MVC felt like an inappropriate and unnecessary constraint.</div></div><div><strong> </strong></div><div class="Ih2E3d"><div><strong>EI: What license do you plan on releasing Nitrogen under, are you looking for contributors, and when will it be released?</strong></div><div><strong> </strong></div></div><div>RK: Nothing is nailed down yet, but it will be one of the standard open source licenses that are out there. I will likely pull together the Erlang User’s Group of Arlington (find us on Meetup.com) and ask them, because many of those folks are much more heavily involved in the open source community than I am.</div><div>I will be looking for both contributors in terms of code, documentation, and general strategy. By general strategy, I mean that I’m not sure if the current technology stack that Nitrogen uses is right. Nitrogen currently uses Yaws as its back end HTTP server, and Prototype, Scriptaculous, and LiveValidate for client work. I chose Yaws because that’s what Yariv used for ErlyWeb (<a href="http://yarivsblog.com/" target="_blank">http://yarivsblog.com</a>) and I chose Prototype and Scriptaculous because that’s what Rails uses. I may swap out some technology down the road. The main principle will be to go with whatever has the fewest lines of code.</div><div>Nitrogen should be released around mid-November along with some early documentation.</div><div><strong> </strong></div><div class="Ih2E3d"><div><strong>EI: Does Nitrogen provide database support similar to ErlyDb or do you assume people will be using Mnesia?</strong></div><div><strong> </strong></div></div><div>RK: Nitrogen doesn’t assume anything about your data other than giving you some convenience methods around binding records to elements on the page. So, you are free to go out and use whatever makes you happy.</div><div>I have not done much with ErlyDb or ErlyWeb, but my understanding is that ErlyDb exists for the same reason that ActiveRecord exists in Rails. Both ErlyWeb and Rails can auto-generate code for you based on your data model, and they use ErlyDb or ActiveRecord, respectively, as the generic data access logic in that code.</div><div>I think Nitrogen will head in this direction eventually. Down the road, I would love to make a Nitrogen screencast to compete with Rails’ “Creating a weblog in 15 minutes” demo. The only way for this to happen is to autogenerate code, and once this happens then Nitrogen will need its own ActiveRecord equivalent. That is many months down the road, though.</div><div><strong> </strong></div><div><strong>EI: Thanks Rusty – looking forward to experimenting with the framework!</strong></div>http://erlanginside.com/en/id/3322013-10-01T16:14:48+00:002008-10-22T21:10:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Reia Brings Scripting to Erlang<p>As Erlang continues to grow in popularity, people are thinking about how to capture the advantages of Erlang’s VM and shared-nothing architecture, but present it in a more accessible way. <a href="http://wiki.reia-lang.org/wiki/Reia_Programming_Language">Reia</a> is the latest attempt on that front. Why? <a href="http://tonyarcieri.org/">Tony Arcieri</a> starts with testing, with the goal of taking Reia and creating a declarative testing/mocking framework similar to RTest in Ruby. Further, his philosophy is that the language shouldn’t get in the way, and that a Ruby/Python-like language is needed to make it easier to grow adoption:</p><blockquote><p>Most programmers are used to dealing with imperative languages. In the case of Erlang, a programmer is asked to make multiple conceptual leaps at once: from imperative to declarative, from procedural to functional, and from synchronous to asynchronous. Erlang has good reasons for asking you to make these leaps, but for most people this is too many leaps to make at once, and thus Erlang is too “weird” for them to understand.</p></blockquote><p>Reia is available on <a href="http://github.com/tarcieri/reia/tree/master">GitHub</a>, but still much is undone. Briefly, it has a Ruby-like syntax with Python-style indentation. Its closures and variables are not bound upon first assignment.</p><p>We’ll be following Reia’s progress over the coming months.</p>http://erlanginside.com/en/id/3312013-10-01T16:15:14+00:002008-09-11T20:51:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Rails-style String Inflection for Erlang<p>Long ago when I was working on the ADO.NET framework (the first version), I made a doomed argument that strongly typed DataRows should have their strongly typed container objects pluralized.</p><p>I was roundly but jovially made fun of, and everybody had a good laugh about how hard that would be for non-English languages, and all those edge cases like geese, sheep, mice, moose, etc. I proposed that we would have two versions of Visual Studio: regular and “Zoo Edition”.</p><p>This is one thing I like about Rails – they just did it, and allowed for people to special case the pluralizations that they get wrong.</p><p>But how does that relate to Erlang? Luke Galea at ideaforge recently released a library for Rails-style ‘inflection’ in Erlang which replicates the ActiveSupport functionality. Check out the support for pluralization, singularization, tableization, and <a href="http://www.ideaforge.org/blog/?p=11">more</a>.</p>http://erlanginside.com/en/id/3302013-10-01T16:15:38+00:002008-08-27T20:49:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Is there a groundswell of interest in Erlang?<p>Over at <a href="http://weblog.hypotheticalabs.com/?p=293">Hypothetical Labs</a>, the above question was asked: is there an erlang ‘groundswell’?</p><p>Personally, I think Erlang interest is growing. I just started a project using Erlang/Mnesia instead of MySQL as the backend, with Ruby as the UI. Erlang will continue to grow and carve out a niche. But it lacks the text processing and script-y-ness that makes Ruby such a joy to build web applications. I’d personally love to see a framework purely in Erlang that provides MVC, but also allows for construction of actual web pages in a ‘Ruby-lite’ language that gets parsed/compiled and executed in the Erlang VM.</p><p>Erlyweb is a good start, but it doesn’t go far enough.</p>http://erlanginside.com/en/id/3292013-10-01T16:08:19+00:002008-08-19T20:47:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Erlang for the Ruby Guy<p><a href="http://medevyoujane.com/">Jon Gretar</a> has a <a href="http://medevyoujane.com/blog/2008/8/6/erlang-introduction-for-the-ruby-guy-part-1.html">three</a> <a href="http://medevyoujane.com/blog/2008/8/10/erlang-introduction-for-the-ruby-guy-part-2.html">part</a> <a href="http://medevyoujane.com/blog/2008/8/17/erlang-introduction-for-the-ruby-guy-part-3.html">series</a> which is a simple introduction to Erlang for the Rubyist. He covers basic syntax, tuples, modules and functions and pattern matching, and the basics of recursion.</p>http://erlanginside.com/en/id/3282013-10-01T16:20:18+00:002008-08-07T20:28:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Ruby and Erlang Can Play Nice Together<p>InfoQ has a good <a href="http://www.infoq.com/news/2008/07/erlang-ruby-roundup">article</a> on Ruby and Erlang interaction. <a href="http://www.engineyard.com/">EngineYard</a>, the most visible and successful rails-focused host, is using Erlang in Vertebra, their cloud computing platform, which -- as we’ll cover in a separate post -- is an incredibly powerful statement for the growing place for Erlang in cloud computing.</p><p><a href="http://code.google.com/p/erlectricity/">Erlectricity</a> is a Ruby gem that allows for Erlang/Ruby connectivity using Erlang ports and a lot of Ruby blocks.</p><p>Erlang supports JSON (in at least three publicly available libraries as discussed <a href="http://groups.google.com/group/couchdb/browse_thread/thread/7ee59b3c901f3012">here</a>), as does Ruby through the <a href="http://json.rubyforge.org/">json gem</a>.</p>http://erlanginside.com/en/id/3272013-10-01T16:31:18+00:002008-08-05T20:22:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Erlang Heroes<p>Ruby has <a href="http://en.wikipedia.org/wiki/Yukihiro_Matsumoto">Matz</a>, C# has <a href="http://en.wikipedia.org/wiki/Anders_Hejlsberg">Anders Hielsberg</a>, and Erlang has Joe Armstrong, one of the creators of the language. He has a blog <a href="http://armstrongonsoftware.blogspot.com/">here</a>. I’m glad to see that as the language really starts to take off, one of the creators is still in the industry and there to be a part of it. That sounds odd to say, but it took Ruby 11 years to really see a critical mass, brought on by Ruby on Rails. It took Erlang 21 years.</p>http://erlanginside.com/en/id/3262013-09-25T13:06:24+00:002008-08-04T20:18:00+00:00Site Administratorhttp://erlanginside.com/en/id/1Welcome!<p>Hello, world. Welcome to the first Erlang news blog. Any and all news in the world of concurrent computing, we’ll try to cover it here. Learn more about the blog <a href="http://erlanginside.com/about" target="_self">here</a>. The blog name and concept is inspired by one of my favorite ruby blogs, <a href="http://www.rubyinside.com/hello-world-1.html" target="_self">Ruby Inside</a>.</p>