Blog posts

300 blog posts written over the years


2024-07-11 PETG I love you, but you're bringing me down 2024-07-07 Google domains / Squarespace transfer (using Porkbun and Cloudflare) 2024-02-13 Google Sheets got fixed on iPad 2024-01-26 Today is my Lucky Backup Day


2023-11-04 Google Sheets on iPad? More like 'Google Shiits' 💩 2023-10-19 htmx and Alpine.js are actually pretty awesome 2023-10-17 ZenGPT: a simple ChapGPT alternative frontend 2023-10-16 Using pure functions as views (with htmx and alpine.js) 2023-10-15 iPad can now control the audio when connected to an external monitor 2023-10-08 Improving my tags using OpenAI's Chat completions API 2023-10-06 A stupid web component 2023-10-06 3d printed stuff over the years 2023-10-04 Apple watch personal use cases 2023-09-27 My iPad/iOS 17 wish list for 2024 2023-09-19 Protonmail iOS team seems super reactive to user feedback 2023-09-14 Southworking 🇮🇹 2023-09-03 Wanna learn something? Recreate it 2023-08-30 Scrum, the hated one 2023-08-25 Learning about Web Components 2023-07-24 Unblock single domain in AdGuard Home 2023-07-08 Airtag battery still low after replacing with new CR 2032 batteries 2023-07-03 Opinions on working fully remotely 2023-06-27 Favorite music while programming 2023-06-15 WebAuthn and Secure Payments Confirmation (SPC) 2023-06-13 Ti ricordi di Jumpy? 🇮🇹 2023-06-09 About 1:1s 2023-05-03 Modern frontend apps with ES modules and import maps 2023-04-21 MiCA pizza e fichi 🇮🇹 2023-04-20 Provisioning a Raspberry Pi with Ansible (and an iPad) 2023-04-20 My impractical RSS reader in Google Sheets 2023-04-19 Node.js 20 is here 2023-03-25 How to add Node.js & npm to jekyll in GitHub Codespaces 2023-03-25 Self-hosting miniflux with docker and provisioning with Ansible 2023-03-25 ChatGPT practical use cases and examples 2023-03-22 Programming on an iPad 2023-03-21 Minimal Ansible Playbook to provision a server 2023-03-17 3D printing with an iPad, Raspberry Pi and OctoPrint 2023-03-12 Update Node.js version on CloudFlare Pages 2023-02-22 yubikey spare keys 2023-02-22 malicious chrome extension 2023-02-21 How I edit this site on an iPad 2023-02-21 'Being agile' vs 'Doing Agile' 2023-02-10 I cannot wait for the passwordless authentication future of the web 2023-02-02 How to become a better Software Developer 2023-01-22 OpenAI iOS Shortcut: Siri-like ChatGPT 2023-01-13 Artificial "intelligence"


2022-12-27 Voracious RSS 2022-10-22 Escaping the bullshit web 2022-07-18 minimal-analytics, one year later 2022-07-14 Did an ES module migration, and it was okay 2022-07-12 Self-hosting nitter with docker-compose and nginx 2022-06-05 Fix node command not found using nvm 2022-04-23 Screen Wake Lock API 2022-04-08 Elixir GenServer name registration 2022-04-07 Web Workers + search index = decent blog search 2022-03-10 Barcode Detection API 2022-03-04 Kernel.===/3 2022-02-20 WebTransport 2022-01-18 Productive macOS tricks


