Category Archives: Jogo Bonito

Soccer!

About Polla 2026

It’s hard to believe that 20 years have passed since I wrote and ran the first polla. This post goes into the technical details of the application.

The first polla was a monolithic PHP application written from scratch. Instead of using a database and in order to keep things simple, it stored all data in text files (bad idea). I didn’t even use source code control (bad idea). Regardless, it worked well and was a big success.

For each subsequent polla, I took the last polla’s source code as a starting point and make large improvements. Using a database, responsive design (the first polla predates iPhone!), invitations, filters, tournament winners, and lots of small tweaks all over the place.

But one of the reason these things even exist is that it allows me to learn to use things that I don’t get to play with in my day job (I’m a software engineer, but I don’t work on web-related things). Making another PHP monolithic application in 2026 would not teach me anything as was no fun. Thus, I took on the giant project of rewriting Polla 2026 from scratch during my scant free time using modern technologies and best practices. Insanity? Yes.

This is a high-level description of the new polla, which uses individual services orchestrated using Docker Compose:

  • Caddy as a reverse proxy.
  • The main backend application is written in Python:
  • Authentik for authentication, which turned out to be what I had the most trouble with and what I like the least about the polla. I will likely replace it next time.
  • Redis which is needed by Authentik.
  • Database is now Postgres (it used to be MySQL).
  • A very simple microservice running a shell script that pushes database backups periodically into S3 storage.
  • Adminer in case I need to get to the database easily.
  • For local development mailpit let’s me conveniently test email.

I am also relying on a few external services, many of them I just learned about and all of them very cool:

  • Mailing lists are handled by Brevo.
  • Cloudinary stores profile pictures and the hero images of News posts.
  • Cloudflare R2 is where the database backups go. I wanted them completely outside of where the application lives for obvious reasons .
  • Goatcounter for analytics. No Google!
  • For hosting, I have my very own VM in Hetzner.
  • The code is all stored in – where else – GitHub. No, it’s not Open Source.

This was a huge undertaking that required me to learn a bunch of neat things. It goes without saying that there is no way in hell I could have pulled this off without the help of GitHub Copilot and its excellent integration with VSCode. It’s a massive accelerator! I was able to rewrite the full system using things I never used before, and add many improvements (not finished yet) that were not part of the previous pollas nor of my original plan. The speed at which changes can be made makes it almost addictive. Visually, it looks better than ever. I am super pleased how things are turning out.

I hope all the effort is worth it, I don’t run into major bugs, and lots of my friends join in the fun.

Polla 2026

FIFA World Cup 2026 is here, and you know what that means: a new Polla! Following the massive success of Polla Qatari, this new polla is a brand new application hopefully will be bigger than ever.

For those keeping track: The first polla was 20 (!) years ago. Madness. And many of you have played in all of them. Thank you! Can’t wait for this one.

  1. FIFA World Cup 2006 Polla
  2. La Polla América
  3. Europolla 2008
  4. Polla Brasileira
  5. Ruskipolla
  6. Polla Qatari
  7. Polla 2026

Join now!

As seen on FIFA.com

I happened to be in Mexico City the weekend of the re-opening of the Azteca Stadium prior to the World Cup 2026, for the México vs Portugal friendly. I happened to be sitting very close to Gianni Infantino. So of course I got close to him to snap a photo.

A week later, my buddy Chore sent me this screenshot:

While I am no longer featured in FIFA’s front page, the note persists. Unfortunately they cut off the top of my head.

This is the photo we snapped from a slightly different angle.

FIFA Club World Cup

My team Monterrey qualified for the FIFA Club World Cup happening as we speak in the US, and it’s the first one with the 32 team format. It all lined up so that we could watch three matches all at the Rose Bowl stadium in Pasadena, CA with some of the world’s top clubs.

Four Kirsch boys made it: Moi, Ilán, Ari, and myself. Here’s proof:

PSG vs Botafogo
Made the big screen at the stadium

Yes, we also did a bunch of Los Angeles things. But those are not for this post.

Argentina vs Ecuador: Priceless

