Skip to content

Instantly share code, notes, and snippets.

View warpfork's full-sized avatar

Eric Myhre warpfork

View GitHub Profile
@warpfork
warpfork / ipld-map-order.md
Last active November 11, 2020 12:23
IPLD: Data Model: Order of Maps

Data Model: Order of Maps

Maps in IPLD are typically order-preserving: if you put data into them in some order, you can expect that the iterators will return that information in the same order; and transformation functions will generally operate on data without reordering it.

However, there are also several exceptions to this rule, so it's important to be aware of what to expect in the different scenarios.

@warpfork
warpfork / README.md
Last active February 7, 2021 18:27
Rethinking The Linking

This is a radical rethink of the linking situation for the go-ipld libraries.

  • It gets almost all logic detached from the Link/LinkPrototype implementations. This will probably detangle implementations greatly.
  • There's a LinkSystem type that handles the composition of different codecs, hashers, etc.
  • It's now possible to do your own codec and hasher registries by creating your own LinkSystem instance. Previously this was impossible.
  • We can attach many more helper methods to LinkSystem. This should improve end-user usability. Previously there was no clear place to put them (without burdening the Link/LinkBuilder implementations with lots of boilerplate, which was nonelegant in many ways).

There are a couple of groups of interfaces below which would come from different places:

  1. Link and LinkPrototype would be implemented by something like CIDs. (A project probably won't actually have a variety of implementations of these, one should be enough; but they're still interfaces for library agility
@warpfork
warpfork / unixfsv2.md
Last active November 25, 2020 20:26
unixfsv2 talk

Filesystems & IPLD

Introduction

IPLD is a system for creating decentralized systems based on content-addressable data primitives. One of the things people frequently want to do when building applications is handle files, and describe filesystems. As a result, we've compiled some thoughts and recommendations about how to describe filesystems in IPLD, and also produced some specifications that we suggest systems use and build upon.

@warpfork
warpfork / nav.md
Created July 17, 2020 21:35
Window manager thoughts

concept of nav

I want spacial navigation. I don't want "kerthunk" feelings.

Here's now it works, in 2D:

  • you have a cursor. But it doesn't jump around to targets or on a grid: it just... goes.
  • 'wasd' go up/right/left/down as you expect.
    • Alternate mode: 'esdf', to keep you from leaving the home row. But I don't know how desirable that will be (makes shift, etc, that much harder to hit).
@warpfork
warpfork / codecs-and-completeness.md
Last active October 2, 2024 22:08
IPLD: Codecs and Completeness

Codecs and Completeness

IPLD has a very all-embracing approach to compatibility: many systems have some sort of bridge to IPLD. As a result, it's very important to understand which of those bridges are "complete", and which contain limitations; and for those that have limitations, what those limitations are. Most of this appears in the Codec layer: because Codecs are responsible for how data is serialized, they encompass almost all of the compatibility efforts in bridging IPLD systems to each other and to other systems.

We define "completeness" in terms of the [[Data Model]] (and split it into two concepts):

@warpfork
warpfork / the-string-situation.md
Created June 15, 2020 20:13
IPLD: The String Situation

The String Situation

// This document is INCOMPLETE. you have been warned.

This exploration report is a brief round-up of all the places the definition of "string" -- a seemingly simple and common concept! but not trivial, by any means -- becomes critically important to systemic comprehensibility and correctness.

@warpfork
warpfork / readme.md
Last active May 15, 2020 09:45
Merkle trees can be any size and shape they want

Merkle trees can be any size and shape they want

I don't know who needs to hear this but...

Merkle trees can be any size and shape they want.

To put a finer point on it:

"Merkle tree" does not imply "binary" nor "balanced" tree,

@warpfork
warpfork / README.md
Last active March 12, 2020 10:27
key strategic tips for starting to work remotely successfully!

Key strategic tips for starting to work remotely... successfully!

One of the greatest challenges in creating a successful remote working culture is simply getting a critical mass of people on board! So, congrats: you've short-circuited your way there. Every cloud has a silver lining.

invest in your workspace

@warpfork
warpfork / performance-measuring.md
Last active August 29, 2024 09:05
golang performance & benchmarking notes
@warpfork
warpfork / README.md
Last active February 13, 2020 15:45
Rubber Duck Hours

I'd like to hold Rubber Duck Hours (like Office Hours, but, well, ask me or do a search for "Rubber Ducking" if you haven't encountered that concept before) on some day of the week.

The idea here is that I'll offer to be an idea-bouncer -- for anything, even outside of my skill range; if you wanna talk about a thing, we'll do it! Even if all I can do is listen -- and we'll either try to brainstorm, or, just learn and share some information about what's on our minds.


There's a few special rules that make this different than a regular meeting at work:

  • Talk about anything.
  • I mean it, anything. I may be an engineer, but it doesn't have to be about engineering, and it certainly doesn't have to be code review.