Erlang is designed to be easy to learn despite its powerful capabilities for building fault-tolerant, highly concurrent systems; the language's simplicity stems from its pragmatic origins in solving telecommunications challenges, where developers can become productive within one month (or three months with prior programming experience) by focusing on lightweight concurrency, message-passing processes, and immutable data structures rather than complex object-oriented paradigms.
Learning Erlang: Easy to Learn for Distributed Systems and Concurrency
Added:hello and welcome to the earling solutions monthly webinar my name is madin Milich and I'm the solutions director here at earling Solutions today's webinar represents a continuation of a series of webinars we are organizing across topics of interest in the world of llang and dealing with Solutions based on the llang programming language our topic today will be dealing with learning erlang and the fact that achieving this might be easier than you think over the years experience has shown erlang is a language that is easy to learn pick up and start using this Factor has indeed been one of the major causes of the explosive expansion of Earl Lang across Industries and sectors where it can make a significant contribution for example Financial Services betting and gambling online telecommunications energy and many other sectors in terms of learning our line perhaps the biggest challenge in that process lies in changing the way we think now as with any live event please excuse any technical issues we may encounter today to start by telling you a bit about Earline Solutions we are a products and services orientated company completely devoted to the airline programming language since our founding in 1999 we have worked with organizations and individuals using erlang helping evolve the language and supporting people and businesses using it today we have about 80 people across our offices in London Stockholm CCO and Budapest and working on projects across the globe we are very keen on creating value and competitive Advantage for our customers across Industries and through the unique features and characteristics of Earl Lang as a language we are ambitious in development of earling based products and we work to create lasting Partnerships with our customers now I'm pleased to say that um today we have two speakers joining us and whom we have carefully selected as best invited to tell you about our Lang and the optimal ways of learning the language first of all Franchesco cherini the alang solutions founder and Technical officer will start us off Franchesco has spent years working with earling and passing on knowledge of earling to others across sectors and dealing with continuously evolving use cases I'm also very privileged to say that our second speaker who needs little introduction is Robert biring one of the co-authors of the earling language Robert started earling itself all those years ago and today devotes himself to helping others learn her Lang and benefit from the language please allow me to finish by saying you are welcome to post questions throughout the duration of the webinar by using the chat facility our speakers Franchesco and Robert will answer as many questions as time allows at the end of the webinar if any questions do go unanswered you're welcome to raise them via email using the following address webinar erang solutions.com that's webinar erlang solutions.com if you're interested in learning more about Earl Lang or wish to establish whether the language which might be a solution for the challenges your own business may be facing please feel free to contact me directly my email address will be displayed in one of the final slides of the presentation we will share with you today the same goes for any other questions you may have feel free to contact us I would now like to hand over to Franchesco Chini who would be glad to start us off hi there I think we should just start Robert and I should start introducing ourselves I'm Franchesco shini the founder and technical director here tering Solutions um started my career at the computer science lab with Robert and other Airline coinventors back in 1995 and you know it was you know at Erikson um at Ericson's training Consulting arm when I taught my first airine course in a Research Triangle Park it was in 1997 I still remember it clearly and well loved it and you know I've never looked back I've you know been giving training courses ever since and on top of giving you know training courses you know for corporates I've also been teaching at universities um I've I taught for 10 years at the IP University of golenberg I've had over 700 students many of them who've ended up working for earning Solutions and well I'm glad to say Robert is taken over there and more recently I'm teaching at industrial Masters uh program at Oxford University here in the UK Robert um hi yeah I'm Robert Bing so yes I'm one of the original people from the um computer science lab and we started working with Al well sometime around the late 80s was bit bit hazy um and I was one of the original team that working there I worked continually with alang and other things as well for the um computer science lab through the '90s um a group of us left to form Blu tail which is one of the first companies to use alang in products we found the first companies outside Ericson to do that um I've worked a bit for Swedish military procurement and for the last three years I've been well working for alling Solutions now mainly with training and I can say one thing I started Train giving courses in aling even before Franchesco so sometime around 91 we in the lab started giving courses in alang for Ericson when was your first University course you tght 92 or 93 I can't remember well that was the one old vager was on that that was the one that was the one yes we gave some courses together with B dector who was our boss then at um kth yeah yeah that was 1992 yes that's right 92 yeah but we've been giving Alan courses internally before that as well too which were quite fun because you can actually ring telephones in the in during the course so n gave a quick introduction about earning Solutions but I think our focus is you know very much on scalable full tolerance systems and you we're working from embedded to cloud and you know superc computers uh um and we're the only company of this kind completely focused on Airline and the airline community so you on top of giving courses you know we've got events worldwide but you know one of the real catalysts in the company is all of the R&D which which we do so you know we're going to start off by speaking a little bit about you know the problem um you know Robert and his team were facing at the computer science lab and you know what problem they were trying to solve and you know what the solution to that problem was yeah because that very much affects why Allan looks like it does um it's a very pragmatic Pro very pragmatic language so the basic problem we had from Ericson is that they had well they still have a tesur switch called axe which was a very good product Ericson sold lot of it made a ton of money on it on it it was a very successful product but it was quite costly and difficult to maintain um so one of the things we got at from the lab was how can we um simplify de developing and maintaining these types of applications um that was the type of thing we were trying to attack in the in the lab okay they weren't quite as bad as that but never mind yes they were quite complex it was quite a big application to do and how could how can we simplify that and work with that and um okay what what type of applications are these okay what what is a telecom's application and they have a number of um what's the problem domain we're working they have a number of properties um these type of applications so for example they are they have to be massively concurrent if we're talking about a telecom switch here we might have hundreds of thousands of subscribers may have tens of thousands of calls going on at the same time all these things must run independently um they have to be fa tolerant they're not they're just not allowed to fail to go down things like this you need so you need redundancy in the system for example you cannot allow things to fail um you need distribution you cannot build a fault tolerant system with on one computer that computer can go down and the system will go down so you need at least two computers um some people say you need at least three to make it properly but you need at least two computers you need redundance in the system um so you need support for distribution in the system at at all times um you need fall tolerance you have to accept the fact that in this complex system like this things are going to go wrong that's just um there's just no way around it you will always get things going wrong there might be softwares there might be Hardwares or things like this the classic telecom's case is that someone digs up the telephone lines and you get a durge of um spirous messages coming in and they might crash the system and the system just just must not be go down you have to be able to detect errors you have to be able to isolate errors and you have to be able to clean up after errs occur the these are typical type of things can going out for it um well there was some more specifical type Telecom typ things you to talking to hardware and stuff like this but otherwise you have the concept of time in the system um you need to be able to upgrade the system do all forms of upgradeing the system while the system is running you cannot uh you cannot take the system down say to do code upgrades so you need support for doing code upgrades in the system and there are many of these features now the what I find the interesting thing is that um these things are not um Airline specific well not Telecom specific rather they um they are typical of many different types of um applications you will find today and I I think many applications they have these basic requirements although sometimes they're just not explicitly stated it's assumed that this is just known for example if you have a lot of systems they will ask they will say you ask yes you want to be able to do things a lot of things concurrent and of course they'll say of course they do of course they won't do that although they might have explicitly specified so there are many of these features so these these problem domain is very Broad and very interesting so Franchesca you were yeah I mean the problem domain was interesting but also I think I'd like to just add to what you've said um at the same time there was a lot happening in uh um you know uh there was a lot happening you had the whole deregulation of the Telecom Market um and at the same time you're going from kind of vertical Network single service network to multi-service network so when you were working you know voice was voice video you know cable TV just ran on cable TV networks and internet it just ran on internet um you know and what you were also seeing was the whole migration from you know these vertical networks to you know uh service which would share the same background and you know thinking of it you know what what you've described is not just Telecom you know but the the requirements are the same you pick up a phone you expect to hear a tutu on the other end you chat on Facebook today uh you expect the chat just to work out of the box you know uh or you click Buy on on Amazon you know the last thing you want is a 500 error you're happening and so you know the problem domain is is not just specific to telecoms it's it's it's it's used in you know the types of systems we're developing today which have become you know which have become you know the web scale of uh you know of this theendum now Airline itself you know verticals where Airline can be used you know it's not just Telecom um you'll find Airline running in cars you'll find it rubbing running in robots just the other day there was a YouTube video of a drone being powered by airlin where when the Drone was flying they actually did a software upgrade um Airlines powering the back end of some of the largest massively multier online gaming um a lot of the free to play mobile games mobile backends uh a lot of betting and gambling sites are using it as their new and logic it's made its entrance into Healthcare you know NHS spine in the UK is you based on Rea um an airline nosql database as storage of all medical records in Denmark um you're seeing more and more companies using it for online ads actually it's easier to find companies not using irine forline ads um you you you know from your real-time bidding you serving the ads um New Media um online newspapers you a great example is the Huffington Post um so you know the Boston globe's back end is all based on airline um online payments you know Clara you know will handle is handling billions of Eur in payments every year and you know they're approximated about 30% of all online payments in Scandinavia go for an airand BAS system you know we could continue instant messaging Logistics etc etc etc so you know there are lots and lots of areas where all of the features of Telecom Robert has described um fit in okay so where do we come from this study looking at the problem domain um and trying to work out how are we going to solve the problem we had or Ericson had um one of the things to realize is that the aling development has always been extremely pragmatic our goal was to solve the problem um our goal was not to choose a certain way of doing it how we going it's going to look at how we going to do it and what we arrived at the basic principles that a language or a system would need to solve this type of problem you need lightwe concurrency it has to be massive concurrency it has to be asynchronous communication it has to be massively scalable as well which means you can't have shared data on the system that just does not scal properly you need immutability in the system uh just to keep track of what's going on also you need fault isolation you need to be able to to to localize and um contain faults and also you need The Primitives for doing what s selfhealing to make the system keep keep going and and to keep handle when things go wrong because they always go uh we need support for continuous EV evolution of the system in this case Dynamic Cod upgrades um there are other things as well too so we had some other princip we wanted a simple high level language do this U simple for many reasons one it's easier to to implement it's easier to learn it's language is simple the problem with a simple language is to get it right you you want it simple in the sense that very few small number of basic principles that you can build use building your system if you get these right you'll get a language which can which is very powerful but it's still small it's easy to comprehend and to use so in this sense small is very Co we also found which is in conjunction with this that you you should provide tools for building the system not readymade Solutions we' found this out the hard way often when we try to make solutions for various problems we usually got them wrong we misinterpret the problem with things like this and often they become too too too limited so a tool becomes either very specific and very limited use or it gets very verose and to try and contain everything do everything in the system and becomes practically unusable for so we wanted to keep things as simple way so I mean it was a simple I mean the result was a simple language I mean if you think of it at the end of uh of the freeay course uh the very first freay courses we were giving at Ericson uh the developers who on day one came in without knowing any Airline left having programmed a soft switch they actually had phones you know Hardware they were provided the hardware headphones which allowed them to you know call each other I mean it was a great reaction a great satisfaction which came out of it and yeah literally at the end of the 3-day course you know most of the language and the philosophy behind it um it was built you know to be Compact and to be taught in in a very very short time frame and you know for most constructs there's only one way you know you can solve a problem it's dynamically typed uh that allows you you know lots of flexibility when you're doing software upgrade during run time so you know you can make sure your systems never go down there are no user defined data types um so you know once again adds to the Simplicity uh you've got a lot of you know builtin Primitives for both concurrency and error handling and I think you know that's really where you know some of the strengths come in in airline with no noshed memory approach and the message passing approach and also you know very you know one of the few languages well only language I'm aware of which has built in Primitives for distribution so um you know by doing it right you you've got a program running on a single machine you can easily distribute it across a cluster of machines with no or very very little e effort and you know what we usually say is you you can emulate the logic of Airline by building languages and copying it but at the same time if it's not running on the virtual machine it is very very hard to emulate the semantics and you know the question we always ask us is why use external Li you've got know of control over when you can said use constructs which are built in the language itself so so um if you're teaching people alling or people are learning alling where do they struggle what are the major problems people have when learning Al and I'd say they're two main groups so simp basic alling the simple sequential language is a it's a simple functional language there's nothing really strange about it as such and the problems people have with learning that part of the language is what you typically get when you're looking at functional languages if you're if you're new to them there a concept of things like you have immutable data in the system you have immutable variables um you generally don't have uh looping constructs but you have to use recursion um there's pattern matching which is a very powerful tool but it's a completely different way of thinking of things and these are typical stand standard things things you'll get learning any functional language the second group or the second group of um problems people have is thinking concurrently seeing seeing concurrency is built into the language that that is our way of structuring a system we don't think in objects and think in classes we we think in processes the concurrency of the system how they work how they interact with each other so we don't have classes we don't have objects with State we can't have because we have mutable data um but we use in currency processes message passing uh we don't have any shared memory and these are things which are new to many people but as Franchesco mentioned is I can say from personal experience after 3 days people most people actually get it it they can they can do it and they can write real code in the system I mean just to add uh here I mean what do people struggle I mean recursion is not something you typical to Airline recursion is one of the foundations of computer science and you know everyone should understand recursion um immutable you know data and variables you know we' got an example here in the next slide um it's actually the way we got taught to deal with maths when we were you know studying algebra in school you know when we were in school they didn't teach you to write a is equal to a + one that doesn't make sense um and in fact you know airline has taken a different approach they've taken the approach U of how we used to be taught in school and it's you know B is equal to A+ one where you know once a is bound you cannot change its value and you know so almost instead of calling a variable we actually call them Singletons and uh you know doing it this way um you know by having single assignment of variables the programmers are forced to write short concise functions and by default you'll get a smaller number of barers in your code and enforces a style which makes the code easier to understand and maintain and and it's just a question of you know of unlearning you know some of the bad habits uh people have got gotten in other using other languages and going back to more natural normal way of thinking and reasoning yeah um and when you looking if you look at look at well not just alling but other many other languages many other systems you'll find the data structures that are in ly recursive so for example you have the list data structure so it consists of well it consists of a list consists of something which is an element and more things which are another list or it might consist of the empty list which is the thing at the bottom here so the the definition of a list itself is recursive so therefore it's quite natural that any functions working on lists are also recursive because they reflect um the data structure they're working on the same thing if you're working with trees tree structures they are also recursive in that the subn of the tree will also be trees so having a DAT having the functions recursive functions to work on trees fits very nicely into the actual um data structure you're looking at um and yeah so so we have have a very simple code example here um this is actually from one of the exercises in the course so we're writing a very small small little database um as as a list of tles key value topples so the the function store here takes a key and a new value and puts it into into the list um seeing all data is immutable we can't make a new list we can't modify data I mean we have to recurse and make new lists in this case we're also using pattern matching so the first first bit of the function here the first it's called now that just checks is the key the the one key we want to put a new value in is that the first element of the list if it is we replace it with a key in the new value and just return that and the rest of the list if it's not the first element then we end up in the second Clause second part of the function here we and we just say well we call ourselves recursively to see if it's in the rest of the list and we build a new list with the element we're not interested in and what we get back from and in the third Clause the last case here we when we hit the end of the list that means we haven't found it so we add it so it's a new list we just return and you can see when stepping the example when stepping down here we I'm working at F and I want to now become ESL so we want to add Robert the key me and then ESL in the system and then the first call we find that um I am not Joe so we're going to return Joe at which is a part of ericsen and we call myself called ourselves recursive to see if I'm in the rest of the then we find yes I am I'm in the first element of the list so replace that element with one which is LL and we just return the Le rest of the list which is Mike at er we build a new list so we have um stepped down the list recursively because that fits the list and we've replaced an element and built a new list coming back up again this is just the T the typical pattern here and here you see we're actually well not just using recursion but we're actually using patent matching as well we're using patent matching to select the clause which clause we want to do um patent matching is a very powerful tool in that it allows us not it allows us to write down what we want the data structure to look like and not worry about how we're going to test if it's going to look and we use this both we build building structures and we uh and more matching trying to test against them so we don't say we don't write down how we're going to test what a structure looks like we just write down in this case what we want the structure to look like and let the system um do that for us that's a very powerful tool makes often makes for very concise C again this is not something aling specific but most functional languages have it because it is a very nice but we have our is actually extended patent matching not just to use normal data structures we can um do for example do patent matching on binaries on binary data so the first um part here this first four lines is actually a alling data type called a binary which is just a sequence of bytes and bits and this pattern describes um an IP packet structure of an IP packet in one go so it's it's a 4bit version It's a 4bit header length it's an 8bit service type it's a 16bit total length 16bit ID etc etc etc there's the source IP which is 32 bits and the destination IP which is 32 bits Etc written the datagram which is the rest of the B and this structure can both be used to pull apart an IP packet into its parts we can also use in Reverse we can use the structure to build an IP package on go so we're not interested here in saying how we pull something a par we're in it or building it we're in saying what does it look like what the system doing the examples down below are just three examples from a problem I've been looking at B is just this is just an interface talk to um a local exchange inside in a hotel where you can send information B information and these just map extremely well onto onto binaries and again I can use patent magic to build to test if what which message it is or to build a message they're they're very it's a very powerful tool um it's often it's new to many people it's not something that many people used to but after a while most most people as I say just get it and do it I think the key to getting it the key to actually getting it is practice and you exercises and yeah oh yeah yeah yeah you can't yes there one thing seeing it another thing actually using it we do have a lot of exercises in our courses to do that it's typical you sit there you you explain it everyone nods everyone understands it but the first time you know someone has to write their own recursive function know it takes it it takes a slight adjustment to seeing okay which of these recursive patterns should I use and how do I break up my problem into recursive into into this particular pattern once you've done it it just starts coming naturally yeah yeah yes yes people typically try to write it as a sequence of if n if than else's but um after a while when you see it the pattern matching so simple to do yeah and so another thing you know people tend to struggle with is is concurrency and once again you know the reason to struggle you know understanding concurrency is not because it's hard but it's just because they've trained to think in in a different way um you know possibly an imperative approach a pack approach or maybe even an objectoriented approach but you know if you stop and think or just look at this picture uh you know to quote Joe Armstrong um the world is concurrent and you we're talking about the world around us here things in the world don't share data and you know things communicate with messages and things fail so you know how do you model a language uh around these tenants around these rules and that's you know that's what it feels that they've done with Airline uh just you know try to picture a um a system handling uh TV voting for SMS to quite a few of those written and Airline around every SMS coming in every TV vote coming in is handled in its own process and in its own Standalone process and the process will live for as long as you know that SMS is being handled when the votes you know when the SMS has being pared and the vote is being counted and we sent back in acknowledgement uh to their user that process terminates you the same could apply to instant messaging you know every message you send every message you receive every status update you have every login and log out request are also Standalone processes and these processes live for as long as you're handling that particular request you that means that you some buggy code will you know cause the process to crash you're the only thing which will be affected is that particular message which which you're dealing and handling and not all of the other messages which are being handled in parallel so you know that that that's usually the way you have to think and reason which is you know a very very natural way I mean if you just think of us as human beings we're all interact you know we all interact with each other through message passing I go in I mention I'll say something and you'll receive that message uh you and I don't share memory and you know occasionally we get hit by a bus but you know even if we get hit by a bus um everyone else around us keeps on running at heast here so it's uh it's a very natural way of thinking and they just applied it um to to the actor model to to concurrency in irand and you know getting used to thinking that way is fairly straightforward once again all it needs is um is practice so you know so I just want to make one one comment to to to to Franchesco it is also a very nice way of well Franchesco mentioned error handling because because then you can let processes die when something goes wrong and know that they will not affect other things going on in our case originally was telepan so if something goes wrong with a call and the process is managing that cord would crash but everything else will just keep on working and we can do a recovery um it's much easier to things like logging because you you localized you localized information state to one process and don't have to worry about everything else at the same time so it's a very nice model but in many sometimes it's just different from how people used to thinking again I think most people understand it after a while I mean what you're doing is you're avoiding all the incidental difficulties the difficulties which are there because you've picked the wrong the wrong tool for the job and instead you know it allows you to focus on the things we which actually are hard and if you look at the case of SMS or instant messaging what is hard is not dealing with the messages in parel all coming in what's really hard there is um the distribution of the state distribution of the data you know possibly across data centers you know to provide full for mods and so avoiding you this you know getting rid of all incidental difficulties you just focus on the real tough parts of the problem which you know Harden any language so you know where where where do you learn Airline well first of all if you're lucky enough to attend the University which teaches it um you know then you know go for it um there are you know universities all along at saying the first University to up was kth in 1992 OBS University picked it up in 1994 I was actually in the class when it first taught happen over there with it University have been doing it for over a decade um Oxford here in the UK picked it up in 2011 you know other UK universities include Harriet W and University of Kent and um you middle sex University here in London apparently is going to start teaching it next fall as well um if you look at the US um you know Cal's been teaching it for a while Kansas University is going to includ it and teach it alongside High School uh it's been taught in Israel andu universities uh I'd say in the Philippines in Spain France everywhere you know it's everywhere but I'd like to specify they're actually not teaching Airline as a language what they're actually doing is using Airline you know to as a tool to teach certain aspects of um computer science and these aspects of computer science could include you know currency could include parallelism uh distribution and more recently even multile program so what they do is they'll teach the theory and then the students get to use Airline for their exercises to apply that theory they're being Tau yeah if you're not well there're always books there are quite a few alling books now the num's been slowly growing the one in the middle the light white bluish green one that's the original book well we wrote One in 93 an alang book con current programming in alang which describe the language and also which is still interesting I think we're actually giving examples where you actually interface and control Hardware from that was quite funny because we were allowed toint the book but the system itself was still proprietary Eric um yeah it I bought one of those in 1994 so yeah yeah proprietor yeah did you get the blue one or the red one the blue one the red one's the second edition which contains I was in the lab when you had the deadline for the red one and received the first copies only to realize I completely forgotten to include the chapter in distribution which was the first one and the second one so I remember that yes that was didn't you have a chap object orientation in Ireland by any chance there's a chapter on it but I wouldn't I wouldn't no I'm not I'm not a True Believer of object orientation in Al or anything else for that matter but there are quite a few books they're more coming um all the time I think there tons yeah tons of books I mean they've been uh you know translated to you know Korean Russian Chinese Japanese their books in Spanish it been translated to French um yeah and there also you know a lot of specialist books I mean when it became you know at you know back in 200 and uh six you know Joe Armstrong came out with his new book you know programming it was a first ising book in over a decade and probably about a year or two later became public that um Simon Thomson and I were writing a book for Riley you and someone went in and question we already have a great book why do we need a second book uh and that's when I actually went out and said we don't need two books we actually need a bookshelf full of books because different people take different approaches when writing and and teaching ourl and and that's what uh you know if you want want Joe's book Joe would cover very much in detail it's a reflection of his character enthusiasm and he will go in and tell you why you should be using Airline if you want a an indepth view of arine well then it's the Ry book that you probably want to if you know learning from AR from great good it's a great book it's available online free of charge and um also you know it covers um Airline and parts of OTP and you know just you have next year are you know books on testing with Airline and offering a book on the standing scalability with iring OTP there's a book on a VM internals and you these are just some of the books uh I'm aware of which still have to come out probably even more but you know for those of you interested you know using the discount of the on the or website you'll get 40% of printed books and 50% of the digital ones which are listed above all all all of the books are all provided by Ry we also you know another place where you can earn Airline is the user groups all over the world um and what they've started running is something called itude for airline uh they currently have they're currently being run in New York in Seattle and those soon start in San Francisco and you know if you do run an air close by we really warmly recommend it the to for airling is you know based on a set of exercises which were published by Ry they're truly available online or you can provide a PDF if you want and what you do is people prepare their exercises and then they come in and you know spend two hours together with experts and review all of the exercises you get feedback and uh and you some cases uh do a bit of pair programming you uh and you know help each other coming up to speed with irine and they've run it very very successful in New York and they're actually in their second round right now and I actually believe for those of you who are in New York they're meeting this evening down at the lers and bar Street and another way to learnning is using e-learning um you know e-learning it was a project which Solutions worked with together with the University of of Kent and you it you know through a grant from the Department of trade and Industry M transfer partnership and it contains about eight hours of video it contains um interactive exercises you can upload your exercises and you get tests tests run on them semantic analys are done so you get automated feedback um it's integrated with Safari from ory forum and you know if you're interested in there using webinar 50 you'll get a 50% discount and this discount code is valid until uh the 31st of December of this year and obviously you know you can also go in and get you know and and um you can also go in and um attend one of the training courses one of the many training courses we provide Robert you want to talk a bit more about them yeah um well yes the the the 5day courses so the alling by example course that's that's a it's a 5-day course about alling about the alling language and using the alling language and what's part of it um I can just mention all the courses these courses are very there a lot of exercises and practical work in so so there a combination of presentations of lectures you might say and there are there is um exercises time through exercise in between to practice on it which which which you find you always do need so the alang by examples basically all of theang language in 5day course usually it's time for a bit of other stuff as well um OTP that's about what's called the OTP the openon platform that is a set of Library the OTP is a set of libraries and sets of design patterns and support for these design patterns for building robust fault tolerance systems in allang so allang provides the basic tools for OTP is is a big set of liabilities for doing this um it's called the open Telecom platform but there's absolutely nothing about telecoms in it as such there's nothing Telecom specific about it as such I think the most Telecom specific is got an asn.1 poser and as is one is using the Telecom specifications for interfaces that's about the closest we get to Pure Telecom but it's a way of building um support and a patent for building fault tolerance systems I would say most serious alling applications today use OTP maybe not exclusively most parts of uh alling for test well that's that's is course for doing for doing testing in Al so companies amongst other Ericson they use aling as a test environment so for testing for testing the hardware written other other languages they they using testing environments built an Aly and this is a course which which helps you do that we have a number of three-day courses which are sort of Trimm down versions of the 5-day courses so there alen Express notp Express we've taken out where we go through the most important parts of it um Allen for for devops that's of course for for operators of the system and um it's not so much for alang programers as such but for people managing ourang systems so we start looking about well how how to install and build uh alling runtime environments how you start the system how you monitor the system what's going on what's Happening inside the system how much memories you using CPU message cues how it works with the file system how you can patch and release handling how how how can you how how do I actually do code upgrade while the systems on the flly looking at distributed systems looking at the system itself to try and see what's going on inside it how is the alling system behaving is it behaving as I think it should uh we logging and tracing facilities all all these type of things you want from from the operator point of view when you're managing Aline systems so it's not directly for outline programmers although even outline programmers find this interesting to do um we can also specially tailor cours for specific needs a common one is one I've given a number of times is we take the OT the 3day OTP Express and the 5day OTP Express course and put you together saying 5day course runs to get through both it's a bit packed but um It's Perfectly feasible to do and it gives you a very good feel for doing both the island and the OTP side so building more practical systems so um we also have we we also have a course on um xmpp and airlin so mongus which you know we gave on demand as well I'm sure you know for those of you who were in on the yeah they're more messaging webinar around products um we we don't give them ourselves but we we also provide courses in Rea for example which is as well yeah so yes we do have a lot of courses we are starting with a very aggressive um uh schedule courses um right now you know next year we're planning on having scheduled courses so for for individuals in Stockholm London cck and Budapest uh in C Budapest to be in Polish respective in in Hungarian um we're aiming for Berlin New York and Chicago in conjunction with the airline Factory lights will be giving there uh San Francisco as well in San Francisco um their scheduled courses now in uh the end of November if I remember correctly and also in conjunction with a factory light will be with a factory um Conference next March so between the third and the 5ifth of March we be doing all of the training and will be a courses OTP courses um we'll also be providing courses on um using aine and Si and the sixth and the 7eventh of March we have the conference itself you know we expect there'll be eight tracks there will be probably an excess of 50 speakers um you know everyone if was anyone in the community will be there we'll be talking about you know basic and advanced subjects there'll be case studies um certain event not to be missed and yeah while leing well there are a lot of companies out there recruiting a lot of companies looking for airling developers and you know doing a lot of really really interesting products so um it's don't there don't seem to be enough Airline programmers to go around these days and I think you know that's one of the things which is um slowing kind of the language adoption and one of the things we're working wrong here there no solutions to yeah I can just say that those companies there they're the ones we know about we also know there are a lot of other companies using airing who just don't say anything so find out the roundabout ways of this company is just using airing inside the system I me these are just some of the companies we know some of them yeah yeah can can I okay go yeah go ahead robt I was just going to mention that the WhatsApp ones fund is interesting because it's a very good example of the the concurrency that's possible inside alling um they came out about a year and a half ago with a Blog saying that they were running on one alling system on one on one computer they were running 2 million concurrent TCP connections uh all being managed by aling now that was most likely being done by at least one aling process per TCP connection which is the standard way of doing it so just to show that um large scale concurrency massive concurrency is possible in ourl like even in products not just as sort of an academic exercis as well to well WhatsApp have an active user page which is larger than Twitter so I think you need this massive scaleability yeah lot of the other ones as well too I mean um did was um um did you have D where there yeah they're all they're all there uh they're all there yes they they they do the front end they do the front ends for um amongst other things is the Call of Duty servers yeah they have last call I heard about a year ago by 16 million users so so it's big and there is Con there's a lot of concurrency going on there and a lot of fault systems so yeah now go take questions I can keep on going as long as possible so can I right well um first of all thank you Franchesco thank you Robert and I'm sure that everyone who's attended the webinar will join me in thanking you for a very inspiring talk onang now throughout the webinar we've been receiving questions and whilst the number of questions received is uh bigger than what we can answer in the available time I've uh picked a couple that I think would be interesting to start with first of all u a really interesting question coming from um Germany Franchesco and and Roberts if you were sort of learning alang from scratch today you know how would you start would you start with books would you start with courses would you you know attend a conference how would you begin from scratch in your attempt to learn Aline today I think it completely depends on what your objectives are if uh if you're a hobbyist and you want to learn as a hobby project uh maybe you know start looking at uh you know start looking at some of the books attend one of the events uh and watch some of the videos online you have to learn how airlin is being used so that you know through the books you'll get the theoretical side with um and you know by attending conferences you'll actually see how it how you know the theor is being converted into practice um e-learning is an excellent way of doing it um as well uh e-learning is usually used also by companies who have um you know geographical limitations or time limitations so you know the delegates are able to learn airline in their own time in a location which is convenient for them you know all they they need to do is have you know be online and have an internet connection um you somewhere between books and e-learnings are Uhl by example um video cast Simon Thompson and I did they're available on or.com and there are about two hours of videos where we cover the basics of the language so it's it's you know basically it's the basics it's a simple parts of the language but we will explain pattern matching we will explain recursion we will explain Syle assignment of variables all with easy examples which go hand in hand with the book so it's just a way of listening to it differently and then thirdly you know it's you know if you you're a company you need to get up to speed quickly or you know if if you're really interested in Airline and you want to learn it as as quickly as possible and avoid a lot of the beginner mistakes so the most you kind of time effective way properly is by attending one of the scheduled courses themselves so you know there is no answer uh to this question other than you it just completely depends on what your objectives are exactly well yeah it is it is a bit of an open ended question I guess very dependent on on on the person learning another quite practical question is are there any courses Earline courses of any type planned in the coming months in Spain and North America specifically so there is a course planned in San Francisco in um in uh the next two to three weeks um and that's you can see that on our website from airling hyen Solutions website we had a soldout course about a month ago in New York I think we had more people registered in what we could handle I think Robert took care of that one and we're about to publish a schedule for North America in the next um in the next couple of weeks but you know let us know where you're based and um we'll do our best but we're aiming at you know scheduling courses in Chicago New York and San Francisco next year um the ones we know for sure will be happening um the 3D to the 5th of March in San Francisco it's an airline course and alongside it an OTP course yeah I just say one thing as well too which I should have mentioned before when talked about courses you can always book an alline course if your company has number of people and they want a specific course you can book a course from us not just the schedule ones um so there's always that possibility to to do that as well thank you for that we have an interesting question uh from Germany one of our U audience is basically interested in uh knowing um from the perspective of a c C++ developer what's the learning curve to sort of effectively translate to llang and become productive so Ericson had some really good um did a study on this and I'm really frustrated they never went in and officially published those results it's no trade secret but what they found is that you know someone coming straight out of University who has worked with a lot of different languages while studying in University will be productive after about one month so uh that means you know attending the airline course and the op course and then using Airline NP uh before and after so um about after one man month they'll be productive someone who's worked with a particular technology and you know this could be C C++ in ericon case it was Plex which was Eric's proprietary language um they are usually productive within three months and that usually has to do with going in and you know changing the way you think and reason and um once again you know this is after attending two courses obviously you know productivity is measured in different ways so you know what these people would bring to the game is a lot of other experiences as well not just programming pure programming experience but you know to get up and running you know it's it's it's easy after three days you know anyone should be able to start coding but you you really you know you reach you become much more productive after after having got practice for a few months and and that's the case I guess not only for airline but you know for any programming language yeah thank you Franchesco um one other question is um and quite on the pragmatic side uh what are the most used tools in detecting an airling application bottleneck and uh how about application tuning Robert well uh the question again is there are yeah there are a number of number of tools being used in this in the system for looking at the system there they come with the release a number of profiling tools um which you can use to look at the system there are a number of external tools which allow you to Al to view the system try to try and see where bottlenecks occur in so so there are there are there are tools for doing that um yeah that's that's about the best I can say say at the moment there are tool are tools methods of doing it the I could also say the addling system itself self is very open in that it allows you to allows you as the program or the application designer to make you make your own tools to look at the system while it's running so all all these for example all the tools that made you could quite easily well could have written yourself in the sense that there's nothing special about the alling system allows you to look at the system itself so for example than robt now okay there's an interesting question uh sort of looking at you know the current state of erlang uh one of our audience is asking where is earing at the moment in terms of uh scaling out of the box on multicore architecture it does it straight by itself okay how far has the language got in terms of you know how many cores it can scale to I think that's what the question is alluding to I you can scale to about um Straight Out of the Box you know it's it's 8 to 16 cores in some cases 32 or even 64 cores what we've discovered right now is that the whole scalability is you know very much application dependent and um it's the problem has to do with bottlenecks in the applications themselves uh because if you've got one process which all of the other processes depend on that process becomes your bottleneck so your system is as fast as your slowest point in effect and so there are tools which are being developed um as part of the release project to actually find bottom next and help resolve them but you know I think I'd love to qu steal here is that when dealing with programing multiple you need a new mindset and I think Airline is a good step in that direction but I think lots of work still needs doing and you know that work is happening right now as I speak um in in terms of you a lot of the research projects which uh which are happening around it there several millions in EU grants have been given with irand and they're apparently you know some of the best universities are actually working on this problem itself so hopefully this time next year you know to answer your question it will probably be 32 to 64 cores but most programs yeah most programs out of the box 8 to 16 cores without any problems thank you Franchesco there's another question uh specifically asking what is the recommended solution to interface Legacy services and servers are there existing libraries or should one always sort of build them from scatch um there are a number of existing libraries already um for example there's an odbc library for talking with databases there are a number of online libraries for talking with various SQL databases so some exist there are a lot of Open Source libraries um you know libraries interfacing major protocol Stacks so uh yeah there's a lot there's a lot out there and and when there isn't you do it and I think you know the the um bit syntax and the pattern matching Robert was showing is an ideal uh solution to that problem fantastic there's a bit of a philosophical question uh in here as well what do you both see as uh the future of things to come for Al Lang um well some things I know that they working the group maintaining and developing out in the OTP group in Erikson there always working on improving scalability and use of increasing improving the use of multiple cores so originally when it came when multicore came out 10 years ago or eight years ago it was about two cores then it became four cores eight now 16 even up to 30 or 60 cores and they're always working on improving that to that will come um the language itself it it develops slowly um so there are new features coming there'll be new features coming next year which people have been waiting for so it does develop slowly um I think positive side of this when things come out they're very well tested so you know they work I think there's a very people there's so much airling Legacy code out there people are very very careful in ensuring that new versions of airling won't break break old systems out in production so you know there's a lot of conservatism there but at the same time I think you know new features which are needed and required are slowly being added I think the biggest change I see in the future is you know how hand is distribution we can deal with distribution um uh right now and you can cluster up up to 100 NS after which you need to resort to sharding or something as close to sharding as as as as you can think of and at the same time um you know and and you need need to apply different concepts and mindsets to it part of is being done as a release project it's called SD Airline other ideas which are being played around with is applying soft to Define networking principles to iring itself I can just add one comment to that about the ising systems itself um the the standard ising system which basically everyone uses is developed by by Ericson and they of course want to they they of course want something which is good enough for them to use in their internal products which it is being used in their internal products so the quality of the outting system itself is is very good it is product Quality Systems to do these type of things for it so um that gets back to development is slow but at the same time when it comes out it's very well tested and works thank you Robert and thank you Franchesco for that I think we have time for a single question although there's many more coming as we speak the one question I'll uh probably sort of wrap up with uh is what are the recommended tools and uh you know what would you recommend for development and debugging of earling applications um so again the question is uh what tools would you recommend for development and debugging of earling applications and what is sort of in daily use in practice in earling Solutions I mean from from from the development Pro of I think here earing Solutions it's Vim or emac but you've got earing plugins for eclipse inell and most editors most editors out there and you know the approach we recommend is you know test driven development and um test driven development and uh you know continuous integration so you know you need to basically set up your whole infrastructure and do it properly when you start developing it's not just about sitting down and starting yes and and as from one of our courses there are number of testing environments included in the Allen release which are used for testing well other things and also testing Allen applications as well there are a number of support tools that come come with aling to help you help do development as well excellent well uh thank you Robert thank you Franchesco again and once again I'm sure everyone will join me in thanking you for taking part in this webinar and uh giving us an inspiring talk on our line now many thanks to all of you who have joined us for the webinar on the side of the audience please join us again in December for our next webinar now following today we will be sending you a short survey to make sure we capture your feedback of today's webinar please also note that the recording of the webinar and the presentation that we Shar today will also be available for you to collect on earling Solutions corporate website at www.l hypens solutions.com thank you once again and we'll look forward to seeing you all on our next webinar
Up Next

US Healthcare: Costliest Yet Ranks Last in Global Study
@ARTLOVERRR
8.8K views•2012-03-17

IFS Therapy Demonstration: Complete Session with Unburdening
@IFSCA
95.9K views•2021-01-13

FastAPI vs Flask vs Django: Choosing the Right Python Web Framework
@TechWithTim
302.5K views•2024-05-26

Game of Thrones Opening Credits: A Cinematic Analysis
@gameofthrones
46.3M views•2011-04-18
Related Study Plans & Knowledge Roadmaps
Structured learning paths in General & Interdisciplinary Studies











![[FSPD] 02a - processos e threads](https://i.ytimg.com/vi/v6erP1AcEx8/maxresdefault.jpg)
































