All blogs / DevOps / SRE / infrastructure
VADOSWARE
Professional (software) yak shaving, writ large. No part of the software stack is left unshaven.
DevOps / SRE / infrastructureRustLinux / UnixSoftware / engineering practice
- Posts
- 266 from 17 Dec 2012 to 28 Dec 2024
- Posting
- now and then
- Kind
- personal blog
- Feed
- https://vadosware.io/index.xml
2024 7
2023 4
2022 30
- Faster CI builds for Rust with pre-baked builder images and sccache
- PSA: Email Submission should be on port 465
- Tooling spotlight: direnv
- PSA: Getting __dirname and Package Information with ES Modules
- Introducing the Awesome F/OSS Newsletter
- The Preamble to Crypto might have just ended
- TIL: How to Import or Open .ics Files in the Calendar App (iOS)
- Remember the Firefox Phone?
- App Runner finally works on Apex domains
- Introducing pg_idkit: A Postgres extension for generating UUIDs
- Self-Hosted email is the hardest it's ever been, but also the easiest.
- Even Amazon SES Has IPs blocked by Spamhaus sometimes
- Was Service Catalog Redundant After All?
- Slonik is Awesome
- Why don't more people use Throat Mics?
- Building an interface (even if there's only one implementation) is unquestionably right
- Learning to Love the Plus Addresses
- Cool CLI: lstopo
- Installing Fluent Bit and Loki for lightweight logs
- A script for copying PVC data across StorageClassses
- cert-manager moved from Bazel to Make
- A Pattern for ENV in Sveltekit
- Lets call pre-launch market-validation pages 'prospecting' pages
- Thunderbird Autoconfig for your self-hosted email server with MTA-STS
- The Future of Free and Open Source is AGPL
- Upgrading a k0s cluster in-place from single-master to HA
- How to Install newer versions and bleeding edge ZFS
- How I Built LoginWithHN
- Starting 2022 with a Bang: Ceph on ZFS
- Infra Fun: Prometheus Broke My Haraka Installation
2021 33
- Everything I've seen on optimizing Postgres on ZFS
- New node who dis? DNS Issues and Calico Failures on a resurrected Node
- Handling your first dead Hetzner hard drive
- Using Baserow to power the landing page for NimbusWS
- Bare metal k8s storage: OpenEBS ZFS LocalPV + Rancher Longhorn
- How and why Haskell is better (than your favorite $LANGUAGE)
- Ansible tip: Variables from inventory file
- Automating k0s cluster backup with Ansible and SystemD
- Sometimes the problem is DNS (on Hetzner)
- So you need to wait for some Kubernetes resources?
- The Deployment Spectrum
- Wicked Landing Gear
- Novice Arch Pitfall: watch out for kernel mismatches (after system updates)
- Level 1 Automated K8S Deployments With GitLab CI
- Postgres Tip: Covering with primary key indices
- Paxosmon 2: The Paxos Journey Continues
- Years later, REST-ish Services in Haskell Part 4
- Setting Up SES With Pulumi
- Stuffing both SSH and HTTPS on port 443 with stunnel, sslh, and Traefik
- K8s storage provider benchmarks round 2, part 5
- K8s storage provider benchmarks round 2, part 4
- K8s storage provider benchmarks round 2, part 3
- K8s storage provider benchmarks round 2, part 2
- Automatically closing issues is violence
- K8s storage provider benchmarks round 2, part 1
- K8s Upgrade Sunday 03-21-21
- Serving a single file over HTTP with Rust and Go
- Ingress Controller considerations in early 2021
- Adding to the NodeJS Package Heap: async-wait-for-promise
- SADE: a pattern for Services as DOM Elements
- Stale kubeconfig breaking service to service communication with kube-router
- Back to Docker After Issues With Podman
- Right Sizing PM2 Clusters
2020 17
- Protect Your Eyes From Strain on Arch
- INCOMPLETE: Getting Started With Vue 2 (An Onion Guide), Part 1
- Improving security easily with Traefik and Kubernetes
- Downgrading to Kernel 5.8.9 to fix Bluetooth on Arch (2020-10)
- Cookie Authentication Without Nuxt Auth
- Bits and Bobs With Podman
- Rootless Containers in 2020 on Arch Linux
- A recipe for running containers in your Tape tests
- Upgrading Cert Manager From 0.4.0 to 0.16
- A Safer Price Type in Postgres
- Running containers for dependencies at will on Gitlab CI
- Announcing redis-bootleg-backup (rbb)
- A Servant API Testing Example From the Wild
- Updating From Traefik V1 to V2.2
- Setting Up Mailtrain on K8s
- Haskell exceptionfree-readfile library released
- 2019-12 K8s certificate expiration outage
2019 19
- Python E2E Test Config on Circle CI
- Running Zulip on Kubernetes
- Announcing Maille 0.1.1
- Starting my journey with the System76 Oryx Pro and Arch
- An Emacs Indentation setup for Java
- I don't (fully) trust the CNCF
- Kubernetes 1.15 upgrade (from 1.13.0)
- A couple talks on Postgres and Gitlab (June 2019)
- Count-Min Sketch in Haskell
- What is a Backend? A selective guided tour through terminology, approaches, and technology
- Comparing OpenEBS and Hostpath
- Ops Pearl: Managing Git Personas
- A Quick introduction to manual OpenAPI V3
- Setting Up Statping
- A Galaxy Scale Addressing Scheme for Compute Availability
- Ops Pearl: fast-forwarding a Git clone without a full pull
- Mithril SystemJS and ParcelJS Getting Started Guide
- Component Styling with CSS Variables, BEM-like class selectors, and some Tachyons
- Kicking the Tires on OpenEBS for Cluster Storage
2018 33
- Paxosmon: Gotta Consensus Them All
- Rest-ish Services in Haskell Part 3
- A small collection of Day 2 Vue Patterns
- How to get off Yahoo! mail
- Rhymote: a Remote for Rhythmbox
- REST-ish Services in Haskell: Part 2
- REST-ish Services in Haskell: Part 1
- Disassembling Raid on Hetzner Without Rescue Mode
- Using Gitlab Deploy Tokens With k8s
- Up and Running With Linkerd v1
- Running Untrusted Workloads K8s Container Linux Part 3
- Running Untrusted Workloads K8s Container Linux Part 2
- Running Untrusted Workloads K8s Container Linux Part 1
- Kicking The Tires On Fathom
- Hetzner fresh Ubuntu (18.04 LTS) install to single node Kubernetes cluster with ansible
- A Pattern For Component Based Program Architecture In Rust
- Trying (and failing) to get LXD running on Container Linux
- Securing Your Kubernetes Cluster
- Using Makefiles And Envsubst As An Alternative To Helm And Ksonnet
- Even faster rust builds in Gitlab CI
- k8s Container Linux ignition with rkt and kube-router
- SQLite Is threadsafe, parallel access safe, but I still want to extend it.
- Yet another cluster re-install after switching back to Container Linux
- Minimal effort build improvements and a GHC 8.2.2 upgrade
- The cure for impostor syndrome is knowing things
- Dedicated server rescue (RAID + Grub2 issues)
- Better k8s monitoring part 3: Adding request tracing with OpenTracing (powered by Jaeger)
- Switching From kube-lego To cert-manager
- Awesome Dev Tool: MailCatcher
- Better k8s Monitoring Part 2: Adding logging management with the EFKK stack
- Better K8s Monitoring Part 1: Adding Prometheus
- Fun with Gitlab CI
- Using Both Integrated And Discrete Graphics Cards
2017 61
- A reliable fix to Docker not keeping it's IPV4 address on Arch
- Adding (naive) email templating to my servant-powered haskell web application
- Custom registries in JSPM from CI
- Haskell build issues on Arch Linux (tinfo6)
- Adding a very naive in-memory cache to my Haskell web app
- Continuous Integration To Continous Delivery Haskell Project With Gitlab
- Zero To Continuous Integrated Testing A Haskell Project With Gitlab
- Switch From ployst/docker-letsencrypt to Jetstack's kube-lego
- Adding Sqlite Powered Fts Search To A Servant Powered Haskell App
- Update JSPM (SystemJS) + JSDOM + Vue testing integration
- Moving From Server Side Sessions To Client Side Session Tokens with Servant
- SSH tunneling using an intermediary computer
- Docker on Arch Linux - docker0 just doesn't seem to want it's IPv4 address
- Setting Up Piwik on Kubernetes
- Gandi 2017 Redesign
- Serving email on Kubernetes with Mailu
- Within seconds of using Pingdom I got email spam
- Kicking The Tires On Rancher 2.0
- Serving a HTTPS enabled application on Kubernetes
- Setting Up SSL Certs on Kubernetes
- Running a Database on Kubernetes
- Serving HTTP Applications on Kubernetes with Ingress
- Fresh Dedicated Server to Single Node Kubernetes Cluster on CoreOS, Part 3: Setting up essential Kubernetes addons
- Fresh Dedicated Server to Single Node Kubernetes Cluster on CoreOS, Part 2: Getting Kubernetes Running
- Fresh Dedicated Server to Single Node Kubernetes cluster on CoreOS, Part 1
- Static Binaries for Haskell: A Convoluted Approach
- Graylog as a hslogger backend in Haskell
- Ansible Is Awesome
- Stop Using React
- Revisiting E2E Testing With Tape (on a new project)
- End To End Testing With Hspec (Almost)
- Adding A Merge Patch Content Type To Servant
- Installing Python On CoreOS with Ansible (to enable Ansible)
- Quick And Dirty Forward-Only DB Migrations
- An easy fix for the diversity "problem" in tech: A 4-step plan starting with fully anonymized interviews
- Research Idea: Maintaining A Write Ahead Log For Application Runtime State
- Case Study: Building A URL Bouncer
- Trying And Failing To Expand Servant Cookie-Based Auth With Roles
- Stop Worrying And Use Gitlab
- LetsEncrypt Systemd Recipes
- Useful Boilerplate For PureCSS
- Adding Cookie Based Auth To Servant
- JS component-centric libraries and my rationale for considering MithrilJS
- Working with PDFs on Arch linux
- Getting started with servant, Part 2
- Getting started with servant (Part 1)
- Three month (coding) bootcamps are not enough
- Spotify's 2017 web app redesign
- Switching from Mocha to Tape and testing E2E
- Testing DOM with Mocha, part 3
- Using dockerized Ghost with local SMTP
- Issues with Thunderbird and Dovecot
- more testing with jspm mocha and vuejs
- Unit testing with JSPM (SystemJS), mocha and vue.js
- Using jspm, systemjs, and vuejs together
- Default docker settings on arch
- Moving from catalyst/fglrx to amdgpu
- Moving to Hugo from Wordpress
- EZ Wordpress instance with docker compose
- systemd service that runs docker
- docker nginx firewall postgres random setup notes
2016 5
2015 17
- Arch Adventures: Installing Steam on Arch Linux
- Fixing emoji display in Firegraph
- A case for using Pure over Skeleton
- Building B2G (FirefoxOS) for a Nexus 5
- Rooting the Huawei (Softbank) 201HW/U9201L
- Absurdly useful tooling: entr + make (+ find)
- Arch Adventures: Hibernating to swap file
- Fun with Arch Linux
- Why is there a debate about ad-blockers at all?
- Using JSPM, ES6 React, and React-Router
- Who still fiddles with Samba in 2015?
- Emacs in daemon mode is awesome, when it properly loads your init config
- Firegraph v0.1.0
- WebAssembly, and the rise of transpilation
- Cache busting with SystemJS/Aurelia
- Bringing a “native” Instagram client to FirefoxOS
- VCFPorter v1.2 Release!
2014 19
- A pattern for organizing *DD tests in golang
- Small fix to the R2D2B2G extension
- Go’s default testing package is not enough
- Keep calm and watch Javascript churn
- Announcing VCFPorter v1.1
- VCFPorter, an open-source cross-platform Ember app for importing contacts (vCard) on FirefoxOS
- Handling UTF-8 Quoted Printable strings
- Meteor Patterns
- Using mozrepl and emacs to live-reload Firefox
- Working with EmberJS and EmberData
- Merry Go Form
- Developing a web application/API in Go? Use Gin
- Building Apps for FirefoxOS
- Device Storage API Quirk in FirefoxOS
- Automatically creating RethinkDB instances,databases, and tables for testing fixtures
- Getting pycrypto and NodeJS crypto package to play together
- Introducing Loltrove
- minor ursa + node-gyp issue
- Debugging issues with Piwik
2013 20
- Usering in a new age of inter-program communication, with JSON?
- Powerline, Konsole, and Tmux
- Pretty terminals for all
- Some small tips on WPA wifi setup on Linux
- Inserting users on a branch in RethinkDB
- Using my own product
- Breaking stuff in production
- Configr.io v0.1 Update
- Launch of Configr.io
- Building a small webapp on Iniz servers with nginx, nodejs, and postgresql
- First Foray into web chat
- Vaipr
- Voice Recognition
- TideSDK is awesome.
- Working with TideSDK
- Some minor updates made to Konvention
- Starting a new side project
- Konvention is a go?
- Progress on Konvention
- Konvention’s almost ready for an alpha