BUILD 21/30: Correct Calendar Layout Progress

Posted Thursday, November 13, 2025 by Sri. Tagged JOURNAL

Today's sharepiece is progress rendering calendar cells for each month in the right places. Still missing the Word Counting Calendar data! That's next!

About the Title Picture: I got the calendar generation code to render a complete year with cells in the right place. Progress!A screenshot of Adobe Acrobat Reader, showing individual pages of the test calendar month output for the Word Counting CalendarA screenshot of Adobe Acrobat Reader, showing individual pages of the test calendar month output for the Word Counting Calendar (full size image)

I worked on drawing actual calendar data in the correct layout. This extended the cell drawing code from Build Day 19 by using the Word Counting Calendar code I started in 2023.

This is the first time that all 12 months of a calendar year are being drawn, so it's a major milestone! Here's an example render of the December 2025 Calendar:

Figure 1: December 2025 Calendar drawn programmatically using my code. It's still drawing random special text in cells in this iteration.Closeup of an unlabeled calendar layout, using the Word Counting Calendar callsCloseup of an unlabeled calendar layout, using the Word Counting Calendar calls (full size image)

For the very curious, you can download the 12-month draft PDF below. Be warned, though, that it isn't the complete calendar yet with word calculations and correct start/end data caps.

There was actually a bug in my week calculation that only showed up when the last week of the year in December has an ISO week number for the next year. Because I was basing the number of weeks assuming a monotonicaly increasing week number, the week count would become negative. I found some ancient Javascript code on StackOverflow to calculate it correctly, adapted it to use the Temporal API, then used Claude Code to fix the typo I'd added to it. SHAMELESS SCRIPT KITTY AM I! But as Mikael in the DS|CAFE Computer Science Club said:

Well, if it works...

Yeah, that's right! Moving onward!

BUILD CHALLENGE COMMENTARY

Today wasn't a good day, and I got started on this code rather late to keep my commitment. While I was diagnosing my sudden lack of motivation, I realized that I'd broken an important personal rule:

Don't get stuck on one project goal for more than two, three weeks at most.

Previously, I had tried to apply this rule to contract work more consistently. After three weeks of working on the same project I go a little stir-crazy. This is particularly the case when there is no communication about the work itself; as a solo freelancer, I often have to talk to myself because there is no chatty group of co-developers to run things by. Also, there's no one to set limits and watch out for burnout.

Now that I know that this might be happening, I can make some adjustments. I'm also learning that doing 15-minute dailiesThis is committing to doing 15 minutes of work for the day with the promise of not having to do more than that. This works for me because I always keep going for longer unless I'm really sick. See Fifteen Minute Blocks for more context. is enough to get me started, and the lethargy/demotivation dies off because my analytical problem-solving brain comes to the forefront of my consciousness.

November 2025 Building Challenge Posts

URSYS Web App Template code01

Embedded TypeScript Apps in Eleventy code02

A Review of Old Work and Stories coll01

Eleventy Templates for Atom Feeds blog01

Productivity Energy Crash prod01

Workshopping the 'Activity Bingo' Form prod02

Last Run of ETP Notebook Production tool01

Activity Bingo Form Progress prod03

ETP Mini Notebook Printing Press Tour tool02

Identity and Logo Thinking Pass coll02

Unprofessional Business Cards card01

Word Counting Calendar Reboot wcal01

Word Counting Calendar Interim Release wcal01

Calendar Layout Code Progress wcal02

Super Simple PDF Progress wcal02

Articulating Friendship docs01

First skip day due to day trip to Concord, etc. prod04

A PDF-LIB Reference docs02

Programatic Drawing of Word Counting Calendar Blocks wcal02

Minimum Progress Despite Nausea; useful noobly attitudes wcal03

Calendar Day Drawing Progress wcal04

Progress noted in Groundhog Day Resolutions for November 11 ghdr01

A Mythical Magical Adventure Cat Primer docs03

Correct Calendar Layout Progress wcal05

Calendar Labeling and Space Filling wcal06

A Restorative Visit to the North Shore arts01

Alpha Word Counting Calendar! wcal07

Mini ETP Production Update! tool03

Personal Cards Revisited card02

Visiting an Old Friend in Beverly, MA arts02

Experimental Collaboration

Short Productive Sprint Day

Thanksgiving Reset Break

Mini ETP Notebooks available on Amazon

In the case of my 30-Day Build Challenge, I had passed the three-week mark a couple of weeks ago, and I'm now in week 5. I've been allowing myself skip days and switch-up the projects so it's maybe been fine, but it has been very quiet on the communication front. I like sharing progress in the DS|CAFE Discord and getting these blog posts out onto the couple of federated networks I've started using, but it's one way and so I am facing the same degradation of performance.

It's always a difficult switch for me, moving from "chatty camaraderie-seeking person" to "technical architect and builder" mode.

BONUS ACHIEVEMENTS

Today I learned that I can select a bunch of PDF files in the Finder and use the Combine Files action to concatenate them all together! That's great!

Suck it, Adobe Acrobat Professional! You are terrible software!

Initially, I tried using the new Affinity App (which is now free, guys) to see if it provided some PDF utilities for combining pages. It does allow you to Add a Page to a current document, but you have to do it one at a time and clack your way through a dialog box. Not ideal.

Ultimately, my custom software will do the generation of a multi-page document for me, but the code is still very much in the hacky prototype stage.


We chat about personal projects and challenges on the DS|CAFE Community Discord Server every day. Come visit! Maybe you'll make some friends!

You can reach me at Mastodon or Bluesky. Or subscribe to the blog feed to stay up-to-date.