いらしゃいませい

Software Engineer

Master of Chaos

Wizard lvl 9

Human

Is complexity a human construct?

Or is it a perspective? is it the result of the human ego? or is it just a communication problem? If you look at biology, evolution has found a way to design its systems in a way that each component has a defined interface to communicate, and more importantly, each component is free to “experiment” or evolve independently from each other by random mutations. When changes in one component require a new interface it propagates those “requirements” to the other components in a trial-and-error mechanism....

January 18, 2023 · 3 min · Memo Garcia

Multi stage docker build for python

Docker multi-stage build is a great way to build a docker image with a minimal footprint. Compiled languages like GoLang or Rust can take advantage of this by just copying a binary into the “deployment container” This is an example from the official docs: FROM golang:1.16 WORKDIR /go/src/github.com/alexellis/href-counter/ RUN go get -d -v golang.org/x/net/html COPY app.go ./ RUN CGO_ENABLED=0 go build -a -installsuffix cgo -o app . FROM alpine:latest RUN apk --no-cache add ca-certificates WORKDIR /root/ COPY --from=0 /go/src/github....

January 1, 2023 · 2 min · Memo Garcia

Big O notation

Big O Notation (or the Big O) is used to describe how long and complex an operation will be based on its input. Complexity could mean that an operation takes N amount of time, or N amount of memory, N CPU resources, etc. There are some notations to describe this: O(n) -> The complexity grows linearly based on the size of the input. O(n^2) -> Grows at a square ratio of its input....

December 28, 2022 · 2 min · Memo Garcia

Istio Ambient Mesh

Ambient mesh is a new data plane mode for Istio that doesn’t rely on sidecars. It gives users the option to forgo sidecar proxies in favor of a mesh data plane that’s integrated into your infrastructure. Ambient mesh benefits are: Minimal configuration for traffic encryption. Same configuration for L7 policies as ”normal service mesh”. Take less resources because no sidecars are needed. Easier upgrades because pods don’t need to restart in order to upgrade the service mesh....

November 24, 2022 · 3 min · Memo Garcia

Is OpenStack fighting a lost battle?

Update Jan 2023: Is OpenStack Still Needed in 2022? - Thierry Carrez, Open Infrastructure Foundation And why Kubernetes “won”. I owe my career to OpenStack and to all its contributors. I have made excellent friends, I learned a lot from them and the project itself. For that and more, thanks a lot OpenStack. However… Even though OpenStack has never been better, I can’t shake the feeling that is fighting a lost battle....

October 20, 2022 · 3 min · Memo Garcia

TOOL - Lateralus

TOOL Website TOOL - Lateralus Black Then White are All I see In my infancy Red and yellow then came to be Reaching out to me Lets me see As below so above and beyond I imagine Drawn beyond the lines of reason Push the envelope Watch it bend Over thinking, over analyzing, separates the body from the mind Withering my intuition, missing opportunities and I must Feed my will to feel my moment Drawing way outside the lines Black Then White are All I see In my infancy Red and yellow then came to be Reaching out to me Lets me see There is So Much More and Beckons me To look through to these Infinite possibilities As below so above and beyond I imagine Drawn outside the lines of reason Push the envelope Watch it bend Over thinking, over analyzing, separates the body from the mind Withering my intuition, leaving opportunities behind Feed my will to feel this moment Urging me to cross the line Reaching out to embrace the random Reaching out to embrace whatever may come I embrace my desire to I embrace my desire to Feel the rhythm To feel connected Enough to step aside and Weep like a widow To feel inspired To fathom the power To witness the beauty To bathe in the fountain To swing on the spiral To swing on the spiral To swing on the spiral Of our divinity and Still be a human With my feet upon the ground I lose myself between the sounds And open wide to suck it in I feel it move across my skin I'm reaching up and reaching out I'm reaching for the random or Whatever will bewilder me Whatever will bewilder me And following our will and wind We may just go where no one's been We'll ride the spiral to the end And may just go where no one's been Spiral out, keep going Spiral out, keep going Spiral out, keep going Spiral out, keep going

October 17, 2022 · 2 min · Memo Garcia

The role of a systems architect

Define the scope of the problem Avoid ambiguous words when defining your scope, for example, a maintainable solution … what is that? Make a solution able to adapt to changes and requirements. There is no such thing as the perfect architecture, but there are definitely bad architectures. Identify them as soon as possible. Identify what matters for your system. What do you care the most? performance? resiliency? consistency? something else?...

October 14, 2022 · 1 min · Memo Garcia

My favorite horror movies

