Skip to content

Instantly share code, notes, and snippets.

@laser
laser / 00-usage.ts
Last active October 4, 2024 18:23
Easy TypeScript Decorator for TTL Cache (using isaacs/ttlcache)
import { ServerInferRequest, ServerInferResponses, initContract } from '@ts-rest/core';
import { createExpressEndpoints, initServer } from '@ts-rest/express';
import express from 'express';
import { z } from 'zod';
import { CacheMethod } from '~/util/cache-method';
export const EchoSchema = initContract().router({
echo: {
body: z.object({
call: z.string(),
import json
import pathlib
from datetime import datetime
def key(job_id: str, op: str):
return f"{job_id}-{op}"
if __name__ == "__main__":
@laser
laser / formatter.rb
Last active November 3, 2022 22:29
A Procfile formatting script, written in Ruby
#!/usr/bin/env ruby
require 'optparse'
def get_procfile_lines
STDIN.read.split("\n")
end
def get_process_type_max_width(lines)
processes = []
#!/usr/bin/env bash
set -x
public_ip=$(curl -m 5 http://169.254.169.254/latest/meta-data/public-ipv4 || echo "127.0.0.1")
daemon_multiaddr=$(lotus net listen | grep 127 | sed -En "s/127\.0\.0\.1/${public_ip}/p")
miner_multiaddr=$(lotus-storage-miner net listen | grep 127 | sed -En "s/127\.0\.0\.1/${public_ip}/p")
miner_id=$(lotus-storage-miner info | grep Miner | cut -d ' ' -f2)
cd $(mktemp -d)
@laser
laser / filecoin-storage-retrieval-cluster-test.sh
Last active June 26, 2020 16:13
Run Filecoin storage and retrieval flows on a local development network
#!/usr/bin/env bash
# USAGE:
#
# Option 1: Build and run tests using specific lotus Git SHA:
#
# > ./test-storage-and-retrieval-local-dev-net.sh --lotus-git-sha=15b3e57634458af983082dcbb736140bba2abfdb
#
# Option 2: Build and run using binaries you've built previously (much faster)
#
@laser
laser / runthis.sh
Created March 31, 2020 18:31
start daemon with custom genesis block
#!/usr/bin/env bash
genesis_miner_addr="t01000"
BASEDIR=$(mktemp -d -t "lotus-interopnet.XXXX")
git clone --branch "testnet/3" https://github.com/filecoin-project/lotus.git "${BASEDIR}/build"
mkdir -p "${BASEDIR}/scripts"
mkdir -p "${BASEDIR}/bin"
@laser
laser / stuff.md
Last active December 10, 2019 13:02
stuff

Inputs

Can we (today) vary these values at runtime?

  • window_size_mib (const here)
  • sector_size_gib (const here)
  • !*wrapping_variant (?)
  • drg_parents (const here)
  • expander_parents (const here)
  • graph_name (? - ignore)
@laser
laser / integrate.sh
Last active May 29, 2019 18:55
integrate rust-fil-proofs and go-filecoin
#!/usr/bin/env bash
expected_circle_config_sha256sum="2ea6a7c8f63088b107b6346685866629abdf165f0b457f8856880ea2dcfc63b1"
integration_branch=laser/test-integrations-$(date +%s)
go_filecoin_branch=master
go_filecoin_url=git@github.com:filecoin-project/go-filecoin.git
rust_fil_proofs_branch=master
@laser
laser / notes.md
Last active July 26, 2018 22:40
Erlang/OTP Review - First Meeting

Housekeeping

General rules for making a distributed book club like this not-awful:

  • keep your mic muted unless you're speaking
  • raise your hand if you have something to say and wait for someone to call on you
  • if you're raising your hand and nobody calls on you, type a message into the chat

Chapter 1

@laser
laser / pattern.java
Created July 18, 2018 03:00
pattern matching Java
public abstract class Tree {
// Constructor private so the type is sealed.
private Tree() {}
public abstract <T> T match(Function<Empty, T> a,
Function<Leaf, T> b,
Function<Node, T> c);
public static final class Empty extends Tree {
public <T> T match(Function<Empty, T> a,