Kirk Haines's repositories
defined.cr
This shard provides facilities for checking whether a constant exists at compile time, and for a variety of different conditional compilation options. Code can be conditionally compiled based on the existence of a constant, version number constraints, or whether an environment variable is set truthy or not.
opentelemetry-instrumentation.cr
Bundled integrations for opentelemetry-api.cr (https://github.com/wyhaines/opentelemetry-api.cr).
splay_tree_map.cr
This is a Crystal implementation of a Splay Tree; which is a type of binary search tree that is semi-balanced and that tends to self-optimize so that the most accessed items are the fastest to retrieve.
datapack.cr
You are building an application, be it web or something else. It has data -- images, CSS, JS, CSV files, whatever -- and you want to be able to easily bundle those into your compiled executable. This shard gives you a simple utility to add this data to your executable, access it, and manage it.
opentelemetry-api.cr
The core of open telemetry instrumentation is the OpenTelemetry API/SDK. The initial aim of this shard is to implement the OpenTelemetry specification for metrics, traces, and logs.
opentelemetry-sdk.cr
This repository contains an implementation of an OpenTelemetry SDK for Crystal
nbchannel.cr
A NBChannel is a non-blocking channel. Normal Crystal channels block on send and on receive. The NBChannel will never block on send, and there are both blocking and nonblocking receive calls available. The channel should work both for single producer, single consumer scenarios, and for scenarios with multiple producers or multiple consumers.
ParseDate.cr
This is a small library that attempts to parse a wide variety of date formats with a single call.
hash_serializable.cr
The module provides a Hash::Serializeable module which, like JSON::Serializeable and YAML::Serializeable, can be mixed into a class to allow the class's ivars to be serialized out to a hash, and to allow a hash to be instantiated as an instance of a class.
learning-crystal-via-conways-game-of-life
This repository is to be used as a lesson or guided workshop to introduce Crystal to someone who already knows how to program, by building a Crystal implementation of Conway's game of life. It includes a codespace to facilitate this lesson.
topos-playground.cr
This is a re-implementation of the canonical topos-playground in Crystal, both to simplify the implementation, and to create a tool that can be simply distributed as a compiled executable.
crypto-ecosystems
A taxonomy for open source cryptocurrency, blockchain, and decentralized ecosystems
docs-test
Topos Docs
io_delimited_ios_hotpatch.cr
There is a problem with IO::Delimited in recent versions of Crystal (the boundaries are not clear yet, but sometime after 1.6.2, and definitely in 1.12.2) that causes file upload failures with iOS. This patch works around the problem while it is being isolated and fixed upstream.
pg-topos-subnet
This is a proof-of-concept implementation of, first, a blockchain built inside of PostgreSQL in order to maintain a ledger of state changes, and second, the necessary additional pieces needed to register a database built in this way as a [Topos](https://docs.topos.technology) subnet.
react-github-code-block
I wanted a code block component that would utilize the GitHub API to pull code directly from a repository and display it, with syntax highlighting, line highlighting, and a link back to the referenced code. I couldn't find anything, so I built something.
srp.cr
This is a pure Crystal implementation of the Secure Remote Password protocol. With this, a server can validate a secret from a client, such as a password, without ever seeing the secret. The secret itself is never sent over the wire, and the server never stores anything that can be decrypted back into the secret.
string-wrap.cr
This is a simple extension to the String class to add a method which cleanly, flexibly, and naturally breaks long strings for display on a terminal of a given width.
substrate-contracts-node
Minimal Substrate node configured for smart contracts via pallet-contracts.
substrate-docs
Substrate Developer Hub. Substrate is powered by best in class cryptographic research and comes with peer to peer networking, consensus mechanisms, and much more.
topos-aleo-connector
This is an exploration of what would be required to build a Topos<->Aleo connector, and how that would work.
w3s-page-dup
A bit of sample code showing how to use w3s to mirror a web page.
web2Xweb3-topos-demo
This is a PoC illustrating a traditional database (postgresql) being integrated as a data source with a topos subnet, and cross-subnet communications between both smart contracts and the database.