TideMonkey: Development Diary 0

I am publicly committing to developing “TideMonkey,” a tide-prediction application that will run on (at least) iOS and watchOS.

TideMonkey will be based on Xtide, an excellent piece of software developed by David Flater. At the moment, my hope is that it will be a very loose port, or what …

more ...

My talk "let awesome = App |> Seq.map F#" available...


Video from my Xamarin Evolve talk on using F# for programming mobile apps, in which I argue that functional and object-oriented programming are two great paradigms that pair great together.

more ...

The Protocol Pattern

In C# (and F#), one can define extension methods on interfaces. These extension methods can have implementations, which can be used as default implementations for implementors of the extension. I haven't heard a name for this technique.


[code lang="csharp"]
interface IFoo


static class IFoo_Extensions
public static void …

more ...

F# For Scripting

It's F# Week at Xamarin. Also, in the US, it's only a 4-day work-week. F# saves 20% of your time. QED.

Anyway, I don't have any actually interesting F# to share, but I recommend:

more ...

iOS 8, Scene Kit @ 60FPS, programmed in F#, using Xamarin.iOS

I have the best job in the world:

[code lang="fsharp"]
namespace SceneKitFSharp

open System
open MonoTouch.UIKit
open MonoTouch.Foundation
open MonoTouch.SceneKit
open MonoTouch.CoreAnimation

type MySceneKitController () =
inherit UIViewController()

override this.ViewDidLoad () =
let scene = new SCNScene ()

//Positions everyone!
let boxNode = new SCNNode ()
boxNode.Geometry \<- new SCNBox(
Width = 1 …

more ...

My Favorite iOS 7 APIs: Multipeer Connectivity

Multipeer Connectivity allows you to discover and share data with other iOS devices within Bluetooth radio range or on the same WiFi subnet. It is much easier to use than Bonjour.

I wrote a simple MPC chat program in Xamarin.iOS.

There's necessarily a few hundred lines of code, but …

more ...

Dynamic Type in iOS 7: Not Quite as "Dynamic" as You Might Think

One of the nice features in iOS 7 for old fogeys such as myself is that the user can use the general Settings to increase and decrease the fonts used in apps. This is called "Dynamic Type." Judging by developer forums, I'm not the only one who thought that this …

more ...

Using Extension Methods on a C# Interface to Enable DCI in Xamarin

Scala has several nice language features, including the elegant use of val for immutable variables and var for mutable, but the feature that I miss the most on a day-to-day basis is "traits."

Traits allow you to implement one or more methods of an interface. The canonical use is to …

more ...

Microsoft's Intriguing Code Bubbles Projects Becomes Debugging Tool

I haven't used this, but I talked briefly with the Code Bubbles developers about 18 months ago and thought that debugging would be the perfect fit. Seems like someone at MSR agreed:

Debugger Canvas - Microsoft Research.

more ...

MS Concurrency Guru Speaks of "new operating system"

If you are interested in high-performance programming on Windows, you know the name Joe Duffy, whose book Concurrent Programming On Windows is absolutely top-notch.

Today he posted an intriguing notice on his blog "We are hiring." Check out some of the things he says:

My team's responsibility spans multiple aspects …

more ...