Archive

Posts Tagged ‘Erlang’

An interview with Alvaro Videla (@old_sound ) about RabbitMQ and Erlang

June 4, 2014 Leave a comment

Hello everybody! The Erlang User Conference in Stockholm is approaching!!! Today you may read in this blog post my interview to one of the speakers: Alvaro Videla. Alvaro is in the RabbitMQ team and one of the authors of “RabbitMQ in action“! I hope you will enjoy this interview!

Down the RabbitMQ hole!

 

Paolo – Hello Alvaro, thank you for being here! Please introduce yourself to our readers.

Alvaro – I’m a developer based in Switzerland working for the RabbitMQ team. Before coming to Switzerland I used to work in Shanghai building a quite popular German website. I very much like Erlang and every other language that doesn’t show an “Algol like” syntax and mindset, like Factor for example. I write open source here: http://github.com/videlalvaro and write about several ideas here: http://videlalvaro.github.io/

Paolo – How did you end up using Erlang? When you started learning Erlang, what was the thing that intrigued you most about the language?

Alvaro - I started learning/using Erlang when I was in China, probably in 2009. The feature that made me learn Erlang, was fault tolerance. The idea that a supervisor could restart a child and the app will keep running. The other idea that I find quite interesting and that place Erlang over other programming languages is pattern matching.

Paolo – I know that you are acknowledged not only as a RabbitMQ advocate, but also as a proficient PHP developer. Can you describe your feelings in switching from a object oriented programming language to a functional one?

Alvaro – For me learning Functional Programming showed that OOP is far from being the only way one could do things. Also it showed me how using the right tool for the job, in this case, the right paradigm, one could achieve solutions to problems than in popular OOP languages would be too complex. Another interesting feature from FP languages in general are the more advanced and high level flow control operators/techniques that facilitate programming.

Paolo – Can you give in a few words a brief description of what RabbitMQ is and what kind of problems it solves efficiently?

Alvaro – RabbitMQ is a Queueing and Messaging Server. It can be used to decouple applications, to integrate different apps, written for various platforms and languages, and that offers a queueing system that can help applications scale, whether by using a basic produce/consume model, or to offer reliability by handling offline consumers, among other things.

Paolo – Many developer know RabbitMQ because it allows the achievement of decoupling, high scalability and reliability. Do you think these features are somehow related to the fact that it is implemented using Erlang and OTP?

Alvaro – I think high scalability and reliability are thing facilitated by Erlang when it comes to operating RabbitMQ. For clients using RabbitMQ, it really does not matter that RabbitMQ is written in Erlang or not.

Paolo – You are one of the authors of RabbitMQ in Action by Manning. Would you like to tell to the folks out there some words about your book?

Alvaro – It’s a book that tries to teach you the basic concepts of Messaging and AMQP so people reading the book can go and implement applications that use messaging by themselves. We tried to achieve a friendly and relaxed style as well, trying to write the book we wished it was there when we started learning about RabbitMQ.

Paolo – At the Erlang User Conference 2014 you will give the following talk: “Building a Distributed Data Ingestion System with RabbitMQ Tutorial: Scaling Applications With RabbitMQ”. Can you give to our readers a brief summary of the talk?

Alvaro – The talk will teach how by using some advanced but very simple features from RabbitMQ, we can achieve reliable cross-datacenter replication with what RabbitMQ provides out of the box.

The tutorial will be an intro to RabbitMQ and messaging.

Paolo – How should follow the talk and why? What levels of Erlang and RabbitMQ are needed in order to fully understand your talk?

Alvaro – A basic understanding of Erlang would be enough, mostly just to read the code examples. Still, not knowing Erlang won’t prevent you from understanding the main ideas presented on the talk.

Paolo – Given your experience on the field, what are the most common mistakes teams do when working with implementations based on Advanced Message Queuing Protocol and especially on RabbitMQ?

Alvaro – The most common mistake is when people try to use RabbitMQ or any message system as a database. The converse can be said about databases being used as messaging systems.

Paolo – What are the next frontiers in the use of RabbitMQ? What are the new fields we can explore and challenges we can win using this technology?

Alvaro – It would be quite interesting to build decentralised architectures with RabbitMQ, like what the New York Times is doing with RabbitMQ and the Shovel plugin, and also learn more about how RabbitMQ can help on the Internet of Things space, by using MQTT.

