Skip to content

Instantly share code, notes, and snippets.

Tim Baumann timjb

View GitHub Profile
timjb / BigNats.ts
Last active Mar 3, 2020
Vortrag über Programmierung auf Typebene in TypeScript
View BigNats.ts
namespace BigNats {
type RepeatHelper<N extends number, T extends any, CurrList extends T[], CurrSizes extends number[]> =
CurrSizes extends [1]
? (CurrList["length"] extends N ? ["found", CurrList] : ["not-found", Cons<T,CurrList>])
: {
"true": RepeatHelper<N, T, CurrList, Tail<CurrSizes>> extends ["not-found", infer NewCurrList]
? RepeatHelper<N, T, Cast<NewCurrList, T[]>, Tail<CurrSizes>>
: RepeatHelper<N, T, CurrList, Tail<CurrSizes>>
}[CurrSizes extends [-1] ? "not-going-to-happen" : "true"];
// adapted from
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
public class RepeatRule implements TestRule {
private static class RepeatStatement extends Statement {
private final Statement statement;
timjb / GithubUser.hs
Created Mar 18, 2019
FTypes JSON example
View GithubUser.hs
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE RecordWildCards #-}
module GithubUser where
import JSONFormat
View resinance.css
/* angepasster CSS-Code von */
/* */
textarea {
font-family: mr-eaves-sans, sans-serif;
View SizedTrees.agda
module SizedTrees where
open import Agda.Builtin.Size
data list (A : Set₀) : Set₀ where
nil : list A
cons : A list A list A
map : {A B} (A B) list A list B
map f nil = nil
timjb / ypassword
Created Jun 10, 2018
YPassword LastPass CSV Export
View ypassword
#!/usr/bin/env zsh
print -- "usage: $0:t"
print -- " generate a password using the ypassword method"
print -- " See for more informations"
echo -n "Enter your master password please: "
oldmodes=$(stty -g)
use std::cmp::Ordering;
struct UnionFindEntry {
parent: usize,
rank: usize,
struct UnionFind {
trees: Vec<UnionFindEntry>,
View two-universal.hs
module Main where
import Data.List (intercalate)
import Control.Monad (forM_)
type Nat = Int
type Prime = Nat
type HashFunction = Int -> Int
type HashFunctionFamily = Nat -> HashFunction


This intended to be used together with seafile-docker installed in /var/seafile.

To install:

$ sudo vim /etc/systemd/system/seafile.service # paste the file above
$ sudo systemctl enable /etc/systemd/system/seafile.service
$ sudo systemctl start seafile.service
timjb / archimedes.hs
Created Nov 1, 2016
Approximate pi using Archimedes' method
View archimedes.hs
module Main (main) where
import Control.Monad (forM_)
-- | Given the length l of a cord from points A to B on the unit circle, compute
-- the length of the cords A-C and C-B, where C is the point on the unit circle
-- exactly in between A and B.
iterArchimedes :: Double -> Double
iterArchimedes l = l / sqrt (2 + sqrt (4 - l*l))
You can’t perform that action at this time.