WRITELOOP

POSTS

(these take longer to read, but are more deep-diving)

2024 June 21: Lock and/or downgrade packages on arch linux Read...

Sometimes we want some packages to not be upgraded, or to downgrade them to previous versions. Here is how to do that.

2024 April 4: Use datetime.timezone.utc instead of pytz Read...

This is a short explaining an alternative on python's stdlib for pytz

2023 December 4: Upgrade NixOS to next version Read...

Recently I had to update my NixOS lab VM from 2023-05 to 202311. Here are the steps required to do that.

2023 October 10: Prepare a VM/LXC container template on Proxmox for NixOS Read...

When generating a template VM or LXC container, you need to swipe and re-generate some configuration so that the VM/LXC container generated becomes unique from the Proxmox's perspective. Here is a description on what is needed.

2023 October 3: Create NFS share on Proxmox Server to make it available on the network Read...

One of the features on my new Proxmox server will be to provide NFS shares on my home network, which are compatible with lots of machines/clients/systems and will be useful to share files between the Proxmox host and its' guests also. Here are the steps required to setup the NFS server the clients.

2023 September 30: A primer on LVM (when setting up Proxmox) Read...

I had done a new Proxmox setup on a beefier SSD, and by default proxmox uses LVM to handle disk 'partitioning', which was always a little cryptic to me. That looked like a great opportunity to learn something new that can be useful in the future, so I took some time to understand it and consolidate here for my future self when the need arises.

2023 February 25: Molecular Notes - A second brain system to deal with concepts, insights and ideas Read...

These are some notes I took while reading 2 interesting articles from someone explaining his second brain system.

2023 February 22: PopOS 22: random freezes when using btrfs and timeshift Read...

I noticed my system was randomly freezing for some seconds when I was using btrfs and timeshift on PopOS 22. Searching a little bit online, I discovered that is related to btrfs quotas enabled, although them not being stable yet. Here is how to fix that.

2023 February 14: Is complexity always a bad thing? Read...

As software developers, we tend to not like complexity. Here are some of my thoughts after listening to a podcast episode.

2023 February 6: ZRAM compressed memory on PopOS 22 Read...

This is a short explaining what is ZRAM and what are its' benefits and tradeoffs.

2023 January 28: ansible: 'Missing sudo password' error when running playbook or ping Read...

I spent some minutes trying to understand what was happening when trying to run `ansible ping` on a machine I could manually ssh into, but ansible could not connect to it. Here is what I did to fix that.

2023 January 5: Setting up Proxmox on a notebook Read...

I have been experimenting with KVM and LXD linux containers, but that requires some bootstraping that I consider tedious. For some time I have been hearing about Proxmox, which is a linux distro based on Debian with focus on virtualization. I have installed it on a spare notebook here at home, so to experiment with linux distributions, kubernetes and creating lab environments whenever needed. Here are some tips I collected and applied to my setup.

2022 October 4: Ten to Zen - book notes Read...

We don't give our own minds the same level of attention that we give to our body and even other people. Many of us go through life without realizing we automate behaviors and create beliefs based on our past experiences - no one teached us how to spend time with our own minds and inspect and question our thought patterns. This book written by Owen O'Kane gives awareness on that and proposes a methodology to question, inspect and learn from our own thought patterns, behaviors and beliefs - or, like we say on software development, to 'debug' and 'profile' ourselves. If that sounds interesting to you, keep reading.

2022 September 22: latency numbers cheatsheet Read...

Here is a reminder of some latency numbers we developers must have in mind when drafting our solutions/algorithms.

2022 September 16: sudoedit: fixing error 'editing files in a writable directory is not permitted' Read...

sudoedit is useful when you need to edit a file like if you were root, but you want to keep your editor configuration and plugins (e.g. vim, neovim). Here is how to fix this error.

2022 September 15: Delete all videos from YouTube's Watch Later playlist (watched AND unwatched) Read...

