Lent and Lisp

Fasting meets fast fails: coders feud over calendar code

TLDR: A blogger tried to compute overlaps between Ramadan and Lent, hacked a broken code library to make it run, and commenters pounced. The community split between “proper package fix” and “just make it work,” sparking CLISP vs SBCL debates and jokes about Lent turning into lint—revealing how old academic code collides with modern tools.

A quiet post about holiday overlaps—Ramadan, Chinese New Year, and a near-miss on Lent—turned into a full-blown code soap opera. The author tried switching from Emacs Lisp to Common Lisp to crunch holy-day dates using a famous textbook’s code… and it bombed. His hotfix? Delete some scary package lines and make it run in CLISP. The crowd went wild. The top vibe: hacky quick-fix vs do-it-right. One commenter swooped in with “please don’t rip headers, define the package properly” and dropped a real fix, complete with a cleaner header using a proper package definition. Meanwhile, the source site was “hugged to death,” so someone unearthed an Apache-licensed copy, got it working in SBCL (another Lisp tool) with only “style warnings.” Translation: it works, but the code styles are… not cute. The drama escalated into mini “holy wars”: CLISP vs SBCL, Lent vs lint, and whether academic code belongs in the real world. There were groans at the mere mention of switching to Clojure and running a Java machine. Jokes flew—“Ash Wednesday” became “Crash Wednesday,” and someone quipped we’ve found the true spirit of Lent: self-denial, but for compiler warnings. The actual calendar math? Overshadowed by the spectacle—and the comments loved it.

Key Points

  • The author initially omitted Ash Wednesday from a post on Ramadan and Chinese New Year but reconsidered due to cultural parallels with Lent.
  • To leverage more extensive astronomical calculations, the author switched from Emacs Lisp to Common Lisp using code from Reingold and Dershowitz’s Calendrical Calculations.
  • The Cambridge-provided Common Lisp file (calendar.l) failed to load in SBCL and CLISP; Stack Overflow workarounds did not resolve the issue.
  • Removing the initial in-package and export lines allowed the code to load successfully in CLISP; the edited file was saved as calendar.lisp.
  • With the library working, the author began a Common Lisp script to identify when Ramadan 1 and Ash Wednesday coincide over 500 years, defining helper functions and date utilities.

Hottest takes

They probably want to replace the header of calendar.l
hugged-to-death
NB: The code from the book is exceedingly non-idiomatic lisp.
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.