Skip to content

Instantly share code, notes, and snippets.

@thinkbeforecoding
thinkbeforecoding / Actors.FSharp
Last active August 29, 2015 13:57
Fun with Akka.net
#r @"C:\Development\GitHub\Pigeon\src\Pigeon\bin\Release\Akka.dll"
#r @"C:\Development\GitHub\Pigeon\src\Pigeon.FSharp\bin\Release\Akka.FSharp.dll"
open Akka.FSharp
open Akka.Actor
type IO<'msg> = | Input
type Cont<'m,'v> =
@thinkbeforecoding
thinkbeforecoding / FsCluster.fs
Created May 20, 2014 12:14
EventStore cluster in a F# script !
(*
This gist runs a 3 in memory node EventStore cluster
and a client that send messages to the cluster
To use the web interface, copy EventStore web folders.
You can found them in the server distribution at http://geteventstore.com/downloads/.
Then connect to http://localhost:2113/
You can view the cluster status at:
http://localhost:2113/web/gossip.htm
@thinkbeforecoding
thinkbeforecoding / CodeHash.fs
Last active August 29, 2015 14:02
This creates a hash code of a F# Expr. The hash code changes when the code change
open Microsoft.FSharp.Quotations
open Microsoft.FSharp.Quotations.Patterns
open System.Reflection
let hashList f seed = List.fold (fun h v -> h * 37 + f v) seed
let (<+) x y = x * 37 + y
let (!<) f x y = x <+ f y
let rec hashC funcs =
@thinkbeforecoding
thinkbeforecoding / Server.fs
Created October 1, 2014 08:06
Http Server in F#
// This module implements AwaitTask for non generic Task
// It should be useless in F# 4 since it should be implemented in FSharp.Core
[<AutoOpen>]
module AsyncExtensions =
open System
open System.Threading
open System.Threading.Tasks
type Microsoft.FSharp.Control.Async with
static member Raise(ex) = Async.FromContinuations(fun (_,econt,_) -> econt ex)
[<AutoOpen>]
module Async
// Async extension to enable the direct use of Task<T> and Task
// in async {} blocs
open System
open System.Threading.Tasks
type Microsoft.FSharp.Control.Async with
@thinkbeforecoding
thinkbeforecoding / Mindstorm.fsx
Created June 17, 2015 13:17
Mindstorm API in F# with the lego computation expression.
open System
open System.Threading.Tasks
open System.Text
type Opcode =
| UIRead_GetFirmware = 0x810a
| UIWrite_LED = 0x821b
| UIButton_Pressed = 0x8309
| UIDraw_Update = 0x8400
| UIDraw_Clean = 0x8401
(**
# Ukulele
_This post is part of the [F# Advent Calendar in English 2015](https://sergeytihon.wordpress.com/2015/10/25/f-advent-calendar-in-english-2015/) project._
_Check out all the other great posts there! And special thanks to Sergey Tihon for organizing this._
Hi something fun and not too technical for end the year !
As everyone knows, the [favorite instrument of Santa Claus is Ukulele](https://www.google.fr/search?q=santa+claus+ukulele&biw=1024&bih=677&tbm=isch&source=lnms&sa=X&ved=0ahUKEwiHw5H8p-HJAhVE0xQKHZTdDuEQ_AUIBigB) !
So let's play some music, and especialy some Ukulele !
@thinkbeforecoding
thinkbeforecoding / gist:11fd14096ccd4c28a4a0
Created March 11, 2016 16:28
Setup GitHub for windows in Powershell profile
. $env:UserProfile\AppData\Local\GitHub\shell.ps1
$r = ssh-agent -s
[regex]::Matches($r,"SSH_AUTH_SOCK=([^;]+);") | % { $env:SSH_AUTH_SOCK = $_.Groups[1] }
[regex]::Matches($r,"SSH_AGENT_PID=(\d+);") | % { $env:SSH_AGENT_PID = $_.Groups[1] }
ssh-add $env:UserProfile\.ssh\github_rsa
@thinkbeforecoding
thinkbeforecoding / LogaryMetrics.fs
Created September 7, 2016 13:26
Sample to report timing metrics
open Hopac
open Hopac.Infixes
open NodaTime
open Logary
open Logary.Metrics.Reservoirs
open Logary.Configuration
open Logary.Targets
open Metric
module PointName =
@thinkbeforecoding
thinkbeforecoding / start.ps1
Created October 10, 2016 10:29
Github desktop for PS
. $env:UserProfile\AppData\Local\GitHub\shell.ps1
Function Start-SSHAgent{
param(
[Parameter(Mandatory=$false,ValueFromPipeline=$true)]
[string]$socketfile="/tmp/.ssh-socket", # Used as input to ssh-agent, which expects POSIX format paths
[Parameter(Mandatory=$false)]
[string]$pidFile="$env:TEMP\.ssh-agent-pid" # Used as input to Out-File which expects Windows format paths
)