I use YouTube a lot for learning and content creation. The Watch Later playlist has a 5k videos limit, but if you are an avid user you can fill that in less than a year. I know there is a YouTube API, but I didn't want to take time with that. So, searching a little bit online I discovered how to solve that using your browser's javascript console. Here are the instructions on how to do that.

2022 September 12: Notes on Dependency Inversion (the 'D' on 'SOLID') Read...

Dependency Inversion can be used to decrease coupling between classes. Here are some notes on a video I recently saw on YouTube to reinforce that.

2022 September 9: Thunderbolt for eGPUs on Linux Read...

I have been curious on using external GPUs (eGPUs on Linux) on notebooks with thunderbolt ports. That would allow to buy a notebook for the portability but also use it for video creation/processing and gaming. Here is what I learned from a recent YouTube video about it.

2022 September 5: Data Structures - Arrays Read...

Arrays are one of the most fundamental data structures to be used on algorithms. Here are some notes regarding arrays and its' python implementation (lists)

2022 September 5: Power management on linux (PopOS!) with upower and TLP Read...

Battery (power) management on linux is a little tricky. Here are some notes regarding popular tools used to inspect it.

2022 September 1: Big-O Notation summary Read...

A quick reference on Big-O notation

2022 September 1: Notes on monorepos Read...

Monorepos have some benefits, which comes with some trade-offs. Here are some thoughts about it.

2022 August 29: Notes on code cohesion/coupling Read...

Some notes on code cohesion and coupling to write better code

2022 August 27: Installing PopOS! with functional btrfs support and timeshift Read...

When installing PopOS and choosing btrfs as the filesystem, it does not install correctly so to support timeshift. After digging, I found a video on YouTube explaining it like I was 5, so I am posting here to my future self.

2022 August 27: Versioning on APIs Read...

Here are my insights into why versioning is important and how to implement it.

2022 August 25: Notes on monadic error handling - an alternative to exceptions Read...

Here are some notes on a video from Arjan on Youtube where he presents monadic error handling as a better alternative for exceptions that you could adopt on your python solutions.

2022 August 11: A simple system metrics monitoring tool for linux Read...

In this post I present sysstat, a versatile CLI monitoring tool that you can leverage to inspect real time and historic metrics on a linux system regarding the usage of cpu, memory, swap and others.

2022 July 21: Grokking Algorithms - greedy/approximation algorithms Read...

2022 July 21: Notes on '3 ideas from functional programming to improve coding' Read...

2022 July 21: Notes on zettelkasten Read...

2022 July 10: Alacritty terminal type error Read...

How to fix alacritty terminal type error

2022 July 6: Git commits are snapshots Read...

2022 July 6: Merkle Trees Read...

An algorithm behind distributed systems

2022 July 5: Async on python Read...

Notes on python async implementation

2022 July 5: Python concurrency options Read...

Describes possible concurrency options that can be used on python programs

2022 June 14: Firefox Tips Read...

2022 May 30: Grokking Algorithms - Dijkstra algorithm Read...

2022 May 30: Grokking Algorithms - Dijkstra algorithm Read...

2022 May 17: What Software Architecture Should Look Like • Dave Farley • GOTO 2022 Read...

2022 May 13: Grokking Algorithms - Breadth-first Search Read...

2022 May 11: Grokking Algorithms - Breadth First Search Read...

2022 May 9: Grokking Algorithms - Hash Tables Read...

2022 May 6: Grokking Algorithms - Hash Functions Read...

2022 May 5: Notes on poetry Read...

2022 May 4: Grokking Algorithms - Hash Tables Read...

2022 May 3: Grokking Algorithms - Hash Tables Read...

2022 May 2: Grokking Algorithms - Quicksort Read...

2022 April 27: Grokking algorithms - QuickSort Read...

2022 April 26: Grokking Algorithms - Divide and Conquer Read...

2022 April 26: Grokking Algorithms - Divide-And-Conquer Read...

2022 April 25: Grokking Algorithms - Stacks Read...

2022 April 25: Grokking Algorithms - Stacks tradeoffs Read...

2022 April 22: Grokking Algorithms - Recursion Read...

