cri.dev
about
posts
contact
rss
Blog posts
273 blog posts
written over the years
2023
About 1:1s
Modern frontend apps with ES modules and import maps
🇮🇹 MiCA pizza e fichi
Provisioning a Raspberry Pi with Ansible (and an iPad)
My impractical RSS reader in Google Sheets
Node.js 20 is here
How to add Node.js & npm to jekyll in GitHub Codespaces
Self-hosting miniflux with docker and provisioning with Ansible
ChatGPT practical use cases and examples
Programming on an iPad
Minimal Ansible Playbook to provision a server
3D printing with an iPad, Raspberry Pi and OctoPrint
Update Node.js version on CloudFlare Pages
yubikey spare keys
malicious chrome extension
How I edit this site on an iPad
'Being agile' vs 'Doing Agile'
I cannot wait for the passwordless authentication future of the web
How to become a better Software Developer
OpenAI iOS Shortcut: Siri-like ChatGPT
Artificial "intelligence"
2022
Voracious RSS
Escaping the bullshit web
minimal-analytics, one year later
Did an ES module migration, and it was okay
Self-hosting nitter with docker-compose and nginx
Fix node command not found using nvm
Screen Wake Lock API
Elixir GenServer name registration
Web Workers + search index = decent blog search
Barcode Detection API
Kernel.===/3
WebTransport
Productive macOS tricks
2021
elixir alias __module__
cons
My Domain-Driven-Design study path
Domain events in domain driven design
Aggregates in domain driven design
Pattern matching with Enum.map in Elixir
elixir mix test --stale --listen-to-stdin
osint framework
cqrs es with commanded in elixir
Elixir Ecto guides and tutorials
redirect route in phoenix
What is a charlist in Elixir
Most useful mac keyboard shortcut
Vex, a validation library in Elixir
exploring the github cli
Spoonerism
QR code
Useful homebrew formulas for Mac
4 rules of simple design
Spotlight not working on Big Sur: how to fix Spotlight index on MacOS Big Sur
7 Visual Studio Code extensions I regularly use
duckduckgo short url
mallet operator
queueMicrotask
manjaro connect bluetooth keyboard at login screen
Experiment: Navigating the web with JavaScript disabled
Discontinuing comments
scroll-behaviour
How many visitors block ads and web analytics?
nmtui
How to solve manjaro different login, missing plasma desktop package
CAPTCHA
Self-hosting with nginx + docker-compose
Simple Server-sent events example in Node.js/JavaScript
Lazy loading images in 11ty/eleventy
How to test a function that works with time
Making Minimal Analytics
Beware of Monero mining attack through GitHub Actions and malicious Pull requests
Switching to CloudFlare Pages, from AWS S3 + CloudFlare DNS
🇮🇹 Cos’è e com’è stato sviluppato il Lean Validation Playbook
Simple Static site/blog search in 14 Lines of JavaScript
What apps I'm currently self-hosting
Manage multiple network connections in Manjaro (Wireguard VPN + Pi-hole)
Self-hosted Miniflux + Wallabag
Tracking RSS subscriptions with UTM parameters
Learn Elixir - A study path
Beware of new Ledger phishing emails from myledgerlive
Read mbox file with mutt or Thunderbird
Bitcoin is trademarked. Is it really?
3D-printed Bitcoin desk watcher
My reading stack with Miniflux/RSS & Pocket
My notes while learning Elixir
Let's learn some Elixir, again
5$/month Self Hosted VPN with WireGuard
Comments on cri.dev are BACK
Put that in the URL, please
A retrospective of 100k yearly pageviews
Getting started with Mastodon
About donations, free and paid content
Pair AirPods with Linux Ubuntu
From Mac to Linux
Experimenting with Webmention
2020 - A retrospective
2020
How to convert Pandas Series column values to lowercase
GreeMta Madrid Green Sustainability challenge
Notes on 'Blogging for Business'
Node.js 15 is here
What is technical debt?
Indie makers and the Sunk Cost Fallacy
Cleanup docker dangling images
Tracking HackerNews history in git
Test driving a HackerNews scraper with Node.js
How to make Polls with Plausible Analytics
Fix npm process killed during npm install
Communicating with Bangle.js Watch over BLE with Node.js
Top resources for Bangle.js Watch Development
How to fix xcode-select no developer tools found
Bangle watch as an accelerometer mouse
The High Privacy Cost of a “Free” Website
Show realtime visitors on your website with Plausible Analytics and CloudFlare Workers
Why privacy matters - Glenn Greenwald
Notes "Edward Snowden interviewed by Ron Paul"
Fast virtual scrolling with preact
Get things done for real
Notes on “I've got nothing to hide”
What is a retrospective?
Raspberry Pi as a local server for self hosting applications
'But I have nothing to hide.'
DIY IoT door monitor with ESP8266
Watermark images with montage (ImageMagick)
Simple Time-lapse with a Raspberry Pi
4 Most powerful Mini-PCs in 2020
Don't buy the AirPods Pro - Another Rattlegate story
Simple email trick to manage your newsletters
Techniques to improve SEO for a static website or blog
Made 13 Dollars with Brave and Basic Attention token
How to fix possible EventEmitter memory leak detected
Simple event tracking with Plausible Analytics
Notes on 'Marketing for Developers' - devmarketing.xyz
How to solve Docker 'docker-credential-desktop not installed or not available in PATH'
How to solve Docker 'Incompatible CPU detected'
Get distinct field names of sub documents in MongoDB
Aggregations with sub-documents in MongoDB
Most valuable developer linux notebooks in 2020
Install Homeassistant on Raspberry Pi
Notes on "Code BEAM V 2020"
Solve Verdaccio EINTEGRITY error
Upgrading MongoDB 3.6 to 4.2 with brew
Upgrade HTTP requests with X-Forwarded-Proto Header in HAProxy
Authenticated uplinks with verdaccio
Testing in Node.js by example using the SOLID principles
Clean up Mac OS: How I freed 35GB of space
Fixing 431 Request Header Fields Too Large in Node.js
Setting up a Verdaccio npm registry
Privacy-friendly alternatives to popular services and tools
Elixir trick: start an Observer window with mix
Validate your RSS feed
Minimal dark mode with CSS and JavaScript
Using µcompress to dramatically optimize static assets
Ad blocking with Raspberry Pi and Pi-hole
Optional chaining in Node.js 14 and JavaScript
Nullish coalescing in Node.js 14 and JavaScript
Road to Elixir: Monitor Crypto assets
Resuming Elixir by self-hosting plausible analytics
How to exclude Google Analytics in your Cypress E2E tests
devblog: yet another static site generator, seriously
Preferred Visual Studio Code theme in 2020
Boring software development
Full list of Chromium Puppeteer flags and command line switches
How to solve Puppeteer Chrome Error ERR_INVALID_ARGUMENT
How to connect puppeteer to a Proxy
How to solve: Please specify which branch you want to rebase against
Crawling a web site with browserless, puppeteer and Node.js
Ultimate web scraping with browserless, puppeteer and Node.js
Twitter OAuth Login with fastify and Node.js
How to create a Twitter application for user login with OAuth
Twitter OAuth Login by example with Node.js
Send a Telegram message with Darklang
First steps with Darklang
About Cloudflare's support for ccTLDs and gTLDs
Take a photo with raspistill on a Raspberry Pi
Simple .npmrc management
Twitter OAuth by example in Node.js
So Long, and Thanks for All the Veggies
Simplest Vanilla JavaScript static site blog search for Jekyll, Hugo, 11.ty
Minimal environments with dotenv and Node.js
Connect to MongoDB with monk in Node.js
Lazy loading images in 2020
Recover from failed lerna publish
The cleanest way to maintain connect / express middlewares in Node.js
Raspberry SSH over Wi-Fi not working
2019
the color fe1
better web scraping with node.js
my blogging stack in 2020
Run Cypress Integration Tests with GitHub Actions Workflow
AWS Lambda + S3 + ffmpeg = Timelapse
Simple telegram message with GitHub Actions
Preferred way of defining flags in bash
Deploy Eleventy site with Github Actions on AWS S3
Simple ad and trackers blocking with DNS
Build for a slow connection
Fun with single letter commands
Upgrade MongoDB 3 to 4 on Ubuntu
Get last non-empty cell value in a spreadsheet
How to fix Ansible error about "undefined variable"
2018
Notes about Crash course in Machine Learning
Publishing org scoped npm packages with travis
my current blogging stack
Start an npm script with pm2
Make Anaconda executables available in your PATH (fish shell)
clean android device storage
pm2 deploy fast
Fix Python 2.7 issue on OSX: bad interpreter
Notes about Blockchain for Smart Communities
Easy rate limit with Promise.all and p-limit
Fix issue with Pandoc, MacOS Sierra and pdflatex / xelatex
Offloading my Inbox items to /discover
setup nginx as a reverse proxy with basic auth for an upstream
A story about npm publish / unpublish
2017
Mapping historic market data
Building the new version of pomodoro.cc in the open
Keeping an eye on your Crypto-currency trades with Übersicht
Loop jekyll data directory files
My dotfiles
Prevent accidental quit of iTerm
how i deploy my site
how i build my site
npm package kata
Trying out Redash
Chaining and indenting after the return statement
How to read Hacker Newsletter
Use Simple-Jekyll-Search on your blog in these easy steps
2016
Discourse first installation steps
I was at fosdem 2016 and it was awesome!
Forking is a commitment
2015
Using a daily activity log
Elixir Plug order matters!
Jekyll new post script
Introduction to AngularJS
What Elixir and Angular have in common
Favor Viewmodel over $scope
Always $digest after you expect
How to invalidate AppCache
The simplest way to set vagrant default directory
Backup mongodb from a docker container to host
Conforming to protocols in JavaScript
Write a damn README
Functional JavaScript: Write your own negate/not function
About business value and confidence in legacy projects
Angular ui-router: define multiple states with same base url
Speed up your docker container by caching node_modules
How to make a pull request on GitHub from the command line
How to use morgan with node-simple-router
Start your coding kata the right way
Write your Protractor tests in Cucumber
How to zsh and hub auto completition
Debugging acceptance tests with Angular and Cucumber
2014
Keep Docker container running
A list of Angular style guides
Angular: Filter already selected items from ng-options
PhoneGap issue, 'device ready' not fired after 5 seconds
How to configure Drone behind an nginx proxy on a subdomain
How to setup Drone CI on a DigitalOcean droplet
A practical workflow for resizing images with ImageMagick
DRY dependency injection in Angular with gulp-ng-annotate
A closer look at Angular's dependency injection
Updating dynamic fields and nested arrays in MongoDB
node and sudo: now kiss
Simplest Apache configuration for hosting multiple sites
Create a new Github repository from the command line
About vanity metrics and social media bullshit
2013
Simple templating with regular expressions
Keep SSH connection alive
How to: Gzip compression of CSS and JS files on S3 with s3cmd
How to lazy load Disqus comments
Auto mount partition on Linux the easy way
Berlin - April 2013
Replace links in files with Regular Expressions
2012
How to index a NTFS partition on Mac