SAFE Template - a year retrospective

In this blog entry, we'll take a look at SAFE Template - how it got created, what's the current state and what does it take to release a stable 1.0 version.

Read more...

Why you should use FAKE 5

If your application targets .NET, chances are you're using FAKE to build it. In this entry I'll show you why it's worth to upgrade to version 5 of FAKE.

Read more...

SAFE apps with F# web stack

In this entry I describe my talk on creating web apps in F# and SAFE Stack - the motivation behind, as well as format of the talk.

Read more...

Splitting Date Ranges

The power and beauty of F# pattern matching are often underestimated. To shine more light on them I decided to share code fragments which exercise pattern matching to deal with date ranges. This will be a simple divide and conquer implementation for a workaround over poorly designed API.

Read more...

Suave Music Store Tutorial - 2nd version

In this entry, I'm introducing recently published version 2 of my Suave Music Store tutorial

Read more...

Creating a tutorial from Git repo

What if author of a programming book could maintain his content and related code in the same place? In this entry I'll share with you my experimental idea for code-heavy F# tutorials.

Read more...

Paket 'why' command

In this entry I introduce a brand new command called "why" in Paket dependency manager. It was inspired by a recent project of Facebook, Yarn and aims to display user-friendly reason for a specific package to be under dependency management. The command is available in Paket 3.26.

Read more...

F# workshop in a browser

How to make a F# workshop for your colleagues more attractive? Let them edit your slides and interact with the browser! This entry presents an idea of using FsReveal to combine your presentation and workshop exercises into a single file.

Read more...

XSLT - Implicit vs Explicit processing

In this first of a series of posts about XSLT (hopefully to come), I'd like to share my thoughts on 2 different approaches to processing XML documents. From a shorter and implicit version I will transit to a bit longer and explicit transform, with the latter being easier to reason about. What are the costs of trade?

Read more...

Paket workflow for testing new NuGet package before release

Modularity is becoming more and more popular nowadays. Managing separately maintained components in .NET ecosystem is usually achieved by using NuGet packages. Unfortunately with current NuGet approach, there's no easy way of testing new changes in referenced projects. Today I want to show you how we can make our lifes easier with brand new Paket feature: paket.local.

Read more...

Dynamic load balancing in F#

In this short entry I'll present how one can create a small load balancer in F# to optimize distribution of a set of computations between multiple nodes. The example will make use of powerful F# libraries: FSharp.Control.AsyncSeq as well as FSharpx.Async.

Read more...

Dockerizing Suave Music Store on mono

I've written the Suave Music Store GitBook, which helped quite a few people to get started with the Suave.IO library for creating web applications in F#. However the original version of tutorial didn't really feel x-platform, as it was designed to work on Windows only. I decided to revisit the tutorial and add 3 more sections describing how to convert the app to run on mono and place inside a Docker container.

Read more...

Continuous delivery with FAKE, Paket and TeamCity

Efficient continuous delivery process can speed up greatly development cycle, improve feedback loop and help to manage automatic deployments.
In this entry I'll present how one can configure a continuous delivery chain using combination of following tools: FAKE, Paket and TeamCity.

Read more...

Property-based testing XSLT

Property-based testing is a wonderful tool to verify correctness of your programs. However, some people struggle with finding reasonable cases to use the technique. In this entry, I'll try to prove that property-based testing can be used in every-day coding by showing a rather exotic example of applying property-based testing to check results of XSL transformations.

Read more...