In no particular order: The wailing | Gokseong Noroi | The Curse The Medium Satan’s Slaves | Pengabdi Setan Satan’s Slaves: Communion | Pengabdi Setan 2: Communion Kairo | Pulse Aterrados Incantation | Zhou Gonjiam: Haunted Asylum | Gon-ji-am A Tale Of Two Sisters | Janghwa, Hongryeon Lake Mungo Hereditary The Shining The Babadook Veronica

October 13, 2022 · 1 min · Memo Garcia

Learning resources I use

Tools for better thinking The Catalog of Design Patterns xmind

October 12, 2022 · 1 min · Memo Garcia

Installing GitLab in air-gapped mode

When installing GitLab in air-gapped mode using helm charts first you need to pull the required images for the target version to your private container registry. But is not straightforward to find which container tags map to which GitLab version. An easy way to find which tags you need is to print the helm templates first and get the values from there. helm \ -n gitlab \ template \ gitlab gitlab/gitlab \ --version 6....

October 3, 2022 · 1 min · Memo Garcia

Why am I always busy?

I’m trying to learn everything at once. I’m trying to do everything at once. … Except what I should be doing right now. 一度にすべてを学ぼうとしています。 一度にすべてをやろうとしています。 … 今すぐやるべきことを除いて。

August 30, 2022 · 1 min · Memo Garcia

Demystifying Kubernetes

Kubernetes is becoming a monster and as it grows it becomes more and more challenging for newcomers to understand it. My goal is to demystify its components. Main components There are two main components in a Kubernetes cluster. Master nodes Worker nodes The only difference is the workloads they run. You can assign metadata to these nodes to schedule specific workloads on each node or type of node. For Users Containers A container is a filesystem and process wrapped in a “box” with some labels on it....

June 30, 2022 · 3 min · Memo Garcia

A lesson from my dog

Looming recession !! , third world war !!, climate change !! Meanwhile taquito…

June 28, 2022 · 1 min · Memo Garcia

TODOs

There is a real cognitive and spiritual burden of having to carry lots of unfulfilled promises into the future. 未来に達成されない多くの約束を抱えなければならないという現実的な認知的および精神的な負担があります。 At its core this is what TODOs represent to me.

May 5, 2022 · 1 min · Memo Garcia

How to use GitOps in a non-cloud-native environment

The rapid development and adoption of cloud-native stacks that brings a better developer experience, security, reproducibility and speed at which organizations deliver value are leaving more traditional stacks behind. Hence, there is more pressure from the markets, organizations and developers to bring those stacks into a more modern era. We often wonder whether the same techniques and toolchains of these modern stacks can be used to configure not-so-modern applications or infrastructures....

March 4, 2022 · 4 min · Memo Garcia

Setup multiple git identities and pgp keys

Be very carrefull in your setup : any misconfiguration make all the git config to fail silently ! Setup multiple git ssh identities for git Generate your SSH keys as per your git provider documentation. Add each public SSH keys to your git providers acounts. In your ~/.ssh/config, set each ssh key for each repository as in this exemple: Host github.com HostName github.com User git IdentityFile ~/.ssh/github_private_key IdentitiesOnly=yes Host gitlab.com Hostname gitlab....

March 4, 2022 · 2 min · Memo Garcia

i3 running on WSL2

WSL configuration Install i3 sudo apt install i3 -y Create an init script vim ~/src/scripts/i3launch.sh #!/bin/zsh source ~/.zshrc # If not running interactively, don't do anything [ -z "$PS1" ] && return export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0 export LIBGL_ALWAYS_INDIRECT=1 dbus_status=$(service dbus status) if [[ $dbus_status = *"is not running"* ]]; then sudo service dbus --full-restart fi i3 To run WSL2 as root wsl.exe -d Ubuntu-20.04 -u root -- /bin/bash Windows configuration Install vcxsrv from powershell...

September 23, 2020 · 2 min · Memo Garcia

Understanding Computer Networks by Analogy - Part 2 - Switches and Routers

Switches or “The floor concierge” Imagine that you want to send a package from room 69 to room 62. In a typical building you cannot go to your neighbor and give them the package, it’s rude, you need to do it through the floor concierge. The concierge or switch has a table of everyone’s door numbers: | Floor | Room number | Door number | |-------|-------------|-------------| | 6 | 602 | 1 | | 6 | 609 | 1 | Remember that each room can have many doors....

August 21, 2020 · 4 min · Memo Garcia

Understanding Computer Networks by Analogy - Part 1 - Networks and subnets

Prologue There are many ways to learn something new and no approach is best. But, what works best for me is a combination of trial and error and learning by first principles. But, as someone once said: Knowledge is only valuable when it leads to taking action on an idea. And as long as you share that knowledge you are taking action on an idea. Just one big question is: how to share them?...