Talking about Erlang, Riak and Vector Clocks with Christopher Meiklejohn (@cmeik)

February 16, 2014 Leave a comment

Hello! Today you may read here my interview to Christopher Meiklejohn, one of the speakers at the upcoming Erlang Factory in San Francisco. Christopher is working on Riak at Basho Technologies.

Erlang, Vector Clocks and Riak!

 

Paolo – Hello Chris! It’s great to have another Basho Erlanger here! Can you introduce yourself please?

Christopher - It’s great to be here! My name is Christopher Meiklejohn, and I’m currently a software engineer at Basho Technologies, Inc., where I work on our distributed datastore, Riak. In addition to that, I’m also a graduate student at Brown University, in Providence, RI, where I study distributed computing.

Paolo – Before joining Basho you were working in a different company (i.e., Swipely) where you dealt with Ruby code. Did you already know Erlang when you started at Basho? How would you describe the switch between these two languages?

Christopher - During the time I was at Swipely they had Riak deployed in production, which was what initially got me interested in Basho, Riak, in particular, Erlang. When I joined Basho, I knew very little Erlang and spent my first few weeks at the company learning it.

That said, I love Erlang as a language and as platform to build application on. I wouldn’t necessarily say that the change from Ruby to Erlang was anything that was unexpected, specifically because I already had functional programming experience using languages like Scheme and Haskell.

Paolo – Rubyists tend to be addicted to TDD. Were you able to maintain such a good practice also when coding Erlang?

Christopher - Well, I’ll start with a disclaimer. I was primarily responsible for the introduction of behavior driven development at Swipely for feature development, in addition to promoting pair programming within the development team.

That said, testing and verification of software is a very interesting topic to me.

While I believe that all software should be properly tested, I’ve never been particularly dogmatic about when in the cycle of development testing is performed: whether it’s done during development to guide the design of the software or whether it’s done afterwards to validate the authored components. I do, however, have one major exception to this rule: when attempting to reproduce a customer issue and validate a fix for the issue.

This is purely a pragmatic decision that’s come from working on large scale distributed systems: testing and verification of distributed systems is extremely hard given the number of cooperating components involved in completing a task.

At Basho, we take two major approaches to testing Riak: integration testing using a open source test harness we’ve developed that allow us to validate high level operations of the system, and QuickCheck for randomized testing of smaller pieces of functionality.

Paolo – At the upcoming Erlang Factory in San Francisco you will give the following talk: “Verified Vector Clocks: An Experience Report”. Can you introduce in a few words the arguments you will treat during the talk?

Christopher - My talk is going to look at an alternative way of asserting correct operation of software components, commonly known as formal verification.

The talk will specifically focus on modeling vector clocks for use in the Riak datastore using an interactive theorem prover called Coq. This allows us to assert certain mathematical properties about our implementation, and perform extraction of the component into Erlang codewhich we can directly use in our system.

Paolo – Who should be interested in following your talk and why?

Christopher - Given the topics involved, I’m planning on keeping the talk pretty high level and will touch a variety of topics: the theorem prover Coq, which implements a dependently-typed functional programming language, the basics of using Core Erlang, a de-sugared subset of the Erlang programming language, and how we put all of the pieces together.

Paolo – Lamport’s vector clocks are well known by people working in fields connected to distributed systems. Can you explain briefly what they are and in what fields they can be used?

Christopher – Vector clocks provide a model for reasoning about events in a distributed system. It’s a bit involved for this interview to get into the specifics about how they work and when they should be used, so I’ll refer to you two excellent articles written by Bryan Fink and Justin Sheehy of Basho.

“Why Vector Clocks Are Easy”
http://basho.com/why-vector-clocks-are-easy/

“Why Vector Clocks Are Hard”
http://basho.com/why-vector-clocks-are-hard/

Paolo – About the application vvclocks, are you planning to keep the development on? If so how can people contribute?

Christopher - At this point, the project mainly serves as a playground for exploring how we might begin to approach building verifiable software components in Erlang. What has been done so far is available on GitHub, it’s actively being worked on by myself as my time allows, and if you’re interested in helping to explore this further, feel free to reach out to me via e-mail or on Twitter.

