Skip to content

Instantly share code, notes, and snippets.

@nmattia
nmattia / metamorph.hs
Created December 28, 2016 19:44
Metamorphing types in Haskell
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeInType #-}
integer/serialise/small positive -14%
integer/serialise/small negative -10%
integer/serialise/large positive -10%
integer/serialise/large negative -8%
integer/deserialise/small positive -62%
integer/deserialise/small negative -61%
integer/deserialise/large positive -27%
integer/deserialise/large negative -33%
time/serialise UTCTime -18%
time/deserialise UTCTime -21%
@nmattia
nmattia / compare-crit-csv.hs
Last active July 14, 2016 22:00
Compare criterion outputs for regression
#!/usr/bin/env stack
-- stack --install-ghc runghc --package cassava --package vector
{-|
Compare two criterion outputs. Results are displayed in percent. Takes two
filepaths: original csv and new csv.
To generate csvs:
stack bench my-project:my-bench --benchmark-arguments "--csv out.csv"
@nmattia
nmattia / github-keys.sh
Last active June 26, 2016 13:33
Use github to get ssh authorized keys
#!/bin/sh
#
# Fetches SSH keys from a github user
# Big kudos to @zimbatm for inspiration: https://gist.github.com/zimbatm/3166cc0bbb46551fe67e
#
# Usage:
# curl -L https://goo.gl/Jj330b | user=<github username> sh
#
if [ -z "$user" ]; then
{- stack
--resolver lts-4.2
--install-ghc
runghc
--package network
-}
{-# LANGUAGE OverloadedStrings #-}
import Control.Concurrent.Async (concurrently)
import Control.Monad (forever)
import Network.Socket
@nmattia
nmattia / .screenrc
Created April 11, 2015 11:30
Screen terminal multiplexer config file
shell -${SHELL}
# Bind F11 and F12 (NOT F1 and F2) to previous and next screen window
bindkey -k F1 prev
bindkey -k F2 next
startup_message off
# Window list at the bottom.
hardstatus alwayslastline