August 20, 2020 · 4 min · Memo Garcia

Modular CLI Documentation Fuzzy Finder

Fuzzy Search documentation from the CLI. See it in action here https://terminalizer.com/view/2c3935cf1418 Disclaimer This tool was built to learn FZF capabilities. Feel free to use it or extend it. Usage doc-fzf ansible doc-fzf ansible -q yum Installation pip3 install doc-fzf Verify your installation: doc-fzf -h usage: doc-fzf.py [-h] [-q QUERY] module_name doc-fzf. positional arguments: module_name Name of the module to search optional arguments: -h, --help show this help message and exit -q QUERY Query the docs Extending Doc-FZF doc-fzf is a modular application....

June 14, 2019 · 1 min · Memo Garcia

Generating a dynamic host inventory for ansible with Netbox

Usage: pip install pynetbox ansible ansible all -i hosts/env -m setup --tree /tmp/facts/env #!/opt/netbox/bin/python import argparse import json import os import sys import pynetbox import yaml import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) if sys.version_info < (3, 6): print("Python 3.6 is required") sys.exit(2) def to_json(in_dict): return json.dumps(in_dict, sort_keys=True, indent=4) def load_configuration(path="/etc/ansible/netbox.yml"): """ Load netbox configuration /etc/ansible/netbox.yml """ try: with open(path, "r") as fd: return yaml.safe_load(fd) except yaml.YAMLError as yml_error: print(yml_error) NETBOX_ENDPOINT = load_configuration()["netbox_endpoint"] NETBOX_TOKEN = load_configuration()["netbox_token"] if not NETBOX_ENDPOINT: raise OSError("environmet var NETBOX_ENDPOINT not set") if not NETBOX_TOKEN: raise OSError("environmet var NETBOX_TOKEN not set") nb = pynetbox....

January 10, 2019 · 3 min · Memo Garcia

Some Richard Feynman videos

The World from another point of view Fun to imagine Knowing versus Understanding

January 4, 2019 · 1 min · Memo Garcia

Waju - A fun and brutal game

Waju or whatever is called is a game that until this day I don’t know from where it comes. But, is fun. Edit: The game is based on a German game called Mensch ärgere Dich nicht Goal The goal of the game is very simple: Move your marbles for one lap from your home to your goal. Don’t worry about winning but don’t let anyone else win. Have fun. Board The board has six main components:...

January 4, 2019 · 4 min · Memo Garcia

Beyond PEP 8 - Best practices for beautiful intelligible code

January 3, 2019 · 0 min · Memo Garcia

Linux on Huawei Matebook X Pro

This laptop has very decent specs: 8th Generation Intel® Core™ i7-8550U processor GPU: NVIDIA® GeForce® MX150 with 2 GB GDDR5 / Intel® UHD Graphics 620 16 GB LPDDR3 2133 MHz BT 4.1 (compatible with 3.0 and 2.1+EDR) 512 GB NVMe PCIe SSD Don’t expect running workstation level workloads in this machine but it is a wonderful dev machine. Things I don’t like about the laptop Palm rejection, especially this one, maybe this is Linux....

December 4, 2018 · 3 min · Memo Garcia

Deploying OpenStack with Docker

Note This is a Work-In-Progress Document and the most up-to-date information is available at: github.com/memogarcia/openstack-deployer Deploying OpenStack using containers allows easy customisation and flexibility on how to deploy the platform for development, testing and production environments. Current deployment: stable/queens Host configuration The default configuration for this environment is composed by 3 main components that need to run on the host: Docker Libvirtd OpenVSwitch Docker will act as the control plane for OpenStack while the host will provide the hypervisor, network and storage....

May 5, 2018 · 2 min · Memo Garcia

Becoming a Certificate Authority (CA)

A Certificate Authority or CA is an entity that signs digital certificates. These digital certificates are used to validate the connection while using secure mechanisms. Generating a root CA We will use a root CA to create intermediate CA’s which are trusted to sign certificates on its behalf. First, prepare the environment. mkdir /root/ca && cd /root/ca mkdir certs crl newcerts private chmod 700 private touch index.txt echo 1000 > serial Then download the template for /root/ca/openssl....

February 5, 2018 · 3 min · Memo Garcia

Pratai, event driven platform for OpenStack

Note This is a Work-In-Progress Document. Read the docs at memogarcia/pratai-docs Abstract Pratai provides an incredibly flexible and resilient platform to migrate workloads to the cloud that respond to events without having to manage any server or network. How it works The goal of Pratai is simple. Deploy “code” (disclaimer, from now on I will refer to code as functions), that will react to an event without worrying about anything else, the platform handles the execution....

January 5, 2018 · 6 min · Memo Garcia