A Beginners Guide to Erlang_Erlang Factory Lite_Munich 2013

4,947 views
4,842 views

Published on

At Wooga, John-Paul had the chance to rewrite an old PHP game server to Erlang with very little experience. Now the project is finished and we learned a lot about Erlang which he'd like to talk about. The common beginner mistakes, oddities and other slow downs and how to avoid them.

Talk objectives:
The goal is to show beginners how fast they can get started with Erlang projects if they avoid some of the common beginner mistakes and slow downs. On the other side I hope I can stir up some discussions about Erlang itself and making it a little bit more approachable.

Target audience:
Beginners and experienced Erlang developers, interested in improving the Erlang world itself.

Published in: Technology

A Beginners Guide to Erlang_Erlang Factory Lite_Munich 2013

  1. 1. A Beginners Guide to Erlang
  2. 2. About me‣ John-Paul Bader‣ http://twitter.com/hukl‣ http://github.com/hukl‣ http://smyck.net
  3. 3. http://www.slideshare.net/wooga/presentations
  4. 4. Books‣ Programming Erlang‣ Erlang Programming‣ OTP in Action‣ Learn you some Erlang for great Good
  5. 5. Books‣ Programming Erlang‣ Erlang Programming‣ OTP in Action‣ Learn you some Erlang for great Good
  6. 6. USE REBAR!‣ Build Tool for Erlang‣ Dependency Management‣ https://github.com/basho/rebar
  7. 7. OTP RELEASES
  8. 8. OTP RELEASES‣ Skip if you own / operate the infrastructure where the app is running‣ Skip if you deploy frequently‣ Use if your customer owns / operates the infrastructure‣ Use if you ship the app to the customer and updates are rare and huge
  9. 9. TESTS‣ eunit‣ common test‣ etest etest_http
  10. 10. ETEST-module(my_api_test).-compile(export_all).-include_lib("etest/include/etest.hrl").-include_lib("etest_http/include/etest_http.hrl").before_suite() -> application_start(my_api).after_suite() -> application_stop(my_api).test_hello_world() -> Response = ?perform_get("http://localhost:3000/hello"), ?assert_status(200, Response), ?assert_body_contains("Hello", Response), ?assert_body("Hello World", Response).
  11. 11. http://vimeo.com/hukl/10-minutes-erlang
  12. 12. SingleResponsibility Processes
  13. 13. STRINGS & TIME‣ Text Manipulation: Do it somewhere else‣ Time Operations: Gregorian / Half-Baked
  14. 14. STRINGS & TIME(Time.now - 3600).sunday?=> true> 3.months.ago.end_of_week.midnight=> Sun, 18 Nov 2012 00:00:00 CET +01:00"Hello World is overrated".gsub(/o/) do |match| match += "ooo"end=> "Helloooo Woooorld is ooooverrated"
  15. 15. SYNTAX …
  16. 16. SYNTAX …‣ Not as bad as you initially think‣ Do not blindly follow emacs mode dogma‣ Do not hide more than necessary‣ Try to structure your code in the most readable way
  17. 17. Questions?

×