RSSAmplifier

Blog

rogs

Recent content in Home on rogs

rogs.meRSS feed ↗27 posts

Latest posts

Running Headscale on my own infra (and finally killing my WireGuard setup)

Hello everyone 👋 This one started in the dumbest possible way: I wanted to check on my 3D printer from outside my house. I have a Bambu printer running in LAN-only mode, and I use OctoApp to control it from my phone. Works great at home. Useless the moment I leave. The usual answer is OctoEverywhere, which is a lovely project, but it means my printer traffic goes through someone else’s…

How I got Claude certified (and how you can too)

I’m Claude Certified Architect - Foundations now. Look at me. A friend from work, Daniel, pinged me right after he started studying because he was confused and a little frustrated. He’d gone through the official docs, done a couple of practice exams, and felt like there was no connection between what he was studying and what the exam was actually testing. Fair. I felt the same way when…

Running Fallout London on Bazzite

I’m a huge Fallout fan, and Fallout London is one of the most impressive mods I’ve seen in years: a full DLC-sized expansion set in post-apocalyptic London, made by a community team. Running it on Bazzite (my gaming OS of choice) wasn’t completely straightforward, so here’s what actually worked for me. Consider this a note to future me, but hopefully it saves someone else…

How I configured OpenClaw's multi-model setup (so you don't have to)

A heads up before we start: over 95% of this blog post was written by my OpenClaw bot running GLM-5. I reviewed, edited, and approved everything, but credit where it’s due: Tepui ⛰️ (yes, I named my AI) did most of the heavy lifting. I need to vent, but in a good way this time. Last week I vented about Anthropic pushing away paying customers . After that third-party ban hit, I had to rip out…

I patched GSD, and why you should patch it too

GSD (Get Shit Done) is one of the best things that’s happened to my development workflow. If you haven’t heard of it, it’s a meta-prompting and context engineering system for Claude Code (and OpenCode ). It breaks your work into milestones and phases, spawns fresh subagents with clean contexts for each task, and solves the context rot problem that kills quality in long AI…

Anthropic is pushing away its paying customers

I need to vent. I want to start by saying this is my opinion and doesn’t reflect the views of my employers or anyone else. I’ve been paying $100/month for Claude Max because Claude is, without question, the best model for programming. I’ve built my entire AI workflow around it. I’ve written blog posts about it. I’ve recommended it to colleagues, friends, and strangers…

OpenCode as a server: AI agents that work while I sleep

My main machine is a beast. Ryzen 9 9950X3D, 64 GB of RAM, RX 9060 XT, three monitors, the works. It barely ever shuts off. So at some point I started thinking: why isn’t this thing working for me when I’m not sitting in front of it? The answer is now: it does. I’m running OpenCode as a persistent server on this machine, accessible from anywhere through my WireGuard VPN. I can…

How I deploy my projects to a single VPS with Gitea, NGINX and Docker

Hello everyone 👋 A few weeks ago, the team behind Jmail (a Gmail-styled interface for browsing the publicly released Epstein files) shared that they had racked up a $46,485 bill on Vercel The site had gone viral with ~450 million pageviews, and Vercel’s pricing structure turned that into a five-figure invoice. Vercel’s CEO ended up covering the bill personally, which is nice, but not…

Adding analytics to my blog

Hey everyone, quick heads up: I’m adding analytics to the blog. Before you reach for your adblocker, hear me out. I’m using Umami , which is open source, privacy-respecting, and doesn’t use cookies. It doesn’t track you across sites, doesn’t collect personal data, and is fully open source so you can verify that yourself. On top of that, I’m self-hosting it on my…

Use your Claude Max subscription as an API with CLIProxyAPI

⚠️ Deprecated (April 4, 2026): This post no longer works as described. Anthropic has blocked third-party harnesses from using Claude Max subscription limits effective April 4, 2026. CLIProxyAPI can no longer access Claude through your subscription without paying extra through Anthropic’s new “extra usage” pay-as-you-go option. I’ve moved my Emacs tools to Lazer’s…

Claude Code from the beach: My remote coding setup with mosh, tmux and ntfy

The view two blocks from my apartment I recently read this awesome post by Granda about running Claude Code from a phone, and I thought: I need this in my life . The idea is simple: kick off a Claude Code task, pocket the phone, go do something fun, and get a notification when Claude needs your help or finishes working. Async development from anywhere. But my setup is a bit different from his.…

Introducing: YAMS (Yet Another Media Server)!

Hello internet 😎 I’m here with a big announcement: I have created a bash script that installs my entire media server, fast and easy 🎉 TL;DR I’ve created YAMS. A full media server that allows you to download and categorize your shows/movies. Go to YAMS’s website here: http://yams.media or check it on Gitlab here: https://gitlab.com/rogs/yams . A little history When I first set…

Removing comments from my blog

I’m removing comments from my blog. I’ve been thinking about this for a while, but I noticed that comments weren’t being used and most posts were not that interesting. Don’t get me wrong, I really appreciate your awesome comments, but running commento takes a lot of resources and I don’t really see the full benefit of them. From now on, if you want to leave a comment…

Using MinIO to upload to a local S3 bucket in Django

