This is my 100th blog post. I want to say thank you to all of you who reads my blog and follows me in twitter. Thanks to your interest new posts appear in this blog.
Father. Husband. Developer. Microsoft MVP. Likes #fsharp 🦔, #rust 🦀 and OSS.
This is my 100th blog post. I want to say thank you to all of you who reads my blog and follows me in twitter. Thanks to your interest new posts appear in this blog.
I have developed 15 principles for my daily work as a data scientist. These are the principles that I personally follow :
1- Do not lie with data and do not bullshit: Be honest and frank about empirical evidences. And most importantly do not lie to yourself with data
2- Build everlasting tools and share them with others: Spend a portion of your daily work building tools that makes someone’s life easier. We are freaking humans, we are supposed to be tool builders!
3- Educate yourself continuously: you are a scientist for Bhudda’s sake. Read hardcore math and stats from graduate level textbooks. Never settle down for shitty explanations of a method that you receive from a coworker in the hallway. Learn fundamentals and you can do magic. Read recent papers, go to conferences, publish, and review papers. There is no shortcut for this.
4- Sharpen your skills: learn one language well…
View original post 413 more words
![]() |
![]() |
Welcome to F# Weekly,
A roundup of F# content from this past week:
News
Videos/Presentations
Blogs
That’s all for now. Have a great week.
Previous F# Weekly edition – #20
Welcome to F# Weekly,
This past week was full of interesting events and happenings. If you follow F#, you must read all of this carefully. The roundup of F# content:
News
Videos/Presentations
Blogs
Scott Wlaschin posted “How to design and code a complete program“.
That’s all for now. Have a great week.
Previous F# Weekly edition – #19

![]() |
![]() |
![]() |
I have tried to find easiest ways to create a simple web server with F#. There are three most simple ways to do it.
The goal is to create a simple web service that maps web request urls to the files in the site folder. If file with such name exists then return its content as html. Assume that all html files located in ‘D:\mySite\‘.
First and probably the most promising option was created by Julian Kay and described in his post “Creating a simple HTTP Server with F#“. I slightly modified source code to satisfy my initial goal. You can find detailed description of how it works in Julian’s post. (Works from FSI)
open System
open System.Net
open System.Text
open System.IO
let siteRoot = @"D:\mySite\"
let host = "http://localhost:8080/"
let listener (handler:(HttpListenerRequest->HttpListenerResponse->Async<unit>)) =
let hl = new HttpListener()
hl.Prefixes.Add host
hl.Start()
let task = Async.FromBeginEnd(hl.BeginGetContext, hl.EndGetContext)
async {
while true do
let! context = task
Async.Start(handler context.Request context.Response)
} |> Async.Start
let output (req:HttpListenerRequest) =
let file = Path.Combine(siteRoot,
Uri(host).MakeRelativeUri(req.Url).OriginalString)
printfn "Requested : '%s'" file
if (File.Exists file)
then File.ReadAllText(file)
else "File does not exist!"
listener (fun req resp ->
async {
let txt = Encoding.ASCII.GetBytes(output req)
resp.ContentType <- "text/html"
resp.OutputStream.Write(txt, 0, txt.Length)
resp.OutputStream.Close()
})
// TODO: add your code here
The second option is a tuned self-hosted WCF service. This approach was proposed by Brian McNamara as an answer to the StackOverflow question “F# web server library“. (Works from FSI)
#r "System.ServiceModel.dll"
#r "System.ServiceModel.Web.dll"
open System
open System.IO
open System.ServiceModel
open System.ServiceModel.Web
let siteRoot = @"D:\mySite\"
[<ServiceContract>]
type MyContract() =
[<OperationContract>]
[<WebGet(UriTemplate="{file}")>]
member this.Get(file:string) : Stream =
printfn "Requested : '%s'" file
WebOperationContext.Current.OutgoingResponse.ContentType <- "text/html"
let bytes = File.ReadAllBytes(Path.Combine(siteRoot, file))
upcast new MemoryStream(bytes)
let startAt address =
let host = new WebServiceHost(typeof<MyContract>, new Uri(address))
host.AddServiceEndpoint(typeof<MyContract>, new WebHttpBinding(), "")
|> ignore
host.Open()
host
let server = startAt "http://localhost:8080/"
// TODO: add your code here
server.Close()
The third one is based on NancyFx. It is lightweight, low-ceremony, framework for building HTTP based services on .Net and Mono. Nancy is a popular framework in C# world, but does not have a natural support of F#. The F# code looks not so easy and simple as it could be. If you want to make it work, you need to create console application and install the Nancy and Nancy.Hosting.Self NuGet packages.
module WebServers
open System
open System.IO
open Nancy
open Nancy.Hosting.Self
open Nancy.Conventions
let (?) (this : obj) (prop : string) : obj =
(this :?> DynamicDictionary).[prop]
let siteRoot = @"d:\mySite\"
type WebServerModule() as this =
inherit NancyModule()
do this.Get.["{file}"] <-
fun parameters ->
new Nancy.Responses.HtmlResponse(
HttpStatusCode.OK,
(fun (s:Stream) ->
let file = (parameters?file).ToString()
printfn "Requested : '%s'" file
let bytes = File.ReadAllBytes(Path.Combine(siteRoot, file))
s.Write(bytes,0,bytes.Length)
)) |> box
let startAt host =
let nancyHost = new NancyHost(new Uri(host))
nancyHost.Start()
nancyHost
let server = startAt "http://localhost:8080/"
printfn "Press [Enter] to exit."
Console.ReadKey() |> ignore
server.Stop()
Yesterday, there was Alea.cuBase live coding session. Don Syme led live tweets from inside. This post is dedicated to those who missed it.
I’ll be live tweeting from the .NET in the City event where Daniel Egloff presents F# for GPGPU quantalea.net/news/29/
— Don Syme (@dsyme) May 16, 2013
Continue reading ➞ Live tweets from Alea.cuBase F#-for-financial-GPU event in London.
Welcome to F# Weekly,
Tiny weekly this time, a short roundup of F# content from this past week:
News
Videos/Presentations
Blogs
P.S. The top 20 data visualisation tools
That’s all for now. Have a great week.
Previous F# Weekly edition – #18
@sergey_tihon Lastest results for json.net using the most recent versions off NuGet twitter.com/JamesNK/status…
— James Newton-King ♔ (@JamesNK) May 12, 2013
I can not understand why JSON.NET so popular (http://www.servicestack.net/mythz_blog/?p=344)
Or maybe I am wrong and picture have changed ?
@sergey_tihon Lastest results for json.net using the most recent versions off NuGet twitter.com/JamesNK/status…
— James Newton-King ♔ (@JamesNK) May 12, 2013
Need to test it!