Talking about Erlang with Fernando Benavides

February 3, 2014 Leave a comment

Hello! Probably most of you already know the Erlang Factory Light will be held in San Francisco between 3 and 15 March . Among the 50 talks there will be the one held by Ferndando Benavides. Fernando is an Erlang developer from Argentina, currently working at Inaka as director of engineering. Let’s talk with him about Erlang, Inaka and his talk!

Let’s get started!

Paolo – Hello Fernando, thanks for making yourself available for the interview. Would you like to introduce yourself?

Fernando - Hi! Well… I’m an software developer from Argentina. I started programming when I was 10 using QBasic and “improving” gorillas.bas :P. From that point on I studied computing and programming my whole life until I graduated as a computer scientist in the Universidad de Buenos Aires, a couple of years ago. I started working when I was 18, coding in Visual Basic, then moved to .Net after several years. But thanks to my career path in the university I discovered functional programming (Haskell) and fell in love with it, so when I had a chance to actually work doing functional programming (this time in Erlang) I had no doubt I wanted to do so. That was 5 or 6 years ago. And I’ve been doing Erlang development ever since. About an year ago, I’ve been assigned as the Director of Engineering at Inaka. That basically means I’m now in charge of the architecture and design of all Inaka’s systems, whether they’re written in Erlang or not.

Paolo – You are currently working as Director of Engineering at Inaka: would you like to give some insight about Inaka?

Fernando - Well… you should check out our website: inaka.net :)
Inaka was found on September 2008 by Chad DePue, and I’m glad to say I was there. We were just 5 people working in a small apartment in Buenos Aires and we had just one project. Now we are a much much bigger team, with people working from different countries, in a big number of projects. But the idea behind our work was always the same: Our clients have beautiful startup ideas… and we do our best to turn them into real systems or applications that they can quickly launch and grow. Most of our products are iOS/Android applications with Erlang and/or Ruby servers on their backend. And most of the products we build have some important large-scale and/or high-concurrency requirements.

Paolo – How does Erlang fit in Inaka’s ecosystem? Why did you start using it?

Fernando - Erlang is our #1 language choice (at least since I’m Director of Engineering :P) for server developing.
We started using it since our very first system. That was a second screen system that provided additional content to display on iOS devices when a particular show was on air on TV. It also let users interact, by writing comments and “kinda” chatting. When designing the system, Chad detected the high concurrency and real-time demands that it had: during the hour the show was on air, lots of users would be connected and interacting and they devices had to be showing the right content in the right moment, not later. Erlang was the right choice for a language to write the servers with. BTW, making that system scale was not an easy task, even when written in Erlang, and that was what my last talk in an Erlang Factory was about ;)

Paolo – At Inaka you have been using Erlang for many years. How would answer to this question? Do you confirm what Bob Ippolito wrote in his answer?

Fernando -  Being a Haskell fan myself, I can tell you I nodded in approval on almost every paragraph he wrote, including the last one ;). So, yes… I confirm what he wrote.
As him, I’m also not aware of another platform that has the right combination of features, performance and maturity to make it possible to build the kind of systems that we build at Inaka. Maybe instead of binary matching syntax, I would mention that one of the main parts of most of our servers is a RESTful API that usually has a SSE component that keeps clients up to date with server pushes. How easy, clean and nice it is to write the code to implement that and make it scale in Erlang is hardly comparable to any other language that I know.

Paolo – In your talk at Erlang Factory Lite you will talk about: “Lucene Server: From Erlang to Java and Back Again”. Do you mind giving us some information about the talk?

Fernando - It will be a similar talk as the one I gave on the last ErlangDC. I’ll talk about a system that I’ve built and it’s now open-source, thanks to TigerText: Lucene Server. It’s an Erlang application that lets its users index, delete and query documents (i.e. proplists, in Erlang terms) using Lucene (which is written in Java). The key point here is that no Java knowledge is required for lucene_server users. All Java compilation, running, handling, stopping, etc. is managed internally by the lucene_server application. I’ll tell you how it’s works and how it’s implemented, and I’ll show you some lessons I learned along the way ;)

Paolo – Who should attend your talk and why?