2022 April 21: Grokking Algorithms - Recursion Read...

2022 April 20: Grokking Algorithms - Selection Sort Read...

2022 April 19: Grokking Algorithms - Selection Sort Read...

2022 April 16: Grokking Algorithms - Linked Lists Read...

2022 April 13: Grokking Algorithms - Arrays and Linked Lists Read...

2022 April 11: Grokking Algorithms - Big-o notation Read...

2022 April 7: Grokking Algorithms - Big O Notation Read...

2022 April 5: Grokking Algorithms - Binary Search Read...

2022 March 30: Grokking Algorithms - Binary Search, Logarithms Read...

2022 March 22: Data Structures Overview Read...

2022 March 9: SRE 101 Read...

2022 February 7: Raspberry Pi tips Read...

2021 December 21: Notes on ArgoCD Read...

2021 November 25: Local docker containers communication even under a VPN Read...

2021 November 19: Instructions to setup an sftp server on Ubuntu Read...

2021 October 15: Mermaid for text and versionable diagrams Read...

2021 September 27: Using poetry for dependencies on python projects Read...

2021 September 17: git-secret cookbook Read...

2021 August 30: Podman on Arch (Manjaro) Linux Read...

2021 July 28: Install golang on raspberry Read...

2021 July 23: Fix to docker-compose credentials error Read...

2021 July 22: LXD - lighter alternative to KVM Read...

2021 July 21: LXD containers notes Read...

2021 May 25: How to code mappings inside lua functions on neovim Read...

2021 May 17: Nitrux Linux Distro Read...

2021 May 14: Migrating from init.vim to init.lua Read...

2021 May 6: Kubernetes Control Plane Read...

2021 April 20: Terraform on Arch Linux Read...

2021 April 16: Python exception best practices Read...

2021 April 14: Diagrams with C4 model Read...

2021 April 10: Open source strategy for personal initiatives Read...

2021 March 31: Tipos de testes Read...

2021 March 22: Python basics Read...

2021 March 22: X11 on Wayland (xwayland) Read...

2021 January 14: Vim setup for note taking Read...

2021 January 6: USB boot on raspberry Read...

2020 December 30: Raspberry pi OS display manager/session configuration Read...

2020 November 30: OpenDNS configuration Read...

2020 November 12: Django - Managers and QuerySets Read...

2020 October 27: Install rust on a Raspberry Read...

2020 September 24: PostgreSQL tips Read...

2020 September 9: Anotations on data intensive applications Read...

2020 September 9: JWT 101 Read...

2020 August 28: Celery learnings Read...

2020 August 5: Interfaces in python Read...

2020 August 4: Using time command to track peak memory consumption Read...

2020 August 3: Language Server Protocol on Vim Read...

2020 August 1: Set f2fs on ubuntu Read...

2020 July 27: Linux Tips Read...

2020 July 14: Developing vim scripts Read...

2020 July 10: Performance tips for python pandas Read...

2020 July 8: Changing screen resolution manually through xrandr and on kvm virt-manager Read...

2020 July 8: The viminfo file Read...

2020 July 1: StringIO in python Read...

2020 June 25: Event driven architecture / asynchronous microservices Read...

2020 June 25: Testing sed substitution with regular expressions Read...

2020 May 4: CURL Cheatsheet Read...

2020 March 12: Python - how to make requests to URLs with self-signed certificates Read...

2020 March 11: Docker daemon configuration and some troubleshooting Read...

2020 February 9: Create an encrypted file vault on Linux Read...

2020 January 22: kubernetes components Read...

2020 January 12: Gnome Tips Read...

2019 June 4: Package project to python's PyPI Read...

2019 June 3: SQLAlchemy Tips Read...

2019 March 30: Add systemrescuecd ISO to Arch Linux boot Read...

2019 January 8: dmenu as UI for shell scripts on i3 Read...

2019 January 6: sxiv tips Read...

2018 December 13: A borg for encrypted backups Read...

2018 November 27: NetworkManager tips Read...

2018 October 17: GNUPG cheatsheet Read...

