Digests » 78
DailyDrip is rebooting ElixirSips by building a production Phoenix-based Forum engine - Firestorm - and we're running a Kickstarter right now to help make it more awesome. In addition, we'll be producing a month of free daily content to take someone through the basics of Elixir, OTP, Ecto, and Phoenix as a thank you to all of our subscribers and backers.
this week's favorite
Our Forza Football app is translated into many languages, and therefore our push notifications have to be translated as well. This is an interesting problem to solve when the languages to translate to become more than you can handle by yourself.
Recently I came across two great articles on the Pusher blog: Low latency, large working set, and GHC’s garbage collector: pick two of three and Golang’s Real-time GC in Theory and Practice. The articles tell the story of how Pusher engineers reimplemented their message bus. The first take was done in Haskell. During performance tests they noticed some high latencies in the 99 percentile range. After they bared down the code they were able to prove that these spikes are caused by the GHC stop-the-world garbage collector coupled with a large working set (the number of in-memory objects). The team then experimented with Go and got much better results, owing to Go’s concurrent garbage collector.
There are many use cases for GenStage/Flow. One of such cases that I recently faced was to get some records from PostgreSQL database, download files associated with these records from Amazon S3, extract text from these files and index this text into ElasticSearch.
I must say this free e-book release was on my waiting list for a long time. Beta versions were available earlier on but I've decided to wait for the final edition. And hell, it was worth the wait. The reasoning behind this article is to list some of those real gems waiting for you in this book and to make it clear that "What's New in Ecto 2.0" is much more than just an "extended changelog". But first, let's go over a really basic question...
“Tell, Don’t Ask” is a well-covered topic within object-oriented programming communities. Its goal? Encourage encapsulation by having the caller tell an object to do something instead of checking on state and acting upon it. Almost at odds with the control couple code smell, our goal is to have the caller issue explicit commands without concerning itself with object state.