F# in Education & Concurrency with Agents

November was quite a busy month for me. First, I traveled to Cambridge (the "new one" in Massachusetts :-)) to present my work on the F# plugin for MonoDevelop at the F# in Education workshop. Shortly after getting back to London, I started working on a presentation about Concurrent Programming with Agents at the F#unctional Londoners meeting.

Now that both of the events are over, I'd like to write a short summary and also finally publish my slides and demos. In addition, both of the events were recorded (thanks to External Research group at MSR and SkillsMatter), so if you missed them, you can watch the recording...

Both of the events were really great and I had a chance to meet quite a few interesting people. One of the things that make F# great is the community around it. I think that one unique aspect of the F# community is its diversity. The same language is appealing to high school teachers, academics and researchers as well as software developers and technical directors from the industry. This combination is really valuable for both sides. It helps to transfer ideas from research to practice it gives researchers clear picture of problems in the industry that deserve their attention.

Concurrent programming with agents

My talk at the F#unctional Londoners meeting focused on creating concurrent and reactive applications using the message-passing programming model based on agents using the MailboxProcessor<T> type in F#. This is a very attractive model that can be used to write applications that need to handle multiple inputs coming from various sources and efficiently process them. Although I'm not an expert in the field, I can imagine it could be great tool for writing trading systems. Here are some resources from the talk:

In the talk, I first introduced the MailboxProcessor<T> type and then used it to implement a simple chat room. Then I used the HttpListener type to expose the chat room on web using a simple HTTP web server (in a Node.js style). Next we looked at more complicated agents for buffering incoming Twitter messages and agent for creating buffers in a pipeline processing of images.

Going cross-platform with F# in MonoDevelop

The main purpose of my F# in Education Workshop talk was to present the F# plugin for MonoDevelop. However, I also used to talk to explain how F# (and the MonoDevelop plugin) can be used in the academia. The three possible uses that I talked about are teaching (functional) programming, data processing as part of research work and language research based on the open source F# stack. Here are materials from the talk:

For more information about the F# plugin visit the project homepage. If you're interested in using open source version of F# or contributing to the MonoDevelop plugin then you can also join our mailing list.

Discuss on twitter, .
Send corrections via GitHub pull requests.