<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog on 7sharp9</title><link>https://7sharp9.github.io/programming/</link><description>Recent content in Blog on 7sharp9</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>7sharp9@mail.com (Dave Thomas)</managingEditor><webMaster>7sharp9@mail.com (Dave Thomas)</webMaster><copyright>© 2026 Dave Thomas</copyright><lastBuildDate>Sun, 15 May 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://7sharp9.github.io/programming/index.xml" rel="self" type="application/rss+xml"/><item><title>Myriad Configuration Changes</title><link>https://7sharp9.github.io/programming/2022-05-15-myriad-configuration-changes/</link><pubDate>Sun, 15 May 2022 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2022-05-15-myriad-configuration-changes/</guid><description>&lt;p&gt;The other day I released version &lt;a href="https://www.nuget.org/packages/myriad" target="_blank" rel="noreferrer"&gt;0.8.1&lt;/a&gt; of &lt;a href="https://github.com/MoiraeSoftware/myriad" target="_blank" rel="noreferrer"&gt;Myriad&lt;/a&gt;, its got some new configuration settings so I thought I would quickly talk about them here.&lt;/p&gt;</description></item><item><title>One year on YouTube</title><link>https://7sharp9.github.io/programming/2019-12-03-one-year-on-youtube/</link><pubDate>Tue, 03 Dec 2019 12:48:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2019-12-03-one-year-on-youtube/</guid><description>&lt;p&gt;So Ive had my YouTube channel for a year now, how did it go?&lt;/p&gt;</description></item><item><title>Myriad Intro</title><link>https://7sharp9.github.io/programming/2019-11-06-myriad-intro/</link><pubDate>Wed, 06 Nov 2019 17:08:32 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2019-11-06-myriad-intro/</guid><description>&lt;p&gt;I released a new meta programming club &lt;a href="https://youtu.be/Yef8EJJfd9Q" target="_blank" rel="noreferrer"&gt;video&lt;/a&gt; yesterday on my YouTube &lt;a href="https://www.youtube.com/channel/UC0kXc1f_WBYSklrElcPWzgg" target="_blank" rel="noreferrer"&gt;channel&lt;/a&gt;&lt;/p&gt;&#10;&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/Yef8EJJfd9Q" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&#10;&lt;p&gt;I thought I would write a little about it here on my blog too.&lt;/p&gt;&#10;&lt;p&gt;I recently did a little work to flesh out the plugin interface for Myriad. My friend &lt;a href="https://twitter.com/enricosada" target="_blank" rel="noreferrer"&gt;Enrico Sada&lt;/a&gt; helped out with&#10;some of the fiddly MsBuild work in dotnet which can be a little confusing at times.&lt;/p&gt;</description></item><item><title>Final Month On Patreon</title><link>https://7sharp9.github.io/programming/2019-10-21-final-month-on-patreon/</link><pubDate>Mon, 21 Oct 2019 11:08:47 +0100</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2019-10-21-final-month-on-patreon/</guid><description>&lt;p&gt;Ive decided that this month is last month I&amp;rsquo;ll be on Patreon.&lt;/p&gt;</description></item><item><title>Applied Meta-Programming with Myriad</title><link>https://7sharp9.github.io/programming/2019-04-24-applied-metaprogramming-with-myriad/</link><pubDate>Wed, 24 Apr 2019 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2019-04-24-applied-metaprogramming-with-myriad/</guid><description>&lt;p&gt;This article is all about F# metaprogramming and research that I did which evolved over time, firstly with a project called Falanx that I developed while working for Jet/Walmart, then later the ideas and concepts evolved into Myriad.&lt;/p&gt;</description></item><item><title>Building a single page application with Elm</title><link>https://7sharp9.github.io/programming/2017-12-09-elmbook/</link><pubDate>Sat, 09 Dec 2017 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2017-12-09-elmbook/</guid><description>&lt;p&gt;Hi, its been a very long while since I last blogged, I promised this ages ago, its a partial sample chapter for a book I was planning on Elm but the publisher started to muck me about so it never happened.&lt;/p&gt;</description></item><item><title>I want to tell you a storyboard</title><link>https://7sharp9.github.io/programming/2017-04-11-i-want-to-tell-you-a-storyboard/</link><pubDate>Tue, 11 Apr 2017 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2017-04-11-i-want-to-tell-you-a-storyboard/</guid><description>&lt;p&gt;So as promised here&amp;rsquo;s a post with more detail on the iOS designer provider that I presented as part of my talk at &lt;a href="https://skillsmatter.com/conferences/8053-f-sharp-exchange-2017" target="_blank" rel="noreferrer"&gt;fsharpX 2017&lt;/a&gt; The talk is entitled &lt;a href="https://skillsmatter.com/skillscasts/10042-lightning-talk-session-expanding-the-horizons-of-mobile-development" target="_blank" rel="noreferrer"&gt;Expanding the Horizons of Mobile Development&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Elmtastic Updates</title><link>https://7sharp9.github.io/programming/2016-06-30-elmtastic-updates/</link><pubDate>Thu, 30 Jun 2016 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2016-06-30-elmtastic-updates/</guid><description>&lt;p&gt;With the release of Elm 0.17 there were some fundamental changes to the Elm language. This post&#10;is my attempt to help those that may be struggling with these changes&lt;/p&gt;</description></item><item><title>Creating fuse applications with fable</title><link>https://7sharp9.github.io/programming/2016-07-06-fable-fuse-template/</link><pubDate>Tue, 07 Jun 2016 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2016-07-06-fable-fuse-template/</guid><description>&lt;p&gt;So as promised here&amp;rsquo;s a guide to creating your first &lt;strong&gt;fable |&amp;gt; fuse&lt;/strong&gt; application&lt;/p&gt;</description></item><item><title>Light The Fuse</title><link>https://7sharp9.github.io/programming/2016-06-03-light-the-fuse/</link><pubDate>Fri, 03 Jun 2016 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2016-06-03-light-the-fuse/</guid><description>&lt;p&gt;In this post Im going to be introducing something new and exciting the combination of F#, Fable and Fuse.&lt;/p&gt;</description></item><item><title>New Adventures</title><link>https://7sharp9.github.io/programming/2016-05-31-new-adventures/</link><pubDate>Tue, 31 May 2016 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2016-05-31-new-adventures/</guid><description>&lt;p&gt;So today was my last day at Xamarin.&lt;/p&gt;</description></item><item><title>flame on</title><link>https://7sharp9.github.io/programming/2016-05-29-flame-on/</link><pubDate>Sun, 29 May 2016 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2016-05-29-flame-on/</guid><description>&lt;p&gt;A few weeks back I posted on Twitter that I was experimenting with flame graphs, In this post I will share how this was accomplished.&lt;/p&gt;</description></item><item><title>Building Emulators in FSharp</title><link>https://7sharp9.github.io/programming/2016-03-06-building-emulators-in-fsharp/</link><pubDate>Sun, 06 Mar 2016 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2016-03-06-building-emulators-in-fsharp/</guid><description>&lt;p&gt;I wanted to briefly talk about what I&amp;rsquo;ve been up to lately. I&amp;rsquo;ve been doing a spot of compiler hacking, working on improving Type Providers and generally tinkering with concepts relating to macros etc. I&amp;rsquo;ve also been tinkering with the Elixir and Rust which I quite like too.&lt;/p&gt;</description></item><item><title>F# Community Hero</title><link>https://7sharp9.github.io/programming/2015-10-25-f-community-hero/</link><pubDate>Sun, 25 Oct 2015 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2015-10-25-f-community-hero/</guid><description>&lt;p&gt;Ive been meaning to write this post for ages but Ive only just found the time.&lt;/p&gt;&#10;&lt;p&gt;On the 3rd of September my good friend Ryan Riley (aka &lt;a href="https://twitter.com/panesofglass" target="_blank" rel="noreferrer"&gt;@panesofglass&lt;/a&gt;) emailed me letting me know I had won a Community for F# hero award for 2015!&lt;/p&gt;</description></item><item><title>Reckoning day</title><link>https://7sharp9.github.io/programming/2015-07-16-reckoning-day/</link><pubDate>Thu, 16 Jul 2015 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2015-07-16-reckoning-day/</guid><description>&lt;p&gt;I&amp;rsquo;ve finally been awarded a &lt;a href="https://mvp.microsoft.com/en-us/default.aspx" target="_blank" rel="noreferrer"&gt;Microsoft MVP&lt;/a&gt; its been quite a long time coming. Ive been nominated for MVP every year since July 2011 but until now I have been unsuccessful. On the 1st of July I received an email congratulating me that I had been successful on my MVP nomination.&lt;/p&gt;</description></item><item><title>Meta-Matic</title><link>https://7sharp9.github.io/programming/2015-07-08-meta-matic/</link><pubDate>Sun, 12 Jul 2015 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2015-07-08-meta-matic/</guid><description>&lt;p&gt;Sit down, strap in, and prepare for take off, we&amp;rsquo;re going Meta-Matic!&lt;/p&gt;</description></item><item><title>Are you my type?</title><link>https://7sharp9.github.io/programming/2015-03-30-are-you-my-type/</link><pubDate>Mon, 30 Mar 2015 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2015-03-30-are-you-my-type/</guid><description>&lt;p&gt;Did you know there was more to the type matching operator than just pattern matching and exception handling?&lt;/p&gt;</description></item><item><title>Terror From The Deep</title><link>https://7sharp9.github.io/programming/2014-12-07-terror-from-the-deep/</link><pubDate>Wed, 10 Dec 2014 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2014-12-07-terror-from-the-deep/</guid><description>&lt;p&gt;So this is my Christmas special. I&amp;rsquo;ve been asked on numerous times to write about the F# addin for Xamarin studio which is in the &lt;a href="https://github.com/fsharp/fsharpbinding" target="_blank" rel="noreferrer"&gt;fsharpbinding repo&lt;/a&gt;, this repo is shared with the emacs support and also the Sublime Text support. So in this edition we will be taking a deep dive into the terrifying deep depths of the F# compiler and F# addin development&amp;hellip;&lt;/p&gt;</description></item><item><title>I saw my reflection and cried ...</title><link>https://7sharp9.github.io/programming/2014-11-17-i-saw-my-reflection-and-cried-dot-dot-dot/</link><pubDate>Sun, 16 Nov 2014 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2014-11-17-i-saw-my-reflection-and-cried-dot-dot-dot/</guid><description>&lt;p&gt;While I was visiting Boston earlier in the year I had the misfortune of kicking myself in the teeth with reflection. It&amp;rsquo;s something all programmers inevitably go through with reflection API&amp;rsquo;s as they are inherently untyped, a simple typo can leave you tearing out your hair or punching through your monitor! Yeah there&amp;rsquo;s things the horizon that will help namely the &lt;a href="http://msdn.microsoft.com/en-us/magazine/dn802602.aspx" target="_blank" rel="noreferrer"&gt;nameof&lt;/a&gt; expression in C#6 which should help in some areas, that&amp;rsquo;s if your willing to pay the price of using C#, but I wont go into that here :-). In F# we can leverage Type Providers fairly easily to wrap API usages in cases that we are interested in, or even create a general usage with a little more effort.&lt;/p&gt;</description></item><item><title>Flux Compression (redux)</title><link>https://7sharp9.github.io/programming/2014-11-05-flux-compression-redux/</link><pubDate>Wed, 05 Nov 2014 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2014-11-05-flux-compression-redux/</guid><description>&lt;p&gt;First of all the title, redux because I&amp;rsquo;m revising post I started on earlier in the year, compression because this has to do with compression, and Flux, which is also part of the redux, one of the first things I remember writing on the net was an article about Flux Compression Generators on &lt;a href="http://www.h2g2.com" target="_blank" rel="noreferrer"&gt;H2G2&lt;/a&gt;, its still there too!&lt;/p&gt;</description></item><item><title>Anything you can do ...</title><link>https://7sharp9.github.io/programming/2014-06-01-anything-you-can-do/</link><pubDate>Sun, 01 Jun 2014 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2014-06-01-anything-you-can-do/</guid><description>&lt;p&gt;For any of you that are aware of the newly updated Xamarin Web site, you may have seen the &lt;a href="https://xamarin.com/platform" target="_blank" rel="noreferrer"&gt;following&lt;/a&gt;:&lt;/p&gt;&#10;&lt;blockquote&gt;&lt;p&gt;Objective-C was ahead of its time 30 years ago.&#10;C# is ahead of its time today.&#10;Anything you can do in Objective-C or Java, you can do in C# with Xamarin—usually more succinctly and with fewer bugs.&lt;/p&gt;</description></item><item><title>Xamarin 3 F# Awesomeness</title><link>https://7sharp9.github.io/programming/2014-05-28-xamarin-3-fsharp-awsomeness/</link><pubDate>Wed, 28 May 2014 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2014-05-28-xamarin-3-fsharp-awsomeness/</guid><description>&lt;p&gt;With the release of Xamarin 3 there is a swathe of new features to the platform, but obviously the most important one is obviously F# support is now included by default in Xamarin Studio so there is no escape from the awesomeness of F#!&lt;/p&gt;</description></item><item><title>Danger unstable structure - No more!</title><link>https://7sharp9.github.io/programming/2014-02-10-danger-unstable-structure/</link><pubDate>Mon, 10 Feb 2014 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2014-02-10-danger-unstable-structure/</guid><description>&lt;figure class="img-left sixth"&gt;&lt;img src="https://7sharp9.github.io/img/restored/IMG_0379.png"&gt;&#10; &lt;/figure&gt;&#10;&#10;&#10;&lt;p&gt;Over the last year a lot of work has been done on the &lt;a href="http://fsharp.github.io/fsharpbinding/" target="_blank" rel="noreferrer"&gt;F# addin&lt;/a&gt; for &lt;a href="https://xamarin.com/studio" target="_blank" rel="noreferrer"&gt;Xamarin Studio&lt;/a&gt;. Lots of great new features have been added and a lot of bugs have been squashed. I want to talk a bit about whats been happening and the evolution of the F# addin.&lt;/p&gt;</description></item><item><title>Adding Touch To SpriteKit</title><link>https://7sharp9.github.io/programming/2013-09-29-adding-touch-to-spritekit/</link><pubDate>Sun, 29 Sep 2013 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2013-09-29-adding-touch-to-spritekit/</guid><description>&lt;p&gt;Only a quick post this week. Last time we looked at &lt;a href="https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Introduction/Introduction.html" target="_blank" rel="noreferrer"&gt;SpriteKit&lt;/a&gt; and how to add some particle emmiters to simulate a star-field and exhaust on a spaceship, this time lets look at adding some touch based input to move the spaceship around. &lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>Spritekit particle fun</title><link>https://7sharp9.github.io/programming/2013-09-20-sprite-kit-particle-fun/</link><pubDate>Fri, 20 Sep 2013 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2013-09-20-sprite-kit-particle-fun/</guid><description>&lt;p&gt;I have been meaning to write this post for quite a while now. Since the first announcement of the iOS7 beta I immediately saw the list of new API&amp;rsquo;s and &lt;strong&gt;SpriteKit&lt;/strong&gt; caught my eye straight away. I only managed to get time to briefly look over the API and saw that is wasn&amp;rsquo;t the usual trashy API with a million method overloads, internal mutation sucker punch type thing. It seems to be very declarative and intuitive, which makes for a nice change. &lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>Can I have some F# with that?</title><link>https://7sharp9.github.io/programming/2013-06-21-can-i-have-some-fsharp-with-that/</link><pubDate>Fri, 21 Jun 2013 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2013-06-21-can-i-have-some-fsharp-with-that/</guid><description>&lt;p&gt;&#10; &lt;figure class="img-left sixth"&gt;&lt;img src="http://scriptcs.net/images/logo@2x.png"&gt;&#10; &lt;/figure&gt;&#10;&#10; There&amp;rsquo;s been a fair bit of activity lately from a project called &lt;a href="http://scriptcs.net" target="_blank" rel="noreferrer"&gt;ScriptCS&lt;/a&gt;, it allows you to put together a project using C# as a lightweight scripting language, forgoing the use of Visual Studio which can sometimes be too bloated and bulky.&lt;/p&gt;</description></item><item><title>Monster Zero - Revisited</title><link>https://7sharp9.github.io/programming/2013-06-05-monster-zero-revisited/</link><pubDate>Wed, 05 Jun 2013 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2013-06-05-monster-zero-revisited/</guid><description>&lt;p&gt;&#10; &lt;figure class="img-left"&gt;&lt;img src="http://upload.wikimedia.org/wikipedia/en/c/ce/KingGhidorah.jpg"&gt;&#10; &lt;/figure&gt;&#10;&#10;&lt;br&gt;&#10;This creature is capable of tremendous destruction due to it&amp;rsquo;s size, flight &lt;em&gt;(with the creature&amp;rsquo;s wings also generating hurricane strength winds)&lt;/em&gt; and possesses several breath weapons &lt;em&gt;(e.g., heat and energy)&lt;/em&gt;.&lt;/p&gt;&#10;&lt;p&gt;What am I talking about here? Maybe it&amp;rsquo;s &lt;a href="http://en.wikipedia.org/wiki/King_Ghidorah" target="_blank" rel="noreferrer"&gt;Monster Zero&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/King_Ghidorah" target="_blank" rel="noreferrer"&gt;King Ghidorah&lt;/a&gt; as it&amp;rsquo;s sometimes known. No it&amp;rsquo;s &lt;a href="http://msdn.microsoft.com/en-us/library/hh228603.aspx" target="_blank" rel="noreferrer"&gt;TPL Dataflow&lt;/a&gt;! &lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>Some kind of monster</title><link>https://7sharp9.github.io/programming/2013-06-01-some-kind-of-monster/</link><pubDate>Sat, 01 Jun 2013 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2013-06-01-some-kind-of-monster/</guid><description>&lt;p&gt;&#10; &lt;figure class="img-left third"&gt;&lt;img src="http://upload.wikimedia.org/wikipedia/en/2/29/Godzilla_%2754_design.jpg"&gt;&#10; &lt;/figure&gt;&#10;&#10;&#10;What&amp;rsquo;s 100 meters high and weighs in at around 60,000 tons? No its not Godzilla, its Reactive extensions!&lt;/p&gt;&#10;&lt;p&gt;Lately on one of my projects I have been doing a lot of stream manipulation, and although I solved the problem quite easily using F# async workflows, there were other solutions available to help solve the problem. I could of used things like &lt;a href="http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx" target="_blank" rel="noreferrer"&gt;async await&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/hh228603.aspx" target="_blank" rel="noreferrer"&gt;TPL Dataflow(TDF)&lt;/a&gt;, and &lt;a href="http://rx.codeplex.com" target="_blank" rel="noreferrer"&gt;Reactive Extensions (Rx)&lt;/a&gt;. This is going to be a short post on using Rx with F#. &lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>I node something (Bout You)</title><link>https://7sharp9.github.io/programming/2013-05-05-i-node-something/</link><pubDate>Sun, 05 May 2013 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2013-05-05-i-node-something/</guid><description>&lt;h1 class="relative group"&gt;What is Edge.js?&#10; &lt;div id="what-is-edgejs" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-is-edgejs" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&#10; &lt;figure class="img-left sixth"&gt;&lt;img src="http://nodejs.org/images/logos/nodejs-dark.png"&gt;&#10; &lt;/figure&gt;&#10;&#10;&#10;&lt;p&gt;Unless you &lt;em&gt;live in a hole&lt;/em&gt; you have probably heard of &lt;a href="http://nodejs.org" target="_blank" rel="noreferrer"&gt;node.js&lt;/a&gt; so I&amp;rsquo;ll not bother to explain what it is or what it does. An interesting project has come to light lately, namely &lt;a href="http://tjanczuk.github.io/edge/#/" target="_blank" rel="noreferrer"&gt;Edge.js&lt;/a&gt;. The Edge.js project allows you to connect node.js with .Net.&lt;/p&gt;</description></item><item><title>iOS async revisited</title><link>https://7sharp9.github.io/programming/2013-04-18-ios-async-revisited/</link><pubDate>Thu, 18 Apr 2013 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2013-04-18-ios-async-revisited/</guid><description>&lt;p&gt;In this post weare going to look as async again, but from the perspective of F#.&lt;/p&gt;&#10;&#10;&lt;h3 class="relative group"&gt;Xamarin Evolve 2013&#10; &lt;div id="xamarin-evolve-2013" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#xamarin-evolve-2013" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;&#10; &lt;figure&gt;&lt;img src="http://blog.xamarin.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-03-at-11.07.21-AM.png"&gt;&#10; &lt;/figure&gt;&#10;&#10;&lt;br&gt;&#10;I have been watching the Xamarin Evolve conference this week and it was good to see Miguel announce full support for F#. Those that follow me on twitter etc, will know that I have been doing F# for quite a while in MonoDevelop and Xamarin Studio. The new support currently entails some new project templates so that you can easily create epic new F# Apps without having to refer to my blog. While its sad that my content now falls into the archives its nice to get official support announced in such a grand fashion. &lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>A little bit of iOS async</title><link>https://7sharp9.github.io/programming/2013-04-16-a-little-bit-of-ios-async/</link><pubDate>Tue, 16 Apr 2013 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2013-04-16-a-little-bit-of-ios-async/</guid><description>&lt;p&gt;I was going to title this post as &amp;lsquo;Now for something completely different&amp;rsquo; but felt that a little bit too &lt;a href="http://en.wiktionary.org/wiki/Pythonesque" target="_blank" rel="noreferrer"&gt;Pythonesque&lt;/a&gt;, and when I thought about it a bit it isn&amp;rsquo;t really completely just slightly different, namely C# rather than my usual F# posts. &lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>MonoTouch and F# part II</title><link>https://7sharp9.github.io/programming/2013-02-04-monotouch-and-fsharp-part-ii/</link><pubDate>Thu, 07 Feb 2013 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2013-02-04-monotouch-and-fsharp-part-ii/</guid><description>&lt;p&gt;In the last post we left at the point where everything was running fine and dandy on the Simulator. So what happens if we compile for the real hardware?&lt;/p&gt;&#10;&lt;p&gt;Lets change the active configuration to &lt;code&gt;Debug|iPhone&lt;/code&gt; and hit build, what do we get?&lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>MonoTouch and F# part I</title><link>https://7sharp9.github.io/programming/2013-02-03-monotouch-and-fsharp-part-i/</link><pubDate>Sun, 03 Feb 2013 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2013-02-03-monotouch-and-fsharp-part-i/</guid><description>&lt;p&gt;&lt;a href="http://xamarin.com/monotouch" target="_blank" rel="noreferrer"&gt;MonoTouch&lt;/a&gt; and F# that would be a cool duo right?&lt;/p&gt;&#10;&lt;p&gt;Well let me explain what needs to be done and why to get this pair working together.&lt;/p&gt;&#10;&lt;p&gt;I heard rumours a while ago that F# and &lt;a href="http://xamarin.com/monotouch" target="_blank" rel="noreferrer"&gt;MonoTouch&lt;/a&gt; would not play together nicely because of &lt;a href="http://docs.xamarin.com/ios/about/limitations" target="_blank" rel="noreferrer"&gt;limitations&lt;/a&gt; in the ahead of time compilation &lt;a href="http://www.mono-project.com/AOT" target="_blank" rel="noreferrer"&gt;(AOT)&lt;/a&gt;. So I thought I would either prove or disprove this with some concentrated hacking. How hard can it be?&lt;/p&gt;</description></item><item><title>MonoGame subdivision and platonics</title><link>https://7sharp9.github.io/programming/2013-01-04-monogame-subdivision-and-platonics/</link><pubDate>Fri, 04 Jan 2013 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2013-01-04-monogame-subdivision-and-platonics/</guid><description>&lt;p&gt;I&amp;rsquo;ve been on a bit of a break from my normal jovial self due to a shit storm of bad stuff happening that I wont go into here, but hopefully this years going to be awesome. Anyway, here&amp;rsquo;s the next exciting installment in my series on MonoGame. &lt;em&gt;(Well I find it exciting anyway :-) )&lt;/em&gt;&lt;/p&gt;</description></item><item><title>MonoGame 3D basics</title><link>https://7sharp9.github.io/programming/2012-11-25-monogame-3d-basics/</link><pubDate>Sun, 25 Nov 2012 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2012-11-25-monogame-3d-basics/</guid><description>&lt;p&gt;This time we are going to get into a little bit of code and produce the simplest of all 3d solids, the&#10;tetrahedron. I know its not the most exciting of things but we have to start somewhere. The scope of 3D&#10;graphics in computers is so vast that its very easy to get lost in the vast piles of research papers.&lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>F# and MonoGame on the Mac</title><link>https://7sharp9.github.io/programming/2012-11-11-fsharp-and-monogame-on-the-mac/</link><pubDate>Sun, 11 Nov 2012 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2012-11-11-fsharp-and-monogame-on-the-mac/</guid><description>&lt;p&gt;What we are going to do in this post is take a whistle stop tour of getting &lt;a href="http://www.monogame.net" target="_blank" rel="noreferrer"&gt;MonoGame&lt;/a&gt; up and running along with a&#10;simple demo in F#. Over the last few days I have been building an F# project template for MonoDevelop, this post will&#10;also how to get that installed too. &lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>F# 3.0 In The Mac And Mono World</title><link>https://7sharp9.github.io/programming/2012-11-03-fsharp-3-in-the-mac-and-mono-world/</link><pubDate>Sat, 03 Nov 2012 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2012-11-03-fsharp-3-in-the-mac-and-mono-world/</guid><description>&lt;p&gt;So what have I been up to lately? Well, lots of different things. I have been taking it easy on the open source and blogging side of things as its been a hectic time of late in my personal life. This seems to be changing now so I&amp;rsquo;m starting to get all of the ideas spinning around in my head into physical reality, or virtual reality, or what ever you want to call it. Anyway, here&amp;rsquo;s the first post on the subject of programming in F# using &lt;a href="http://monodevelop.com" target="_blank" rel="noreferrer"&gt;MonoDevelop&lt;/a&gt; and &lt;a href="http://www.mono-project.com/What_is_Mono" target="_blank" rel="noreferrer"&gt;Mono&lt;/a&gt; natively on Macs. &lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>Whats in your toolbox?</title><link>https://7sharp9.github.io/programming/2012-08-23-whats-in-your-toolbox/</link><pubDate>Mon, 27 Aug 2012 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2012-08-23-whats-in-your-toolbox/</guid><description>&lt;p&gt;If I walk into my garage now and open up a toolbox, whats inside?&lt;/p&gt;&#10;&lt;p&gt;Here&amp;rsquo;s a quick selection:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Ball-peen hammer&lt;/li&gt;&#10;&lt;li&gt;Jointer plane&lt;/li&gt;&#10;&lt;li&gt;1/2 inch mortise chisel&lt;/li&gt;&#10;&lt;li&gt;Soldering iron&lt;/li&gt;&#10;&lt;li&gt;Set square&lt;/li&gt;&#10;&lt;li&gt;Low angle block plane&lt;/li&gt;&#10;&lt;li&gt;Torx screw drivers&lt;/li&gt;&#10;&lt;li&gt;Hack saw&lt;/li&gt;&#10;&lt;li&gt;Monkey wrench&lt;/li&gt;&#10;&lt;li&gt;Pipe cutter&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Notice it doesn&amp;rsquo;t just contain:&lt;/p&gt;</description></item><item><title>The Lurking Horror</title><link>https://7sharp9.github.io/programming/2012-07-15-the-lurking-horror/</link><pubDate>Sun, 15 Jul 2012 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2012-07-15-the-lurking-horror/</guid><description>&lt;blockquote&gt;&lt;p&gt;Deep in the darkest depths lurks an ancient horror, when the time is right it will rise forth and leave you screaming for mercy and begging for forgiveness&amp;hellip;&lt;/p&gt;&#10;&lt;/blockquote&gt;&lt;p&gt;OK, I have a penchant for being over dramatic but in this post I am going to reveal some little known caveats in a well known and much revelled area of F#, agents aka the &lt;a href="http://msdn.microsoft.com/en-us/library/ee370357" title="Control.MailboxProcessor&amp;lt;&amp;#39;Msg&amp;gt;" target="_blank" rel="noreferrer"&gt;&lt;code&gt;MailboxProcessor&lt;/code&gt;&lt;/a&gt;. Gasp!&lt;/p&gt;</description></item><item><title>Back to the Primitive II</title><link>https://7sharp9.github.io/programming/2012-04-22-back-to-the-primitive-ii/</link><pubDate>Sun, 22 Apr 2012 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2012-04-22-back-to-the-primitive-ii/</guid><description>&lt;p&gt;In the last post I discussed an asynchronous version of the &lt;code&gt;ManualResetEvent&lt;/code&gt; and as promised this time we will be looking at an&#10;asynchronous version of the &lt;code&gt;AutoResetEvent&lt;/code&gt;. I&amp;rsquo;m using &lt;a href="http://blogs.msdn.com/b/pfxteam/archive/2012/02/11/10266923.aspx" target="_blank" rel="noreferrer"&gt;Stephen Toubs post&lt;/a&gt;&#10;as reference and we will be building a version that is functional in style that maps straight into asynchronous work flows without and conversion&#10;or adaptors.&lt;/p&gt;</description></item><item><title>Back to the Primitive</title><link>https://7sharp9.github.io/programming/2012-04-12-back-to-the-primitive/</link><pubDate>Thu, 12 Apr 2012 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2012-04-12-back-to-the-primitive/</guid><description>&lt;p&gt;In this post we are going &lt;strong&gt;back to the primitive&lt;/strong&gt;. No it&amp;rsquo;s not about the same named song by Soulfly, &lt;em&gt;(which incidentally does contains F# notes)&lt;/em&gt; but a return to thread synchronisation primitives and their asynchronous counterparts.&lt;/p&gt;&#10;&lt;p&gt;We are going to be looking at an asynchronous version of the &lt;a href="http://msdn.microsoft.com/en-us/library/system.threading.manualresetevent.aspx" target="_blank" rel="noreferrer"&gt;ManualResetEvent&lt;/a&gt;. This was&#10;recently covered by Stephen Toub on the &lt;a href="http://blogs.msdn.com/b/pfxteam/archive/2012/02/11/10266920.aspx" target="_blank" rel="noreferrer"&gt;pfx team blog&lt;/a&gt;. We will be taking a slightly different view on&#10;this as we will be using asynchronous workflows which will give us nice idiomatic usage within F#.&lt;/p&gt;</description></item><item><title>Black-Scholes Taste Test</title><link>https://7sharp9.github.io/programming/2012-03-10-black-scholes-taste-test/</link><pubDate>Sun, 11 Mar 2012 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2012-03-10-black-scholes-taste-test/</guid><description>&lt;p&gt;In this edition we are going to be doing a taste test, C# vs F#. Oh yeah, if you quickly glanced at the title you may&#10;have thought this was a recipe for black scones, as interesting and tasty as that may be, unfortunately its going&#10;to be finance related.&lt;/p&gt;</description></item><item><title>FSharp Dataflow agents III</title><link>https://7sharp9.github.io/programming/2012-02-19-fsharp-dataflow-agents-iii/</link><pubDate>Mon, 20 Feb 2012 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2012-02-19-fsharp-dataflow-agents-iii/</guid><description>&lt;p&gt;This will be the last post on rebuilding the &lt;code&gt;MailboxProcessor&lt;/code&gt; using &lt;a href="http://msdn.microsoft.com/en-us/devlabs/gg585582" target="_blank" rel="noreferrer"&gt;TDF&lt;/a&gt;,&#10;here&amp;rsquo;s a quick discussion of the missing pieces&amp;hellip;&lt;/p&gt;&#10;&lt;p&gt;First, lets start with the simple ones, these don&amp;rsquo;t really require much discussion.&lt;/p&gt;&#10;&#10;&lt;h3 class="relative group"&gt;DefaultTimeout&#10; &lt;div id="defaulttimeout" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#defaulttimeout" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;mutable&lt;/span&gt; &lt;span class="n"&gt;defaultTimeout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;Timeout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Infinite&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;member&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;DefaultTimeout&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="bp"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;defaultTimeout&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;defaultTimeout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;This simply provides a mutable property using &lt;code&gt;Timeout.Infinite&lt;/code&gt; as a default setting.&lt;/p&gt;</description></item><item><title>F# Dataflow Agents Part II</title><link>https://7sharp9.github.io/programming/2012-01-24-fsharp-dataflow-agents-ii/</link><pubDate>Mon, 30 Jan 2012 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2012-01-24-fsharp-dataflow-agents-ii/</guid><description>&lt;p&gt;Right, no messing about this time, straight to the code.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Construction&#10; &lt;div id="construction" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#construction" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;This is pretty straight forward and I don&amp;rsquo;t want to detract from the important bits of this post, the only thing&#10;of note is the &lt;code&gt;cancellationToken&lt;/code&gt; which is initialized to a default value using the &lt;code&gt;defaultArg&lt;/code&gt; function if the&#10;optional parameter &lt;code&gt;cancellationToken&lt;/code&gt; is not supplied. The TDF construct that we to use to perform most of the hard&#10;work is &lt;code&gt;incomingMessages&lt;/code&gt; which is a &lt;code&gt;BufferBlock&amp;lt;'Msg&amp;gt;&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>F# Dataflow Agents Part I</title><link>https://7sharp9.github.io/programming/2012-01-22-fsharp-dataflow-agents-i/</link><pubDate>Sun, 22 Jan 2012 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2012-01-22-fsharp-dataflow-agents-i/</guid><description>&lt;p&gt;This is going to be a new series on using TPL Dataflow with F#. First a little bit of history and background.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;TPL Dataflows heritage and background&#10; &lt;div id="tpl-dataflows-heritage-and-background" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#tpl-dataflows-heritage-and-background" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;TPL Dataflow or &lt;a href="http://msdn.microsoft.com/en-us/devlabs/gg585582" target="_blank" rel="noreferrer"&gt;(TDF)&lt;/a&gt; has been around for quite a&#10;while, it first surfaced more than a year ago as the successor to the Concurrency and Coordination Runtime&#10;&lt;a href="http://msdn.microsoft.com/en-us/library/bb648752.aspx" target="_blank" rel="noreferrer"&gt;(CCR)&lt;/a&gt; and with coming release of .Net 4.5 it will&#10;be part of the &lt;code&gt;System.Threading.Tasks.Dataflow&lt;/code&gt; namespace. Elements of the now halted project&#10;&lt;a href="http://msdn.microsoft.com/en-us/devlabs/dd795202" target="_blank" rel="noreferrer"&gt;Axum&lt;/a&gt; are also present within the design of TDF.&lt;/p&gt;</description></item><item><title>Fixing a hole...</title><link>https://7sharp9.github.io/programming/2011-12-11-fixing-a-hole/</link><pubDate>Sun, 11 Dec 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-12-11-fixing-a-hole/</guid><description>&lt;p&gt;Due to popular demand&amp;hellip; well, I had a couple of requests anyway :-) Heres&#10;a post inspired by my recent encounters profiling some of the code in&#10;&lt;a href="https://github.com/fractureio/fracture" target="_blank" rel="noreferrer"&gt;Fracture-IO&lt;/a&gt;.  &lt;!-- more --&gt;I have recently been&#10;profiling the code in fracture to remove any so called low hanging fruits.&#10;During this time I also noticed an increase in memory allocation.  I&#10;remembered I had recently been experimenting in a branch using pipelets as a&#10;buffer between the send and receive stages in the Http Server, so I set up a&#10;simple test to see if pipelets were contributing to the memory allocation&#10;issues I was seeing.  Here&amp;rsquo;s the simple iteration test code I used for the&#10;memory profiling:&lt;/p&gt;</description></item><item><title>F# and Design principles - SOLID</title><link>https://7sharp9.github.io/programming/2011-08-22-fsharp_solid/</link><pubDate>Mon, 22 Aug 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-08-22-fsharp_solid/</guid><description>&lt;h2 class="relative group"&gt;SOLID and its relevance to F#&#10; &lt;div id="solid-and-its-relevance-to-f" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#solid-and-its-relevance-to-f" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;There has been an increasing amount of exposure for F# and functional&#10;programming lately.  If you come from an object-orientated background a change&#10;in mindset is required when working with functional programming, there is a&#10;lot of misinformation on functional languages and their relationship with&#10;object-orientated design. In this post we run quickly through SOLID to see if these object-orientated principles apply to F#, and if so, how.&lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>From C# to F#: A Developer's Perspective</title><link>https://7sharp9.github.io/programming/2011-07-16-from-csharp-to-fsharp-a-developers-perspective/</link><pubDate>Sat, 16 Jul 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-07-16-from-csharp-to-fsharp-a-developers-perspective/</guid><description>&lt;p&gt;I recently wrote an article for &lt;a href="http://www.developerfusion.com/" target="_blank" rel="noreferrer"&gt;Developer Fusion&lt;/a&gt; on the changes in mindset required&#10;when moving from C# to F#.&lt;/p&gt;&#10;&lt;p&gt;The article has proved to be more more popular than I envisaged.  I think a lot of .Net developers are interested in F# but are unsure on the path to take&#10;when trying to accomplish this.  For me it was almost a leap of faith, I saw the potential benefits and just jumped right in.&lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>Agent based scheduling</title><link>https://7sharp9.github.io/programming/2011-07-03-agent-based-scheduling/</link><pubDate>Sun, 03 Jul 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-07-03-agent-based-scheduling/</guid><description>&lt;p&gt;One of the areas that I am very interested in is agents and I have been doing&#10;quite a lot of work in this area lately.&lt;/p&gt;&#10;&lt;p&gt;Agents can be used for a multitude of different purposes ranging from:&#10;isolated message passing, object caching, finite state machines, web crawling,&#10;and even reactive user interfaces.  One of the ideas that I have been looking&#10;into lately is agent based scheduling.&lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title> Agents and ObjectPools</title><link>https://7sharp9.github.io/programming/2011-06-05-agents-and-objectpools/</link><pubDate>Sun, 05 Jun 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-06-05-agents-and-objectpools/</guid><description>&lt;p&gt;Everyone knows F# agents are cool right?  Well here&amp;rsquo;s yet another example of how versatile they can be&amp;hellip;&lt;/p&gt;&#10;&lt;p&gt;There was a series of posts last April by Stephen Toub from the &lt;a href="http://blogs.msdn.com/b/pfxteam/" target="_blank" rel="noreferrer"&gt;pfxteam&lt;/a&gt; at Microsoft.  I was reading&#10;through some of the posts again the other day and thought some of the ideas presented there would make interesting projects in F# to demonstrate the&#10;flexibility and succinctness of the language.  I thought the &lt;a href="http://blogs.msdn.com/b/pfxteam/archive/2010/04/13/9990427.aspx" target="_blank" rel="noreferrer"&gt;ObjectPool&lt;/a&gt;&#10;example would make an interesting project in F# using agents aka MailboxProcessors. An ObjectPool is basically a pool of objects that have been&#10;pre-created so that you can grab one and use it, and then place it back in the pool when you&amp;rsquo;re finished.  They are useful in situations where the cost of&#10;creating object from scratch is very high or you want to cut down on allocations in the garbage collector.&lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>Pipeline processing 3</title><link>https://7sharp9.github.io/programming/2011-04-04-pipeline-processing-3/</link><pubDate>Mon, 04 Apr 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-04-04-pipeline-processing-3/</guid><description>&lt;p&gt;Ok so I have been offline for a while now, what with starting a new financial contract in London and not having any broadband access for a while.  I have&#10;been working on something, honest!&lt;/p&gt;&#10;&lt;p&gt;Since the last post I have been reflecting on the pipeline design and it had a distinct object orientated feel to it that I wasnt happy with, so I have&#10;amended the structure of the code and come up with the following which simplifies in some areas and expands in others&amp;hellip;&lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>Pipeline processing 2</title><link>https://7sharp9.github.io/programming/2011-02-13-pipeline-processing-2/</link><pubDate>Sun, 13 Feb 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-02-13-pipeline-processing-2/</guid><description>&lt;h3 class="relative group"&gt;Welcome to pipeline processing part 2.&#10; &lt;div id="welcome-to-pipeline-processing-part-2" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#welcome-to-pipeline-processing-part-2" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;I feel I need to backtrack slightly from the previous post, having worked with&#10;pipelines for quite some time I have the advantage of knowing all of the&#10;details that may be alluded to in these articles without being effected by any&#10;omissions I may make, obviously you guys aren&amp;rsquo;t in that position, so I&amp;rsquo;m going&#10;to try and rectify that a bit now.  If you have any queries then please leave&#10;a comment and I will try to address them in further articles. Pipelines are a&#10;simple concept but in practice there can be some caveats and things to bear in&#10;mind, sometime the whole mindset of development team can be against them&#10;unless they can see the bigger picture&amp;hellip;&lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>Pipeline processing 1</title><link>https://7sharp9.github.io/programming/2011-02-01-pipeline-processing-1/</link><pubDate>Tue, 01 Feb 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-02-01-pipeline-processing-1/</guid><description>&lt;h3 class="relative group"&gt;Welcome to new series of articles on pipeline processing.&#10; &lt;div id="welcome-to-new-series-of-articles-on-pipeline-processing" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#welcome-to-new-series-of-articles-on-pipeline-processing" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;First up, what&amp;rsquo;s a pipeline?  Well according to &lt;a href="http://en.wikipedia.org/wiki/Pipeline_%28computing%29" target="_blank" rel="noreferrer"&gt;Wikipedia&lt;/a&gt;:&lt;/p&gt;&#10;&lt;blockquote&gt;&lt;p&gt;A pipeline is a set of data processing elements connected in series, so that&#10;the output of one element is the input of the next one. The elements of a&#10;pipeline are often executed in parallel or in time-sliced fashion; in that&#10;case, some amount of buffer storage is often inserted between elements.&lt;/p&gt;</description></item><item><title>Sockets and Bockets 4</title><link>https://7sharp9.github.io/programming/2011-01-28-sockets-and-bockets-part-4/</link><pubDate>Fri, 28 Jan 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-01-28-sockets-and-bockets-part-4/</guid><description>&lt;h2 class="relative group"&gt;Welcome to part 4&#10; &lt;div id="welcome-to-part-4" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#welcome-to-part-4" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;If you were looking forward to some exciting new F# code this time your going&#10;to be disappointed, however if you are like me and like looking at graphs and&#10;stats and digging in deeper into the code then your going to enjoy this, lets&#10;get started&amp;hellip;&lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>Sockets and Bockets 3</title><link>https://7sharp9.github.io/programming/2011-01-20-sockets-and-bockets-part-3/</link><pubDate>Thu, 20 Jan 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-01-20-sockets-and-bockets-part-3/</guid><description>&lt;h2 class="relative group"&gt;Welcome to part three!&#10; &lt;div id="welcome-to-part-three" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#welcome-to-part-three" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;As promised heres a description of the inner workings.  I&amp;rsquo;m sick to death of&#10;typing SocketAsyncEventArgs so from now on I will refer to it as SAEA.&lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>Sockets and Bockets 2</title><link>https://7sharp9.github.io/programming/2011-01-14-sockets-and-bockets-part-2/</link><pubDate>Fri, 14 Jan 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-01-14-sockets-and-bockets-part-2/</guid><description>&lt;h3 class="relative group"&gt;Welcome to part two&#10; &lt;div id="welcome-to-part-two" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#welcome-to-part-two" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;Lets jump in at the deep end and take a look at some code&amp;hellip;&lt;/p&gt;&#10;&lt;p&gt;When you look at the method syntax for the xxxAsync methods you will notice&#10;they return a boolean value that indicates if the method completed&#10;synchronously, this means that you have to check the return value every time&#10;you use one of the methods and invoke the callback yourself if it completes&#10;synchronously.  In practice this hardly ever happens, and normally only on a&#10;send operation.  But as it is a possibility we will add module with a some&#10;extension methods in to help us out, this will make the code more readable and&#10;avoid unnecessary duplication.&lt;!-- more --&gt;&lt;/p&gt;</description></item><item><title>Sockets and Bockets 1</title><link>https://7sharp9.github.io/programming/2011-01-13-sockets-and-bockets-1/</link><pubDate>Thu, 13 Jan 2011 00:00:00 +0000</pubDate><author>7sharp9@mail.com (Dave Thomas)</author><guid>https://7sharp9.github.io/programming/2011-01-13-sockets-and-bockets-1/</guid><description>&lt;h3 class="relative group"&gt;Welcome to part 1&#10; &lt;div id="welcome-to-part-1" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#welcome-to-part-1" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;A while back I read an interesting article by &lt;em&gt;Brian McNamara&lt;/em&gt; &lt;a href="http://lorgonblog.wordpress.com/2010/03/28/f-async-on-the-server-side/" target="_blank" rel="noreferrer"&gt;f-async-on-the-server-side&lt;/a&gt;&#10;which describes C# and F# versions of a simple asynchronous&#10;socket server, one of the driving forces behind the article was how F# can&#10;wrap the traditional asynchronous model with &lt;a href="http://msdn.microsoft.com/en-us/library/dd233250.aspx" target="_blank" rel="noreferrer"&gt;Asynchronous Workflows&lt;/a&gt;, this&#10;produces nice clean simple code compared to the C# version which uses lambda&#10;expressions, the code looks quite ugly in this style!  However thats not the&#10;end of the story, a lot of memory fragmentation can occur using the APM model&#10;when there is a high throughput, so I thought I would see if I could take this&#10;a step further&amp;hellip;&lt;!-- more --&gt;&lt;/p&gt;</description></item></channel></rss>