We love to share

We’re curious and inquisitive by nature. If we come across a smart new technology, something interesting or a little odd, we’re compelled to share it with the world. Our blog is a vehicle for our musings, observations, thoughts, technical debates and discoveries.
Subscribe via RSS

Three WombatOAM Agents and a RabbitMQ

2017-11-14 by Ayanda Dube

As of version 2.7.0, WombatOAM has three additional RabbitMQ agents that are shipped as part of the main RabbitMQ plugin. These three agents are more specific to the internal elements of RabbitMQ, namely Queues, Channels, and Connections, with each providing finer and more detailed metrics per individually configured and selected metric attribute.

Read more

How to set up Push Notifications with MongoosePush

2017-11-10 by Rafał Słota

The new version of our messaging platform, MongooseIM 2.1.0, is about quality and accessibility. It introduces new tools and improvements making access to MongooseIM features easier. In this tutorial, we will dive deep into the details of MongoosePush - help your ops deploy and your devs build push notifications in your chat system. This “How To” will help you keep your infrastructure coherent and perfectly integrated, in order to deliver new features faster and with more confidence over time.

Read more

Monitoring RabbitMQ: Native Nodes vs. Independent Agents

2017-11-07 by Ayanda Dube

RabbitMQ users are accustomed to monitoring and keeping track of the status of their RabbitMQ installations using the native RabbitMQ Management plugin, or, alternatively, using third party monitoring tools. A common aspect which cuts across most of these off-the-shelf tools is full dependency on the RabbitMQ Management plugin. For you to monitor and manage your RabbitMQ installation via a web interface, the RabbitMQ Management plugin has to be enabled at all times on the RabbitMQ nodes.

Read more

MongooseIM 2.1.0: stronger platform for better chat experience

2017-11-02 by Nicolas Vérité

A great dilemma for app makers is whether to develop their chat in house, or buy an off-the-shelf solution (“Make-Or-Buy Decision”). Between these extremes the MongooseIM platform provides a flexible set of software components paired with services to fit companies’ specific strategies. It solves the problem of asset building when it comes to chat or instant messaging experiences.

Read more

Building the ideal technology stack for online gambling & betting

2017-10-26 by Areege Al Zubaidi

Over the years, we gained great insight into the industry. Erlang is uniquely suited to address the biggest technological challenges of Online Gambling & Betting companies.

Read more

Getting started with WombatOAM

2017-10-24 by Zsolt Dudas

How to get started with WombatOAM - from prerequisites, installation, running, and setting up WombatOAM and its web dashboards.

Read more

From the developer: What’s new in WombatOAM 3.0.0?

2017-10-19 by Lajos Gerecs

A lot has changed since the last major release of WombatOAM; 3.0.0. There were several minor releases in the past year and below you’ll find a non-comprehensive list of the main features and improvements introduced in this time.

Read more

9 unmissable upcoming Erlang + Elixir events

2017-10-17 by Areege Al Zubaidi

2017 has been an incredible year for sharing knowledge and experience within the Erlang and Elixir community and beyond! Here's a roundup of the exciting events we're proud to be involved with in the coming months, and a look back at some of the talks from the past year.

Read more

Messaging feature sets and their benefits

2017-10-12 by Nicolas Vérité

Instant messaging or chat is a constantly self-reinventing universe. In this article we focus on businesses who are building chat apps and apps with chat. From early stage startups to big corporates, it is always good to remind and always be conscious of the basics of business, and how the interlinking and mechanics of social and messaging allows you to accelerate growth and consolidate your sustainability.

Read more

Programming languages for online betting: an investigation of Go, Erlang, and Elixir

2017-10-10 by Stuart Whitfield

“The right tool for the job” is a popular adage in the online betting industry. In my time at Erlang Solutions, I’ve learned that there are three key reasons why Erlang and Elixir are often the right tool for the job in online gambling and betting: superior concurrency, scalability, and reliability.

Read more

