All posts by kirsch

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!

2026 Cap10k: The Next Generation

The last time I ran the Cap10k was in 2018 (2019 was cancelled).

After that, my bad knee got more messed up, I had surgery, and the doctor told me to quit running.

Eight years later, and not through my own initiative, I was again signed up for the race. Except this time my kids are running with me for the first time and – not only did I not train – I have literally not run in years.

With the excuses out of the way…

  • Yes, this was my worst time ever.
  • But I stopped to pee, which added 30 seconds or so.
  • I finished without walking and I am proud of myself. Except for the peeing, when I prefer to remain stationary.
  • Yes, everything hurts. Except for peeing, that’s alright.
  • The boys, who also did not exactly follow a running training program, did incredibly well. They are beasts.

Historical times:

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.

Jurassic Beyajad

This post will be mostly relevant to people I grew up with.

Jurassic Beyajad logo, from a screencap.

Back home, at the youth movement, we used to have a yearly movie festival. Me being me, would pour disporportionate amounts of effort into it and make sure the end result is as good as can be given the budgetary and technical limitations at the time.

One of my most famous films was “Jurassic Beyajad”, a parody of Jurassic Park. I thought all copies (well, the only copy) had been destroyed during the infamous “accidentally taped a telenovela over it” by Aby M. Recently a copy resurfaced. It appears I made one for my aunt Jave and she had Ari M. (coincidentally, Ari’s brother) digitize it along other home movies. And the quality is pretty good!

It was shot on our Sony Video 8 Handycam and edited on the floor of the playroom at my parents where a lot of the taping coincidentally also happend. I would hook up several VCRs, cameras, TVs, stereos, Discmans; and edit by carefully pressing Record / Play simultaneously on several devices.

Computer graphics/animations were done on Macromind Director and recorded straight from the screen of a PowerBook at the lowest brightness setting in a dark room, since recording CRT monitors would flicker due to the mismatch in refresh rates. I don’t remember who owned the PowerBook but I certainly didn’t have one at the time.

Watching this brought back a lot of memories. I shot and edited the damn thing so I remember the specific words and intonations, bloopers, etc. Lots of inside jokes in there, and many didn’t age well. But that’s art.

Here it is, enjoy!

And now let’s see if we can find a copy of “Yom Haatzmaut”, in which I have an alien aircraft blow up the club.