Matrix AI Deep Learning Training Course Pilot with NetScout (NASDAQ: NTCT)

Over the last several weeks, Matrix AI has been training the senior and principal software engineers at NetScout (NASDAQ: NTCT) on machine learning with a focus on deep neural networks. We piloted our first machine-learning training course in collaboration with NetScout. Over 2.5 weeks, we went through the basics…

Service Abstraction and Communication Flows

Previously we had talked about service-centric networking. Since then we have now implemented a prototype experiment implementing the ideas from Serval that demonstrates ICMP ping migration involving the Linux iptables and Network Namespaces. As a reminder of what we're dealing with, today's cloud infrastructure is increasingly viewing a group of…

Session Types

Working with type systems and communications can be very difficult. In Haskell, messages between threads are usually conveyed through channels that only accept a single type, and as a result are not very versatile. In networked systems, a stream of bytes is sent that hopefully conforms to one of many…

Docker's V1 and V2 Image Specification

In 2016, Docker has officially updated their image specification from V1 to V2, adopting a more sophisticated scheme that is inline with OCI Container Image Specification. There are only a few minor differences between Docker's image spcification V2 and OCI image specification (See Compatibility Matrix). Here we will discuss some…

Polykey - Distributed Secret Sharing

The Matrix AI team has been developing Polykey, a distributed peer-to-peer secret sharing system. It is intended to manage secrets, passwords, API keys for both humans and machines. Many secret management systems have been designed either only for humans, or only for machines. We think this is unnecessary and intend…

Service Centric Networking

TCP/IP networking relies on IP addresses mapped to a machine to facilitate routing through the Border Gateway Protocol (BGP). This mapping is usually done through the DNS, which maps human-readable names ("cats.com") to IP addresses. Service centric networks are an alternative/extension to DNS, where the…

Linux Network Namespaces

The fundamental isolation technology supporting containers on Linux are Linux namespaces. Namespaces provide isolation of global resources in a way that is transparent to the processes within the namespace. There are currently 7 different namespaces that are supported: Cgroups, IPC, Network, Mount, PID, User, UTS. Today we will be looking…

Programming with Linear Temporal Logic Operators

At Matrix AI our research into language constructs for formally describing distributed systems has led us to a concept called Linear Temporal Logic. It is a logic system that allows us to express logical statements about time. This article will provide a brief introduction to this logic system. Linear Temporal…

Developing with Nix (C, JavaScript, Python, Haskell, Emscripten, PHP)

Nix, NixOS and NixPkgs allows us to to create project-specific development environments with project-specific dependencies (this usually means things like a C project, or a Python project... etc). The way this is done is different for every language community within the Nix ecosystem. The most well developed patterns would be…

Intro to Nix Channels and Reproducible NixOS Environment

This introduction assumes you have played with NixOS a bit, you know about content addressability and why it is important, and how Git repositories represent a distributed content addressed storage system. Git and Github is used as the source control for all of NixOS and NixPkgs. Both NixOS and NixPkgs…