<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.atalasoft.com/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Rick Minerich's Development Wonderland : dsl</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/tags/dsl/default.aspx</link><description>Tags: dsl</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>F# Discoveries This Week 05/14/2010</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-2010.aspx</link><pubDate>Fri, 14 May 2010 21:06:49 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20671</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20671.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20671</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20671</wfw:comment><description>&lt;p&gt;Today, I’d like to thank all of the F# users on twitter.&amp;#160; &lt;/p&gt;  &lt;p&gt;Twitter’s a great place to stay up to date on the latest F# happenings and many of the posts you see here are either written by or passed on from members of this community.&amp;#160; So, if you are interested in becoming part of the &lt;a href="http://twitter.com/rickasaurus/f-fsharp-users"&gt;F# Twitter Community&lt;/a&gt;, I suggest starting with these frequent F# tweeters: &lt;a href="http://twitter.com/dmohl"&gt;@dmohl&lt;/a&gt;, &lt;a href="http://twitter.com/TigerHasse"&gt;@TigerHasse&lt;/a&gt;, &lt;a href="mailto:r@robertpi,@sforkmann"&gt;@robertpi&lt;/a&gt;, &lt;a href="http://twitter.com/sforkmann"&gt;@sforkmann&lt;/a&gt;, and &lt;a href="http://twitter.com/ptrelford"&gt;@ptrelford&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;I’ve also been known to &lt;a href="http://twitter.com/rickasaurus"&gt;occasionally tweet&lt;/a&gt; on F# and other programming topics.&amp;#160; Now, on to the links.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://lorgonblog.spaces.live.com/Blog/cns!701679AD17B6D310!2080.entry"&gt;Brian McNamara’s More F# Screencasts&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;My previous two screencasts (‘Getting started with F# in VS2010’ and ‘Editing F# source code in VS2010’) have been moved to MSDN, which means they’re now available in a variety of video formats.&amp;#160; A new screencast (‘Managing F# projects in VS2010’) has also been added, so check it out!&lt;/em&gt;&amp;#160; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://strangelights.com/blog/archive/2010/05/14/1660.aspx"&gt;Robert Pickering’s F# Talks in London&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I’ve been in London for the past few days. I arrived Tuesday afternoon and gave at talk at “The F#unctional Londoners Meetup Group” on the Tuesday evening. &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ee310028.aspx"&gt;James McCaffrey’s Combinations and Permutations with F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Understanding combinations and permutations is a fundamental skill in software testing. In this month’s Test Run column I show you how to work with combinations and permutations using code written in the new F# language.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.infoq.com/presentations/Pragmatic-F-Sharp-in-Action"&gt;Amanda Laucher and Josh Graham’s Pragmatic F# in Action (video)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Amanda Laucher and Josh Graham introduce the audience to F# basics showing some of its main features, emphasizing what makes it better than imperative languages.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://tomasp.net/blog/fsharp-mvc-web.aspx"&gt;Tomas Petricek’s ASP.NET and F# Part 1 – Creating MVC Web Applications in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;If you want to use F# for creating an MVC application, you have a few options. It should be possible to create the web application solely as an F# project. However, we'll use a more convenient approach. We'll create a standard C# MVC project and move all the actual implementation to an F# library.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.navision-blog.de/2010/05/12/fake-f-make-1-20-0-released/"&gt;Steffen Forkmann’s FAKE – F# Make 1.20.0 Released&lt;/a&gt; and     &lt;br /&gt;&lt;a href="http://www.navision-blog.de/2010/05/07/using-a-mailboxprocessor-to-speedup-fake-f-make/"&gt;Using a MailboxProcessor to speedup “FAKE – F# MAKE”&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Today I released a new bugfix release for “FAKE – F# Make”. We fixed some path and logging issues and as a new feature we introduced the @@ operator which allows to combine paths.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.trelford.com/blog/post/Trading-on-IM-with-F.aspx"&gt;Phillip Trelford’s Trading on IM with F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The slides from my Trading on IM talk will be attached to this post, and the video/podcast should be appear on the Skills Matter website. I’ll also attach the 100 lines of code for shopping checkout sample, that works with a barcode scanner, I showed at the start of my presentation.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://bloggemdano.blogspot.com/2010/05/integrating-f-and-erlang-using-otpnet.html"&gt;Daniel Mohl’s Integrating F# and Erlang Using OTP.NET&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Recently, I ran across a post that talked about a .NET library named OTP.NET.&amp;#160; OTP.NET is a port of a Java library named JInterface that allows a .NET application to act as an Erlang node.&amp;#160; OTP.NET hasn't been updated in a while and the API is a bit clunky, but the provided functionality is very cool.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h5&gt;&amp;#160;&lt;/h5&gt;  &lt;h3&gt;Nick Grattan’s &lt;a href="http://nickgrattan.wordpress.com/2010/05/09/creating-web-parts-with-f/"&gt;Creating Web Parts with F#&lt;/a&gt; and     &lt;br /&gt;&lt;a href="http://nickgrattan.wordpress.com/2010/05/12/an-edsl-for-emitting-html-tables-in-web-parts-using-f-3/"&gt;An EDSL for Emitting HTML Tables in Web Parts using F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;When writing web parts in C# for SharePoint the System.Web “table” class or “table” HTML elements are most often used for controlling layout (“div” aficionados keep your ears covered…). The code quickly gets ugly and difficult to manage – there’s no direct control to ensure correct matching of opening and closing of tags. So how about writing an EDSL that provides a syntax and constructs for doing this?&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/05/tiny-expert-system-using-monads.html"&gt;Neil Carrier’s Tiny Expert System using Monads&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Below is a tiny expert system implemented using computation expressions. I managed to find a way to use the following computation expression methods: Bind, Delay, and Return.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Neil Carrier’s &lt;a href="http://techneilogy.blogspot.com/2010/05/simple-dsl-tokenization-to-evaluation.html"&gt;A Simple DSL: Tokenization to Evaluation&lt;/a&gt;,     &lt;br /&gt;&lt;a href="http://techneilogy.blogspot.com/2010/05/s-expressions-for-semantic-networks.html"&gt;S-Expressions for Semantic Networks&lt;/a&gt; and     &lt;br /&gt;&lt;a href="http://techneilogy.blogspot.com/2010/05/half-baked-scheme.html"&gt;A Half-Baked Scheme&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This post presents a small example of the above process. It implements a small interpreter which analyzes and evaluates LISP-like prefix expressions involving integers, multiplication, and division. For example: (+ (* 1 2) (* 3 4) evaluates to a data element containing the number 14. To make clear what is happening, be sure and examine the value of tokenList before it is evaluated. &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Julien Ortin’s Technical analysis indicators in F# – &lt;a href="http://lepensemoi.free.fr/index.php/2010/05/05/technical-analysis-indicators-in-f-bands"&gt;Bands&lt;/a&gt;, &lt;a href="http://lepensemoi.free.fr/index.php/2010/05/10/technical-analysis-indicators-in-f-signal"&gt;Signal&lt;/a&gt; and &lt;a href="http://lepensemoi.free.fr/index.php/2010/05/10/technical-analysis-indicators-in-f-ehlers"&gt;Ehlers&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This is part of a series on technical analysis indicators in F#, based on the multi-language TA-Lib.&amp;#160; Quick disclaimer : some of these indicators are not verified.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://fsharp-euler.wikispaces.com/"&gt;Yin Zhu’s F# for Project Euler Problems&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Some problems have two versions of solutions, the version I first learned F# and the version based on my current knowledge of F#. The first version is usually quite easy to understand even if the reader does not know F#, while the second uses some nice F# feature or good functional programming practice in general.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://fsharpnews.blogspot.com/2010/05/java-vs-f.html"&gt;Jon Harrop’s Java vs. F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;What Cliff forgot to mention is that .NET also provides value types and a far more compelling example than complex numbers is the humble hash table.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/timng/archive/2010/05/06/f-wpf-events.aspx"&gt;Tim Ng’s F# + WPF + Events&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I recently had to do some travelling for the VS launch event in Las Vegas and QCON event in Beijing. One of the things thats nice about travelling is that it gives you time to do some things you may not otherwise do - in my case, I had a chance to try to (re) learn WPF and see how I can use F# with WPF.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.markhneedham.com/blog/2010/05/10/f-tacit-programming/"&gt;Mark Needham’s Tacit Programming&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I realised that this approach quite closely describes what I've been trying to drive towards in my most recent playing around with F# and it's actually quite fun trying to drive any intermediate state or storing of data in variables out of a program and just relying completely on function composition and higher order functions.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://dotnet.dzone.com/news/f-my-current-coding-approach"&gt;Mark Needham’s F#: My current coding approach&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I spent a bit of time over the weekend coding a simple generic builder for test objects in F# and I noticed that although there were similarity with the ways I drive code in C# or Java my approach didn't seem to be exactly the same.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://continuousdevelopment.wordpress.com/2010/05/13/f-vs-c-samples/"&gt;Ebru Cucen’s F# vs C# Samples&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;After my talk at ldnUG yesterday, I got nice suggestions from Zi Makki, and here is the first one: comparison between F# and C#, especially using LINQ. This subject had been quite popular once in a while, now it is probably my time to focus on this subject.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.bjoernrochel.de/2010/05/12/kata-stringcalculator-in-f/"&gt;Bjorn Rochel’s Kata StringCalculator in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Two meetings ago we decided to do some coding on every meeting. The previous meeting we solved Kata FizzBuzz and on yesterday’s meeting we tried to dance with Roy Osheroves Kata StringCalculator.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://weblogs.asp.net/gunnarpeipman/archive/2010/05/12/f-in-asp-net-mathematics-and-testing.aspx"&gt;Gunnar Peipman’s F# in ASP.NET, mathematics and testing&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Starting from Visual Studio 2010 F# is full member of .NET Framework languages family. It is functional language with syntax specific to functional languages but I think it is time for us also notice and study functional languages. In this posting I will show you some examples about cool things other people have done using F#.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://langexplr.blogspot.com/2008/02/defining-mutually-recursive-classes-in.html"&gt;Luis Diego Fallas’s Defining mutually recursive classes in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;As explained in Adventures in F#--Corecursion defining mutually recursive functions requires the use of the &lt;code&gt;and&lt;/code&gt; keyword between function definitions. As briefly mentioned in the Type Definitions section of the manual, the &lt;code&gt;and&lt;/code&gt; keyword can also be used in types.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.msdev.com/Directory/Description.aspx?EventId=1846"&gt;Nancy Strickland’s New Features in F# 2.0 Training Video&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Describes the new features in F# version 2.0, which comes included in Visual Studio 2010.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://partialclass.blogspot.com/2010/05/dotnetrocks-in-boston.html"&gt;DotNetRocks in Boston (with F# Panel)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The panel suggested we add F# to our repertoire and understand its strengths, and use it where it's beneficial. I'm going to take that advice. Bottom line is if I can replace 50 lines of confusing C# code with 10 lines of elegant F#, I've done myself a service.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-2010.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+05%2f14%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-2010.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+05%2f14%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-2010.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-2010.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-2010.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-2010.aspx&amp;amp;title=F%23+Discoveries+This+Week+05%2f14%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-2010.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+05%2f14%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-2010.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+05%2f14%2f2010&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-2010.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20671" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/asp.net/default.aspx">asp.net</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/fsharp/default.aspx">fsharp</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/math/default.aspx">math</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/dsl/default.aspx">dsl</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/twitter/default.aspx">twitter</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/wpf/default.aspx">wpf</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/fake/default.aspx">fake</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/monad/default.aspx">monad</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/technical+analysis/default.aspx">technical analysis</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Euler/default.aspx">Euler</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/kata/default.aspx">kata</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Web+Parts/default.aspx">Web Parts</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/screencasts/default.aspx">screencasts</category></item><item><title>F# Discoveries This Week 08/31/2009</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/31/f-discoveries-this-week-08-31-2009.aspx</link><pubDate>Mon, 31 Aug 2009 17:44:43 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:19232</guid><dc:creator>RickM</dc:creator><slash:comments>2</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/19232.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=19232</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=19232</wfw:comment><description>&lt;p&gt;This week we have a fresh video interview with Chris Smith.&amp;#160; This is in addition to some excellent writing on prototyping DSLs, asynchronous workflows, WPF, functional composition and the open/closed principle.&lt;/p&gt;  &lt;p&gt;I would also like to note that for the next few weeks I will be off vacationing.&amp;#160; I apologize in advance for any missed or delayed updates.&amp;#160; If you live in Japan and would like to discuss F# or functional programming in general, I would love to meet up with you for tea or a beer.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.davidgiard.com/2009/08/26/ChrisSmithOnF.aspx"&gt;Chris Smith is interviewed on Technology and Friends&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Chris Smith is a software design engineer on the Microsoft Visual F# team. In this interview, Chris describes the uses of F# and how it differs from object-oriented languages, such as C# and Visual Basic.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.devx.com/dotnet/Article/42552"&gt;Adam Granicz discusses Prototyping DSLs in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;To build a domain specific language, you need a quick and effective prototyping process that can parse your language syntax and perform semantic checking. &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://bloggemdano.blogspot.com/2009/08/f-asynchronous-directorygetfiles-and.html"&gt;Daniel Mohl writes an Asynchronous Directory.GetFiles and File.Copy&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The following examples show how it could be solved with F# both synchronously and asynchronously. While this is definitely not production ready, it provides a few samples of how asynchronous workflows can be used in the wild.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://stevehorsfield.wordpress.com/2009/08/26/example-programmatic-addition-of-wpf-data-template/"&gt;Steve Horsfield describes programmatic addition of a WPF Data Template to a Resource Dictionary&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I have noticed some interest in my earlier post on how to add a WPF data template to a resource dictionary in code and so this post is a demonstration of the technique.&amp;#160; The code is presented in F# but I have deliberately kept the code simple and fairly non-functional so that those of a C# or VB.NET background can follow the process easily.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://stevehorsfield.wordpress.com/2009/08/24/f-composing-functions/"&gt;Steve Horsfield explores function composition operators&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Following on from my last post, and in preparation for a series on producing a full WPF application in F#, in this post I discuss the differences between the |&amp;gt; and &amp;gt;&amp;gt; operators and some additional functions I find helpful for composing functions.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.navision-blog.de/2009/08/24/the-openclosed-principle-c-vs-f/"&gt;Steffen Forkmann demonstrates the open/closed principle in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In object-oriented programming, the open/closed principle states &amp;quot;software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification”&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;If we follow this principle we get lot’s of small and testable classes. I want to demonstrate this with a simple spam checker for mails.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/31/f-discoveries-this-week-08-31-2009.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+08%2f31%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/31/f-discoveries-this-week-08-31-2009.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/31/f-discoveries-this-week-08-31-2009.aspx&amp;amp;;title=F%23+Discoveries+This+Week+08%2f31%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/31/f-discoveries-this-week-08-31-2009.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/31/f-discoveries-this-week-08-31-2009.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/31/f-discoveries-this-week-08-31-2009.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/31/f-discoveries-this-week-08-31-2009.aspx&amp;amp;title=F%23+Discoveries+This+Week+08%2f31%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/31/f-discoveries-this-week-08-31-2009.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/31/f-discoveries-this-week-08-31-2009.aspx&amp;amp;;title=F%23+Discoveries+This+Week+08%2f31%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/31/f-discoveries-this-week-08-31-2009.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/31/f-discoveries-this-week-08-31-2009.aspx&amp;amp;;title=F%23+Discoveries+This+Week+08%2f31%2f2009&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/31/f-discoveries-this-week-08-31-2009.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=19232" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/fsharp/default.aspx">fsharp</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/open+closed+principle/default.aspx">open closed principle</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/dsl/default.aspx">dsl</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/asynchronous+workflows/default.aspx">asynchronous workflows</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/wpf/default.aspx">wpf</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/function+composition/default.aspx">function composition</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/asynchronous/default.aspx">asynchronous</category></item><item><title>Discoveries This Week 07/19/2009</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2009/07/19/discoveries-this-week-07-19-2009.aspx</link><pubDate>Sun, 19 Jul 2009 18:45:06 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:18877</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/18877.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=18877</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=18877</wfw:comment><description>&lt;p&gt;With the impending release of Visual Studio 2010, the F# Community continues to wind up.&amp;#160; This week we have finally gotten our F# User Group Videos up.&amp;#160; In addition, we also have a wide ranging selection of fresh F# content including Units of Measure, XML parsing, WPF Games and Pattern Matching.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://fsug.org/PreviousSpeakers/tabid/66/Default.aspx"&gt;New England F# User Group Talks&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;Note: As the server is currently moving to a new location, our site may be temporarily down.&amp;#160; If you encounter an error, please try again later.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This past week we’ve managed to get up video from a bunch of our past &lt;a href="http://fsug.org/"&gt;FSUG&lt;/a&gt; talks.&amp;#160; Original F# video content here from such famed speakers as &lt;a href="http://www.richardhaleshawgroup.com/rhsgroup/DesktopDefault.aspx"&gt;Richard Hale Shaw&lt;/a&gt; and &lt;a href="http://qconlondon.com/london-2009/speaker/Amanda+Laucher"&gt;Amanda Laucher&lt;/a&gt;.&amp;#160; &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://weblogs.asp.net/podwysocki/archive/2009/07/10/modeling-dsls-with-f-and-units-of-measure.aspx"&gt;Matthew Podwysocki’s Modeling DSLs with F# and Units of Measure&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The conciseness of the language makes it an ideal candidate for scientific DSLs where such units of measure are important, but as we can see from this example, it could even apply to the general physics of game play.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In this post, Matthew elegantly displays the beauty of Units of Measure outside of it’s standard scientific computation context.&amp;#160; If you are in the Boston area, be sure to catch him speak at our next F# user group meeting on August 3rd.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.markhneedham.com/blog/2009/07/19/f-active-patterns-for-parsing-xml/"&gt;Mark Needham’s F#: Active patterns for parsing xml&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Making use of the active pattern in the code has made it much easier to work with than passing around a sequence of tuples as I was doing previously. It has also made it easy to exit from the program early if there is a problem with the data inputted.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I find XML parsing to be one of the most consistently painful programming tasks.&amp;#160; No matter what constructs seem to be added to the .NET platform, differences between the declarative and imperative seem to become most obvious when the two paradigms collide.&amp;#160; &lt;/p&gt;  &lt;p&gt;However in this case, I found Mark’s approach to XML parsing via reactive patterns refreshing.&amp;#160; I also like his test-first approach.&amp;#160; He is one of few bloggers I have seen practicing anything close to true TDD.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.trelford.com/blog/post/Mastermind-F-WPF-Game-Sample.aspx"&gt;Phillip Trelford’s Mastermind F# WPF Game Sample&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;While playing around with the F# September CTP over the last week, I made a short, &amp;lt;300 lines, implementation of the &lt;/em&gt;&lt;a href="http://en.wikipedia.org/wiki/Mastermind_%28board_game%29"&gt;&lt;em&gt;Mastermind board game&lt;/em&gt;&lt;/a&gt;&lt;em&gt; using some Windows Presentation Foundation (WPF) controls.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Seeing game or simulation implementations in F# never ceases to amaze me.&amp;#160; In this case, what would be a moderately large project in C# is not even 300 lines of F#.&amp;#160; Phillip’s Mastermind is also interesting in that it demonstrates how seamlessly WPF integrates with F#.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://channel9.msdn.com/posts/kmcgrath/Patterns-and-Match-Expressions-in-F/"&gt;Gordon Hogenson’s Talk, Patterns and Match Expressions in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In this video, programming writer, Gordon Hogenson explains and gives examples of patterns in F# and explains the use of the match expression to control branching based on patterns in data.&lt;/em&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I don’t believe I have seen Gordon speak in the past and enjoyed this talk very much.&amp;#160; He does a great job at presenting pattern matching in a way which is very accessible to the every day C# programmer.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.atalasoft.com/cs/blogs/rickm/archive/2009/07/19/discoveries-this-week-07-19-2009.aspx&amp;amp;;subject=Discoveries+This+Week+07%2f19%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/07/19/discoveries-this-week-07-19-2009.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/07/19/discoveries-this-week-07-19-2009.aspx&amp;amp;;title=Discoveries+This+Week+07%2f19%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/07/19/discoveries-this-week-07-19-2009.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/07/19/discoveries-this-week-07-19-2009.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/07/19/discoveries-this-week-07-19-2009.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/07/19/discoveries-this-week-07-19-2009.aspx&amp;amp;title=Discoveries+This+Week+07%2f19%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/07/19/discoveries-this-week-07-19-2009.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/07/19/discoveries-this-week-07-19-2009.aspx&amp;amp;;title=Discoveries+This+Week+07%2f19%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/07/19/discoveries-this-week-07-19-2009.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/07/19/discoveries-this-week-07-19-2009.aspx&amp;amp;;title=Discoveries+This+Week+07%2f19%2f2009&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/07/19/discoveries-this-week-07-19-2009.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=18877" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/fsharp/default.aspx">fsharp</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/unit+testing/default.aspx">unit testing</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/units+of+measure/default.aspx">units of measure</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/units/default.aspx">units</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/dsl/default.aspx">dsl</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/pattern+matching/default.aspx">pattern matching</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/wpf/default.aspx">wpf</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/xml/default.aspx">xml</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/DSLs/default.aspx">DSLs</category></item><item><title>Discoveries This Week 05/17/2009</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2009/05/17/discoveries-this-week-05-17-2009.aspx</link><pubDate>Sun, 17 May 2009 21:43:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:18495</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/18495.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=18495</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=18495</wfw:comment><description>&lt;p&gt;A bit of a slow week.&amp;#160; Perhaps some are out playing in the recently fantastic weather instead of blogging about functional programming.&amp;#160; My favorites this week were Paul Hudak’s talk on Haskell, Jason Olson’s Channel9 discussion, Niklas Gustafssons’s Actors in F# and Kurt Schelfthout’s Testing DSLs with FsCheck.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Paul Hudak on InfoQ - &lt;a href="http://www.infoq.com/interviews/paul-hudak-haskell-Qcon-SF-08&amp;amp;language=en"&gt;Haskell&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;An interview that begins with a discussion of when to introduce difficult Haskell concepts like monads, moves to a discussion of the philosophy of higher order programming.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Paul Hudak, as a principal designer of Haskell, explains FP topics with a passion few others could.&amp;#160; Also, I’m curious about this idea of &lt;a href="http://www.haskell.org/haskellwiki/Arrow"&gt;arrows&lt;/a&gt; (Freyd-categories) as opposed to &lt;a href="http://www.haskell.org/haskellwiki/Monad"&gt;monads&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Jason Olson’s on Channel9 - &lt;a href="http://channel9.msdn.com/posts/Charles/Jason-Olson-Composing-Programming-Languages-F-and-OO/"&gt;Composing Programming Languages&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;We talk about his [Lang.NET F# and OO] presentations and his perspectives on object orientation, F# and his own language.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;As it seems impossible to pin down exactly what OO is, perhaps we should try to categorize it’s subcomponents across different languages.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Niklas Gustafsson on &lt;a href="http://blogs.msdn.com/concurrently_speaking/archive/2009/05/12/actors-in-f.aspx"&gt;Actors in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;One of the advantages of this model over the Axum model is that any number of clients can communicate with an actor, all that is needed is access to the mailbox reference. &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I must beg to differ with Niklas on one of his stated disadvantages of the Actor model.&amp;#160; It would be easy enough to include a “closing down state” in your Actor FSA.&amp;#160; The inability to statically check your agreements is correct though.&amp;#160; I’d be interested in seeing a simple &lt;a href="http://msdn.microsoft.com/en-us/devlabs/dd795202.aspx"&gt;Axum&lt;/a&gt; sample which could handle N clients and still be statically checked.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Kurt Schelfthout on &lt;a href="http://fortysix-and-two.blogspot.com/2009/05/how-to-test-dsls-and-fschecking-fscheck.html"&gt;How to test DSLs (and: FsChecking FsCheck)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;It occurred to me that (domain specific) languages seem difficult to test using traditional unit tests: after all, the usage possibilities are far greater for a language than for, say, a typical user interface.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;An extremely clever way to test DSLs. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I understand it is exceedingly painful to sign up for an account to leave a simple comment.&amp;#160; That given, I am still trying to figure out a solution to my spam problem.&amp;#160; For now, if you would like to comment and don’t wish to set up an account, please &lt;a href="http://www.atalasoft.com/cs/blogs/rickm/contact.aspx"&gt;email me&lt;/a&gt; your comment and I will manually post it here.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.atalasoft.com/cs/blogs/rickm/archive/2009/05/17/discoveries-this-week-05-17-2009.aspx&amp;amp;;subject=Discoveries+This+Week+05%2f17%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/05/17/discoveries-this-week-05-17-2009.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/05/17/discoveries-this-week-05-17-2009.aspx&amp;amp;;title=Discoveries+This+Week+05%2f17%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/05/17/discoveries-this-week-05-17-2009.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/05/17/discoveries-this-week-05-17-2009.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/05/17/discoveries-this-week-05-17-2009.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/05/17/discoveries-this-week-05-17-2009.aspx&amp;amp;title=Discoveries+This+Week+05%2f17%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/05/17/discoveries-this-week-05-17-2009.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/05/17/discoveries-this-week-05-17-2009.aspx&amp;amp;;title=Discoveries+This+Week+05%2f17%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/05/17/discoveries-this-week-05-17-2009.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/05/17/discoveries-this-week-05-17-2009.aspx&amp;amp;;title=Discoveries+This+Week+05%2f17%2f2009&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/05/17/discoveries-this-week-05-17-2009.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=18495" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/fsharp/default.aspx">fsharp</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/haskell/default.aspx">haskell</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/FsCheck/default.aspx">FsCheck</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/dsl/default.aspx">dsl</category></item></channel></rss>