2021-12-31 elixir alias __module__ 2021-12-30 cons 2021-12-27 My Domain-Driven-Design study path 2021-12-27 Domain events in domain driven design 2021-12-27 Aggregates in domain driven design 2021-12-04 Pattern matching with in Elixir 2021-12-02 elixir mix test --stale --listen-to-stdin 2021-11-24 osint framework 2021-11-24 cqrs es with commanded in elixir 2021-11-16 Elixir Ecto guides and tutorials 2021-11-14 redirect route in phoenix 2021-10-30 What is a charlist in Elixir 2021-10-30 Most useful mac keyboard shortcut 2021-10-28 Vex, a validation library in Elixir 2021-10-27 exploring the github cli 2021-09-29 Spoonerism 2021-08-28 QR code 2021-08-01 Useful homebrew formulas for Mac 2021-08-01 4 rules of simple design 2021-07-17 How to execute a remote script with Ansible 2021-07-14 Spotlight not working on Big Sur: how to fix Spotlight index on MacOS Big Sur 2021-07-14 7 Visual Studio Code extensions I regularly use 2021-07-04 duckduckgo short url 2021-07-03 mallet operator 2021-06-07 queueMicrotask 2021-06-06 manjaro connect bluetooth keyboard at login screen 2021-06-03 Experiment: Navigating the web with JavaScript disabled 2021-06-02 Discontinuing comments 2021-06-01 scroll-behaviour 2021-05-23 How many visitors block ads and web analytics? 2021-05-22 nmtui 2021-05-22 How to solve manjaro different login, missing plasma desktop package 2021-05-17 CAPTCHA 2021-05-14 Self-hosting with nginx + docker-compose 2021-05-11 Simple Server-sent events example in Node.js/JavaScript 2021-05-11 Lazy loading images in 11ty/eleventy 2021-05-06 How to test a function that works with time 2021-04-28 Making Minimal Analytics 2021-04-15 Beware of Monero mining attack through GitHub Actions and malicious Pull requests 2021-04-13 Switching to CloudFlare Pages, from AWS S3 + CloudFlare DNS 2021-04-06 Cos’è e com’è stato sviluppato il Lean Validation Playbook 🇮🇹 2021-04-06 Simple Static site/blog search in 14 Lines of JavaScript 2021-04-05 What apps I'm currently self-hosting 2021-03-24 Manage multiple network connections in Manjaro (Wireguard VPN + Pi-hole) 2021-03-23 Self-hosted Miniflux + Wallabag 2021-03-10 Tracking RSS subscriptions with UTM parameters 2021-03-03 Learn Elixir - A study path 2021-02-19 Beware of new Ledger phishing emails from myledgerlive 2021-02-18 Read mbox file with mutt or Thunderbird 2021-02-17 Bitcoin is trademarked. Is it really? 2021-02-11 3D-printed Bitcoin desk watcher 2021-02-09 My reading stack with Miniflux/RSS & Pocket 2021-02-04 My notes while learning Elixir 2021-02-01 Let's learn some Elixir, again 2021-02-01 5$/month Self Hosted VPN with WireGuard 2021-01-30 Comments on are BACK 2021-01-28 Put that in the URL, please 2021-01-22 A retrospective of 100k yearly pageviews 2021-01-19 Getting started with Mastodon 2021-01-05 About donations, free and paid content 2021-01-04 Pair AirPods with Linux Ubuntu 2021-01-03 From Mac to Linux 2021-01-03 Experimenting with Webmention 2021-01-02 2020 - A retrospective


