Giter VIP home page Giter VIP logo

Writing software in C, shell, Node.js and Go. Managing infrastructure with Kubernetes, ELK, Kafka, Consul/Vault, Terraform and Pulumi. Formerly Wink, currently available for contract.

Overview

My most popular project is Timezone. A IANA DB timzone library for Node.js or the browser that does timezone aware date math and localized time formatting.

Currently working on documentation for these featured projects. They are the most interesting projects in this account.

The projects in this account come together to create four primary projects. Memento a pure-JavaScript relational database, Compassion a Paxos-based atomic log, Packet a binary packet parser and serializer generator and Prolific a logging system for Node.js applications that won't lose messages.

As of October 2021 my primary focus is on documentation of all this work. Please be patient as I work though the README.mds.

Database

Strata gets a lot of attention because it is a pure-JavaScript b-tree for Node.js. A proper file-backed b-tree that can write to either a directory tree or a write-ahead log. The write-ahead log is itself useful and you can find it in WriteAhead.

Memento is a practical application of Strata. It is a pure-JavaScript noSQL relational database for Node.js. It is ACID. It is atomic with all or nothing transactions, isolated in that changes made during a transaction are only visible to that transaction, and durable in that there are no parietal writes and committed writes will survive a system crash. It is based a multi-version concurrency control model and I've a collection of libraries to build MVCC databases off of Strata.

IndexedDB is a pure-JavaScript implementation of IndexedDB for Node.js. It is build on top of Memento and is primarily a proof of concept and is used to leverage the Web Platform Test suite for IndexedDB to get a through testing of Memento.

Consensus

Compassion is an atomic log based on a Paxos. People are drawn to the Paxos implementation via NPM but repo it is the core Paxos algorithm without networking components. If you want to use that Paxos implementation you should instead use Compassion. Compassion provides the service discovery and network communication. It implements an async/await interface you can use to build applications. You can use Conference to implement a map/reduce, which ends up being a useful concept in consensus applications, allowing you to take actions based on whether or not all participants have been notified. Currently sketching out Addendum as a proof-of-concept for Compassion that implements the etcd v2 API in Node.js using Paxos instead of Raft.

Packet Parsing

Packet is a binary parser generator for Node.js that generates pure-JavaScript whole or incremental parsers and serializers from a syntax-bashed JavaScript definition language. These generated parsers and serializers ought to be as performant as any parser or serializer you would write by hand.

Logging

Prolific is more than yet another logging library. It is both performant due to asynchronous message processing during normal operation, and durable due to synchronous message processing upon uncaught exception. Unlike other logging libraries Prolific will not lose your parting stack trace. The final messages will be captured and redirected to the same logging stream as your runtime messages. This is kind of a big deal.

Structured Concurrency

Destructible is a structured concurrency library I created before I learned about structured concurrency. It has a different interface than the Python libraries like Trio with it's nurseries, but the underlying concepts are the same, launching multiple concurrent paths of execution and having them rendezvous in a single promise upon completion. Destructible manages multiple async/await call stacks and when an exception occurs in any one of them it will gather all exceptions from an async/await call combine them into an elaborate report of all stack traces through that single promise.

Turnstile performs parallel concurrency with an explicit work queue that can be monitored rather than the implicit work queue of spawning an arbitrary number of async function calls. Fracture is a more elaborate parallel concurrency library with the ability to enqueue work in the work queue from the work queue in a way that will avoid deadlock.

Avenue is a module that implements what are essentially Go channels, channels that can be processed synchronously or asynchronously by zero, one or more consumers (i.e. multiplexed.) The consumption decisions are deferred so that the producer does not have to concern itself with the concurrency considerations of the consumer.

Alan Gutierrez's Projects

admeasure icon admeasure

Partition a collated collection for split within a b-tree.

advance icon advance

In-memory forward iterator for use with the Strata b-tree MVCC tool collection.

afterburner icon afterburner

Compile Cadence functions into JIT compiled asynchronous code.

algorithms icon algorithms

Data structures and algorithms in JavaScript and Node.js as well as an exploration into C.

amalgamate icon amalgamate

Merge staging Strata b-trees containing MVCC versioned records into a primary Strata b-tree.

aplomb icon aplomb

Configurable balancing for Node.js

arguable icon arguable

UNIX style argument parsing that eases the pain of supporting Windows.

assignation icon assignation

Allow two or more collaborating services to find each other through an HTTP proxy.

atomic icon atomic

A practical implementation of atomic broadcast using Paxos.

attendant icon attendant

A single process monitor for embedding into a plugin or extension.

avenue icon avenue

An async/await multiplexed event queue.

bigeasy icon bigeasy

Provide a `README.md` for GitHub profile.

blocker icon blocker

Read a stream in sliced chunks associating each chunk with a callback.

cadence icon cadence

A Swiss Army asynchronous control flow function for JavaScript.

channel icon channel

Zero dependency URL routing for Node.js and the browser.

chaperon icon chaperon

Inititialize and possibly restart a Paxos consensus.

cliffhanger icon cliffhanger

A continuation system for converting queued events into Promises.

colleague icon colleague

Colleague object used by the Compasssion atomic log framework.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.