As promised in my last post, I will dedicate a full post to the Argentina vs Ecuador match on July 3, 2024.

In the “I wish I was my own dad” category and thanks to a massive tip by Diego S. we were able to get our kids signed up to walk out onto the field with the players. It’s hard to overstate what a wild thing this is for two kids that are absolutely obsessed with soccer.

When we signed them up, we didn’t know yet who’d be playing on this Quarterfinals match. But the odds were pretty good that it’d be Argentina and maaaaaaybe Mexico. Mexico disappointed by not even making it out of the group stage. But World Champions and eventual Copa América winners did not. OMG WHAT A DREAM COME TRUE THIS IS ARGENTINA WITH LIONEL MESSI WE’RE TALKING ABOUT.

We had to be at the stadium 4 hours before kickoff which is… a lot. The kids were whisked away as soon as we walked in to get dressed, rehearse, play soccer in the locker rooms, play with Panini albums, meet CONMEBOL president Alejandro Domínguez, and hold the hands of their idols.

Me in a completely empty NRG Stadium ahead of the match. A nice lady did sell me a beer before opening time.

The people in charge were fairly adamant that we, the parents, had to stay in our seats tucked away behind the goal during the whole ordeal. But evidently I had no choice but to evade the security (I swear it was tighter than during the final) in order to temporarily sneak out of my seat and into the section right in front of the benches where tickets are a thousand bucks, just so I can get a good look at my handsome boys and a few photos/videos that aren’t worthless. I had to beg an Argentinian whose seat I was sharing not to rat me out. Mission accomplished.

Ari walked out with Atlético de Madrid defender Nahuel Molina, while Ilán walked out with Liverpool’s #10 Alexis Mac Allister.

This is the players walking out with the player mascots and standing still for the national anthems. My kids were randomly and luckily chosen to go with Argentina.
After the national anthems, the flags and player mascots walk back to the locker room. Ari was left behind so decided to show off with a full speed sprint perfectly synchronized to the background music.

A few days later, actual professional photographs taking by pros were emailed to us. Below the best of the bunch. Look for the little jewfros.

Crazy moment.
Messi, Dibu, Romero, Molina, Lisandro Martínez, Lautaro, Tagliafico, Mac Alister, Nicolás González, Enzo Fernández, De Paul

I told my kids this is their birthday present. It’s going to be a tough one to top.

The MKX® Copa América Tour

Our original Copa América plan was overly ambitious:

  • Day 1: Costa Rica vs Paraguay in Austin
  • Day 2: Hurricane Harbour in Houston
  • Day 3: Argentina vs Ecuador in Houston
  • Day 4: Canada vs Jamaica in Dallas
  • Day 5: Six Flags in Dallas
  • Day 6: Austin FC vs NYFC in Austin

That’s a lot. Finally we skipped the Austin FC match which was lucky since it was delayed over an hour due to inclement weather.

I will skip photos of the Argentina vs Ecuador quarterfinal match. Those deserve its own post.

Austin FC Starting XI

My boys, who you may have heard are gigantic Austin FC fans, were invited to be in the Austin FC Starting XI for the last match of the season against none other than defending champion LAFC.

For those who don’t know, this means they come out to the field before the game with the players for the national anthem. Needless to say they could barely contain their excitement – just like their parents!

Ilán walked out with LAFC captain Ilie Sánchez. Ari walked out with Canadian National Team’s goalkeeper Maxime Crépeau.

We’re so thankful to the person that made this possible, we owe you some quality BBQ!

That’s none other than Italian international Giorgio Chiellini on the left of the photo.

Real Madrid vs Manchester United

We took a quick one day trip to watch the ultra-overpriced friendly match between Real Madrid and Manchester United in Houston, which happened last night. This is what a good father must do with two soccer-crazed boys.

Fortunately the game was entertaining and the two goals were extremely high quality. Seriously, look at that bicycle kick.

At NRG stadium.
Nathán, ever present in all happy soccer occasions.

This is the first time I see Manchester United play live. But it’s the second one for Real Madrid: as we all remember, I watched them get their butts royally kicked back in 1990 by a much superior squad.