Alas Poor Erlang, I Knew Ye Well!

UPDATE: the negativity about Erlang in this post no longer reflects my current opinion. Thank you Justin Sheehy for making webmachine which has handily carried me across my hurdles with implementing RESTful Web Services in Erlang.

The death of useful insight from a new idea encountered or approach studied begins a time of denial for me and then a time of mourning. Erlang stopped providing me with useful insight months ago, yet I doggedly pursued it hoping I would experience more of the mind-opening joy I had when I first encountered it. This has not happened. Worse than that I feel a seething resentment for Erlang now since it continually pops up in my head as a possible solution to things I am ill-equipped to solve using it. None of this is a fault of Erlang, but rather a reality of my inexperience with Functional Programming and the lack of modules in Erlang for structuring and developing RESTful Web Services the way I would like (UPDATE: WebMachine looks like it may invalidate this post, stay tuned).

Certainly Yaws and mochiweb let you build RESTful Web Services, but I find myself fumbling with them rather than solving my real domain problems. I am not sure if this is a side-effect of transparent data structures in Erlang vs objects in Java or what. I do know that I find it easier to grow a solution gradually with Restlet (a Java REST framework). Nothing inherently prevents Erlang from providing developers with a good framework for building RESTful Web Services. I believe Erlang is inherently better suited to the purpose at a runtime level than Java, but Yaws and mochiweb do not fit my way of thinking.

It would be very interesting to see OTP-style behaviours for Resources and Routers (and the various other actors of the Restlet framework) which could be implemented simply in Erlang. Much of the design is already there in Restlet. I simply do not have the time or expertise to develop it in Erlang. I imagine that much of the high-level architecture of Restlet could be reproduced in Erlang with ease by an experienced Erlang developer.

So I am now mourning the loss of useful insight from Erlang and the likely impossibility of ever using it productively beyond desktop automation. Alas poor Erlang, I knew ye well!