Master your pirate metrics, AARRR

2017-10-05 by Nicolas Vérité

Instant messaging or chat is a constantly self-reinventing universe. In this article we focus on businesses who are building chat apps and apps with chat. From early stage startups to big corporates, it is always good to remind and always be conscious of some the basics of business, and how the interlinking and mechanics of social and messaging allows you to accelerate growth and consolidate your sustainability.

Read more

A brief history of Riak

2017-09-05 by Areege Al Zubaidi

It has been an eventful year for the Riak community so far. For those struggling to keep up with the developments, we've put a quick timeline of events together, highlighting the everything any self-respecting member of the community needs to know.

Read more

The top 10 Elixir talks of 2017 so far

2017-08-16 by Claudio Ortolina

2017 has been a great year for Elixir! It turned 5 years old this January, and the language has just gone from strength to strength. It’s also been a fantastic year for sharing of knowledge within the community. Here’s our pick of the most popular Elixir talks of 2017 so far.

Read more

Riak commercial support now available post Basho

2017-08-10 by Stuart Whitfield

Erlang Solutions is pleased to announce a global partnership to provide enterprise grade support to users of the Riak suite of products. As of today, we offer a range of subscription support options (including 24/7 enterprise-grade) along with expert Riak and Erlang consulting services.

Read more

MongooseIM 2.1.0beta2 - Expanded Platform, first class quality

2017-07-06 by Piotr Nosek

MongooseIM is a platform for businesses to build messaging and social apps, or add messaging and social features to existing apps. When you need to adapt to growing user demand, we're here to guarantee that your service scales, grows with new functionalities and remains reliable for all. The fullstack MongooseIM platform offers various components, both for the backend (Erlang, Elixir) and the frontend (iOS, Android, Web) for you to pick up and assemble like pieces of a puzzle.

Read more

Getting started: Building the core dev team

2017-07-05 by Francesco Cesarini

You've decided to do it. You're going to bravely go where no-one in your organisation has gone before - a non-mainstream programming language. First thing's first, you need to build your core team. In this excerpt from The route to the successful adoption of non-mainstream programming languages, Francesco Cesarini, Erlang and Elixir veteran, spells out how to build your all-important core team.

Read more

How to build a self-sustaining development team

2017-06-20 by Francesco Cesarini

So you’ve already built the prototype, failed forwards, and secured approval to move on with engineering the final product. It’s vital that you keep the team that built the prototype and use them to mentor the new recruits. In doing so, you need to make sure your team becomes self-sustainable.

Read more

Three reasons to review your online betting tech stack

2017-06-06 by Stuart Whitfield

The online gambling & betting industry has come a long way from SMS bets and WAP sites. But there is still reason for bookmakers to review their tech stack. First, punters expect perfection of their digital experiences. Second, strong industry competition gives dissatisfied customers other options. Last, legacy systems can hamper innovation and competitiveness in the marketplace.

Read more

Advanced RabbitMQ Support Part 1: Leveraging WombatOAM Alarms

2017-05-31 by Ayanda Dube

RabbitMQ is often the go-to solution for message orientated middleware due to its seamless ease of use and adaptability to different use-cases. Client testimonials back it up too. For such a highly esteemed system, playing such a crucial role in some of the most mission-critical solutions in the industry, you'd think it was fully equipped with an arsenal of alarm systems. Unfortunately, that's not the case, but I have a solution!

Read more

Docs in the shell 2: Man-Erlang interface

2017-05-23 by Radek Szymczyszyn

It's been a while since the last update on docsh and over a year since the idea of shell access to Erlang docs originally emerged in my mind. Believe it or not, the project has seen a huge progress, though one might argue that at a pace a tad slower than the speed of light. By the way, if you ask me, it's "doc-es-age", not "doc-shhh".

Read more

Installing Elixir on a Raspberry Pi, the easy way

2017-05-02 by Ju Liu