2020-12-03 How to convert Pandas Series column values to lowercase 2020-12-02 GreeMta Madrid Green Sustainability challenge 2020-11-28 Notes on 'Blogging for Business' 2020-11-27 Node.js 15 is here 2020-11-25 What is technical debt? 2020-11-18 Indie makers and the Sunk Cost Fallacy 2020-11-18 Cleanup docker dangling images 2020-11-06 Tracking HackerNews history in git 2020-11-06 Test driving a HackerNews scraper with Node.js 2020-11-05 How to make Polls with Plausible Analytics 2020-11-04 Fix npm process killed during npm install 2020-11-03 Communicating with Bangle.js Watch over BLE with Node.js 2020-11-02 Top resources for Bangle.js Watch Development 2020-11-02 How to fix xcode-select no developer tools found 2020-11-02 Bangle watch as an accelerometer mouse 2020-10-21 The High Privacy Cost of a “Free” Website 2020-10-20 Show realtime visitors on your website with Plausible Analytics and CloudFlare Workers 2020-10-17 Why privacy matters - Glenn Greenwald 2020-10-17 Notes "Edward Snowden interviewed by Ron Paul" 2020-10-12 Fast virtual scrolling with preact 2020-10-11 Get things done for real 2020-10-02 Notes on “I've got nothing to hide” 2020-09-24 What is a retrospective? 2020-09-12 Raspberry Pi as a local server for self hosting applications 2020-09-08 'But I have nothing to hide.' 2020-09-03 DIY IoT door monitor with ESP8266 2020-09-01 Watermark images with montage (ImageMagick) 2020-09-01 Simple Time-lapse with a Raspberry Pi 2020-07-28 4 Most powerful Mini-PCs in 2020 2020-07-23 Don't buy the AirPods Pro - Another Rattlegate story 2020-07-21 Simple email trick to manage your newsletters 2020-07-18 Techniques to improve SEO for a static website or blog 2020-07-17 Made 13 Dollars with Brave and Basic Attention token 2020-07-16 How to fix possible EventEmitter memory leak detected 2020-07-14 Simple event tracking with Plausible Analytics 2020-07-08 Notes on 'Marketing for Developers' - 2020-07-06 How to solve Docker 'docker-credential-desktop not installed or not available in PATH' 2020-07-06 How to solve Docker 'Incompatible CPU detected' 2020-07-06 Get distinct field names of sub documents in MongoDB 2020-07-06 Aggregations with sub-documents in MongoDB 2020-06-20 Most valuable developer linux notebooks in 2020 2020-06-07 Install Homeassistant on Raspberry Pi 2020-05-28 Notes on "Code BEAM V 2020" 2020-05-27 Solve Verdaccio EINTEGRITY error 2020-05-26 Upgrading MongoDB 3.6 to 4.2 with brew 2020-05-26 Upgrade HTTP requests with X-Forwarded-Proto Header in HAProxy 2020-05-26 Authenticated uplinks with verdaccio 2020-05-20 Testing in Node.js by example using the SOLID principles 2020-05-20 Clean up Mac OS: How I freed 35GB of space 2020-05-18 Fixing 431 Request Header Fields Too Large in Node.js 2020-05-15 Setting up a Verdaccio npm registry 2020-05-12 Privacy-friendly alternatives to popular services and tools 2020-05-10 Elixir trick: start an Observer window with mix 2020-05-07 Validate your RSS feed 2020-05-07 Minimal dark mode with CSS and JavaScript 2020-05-03 Using µcompress to dramatically optimize static assets 2020-05-03 Ad blocking with Raspberry Pi and Pi-hole 2020-05-01 Optional chaining in Node.js 14 and JavaScript 2020-05-01 Nullish coalescing in Node.js 14 and JavaScript 2020-04-28 Road to Elixir: Monitor Crypto assets 2020-04-24 Resuming Elixir by self-hosting plausible analytics 2020-04-23 How to exclude Google Analytics in your Cypress E2E tests 2020-04-19 devblog: yet another static site generator, seriously 2020-04-07 Preferred Visual Studio Code theme in 2020 2020-04-05 Boring software development 2020-04-04 Full list of Chromium Puppeteer flags and command line switches 2020-03-30 How to solve Puppeteer Chrome Error ERR_INVALID_ARGUMENT 2020-03-30 How to connect puppeteer to a Proxy 2020-03-27 How to solve: Please specify which branch you want to rebase against 2020-03-09 Crawling a web site with browserless, puppeteer and Node.js 2020-03-08 Ultimate web scraping with browserless, puppeteer and Node.js 2020-03-07 Twitter OAuth Login with fastify and Node.js 2020-03-07 How to create a Twitter application for user login with OAuth 2020-03-05 Twitter OAuth Login by example with Node.js 2020-03-04 Send a Telegram message with Darklang 2020-03-02 First steps with Darklang 2020-03-01 About Cloudflare's support for ccTLDs and gTLDs 2020-02-29 Take a photo with raspistill on a Raspberry Pi 2020-02-25 Simple .npmrc management 2020-02-15 Twitter OAuth by example in Node.js 2020-02-13 So Long, and Thanks for All the Veggies 2020-02-08 Simplest Vanilla JavaScript static site blog search for Jekyll, Hugo, 11.ty 2020-02-08 Minimal environments with dotenv and Node.js 2020-02-08 Connect to MongoDB with monk in Node.js 2020-02-05 Lazy loading images in 2020 2020-01-29 Recover from failed lerna publish 2020-01-28 The cleanest way to maintain connect / express middlewares in Node.js 2020-01-03 Raspberry SSH over Wi-Fi not working


2019-12-12 the color fe1 2019-12-11 better web scraping with node.js 2019-12-08 completed hacktoberfest 2019 2019-10-27 my blogging stack in 2020 2019-08-31 Run Cypress Integration Tests with GitHub Actions Workflow 2019-08-30 AWS Lambda + S3 + ffmpeg = Timelapse 2019-08-29 Simple telegram message with GitHub Actions 2019-08-29 Preferred way of defining flags in bash 2019-08-29 Deploy Eleventy site with Github Actions on AWS S3 2019-08-26 Simple ad and trackers blocking with DNS 2019-08-25 Build for a slow connection 2019-07-19 Fun with single letter commands 2019-07-16 Upgrade MongoDB 3 to 4 on Ubuntu 2019-04-07 Get last non-empty cell value in a spreadsheet 2019-04-04 How to fix Ansible error about "undefined variable"


