# Erlang

Erlang is a programming language used to build massively scalable soft real-time systems, with runtime support for concurrency, distribution, and fault tolerance.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## What Now? Handling Errors in Large Systems

DevFeed: [What Now? Handling Errors in Large Systems](<https://devfeed.tech/articles/what-now-handling-errors-in-large-systems-12583.md>)

Original publisher: [Read original article](<http://brooker.co.za/blog/2025/11/20/what-now.html>)

Author: Marc Brooker

Published: 2025-11-20T00:00:00Z

Content type: article

Language: en

Sources: [Marc Brooker's Blog](<https://devfeed.tech/sources/marc-brooker-s-blog.md>), [Marc Brooker's Blog](<https://devfeed.tech/sources/marc-brooker-s-blog-2.md>)

Topics: [systems](<https://devfeed.tech/topics/systems.md>), [Resilience](<https://devfeed.tech/topics/resilience.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Processes](<https://devfeed.tech/topics/processes.md>), [autoscaling](<https://devfeed.tech/topics/autoscaling.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>), [Serverless](<https://devfeed.tech/topics/serverless.md>), [Erlang](<https://devfeed.tech/topics/erlang.md>), [Containers](<https://devfeed.tech/topics/containers.md>), [servers](<https://devfeed.tech/topics/servers.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [autoscaling](<https://devfeed.tech/tags/autoscaling.md>), [aws](<https://devfeed.tech/tags/aws.md>), [component](<https://devfeed.tech/tags/component.md>), [errors](<https://devfeed.tech/tags/errors.md>), [http](<https://devfeed.tech/tags/http.md>), [outage](<https://devfeed.tech/tags/outage.md>), [process](<https://devfeed.tech/tags/process.md>), [resilience](<https://devfeed.tech/tags/resilience.md>), [rust](<https://devfeed.tech/tags/rust.md>), [server](<https://devfeed.tech/tags/server.md>), [serverless](<https://devfeed.tech/tags/serverless.md>), [servers](<https://devfeed.tech/tags/servers.md>), [systems](<https://devfeed.tech/tags/systems.md>)

### AI overview

An analysis of error handling in large systems, using Rust's Result and unwrap as a starting point. It argues that whether a component should crash is a system-wide architectural decision shaped by failure correlation, error-handling layers, business logic, and the value of continuing with a last-known-good configuration or data version.

### Source excerpt

What Now? Handling Errors in Large Systems More options means more choices. Cloudflare's deep postmortem for their November 18 outage triggered a ton of online chatter about error handling, caused by a single line in the postmortem: .unwrap() If you're not familiar with Rust, you need to know about Result, a kind of struct that can contain either a successful result, or an error. unwrap says basically "return the successful results if there is one, otherwise crash the program"1. You can think of it like an assert. There's a ton of debate about whether asserts are good in production2, but most are missing the point. Quite simply, this isn't a question about a single program. It's not a local property. Whether asserts are appropriate for a given component is a global property of the system, and the way it handles data. Let's play a little error handling game. Click the ✅ if you think crashing the process or server is appropriate, and the ❌ if you don't. Then you'll see my vote and justification. One of ten web servers behind a load balancer encounters uncorrectable memory errors, and takes itself out of service. ✅ ❌ Your vote: My vote: ✅ Uncorrectable memory errors are independent, and do not depend on user-provided content. In the presence of bad memory, it's impossible for a program to proceed safely. Taking the machine out of service is the safest course of action. One of ten multi-threaded application servers behind a load balancer encounters a null pointer in business logic while processing a customer request. ✅ ❌ Your vote: My vote: ❌ Customer requests triggering bugs in business logic isn't a good reason to bring the whole server down. Instead, fail that particular request (returning an HTTP 5xx error), and continue with other user requests. In approaches like Erlang, or even Lambda, it may be the right approach to crash the whole application in response to a bad request, because this crash is handled at a higher layer in the architecture. This is also why I pr

## How Klarna Migrated the KRED System from Mnesia to Postgres with Zero Downtime

DevFeed: [How Klarna Migrated the KRED System from Mnesia to Postgres with Zero Downtime](<https://devfeed.tech/articles/the-fellowship-of-the-forgotten-35655.md>)

Original publisher: [Read original article](<https://engineering.klarna.com/the-fellowship-of-the-forgotten-d341045a6123?source=rss----86090d14ab52---4>)

Author: Onno Vos Dev

Published: 2025-02-26T09:04:27Z

Content type: article

Language: en

Sources: [Klarna Engineering](<https://devfeed.tech/sources/klarna-engineering.md>)

Topics: [Databases](<https://devfeed.tech/topics/databases.md>), [Erlang](<https://devfeed.tech/topics/erlang.md>), [Replication](<https://devfeed.tech/topics/replication.md>), [sharding](<https://devfeed.tech/topics/sharding.md>), [Transactions](<https://devfeed.tech/topics/transactions.md>), [systems](<https://devfeed.tech/topics/systems.md>)

Tags: [cluster](<https://devfeed.tech/tags/cluster.md>), [databases](<https://devfeed.tech/tags/databases.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [klarna](<https://devfeed.tech/tags/klarna.md>), [memory](<https://devfeed.tech/tags/memory.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [production](<https://devfeed.tech/tags/production.md>), [replication](<https://devfeed.tech/tags/replication.md>), [scaling](<https://devfeed.tech/tags/scaling.md>), [sharding](<https://devfeed.tech/tags/sharding.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [transactions](<https://devfeed.tech/tags/transactions.md>)

### AI overview

This article describes Klarna's migration of KRED, an Erlang servicing system, from Mnesia to Postgres with zero downtime. It explains the original replicated seven-node architecture, the system's scaling challenges, and a plan involving sharding across multiple clusters.

### Source excerpt

How we migrated from Mnesia to Postgres with zero downtime Back in December 2004, an Erlang application was born called KRED (referring to the freshly-started company called Kreditor, now known as Klarna). KRED is one of the "servicing systems" at Klarna and keeps track of consumer debt (among other things). It was powered by Mnesia and consisted of a cluster of 7 nodes, each holding a full copy of the database on disk. The data was replicated using a custom replication mechanism built in-house by Klarna. One node was elected as the leader and its database was considered the source of truth in the system. All database transactions were executed on the leader and writes were replicated to the rest of the nodes, the so-called followers. The Mnesia database was around 15 TB and at its peak in 2018 around 1.3 TB was held in memory at all times. Considering that few suppliers were selling hardware with such specs, it's easy to claim the crown of one of the biggest Mnesia databases in terms of in-memory storage, that was running in production. The rest of the data was offloaded to disk using mnesia_eleveldb. KRED has been a stable workhorse at Klarna so why change a winning concept? Get ready, for a two part blog post where we'll first go through our journey of how we went about this and secondly, how we made Mnesia behave just like Postgres and implemented our version serializable isolation level on top of Postgres! How the journey started Three engineers, sat down in a bar in Stockholm, Sweden and asked this question: 'When Klarna truly takes off, will KRED survive? Assuming "no", and presented with a blanco check, how would we tackle this problem?' The answer quickly revolved around the issues of running Mnesia on an even larger cluster and with leveldb compaction hitting some hot tables during peak times. One can only imagine how that problem would just continue to get worse over time. Considering the three engineers had worked on KRED for a long time, scaling KRED wa

## New Chainguard Images December 2024: Adoptium, AWX, CouchDB

DevFeed: [New Chainguard Images December 2024: Adoptium, AWX, CouchDB](<https://devfeed.tech/articles/new-chainguard-images-december-2024-adoptium-awx-couchdb-13175.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/new-chainguard-images-december-2024-adoptium-awx-couchdb>)

Published: 2025-01-16T00:00:00Z

Content type: release

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [Adoptium](<https://devfeed.tech/topics/adoptium.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [Ansible](<https://devfeed.tech/topics/ansible.md>), [Java](<https://devfeed.tech/topics/java.md>), [NoSQL](<https://devfeed.tech/topics/nosql.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Erlang](<https://devfeed.tech/topics/erlang.md>), [.NET MAUI](<https://devfeed.tech/topics/net-maui.md>), [Process](<https://devfeed.tech/topics/process.md>)

Tags: [adoptium](<https://devfeed.tech/tags/adoptium.md>), [ansible](<https://devfeed.tech/tags/ansible.md>), [apache](<https://devfeed.tech/tags/apache.md>), [awx](<https://devfeed.tech/tags/awx.md>), [chainguard](<https://devfeed.tech/tags/chainguard.md>), [chainguard-images](<https://devfeed.tech/tags/chainguard-images.md>), [container-images](<https://devfeed.tech/tags/container-images.md>), [couchdb](<https://devfeed.tech/tags/couchdb.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [helm](<https://devfeed.tech/tags/helm.md>), [java](<https://devfeed.tech/tags/java.md>), [jdk](<https://devfeed.tech/tags/jdk.md>), [linkerd](<https://devfeed.tech/tags/linkerd.md>), [net-11](<https://devfeed.tech/tags/net-11.md>), [nosql](<https://devfeed.tech/tags/nosql.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [opentofu](<https://devfeed.tech/tags/opentofu.md>)

### AI overview

Chainguard describes its December 2024 batch of 39 new Chainguard Images, highlighting images for Adoptium, AWX, and Apache CouchDB. The article notes FIPS-enabled variants and summarizes the intended uses and image characteristics.

### Source excerpt

Chainguard released several new images in December 2024, including images for Adoptium, AWX, CouchDB, and others. Check out the full list.

## Elixir clustering using Postgres

DevFeed: [Elixir clustering using Postgres](<https://devfeed.tech/articles/elixir-clustering-using-postgres-365.md>)

Original publisher: [Read original article](<https://supabase.com/blog/elixir-clustering-using-postgres>)

Author: Filipe Cabaço

Published: 2024-01-09T07:00:00Z

Content type: article

Language: en

Sources: [Supabase Blog](<https://devfeed.tech/sources/supabase-blog.md>)

Topics: [Elixir](<https://devfeed.tech/topics/elixir.md>), [Erlang](<https://devfeed.tech/topics/erlang.md>), [Supabase](<https://devfeed.tech/topics/supabase.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [Latency](<https://devfeed.tech/topics/latency.md>)

Tags: [building](<https://devfeed.tech/tags/building.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [elixir](<https://devfeed.tech/tags/elixir.md>), [hosting](<https://devfeed.tech/tags/hosting.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [latency](<https://devfeed.tech/tags/latency.md>), [learn](<https://devfeed.tech/tags/learn.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [servers](<https://devfeed.tech/tags/servers.md>)

### AI overview

This article explains Supabase's open-source libcluster Postgres Strategy for connecting multiple Elixir nodes without introducing an additional service. It describes using Postgres NOTIFY and LISTEN to discover nodes, propagate address payloads, and support cluster formation and healing through libcluster.

### Source excerpt

Learn about our approach to connecting multiple nodes in Elixir using Postgres

## Router 2.0 Common Runtime Router: The Road to Beta

DevFeed: [Router 2.0 Common Runtime Router: The Road to Beta](<https://devfeed.tech/articles/router-2-0-common-runtime-router-the-road-to-beta-26491.md>)

Original publisher: [Read original article](<https://www.heroku.com/blog/router-2dot0-the-road-to-beta/>)

Author: Elizabeth Cox

Published: 2023-10-30T22:00:00Z

Content type: article

Language: en

Sources: [Heroku](<https://devfeed.tech/sources/heroku.md>)

Topics: [Heroku](<https://devfeed.tech/topics/heroku.md>), [Routing (disambiguation)](<https://devfeed.tech/topics/routing.md>), [Erlang](<https://devfeed.tech/topics/erlang.md>), [servers](<https://devfeed.tech/topics/servers.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [legacy](<https://devfeed.tech/topics/legacy.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [http-server](<https://devfeed.tech/tags/http-server.md>), [legacy](<https://devfeed.tech/tags/legacy.md>), [modernization](<https://devfeed.tech/tags/modernization.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [release](<https://devfeed.tech/tags/release.md>), [router-2-0](<https://devfeed.tech/tags/router-2-0.md>), [routing](<https://devfeed.tech/tags/routing.md>), [scalability](<https://devfeed.tech/tags/scalability.md>)

### AI overview

Heroku describes the beta release of Router 2.0, a replacement for the existing Common Runtime router planned for 2024. The article explains the legacy router's Erlang-based architecture and the challenges that motivated a new implementation, including safer delivery of routing features and planned HTTP/2 support.

### Source excerpt

Last month, Heroku announced the beta release of Router 2.0, the new Common Runtime router! As part of our commitment to infrastructure modernization, Heroku is making upgrades to the Common Runtime routing layer. The beta release of Router 2.0 is an important step along this journey. We're excited to give you an inside look at [...] The post Router 2.0 Common Runtime Router: The Road to Beta appeared first on Heroku.

## Hopping into spring with Chainguard's RabbitMQ Image

DevFeed: [Hopping into spring with Chainguard's RabbitMQ Image](<https://devfeed.tech/articles/hopping-into-spring-with-chainguard-s-rabbitmq-image-13082.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/hopping-into-spring-with-chainguards-rabbitmq-image>)

Published: 2023-02-24T00:00:00Z

Content type: article

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [chainguard images](<https://devfeed.tech/topics/chainguard-images.md>), [Messaging](<https://devfeed.tech/topics/messaging.md>), [Security](<https://devfeed.tech/topics/security.md>), [Cloud Native Ecosystem](<https://devfeed.tech/topics/cloud-native-ecosystem.md>), [Containers](<https://devfeed.tech/topics/containers.md>), [vulnerability scanning](<https://devfeed.tech/topics/vulnerability-scanning.md>), [Erlang](<https://devfeed.tech/topics/erlang.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [base-images](<https://devfeed.tech/tags/base-images.md>), [bazel](<https://devfeed.tech/tags/bazel.md>), [chainguard](<https://devfeed.tech/tags/chainguard.md>), [chainguard-images](<https://devfeed.tech/tags/chainguard-images.md>), [container-images](<https://devfeed.tech/tags/container-images.md>), [containers](<https://devfeed.tech/tags/containers.md>), [cosign](<https://devfeed.tech/tags/cosign.md>), [cves](<https://devfeed.tech/tags/cves.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [image](<https://devfeed.tech/tags/image.md>), [messaging](<https://devfeed.tech/tags/messaging.md>), [minimal-image](<https://devfeed.tech/tags/minimal-image.md>), [provenance](<https://devfeed.tech/tags/provenance.md>), [rabbitmq](<https://devfeed.tech/tags/rabbitmq.md>), [rabbitmq-image](<https://devfeed.tech/tags/rabbitmq-image.md>), [sboms](<https://devfeed.tech/tags/sboms.md>), [secure-images](<https://devfeed.tech/tags/secure-images.md>), [security](<https://devfeed.tech/tags/security.md>), [slsa](<https://devfeed.tech/tags/slsa.md>), [software-supply-chain](<https://devfeed.tech/tags/software-supply-chain.md>)

### AI overview

Chainguard announces a Chainguard Image for RabbitMQ, an open-source message broker used in cloud-native applications. The image is built from source on Wolfi, with custom Erlang and OTP components, continuous patching, minimal CVEs, SBOMs, signatures, and SLSA Build Level 2 provenance.

### Source excerpt

Unlock advanced messaging capabilities with Chainguard's RabbitMQ image, designed for robustness and security.

## Taking Another Look at Phoenix and Elixir - Part 1 - Upgrading

DevFeed: [Taking Another Look at Phoenix and Elixir - Part 1 - Upgrading](<https://devfeed.tech/articles/taking-another-look-at-phoenix-and-elixir-part-1-upgrading-28161.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/elixir/2020/09/15/taking-another-look-at-phoenix-and-elixir-part-1-upgrading.html>)

Author: Fuzzygroup

Published: 2020-09-15T14:23:00Z

Content type: tutorial

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [Elixir](<https://devfeed.tech/topics/elixir.md>), [phoenix](<https://devfeed.tech/topics/phoenix.md>), [Homebrew](<https://devfeed.tech/topics/homebrew.md>), [Package manager](<https://devfeed.tech/topics/package-manager.md>), [Erlang](<https://devfeed.tech/topics/erlang.md>), [Rails](<https://devfeed.tech/topics/rails.md>)

Tags: [elixir](<https://devfeed.tech/tags/elixir.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [homebrew](<https://devfeed.tech/tags/homebrew.md>), [installation](<https://devfeed.tech/tags/installation.md>), [phoenix](<https://devfeed.tech/tags/phoenix.md>), [rails](<https://devfeed.tech/tags/rails.md>), [tooling](<https://devfeed.tech/tags/tooling.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>)

### AI overview

A practical guide to upgrading Elixir, Erlang/OTP, Mix, Hex, and Phoenix, then creating a sample Phoenix application and preparing to compare it with an existing Rails codebase.

### Source excerpt

I've been on the fence about Phoenix and Elixir for a while and I thought I'd take at least a quick dive. I've had a development system for Phoenix and Elixir since at least 2016 but I haven't done much. This means that the first task is bringing it into the 2020s. Upgrading Elixir I installed Elixir via HomeBrew which means it is a simple: which elixir /usr/local/bin/elixir Note: It can be hard sometimes to know if you installed things via HomeBrew and checking their location is an easy cheap as HomeBrew installs stuff to /usr/local/bin And then: brew upgrade elixir And then: elixir --version Erlang/OTP 23 [erts-11.0.3] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [hipe] [dtrace] Elixir 1.10.4 (compiled with Erlang/OTP 23) You can also use just -v: elixir -v Erlang/OTP 23 [erts-11.0.3] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [hipe] [dtrace] Elixir 1.10.4 (compiled with Erlang/OTP 23) Upgrading Mix and Hex Mix and Hex give the equivalent of a build tool (like Rake from the Rails world) and a Package Manager (like Gem / Bundler). To upgrade mix, you use: mix local.hex Found existing entry: /Users/sjohnson/.mix/archives/hex-0.20.5 Are you sure you want to replace it with "https://repo.hex.pm/installs/1.10.0/hex-0.20.5.ez"? [Yn] Y * creating /Users/sjohnson/.mix/archives/hex-0.20.5 And that will upgrade both mix and hex. Upgrading Phoenix The phoenix framework version I have dates back to 1.2 or 1.3 I think. The first step is to figure out what version I have: mix phoenix.new --version Phoenix v1.3.3 The method to upgrade the Phoenix framework itself is: mix archive.install hex phx_new 1.5.4 I used a google query to discover that the current Phoenix framework version was 1.5.4. The other way to find this version number is to go to this url: https://hexdocs.pm/phoenix/installation.html And then look at the drop down of different versions in the left hand sidebar. The latest version is always at the top. Creating a Sample App My fir

## Developer Spotlight: Postmates

DevFeed: [Developer Spotlight: Postmates](<https://devfeed.tech/articles/developer-spotlight-postmates-15607.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/developer-spotlight-postmates>)

Author: Richard Moot

Published: 2019-08-14T10:00:00Z

Content type: article

Language: en

Sources: [Square Corner Blog RSS Feed](<https://devfeed.tech/sources/square-corner-blog-rss-feed.md>)

Topics: [API](<https://devfeed.tech/topics/api.md>), [Binance](<https://devfeed.tech/topics/binance.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [React](<https://devfeed.tech/topics/react.md>), [Elixir](<https://devfeed.tech/topics/elixir.md>), [Erlang](<https://devfeed.tech/topics/erlang.md>), [Go](<https://devfeed.tech/topics/go.md>), [Python](<https://devfeed.tech/topics/python.md>), [Redux](<https://devfeed.tech/topics/redux.md>), [Scala](<https://devfeed.tech/topics/scala.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [apis](<https://devfeed.tech/tags/apis.md>), [backend](<https://devfeed.tech/tags/backend.md>), [developer](<https://devfeed.tech/tags/developer.md>), [developer-velocity](<https://devfeed.tech/tags/developer-velocity.md>), [elixir](<https://devfeed.tech/tags/elixir.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [frameworks](<https://devfeed.tech/tags/frameworks.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [go](<https://devfeed.tech/tags/go.md>), [integration](<https://devfeed.tech/tags/integration.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [python](<https://devfeed.tech/tags/python.md>), [react](<https://devfeed.tech/tags/react.md>), [redux](<https://devfeed.tech/tags/redux.md>), [scala](<https://devfeed.tech/tags/scala.md>), [slack](<https://devfeed.tech/tags/slack.md>), [spotlight](<https://devfeed.tech/tags/spotlight.md>), [swift](<https://devfeed.tech/tags/swift.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

Square's developer spotlight features Postmates and discusses its integration with the Square Orders API, along with Postmates' engineering organization, development practices, and technology stack.

### Source excerpt

Postmates talks with us about their integration of Orders API

## The Evolution of the Developer Retreat

DevFeed: [The Evolution of the Developer Retreat](<https://devfeed.tech/articles/the-evolution-of-the-developer-retreat-32226.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2018/09/06/the-evolution-of-the-developer-retreat/>)

Author: Bruce Eckel

Published: 2018-09-06T00:00:00Z

Content type: opinion

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Elixir](<https://devfeed.tech/topics/elixir.md>), [Flutter](<https://devfeed.tech/topics/flutter.md>), [Erlang](<https://devfeed.tech/topics/erlang.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [conferences](<https://devfeed.tech/tags/conferences.md>), [developer](<https://devfeed.tech/tags/developer.md>), [elixir](<https://devfeed.tech/tags/elixir.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [events](<https://devfeed.tech/tags/events.md>), [evolution](<https://devfeed.tech/tags/evolution.md>), [flutter](<https://devfeed.tech/tags/flutter.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [self-organizing](<https://devfeed.tech/tags/self-organizing.md>)

### AI overview

The author reflects on a developer retreat that used no central theme or fixed structure. Participants worked independently, shared discussions, and explored Kotlin, Elixir, Erlang, and Flutter, among other topics.

### Source excerpt

I've been experimenting with different forms of events for many years now. Mostly this has been in the form of self-organizing conferences, but in recent years I've tried going further, to even less structure. I've held a number of "developer retreats" where we had a theme that everyone focused on, and those have been quite interesting and valuable. To be honest, what I really wanted to try with the developer retreats is zero structure.

## Writing custom modules for Ansible

DevFeed: [Writing custom modules for Ansible](<https://devfeed.tech/articles/writing-custom-modules-for-ansible-22362.md>)

Original publisher: [Read original article](<http://www.afronski.pl/2016/03/28/writing-custom-modules-for-ansible.html>)

Author: Wojtek Gawroński (afronski)

Published: 2016-03-28T19:00:00Z

Content type: tutorial

Language: en

Sources: [Wojtek Gawroński](<https://devfeed.tech/sources/wojtek-gawronski.md>)

Topics: [Ansible](<https://devfeed.tech/topics/ansible.md>), [modules](<https://devfeed.tech/topics/modules.md>), [Automation](<https://devfeed.tech/topics/automation.md>), [configuration-management](<https://devfeed.tech/topics/configuration-management.md>), [Erlang](<https://devfeed.tech/topics/erlang.md>), [JSON](<https://devfeed.tech/topics/json.md>), [YAML](<https://devfeed.tech/topics/yaml.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>)

Tags: [ansible](<https://devfeed.tech/tags/ansible.md>), [automation](<https://devfeed.tech/tags/automation.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [canvas](<https://devfeed.tech/tags/canvas.md>), [clojure](<https://devfeed.tech/tags/clojure.md>), [code](<https://devfeed.tech/tags/code.md>), [commands](<https://devfeed.tech/tags/commands.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [configuration-management](<https://devfeed.tech/tags/configuration-management.md>), [css](<https://devfeed.tech/tags/css.md>), [css3](<https://devfeed.tech/tags/css3.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [html](<https://devfeed.tech/tags/html.md>), [html5](<https://devfeed.tech/tags/html5.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [json](<https://devfeed.tech/tags/json.md>), [modules](<https://devfeed.tech/tags/modules.md>), [mono](<https://devfeed.tech/tags/mono.md>), [net](<https://devfeed.tech/tags/net.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [programming](<https://devfeed.tech/tags/programming.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [sicp](<https://devfeed.tech/tags/sicp.md>), [vagrant](<https://devfeed.tech/tags/vagrant.md>), [webgl](<https://devfeed.tech/tags/webgl.md>)

### AI overview

This tutorial explains Ansible modules, including their role in remote infrastructure management, YAML-based declarative configuration, dependencies on the provisioned machine, and JSON input/output requirements. It then introduces a case study for implementing a custom module in Erlang to process XML status pages.

### Source excerpt

Writing custom modules for Ansible Introduction What is Ansible and what is a module? If you are a big fan of automation, if you are focused on spreading and building software in line with DevOps culture, tools related with automation / configuration management like Chef or Ansible are probably well known to you. From the other hand that what differentiates those tools is a topic for a next blog post. Without diving into those differences, let's briefly zoom into details for those people which do not know what Ansible and modules are. Ansible is a free-software platform for configuring and managing machines. It combines deployment, ad-hoc tasks execution and configuration management. This tool uses YAML and declarative way of defining steps, which are modifying state of your fleet. Module is a single piece of those steps, a well defined way of executing certain tasks on the remote infrastructure. It executes commands, and communicates by outputting JSON to standard output - it means that it can be written in any programming or scripting language. Development Before we'll start actual implementation we need to know how it works underneath. Requirements If you want to write a custom module, we stated above that you have to be aware of two things. Your module code will be executed on the provisioned machine, so all dependencies which your module requires, have to be there. Second, your module communicates over specific input and output protocols. It uses certain syntax for sending input parameters (either sent as a stdin or a file) and JSON protocol which will be consumed as an output of the module. And nothing more - any other, non-JSON compliant output will be treated as an error, and would not be consumed by Ansible properly. Case Study We would like to consume XMLified status pages and do certain actions based on checked and exposed facts, scraped from aforementioned place. Because I like Erlang, I will use that language to implement that module. We will do it usin

## My year in review - 2015

DevFeed: [My year in review - 2015](<https://devfeed.tech/articles/my-year-in-review-2015-22360.md>)

Original publisher: [Read original article](<http://www.afronski.pl/2015/12/31/my-year-in-review-2015.html>)

Author: Wojtek Gawroński (afronski)

Published: 2015-12-31T15:00:00Z

Content type: article

Language: en

Sources: [Wojtek Gawroński](<https://devfeed.tech/sources/wojtek-gawronski.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Elixir](<https://devfeed.tech/topics/elixir.md>), [Microservices](<https://devfeed.tech/topics/microservices.md>), [phoenix](<https://devfeed.tech/topics/phoenix.md>), [ClojureScript](<https://devfeed.tech/topics/clojurescript.md>), [Erlang](<https://devfeed.tech/topics/erlang.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Node.js](<https://devfeed.tech/topics/node-js.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [C](<https://devfeed.tech/topics/c.md>), [Python](<https://devfeed.tech/topics/python.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [canvas](<https://devfeed.tech/tags/canvas.md>), [clojure](<https://devfeed.tech/tags/clojure.md>), [css](<https://devfeed.tech/tags/css.md>), [css3](<https://devfeed.tech/tags/css3.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [html](<https://devfeed.tech/tags/html.md>), [html5](<https://devfeed.tech/tags/html5.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [languages](<https://devfeed.tech/tags/languages.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [mono](<https://devfeed.tech/tags/mono.md>), [net](<https://devfeed.tech/tags/net.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [programming](<https://devfeed.tech/tags/programming.md>), [sicp](<https://devfeed.tech/tags/sicp.md>), [vagrant](<https://devfeed.tech/tags/vagrant.md>), [webgl](<https://devfeed.tech/tags/webgl.md>), [year-in-review](<https://devfeed.tech/tags/year-in-review.md>)

### AI overview

A personal review of 2015 covering talks, meetups, blog posts, books, programming languages, and plans for 2016. It highlights work involving microservices, Elixir, Phoenix, Node.js, Erlang, ClojureScript, and several other languages.

### Source excerpt

My year in review - 2015 Github Talks Nov 2015 - Evolution > Revolution - how should microservices be built? Sep 2015 - Elixir + Phoenix Jun 2015 - ZeroMQ in Node.js Apr 2015 - Erlang Ecosystem (PL) Feb 2015 - Elixir Feb 2015 - ClojureScript + Om = ♥ Details: My Talks Meetups Two meet-up groups created and continued in 2015: NodeSchool Silesia Silesian BEAMers Blog Most viewed blog posts by me Books List of book which I've read in 2015 and reading challenge. Favorite technical book of 2015 Pragmatic Thinking and Learning: Refactor Your Wetware - blog post about it Number of books read 20 Programming Favorite programming languages (or related) I've hacked on/with this year Languages with pet projects: Erlang #1, Erlang #2, Elixir #1, Elixir #2 ClojureScript Programming languages used for work-related projects this year JavaScript - ES 5 (Node.js, Front-End), JavaScript - ES6 (Front-End), Java, C, Ruby, Python, Bash Programming languages that I hope to explore next year Idris, Rust, Prolog Plans for 2016 Apply 100:10:1 rule to my open source work. Proceed with cost-benefit analysis and focus on monetization in terms of open source work. Try to kick-off another meet up in Silesia region - Papers We Love. Learning (even more than previously) about theory and how to design distributed and real-time systems. Focus on doing interactive blog posts and higher quality (premium?) materials. Push even harder work related with quality and visibility of blog posts. Take more time to discover new music. Happy New Year! :wink:

## Seven Languages in Seven Weeks: Erlang

DevFeed: [Seven Languages in Seven Weeks: Erlang](<https://devfeed.tech/articles/seven-languages-in-seven-weeks-erlang-37840.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/seven-languages-in-seven-weeks-erlang/>)

Author: Carlos Alexandro Becker

Published: 2012-12-18T00:00:00Z

Content type: tutorial

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [Erlang](<https://devfeed.tech/topics/erlang.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [function](<https://devfeed.tech/topics/function.md>), [pattern matching](<https://devfeed.tech/topics/pattern-matching.md>), [Processes](<https://devfeed.tech/topics/processes.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [function](<https://devfeed.tech/tags/function.md>), [pattern-matching](<https://devfeed.tech/tags/pattern-matching.md>), [process](<https://devfeed.tech/tags/process.md>), [recursion](<https://devfeed.tech/tags/recursion.md>)

### AI overview

A beginner documents working through Erlang exercises from "Seven Languages in Seven Weeks," covering recursion, pattern matching, list comprehensions, regular expressions, concurrency, process monitoring, and process restarts. The author notes that some solutions may contain errors while learning the language.

### Source excerpt

So, I just bought "Seven Languages in Seven Weeks". I've read the Ruby chapter, not a big deal at all, so I skipped it. I also skip Io, Prolog and Scala (for now), and then, fall in Erlang!

## Tsung: An Open-Source Distributed Load-Testing Tool for Multiple Protocols

DevFeed: [Tsung: An Open-Source Distributed Load-Testing Tool for Multiple Protocols](<https://devfeed.tech/articles/see-tsung-in-action-34447.md>)

Original publisher: [Read original article](<https://tapoueh.org/blog/2011/08/see-tsung-in-action/>)

Author: Dimitri Fontaine PostgreSQL Major Contributor; Author

Published: 2011-08-02T08:30:00Z

Content type: article

Language: en

Sources: [Dimitri Fontaine](<https://devfeed.tech/sources/dimitri-fontaine.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Benchmark](<https://devfeed.tech/topics/benchmark.md>), [Erlang](<https://devfeed.tech/topics/erlang.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [sessions](<https://devfeed.tech/topics/sessions.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [benchmark](<https://devfeed.tech/tags/benchmark.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [load-testing](<https://devfeed.tech/tags/load-testing.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [sessions](<https://devfeed.tech/tags/sessions.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

The article introduces Tsung, an open-source, multi-protocol distributed load-testing tool built with Erlang. It describes benchmarking applications, recording and replaying sessions at high scale, PostgreSQL support, and integration with pgfouine for converting PostgreSQL logs into Tsung sessions. It also mentions the uTsung variant used in video games and a video demo.

### Source excerpt

Tsung is an open-source multi-protocol distributed load testing tool and a mature project. It's been available for about 10 years and is built with the Erlang system. It supports several protocols, including the PostgreSQL one. When you want to benchmark your own application, to know how many more clients it can handle or how much gain you will see with some new shiny hardware, Tsung is the tool to use. It will allow you to record a number of sessions then replay them at high scale. pgfouine supports Tsung and is able to turn your PostgreSQL logs into Tsung sessions, too.

## BigWig: A better Erlang webtool (spawnfest entry)

DevFeed: [BigWig: A better Erlang webtool (spawnfest entry)](<https://devfeed.tech/articles/bigwig-a-better-erlang-webtool-spawnfest-entry-25817.md>)

Original publisher: [Read original article](<https://www.metabrew.com/article/bigwig-erlang-webtool-spawnfest>)

Author: {"image"=\>"rj-headshot.jpg", "greetings"=\>nil}

Published: 2011-07-11T05:00:00Z

Content type: article

Language: en

Sources: [Richard Jones](<https://devfeed.tech/sources/richard-jones.md>)

Topics: [Erlang](<https://devfeed.tech/topics/erlang.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Web](<https://devfeed.tech/topics/web.md>), [WebSocket](<https://devfeed.tech/topics/websocket.md>), [systems](<https://devfeed.tech/topics/systems.md>)

Tags: [appmon](<https://devfeed.tech/tags/appmon.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [etop](<https://devfeed.tech/tags/etop.md>), [json](<https://devfeed.tech/tags/json.md>), [processes](<https://devfeed.tech/tags/processes.md>), [programming](<https://devfeed.tech/tags/programming.md>), [realtime](<https://devfeed.tech/tags/realtime.md>), [sasl](<https://devfeed.tech/tags/sasl.md>), [spawnfest](<https://devfeed.tech/tags/spawnfest.md>), [web](<https://devfeed.tech/tags/web.md>), [webtool](<https://devfeed.tech/tags/webtool.md>)

### AI overview

The article describes BigWig, a web-based suite of Erlang tools created during Spawnfest. It presents process inspection, process information, application hierarchy exploration, SASL report browsing, and VM dashboards, using Cowboy and WebSockets; some parts were unfinished.

### Source excerpt

This weekend, Steve, Hunter, Paul and I took part in Spawnfest, a 48-hour Erlang programming event.

## Erlang rebar tutorial: generating releases and upgrades

DevFeed: [Erlang rebar tutorial: generating releases and upgrades](<https://devfeed.tech/articles/erlang-rebar-tutorial-generating-releases-and-upgrades-25818.md>)

Original publisher: [Read original article](<https://www.metabrew.com/article/erlang-rebar-tutorial-generating-releases-upgrades>)

Author: {"image"=\>"rj-headshot.jpg", "greetings"=\>nil}

Published: 2011-03-26T05:00:00Z

Content type: tutorial

Language: en

Sources: [Richard Jones](<https://devfeed.tech/sources/richard-jones.md>)

Topics: [Erlang](<https://devfeed.tech/topics/erlang.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [releases](<https://devfeed.tech/topics/releases.md>), [Development](<https://devfeed.tech/topics/development.md>), [make](<https://devfeed.tech/topics/make.md>)

Tags: [appup](<https://devfeed.tech/tags/appup.md>), [code](<https://devfeed.tech/tags/code.md>), [deploy](<https://devfeed.tech/tags/deploy.md>), [development](<https://devfeed.tech/tags/development.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [gnu-linux](<https://devfeed.tech/tags/gnu-linux.md>), [make](<https://devfeed.tech/tags/make.md>), [otp](<https://devfeed.tech/tags/otp.md>), [production](<https://devfeed.tech/tags/production.md>), [programming](<https://devfeed.tech/tags/programming.md>), [project](<https://devfeed.tech/tags/project.md>), [rebar](<https://devfeed.tech/tags/rebar.md>), [releasehandler](<https://devfeed.tech/tags/releasehandler.md>), [releases](<https://devfeed.tech/tags/releases.md>), [sasl](<https://devfeed.tech/tags/sasl.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [upgrades](<https://devfeed.tech/tags/upgrades.md>)

### AI overview

A tutorial on using rebar to structure, compile, package, deploy, and upgrade Erlang applications. It demonstrates creating releases that bundle the Erlang VM, required OTP libraries, application code, and dependencies, enabling installation of new versions without downtime.

### Source excerpt

During my experiments with rebar, I made a simple example app for testing upgrades and releases. This article will walk you through using rebar to create an application, lay it out properly, package and deploy it, and create and install new versions without downtime.

## Erlang/OTP releases: rebar, release\_handler, .appup, etc

DevFeed: [Erlang/OTP releases: rebar, release\_handler, .appup, etc](<https://devfeed.tech/articles/erlang-otp-releases-rebar-release-handler-appup-etc-25820.md>)

Original publisher: [Read original article](<https://www.metabrew.com/article/erlangotp-releases-rebar-release_handler-appup-etc>)

Author: {"image"=\>"rj-headshot.jpg", "greetings"=\>nil}

Published: 2010-09-18T05:00:00Z

Content type: opinion

Language: en

Sources: [Richard Jones](<https://devfeed.tech/sources/richard-jones.md>)

Topics: [Erlang](<https://devfeed.tech/topics/erlang.md>), [releases](<https://devfeed.tech/topics/releases.md>), [upgrade](<https://devfeed.tech/topics/upgrade.md>), [modules](<https://devfeed.tech/topics/modules.md>)

Tags: [appup](<https://devfeed.tech/tags/appup.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [hacks](<https://devfeed.tech/tags/hacks.md>), [irc](<https://devfeed.tech/tags/irc.md>), [irccloud](<https://devfeed.tech/tags/irccloud.md>), [mochiweb](<https://devfeed.tech/tags/mochiweb.md>), [otp](<https://devfeed.tech/tags/otp.md>), [programming](<https://devfeed.tech/tags/programming.md>), [release](<https://devfeed.tech/tags/release.md>), [releases](<https://devfeed.tech/tags/releases.md>), [sasl](<https://devfeed.tech/tags/sasl.md>), [sysops](<https://devfeed.tech/tags/sysops.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>)

### AI overview

An Erlang developer describes deploying live upgrades for running OTP applications behind an in-browser IRC client. The article discusses release packaging, release_handler, .appup files, rebar, and an upgrade from R13B to R14 after encountering upgrade-related problems.

### Source excerpt

I've been building something in Erlang recently, provisionally called IRCCloud.com (mention this post if you request an invite!) - it's an in-browser IRC client that stays connected for you all the time, so you never miss the conversation. You can reopen your browser later and still have all the backlog. IRC is damn useful, and James and I are building IRCCloud to give you the advantages of IRC bouncer-esque functionality, with the ease of just opening a webpage.

## Background writers

DevFeed: [Background writers](<https://devfeed.tech/articles/background-writers-34368.md>)

Original publisher: [Read original article](<https://tapoueh.org/blog/2010/07/background-writers/>)

Author: Dimitri Fontaine PostgreSQL Major Contributor; Author

Published: 2010-07-19T14:30:00Z

Content type: opinion

Language: en

Sources: [Dimitri Fontaine](<https://devfeed.tech/sources/dimitri-fontaine.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Processes](<https://devfeed.tech/topics/processes.md>), [Erlang](<https://devfeed.tech/topics/erlang.md>), [Finite-state machine](<https://devfeed.tech/topics/finite-state-machine.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [database](<https://devfeed.tech/tags/database.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [processes](<https://devfeed.tech/tags/processes.md>), [worker](<https://devfeed.tech/tags/worker.md>)

### AI overview

The article discusses proposals to generalize PostgreSQL background workers, building on the autovacuum process and related patches. It considers an extensibility API for external processes and workers, drawing ideas from Erlang supervision and finite-state-machine behaviors.

### Source excerpt

There's currently a thread on hackers about bg worker: overview and a series of 6 patches. Thanks a lot Markus! This is all about generalizing a concept already in use in the autovacuum process, where you have an independent subsystem that require having an autonomous daemon running and able to start its own workers. I've been advocating about generalizing this concept for awhile already, in order to have postmaster able to communicate to subsystems when to shut down and start and reload, etc. Some external processes are only external because there's no need to include them by default in to the database engine, not because there's no sense to having them in there.

## Rewriting Playdar from C++ to Erlang: source-code savings and similar resource use

DevFeed: [Rewriting Playdar from C++ to Erlang: source-code savings and similar resource use](<https://devfeed.tech/articles/rewriting-playdar-c-to-erlang-massive-savings-25822.md>)

Original publisher: [Read original article](<https://www.metabrew.com/article/rewriting-playdar-c-to-erlang-massive-savings>)

Author: {"image"=\>"rj-headshot.jpg", "greetings"=\>nil}

Published: 2009-10-21T05:00:00Z

Content type: opinion

Language: en

Sources: [Richard Jones](<https://devfeed.tech/sources/richard-jones.md>)

Topics: [Erlang](<https://devfeed.tech/topics/erlang.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Code](<https://devfeed.tech/topics/code.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>)

Tags: [c](<https://devfeed.tech/tags/c.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [code](<https://devfeed.tech/tags/code.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [playdar](<https://devfeed.tech/tags/playdar.md>), [programming](<https://devfeed.tech/tags/programming.md>), [rewrite](<https://devfeed.tech/tags/rewrite.md>)

### AI overview

The author describes rewriting Playdar from C++ to Erlang after initially developing it with Boost, Asio, and CMake. The Erlang version reached near feature parity within a week, and counting bundled third-party code while excluding Boost and Asio showed a 92% reduction in source lines. Preliminary comparisons found similar CPU and memory usage overall, with Erlang using slightly more memory at the time of writing.

### Source excerpt

I've heard many anecdotes and claims about how many lines of code are saved when you write in Erlang instead of [C++/other language]. I'm happy to report that I now have first-hand experience and some data to share.

## Erlang talk at London Hackspace

DevFeed: [Erlang talk at London Hackspace](<https://devfeed.tech/articles/erlang-talk-at-london-hackspace-25819.md>)

Original publisher: [Read original article](<https://www.metabrew.com/article/erlang-talk-at-london-hackspace>)

Author: {"image"=\>"rj-headshot.jpg", "greetings"=\>nil}

Published: 2009-10-08T05:00:00Z

Content type: article

Language: en

Sources: [Richard Jones](<https://devfeed.tech/sources/richard-jones.md>)

Topics: [Erlang](<https://devfeed.tech/topics/erlang.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Processes](<https://devfeed.tech/topics/processes.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [hackspace](<https://devfeed.tech/tags/hackspace.md>), [london](<https://devfeed.tech/tags/london.md>), [messages](<https://devfeed.tech/tags/messages.md>), [mochiweb](<https://devfeed.tech/tags/mochiweb.md>), [playdar](<https://devfeed.tech/tags/playdar.md>), [processes](<https://devfeed.tech/tags/processes.md>), [recursion](<https://devfeed.tech/tags/recursion.md>), [state](<https://devfeed.tech/tags/state.md>), [talk](<https://devfeed.tech/tags/talk.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>)

### AI overview

This article recaps an introductory Erlang talk at a London Hackspace meetup. It explains Erlang's use for scalable, reliable distributed systems and demonstrates processes, message passing, recursive state management, hot code reloading, and gen_server.

### Source excerpt

Last night I gave an "Intro to Erlang" talk at a London Hackspace meetup. I did a quick audience survey first: About 75% did "web programming" (ruby,python,php,etc). Around 30% admitted to regularly using C/C++/Java or desktop/mobile app development. Less than 10% had much experience with functional programming.