background preloader


Facebook Twitter

Distribunomicon. Hey there, it appears your Javascript is disabled.


That's fine, the site works without it. However, you might prefer reading it with syntax highlighting, which requires Javascript! Alone in the Dark Oh hi! Please have a seat. We've waited quite a while before getting here because it's not exactly useful to get distributed if we can't make things work locally in the first place. See, distributed programming is like being left alone in the dark, with monsters everywhere. That's not especially due to how Erlang is written, but more or less due to the nature of distributed software. This is the standard 'tools, not solutions' approach seen before in OTP; you rarely get full-blown software and applications, but you get many components to build systems with.

Let's see what kind of flexing we can do with these tools. This is my Boomstick To tackle all these monsters in the dark, we've been granted a very useful thing: pretty complete network transparency. At some point, Rick meets Bill. Yep. 4. 1. Recent Stories for Funders and Founders. IP-Telefonie. Sipmobile.tar. Efficient Insertions in Mnesia tables. Post - Storing and retrieving photo files from riak through nitrogen using riak-erlang-client. [android-gcm] Working Example of Erlang to GCM Cloud Connection Server (CCS) Distribution Protocol. The description here is far from complete and will therefore be further refined in upcoming releases.

Distribution Protocol

FreeBSD List / Display Open Ports With sockstat Command. You can use traditional netstat / lsof command to lists open Internet or UNIX domain sockets on FreeBSD.

FreeBSD List / Display Open Ports With sockstat Command

FreeBSD comes with a simple and easy to use command called sockstat. The -4 option only displays IPv4 sockets. The -6 option only displays IPv6 sockets. SIX Swiss Exchange - Contact & Support. What is the technical stack that WhatsApp uses? How is its message delivery system so efficient? Untitled. Log into Facebook. How to copy files from one machine to another using ssh. The Definitive Guide. Amazing Amazon Story - Jeff Bezos Full Speech. 12 Lessons Steve Jobs Taught Guy Kawasaki. How WhatsApp Grew to Nearly 500 Million Users, 11,000 cores, and 70 Million Messages a Second. When we last visited WhatsApp they’d just been acquired by Facebook for $19 billion.

How WhatsApp Grew to Nearly 500 Million Users, 11,000 cores, and 70 Million Messages a Second

We learned about their early architecture, which centered around a maniacal focus on optimizing Erlang into handling 2 million connections a server, working on All The Phones, and making users happy through simplicity. Two years later traffic has grown 10x. How did WhatsApp make that jump to the next level of scalability? Rick Reed tells us in a talk he gave at the Erlang Factory: That's 'Billion' with a 'B': Scaling to the next level at WhatsApp (slides), which revealed some eye popping WhatsApp stats: What has hundreds of nodes, thousands of cores, hundreds of terabytes of RAM, and hopes to serve the billions of smartphones that will soon be a reality around the globe?

