Skip to content

Instantly share code, notes, and snippets.

View Thorium's full-sized avatar

Tuomas Hietanen Thorium

View GitHub Profile
@Thorium
Thorium / InstallBowerAndGulpMac.sh
Last active December 24, 2016 12:48
Installation script: Bower and Gulp for JavaScript development
#!/bin/bash
# Mac version
# Install Homebrew package manager:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update
# Install Node.js and npm
brew install node
npm install -g npm
@Thorium
Thorium / myfile.fsx
Last active August 29, 2015 14:23
One script to create MS-SQL-database and host OWIN Web-server with SignalR-clients
#if INTERACTIVE
open System
open System.IO
Console.WriteLine "Downloading components, etc. Will take a while."
// Run as admin, developer command prompt or F# Interactive. e.g. "fsi myfile.fsx"
[<Literal>]
let connectionString = "Data Source=localhost; Initial Catalog=myDatabase; Integrated Security=True;"
let serverDir = __SOURCE_DIRECTORY__ + @"/frontend"
@Thorium
Thorium / gist:c155e8404dedc7b5610b
Last active August 29, 2015 14:18
Create NuGet packages.config files for csproj-files.
// This program will create packages.config files for each .csproj.
// It will enumerate your projects dll references to know the corresponding NuGet packages.
// packages.config files are used by Paket when converting from NuGet.
#if INTERACTIVE
#r "System.Xml.dll" //for scripts or interactive
#r "System.Xml.Linq.dll" //add reference if using F# as library
#else
module GeneratePaketConfigs
#endif
@Thorium
Thorium / gist:c64b8c5bd105f4f53d1e
Last active August 29, 2015 14:15
Getting started with Akka.NET
// Create Console-application, then NuGet: Install-Package Akka
module AkkaConsoleApplication
open Akka
open Akka.Actor
type Greet(who) =
member x.Who = who
type GreetingActor() as g =
inherit ReceiveActor()
@Thorium
Thorium / findrefs.fsx
Last active August 29, 2015 14:13
Fetching dll-infos and their references from a source directory.
open System
open System.IO
open System.Net
open System.Reflection
let ``not in gac`` (filename:string) =
try
Assembly.Load filename |> ignore
false
with | :? IOException -> true
@Thorium
Thorium / ParallelReduce.fs
Last active August 29, 2015 14:13
Idea from Guy L. Steele - Organizing Functional Code for Parallel Execution; or, foldl and foldr Considered Slightly Harmful - https://vimeo.com/6624203
// Reduce / Aggregate / Fold
// Usual way makes deep recursion and trusts tail-opt:
// (a,b,c,d,e,f,g,h) => (((((((a + b) + c) + d) + e) + f) + g) + h)
// This more is quicksort-style parallel:
// (a,b,c,d,e,f,g,h) => (((a + b) + (c + d)) + ((e + f) + (g + h)))
// No Haskell Kinds support for F# so List and Array are easiest to make as separate methods.
open System.Threading.Tasks
module List =
let reduceParallel<'a> f (ie :'a list) =
@Thorium
Thorium / gulpfile.js
Last active August 29, 2015 14:11
JavaScript minifier for FunScript
// Put this file to your FunScript output folder.
var gulp = require('gulp'),
concat = require('gulp-concat'),
uglify = require('gulp-uglify'),
sourcemaps = require('gulp-sourcemaps');
var jsfile = {
targetPath: '',
//This is your FunScript-generated .js-file:
sources: ['generated.js']
@Thorium
Thorium / music.fs
Last active August 29, 2015 14:11
Musical Note Frequencies: With the usual Western music it is common to use the Equal temperament: http://en.wikipedia.org/wiki/Equal_temperament http://hyperphysics.phy-astr.gsu.edu/hbase/music/et.html Then the note frequencies are calculated by this formula. For more information: http://en.wikipedia.org/wiki/Pitch_(music) http://en.wikipedia.or…
/// (Infinite) list of note-frequency -pairs
let tones =
let bass = 55.0
let octave = ["A"; "A#"; "B"; "C"; "C#"; "D"; "D#"; "E"; "F"; "F#"; "G"; "G#"]
let notes = seq { while true do yield! octave }
let frequency = bass |> Seq.unfold (fun x -> Some (x, x*System.Math.Pow(2.0, 1.0 / 12.0)))
Seq.zip notes frequency
//let ``guitar open A`` = tones |> Seq.nth 24 // val it : float * string = (220.0, "A")
@Thorium
Thorium / gist:b1dff8526d407ff43597
Last active August 29, 2015 14:11
Microsoft Kinect Body Basics with Kinect SDK 2.0 and F#
// Microsoft Kinect Body Basics with Kinect SDK 2.0 and F#
#if INTERACTIVE
#r @"..\packages\Microsoft.Kinect.2.0.1410.19000\lib\net45\Microsoft.Kinect.dll"
#else
module Kinect20
#endif
open Microsoft.Kinect
open System.Collections.Generic
let bodyFrameReader =
@Thorium
Thorium / gist:4ee6b0debdbcb9bddb7f
Last active August 29, 2015 14:11
Analyse word count from files. You can use it e.g. to create Tag Clouds
//From NuGet: Sparc.TagCloud
#if INTERACTIVE
#r @"..\packages\Sparc.TagCloud.0.0.1\lib\net40\Sparc.TagCloud.dll"
#else
module MyTagCloud
#endif
open System.IO
open Sparc.TagCloud
let analyzer = new TagCloudAnalyzer()