Skip to content

Instantly share code, notes, and snippets.

View flyingzumwalt's full-sized avatar

Matt Zumwalt flyingzumwalt

View GitHub Profile

Keybase proof

I hereby claim:

  • I am flyingzumwalt on github.
  • I am flyingzumwalt (https://keybase.io/flyingzumwalt) on keybase.
  • I have a public key ASAkNrld6xfTRkf-sZNlTxq6_hbLyqj7e3yXeA6tWOTlvgo

To claim this, I am signing this object:

InterPlanetary Version Control (call it IPVC?)

IPLD-based Version History

This is just a sketch of a possibility. If we just want a git-style toolchain with git version graph, it might be better to just put an ipfs storage adapter behind go-git -- basically putting IPFS unixfs trees where git usually creates git tree objects. In that case you would have regular git commit objects, not IPLD objects. That would be less reusable beyond the git context but it would fit better with existing git-based tooling.

Keep in mind: it will be really useful to be able to use IPFS files api to manipulate these trees, allowing you to do things like modify part of a large dataset and commit the changes without ever pulling the whole dataset -- you can just pull the parts that you're changing.

Features

@flyingzumwalt
flyingzumwalt / archive-decentralize-slack.md
Last active September 25, 2016 17:53
09-23-2016 Conversation about IPFS on #decentralize channel of Internet Archive Slack

----- September 23rd, 2016 -----

btrask [6:29 PM]
@edsilv response to your question, "what is the business case for decentralization?" https://bentrask.com/?q=hash://sha256/33ba37008b55d3188c6b1bf8

edsilv [5:28 AM]
@btrask interesting stuff about devops applications. I think online libraries/archives too are a natural place for decentralised tech to take root. @flyingzumwalt mentioned that David Dias is presenting at the IIPC general assembly next spring. Would be great if he was armed with a solid set of business cases for the "decision makers" in the crowd.

"As a public service institution I want to provide a scalable, highly available, and free as in freedom and beer collection of knowledge" type thing.

Verifying that +flyingzumwalt is my blockchain ID. https://onename.com/flyingzumwalt
@flyingzumwalt
flyingzumwalt / 0 Explanation.md
Last active October 27, 2015 20:06
opsworks with apt

The instances

elasticsearch2
EC2 instance ID: i-03dd74fa
OpsWorks ID: 9ae9aac9-47d4-4dd2-9207-43222ab8ec01

elasticsearch3
EC2 instance ID i-63d27b9a
OpsWorks ID 4eb1e92c-19d9-442e-ae7e-52dd8b0135b7

@flyingzumwalt
flyingzumwalt / directly_contains_one_association.rb
Last active August 29, 2015 14:23
directly_contains_one_association.rb
module ActiveFedora
module Associations
class DirectlyContainsOneAssociation < SingularAssociation #:nodoc:
# Finds objects contained by the container predicate (either the configured has_member_relation or ldp:contains)
# TODO: Refactor this to use solr. Requires indexing ActiveFedora::File objects into solr, including their RDF.type and, if possible, the id of their container
def find_target
query_node = if container_predicate = options[:has_member_relation]
owner
else
@flyingzumwalt
flyingzumwalt / gist:ce003dafed36489cc6e7
Last active August 29, 2015 14:23
querying rdf graph with BGPs in ruby
container_predicate = ::RDF::URI.new("http://example.com/hasFiles")
options = {type: ::RDF::URI.new("http://example.com/primaryFile") }
# This works but is inefficient
contained_uris = query_node.resource.query(predicate: container_predicate).map { |r| r.object.to_s }
contained_objects = contained_uris.map { |object_uri| klass.find(klass.uri_to_id(object_uri)) }
filtered_objects = contained_objects.select {|o| o.metadata_node.type.include?(options[:type]) }
return filtered_objects.first
# Tried this, but it doesn't work
@flyingzumwalt
flyingzumwalt / Proxy Resource Graph
Last active August 29, 2015 14:23
navigating LDP indirect containment relationships in ActiveFedora
<http://127.0.0.1:8983/fedora/rest/dev/df/93/78/f3/df9378f3-480a-4ad8-8ee7-7c3a100ac263> <http://www.iana.org/assignments/link-relations/first> <http://127.0.0.1:8983/fedora/rest/dev/df/93/78/f3/df9378f3-480a-4ad8-8ee7-7c3a100ac263/related_objects/c0a7d413-47a2-4ebf-aa14-3384e8af86bd>;
<http://www.iana.org/assignments/link-relations/last> <http://127.0.0.1:8983/fedora/rest/dev/df/93/78/f3/df9378f3-480a-4ad8-8ee7-7c3a100ac263/related_objects/c0a7d413-47a2-4ebf-aa14-3384e8af86bd> .
<http://127.0.0.1:8983/fedora/rest/dev/df/93/78/f3/df9378f3-480a-4ad8-8ee7-7c3a100ac263/related_objects/c0a7d413-47a2-4ebf-aa14-3384e8af86bd/fcr:export?format=jcr/xml> <http://purl.org/dc/elements/1.1/format> <http://fedora.info/definitions/v4/repository#jcr/xml> .
<http://fedora.info/definitions/v4/repository#jcr/xml> <http://www.w3.org/2000/01/rdf-schema#label> "jcr/xml" .
<http://127.0.0.1:8983/fedora/rest/dev/df/93/78/f3/df9378f3-480a-4ad8-8ee7-7c3a100ac263/related_objects/c0a7d413-47a2-4ebf-aa14-3384e8af86bd> a <http://www
@flyingzumwalt
flyingzumwalt / Notes.md
Last active August 29, 2015 14:22
hydra-works update errors in sufia
@flyingzumwalt
flyingzumwalt / api_responses.rb
Last active August 29, 2015 14:21
Spec Matchers for API Responses
# spec/support/matchers/api_responses.rb
#
# RSpec matchers for API default JSON responses.
# Creates a matcher like respond_forbidden or respond_not_found corresponding to each of the Api::V1.default_responses
# Accepts optional overrides to the expected response body.
# @example Override the description expected in the JSON body of a :forbidden response
# expect(response).to respond_forbidden(description:"You can't create for that identity")
::Api::V1.default_responses.each_pair do |response_type,default_response_body|
RSpec::Matchers.define "respond_#{response_type.to_s}".to_sym do |expectation_options|