Keybase proof
I hereby claim:
- I am fintanh on github.
- I am fintohaps (https://keybase.io/fintohaps) on keybase.
- I have a public key ASDpR11o9Ot9E0HrXIT87R9RkdCn016gNqZMHjLG2R4abwo
To claim this, I am signing this object:
{- | |
RGA + LWW + Counter -- combining we get Automerge! | |
So let's start with a List CRDT. | |
-} | |
type LWWMap | |
set :: Key -> Value -> LWWMap -> LWWMap | |
delete :: Key -> LWWMap -> LWWMap |
type OpSet | |
type Op | |
type Value = Map Id (Either (Seq ElemId Elem) (Map Key ShallowValue)) | |
type Map k v | |
type Seq | |
type Register = Map Id (Either Id Primitive) | |
type ElemId = Either Head Id | |
type Elem = ShallowValue | |
type ShallowValue = Register | |
type Primitive |
let | |
nixpkgs = import <nixpkgs> {}; | |
rtc = (nixpkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain); | |
rust = rtc.override { | |
extensions = [ "rust-src" "rust-analysis" ]; | |
}; | |
in | |
with nixpkgs; | |
mkShell { | |
name = "rust"; |
TRACE librad::net::protocol > Run::Discovered remote.id=hyngjacascfg3crwxrb4nrydk4izo4wqfo41z7i8ce3cz7nbf4h6cq remote.addrs=[142.167.43.187:10001] | |
INFO librad::net::protocol > establishing connection remote.id=hyngjacascfg3crwxrb4nrydk4izo4wqfo41z7i8ce3cz7nbf4h6cq remote.addr=142.167.43.187:10001 | |
INFO librad::net::protocol > New outgoing connection remote.id=hyngjacascfg3crwxrb4nrydk4izo4wqfo41z7i8ce3cz7nbf4h6cq | |
WARN librad::net::protocol > new outgoing ejects previous connection to hyngjacascfg3crwxrb4nrydk4izo4wqfo41z7i8ce3cz7nbf4h6cq@142.167.43.187:10001 | |
INFO librad::net::gossip > ejecting peer hyngjacascfg3crwxrb4nrydk4izo4wqfo41z7i8ce3cz7nbf4h6cq | |
TRACE librad::net::gossip > recv stream is done | |
INFO librad::net::gossip > closing recv stream from peer hyngjacascfg3crwxrb4nrydk4izo4wqfo41z7i8ce3cz7nbf4h6cq | |
DEBUG librad::net::gossip > ignoring recv IO error: closed | |
INFO librad::net::protocol > msg="Disconnecting" remote.addr=142.167.43.187:10001 | |
TRACE librad::net::gossip > |
INFO coco::git_helper > Copied git remote helper to: "/home/haptop/.radicle/bin/git-remote-rad" | |
INFO librad::net::protocol::io > discovered; remote_id=hybz9gfgtd9d4pd14a6r66j5hz6f77fed4jdu7pana4fxaxbt369kg | |
INFO librad::net::protocol::io > connect; remote_id=hybz9gfgtd9d4pd14a6r66j5hz6f77fed4jdu7pana4fxaxbt369kg | |
INFO librad::net::protocol::io > establishing connection remote_addr=35.198.150.185:12345 | |
INFO librad::net::protocol::io > send_rpc; remote_id=hybz9gfgtd9d4pd14a6r66j5hz6f77fed4jdu7pana4fxaxbt369kg remote_addr=35.198.150.185:12345 | |
DEBUG librad::net::protocol::membership::hpv > connection_established; info=GenericPeerInfo { peer_id: hybz9gfgtd9d4pd14a6r66j5hz6f77fed4jdu7pana4fxaxbt369kg, advertised_info: None, seen_addrs: {35.198.150.185:12345} } | |
DEBUG librad::net::protocol::membership::hpv > connection established | |
WARN librad::net::protocol::membership::periodic > nothing to shuffle | |
WARN librad::net::protocol::membership::periodic > nothing to promote | |
WARN librad::net::protocol::m |
# Edit this configuration file to define what should be installed on | |
# your system. Help is available in the configuration.nix(5) man page | |
# and in the NixOS manual (accessible by running ‘nixos-help’). | |
# Edit this configuration file to define what should be installed on | |
# Edit this configuration file to define what should be installed on | |
{ config, pkgs, options, ... }: | |
{ | |
imports = |
I hereby claim:
To claim this, I am signing this object:
{-# LANGUAGE FlexibleInstances #-} | |
import Test.QuickCheck | |
import Test.QuickCheck.Checkers | |
import Test.QuickCheck.Classes | |
newtype Flip f a b = Flip (f b a) deriving (Eq, Show) | |
instance (Arbitrary a, Arbitrary b, Arbitrary (f b a)) => Arbitrary (Flip f a b) where | |
arbitrary = do |
Abstract Title: Read The Functional Manual: But First We Need to Write It
Abstract Topic: Documentation Writing, Community Interaction, Open Source Contributions
Submission Type: Educational Session (50m)
Abstract Summary:
People who work with software libraries, whether in-house or open source, rely on the documentation of these libraries. The original author(s) were able to express the functionality of this library via code but this not necesarrily mean that a new onlooker can use it immediately. This where documentation, tutorials and blog posts come in.