God Killer

3 min read

Two undocumented immigrants take the simple job of digging a hole in the desert, but when their employers turn out to be psychopaths, staying alive will become the most complex job of their lives.

Polar Rescue

2 min read

A young boy, Lele, goes missing in the Changbai mountains after an argument with this father. Approaching the vital 48 hour mark and with no sign of Lele, his father takes it upon himself to brave an upcoming avalanche to save his son.

Knuckles

3 min read

The new live-action series will follow Knuckles (Idris Elba) on a hilarious and action-packed journey of self-discovery as he agrees to train Wade (Adam Pally) as his protégé and teach him the ways of the Echidna warrior.

Toots du Jour (Feb 16)

<1 min read

Why I moved my blog to RIFE2 after 23 years?

3 min read

Rife2In April 2023, I decided to move this blog to RIFE2, a full-stack framework. It was previously built using my own custom JSP tag library, which ran non-stop for 23 years. At one point in time, it was handling close to 5 connections per second, or around 12 million a month, on a single Apache/Tomcat instance.

Over the years, I tried many frameworks, and the features never made up for the bloat. I've also never been a big fan of the MVC approach, and I wanted it to be very lean. RIFE2 no-dependencies approach immediately appealed to me, but I wasn't sure the features passed muster.

I figured the best approach was to grill the author, Geert, on his Discord channel. We have known of each other for many years, but we never actually connected. Being the gracious guy that he is, he answered all of my relentless questions, and even suggested a few additions I could make to the project.

Needless to say, I was hooked, line, and sinker.

This blog is a lot more complicated than it looks; many behind-the-scenes features have been added over the years.

Blog Editor

It supports numerous APIs, like MetaWeblog, WebSub, and Pushover… It can automatically cross-post to social networks like Mastodon, BlueSky, X, Facebook, and LinkedIn

With one click, I can easily share a bookmark across various social networks of my choosing, pull and post my Flickr photos, or grab metadata from YouTube.

Ping Interface

There are webhooks from GitHub, IFTTT, and trakt… For years, it also managed my popular Linkblog… and so much more.

This was the first time in over 20 years I had the opportunity to remove deprecated APIs and seriously clean everything up. My OCD kicked in, and I really went to town. Suddenly, this mammoth of a codebase started to become lean and mean, as I had envisioned. In the process, as Geert had recommended, I created the RIFE2 Template Renderers library to meet some of my more generic needs.

Source Tree

Now, I'm not going to lie, I had to battle RIFE2 more than a few times. Geert was invaluable at helping with my very specific issues. And within a short amount of time, things just started to just flow, almost zen-like. In retrospect, most of my issues had more to do with my resistance and hardheadedness. I wanted to do things the way I was used to. But once the pieces fell into place, it moved very quickly.

It didn't take long to go live, and I was off to the races.

There are a few things I learned along the way…

  • I had been using a lot of Kotlin for years and very little Java, yet I decided to rework the blog entirely in Java as it was originally written. I enjoyed it a lot, just like reconnecting with a friend I hadn't talked to in years. So familiar. I have a whole new appreciation for Java.
  • I didn't know as much as I thought about full-stack frameworks. In my long career, I've mostly been the guy who came in to fix things up, at least on the Java side.
  • Some RIFE2 concepts, like templates, continuation, etc., are hard to fully grasp by reading the documentation; you have to get your hands dirty to really appreciate them. We're still working on improving the documentation, but in some cases, you just have to try it to really get it.

It's been almost a year, and I couldn't be any happier. Everything works very smoothly, and is low-maintenance. I've even added quite a few new backend features.

If you're going to start a new project, I would highly recommend giving RIFE2 a try. You won't regret it. I sure haven't.

Toots du Jour (Feb 15)

<1 min read