2018-12-09 Notes about Crash course in Machine Learning 2018-11-28 Publishing org scoped npm packages with travis 2018-10-31 my current blogging stack 2018-10-18 Start an npm script with pm2 2018-10-06 Make Anaconda executables available in your PATH (fish shell) 2018-07-11 clean android device storage 2018-07-03 pm2 deploy fast 2018-04-18 Fix Python 2.7 issue on OSX: bad interpreter 2018-04-12 Notes about Blockchain for Smart Communities 2018-04-12 Easy rate limit with Promise.all and p-limit 2018-04-09 Fix issue with Pandoc, MacOS Sierra and pdflatex / xelatex 2018-04-05 Offloading my Inbox items to /discover 2018-02-07 setup nginx as a reverse proxy with basic auth for an upstream 2018-01-31 A story about npm publish / unpublish


2017-12-11 Mapping historic market data 2017-10-21 Building the new version of in the open 2017-10-13 Keeping an eye on your Crypto-currency trades with Übersicht 2017-04-15 Loop jekyll data directory files 2017-03-30 My dotfiles 2017-03-27 Prevent accidental quit of iTerm 2017-03-24 how i deploy my site 2017-03-23 how i build my site 2017-03-22 npm package kata 2017-02-24 Trying out Redash 2017-02-22 Chaining and indenting after the return statement 2017-02-10 How to read Hacker Newsletter 2017-02-05 Use Simple-Jekyll-Search on your blog in these easy steps


2016-05-28 Discourse first installation steps 2016-02-03 I was at fosdem 2016 and it was awesome! 2016-01-07 Forking is a commitment


2015-11-23 Using a daily activity log 2015-10-25 Elixir Plug order matters! 2015-10-24 Jekyll new post script 2015-10-20 Introduction to AngularJS 2015-10-19 What Elixir and Angular have in common 2015-10-18 Favor Viewmodel over $scope 2015-10-15 Always $digest after you expect 2015-08-12 How to invalidate AppCache 2015-07-07 The simplest way to set vagrant default directory 2015-07-05 Backup mongodb from a docker container to host 2015-07-04 Conforming to protocols in JavaScript 2015-05-09 Write a damn README 2015-05-09 Functional JavaScript: Write your own negate/not function 2015-04-27 About business value and confidence in legacy projects 2015-04-23 Angular ui-router: define multiple states with same base url 2015-03-06 Speed up your docker container by caching node_modules 2015-03-04 How to make a pull request on GitHub from the command line 2015-02-23 How to use morgan with node-simple-router 2015-02-21 Start your coding kata the right way 2015-01-17 Write your Protractor tests in Cucumber 2015-01-16 How to zsh and hub auto completition 2015-01-09 Debugging acceptance tests with Angular and Cucumber


2014-12-23 Keep Docker container running 2014-10-27 A list of Angular style guides 2014-08-22 Angular: Filter already selected items from ng-options 2014-08-20 PhoneGap issue, 'device ready' not fired after 5 seconds 2014-08-03 How to configure Drone behind an nginx proxy on a subdomain 2014-08-02 How to setup Drone CI on a DigitalOcean droplet 2014-07-05 A practical workflow for resizing images with ImageMagick 2014-06-30 DRY dependency injection in Angular with gulp-ng-annotate 2014-05-26 A closer look at Angular's dependency injection 2014-03-04 Updating dynamic fields and nested arrays in MongoDB 2014-01-19 node and sudo: now kiss 2014-01-18 Simplest Apache configuration for hosting multiple sites 2014-01-05 Create a new Github repository from the command line 2014-01-04 About vanity metrics and social media bullshit


2013-10-12 Simple templating with regular expressions 2013-09-17 Keep SSH connection alive 2013-07-16 How to: Gzip compression of CSS and JS files on S3 with s3cmd 2013-06-06 How to lazy load Disqus comments 2013-05-08 Auto mount partition on Linux the easy way 2013-04-20 Berlin - April 2013 2013-03-29 Replace links in files with Regular Expressions


2012-12-23 How to index a NTFS partition on Mac

Here, have a slice of pizza 🍕