What are some of the most notable changes from two years ago? Obviously much bigger in every dimension, except the number of engineers. Rick always gives a good talk. Easy ejabberd clustering (multi-master, fault... Easy ejabberd clustering (multi-master, fault tolerant, failover) First and foremost, for general cluster configuration steps see this post: Once you have a functioning cluster using those steps and you want to add multi-master support for better failover and fault tolerance of your ejabberd cluster come back here and read this post.

easy ejabberd clustering (multi-master, fault...

Why? After getting our small cluster up and running we started testing cluster failure handling. Cluster configuration and node management · esl/MongooseIM Wiki. Environment configuration File descriptors To handle large traffic some of the system variables need to be tuned.

Cluster configuration and node management · esl/MongooseIM Wiki

Number one on that list is the maximum number of file descriptors which by default is set to 1024. Each MongooseIM connection consumes ~1 file descriptor, so the default value will not suffice for larger installations - when it is exceeded, emfile errors will appear in logs. To check the current limit execute: ulimit -n. Hosting eines Webservers zu Hause. Dank DSL mit großen Bandbreiten und Flatrate hat man heute nicht nur die Möglichkeit, ziemlich schnell und viel im Internet zu surfen.

Hosting eines Webservers zu Hause

Es ist auch mit wenig Aufwand möglich, einen eigenen, kleinen Webserver zu Hause zu betreiben. Extensible Messaging and Presence Protocol (XMPP): Core. Status of this Memo This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements.

Extensible Messaging and Presence Protocol (XMPP): Core

Please refer to the current edition of the “Internet Official Protocol Standards” (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited. Using Eredis, Redis With Erlang - No F*cking Idea. Recently i decided to move my blog from to octopress engine because it is just easier for me to maintain it and it looks nicer.

Using Eredis, Redis With Erlang - No F*cking Idea

The old blog is under My first post on new blog is dedicated to using redis with erlang. Wooga created a really nice (performance driven) redis driver for erlang. You can get it here It is really easy and nice. On project page you can find simple examples how to use eredis. Module gen_mod. Function Index Function Details.

Module gen_mod

Erlang - ejabberd gen_mod development issue. Erlang Programming. Erlang is a general purpose, concurrency-oriented functional programming language suited for fault-tolerant, distributed, soft real-time systems. It features strong dynamic typing, lightweight concurrency, eager evaluation and prolog like pattern matching. Erlang was developed in the 1980s at the Ericsson Computer Science Laboratory to address a then-unfulfilled need for telecommunications programming: a high-level, expressive language suitable for rapid development that offered the error recovery, concurrency, distribution and performance features required by telecommunications equipment.

Guidelines for ejabberd developers. This page lists guidelines recommended for ejabberd developers. Note: many parts of ejabberd don't fully respect those guidelines, but the code works correctly and is bug-free. Hence, it will not be rewritten just for satisfy those guidelines. Use the standard Erlang code indentationWrite lines no longer than 80 columnsOne instruction per line is usually enough (but less than one is fine).Use spaces around operators, including equal (=), example: X = [Y + 2 | Z].Add a space after a comma (,) if it's not at the end of the line.Try to avoid useless spaces (at the end of lines, in empty lines).Unused variables must be prefixed by _ to avoid compilation warning.Avoid nesting many control sequences (Case, If...).Avoid writing large functions.

They include code that do many things, and span over 100 or 200 lines of code.Use English for variable and function naming and comments. Official ejabberd documentation. Distributed Database Concepts. This chapter describes the basic concepts and terminology of Oracle's distributed database architecture. It contains the following topics: Distributed Database Architecture A distributed database system allows applications to access data from local and remote databases.

In a homogenous distributed database system, each database is an Oracle database. In a heterogeneous distributed database system, at least one of the databases is a non-Oracle database. Ejabberd Community Site. This page lists several tricks to tune your ejabberd and Erlang installation for maximum performance gains. Remark that some of the described options are experimental. Erlang Ports Limit: ERL_MAX_PORTS Erlang consumes one port for every connection, either from a client or from another Jabber server. The option ERL_MAX_PORTS limits the number of concurrent connections and can be specified when starting ejabberd: Tuning FreeBSD to serve 100-200 thousands of connections. I’m back finally. There’s the translation of the Igor Sysoev’s report made on the RIT conference. Igor Sysoev is the creator of one of the most used lightweight http servers in Russia and the world – nginx. Robert Virding - Hitchhiker's Tour of the BEAM. Robert Virding - Hitchhiker's Tour of the BEAM.

ETH Zurich Multimedia Portal: video, audio, podcast, webcast, live-streaming - Zurich Erlang Factory Lite. Erlang Factory 2014 - That's 'Billion' with a 'B': Scaling to the Next Level at WhatsApp. Recommendation of a Strategy - efsf2012-whatsapp-scaling.pdf. Erlang Questions - Some facts about Erlang and SMP. Writing Ejabberd Modules: Presence Storms. One of the biggest benefits to using ejabberd is the ease with which it is possible to extend the server's functionality. After only a week of production operation, I've already written and deployed four new modules at Chesspark. Let's get our hands dirty, fire up an editor, and learn how to write a new ejabberd module. Unlike most tutorials, the module created here is a real piece of code that we have running in production at Chesspark. Getting Started The code presented here is in Erlang, which is what ejabberd is written in. Anders Conbere has written a series of excellent tutorials on writing ejabberd modules at his blog: building ejabberd, writing a generic module, writing an HTTP module, and writing an XMPP bot module.

1 million is so 2011 - WhatsApp Blog. Happy 2012 everyone! A few months ago we published a blog post that talked about our servers doing 1 million tcp connections on a single box: Today we have an update for those keeping score at home: we are now able to easily push our systems to over 2 million tcp connections! Jkb@c123$ sysctl kern.ipc.numopensockets kern.ipc.numopensockets: 2277845. EFSanFrancisco2013-MongooseIM.pdf. SoErlang, ESL MongooseIM vs. P1 ejabberd (Part I) - Piotr Nosek.

Android - BroadcastReceiver waking up Service when phone goes idle.