InfoQ: MindTouch Dream: REST SDK & Lightweight Standalone Server

InfoQ: MindTouch Dream: REST SDK & Lightweight Standalone Server

The key concept of Dream is the web service. A web service gets instantiated by the runtime and provides entry points, called “features”. Features are invoked by issuing an HTTP request, consisting of the Dream Host base address extended by the service name and a URI pattern as well as an HTTP verb such as GET, PUT, POST, DELETE.

Wow! Imagine my surprise when I found this in my mailbox tonight. I had just gotten back from a great day of interviews and podcast recordings — we’ll post about them when they go live — and this sure was a great way to finish up the day. First, we don’t really advertise Dream much. It’s used extensively in our product and represents more or less have a decade of experience of building distributed applications. Second, and even more impressive, this post isn’t just a lazy reprint. It’s actually by someone who understands Dream! All I can say in my best Neo imitation is “Wow!”


  1. Holy moley! You _can_ get media coverage by focusing on building killer and innovative technology. Who knew!? :-)

  2. Hi Steve,
    thanks for the praise! The funny thing is that Dream suprised me as much as the interview surprised you. The reasons are two-fold.
    First, innoQ, the company I’m working for, has been designing service-oriented architectures based on the REST architectural style for quite some time. I’m responsible for .NET technology within the company and I’m constantly looking for new innovative projects. I’ve never heard of Dream until Stefan Tilkov received a link to your Website from the Ruby community :-). Marketing might not be your top priority, but investing a little bit more …
    Second, Dream provides very many interesting approaches. What about publishing or discussing some of them within your blog. For instance the generic signature of features:
    Yield YourFeature(DreamContext context, DreamMessage request, TaskYield response)
    I’ll bet that the majority of the .NET community has no clue why you make use of Iterators instead of simply returning the response. You already started to post some of the interesting stuff in your blog and I would love to hear more!
    Cheers, Hartmut

  3. I’m working on a post that will go into greater detail on the use of iterators for coroutines. Hopefully it will provide some insights!