Fernando - My talk is mostly aimed at Erlang developers that once faced JInterface, got scared and then decided to implement their solution in a different way… I was there, too ;)
Also, those devs that need a great indexing solution like Lucene as part of their systems. They will learn about an open-source application that may be exactly what they need.

Paolo – About Erlang and Java, I really liked your blog post on Inaka’s blog. Can you talk briefly about it?

Fernando - I wrote that post before lucene_server was open sourced and, in the same way that I couldn’t talk about the second screen system I described before but nevertheless I wrote a blog post about its story, I wrote this post (or rather this still unfinished series of posts) about lucene_server’s history.

You worked both with JVM and Erlang VM which are widely acknowledged among developers. Talking about performances and tuning, can you give some pros and cons for both?

I never feel comfortable talking about performances and tuning of VMs. I’m not sure I know enough about Erlang VM to talk about that and I’m positive I know nothing about JVM in this respect. Also, comparing the performance of two virtual machines for two completely different languages is tricky to say the least. It’s not like you can run the same code in both of them and see which one behaves better ;)

Paolo – Last question: lately I have seen a lot of tweets complaining about the Erlang syntax. What do you think about this?

Fernando - I’m not much of twitter user myself, but the same topic raises up every now and again at Inaka’s office. Personally, I have worked/coded in a big number of languages including Basic for Commodore (where you had to write the line-number before each line yourself), Javascript, Haskell, Prolog, etc. and I never had any problem with any language syntax. Ok, I know, I’m not talking about brainfuck or shakespeare or any other esoteric language. But, besides those funny examples, I always saw syntax as just something to learn and get used to. I would never quit learning or using a language just because I don’t like the way it’s code is written. That said, I love Smalltalk syntax and how easy it is to read and write Smalltalk code. And I also like Haskell syntax even when it’s so hard to just read a Haskell program when there are monads around. About Erlang syntax, well it’s not that I love it specially, but I never had an issue with it… ¯\_(ツ)_/¯

Paolo – BTW, I am really puzzled about your name: is it Brujo or Fernando?

Fernando - Well… According to my passport, I’m Fernando Benavides Rodriguez. According to anyone else, I’m just “Brujo” :). In other words, “Brujo” is my nickname, it means something close to “sorcerer” or “shaman” in spanish. The nickname was taken from my favorite character in a series of books I love (La Saga de Los Confines, by Liliana Bodoc) and it stuck with me forever. So, just call me Brujo :)

Talking about Elixir and the Erlang VM with José Valim

November 30, 2013 Leave a comment

Hello! CodeMesh 2013 is coming and if you are planning to attend this wonderful event you may have the chance of learning more about Elixir from his creator: José Valim. For those of you who will not be able to be in London the 4th, 5th  December I prepared this interview to José. In the interview we talked about Elixir, its roots in the Erlang VM and the future of this newborn language. Enjoy! :D

Elixir of life

Paolo – Hello José! It is a great thing to have you here in my blog for an interview. Would you like to introduce yourself in few words?
 
José – Hello Paolo! In few words, I am co-founder of Plataformatec, a consultancy based in Brazil and the creator of the Elixir programming language!
 
Paolo – José, you were previously known for you work in the Ruby on Rails Core Team. What was you experience with Erlang before writing Elixir? Why did you decide to write a new language and for what reason did
you choose the Erlang VM?
 
José - Before writing Elixir, I already had a good knowledge of the Erlang language and the Erlang VM. At the time, I was unhappy with the tools available to solve the concurrency issues in the Ruby ecosystem and the fantastic Seven Languages in Seven Weeks book helped me lay out the options out there. After reading the book, it solidified my opinion that the Erlang VM is one of the best environments to build and deploy robust concurrent software (my goals at the time).
 
After digging deeper into the Erlang language, I missed some of the flexibility and constructs that I find important in my toolbox, like meta-programming and polymorphism, as well as a better unicode support and other things, which led me to write Elixir.
 
Paolo – Elixir is based on the Erlang VM but has a syntax close to Ruby: for what reasons an Erlang developer should learn Elixir? What about Ruby developers?
 
José - Erlang developers know quite well syntax is often one of the first things that come up when discussing a new language. So while the syntax is similar to Ruby, the semantics are mostly from the Erlang VM. So leaving syntax out, an Erlang developer would find appeal in Elixir if he/she misses the same tools I missed when I started it. For example, we provide a macro system which gives developers the ability to meta-program, i.e. to write code that generates code. Another example is polymorphism, where Elixir provides something called protocols, heavily inspired by Clojure’s protocols, which allows developers to provide well-defined extension points in their libraries.
 