2018 October 15: SSH tips Read...

2018 October 3: htop cheatsheet Read...

2018 August 20: Arch Linux Tips Read...

2018 August 6: Copy file system exactly as it is Read...

2018 August 6: Create datetimes on a pythonic way Read...

2018 August 6: Generate a Class Diagram from a python project Read...

2018 August 6: Git - remove a branch remotely Read...

2018 August 6: Git - Revert various commits done by mistake Read...

2018 August 6: How to convert a string with timezone (UTC) information in python (3.5+ probably) to a python UTC datetime Read...

2018 August 6: Makefile example for a flask app supporting environment variables Read...

2018 August 6: Mocking general rule Read...

2018 August 6: SQLAlchemy one-to-one relationship Read...

2018 August 4: stress-ng and ioping for benchmarking a machine Read...

2018 July 11: Creating and applying a patch Read...

2018 April 20: More Git Tips Read...

2018 March 22: Bash tips Read...

2018 March 11: Termux (Android) Tips Read...

2018 January 21: Using qemu to test boot from usb stick Read...

2018 January 11: InfluxDB CLI Cheatsheet Read...

2018 January 8: Ansible Read...

2018 January 8: KVM on arch linux Read...

2017 November 13: Sqlite Tips Read...

2017 October 15: Creating self-signed TLS/SSL certificates Read...

2017 October 1: (Monospaced) programming fonts Read...

2017 September 10: Using cloud-init and cloud images to build custom distribution images Read...

2017 August 19: Application launchers on linux (gnome) - AKA .desktop files Read...

2017 August 17: PostgreSQL CLI tools, psql reference and SQL dialect statements Read...

2017 August 13: Time-series database to the rescue Read...

2017 August 8: Multiple ssh keys on github/bitbucket Read...

2017 August 8: Touchpad cursor randomly jumping on screen Read...

2017 July 26: youtube-dl cheatsheet Read...

2017 July 14: Auditing linux for security with auditd Read...

2017 July 6: Render Markdown files on Linux CLI Read...

2017 June 22: Replicate docker container logs to systemd journald Read...

2017 April 16: Enhancing git configuration Read...

2017 March 18: Need to recursively find files in python? Read...

2017 March 18: Python Concurrency with concurrent.futures 101 Read...

2017 March 18: Python wheels howto (building and using) Read...

2017 January 3: Converting mysql tables to UTF-8 Read...

2017 January 3: Kibana tips and tricks Read...

2017 January 3: Pyenv tips Read...

2017 January 3: Python, unicode, strings and zip files Read...

2016 July 5: Python one-liners cheatsheet Read...

2016 June 26: Celery and RabbitMQ Tips Read...

2016 June 26: Linux IOWAIT Read...

2016 June 26: MongoDB Tips Read...

2016 June 26: More ansible Tips Read...

2016 June 26: Nginx Tips Read...

2016 June 26: Pandoc Tips Read...

2016 June 26: Siege Tips Read...

2016 June 26: SystemD Tips Read...

2015 January 4: How to manually add applications to 'applications' menu Read...

2014 November 11: How to interact with Django models outside of Django Read...

2014 November 4: Split a file into pieces and reorder it Read...

2014 October 5: How to discover if your ports are being blocked by your ISP Read...

2014 August 24: Run a group of commands as another user on a bash shell script Read...

2014 July 10: python lambdas (simply explained) Read...

2014 February 19: Git Tags e Branches - practical guide Read...

2014 February 7: How you can instantly improve your productivity and focus using agile results for extreme productivity Read...

2013 November 29: Creating SSH public and private keys, and using ssh-copy-id to copy it to the remote destination Read...

2013 November 19: CSRF protection Read...

2013 November 13: How to list all mx appointments from a specific domain Read...

2013 October 15: WGET command template Read...

2013 September 6: Bookmarklets - Tutorials Read...

2012 November 13: Python lambdas Read...

2012 August 27: strace - linux kernel tool to make error tracing on native binaries or python, ruby, php scripts Read...

2012 June 5: Git - Branches and Merge Read...