Tonight while twiddling with a new pet project, I made my first GitHub pull request ever. To add icing on the cake, it's for an Elixir project, and I'm a complete Elixir noob!
Here's to hoping the original author will accept my pull request and doesn't think that I'm way out of my depth.
...where religion, philosophy and the art of computer programming come together
Showing posts with label Erlang. Show all posts
Showing posts with label Erlang. Show all posts
Saturday, June 29, 2013
Saturday, June 15, 2013
Where art thou, expm packages?
I had a second look at how the expm package collection is going, and boy progress has been rather slow. Popular frameworks such as Cowboy, MochiWeb and WebMachine are evidently missing.
Although I don't mind using rebar to 'git pull' the dependencies and compile them with a single 'make deps', I still think it'd be more handy to be able to just do an 'expm spec webmachine' or some such.
Note to self: add more packages while grokking Elixir.
Although I don't mind using rebar to 'git pull' the dependencies and compile them with a single 'make deps', I still think it'd be more handy to be able to just do an 'expm spec webmachine' or some such.
Note to self: add more packages while grokking Elixir.
Good riddance, parameterized modules!
After previous attempts at upgrading FilmoMeter to rid itself of the ungodly shackles of parameterized modules, I finally managed to pull it off today! WebMachine 1.10.1 and MochiWeb 1.5(?) finally fix this issue by removing all traces of parameterized modules. All hail functional gods!
Now I can finally upgrade to Erlang R16B and Elixir 0.9.2 in peace.
Now I can finally upgrade to Erlang R16B and Elixir 0.9.2 in peace.
To Elixir or not to Elixir, that's the question
Elixir has been gaining a lot of attention of late. Even the venerable Joe Armstrong himself has taken it for a spin and is impressed by some of its features.
I myself have been mildly frustrated by the lack of 'proper' macros and monads in Erlang. Maybe it's time to succumb to temptation and take the plunge?
I myself have been mildly frustrated by the lack of 'proper' macros and monads in Erlang. Maybe it's time to succumb to temptation and take the plunge?
Monday, June 18, 2012
Erlang Concurrency Model FTW?
While catching up on my reading list, I came across this performance benchmark of C10k web servers.
With the exception of Connection Time, Cowboy totally owns other web servers' asses in all other categories.
In the realm of high concurrency and availability, Erlang still rules supreme.
There are a couple of observations that I want to make:
Implementation | Connection Time (mean) | Latency (mean) | Messages | Connections | Connection Timeouts |
---|---|---|---|---|---|
Erlang (Cowboy) | 865ms | 17ms | 2849294 | 10000 | 0 |
Haskell (Snap) | 168ms | 227ms | 1187413 | 4996 | 108 |
Java (Webbit) | 567ms | 835ms | 1028390 | 4637 | 157 |
Go | 284ms | 18503ms | 2398180 | 9775 | 225 |
Node.js (websocket) | 768ms | 42580ms | 1170847 | 5701 | 4299 |
Python (ws4py) | 1561ms | 34889ms | 1052996 | 4792 | 5208 |
In the realm of high concurrency and availability, Erlang still rules supreme.
There are a couple of observations that I want to make:
- Despite all the hype, Node.js still fails to deliver. Don't get me wrong, I really like the idea of running JavaScript on the server. Most web developers already know JavaScript and can't be bothered to pick up a functional language just to write asynchronous and event-driven software, so the barrier to entry is significantly reduced. I just wish that all the attention and community participation would have resulted in something better in terms of scalability and performance.
- Although Cowboy's average Connection Time is second worst and eight times Snap's average, practically speaking most users won't even notice the difference as the former still takes less than a second. When it comes to performance, perceived responsiveness matters more than raw numbers. There's a big difference between comparing 100ms to 800ms and 1s to 8s.
Subscribe to:
Posts (Atom)