In this tutorial we will go through the easiest way of installing the latest and greatest versions of Erlang and Elixir on your Raspberry Pi. Since the Raspberry is still a fairly low-powered device, we will use precompiled packages instead of compiling everything from source. This will also help us to keep our system updated in the future.

Read more

Rebuilding the Mission Impossible security system in Elixir on RaspberryPi

2017-05-02 by Ju Liu

Yes, you've read that right. In this tutorial we are going to rebuild the amazing security system featured in the 1996 all time classic Mission Impossible. We will use a Raspberry Pi, lots of sensors and we'll write the code in Elixir.

Read more

5 Elixir highlights from Erlang & Elixir Factory 2017

2017-04-25 by Claudio Ortolina

The latest Erlang & Elixir Factory San Francisco was definitely worth the trip: new faces, interesting ideas and a buzzing hallway track. As usual, plenty of top-notch technical talks, but personally I found that two important trends emerged: teaching and embedded devices. In that respect, here are some highlights:

Read more

MongooseIM 2.1.0beta1 what happens when you give your team freedom

2017-04-13 by Michał Piotrowski

MongooseIM is a highly technical platform for businesses to build messaging and social apps, or add messaging and social features to an existing app. The fullstack MongooseIM platform offers various components, both for the backend (Erlang, Elixir) and the frontend (iOS, Android, Web) for you to pick up and assemble like pieces of a puzzle. Today, the MongooseIM platform delivers a new beta version of the messaging server, as well as new push notification server.

Read more

Fault Tolerance doesn't come out of the box - Alchemy 101: Part 3

2017-03-29 by Thomas Hutchinson

One of the biggest selling points of Elixir is the means it gives you to write fault tolerant applications via its concurrency model. Processes can broadcast their failure to dependant processes which can take appropriate action. **You decide how processes should respond to failure based on your use case. There is no single solution.** I'll give you an example in which not handling failure led to, you guessed it, more failure.

Read more

How Would the World Embrace Video Collaboration if it Couldn’t Scale?

2017-03-28 by Nicholas Reid, SVP of Product Management, Vidyo

“How would the world embrace video collaboration if it couldn’t scale?” This is a big question that Vidyo spotted early on, way back in 2005, as it set out to pioneer the next generation of video conferencing. Video collaboration at that time was primarily used for communicating between one traditional conference room to another. Since then, the world has changed.

Read more

Scaling RabbitMQ on a CoreOS cluster through Docker

2017-03-22 by Gabriele Santomaggio

Dynamic scaling is a fundamental requirement for modern distributed system architectures. Using CoreOS and Docker, it's possible to rapidly scale machines and containers, respectively. RabbitMQ fits perfectly well with containers. In this post, we will show how to scale RabbitMQ on CoreOS through Docker. Erlang Solutions offers world-leading RabbitMQ consultancy, support & tuning solutions.

Read more

Erlang OS X Installer: Official Release

2017-03-15 by Karol Urbanski

With Erlang/OTP 19.3 coming out today, we've decided to release our new Erlang Solutions OS X Installer. From now on, the old installer should be considered deprecated. During the Erlang/OTP 20 release cycle, it will stop being provided for new versions. The new installer is now our recommended option. Fear not, though! The new installer has a whole slew of options that are likely to please any serious coder. I've summarised them for you in this post.

Read more

21 XMPP use-cases and the best ways to achieve them

2017-03-02 by Piotr Nosek

If you're considering XMPP for your project but you are unsure if it can provide the functionality you need, you'll eventually end up here: I'm pretty sure you'll be quite intimidated by such a long list of features and extensions. Fear not, help is here!

Read more

MongooseIM 2.0.1 more stability for app developers

2017-02-22 by Nicolas Vérité

MongooseIM 2.0.1 brings a lot of improvements and much more stability: SSE (Server Sent Events) for real-time data push for REST API users, support for Cassandra NOSQL database for message archive, HTTP file upload for in-chat media, and much more.

Read more

