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.
Image Classification of Solar Inverter Models for Asset Compliance and Auditing
Solar technologies have long been a pillar of sustainable energy, accounting for almost 10% of Australia's total electrical energy production in 2019. One of the incentives driving this adoption is the Small-scale Energy Certificate (STC) program offered by the Australian government, which offers discounts for the purchase of small-scale solar energy equipment such as solar panels and inverters.
A compliance industry has emerged from the introduction of these incentives in order to verify the eligibility of residential solar installations for STCs. This is because only a certain set of solar equipment are approved for STCs. When an application for STCs is incorrect either due to fraud or accident, the compliance industry is fined by the government. Therefore, this process is critical and involves reviewing a large amount of photographic evidence, which is time-consuming and prone to errors. But what if this didn't have to be the case?
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.
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 protocols including TCP, UDP, and HTTP, and hopefully both parties agree on what is sent and when. Session Types are a way to bridge the gap between these systems, as they can capture complicated protocols, and be properly type checked.
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.
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.
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 host maintains their own table of mappings from service names to tuples of IP address and port number, but with additional capabilities to control the routing of data. This additional flexibility is usually referenced in the literature as separating the control plane and data plane. The key advantage provided by this is additional flexibility in dynamically modifying the service table compared to DNS. Our discussion of service centric networking is based on the Serval paper here.
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 at the network namespace.
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.
Developing with Nix (C, JavaScript, Python, Haskell, Emscripten, PHP)
Nix, NixOS and NixPkgs allows us to create project-specific development environments with project-specific dependencies (this usually means things like a C project, or a Python project... etc).