Frankenstein

2 min read

Mary Shelley’s classic tale of Victor Frankenstein, a brilliant but egotistical scientist who brings a creature to life in a monstrous experiment that ultimately leads to the undoing of both the creator and his tragic creation.

Trap House

2 min read

Trap House is centered on a team of elite DEA agents whose rebellious teenage children use their parents’ own tactics—surveillance, infiltration, and non-lethal weapons—to rob a ruthless drug cartel.

Exit Protocol

2 min read

An assassin whose specialty is killing other assassins trying to get out of the business decides to try to get out himself and must then team up with his former mark to escape the hired killers now gunning for them both.

Gladiator Underground

2 min read

Max and Wu, two long time rivals, are competing in the world’s most dangerous underground fighting tournament, where powerful crimelords can gamble and influence who they fight, the terrain they fight on and what weapons will be used. In this high-stakes bloodsport where one wrong move can mean certain death, they must decide whether to play by the rules or to cast their honor aside and team up against the dark syndicate running the tournament and bring the entire system down.

Toots du Jour (Sep 28)

<1 min read

HTTP StatusCode & JSP Tag Library 2.0.0

<1 min read

I've released version 2.0.0 of my HTTP Status Code & JSP Tag Library. A simple library to search for and display information about HTTP status codes.

Reasons.getReasonPhrase(404); // Not Found
Reasons.getReasonPhrase(666, "Unknown Reason"); // Unknown Reason

var reasons = Reasons.getReasonClass(StatusCodeClass.CLIENT_ERROR); // 4xx
reasons.forEach((code, reason) -> System.out.println(code + ": " + reason));

StatusCode.isServerError(500) // true
StatusCode.isError(301) // false

The major new features are:

  • Getting the reason phrase is now more generic:
    • Reasons.getReasonPhrase(404)
    • Reasons.getReasonPhrase(666, "Unknown Reason")
  • New StatusCode class:
    • StatusCode.isInformational(100)
    • StatusCode.isSuccess(200)
    • StatusCode.isRedirection(300)
    • StatusCode.isClientError(400)
    • StatusCode.isServerError(500)
    • StatusCode.isError(500)
  • New ReasonsClass method:
    • Reasons.getReasonClass(StatusCodeClass.CLIENT_ERROR)
  • Support for JDK 25