It is hard to explain such features in broad terms, so let me try to give some examples. Erlang developers are familiar with typespecs. In Elixir, we also have typespecs, except they were all implemented in Elixir itself using macros. There is no language extension because macros give users the ability to access and modify existing code. Another good example of macros is how we embed the unicode database into Elixir, at compilation time, which allows us to speed up many Elixir string operations by avoiding work at runtime.
 
Elixir also aims to provide a tidier standard library. For example, we provide an Enum module that is able to enumerate (i.e. map, fold, take, etc) all the collections in the language and such module is powered by protocols: Elixir knows how to enumerate your collection as long as you implement a protocol. After all, it is preferable to have a small set of functions that work well with a handful of collections than a completely different set of APIs for each data structure.
 
For any other developer, be a Ruby, Java, Python or Javascript programmer, learning Elixir means learning the semantics in the Erlang VM and all the amazing tooling existent for building robust, concurrent, fault-tolerant applications and that is more than enough reason for giving it a go.
 
Paolo – I have read the enthusiastic blog post “A week with Elixir” by Joe Armstrong. I also know that you are giving several talks around the world about Elixir. What kind of feedback do you receive from the Erlang community?
 
José - In general the feedback is quite good as the community agrees that the power lies on the Erlang VM and, while Elixir offers a slightly different perspective on it, the more developers using the Erlang VM translates into more knowledge, tools and enthusiasm in the ecosystem altogether.
 
Paolo – Some of our readers maybe want to contribute to some open source project based on Elixir. Do you want to suggest some projects in particular?
 
José - The community is still very young so the best suggestion right now is to try to solve a problem and see if there are any tools available and, if not, wright your own! We see some efforts converging though, we already have an “official” monad library, another for talking to postgresql, other to work with data and time, and so on.
 
Also I want to point out that Elixir is mostly written in Elixir, with the exception of a dozen of macros that we call “special forms”. This makes it very easy to contribute to Elixir itself, once you start learning the language!
 
Paolo – The 4th and 5th December you will give a talk at Code Mesh 2013. The talk title is: “Ecto: A language integrated query for Elixir”. Can you give to our readers some insights on you talk?
 
José – Besides the keynote about programming and Elixir, which I will give with Dave Thomas, I will also talk about Ecto.
 
In a nutshell, Ecto is a language integrated query to talk to relational databases in Elixir, heavily inspired by LINQ (from .NET). The goal of the talk is to introduce Ecto but, more importantly, also show how features provided by Elixir made the implementation of Ecto in the first place!
 
Paolo – Looking at the future: what should we expect from the new Elixir releases? In which part of the language will you focus the most?
 
José – In the short-term, we want to integrate with maps (when Erlang R17 comes out) while we work on a solid logging system to be shipped with the language, that builds on Erlang’s logger. Once that is done, we will release Elixir v1.0.
 
After Elixir v1.0 is out, we have many options to explore and the interesting thing is that we can explore those outside of the language, because macros give us all support we need. Some plans include providing better comprehensions, improving how we work with nested data structures, support to discriminated unions and more!

Talking about Erlang and Agile Methodologies with Gianfranco Alongi

October 21, 2013 Leave a comment

Hello! Today in this blog you can read my interview to Gianfranco Alongi. Gianfranco is a Senior Software Developer at Ericsson with a strong passion for Erlang, Extreme Programming and Agile Methodologies. I am sure you will enjoy his answers :D

Erlang, TDD, XP, agile….what else?

Paolo – Hi Gianfranco! It’s a pleasure to have you here today. Can you please introduce yourself to our readers?

Gianfranco – Hi, and thank you! I’m honored to be interesting enough to be mentioned in this blog!
My name is obviously Gianfranco, but my full name is Gianfranco Franco Alongi, the middle name is a relic from the laws regulating concatenation of first names.
I have always felt a deep satisfaction in programming and problem solving involving abstraction through rule sets. I get a feeling of emotional purification when crystalizing a concept, or even a crude feeling of something into a formalization that can be analyzed, executed and mechanized. I can only imagine this is what Vulcan[1] ‘enlightenment’ feels like, when you see a clear path through reality, a sense of very vivid focus and understanding.

