You may remember my first article post about Erlang. I’ve shared a short introduction to the Erlang programming language and it’s concurrency philosophy in the article. There are some highlights of that Erlang already include:
High Availability and Reliability
- Simple and consistent error recovery and supervision hierarchiess.
- Built-in fault tolerance (Let it fail/crash! - Do not program defensively).
- Hot code loading during runtime (software upgrades with zero downtime).
Scalability and Heterogeneity
- Run on multiple platforms, HetNet support.
- Network aware runtime, out-of-the-box distributed architectures.
- Very light-weight processes, highly scalable transparent or explicit concurrency.
- Awesome transparent multi-core support:
- Functional programming language, high abstraction level, concise readable programs.
- When compared with any imperative language, 4–20 times less code written for same application.
- Suitable for rapid prototyping.
- Impressive and powerful libraries and middleware (Open Telecom Platform - OTP).
So, what is the “dark side” of Erlang for most developers? The correct answer is “The Erlang syntax!”.
In my first week with Erlang, I had no idea what I’ve been doing while coding something. Believe me, if you fall into the Erlang world from any imperative language, you’d feel like me. The problem could be good to discuss, but that’s beside the point.
Chicago Boss framwork: Start small, dream big
In software development, using a framework is almost a rule for fast, clean, easy readable and standardized coding. Chicago Boss (http://www.chicagoboss.org/) is a framework that is heavily inspired by Rails. Set up and use Chicago Boss is easy as falling off a log. Chicago Boss allows you to code with the aforementioned standards in Erlang. Plus, offers conveniences of modern web development, including WebSocket and Comet. Basic features of Chicago Boss listed below:
- 100% asynchronous I/O
- Support for Erlang and Elixir code
- BossDB: Database connection layer with an advanced ORM which with built-in support for Mnesia, MongoDB, MySQL, PostgreSQL, Riak and Tokyo Tyrant.
- BossCache: Database caching layer
- BossMQ: Cluster–wide, channel–based message queue
- BossRouter: URL router
- BossSession: Session storage layer
- BossNews: Event listener, model event system
- BossMail: Built-in email server
- Django and Jade template support
- Very clean controllers as result of pattern matching
- Auto document generation for models
- An useful admin interface
- Automatic code reloading
We’ll cover almost all of features of Chicago Boss during developing an applicatioin. So far so good let enjoy in developing a simple application with Chicago Boss framwork. See ya!!! :)