Skip to content

Instantly share code, notes, and snippets.

Avatar

Tim Baumann timjb

View GitHub Profile
@timjb
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"];
View RepeatRule.java
// adapted from https://stackoverflow.com/a/28345802
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
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 */
/* https://marketpress.de/2019/schriftarten-atomion/ */
body,
button,
select,
optgroup,
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
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 http://ypassword.espozito.com for more informations"
passfile="$HOME/.passwd"
echo -n "Enter your master password please: "
oldmodes=$(stty -g)
View offline-delete-min.rs
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
View README.md

Instructions

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
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.