From Elixir Mix configuration to release configuration - Alchemy 101 Part 2

2017-01-19 by Thomas Hutchinson

Elixir comes packaged with a great build tool called Mix. As you start gearing up for production you will begin to explore creating releases with tools such as exrm and distillery. At this point it pays to be aware of what happens to your Mix configuration when you create a release. In part 2 of our Alchemy101 series, we'll take a look at this.

Read more

Build a complete iOS messaging app using XMPPFramework - Part 2

2017-01-12 by Andres Canal

'Build a complete iOS messaging app using XMPPFramework' is a tutorial that shows you how to build a fully functional instant messaging iOS app using the very cool XMPPFramework library and Swift3. In the first part you got the basic XMPP knowledge needed to get you started, and now you will learn how to how to create a connection and authenticate to your app.

Read more

Build a complete iOS messaging app using XMPPFramework - Tutorial Part 1

2016-11-30 by Andres Canal

The idea of this tutorial series is to get a complete functional iOS messaging app using XMPPFramework. We are going to slowly start introducing XMPP concepts in an easy and understandable way while building our app at the same time. Our final goal is to get an app that allows us to authenticate with the server, add/remove contacts, send presences, one to one chat, group chats and more!

Read more

MongooseIM platform 2.0.0: higher value and lower friction

2016-11-14 by Nicolas Verite

MongooseIM is the open source mobile messaging platform that provides massive scalability. In the past months we worked hard on version 2.0.0 of the platform, which brings new features that allow the addition of innovative real-time, social features to existing apps. This post will walk you through all the changes that differentiate the MongooseIM platform on the market.

Read more

Elixir Module Attributes - Alchemy 101: Part 1

2016-11-08 by Thomas Hutchinson

As you start working with Elixir, you will start questioning how and why things work and behave the way they do, and if there are better ways to do things. The new Alchemy 101 blog series addresses common questions being asked throughout the community. In part 1 let's look at when module attributes are evaluated and what this means.

Read more

Erlang (and Elixir) distribution without epmd

2016-10-26 by Magnus Henoch

When Erlang nodes are connected to form a cluster, they usually use the Erlang Port Mapper Daemon (epmd) to find each other. In this post we explore how it works, what potential issues it has, and what we can use instead.

Read more

MongooseIM 2.0.0beta2: the power of an XMPP platform, with the simplicity of a REST API

2016-10-11 by Nicolas Verite, Michał Piotrowski

We are thrilled to announce the MongooseIM platform version 2.0.0beta2. MongooseIM platform 2.0.0beta2 is about one massive change: a REST API, both for backend integration, and for client/server development. This is a major step towards the game-changing version 2.0.0, which will be released in the coming weeks. MongooseIM 2.0.0 will tremendously lower the barrier of entry to our platform for most developers worldwide.

Read more

RabbitMQ monitoring: WombatOAM and the RabbitMQ Management plugin

2016-10-04 by Ayanda Dube

In this post we show how RabbitMQ nodes experience less strain, and thus perform much better when being monitored by WombatOAM, as compared to monitoring using the RabbitMQ Management Plugin. But both tools can be viewed as complementary to each other, and we suggest a best practice scenario for using them together. Erlang Solutions offers world-leading RabbitMQ consultancy, support & tuning solutions.

Read more

Erlang Installer: A Better Way To Use Erlang On OSX

2016-09-22 by Karol Urbanski

Obtaining Erlang/OTP has become a lot easier on OS X. We're happy to share the better, slicker version of the Erlang Solutions OS X Installer.

Read more

Operational nightmare fun: dealing with misconfigured Riak Clusters

2016-09-21 by Viktoria Fordos and Csaba Hoch

We learnt many valuable lessons while providing professional Riak support. In this blog post, we tell one of our war stories. A story about investigating a struggling Riak cluster, and finding out why Riak's usual self-healing processes got stuck.

Read more

Erlang & Elixir DevOps From The Trenches - Why we felt the need to formalize operational experience with the BEAM virtual machine

