The Erlang stack
I am learning Erlang for a little to a year now, not constantly but every now and then and a little more in the last 2-3 months. As I dug deeper and deeper in the language I started looking for the typical stack for Erlang programs. That means tools to develop and run a Erlang/OTP application and here is a (not yet complete) list of what I have found.
Erlang is a language that has been and is used for various types of applications. Unfortunately many developers don’t feel comfortable with the functional programming paradigm that Erlang is built upon. To help you get started on your way as a to-be Erlang developer here are some tools that may help you:
- why erlang? reasons to use the language and runtime environment for your projects
- Learn you some Erlang (for Gread Good): a very good (and fun) way to learn Erlang
- try-erlang: an in-browser interactive tutorial to Erlang
- edoc: generates HTML documentation from .erl source files, comes with standard distribution
- eunit: unit testing framework, comes with the standard installation of Erlang
- common test: also ships with standard installation
- rebar: a popular build tool for erlang programs developed by Basho
- sinan: an alternative to rebar with a stronger focus on OTP
- kerl: manages installations of Erlang/OTP, like RVM does for Ruby
- EXPM: a package index and manager for Erlang (supersedes agner)
- dialyzer: a static code analysis tool (standard dist)
- meck: a mock library for Erlang, works perfectly with eunit
- lager: a logging framework developed @ Basho, Lager is cool!
- erldocs: a nicer manual than the original docs, you can find it on erldocs.com
- debugger: built-in graphical debugging tool, just start it with debugger:start/0
- observer: a graphical node and application process tree viewer, also built-in, start it with observer:start/0 (supersedes appmon)
- pmon: a built-in graphical process manager, run it with pmon:start/0
- cowboy: a fast and easy to use web server
- et: built-in and easy to use event tracer for Erlang: Using the Event Tracer tool set in Erlang, Making Sense of Erlang’s Event Tracer
- yaws: a high-performance web server primarily suited for dynamic content
- erlang-history: adds history to the erlang shell
- vmstats: monitor Erlang VMs via statsderl
- Elixir: a functional and meta-programming aware language that runs on the Erlang VM
- Web frameworks: a list of web frameworks for Erlang
- Spooky: a RESTful request handler for Erlang
- Erlang Programming Rules
I’ll write separate articles for each of the tools in the future, this post will just be a pointing in the right direction for lost Erlang developers
Please, if you know any other helpful tools, don’t hesitate to post it in the comments and I will add them to the list. I know that this is just a very small overview, but these are all tools that helped me get a better Erlang developer, either by using them and/or by reading their code.
Happy Erlang’ing
12 Responses to The Erlang stack
Leave a Reply Cancel reply
tags
agile algorithms blog books C codingstyle couchdb daemon databases datastructures erlang fun function functional programming gem getting started gist git github javascript jruby learning linux mayflower mysql open source performance php postgresql pragmatic programmers programming redis ruby rvm shell sinatra slides snippets sprintf subversion syntax highlighting textmate theory unix zshMy Coderwall Badges




















Great article. Thanks.
You might want to add some debugging tools too (like appmon, pman or debugger).
I’ve found the following to be extremely useful:
Cowboy : Fast, easy to use webserver (https://github.com/extend/cowboy)
Sinan : Similar to rebar, but I found rebar somewhat difficult to get running every time I started a project. Lots of things to be moved and changed. I use sinan to package all the stuff I do these days. (https://github.com/erlware/sinan)
Event Tracer : One of the most incredible tools I’ve found in erlang. Live sequence diagrams of your running application, with variable detail levels. This is built in and pretty easy to use:
http://www.erlang.org/documentation/doc-5.7.4/lib/et-1.3.3/doc/html/et_examples.html
http://souja.net/2009/04/making-sense-of-erlangs-event-tracer
http://jlouisramblings.blogspot.co.uk/2011/10/using-event-tracer-tool-set-in-erlang.html
I prefer common test to eunit as it is much better for testing whole systems. And I would stress the ability to build fault-tolerant systems which was one of our primary goals with Erlang.
Otherwise I like it.
JFYI, agner has been superseded by EXPM: http://rashkovskii.com/2012/10/01/expm-or-meet-agner-2/
[...] Hacker News http://thewebdev.de/the-erlang-stack/ This entry was posted in Uncategorized by admin. Bookmark the [...]
I highly recommend Learn Yourself Some Erlang for Great Good: http://learnyousomeerlang.com/ – it is an excellent way to get comfortable with Erlang, how it works and how it is intended to be used.
http://learnyousomeerlang.com/
Been following this and it’s a good (and fun) way to learn Erlang.
I’ll take this opportunity to make a shameless plug for my Erlang Development Tool Suite (EDTS). It’s a really nice package that makes your Erlang life a lot easier if you’re using Emacs (of course you are!).
https://github.com/tjarvstrand/edts
When I tried to use Erlang for web development I had to stop because its support for string handling was so horrible. Is there a good library that will let me work with UTF-8 strings?
I see the folks at 99s used https://github.com/dluna/chaos_monkey for stability testing of Ranch. Interesting project!
“The purpose of The Chaos Monkey is to find out if your system is
stable or not. What will your system do when things start to go wrong
and your processes die randomly? The Chaos Monkey will show you.
With a stick.”
the #erlang stack – http://t.co/IKzGvXVNZM
“The #Erlang stack” => http://t.co/Q7ZkoLsiC2 <= a handy list of stuff to get you going with erlang