PragmaticBookshelf

PragmaticBookshelf

Forum Sponsor

Network Programming in Elixir and Erlang (PragProg)

Andrea Leopardi @whatyouhide

edited by Jacquelyn Carter @jkcarter

TCP, UDP, DNS, HTTP, and more: these are the network protocols that make up the fabric of the Internet. Erlang and Elixir are the perfect fit for building network-intensive applications—the BEAM’s actor model perfectly mirrors the way nodes operate in a network. Learn about networking and the power of the BEAM to write performant and reliable network applications. Create systems that are scalable, resilient, and efficient, thanks to language primitives and OTP. Take advantage of an ecosystem that has been solving network problems for more than thirty years. Learn about design patterns and common pitfalls for network applications on the BEAM.

From smart appliances to gigantic data centers, from phones to satellites, networks are the way computers talk to each other. Learn how to use network protocols, choose or design serialization protocols, and architect systems with servers and clients.

Start with the most widely-used protocol on the Internet: TCP. Build a chat server where multiple clients can chat in real time. Explore client-side TCP by building a client for Redis. Scale and harden server and client, thanks to features of the BEAM. Then dig into UDP, TCP’s “looser” sibling. Code a system for reporting metrics capable of rivaling hardened software like StatsD. Learn about DNS, which powers domain resolution for the Internet. Next, secure your TCP traffic with TLS. Lastly, explore HTTP, the protocol that even your microwave could be using. Build a JSON API, client, and server. Learn the differences between HTTP/1.1 and HTTP/2, and add real-time features via WebSockets.

The BEAM was built for networks and has been honed for more than three decades. It’s the perfect fit. Leverage years of real-world experience building network-intensive applications from a member of the Elixir core team, and become an expert at network programming in Elixir and Erlang.


Andrea Leopardi is a software engineer and architect with a passion for computers and systems. He loves writing and reading code, as well as teaching others how to write code and design systems. He’s a member of the core team of the Elixir programming language. He’s also a published author, frequent public speaker, and trainer.


Don’t forget you can get 35% off with your Devtalk discount! Just use the coupon code “devtalk.com" at checkout :+1:

Most Liked

AstonJ

AstonJ

This looks like a fun book that seems quite unique in the space - congrats @whatyouhide for coming up with it! :blush:

It’s also great seeing books still coming out for Elixir fast and strong! I wonder how long it will be before Elixir is the language with the most professionally published books!? :003:

mercyf

mercyf

Hoping for more Elixir books from PragProg, maybe something similar to Domain Modeling Made Functional.

arcanemachine

arcanemachine

The Ash Framework book will be coming out from them soon, which is somewhat related to what you’re asking for.

Where Next?

Popular in Books Top

PragmaticBookshelf
Alexander Koutmos Bruce A. Tate @redrapids Frank Hunleth @fhunleth edited by Jacquelyn Carter @jkcarter The Elixir programming langua...
New
AstonJ
by Martin Logan, Eric Merritt, and Richard Carlsson Erlang and OTP in Action teaches you the concepts of concurrent programming and the ...
New
AstonJ
By Simon St. Laurent If you’re new to Erlang, its functional style can seem difficult, but with help from this hands-on introduction, y...
New
vincentvanbush
Hey! Happy to announce the Elixir Adoption Guide by Curiosum, announced during this year’s ElixirConf EU, is out to the public now :slig...
New
AstonJ
by by Fred Hebert Erlang is the language of choice for programmers who want to write robust, concurrent applications, but its strange ...
New
PragmaticBookshelf
Tony Hammond Series editor: Bruce A. Tate @redrapids Developmental editor Jacquelyn Carter @jkcarter Data is everywhere—it’s just not ...
New
PragmaticBookshelf
Andrea Leopardi @whatyouhide edited by Jacquelyn Carter @jkcarter TCP, UDP, DNS, HTTP, and more: these are the network protocols that ma...
New
AstonJ
by Joe Armstrong A multi-user game, web site, cloud application, or networked database can have thousands of users all interacting at th...
New
PragmaticBookshelf
Alexander Koutmos @akoutmos Elixir Patterns aims to surface the powerful and unique characteristics of the Erlang virtual machine and sho...
New
PragmaticBookshelf
Ellie Fairholm and Josep Giralt D’Lacoste edited by Nicole Tache The days of separate dev and ops teams are over—knowledge silos and the...
New

Other popular topics Top

danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 29377 241
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
JeremM34
Hello, how can I check the Phoenix version ? Thanks !
New
chrismccord
Phoenix 1.4.0 released Phoenix 1.4 is out! This release ships with exciting new features, most notably with HTTP2 support, improved deve...
688 30877 112
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
msaraiva
Surface is an experimental library built on top of Phoenix LiveView and its new LiveComponent API that aims to provide a more declarative...
564 43622 214
New
hariharasudhan94
lets say i have a sample like a = 20; b = 10; if (a > b) do {:ok, "a"} end if (a < b) do {:ok, b} end if (a == b) do {:ok, "equa...
New
gausby
I asked this very same question on twitter and got some interesting feedback, but I thought it would be a good question to ask here as we...
1207 39297 209
New
hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" => #BSON.ObjectId<58eb1a7a9ad169198c3dXXXX>, "email" => ...
New

We're in Beta

About us Mission Statement