BUILD 22/30: Calendar Labeling and Space Filling

Posted Friday, November 14, 2025 by Sri. Tagged JOURNAL

Added new layout elements to the Word Counting Calendar code generator. It's coming along! Still need to implement variable data and conditional layout.

About the Title Picture: Making progress writing new layout rules in Javascript, using Visual Studio Code. It's still very much prototype code, but I'm getting a more accurate feeling what what I need in an expressive PDF rendering toolkitTitle image is a screenshot of Visual Studio Code, showing javascript code fragements alongside a preview of the generated PDF outputTitle image is a screenshot of Visual Studio Code, showing javascript code fragements alongside a preview of the generated PDF output (full size image)

I had a pretty good day, despite waking up very late. I was able to hop right into work quickly after deciding to add the layout rules for leading/trailing blank cells, add the day names, and the banner areas.

CURRENT PROGRESS

Figure 1. This November 2022 calendar now has the leading/trailing cells and day names!Current progress on rendering a complete Word Counting Calendar, showing addition of day names and blank cells athe the beginning and end of weeksCurrent progress on rendering a complete Word Counting Calendar, showing addition of day names and blank cells athe the beginning and end of weeks (full size image)

REFERENCE DESIGN

Figure 2. For comparison, here is the hand-designed calendar that I'm using for a reference.Manually-designed version of the same calendar from 2022 for comparison with current progressManually-designed version of the same calendar from 2022 for comparison with current progress (full size image)

Again for the very curious, you can download the 12-month draft PDF below. Be warned, though, that it isn't the complete calendar yet!

There are some subtle differences other than the typography:

  • The base cell is a little flatter than the original, likely due to the different font used; the base cell is influenced by the rendered height of the day numbers
  • The colors are not rendering quite the same, as they're being programmatically lightened, whereas in the original I tweaked each color set slightly.
  • There is a color shift happening between different monior sources. If you compare the blog title pic with the screen captures, you'll see what I'm talking about. I haven't set up color management on this computer as it's been a while since I've done it, but when I am going to make press-ready output, I'll have to figure this color profile stuff out. A pain in the butt.

Next steps: probably dynamically-generated labels and word counts based on a target count, rather than using the assumption of 50,000 words per month. It would be far more useful to set the number of counts to anything we want!

November 2025 Building Challenge Posts

URSYS Web App Template code01

Embedded TypeScript Apps in Eleventy code02

A Review of Old Work and Stories work01

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 work02

Unprofessional Business Cards work03

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

BUILD CHALLENGE COMMENTARY

Today felt like a very good day in terms of flow. I'm wrapping up this blog post around 6PM my time, after spending about 5 hours total working through various issues.

BONUS ACHIEVEMENTS

I used several AI tools today.

  • Converting my CMYK color tables using different AI tools to process the text list into a Javascript data structure, because I didn't want to type all this persnickety decimal points to the 4th place. YUCK.
  • Comparing the ollama with the qwen3-coder and gpt-oss-20b models, which are small enough to fit in 16-30GB of unified memory on my 64GB Macbook M1. My takeaway: these require a lot of refined prompting to match the quality (such as it is) of Claude Code running Sonet 4.5. The out-of-the-box results from qwen3-coder and gpt-oss-20b were...not good.
  • Re-enabling my Github Copilot integration for the "Free" account because I just need autocomplete on demand, as the autocompletion as-you-type is quite stupid. I just want to insert fragments of code signatures without having to scroll backwards.

These explorations took extra time, but bringing them back into my workflow for handling tedious data entry helped maintain mental energy that otherwise would have been consumed by eye straining work.

I'm not sure how other people are getting good results out of the qwen3-coder and gpt-oss-20b models with ollama, but it's nice to have such a "free" option available should I want to do simple data screening and reformatting work.


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.