1. Google’s Modular Phone, Ara

The Phoneblocks idea that came out last year is soon becoming a reality. This is going to be a game changer. Looking forward to Ara.

2. Atom, Github’s hackable text editor for 21st century

From the project page: “Atom is composed of over 50 open-source packages that integrate around a minimal core. Our goal is a deeply extensible system that blurs the distinction between user and developer”. This is a noble goal to have. Not sure how this editor compares to Sublime and Textmate. It will be nice to have a side-by-side comparison.

3. C++17: I See a Monad in Your Future!

Bartosz Milewski mentions how the functor, applicative, monad, and monoid “patterns” appear in some C++ libraries. He also links to a “resumable functions” proposal for C++ (essentially async-await, but without a full-fledged support for continuations). There has been a clear, unmistakable trend towards more algebraic, data-driven, and functional style of programming, and C++ too hasn’t been able to keep off it.

4. John A De Goes’ slides on First Class Patterns

I posted about Data.Pattern library in Haskell three weeks ago. In these slides, John presents some ideas from that library in Scala, simplified for pedagogical purposes.

5. Scala JS Fiddle

Scala JS is growing at an awesome pace. Now we even have a JS Fiddle like web app for Scala JS! Go try it out.

6. Scala.Rx

The awesome Haoyi Li has created a “change propagation” library for Scala and Scala JS. It’s based on push-based FRP approach mentioned in “Deprecating the Observer Pattern” paper. The library looks straightforward enough to use. It would be nice to see UI, spreadsheet etc libraries built atop it.

7. Wolfram language

I mentioned Wolfram’s “biggest technology project yet” blog some time in this series before. Here’s the first public preview of it. Boy, this stuff is just rad! Wolfram has really created something unparalleled and deserves to be cheered for it.

8. Patterns in types

Excellent slides from Mark Hibberd, that show how types can drive you to more general, composable, and correct designs. The presentation also goes on to show how monad transformers can make use of several monads together convenient. He uses a great running example of an HTTP library, which helps understanding quite a lot. Highly recommended.

9. Koding

Koding provides a collaborative development environment that can be used for teaching, pairing, sharing, and for making real apps. Koding also has some social features that let you share your work, receive feedback, endorse etc.

Until next time!