1. Wrapping an imperative API in a functional one

A talk from Chris Marshall, on wrapping an imperative Java API in a typed, algebraic, functional API, using Scalaz. It seems the video for the talk hasn’t been uploaded yet.

2. Why OCaml? Why now?

Some more OCaml advocacy. An especially interesting bit from the post: “Facebook created a new language (Hack, a statically typed PHP variant) and wrote the compiler in OCaml. They then use js_of_ocaml to compile their entire type checker into JavaScript, as the basis of a web IDE along the lines of cloud9. Due to the use of OCaml for everything, this IDE has client-side code completion and error checking. It’s pretty amazing.”

3. STM and persistent data structures performance on mutlicore architectures

In January, Martin Thompson gave a talk on top 10 performance myths, where he spoke a bit about immutable/persistent data structures and STM. Here’s a Clojure mailing list thread where he expands on his points, and answers some questions from the Clojure community.

4. The J Programming Language

Tracy Harms’ talk on the J language. I have only seen the slides, and the talk seems to have good, elaborate examples, which may help you understand the core J ideas and probably inspire you to look into array/tacit programming model deeper.

5. An introduction to recursion schemes

Patrick Thomson asserts that, “recursion schemes are just as essential to idiomatic functional programming as for and while are to idiomatic imperative programming.” In this post, he demonstrates top-down and bottom-up traversals, which are simplest of recursion schemes. He will be writing about other recursion schemes in future posts in the series.

I still haven’t read “Bananas, Lenses, Envelopes, and Barbed Wire”, the paper he alludes to in this post. Oh, I have so much to learn!

6. Session

Session is a live-coding environment or a web REPL for Clojure, built atop Om and Datomic. It saves your REPL sessions in Datomic database, so that you can revisit them in future. It also has a “data-oriented” rendering model, where all graphic renderings have a backing EDN representation.

It is a notebook environment like Mathematica or IPython, which could probably also be used as a teaching tool.

7. Macros vs Types

Eugene Burmako and Lars Hupel’s NEScala talk is out. They go into pros and cons of both approaches, and how to combine the two together for fun and profit. They also talk about the latest “shadow embedding” and “yin yang” stuff, which I mentioned in the last post in the series.

8. Gorilla REPL

A project very similar to Session, but without all the database stuff. Gorilla worksheets are saved as simple Clojure files with all the text it between as comments.

9. Toward a better programming

Chris Granger is working on a new programming environment called Aurora. Get details at the above link.

10. How to name things

This presentation is not about naming in programming; sorry for the confusion. It is about some amazing web tools that will help you come up with awesome names for your blogs, events, sites.

11. Introductions to advanced Haskell topics

It is difficult to find good resources on some of the advanced Haskell topics. Gabriel Gonzalez of haskellforall and pipes fame is here to help you with some pointers on monad transformers, parsers, Free, and such.

12. Squants

A very impressive Scala library for quantities, units of measure, and dimensional analysis.

13. Programming with patterns

I was having a conversation with my colleague, Mushtaq, about pattern matching, where he pointed me to this interesting language called Bondi, which is based on pattern calculus, something the author claims is strictly more expressive than lambda calculus. I couldn’t find any easy resources on the subject and haven’t looked at it very deeply, but it sure sounds very interesting.

14. Running free with free monads

Ken Scambler’s talk slides on free monads in Scala.

15. Using and abusing macros

Rust seems to have a very structured and powerful macro system. Here is an example of its (ab-)use for a card game called Dominion.

16. ClojureWest 2014 videos

ClojureWest videos are out. I watched a few of them, a few are scheduled for next week. I quite liked David Nolen’s talk on Om. Priyatam’s talk on a “poet REPL” they built is also interesting. Zach Tellman’s “predictably fast Clojure” was pretty amazing.

17. Functional programming is terrible

Runar Oli talks about how functional programming can be terrible “in Scala” due to a certain characteristics of JVM, Scala the language, and Scala’s type system, and then concludes with why FP in Scala is awesome and beneficial nevertheless.

Until next time!