Skip to content

"My Knowledge Base" is an organically compiled list of good-to-knows that I have personally used and--or seen throughout my professional career, and I can personally vouch for them. -- Pull requests that add more, are welcome, but I shall review them first, and will only publish items that meet the above criteria.

Notifications You must be signed in to change notification settings

petr-motejlek/my-knowledge-base

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 

Repository files navigation

1Password (aka onePassword, op, ...)

Cloud-based tool for storing and retrieving passwords and other secrets. There's even a command-line client available.

agile

HR

Organizations

Implementations

Case Studies

(These are just examples. There's more).

  • British Telecom, 2004
    • Delivery cycle shorter, from 12 months to 90 days.
    • Improved developer morale and motivation.
  • ING, 2011
    • Cost savings in software delivery in the range of 30-50 %.
    • Overall time to market of IT changes improved by 37 %.
    • The number of technical incidents reduced by over 30 %.
    • The number of releases gradually increased, leading to shorter cycles and faster learning.
  • Cisco, 2015
    • A 40% decrease in critical and major defects.
    • No more overtime, and their products are delivered on time.

ananas analytics

Ananas Analytics is a platform that can be used for quick data visualization using either files or cloud-based database engines as its data store. For scalability, the execution can be ran inside e.g. Apache Spark. But by default, the execution itself always takes place on the desktop. One of the goals of the platform is to be nice and easy to use by an end user, even though it still retains features for developers and power users to utilize.

android

Enable Developer Mode

This procedure only applies to a real Android device. AVD (Android Virtual Devices aka emulators) have the Developer mode enabled by default.

  1. Go into Settings and locate a field called Build Number (it's in different places on different phones, but usually it sits somewhere under About)
  2. Click on the field multiple times
    1. At some point a message will pop up saying You are now 3 steps away from being a developer – continue clicking...
    2. A message will pop up saying You are now a developer!
  3. Go into Settings, locate a section called Developer options and enter it
  4. Enable (check) Allow USB debugging and confirm whatever dialog pops up
  5. Disable (uncheck) Verify apps over USB
  6. Optionally you might want to enable Stay awake (so that the screen will not go into sleep mode while charging (i.e. connected to wall outlet or PC))

Install CA cert from phone storage/SD card

  • Xiaomi Mi Note 2
    • The procedure is the same as for any other Android system, however, you first need to go into Installed Apps and enable the Documents app (it might be at the very bottom of the list of installed apps). If you don't do this, the stock Xiaomi app will prohibit you from installing the certificates with a strange almost random toast message "Couldn't install the certificate because the file couldn't be read"
  • Commercial product using the Hypervisor.framework library on MacOS to automate deployment of virtualized macOS.
    • Due to the nature of the library, the VMs are really low level (using para-virtualized hardware/drivers where possible), and theoretically are as fast as VMs can ever be.
  • Has support for running on developers machine as well as in a cluster.
    • The system takes care of the tediousness of installing macOS on the VMs. After requesting a VM, one only has to wait for the installation to finish, and one eventually gets an installed VM (without having to manually click through the steps).
    • One can use either VNC, SSH or an integrated Anka shell to control the VMs (install additional software, reconfigure, ...).
  • Has support for custom bootstrapping of the VMs (e.g. install Xcode).

ansible

ansible is a very nice tool (part of Red Hat's suite) that makes it super easy to control and deploy infrastructure (servers, switches, ...). It's extremely lightweight (you just need pip to install it and then ssh) and can be very easily used to simply query things such as IP addresses, hostnames, ... from remote machines. So, even if you don't plan to control any device with it, you can still take advantage of its querying capability just as easily. All you need is pip and ssh :).

I might be wrong, but I think Ansible's biggest strength is that one can easily use it to control machines and infrastructure that already exist. When you want to do infrastructure as a code, terraform might be a better choice, especially with containers and/or virtualization.

amazon web services (aka aws, ...)

Powerful platform for real-time processing of data. Unlike, say, Hadoop or the likes, Apache Storm is meant to ingest the real-time events and process them on the fly.

balenaEtcher is a macOS application similar in functionality (taking a bootable ISO and turning it into a bootable USB drive; provided, you have the USB drive :)) to the likes of the well-known UNetBootIn or Rufus. Can be installed via brew cask install balenaetcher.

bash

bashible

Inspired by Ansible, Bashible aims to be a declaratorive automation tool, but instead of Python, it utilizes Bash.

bitbar

While similar tools such as conky or gkrellm display information directly over the root window (over the wallpaper) or in a separate dock bar, bitbar shows it in the macOS menubar.

blazor

bpmn

c/c++

cascading style sheets (aka css)

"A utility-first CSS framework for rapidly building custom designs." In other words: you can use this to build up styles for an entire application from the ground up. An example: where Vuetify would give you high level components as cards, carousels, ..., Tailwind gives you the building blocks to build them yourself.

Celery is a distributed platform for task queue management. based on sending and receiving of messages.

cloudflare/cfssl

  • CloudFlare's PKI/TLS Toolkit – a nifty gadget that's easier to use than openssl, as it for example doesn't require a bunch of extra configuration files for "simple" procedures such as subject alternate names. It also contains an HTTP-based API server that can be used for signing certificates (internally encapsulating the CA cert+key). There is a Docker Hub image available also, for ease of use.

code quality

coding challenges

  • Codility
    • You can register and track your progress. With every exercise, you can choose a different language in which you want to perform it. Unfortunatelly, TypeScript is as of 2020-12-12 not supported (but one can always write it elsewhere, convert to JavaScript and paste it in).

common media application format (cmaf)

communication

consul (aka HashiCorp Consul)

container linux (formerly CoreOS)

  • CoreOS Essentials, video course on Linux Academy – slightly outdated as CoreOS is pretty much dead and work continues under the Red Hat umbrella and RHEL Container Linux and Fedora Container Linux brands. They aren't compatible with CoreOS, though. So, be careful.

flatcar

  • Flatcar Linux is a (still) maintained fork of CoreOS. Unlike Container Linux, they actually kept most of things backward compatible.
  • A Java framework that allows one to develop their GUI application in one place and have it run on Windows, OSX+iOS and Android.
  • very powerful tool that allows conversion/merge/join of csv, json, various other formats and also pretty prints this

CoreDNS is, mainly, a DNS server written in Go. Thus it is mean to be pretty fast and secure, including memory operations. It also offers a wide range of plugins to make its job easier, or more complicated, but to still get it done. It can even do service discovery. It has since become the standard service inside any Kubernetes cluster.

design

devops

Despite what the name suggests, DirSyncPro is actually free to use, and it is a great tool for those who like to keep files and directories synchronized (or mirrored, or one-way mirrored, or simply backed up) on Windows. It supports instant (in response to file system change) actions as well as recurring ones.

distributed systems

From the most part, I expect this section to be pure theory, full of bookmarks to other theory, papers, video lectures, ...

CAP Theorem

This is about always being able to only choose two out of: Consistency, Availability and Partition tolerance.

paxos

Paxos is one of the algorithms used by distributed systems to reach consensus (e.g. consistency).

It is probably the oldest, published by Leslie Lamport, who actually originally tried to disprove the algorithm. Well, what do you know? He ended up proving it works.

Recently, a slightly different algorithm, Raft, has seend an uprise in popularity, so it might be worth a while to check it out too.

raft

Raft is a younger competitor to the Paxos consensus algorithm. It is commonly referred by people as "being simpler to understand and implement".

docker (containers)

documentation

"EditorConfig helps maintain consistent coding styles for multiple developers working on the same project across various editors and IDEs."

Prettier Plays Well With EditorConfig

Prettier can honor whatever settings are in .editorconfig

elk (aka Elastic Stack)

Elastic Search

File Beat

Kibana

LogStash

elm

esxi

falcon

The Falcon Web Framework is supposed to be a blazingly fast low-level alternative to any other RESTful framework/library, such as Flask-RESTful or Django REST Framework.

file managers / file browsers

flask-RESTful

Flask-RESTful is an extension to the popular flask web-building framework that allows one to easily build out RESTful services.

flask-RESTPlus

Flask-RESTPlus is yet another library/toolkit to help you create great APIs on top of flask.

fuse

Filesystem in User SpacE

git

making files "hidden" from Git's change detection

Should you ever need to "hide" changes in certain files from git's automated change detection, you can mark those files using git update-index --skip-worktree ..., which will make Git not try to detect any changes in them. When checking out or merging a different branch into the working tree, it will, however, properly realize that the file has changed and prevent you from accidentally overwriting it.

How to work with LF-only line endings on Windows

git config --global core.autocrlf input

go (aka golang, ...)

go tests

  • ogletest: unit testing framework for Go with the following features
  • assertions: Fluent assertion-style functions used by goconvey and gunit. Can also be used in any test or application.
  • goconvey: Write behavioral tests in your editor. Get live results in your browser.

goa

Goa is a library for the Go language that makes it very easy to develop RESTful API services.

gotty

An open source tool similar in nature to teleconsole. You wrap a terminal application in it and it will make it available over HTTP or HTTPS. Its main goal seems to be read-only access (i.e. you can expose monitoring information, etc, over HTTP), but you can, if you so desire, allow remote users to also control the session. You might for instance use this for some kind of GUI-oriented API server.

docker run -it --rm -p 8080:8080 ubuntu:latest /usr/bin/env bash
# apt-get update && apt-get install -y --no-install-recommends curl ca-certificates git cmatrix
# curl -L https://dl.google.com/go/go1.12.6.linux-amd64.tar.gz | tar -xz -C /usr/local
# export PATH="${PATH}:/usr/local/go/bin:${HOME}/go/bin"
# go get github.com/yudai/gotty
# gotty cmatrix
2019/07/03 13:26:08 GoTTY is starting with command: cmatrix
2019/07/03 13:26:08 HTTP server is listening at: http://:::8080/
2019/07/03 13:26:08 Alternative URL: http://127.0.0.1:8080/
2019/07/03 13:26:08 Alternative URL: http://172.17.0.3:8080/

gpg (aka Gnu Privacy Guard)

gradle

graphql

GraphQL is a specification of a powerful query language for data-based APIs. In itself it does not mandate any specific implementation of the spec, and there are many, such as Prisma and/or Graphene for Python. The ecosystem also comes with a couple client-side libraries as well as IDEs and plugins.

It is very useful for micro-service applications, but can be just as easily used for monolithic ones too.

groovy

Built on top of Protocol Buffers, gRPC is a multi-language client-server framework/library that makes it possible to specify the protocol, then, whenever you need, generate stubs for all clients & servers you will ever want. They claim it is usable for both close-by scenarios (such as microservices talking to each other) as well as long-distance dating. Examples of supported languages for both client/server include: JavaScript (Node), Python, Java, Go, C++, ... you still readin'? What else do you need? :)

InfluxDB

Marketing: InfluxDB is a time series database designed to handle high write and query loads. It is an integral component of the TICK stack. InfluxDB is meant to be used as a backing store for any use case involving large amounts of timestamped data, including DevOps monitoring, application metrics, IoT sensor data, and real-time analytics.

IntelliJ IDEA

JavaScript/TypeScript Settings to Honor Only Project's ESLint Settings (no IDE)

  • Make sure you do in fact have a working ESLint setup. The next steps will effectively disable all of the IDE's style checks.
  • Settings - Languages & Frameworks - JavaScript - Code Quality Tools - ESLint
    • PICK Automatic ESLint Configuration
    • CHECK Run eslint --fix on save
  • Settings - Languages & Frameworks - TypeScript - TSLint
    • PICK Disable TSLint
  • Settings - Editor - Inspections - JavaScript and TypeScript
    • UNCHECK everything
  • Settings - Editor - Inspections - JavaScript and TypeScript - Code quality tools
    • UNCHECK everything
    • CHECK ESLint
  • Settings - Editor - Inspections - JavaScript and TypeScript - Code quality tools - ESLint
    • CHECK Use rule severity from the configuration file
  • Settings - Editor - Inspections - TypeScript
    • UNCHECK everything

Fancy Plugins

istio

Istio makes it easy to create a network of deployed services with load balancing, service-to-service authentication, monitoring, and more, with few or no code changes in service code.

Java

  • JGiven is an intruiging Java framework that seems to finally make it possible to write BDD tests directly in Java, as opposed to using plain text formats.

JavaScript

Testing

Axios

babel is a transpiler for JavaScript that amongst other things, allows one to write code using the latest syntactic sugars, while keeping the resulting code compatible with engines that do not support those features (as long as Babel is able to transpile them).

"The config to share target browsers and Node.js versions between different front-end tools."

copy-to-clipboard is a JavaScript library for copying things into user's clipboard through their browser. TypeScript typings are included.

dockerode is a JavaScript library for communicating with Docker Engine. For TypeScript, @types/dockerode are available.

execa is a JavaScript library/wrapper that makes spawning processes a breeze (has a Promise-like and synchronous interfaces, no weird callbacks). TypeScript typings are included.

eslint is a JavaScript linter.

Compression/decompression library written in pure JavaScript, hence it does not require any specific underlying library, and can thus run even in the browser.

I personally like it, since I've noticed that NodeJS's Gzip standard library tends to leak file descriptors (they hang around until the process gets reaped), and fflate does not suffer from that. And the devs claim it can even be faster in some occasions than the standard library.

It contains integrated TypeScript types in the main package.

genversion is a handy JavaScript tool that's able to take a look at your package.json file, read the version from it, and store it in a regular .js file that can then be imported from both JavaScript and TypeScript (use the --es6 command-line flag).

Put simply, gulp is an alternative to GNU Make when it comes to JavaScript-based projects.

js-yaml is a JavaScript library for encoding and decoding YAML. TypeScript typings are available as @types/js-yaml.

knex is a JavaScript library for accessing SQL databases (MS SQL (Azure included), MySQL, PgSQL, ...). Where it really outshines all the others is the superb builder interface and integrated schema migration. TypeScript typings are included.

nodejs (aka node.js)

node version manager

There's a bunch of tools that have more or less the same objective: for one to be able to quickly and easily switch between different versions of Node on their machine. Such as

$ nvm install 14   # install the latest NodeJS 14
$ nvm use 14   # use the already installed NodeJS 14 version
$ nvm use   # use whatever NodeJS version is expected in the project's .nvmrc file
  • nvm-sh -- the original that started it all (works on most standard Unix shells, such as Bash, ZSH, ...)
  • nvm-windows -- a Windows clone with the most similar command-line interface, but still somewhat different
  • nvm for PowerShell -- a clone that works on Powershell; has a different interface, but is also usable to get the job done

Sometimes, a NodeJS process just hangs. This is usually caused by an unawaited promise, or unclosed database connection, etc. I never found it easy enough to figure out which exactly it is. why-is-node-running can help.

The one thing I really like about it is that it can be easily used without changing the underlying sources. It is possible to simply run node (or nodemon) with -r why-is-node-running/include as extra arguments, and then, when the process remains hanging, simply kill -SIGUSR1 the process, and it will print out a report.

pg is a JavaScript library providing the very basic PgSQL client bindings. Most of the higher-level libraries will require you to install this in order to be able to talk to PgSQL, so that's why it's here for reference, but ac:link</ac:link> would not recommend anyone actually use this alone. It is too basic. Little to no support for building queries. TypeScript typings available in @types/pg.

prettier is a code-formatter. It supports JavaScript, TypeScript, JSON, YAML, HTLM, CSS, VueJS, and others.

ramda is a JavaScript library providing a lot of simple to very complex functions that make functional programming easier. If you also enjoy functional programming, this is one of the libraries to get. TypeScript typings are available in @types/ramda.

ramda-adjunct is a complementary (much smaller in comparison) JavaScript library to ramda. TypeScript typings are included.

React

React Native

Acceptance-testing-focused framework that supports JavaScript & TypeScript out of the box, and connects with Jasmine and Mocha.

tar is a JavaScript library capable of creating and reading (incl. extraction) tar archives. The author tried to simulate the actual command-line tar syntax, to make it easier to use for people familiar with tar. TypeScript typings are available as @types/tar.

tar-stream is a generator (creation) and parser (decompression) for tar files. It is seemingly faster than tar (aka node-tar) and uses streams. TypeScript typings are available as @types/tar-stream.

tmp is a JavaScript library for creating temporary files directories nodejs. TypeScript typings are available as @types/tmp.

untildify is a JavaScript library that makes it easy to expand ~ (tilda) in filesystem paths (which is something a shell normally does, but people have gotten used to using it, because it's short) to the user's home directory. TypeScript typings are included.

vuejs

VueJS 2

  • VueJS 2, video playlist by The Net Ninja
  • Tips for Unit Testing Vue Components with Jest, post by Achhunna Mali
    • I believe the post is worth reading, to understand how one can take a Vue component and write tests against it. However, I do also believe that one should not (when possible) couple their code too much to any given framework. Hence, try to keep the minimum amount of logic that you actually need to test inside the component, and extract as much as you can outside of it. It is much easier to test your own code the layout of which you can always change, rather than the layout that is imposed on you by Vue's authors.

VueJS 3

Make Prettier, VueJs and TypeScript Play Nice with ESLint

Prerequisites
npm install --save-dev eslint-plugin-prettier-vue eslint-plugin-vue eslint-config-prettier eslint prettier
package.json excerpt
{
"eslintConfig": {
    "parser": "vue-eslint-parser",
    "plugins": [
      "@typescript-eslint"
    ],
    "extends": [
      "eslint:recommended",
      "plugin:@typescript-eslint/recommended",
      "prettier/@typescript-eslint",
      "plugin:prettier/recommended",
      "plugin:vue/recommended",
      "plugin:prettier-vue/recommended"
    ],
    "settings": {
      "prettier-vue": {
        "SFCBlocks": {
          "template": false
        }
      }
    },
    "env": {
      "node": true,
      "es6": true,
      "browser": true
    },
    "parserOptions": {
      "parser": "@typescript-eslint/parser",
      "ecmaVersion": 2019,
      "sourceType": "module"
    },
    "rules": {
      "@typescript-eslint/explicit-function-return-type": [
        "error",
        {
          "allowExpressions": true,
          "allowTypedFunctionExpressions": true
        }
      ]
    }
  }
}

vuex

Vuex is a store for the state of your VueJS application.

vuetify

winston is one of the must-have JavaScript logging frameworks. TypeScript typings are included.

yargs is a JavaScript framework for parsing command line arguments. It expects to be the main entry point into your application, and while many of its pieces support asynchronous code, it is mainly synchronous. TypeScript typings are available as @types/yargs.

jenkins

Powerful templating engine for Python.

JIRA

jq: extremely powerful JSON 'sed, awk, grep, ...'

kafka

aka Apache Kafka, is a publish/subscribe messaging system that include streaming support.

kanban

knot dns

Knot DNS is very fast authoritative-only DNS server. It's easy to configure (uses YAML+regular text zone files). And there are Docker images available for Knot DNS too.

kubernetes

Originally developed at Google, kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. I.e. it is a replacement for Docker Swarm, with batteries included.

helm is a tool that makes it possible to write your Kubernetes deployments (services, secrets, actual deployments, ...) as code. It utilizes Go's templating language.

Values Schema

Helm allows to specify a JSON schema to restrict/validate input variables for your charts. JSON can be a bit too wordy to use. It is possible to write the schema in YAML and to convert it into the JSON format quite easily, though. One example using pyyaml is:

$ <values.schema.yaml python -c "import json; import sys; import yaml; json.dump(yaml.load(sys.stdin), sys.stdout, indent=2)" >values.schema.json

k8s_gateway is a really cool extension to any k8s cluster, becaue it allows external DNS resolution for all service and ingress resources.

  • kind is a tool for running local Kubernetes clusters using Docker container “nodes”.

Krew is a package manager for Kubernetes.

metalLB

metalLB is a very easy-to-use load balancer for Kubernetes, that can be told explicitly what subnet of IPs to allocate from when using services with the LoadBalancer type.

minikube

  • minikube is a tool for spinning up small-scale Kubernetes. It's most prominent use case is for Desktops.

kubernetes/client-node is a JavaScript (w/ TypeScript typings included) library for Kubernetes. It can be used to actually talk to Kubernetes, as well as reading and creating configuration files.

Rancher is a set of utilities for spinning up and maintaining Docker and Kubernetes clusters in no time.

RancherOS is very similar in nature to CoreOS, in that it gives one the ability to quickly spin up a Linux machine with Docker Engine up and running. It supports cloud config (ie. you can provide it with a config file and it will set up itself based on that, unattended).

It can run either on a physical machine, VM or in the cloud.

RKE is a tool that can either be used standalone or in conjunction with RancherOS and allows one to upgrade their running Docker Engine installation to a Kubernetes installation. Again, it is configurable upfront.

linux

logging

Management & Leadership

minio

minio is both an AWS S3-compatible server as well as client that can be used to interact with the files inside S3-compatible servers. It can even mount an S3 bucket as a regular file system.

mkcert is the tool you've been looking for if you've ever need to develop SSL-enabled services and hated there never was an easy way to create the certificates. mkcert comes to the rescue. It allows one to generate a local CA (installs it as trusted into system store, Java keystore, ...) and then generate as many server-side certificates as one needs. It supports wildcards and multiple SANs, but that's too obvious :).

  • In case you need a client auth cert (like the ones for PgSQL clients), as of now, mkcert does not generate certificates with CN (used by PgSQL server to authenticate you). There's a PR open (that nobody yet reviewed nor merged). For the time being, it is possible to use the rpeo directly to install the tool using Go: go get [github.com/antong/mkcert](https://github.com/antong/mkcert)

mongodb

"MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. No database makes you more productive."

Mozilla SSL Configuration Generator is a web tool that can be used to quickly generate SSL-enabling configuration snippets for popular web-servers (e.g. Nginx) and providers (e.g. AWS Load Balancer). Have you ever been looking for the super-safe-super-secure-and-trustworthy SSL configuration snippet for your favorite web server? They have it! (Unless that web server is Ghost, in which case you are "attached to another object by an inclined plane, wrapped helically around an axis").

neo4j is a graph-based NoSQL database engine. It has support for numerous programming languages. Available on Docker Hub.

There is also very impressive Neo4j online sandbox.

Poke-through-your-firewall tool. It allows one to expose a network service (HTTP/HTTPS or regular TCP) that would normally be available only to your machine, to the Internet.

nexus

nomad (HashiCorp Nomad)

Nomad is a clustered server/client system for workload orchestrations. It supports running and managing jobs via containerization (Docker), pure binaries, virtual machines, ...

  • A nice command line tool for making image-only (i.e. scanned) documents into searchable PDFs with text.

OrientDB is essentially an object-graphed database. It is a NoSQL database, yet it uses SQL-like syntax. It has client support for many languages, incl. Python, PHP, JavaScript, ... It is also available as a Docker image.

  • Swiss army knife for converting between multiple document formats (including PPTX, PDF, HTML, Markdown, ...).

  • My ( ac:link</ac:link>) use case: write one Markdown doc and then use it as source for your slides as well as document to be published (HTML).

oracle

  • oracle/docker-images
    • official Docker images (or Dockerfile's) from Oracle themselves for not only their database, but also the command line tools

pair programming

mob programming

pair programming tools

  • Google Remote Desktop – works only when both parties have Google Chrome installed, and only allows two parties to participate. Is reasonably quick and deals well with latency jittering.

PCP, for short, is an attempt to put together the power behind tools like htop, iotop, ... not only at runtime, but also to allow later processing of the collected data.

php

Composer is dependency manager for the PHP programming language. Similar in nature to JavaScript's NPM or Ruby's Gems.

If you already use Nette (or parts of it), I think this is so similar, that it's not really worth switching. Nevertheless, it's good to know about it.

powershell

  • PowerShell History File, article by 0xdf hacks stuff
    • Nice description of how can one set up their history file to remember command history and to have it saved upon every command entry (ie. if you have multiple terminals open, they won't rewrite each other's history).

Prisma is a a server backend that implements the GraphQL specification, as well as a powerful client-side library for accessing such a server. As of 2019, it supports TypeScript, JavaScript, Go and MySQL, PostgreSQL natively.

It is a nice-enough and simple to use tool for folks who are building micro-service applications and do not wish to directly implement the GraphQL specification themselves. A notable feature is the ability to design a schema for your database and letting Prisma take care of its deployment.

progressive web apps

prometheus

Prometheus is a monitoring platform that collects metrics from monitored targets. It can scrape API endpoints, it can pull/push data from clients in your favorite languages and it has many plugins that make it possible for it to scrape things like collectd.

It can be used to alert when metics are outside of operational ranges. It can also be used to produce graphs. If one isn't satisfied with the graphs, one can also use Grafana to create the graphs.

The main advantage of prometheus over something like Zabbix, for example, is the fact it has a declarative configuration. I.e. you configure it using code (or config file). No need to click through the GUI or something awful like that. Obviously, if you wanted to have a config file, you wouldn't use Zabbix, but Nagios instead, but still those are heavily geared towards a human using the GUI. Prometheus is much better in a micro-service-oriented infrastructure.

puppet

No, this has nothing to do with the puppet master from Outlast (video game), although a certain component called puppetmaster was involved at one point or another. Puppet is a tool for automating server and other devices installation and setup (similar to Ansible).

pv

  • Although not called like that (based on the man page), pv is a progress (or pipe?) visualizer, in that it can be used either an intermediary between two processes communicating or asked to visualize the data transfer on a given PID and File Descriptor (only works on Linux and when the file descriptor has either a file or block device open :).
$ dd if=/dev/urandom of=/dev/stdout bs=512 count=$(( 2 * 1024 * 1024 )) | pv | dd if=/dev/stdin of=/dev/null 1.00GiB 0:00:36 [27.8MiB/s] [ <=> ]

python

Installing Python on MacOS: Make sure to install your python interpreter using homebrew or macports. Should you chose to install it using the installer available from python.org it will not be able to use TLSv1.2 (and maybe other things) ... DON'T.

django rest framework

django rest framework is an extension to the django Python web-building framework that allows one to easily spin up RESTful application programming interfaces.

dramatiq

dramatiq is a distributed task processing library for Python 3. In other words, you can use it whenever you need to solve a problem where you have some workers (processes, threads, machines) and you have some tasks they should perform, but you don't want to micromanage them. dramatiq also allows you to create pipelines (like you would in a shell, i.e. one task's result is another task's input) or groups (group of tasks need to all be finished before proceeding further). Internally it uses a message broker, such as RabbitMQ or Redis (since those can be accessed from multiple machines, that's where the distributed comes from).

pandas

Pandas is a fast, powerful, flexible and easy to use open source data analysis and manipulation tool, built on top of the Python programming language.

Programming

Quotes (That Come In Handy)

  • "Adding resources to a late project makes it later." (aka Brook's Law)
  • "Scrum recognizes no sub-teams in the Development Team, regardless of domains that need to be addressed like testing, architecture, operations, or business analysis" – Scrum Guide
  • "There are no experts, there is only us" – Jeremy D. Miller
  • "In preparing for battle I have always found that plans are useless, but planning is indispensable." – Dwight D. Eisenhower
  • "It seems that perfection is reached not when there is nothing left to add but when there is nothing left to take away." – Antoine de Saint-Exupéry
  • "If you work only on the problem at hand, you will get by for today. If you work on yourself, you will excel for a lifetime." – Jim Rohn
  • "Agile is highly disciplined and more difficult, requires more maturity, than waterfall." – Lise Hvatum
  • "It is impossible to create joint plans with people who strive for different goals." – Confucius
  • "Make decisions slowly by consensus, thoroughly considering all options; implement decisions rapidly." – Toyota Way, #13
  • "If we can only offer new value to our customers every six months, they’ll benefit slowly, we’ll benefit slowly, and, worst of all, we’ll learn slowly. That puts us all at risk." – Ron Jeffries
  • "Be quick, but don't hurry." – John Wooden
  • "The plan is to become a successful company in the right way. That is: have a product, have a market, and have customers who are buying your product." – Daniel "Danny" Mark Lewin
  • "A conference is a gathering of people who singly can do nothing, but together can decide that nothing can be done." – Fred Allen
  • "Goals may cause systematic problems for organizations due to narrowed focus, unethical behavior, increased risk taking, decreased cooperation, and decreased intrinsic motivation." – Daniel H. Pink
  • "The very presence of goals may lead employees to focus myopically on short-term gains and to lose sight of the potential devastating long-term effects on the organization." – Ordóñez et al., 2009
    • Taken out of context, this might be misinterpreted as "goals are always bad". This relates to goals that are set by individuals other than the ones executing on them.
  • "Scrum is more like your mother-in-law. She will point out all your deficiencies and the things that are going wrong with you, but not fix them. You need to fix them yourself." – Jurgen De Smet
  • "The most successful people, the evidence shows, often aren't directly pursuing conventional notions of success. They're working hard and persisting through difficulties because of their internal desire to control their lives, learn about their world, and accomplish something that endures." – Daniel H. Pink
  • "That's how we are out of the box. If, at age fourteen or forty-three, we're passive and inert, that's not because it's our nature. It's because something flipped our default setting," – Daniel H. Pink
  • "The ultimate freedom for creative groups is the freedom to experiment with mnew ideas. Some skeptics insist that innovation is expensive. In the long run, innovation is cheap. Mediocrity is expensive-- and autonomy can be the antidote." – Tom Kelley
  • "Perhaps it's time to toss the very word 'management' onto the linguistic ash heap alongside 'icebox' and 'horseless carriage'. This era doesn't call for better management. It calls for a renaissance of self-direction." – Daniel H. Pink
  • "Those men and women to whom we delegate authority and responsibility, if they are good people, are going to want to do their jobs in their own way." – William McKnight
  • "The desire to do something because you find it deeply satisfying and personally challenging inspires the highest levels of creativity, whether it's in the arts, science, or business." – Teresa Amabile
  • "Figure out for yourself what you want to be really good at, know that you'll never really satisfy yourself that you've made it, and accept that that's okay." – Robert B. Reich
  • "One cannot lead a life that is truly excellent without feeling that one belongs to something greater and permanent than oneself." – Mihaly Csikszentmihalyi
  • "Be prepared to cut your losses – canceling bad projects early is success because you save time, talent, money and resources that can be applied to better opportunities." – Ian Spence and Kurt Bittner
  • "Any intelligent fool can make things bigger and more complex... It takes a touch of genius - and a lot of courage to move in the opposite direction." – "Small is Beautiful", by E.F. Shumacher
  • "Your work is shit." – Steve Jobs, interview with Bob Cringely
    • Bob Cringely: "What does it mean when you tell someone their work is shit?"
    • Steve Jobs:
      • "It usually means their work is shit. Sometimes it means, 'I think your work is shit. And I – I'm wrong'".
      • "The most important thing I think yo can do for somebody who's really good and who's really being counted on is to point out to them when their work isn't good enough. And to do it very clearly and to articulate why ... and to get them back on track."
  • "When you have to fire people, do it with humility. Remember, the reason you have to fire them is not that they suck. It's not even that they suck at this job. It's that this job–the job you gave them–sucks for them." – Kim Scott
  • If no mistake have you made, yet losing you are… a different game you should play. -- Yoda
  • "The client or sponsor is the driver, yes, and has brought resources to bear to accomplish this goal that you’re managing, but you were not brought on to be a “yes” person. (If you were, then stop reading right now and go find another job. You’re in an unhealthy situation!)" – Jeniffer Hamel, in How to say "no" to clients, bosses, and stakeholders
  • "If everything is under control, you're going too slow!" – Mario Andretti
  • "Anyone who has never made a mistake has never tried anything new." – Albert Einstein
  • "It does not matter how good you are, it does not matter how big you are, you can be taken down; if you are not agile." (talking about Nokia, Myspace, ...) – Jeff Sutherland
  • "You cannot make a commitment on anyone else's behalf and expect committed behavior from them." – Lisa Adkins
  • "The single biggest problem in communication is the illusion that it place." – George Bernard Shaw
  • "So much of what we call management consists of making it difficult for people to work." – Peter Drucker
  • "If you don't change, you die!" – by Herb Kelleher
  • "Yes, we want to play football, we really like it...but let’s be pragmatic about it, the “by the book” football doesn’t really fit our context. So we will do 3 hours long matches because our players need more time to score. Also we don’t need trainer for our players, we will just tell them when to hit the ball and how (plus they saw a video about football and few of them are certified players now l). Also the ball is too hard for our players so we will use a beach ball and make the goals bigger. And goalkeeper will be a temporary role." – by Karel Slatinský
  • "Simple, clear purpose and principles give rise to complex and intelligent behavior. Complex rules and regulations give rise to simple and stupid behavior." – by Dee Hock
  • "For the record, a single "I don't know" is enough to disqualify a story from sprint planning." – by Kelley O'Conell
  • "Scrum focuses on being agile which may (and should) lead to improving. Kanban focuses on improving, which may lead to being agile." – by Karl Scotland
  • "The first thing you’ll see is, much like you do with an application, you’re not going to have 1 super-app that represents the whole company; you’re going to break it down into many smaller services and applications that compose it." – by Armon Dadgar
  • "We don't need an accurate document. We need a shared understanding." – by Jeff Patton
  • "Agility means that you are faster than your competition. Agile time frames are measured in weeks and months, not years." – by Michael Hugos
  • "We regularly coach groups that ask, 'How can we calculate how many people we will need?'. Our suggestion is, 'Start with a small group of great people, and only grow when it really starts to hurt.'. That rarely happens." – by Bas Vodde and Craig Larman
  • "Do the planning, but throw out the plans." – by Mary Poppendieck
  • "Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations" (ie. any piece of software reflects the organizational structure that produced it) – Conway's Law
  • "Let's (over) simplify the jobs within Scrum to their bare minimum description: Product Owner has a focus to build the right things; Team has a focus to build the things right; Scrum Master helps them build the right things right", by Jürgen de Smet
  • "Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite. The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt.", by Ward Cunningham
  • "Cars have breaks so you can go fast.", by Kevlin Henney

RabbitMQ is a multiplatform distributed message broker.

redis

redis is a powerful in-memory (with persistence support) database for storing various data types; it can also be used as a message broker.

remote work

  • Working Remotely (2015), by Todd Dewett
    • ex: "Every productive behavior starts with a conscious choice. I want you to start the day by deciding that non-work activities will not be an option during your designated work time. Believe me, once you allow non-work activities to invade your work time, the easier it becomes to do it again, and again. Next, adopt this rule. No personal calls, emails, texts, instant messages, and so on. Yes, emergencies happen but they're rare and you need to protect your work time. Not only do I want you to refrain from sending personal messages, I want you to try and not receive them either."

ruby

ruby on rails

rust

salt

Salt is:

  • A configuration management system. Salt is capable of maintaining remote nodes in defined states. For example, it can ensure that specific packages are installed and that specific services are running.
  • A distributed remote execution system used to execute commands and query data on remote nodes. Salt can query and execute commands either on individual nodes or by using an arbitrary selection criteria.

Seems like Salt is basically Ansible with state, that is not Ansible Tower :). They both use Python and YAML.

SCRUM (agile)

Slash TZ (/tz)

/tz is an internet service (but can also be integrated into Slack) that can be used for very quick time zone conversions. A notable feature is the ability to ask for the best time to meet between multiple time zones/cities.

snap(s)

"A snap is a bundle of your app and its dependencies that works without modification across many different Linux distributions. Snaps are discoverable and installable from the Snap Store, an app store with an audience of millions."

snaprd

snaprd is a backup utility utilizing rsync and smart hard link creation. It can be run locally or remotely.

socket.io

Multi-platform peer2peer communication framework

ssh

  • MOSH
  • sshpass: can't use SSH keys for whatever reason, yet you don't want to type the password manually. Perhaps you're doing some kind of automation? Use sshpass!

socat – establish two bidirectional byte streams to transfer data between them

Socat is a command-line-based utility that establishes two bidirectional byte streams and transfers data between them. Because the streams can be constructed from a large set of different types of data sinks and sources (incl. SSL).

Sococo is a company/product that attempts to bridge the gap between being just a unified communications tool and a kinda virtual reality for remote work environments (with a grain of salt).

Basically, the selling point is that with you team/organization, you can create a layout/map of your workplace (including seats, conference rooms, kitchens, ...) and have your colleagues kinda roam around that workplace and interact with others, should they feel like it (it's also possible to sit in a phone booth for just one person).

I find this interesting, since using simple text/emoji statuses in a unified messaging app is definitely not enough -- I never know when others are engaged in some kind of discussion, but simply just type (as opposed to being in some kind of room/area that anyone can join), or whether they are truly available (their status might show available, even though they are in a room/area and are actively engaged with people -- sococo should make it obvious where they are).

splunk

Splunk is a de facto standard tool for log collection, storing, processing and analysis (incl. graphs, alerts, etc). It is a commercial offering, but it also offers a free version, which is usable for small-scale deployments.

sublime text

Text editor.

svelte

"Honestly, Svelte feels and seems like a Vue ripoff. To me, a heavy TypeScript user, it does not seem to be doing anything too different or radical enough, to really warrant a switch."

systemd

team building (games)

Human Knot

Equipment: none Time: 15 - 30 minutes Number of Participants: 8 - 20 people (with less, it's not so exciting)

Rules: Have everyone stand in a circle facing each other, shoulder to shoulder. Instruct everyone to put their right hand out and grab a random hand of someone across from them. Then, tell them to put their left hand out and grab another random hand from a different person across the circle. Within a set time limit, the group needs to untangle the knot of arms without releasing their hands. If the group is too large, make multiple smaller circles and have the separate groups compete.

Objective: This game for team building relies heavily on good communication and teamwork. It also results in a lot of great stories for the water cooler chat in the workplace.

The Perfect Square

Equipment: blind folds and 2 (or more) ropes Time: 15 - 30 minutes Number of Participants: 5 - 20 people

Rules: Lay the ropes in a straight line in front of each team. Have the teams stand side by side behind the rope. Have everyone take a step or two back away from the rope. Next, ask everyone to come back and try to form a square with the rope without removing their blindfolds. Set a time limit to make it more competitive. To make it even more difficult, instruct some team members to stay silent.

Objective: Focuses on strong communication and leadership skills. By instructing some team members to be silent, this game also requires an element of trust across the team, allowing team members to guide each other in the right direction.

Blind Draw

Equipment: flipchart (or clipboard), **papers, crayons (or pencils or pens), photos/pictures to draw (or some assortment of every day objects) **Time: **15-30 minutes **Number of Participants: 4-20 people

Rules:

1. Get a flipchart (or clipboard), markers, pencils, crayons or pens, and a bunch of random pictures. This game works best with more unobvious objects (say, a trampoline vs a coin). 2. Divide all participants into teams of 4-6 people. 3. Ask each team to pick one person to be the "artist". Ask the artists to take their place next to the flipchart. 4. Face the teams away from the flipcharts and present them all with one (the same) picture. 5. The teams will then instruct their artists on how to draw the picture based on verbal instructions alone. They can describe the object but not state its name. The artist can't see the object at any time, nor can the team see what the artist is drawing. 6. The team whose drawing comes closest to the actual object wins.

Photo Finish

Equipment: rope (or measuring or masking tape or long stick) Time: 15-30 minutes Number of Participants: 5-20 people

Rules:

1. Create a straight 'finish line' using the rope. 2. Ask all participants to cross the finish line at exactly the same time, i.e. a "photo finish". Participants will have to coordinate with each other to pull this off. 3. Take a photograph or take a video every time they cross the finish line to see if it qualifies as a photo finish. 4. For added difficulty, ask the participants to walk or run across the finish line in a photo finish.

Team Emblem/Crest

Equipment: papers, crayons (or pencils or pens) Time: 15-30 minutes Number of Participants: 4-20 people

1. Grab cardboard, chart paper, markers, crayons, tape or anything else you'll need to draw and paint a team emblem or team shield. 2. Divide players into small teams of 3-4 people each. You can make the team composition the same as your real-life office teams to focus more on the team identity aspects of this activity.
3. Give each team enough time to plan, draw and paint an emblem for their teams. The emblem must represent something the identifies the team and its values. They get 10 minutes for inspiration (they can look up ideas online if they want to), 20-80 minutes to make the emblem. 4. Once the time is up, ask each team to display their emblem. Invite all other teams to give their own interpretation of the emblem. Then the creating team gives their actual interpretation. Repeat the process for all other teams.

teleconsole

Teleconsole is a tool for enabling remote access to local services, similar to ngrok. Teleconsole is different in that it allows the other party to directly control a terminal session (with the possibility of even being able to forward ports over the protocol), such that both of you can actively participate in the session. (It's more or less like a shared tmux panel over SSH or web interface).

telegraf

Telegraf is an agent (written in Go) for collecting metrics and writing/sending them into various outputs. Similar tools include CollectD for instance. It has many plugins that facilitate its metric collection as well as storage capabilities. For example, the nginx plugin can be used to collect requests per second, response times, active connections, ... and you can ingest the metrics into Prometheus.

terraform

  • Terraform.io is in infrastructure as a code solution that allows one to specify how one's infrastructure is supposed to look like, and Terraform makes it happen. It supports many different cloud providers as well as virtualization platforms, and others.
    • Terraform is the answer to the people who don't want the hassle of interfacing with APIs directly (i.e. using boto3 or similar tools) and want one more level of abstraction.
  • Example/Tutorial: A complete AWS environment with Terraform, by pippopeppe83
  • Terraform Credentials from the Environment, project on GitHub
    • very useful for switching between different Terraform Cloud credentials using environment variables

testing

test driven development (tdd)

textfsm

TextFSM is both a Python module (library) as well as command line utility that makes it very easy to parse out information from textual data, such as your ifconfig/ip output etc. You do have to prepare a state automaton first, but hey, that's easy. Not everybody failed their college education with that like I did :).

$ tee template <<EOF
Value Required,Key Iface ([a-zA-Z0-9]+)
Value Required MAC ([a-z0-9:]+)
Value List Inet ([0-9.]+)
Value List Inet6 ([a-zA-Z0-9:]+)

Start
  ^\S+:.* -> Continue.Record
  ^${Iface}:
  ^\s+ether\s+${MAC}
  ^\s+inet6\s+${Inet6}
  ^\s+inet\s+${Inet}
EOF

$ python3.7 -m textfsm template <( ifconfig )
FSM Template:
Value Required,Key Iface ([a-zA-Z0-9]+)
Value Required MAC ([a-z0-9:]+)
Value List Inet ([0-9.]+)
Value List Inet6 ([a-zA-Z0-9:]+)

Start
  ^\S+:.* -> Continue.Record
  ^${Iface}:
  ^\s+ether\s+${MAC}
  ^\s+inet6\s+${Inet6}
  ^\s+inet\s+${Inet}

FSM Table:
['Iface', 'MAC', 'Inet', 'Inet6']
['en0', '28:cf:e9:15:0c:1d', ['172.30.163.245'], ['fe80::c0:ad4e:4923:a0da', '2001:4878:a261:3000:10cd:7715:e55a:6722', '2001:4878:a261:3000:80ee:72e0:df15:a06b']]
['p2p0', '0a:cf:e9:15:0c:1d', [], []]
['awdl0', '6a:9e:da:fa:6b:41', [], ['fe80::689e:daff:fefa:6b41']]
['en1', '32:00:11:83:aa:c0', [], []]
['en2', '32:00:11:83:aa:c1', [], []]
['bridge0', '32:00:11:83:aa:c0', [], []]
  • Tmux is a terminal multiplexor, like screen (for those familiar with that), which not only allows one to multiplex terminals in text mode, but also offers integration with GUI tools, like iTerm.

  • tmux 2 by Brian P. Hogan (Safari Books)

  • TIP: To make it easier for one to SSH into a machine equipped with tmux and have a constant and isolated remote tmux session either created or attached, one can use the below function (if placed in .bash_profile, it can then be used as a command)

    tssh() { ssh -t "${*}" "LANG=en_US.UTF8 tmux -CC new-session -A -s '${USER}'" }
    

tuleap

Tuleap is an open source issue tracking system and Git source code repository. It has many features included. It can be easily spun up using a Docker image.

typescript

gulpfile.js

This is a boiler-plate-free example gulpfile.js suitable for use with NodeJS. It expects all your sources to live under src, and will produce their equivalent JavaScript files in dist. It also expects a working Babel and ESLint setup.

The main two targets to use from the outside are cleanBuild and buildAndWatch (spawning a loop watching the sources and recompiling when they change).

const gulp = require("gulp");
const typescript = require("gulp-typescript");
const eslint = require("gulp-eslint");
const sourcemaps = require("gulp-sourcemaps");
const babel = require("gulp-babel");
const del = require("del");
const cached = require("gulp-cached");

exports.clean = gulp.parallel(
  function deleteDist() {
    return del(["dist"]);
  },
  function deletePackage() {
    return del(["package"]);
  }
);

const tsProject = typescript.createProject("tsconfig.json");

exports.build = gulp.series(function buildTypescript() {
  return tsProject
    .src()
    .pipe(cached("dist"))
    .pipe(eslint())
    .pipe(eslint.format())
    .pipe(eslint.failAfterError())
    .pipe(sourcemaps.init())
    .pipe(tsProject())
    .js.pipe(babel())
    .pipe(sourcemaps.write())
    .pipe(gulp.dest("dist"));
});

exports.cleanBuild = gulp.series(exports.clean, exports.build);

exports.buildAndWatch = gulp.series([exports.cleanBuild], function watch() {
  return gulp.watch("src/**/*.ts", exports.build);
});

.eslintrc.js

This is a boiler-plate-free example .eslintrc.js suitable for use with NodeJS. It also includes Prettier rules, to make sure you run it against your files :).

module.exports = {
  parser: "@typescript-eslint/parser",
  plugins: ["@typescript-eslint"],
  extends: [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "prettier/@typescript-eslint",
    // PRETTIER NEEDS TO BE THE LAST ONE
    "plugin:prettier/recommended"
  ],
  env: {
    node: true,
    es6: true
  },
  parserOptions: {
    ecmaVersion: 2019,
    sourceType: "module"
  },
  rules: {}
};

jest & typescript

tsconfig.json

This is a boiler-plate-free example tsconfig.json suitable for use with NodeJS. It expects all your sources to live under src and will produce their equivalent JavaScript files into dist.

{
  "compilerOptions": {
    "declaration": true,
    "resolveJsonModule": true,
    "target": "es2019",
    "module": "CommonJS",
    "moduleResolution": "Node",
    "strict": true,
    "importHelpers": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "allowJs": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "inlineSourceMap": true,
    "baseUrl": "src",
    "paths": {
      "@/*": ["src/*"]
    },
    "outDir": "dist"
  },
  "include": ["src/**/*.ts"],
  "exclude": ["node_modules"]
}

runtypes is a TypeScript library that makes it simple to create custom type-guarding (and validating) classes and static typings in one go. This is the tool you will use whenever you acquire an object at runtime that you expect to conform to a particular static type, but you are not sure, and the static analyzer isn't either. Situations like this usually happen when deserializing an object, parsing command line arguments, ...

tsdef is a TypeScript library of type shortcuts (less typing for you).

tsdx

ultimate plumber

"A tool for writing Linux pipes in a terminal-based UI interactively, with instant live preview of command results.". Ultimate Plumber on GitHub

user base statistics

vagrant (HashiCorp Vagrant)

Vagrant is a tool (and an ecosystem) that enables one to deploy and provision virtual machines onto many different hypervisors (e.g. VirtualBox, Hyper-V, AWS, ...).

Yet another bootable USB flash drive creator. This ones is different, though, as it allows for multiple different ISOs to be placed onto the drive and used to boot up. Should you need a different ISO, just place it there, or replace the previous, or keep all of them. No need to reformat, like some of the other tools need.

vault (HashiCorp Vault)

HashiCorp's Vault is an open-source platform for secrets management and data protection (encryption). It supports many different authentication schemes. It can talk to different storage backends (file, in-memory, Consul, ...) and it also supports various features, such as automatic user creation in AWS, databases, ...

visual studio code

windows

process hacker

  • Process Hacker
    • tries to fill in the gap between the SysInternals' Process Explorer and the classic Task Manager

Allow administrator users logged in remotelly to actually be administrators

How to prevent Windows going to sleep?

I personally tried a couple different solutions, starting with the obvious settings presented by Windows in the control panel, going through the secret settings (that one has to first enable), and ending up with 3rd-party apps to do the job.

Turns out, preventing Windows from falling asleep on a laptop computer is suspiciously hard. It seems somewhat doable if you don't plan to ever enable the lock screen (which you should, because there's no need to keep the computer fully accessible when you might be in the other room). But when Windows gets to the lock screen, it seems (despite being told not to) to always decide it's time to go to sleep.

My recommendation is then either Don't sleep or Caffeine. They just do the job. No need to fiddle with a gazillion of configuration options. And you can still lock the computer and it won't go to sleep :).

Interested in the "secret" sleep-prevention settings in Windows? Here you go!

windows subsystem for linux

wireshark

"xonsh is a shell language and command prompt. Unlike other shells, xonsh is based on Python, with additional syntax added that makes calling subprocess commands, manipulating the environment, and dealing with the file system easy. The xonsh command prompt gives users interactive access to the xonsh language."

yaml

aka "yaml ain't markup language", is a serialization format (similarly to JSON) that targets to be very easy to write and read by humans. Used widely for configuration files, but even has support for document streaming.

About

"My Knowledge Base" is an organically compiled list of good-to-knows that I have personally used and--or seen throughout my professional career, and I can personally vouch for them. -- Pull requests that add more, are welcome, but I shall review them first, and will only publish items that meet the above criteria.

Resources

Stars

Watchers

Forks