So MinIO its an object storage that uses the same API as S3, which means that we can use the same S3 compatible libraries in Python, like Boto3 and django-storages . The setup Here’s the docker-compose configuration for my django app: version : "3" services : app : build : context : . volumes : - ./app:/app ports : - 8000 : 8000 depends_on : - minio command : > sh -c "python manage.py…

How to create a celery task that fills out fields using Django

Hi everyone! It’s been way too long, I know. In this oportunity, I wanted to talk about asynchronicity in Django, but first, lets set up the stage: Imagine you are working in a library and you have to develop an app that allows users to register new books using a barcode scanner. The system has to read the ISBN code and use an external resource to fill in the information (title, pages,…

How I got a residency appointment thanks to Python, Selenium and Telegram

Hello everyone As some of you might know, I’m a Venezuelan 🇻🇪 living in Montevideo, Uruguay 🇺🇾. I’ve been living here for almost a year, but because of the pandemic my residency appointments have slowed down to a crawl, and in the middle of the quarantine they added a new appointment system. Before, there were no appointments, you just had to get there early and wait for the…

How to search Google without using Google, the self-hosted way

Hello everyone! Last week I was talking with a friend and he was complaining about how Google knows everything about us, so I took the chance to recommend some degoogled alternatives: I sent him my blog, recommended DuckDuckGo, Nextcloud, Protonmail, etc. He really liked my suggestions and promised to try DuckDuckGo. A couple of days later he came to me a little defeated, because he didn’t…

De-Google my blog - How to blog in 2020 without Google

Hi everyone! Right now I have Google almost completely out of my life, but some of the top commentaries of my posts in /r/degoogle and /r/selfhosted were “Your blog still uses google for resources lol”, so I needed to change that. Shame. In my old blog, the features that used Google where: Disquss comments The Ghost theme Before we begin, I want to let you know that all these fixes…

How I manage multiple development environments in my Django workflow using Docker compose

Hi everyone! Last week I was searching how to manage multiple development environments with the same docker-compose configuration for my Django workflow. I needed to manage a development and a production environment, so this is what I did. Some descriptions on my data: I had around 20 env vars, but some of them where shared among environments. I wanted to do it with as little impact as possible.…

Secure your Django API from DDoS attacks with NGINX and fail2ban

Hello everyone! Last week our Django API, hosted on an Amazon EC2 server was attacked by a botnet farm, which took our services down for almost the entire weekend. I’m not going to lie, it was a very stressful situation, but at the same time we learned a lot about how to secure our server from future DDoS attacks. For our solution we are using the rate-limiting functionality from NGINX and…

My mom was always right | Rant on social media

My mom always hated social media. My bother and I always made fun of her because she was always late to all the news. Her main reason against social media was “why would I want everyone to know what I’m doing? And why should I care what they are doing?”. I didn’t understand at the time, but now I do. I remember when I was 13 years old social media started ramping up. I…

How to search in a huge table on Django admin

Hello everyone! We all know that the Django admin is a super cool tool for Django. You can check your models, and add/edit/delete records from the tables. If you are familiar with Django, I’m sure you already know about it. I was given a task: Our client wanted to search in a table by one field. It seems easy enough, right? Well, the tricky part is that the table has 523.803.417 records .…

De-Google my life - Part 5 of ¯ (ツ)_/¯: Backups

Hello everyone! Welcome to the fifth post of my blog series “De-Google my life”. If you haven’t read the other ones you definitely should! ( Part 1 , Part 2 , Part 3 , Part 4 ). At this point, our server is up and running and everything is working 100% fine, but we can’t always trust that. We need a way to securely backup everything in a place where we can restore quickly…

De-Google my life - Part 4 of ¯ (ツ)_/¯: Dokuwiki & Ghost

Hello everyone! Welcome to the fourth post of my blogseries “De-Google my life”. If you haven’t read the other ones you definitely should! ( Part 1 , Part 2 , Part 3 ). First of all, sorry for the long wait. I had a couple of IRL things to take care of (we will discuss those in further posts, I promise ( ͡° ͜ʖ ͡°)), but now I have plenty of time to work on more blog posts and…

De-Google my life - Part 3 of ¯ (ツ)_/¯: Nextcloud & Collabora

Hello everyone! Welcome to the third post of my blogseries “De-Google my life”. If you haven’t read the other ones you definitely should! ( Part 1 , Part 2 ). Today we are moving forward with one of the most important apps I’m running on my servers: Nextcloud . A big part of my Google usage was Google Drive (and all it’s derivate apps). With Nextcloud I was looking to…

De-Google my life - Part 2 of ¯ (ツ)_/¯: Servers and Emails

Hello everyone! Welcome to the second post of this blog series that aims to de-google my life as much as possible. If you haven’t read the first one, you should definitely check it out . On this delivery we’ll focus more on code and configurations so I promise you it won’t be as boring :) Servers configuration As I mentioned on the previous post, I’ll be using two servers…

De-Google my life - Part 1 of ¯ (ツ)_/¯: Why? How?

Hi everyone! I’m here with my first project of the year. It is almost done, but I think it is time to start documenting everything. One day I was hanging out with my girlfriend looking for trips to japan online and found myself bombarded by ads that were disturbingly specific. We realized at the moment that Google knows A LOT of us, and we were not happy about that. With my tech knowledge, I…