2016-09-14 by Francesco Cesarini

Every time an operational issue is addressed and fixed in an Erlang or Elixir cluster, lessons are learnt. This blog post describes some of these lessons, and how, through WombatOAM, we try to formalise them in reusable code allowing us to share decades of operational experience across any system running on the BEAM virtual machine.

Read more

The continuing headaches of distributed programming

2016-08-10 by Guest author: Andy Oram, Senior Editor O'Reilly Media

Despite ground-breaking advances in languages and utilities that purport to simplify parallel or distributed computing, designing a system that supports modern commerce and other high-priority applications remains one of the most difficult tasks in computing. Senior editor at O'Reilly Media Andy Oram identifies the reason this is still an issue.

Read more

Learn to forget

2016-07-20 by Brujo Benavides

On experiences and patterns for learning Erlang (and Elixir?), with an example. From an experienced Erlang developer and trainer - Brujos Benavides, Inaka's CTO.

Read more

MongooseIM 2.0.0beta1 is out! Explore the new features

2016-07-05 by Michał Piotrowski

We are proud to present the latest step on our road to the MongooseIM 2.0.0 release. Enjoy MongooseIM 2.0.0beta1 - now available on GitHub, and see the scope of changes that made us jump to 2.0.0.

Read more

Erlang distribution over TLS

2016-06-28 by Magnus Henoch

Find out how to run the Erlang distribution protocol over TLS and what problems that may or may not solve. The "distribution protocol" is the means by which multiple Erlang nodes join together to form a cluster. When nodes are clustered, any process can send messages to processes on any other node, and spawn new processes on any other node. This forms the basis for distributed applications such as Mnesia, the database implementation that comes with Erlang/OTP, and RabbitMQ, the message broker.

Read more

Exploring with, the Elixir special form

2016-05-27 by Marcos Almonacid

Our colleague Marcos Almonacid from Inaka explored with, the new Elixir special form introduced in v1.2. A good tool to write simple code when it's used in the right situation.

Read more

Welcome to the third generation of Instant Messaging! Part 2/2

2016-04-20 by Nicolas Verite

This is the second and last part of the “Welcome to the third generation of Instant Messaging!”. This post identifies and discusses the third generation of IM, starting recently and continuing to present day. Let’s simply walk through some usages and user experiences, core concepts, underlying technologies and their social impact, as well as philosophies that have greatly evolved over time. This is a very simple and basic list of market observations and analysis.

Read more

Welcome to the third generation of Instant Messaging! Part 1/2

2016-04-14 by Nicolas Verite

Instant Messaging has come a long way from the moment IRC’s success paved the way for the development of online communication. This post identifies and discusses three generations of IM, starting in 1998 and continuing to present day. Let’s simply walk through some usages and user experiences, core concepts, underlying technologies and their social impact, as well as philosophies that have greatly evolved over time. This is a very simple and basic list of market observations and analysis.

Read more

Erlang Innovation Race: The Winners!

2016-04-12 by Andra Dinu

To honour the tradition of the Grand National, we organised our own Erlang Innovation Race: We picked some pretty cool Erlang companies and over the weekend we allowed everybody to push them ahead in the race with one click. See the companies and the results here.

Read more

Erlang 19.0 Garbage Collector

2016-04-07 by Lukas Larsson

This blog post describes the state of the Erlang garbage collector in Erlang/OTP 19.0. The things that will change in 19.0 are clearly marked in each of the sections. The Erlang/OTP master branch is a moving target and some of the things may have changed by the time 19.0 was released.

Read more

Keep in touch with Erlang & Elixir

2016-04-04 by Erlang Solutions

Every month we send around our monthly selection of Erlang and Elixir related news, blogs, case studies, videos and podcasts. Over 3000 people subscribed to receive it so far, and we hope you will join them. Read our last issue in this post.

Read more

Erlang gen_server Reloaded