I am a Senior Software Developer at Ericsson, doing Erlang and other things, such as lecturing about good Design, Clean Code, TDD and Software Craftsmanship. I get paid to do Erlang, but my cognitive breath mint equivalent is APL, Haskell or CLISP. I have lately got totally hooked on APL, and will travel to Florida the 19th to hold a workshop on TDD and present a Testing Library[2] I developed for the APL community.

To me, programming is a hobby, and I get paid to do this hobby during the day, but do my hobby without pay during the rest of the day (don’t tell my managers: but I would probably do the same thing even if I was not paid ; ))

My mind is to intellectual challenges what a husky is to physical exercise, I need it every day, and a lot of it. If I go without it for too long, I get restless and depressed.

Paolo – Would you like to tell us something more about your personal experience with programming and especially with Erlang? How did you start using it?

Gianfranco – Ah, yes. I got into contact with programming through my father. He worked as an IBM mainframe developer for many years, and we always had lots of books and stuff at home. He had a whole shelf with RPG, Assembly and instruction sets for different architectures. However, none of this was interesting to me. I got going with Quick Basic in 7th grade (I must have been 12 at the time), and wrote some useless stuff like text adventures.

From there, it moved on quite steadily, and in high school (Gymnasiet in swedish) – I had a math teacher who handed me a (gasp!) Pirated Copy of a Redhat enterprise edition. This is where I got serious with C++ for a while. I was now 15 and got a lot of help by this man. I knew that this was what I wanted to do! This felt so right. The programming.

When I later moved to Gothenburg, and studied at Chalmers, I met John Hughes, a very influential man with a keen sense for Functional Programming.
During this time I did a lot of Haskell, it was the main weapon of choice, but in one of John’s courses, we just happened to glance at Erlang and this was enough to catch my interest. I got hooked. And since that day, I’ve been doing it. For some reason, I have never felt that C, C++, Java, or C# has the right ‘feel’.
My cognitive mind has chemistry issues when it comes to those languages, but Haskell, Erlang, CLISP and now APL has been like hanging out with a really good friend. It’s a silent understanding between two friends. It is beautiful.

Leaving Chalmers, I was contacted by Ulf Wiger, and I started working for Erlang Solutions.

Paolo – You had the opportunity of being an Erlang developer in two of the biggest Erlang companies out there: Ericsson and ESL. Can you tell us something more about these two experiences?

Gianfranco – Erlang Solutions is a company with a lot of young talents and a lot of opportunities. You can be sent to Mexico, work with people in the USA, and basically see and do anything, as long as you are willing and able. This was a fun and interesting time, moving to London, leaving Sweden and meeting a lot of new friends. As ESL is mainly a contractor company, you get to work on a lot of different projects, this suited me well, and I loved the high pace. It is an environment where the fast movers and strong fighters can grow quickly, accumulating a strong CV with various technologies.

Ericsson is different from this. It is a corporation, thus,  by default, the pace is lower. Much lower. Ericsson does not attract the passionate developers as well as smaller companies like ESL, and there can be a lot of bureaucracy which prevents the fast movements I was used to. However, Ericsson, being a large corporation, has the money  to support and lift the passionate developers on its strong shoulders, and it can be a very different experience based on different managers. All my managers have been great, and value skill and craftsmanship, giving me the opportunity to act with a lot of freedom – and the accompanying responsibility to go with that freedom.

At the end of the day, it is us, the developers who form the culture we live in, the wrong people can make gold turn to lead even in the best places. If we are willing to change ourselves, we can do anything.

Paolo – In your current position at Ericsson you are also teaching Extreme Programming values and principles. Even though I know Ericsson has a solid story on agile methodologies I have to ask: is it difficult sometimes to advocate agile principles in such a big company?

Gianfranco - Yes.

Like most large corporations, the ‘Agile Transformation’ is first hand an adoption of ceremonies and not really about the governing values and principles. What should be a common understanding and discussion on values and goals, becomes quickly an act of doing the right things, instead of reflecting on why we do things, and how we do them. My belief is that part to blame for this,  is that Agile is being pushed down from the top, and not being something perceived necessary from the largest part of the organization.

I have yet to meet a developer who is positive about Agile. Few have even heard the term Agile Software Development, and even fewer know about XP. We have a large legacy of Telecom experts, and a dwindling few who are Software Developer Experts. As a result of this, few care how things are done, the majority cares for doing things. And, as you know – the price is paid in sweat, bugs, and blood.

The only way to go fast – is to go clean.

Paolo – In the company where I work, Kent Beck’s book on XP is a must-read  book. Beck states that XP helps developers to deliver better software. What do you think about this sentence?

Gianfranco – I agree.

My only remark is that we must never get stuck in one particular school of thought and shall always explore, educate ourselves and invest in our own career as Software Craftsmen. It is not only  a matter of professionalism, but also a matter of survival. By learning new practices and principles from others, if I can reduce my own cognitive load by using a certain technique[3], and therefore spend more time optimizing for maintainability, it is definitely worth the time and effort to learn.

We all leave a legacy behind us, daily.  If I take an extra hour refactoring my code, after passing all the tests and removing
duplication, it may seem like a large cost, but I know that in my unit, with ~200 developers, if I can reduce the time they spend
reading to comprehend it, there is an economy of scale that makes a good case to optimize for maintainability.

To me, XP is a lot about being a good developer with great practices[4], delivering value and being a pleasant man to work with.
The ‘team’ is very important to me, and I believe the best place to work at, is a place where you feel that you go to work with friends, the kind of people you feel would have your back in a Zombie Apocalypse.

Paolo – Another great book by Beck is Test Driven Development By Example. When I read it I really appreciated the part about eliminating the fear using tests. I know you also appreciate this approach, so how would you encourage a developer to start adopting TDD?

Gianfranco – My best tip to learn anything, is to do it during dedicated practice time. Children are fearless learners, they just do, and fail, and do, and fail. Eventually the feedback mechanisms allow us to tune ourselves, and we start succeeding more than failing.

With dedicated practice time, there is absolutely no pressure to succeed, and so, we loose the fear. Fear is the mind killer that puts the mind into an accelerated mode of anger and self pity, instead of the relaxed state necessary to tune properly on the feedback.

Therefore:
 – Do a Code Dojo together with team mates
 – or just book a 2 hour slot alone, at home.

Start by reading about TDD, and then choose a small practice problem, maybe a Kata[5][6] or any other problem you can think of.
The main point is that it is not the problem in itself that is important, it is the practice.

It does not matter that you do not finish anything, is it the journey, and the act of noticing what you notice, that is the important bit.

Once you feel that you have a grip on TDD, then you can apply it on production code.
Because if you have to get stuck, if you have to fail, do it in a safe place, don’t do it during work time.

Paolo – I appreciated very much your blog posts about TDD and Erlang. What are in your opinion the best tools an Erlang developer can use for testing his code? EUnit? Common Tests? Something else?

Gianfranco - I do not have a favorite, to me they are tools which apply well for their respective tasks. The only thing I am very careful about, is the feedback time the tool gives me.

I always use EUnit for Unit Testing.

Then I can use Common Test for Function Testing, but if the specific test case would take 20 minutes to get into place properly with CT, and I can do the same thing in 2 minutes using a bash script with netcat, then I go for the speed choice.

In my unit, we have a  different tool which is based on top of CT, but with it’s own syntax. Mostly I try to avoid it, and the straw that broke the camels back, was when I could test a certain use-case by manual configuration and some bash’ing, in just under 10 minutes, and we had tried achieving the same thing using this tool, for 3 days.

Paolo – What do you think about continuous integration and continuous development? Do you recommend any specific framework or service for Erlang code? 

Gianfranco - I think they are necessary practices that give a lot of value and make life easier. By exposing complexity early, and dealing with stress up front, we remove the pressure of doing integration and delivery later in the project.

No recommendation, sorry.

It is the doing of the work that exposes what needs to be done.

Paolo – Last question: emacs, vim or what else? :D 

Gianfranco – Emacs, and vim when there is no emacs. I use this together with Tmux, and the no-mouse environment I use, enables a very high bandwith between my brain and the computer.