2016-03-30 by Zsolt Laky

Writing gen_servers has become a routine. We have dozens of gen_servers in our applications, but when we get to a point of extending the server behaviour, we start scratching our heads. Which of our servers have the lowest response time? How long does it take for a request to be processed? Implementing these metrics may involve changing the code in all of our servers. With CSI, we can manage our servers' behaviour and metrics in one place.

Read more

Take Control of your RabbitMQ queues

2016-03-23 by Ayanda Dube

Queues are the most fundamental aspect of RabbitMQ. Previously, users didn’t have as much control over determining queue locations within a cluster. This blog will show you how to use a new feature and take control over distribution of queues. Erlang Solutions offers world-leading RabbitMQ consultancy, support & tuning solutions.

Read more

MongooseIM 1.6.2 is out. Time to upgrade!

2016-03-22 by Michal Piotrowski and Rafal Studnicki

We are pleased to announce the release of MongooseIM 1.6.2, the last release in the 1.6.x family.  We encourage everyone to upgrade.Find out more about our demo, load tests and all the significant changes. 1.6.2 is about "stability": finished Riak for all major modules, docker-based demo, load test, improved tests, new enhancements.

Read more

Improving Erlang Enterprise Tooling: An Open Source Initiative by bet365

2016-03-14 by Andra Dinu

Last week bet365 released the source code for implementing SOAP in Erlang and announced that they'll also release the code for improving ODBC stability and performance in the near future. Chandru Mullaparthi, Head of Software Architecture at bet365 gave us a short interview about the initiative and what it could mean for the Erlang community.

Read more

Docs in the Shell

2016-02-09 by Radek Szymczyszyn

Still can't write match specs from the top of your head? Forgetting again and again dbg flags or the syntax of recon trace patterns? Ever wished for access to documentation straight from erl the way it's possible in other languages like Python, Ruby or Elixir? Radek Szymczyszyn has felt this pain, and he tried to come up with a solution. World, meet docsh.

Read more

XMPP Summit 19 & FOSDEM 2016: our thoughts

2016-02-02 by Michal Piotrowski and Nicolas Vérité

Part of the MongooseIM team attended the XMPP Summit and FOSDEM last week. They put together a quick review of the most interesting things they saw and did at the two events.

Read more

How to analyse a BEAM core dump?

2016-01-26 by Rafal Studnicki

You have your Erlang system running for a long time now and all of a sudden the BEAM process disappears on one of the nodes. In the OS logs you can see that the process was killed because of a segmentation fault, but besides that you have nothing. Obviously, you hadn't been prepared for such a scenario and a core dump of the crashed process wasn't generated. Now, after waiting (too long) for the segmentation fault to occur again, you ended up with a precious file. But what's next?

Read more

MongooseIM 1.6.1 is released

2016-01-18 by Nicolas Vérité, Ludwik Bukowski, and Stefan Strigler

MongooseIM 1.6.1 starts the maintenance series with more Riak KV, more tests and more enhancements.

Read more

Secure Shell for Your Erlang Node

2016-01-14 by Marc Sugiyama

Say you want to connect to the shell of your Erlang node. It's easy. You connect a remote shell from another Erlang node - if you're on the same subnet - and know the cookie - and have Erlang installed. OK, maybe not that easy. How about connecting via ssh? You don't need to know the cookie, you don't need Erlang installed, and you can connect from anywhere. Here's how you add an ssh server to your Erlang node.

Read more

MongooseIM 1.6: Riak, DevOps love, and so much more!

2015-11-25 by Nicolas Vérité and Joseph Yasemides

MongooseIM is a massively scalable instant messaging platform, based on the XMPP protocol and written by us in Erlang. The new release includes Riak support, significant improvement to DevOps and ease-of-integration with existing infrastructures. Read all about it in the new blog post.

Read more

Thank you for your message

We sent you a confirmation email to let you know we received it. One of our colleagues will get in touch shortly.
Have a nice day!