[1] Star Trek Reference
[2] https://github.com/Gianfrancoalongi/APLUnit
[3] such as TDD
[4] Yes, I did it, I stole the quote ; )
[5] http://www.cyber-dojo.com/
[6] https://github.com/Gianfrancoalongi/incremental_katas

Four years of Erlang blogging!

September 12, 2013 Leave a comment

Hello! September 2013 has come and here I am once more to give you some information about another year of Erlang blogging :D

Would you like to know something more about what I posted in this blog during 2013? Are you sure? Well, just keep on reading!

I can’t recall every single post I wrote this year, so I have to ad lib during this summary.

Since I noticed that you readers appreciate my interviews to famous Erlangers I kept on writing this kind of posts. I think nobody will be offended if I say that two of my favourite interviews this year were the one to Kenji Rikitake and the one to Steve Vinoski. I obviously want to thank all the others Erlangers that accepted my request for an interview and I hope that you had the chance to read at least some of their inspiring ideas and thoughts!

As promised during 2012 I tried to transform this blog into a space where Erlangers can get useful information about Erlang projects, events and books. In this sense I had the opportunity to write my impressions about the bookLearn You Some Erlang(thanks No Starch Press) and my thoughts about “Erlang by example with Cesarini and Thompson” (thanks to O’Reilly).

I also promoted Erlang Conferences all around the world and I hope that many of you attended the  EUC2013 or the recent Erlang Camp in Amsterdam (or the one that will be held soon in Nashville!).

Some posts were as usually  more technical, in this sense I enjoyed very much writing the one about TDD and kata, the one about the cost in terms of time you have in your supervisor when spawning multiple gen_servers. I also liked sharing with you the most interesting Erlang articles I read online lately in my recent post.

That all! As always I want to thank all you guys for your support and patience. Hope you will keep on following my blog during these last months of 2013 and during 2014! Have a nice Erlang year!

Categories: English, Erlang Tags: , , , ,

Interesting stuff to read about #erlang

August 25, 2013 3 comments

Hello there! 

Even though I haven’t been writing in this blog very much during the last moths, I had the chance to read many new (and old) interesting blog posts, articles and tutorial about Erlang.

Some of the stuff I had the chance to read was really well done and inspiring, therefore I would like to share these contents with you. In this blog post of mine I am going to make a list of the 4 articles that I loved most, with a brief description for each of team. Let’s start then!

Interesting Erlang stuff you should take a look at!

 

Here is my brief list; as I did in one of my previous blog posts I would like to remember that the order of the links is totally random!

  • Create and Deploy Your Erlang/Cowboy Application on Heroku in 30 Minutes: In this blog post, Roberto Aloi explains how to create and deploy easily a web application written using Erlang and Cowboy. I liked this article very much: Roberto is one of the most famous Erlangers out there and even though the application he presents is really easy it’s always a pleasure to read some of his code. Moreover the part related to deploy focuses on Heroku the well known cloud platform, showing how easy it is to deploy our Erlang application there.
  • Continuous Integration for Erlang With Travis-CI: continuous integration (CI) is a powerful tool. While I was searching for a good CI service to be used with one of my Erlang projects I ended up reading this nice blog post  by Ward Bekker. In his tutorial Ward explains briefly what are the main tool we have in Erlang to automate our tests and teaches how to connect a public GitHub repository to Travis-CI. I really liked this blog post, and if you are new to CI I suggest you to read as well this article by Martin Fowler: Continuous Integration.
  • Meck and Eunit Best Practices: TDD and testing in general are one of the things I am trying to learn more in these months. Even though this post by David Reid is not very recent (2011) I suggest you to read it if you want to learn more about Meck, the most famous Erlang mocking library written by Adam Lindberg.  Once more, if you are new to mocking and so on, I suggest you once more to read a great article by Martin Fowler: Mocks Aren’t Stubs.
     
  • A Week with Elixir: That’s true, Elixir is not Erlang, but I think we all should read what the great Joe Armstrong  thinks about this new interesting language written by José Valim. In his blog post Joe gives his impressions about Elixir and its syntax, providing code samples and really wonderful insights. If you want to know more about Elixir you can go to the official web page or consider buying this book by Dave Thomas.

And that’s all folks! I hope you will enjoy these stuff as much as I did! 

Follow

Get every new post delivered to your Inbox.

Join 26 other followers