惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Project Zero
Project Zero
F
Fortinet All Blogs
Recent Announcements
Recent Announcements
云风的 BLOG
云风的 BLOG
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
M
MIT News - Artificial intelligence
S
SegmentFault 最新的问题
Blog — PlanetScale
Blog — PlanetScale
T
Tailwind CSS Blog
WordPress大学
WordPress大学
Engineering at Meta
Engineering at Meta
S
Schneier on Security
N
News and Events Feed by Topic
N
News | PayPal Newsroom
H
Help Net Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
The Exploit Database - CXSecurity.com
Attack and Defense Labs
Attack and Defense Labs
博客园 - Franky
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
J
Java Code Geeks
A
About on SuperTechFans
AWS News Blog
AWS News Blog
S
Secure Thoughts
The Cloudflare Blog
Hugging Face - Blog
Hugging Face - Blog
爱范儿
爱范儿
C
Cybersecurity and Infrastructure Security Agency CISA
V2EX - 技术
V2EX - 技术
Recorded Future
Recorded Future
Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页
MyScale Blog
MyScale Blog
Martin Fowler
Martin Fowler
Help Net Security
Help Net Security
人人都是产品经理
人人都是产品经理
Latest news
Latest news
C
Cyber Attacks, Cyber Crime and Cyber Security
大猫的无限游戏
大猫的无限游戏
The Last Watchdog
The Last Watchdog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
月光博客
月光博客
H
Hacker News: Front Page
P
Proofpoint News Feed
N
News and Events Feed by Topic
H
Heimdal Security Blog
L
Lohrmann on Cybersecurity
有赞技术团队
有赞技术团队
L
LangChain Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog

kmcd.dev

Exploring Protocol Buffers Interactively Introducing ProtoDocs Ghost in the Shell: The Manga Behind the Anime The Hidden Cost of google.protobuf.Value Why Networking Built Its Own Data Modeling Language Zero-Friction Demos with WASM Let's Learn About BGP ConnectRPC: Where is it now? Building APIs with Contracts The Case for Greppable Code Unknown Fields in Protobuf IRC Log: Reactionary Faking protobuf data in Go Y'all are Sleeping on Mise-en-Place IRC Log: Standup 2 HTTP/2 From Scratch: Part 4 IRC Log: rm -rf /var/opt/gitlab/postgresql/data HTTP/2 From Scratch: Part 3 Building a Live BGP Map HTTP/2 From Scratch: Part 2 IRC Log: The Cloud Scale Incident Visualizing the Internet (2026) Shell Log: Namaste HTTP/2 From Scratch: Part 1 IRC Log: Standup HTTP/1.1 From Scratch WHOIS is dead, long live RDAP Encryption vs. Compression On Creating My Own Cover Art Traceroute Tool from Scratch in Go My Favorite Interview Question From JSON to Protobuf Breaking gRPC Morse Code Can You Hack a Phone with Your Voice? Visualizing the Internet (2025) HTTP QUERY and Go I made a daily word game Protovalidate: Can Input Validation Be This Easy? Behold! The Barcode Scanner Mixing CEL and Protobuf for Fun FauxRPC and Protovalidate The Call of the Monolithic Codebase FauxRPC + Test Containers Self-Documenting Connect Services gRPC Over HTTP/3: Followup JSON to Protobuf Conversion gRPC: The Ugly Parts Working with Protobuf in 2024 Introducing FauxRPC HTTP/1.0 From Scratch Y'all are sleeping on HTTP/3 HTTP/0.9 From Scratch What version of HTTP are you using? Texans in Denmark gRPC Over HTTP/3 gRPC: The Good Parts Leaving Texas for Greener Pastures gRPC: The Bad Parts Unit Testing ConnectRPC Servers Daily Prompts Adding chart.js to Hugo Why I'm Rebranding Benchmarking gRPC (golang) Blog Update gRPC From Scratch: Part 3 - Protobuf Encoding Tracking the Wins Visualizing the Internet (2024) Dropping Unknown Fields in ConnectRPC RESTless: Web APIs After REST Introducing unknownconnect-go Making gRPC more approachable with ConnectRPC Inspecting Protobuf Messages Introducing protoc-gen-connect-openapi gRPC From Scratch: Part 2 - Server gRPC From Scratch: Part 1 - Client Why you should use gNMI over SNMP in 2026 The Rollercoaster of Productivity in Side Projects Lessons from a Decades-Long Project How I learned to code Economists with (virtual) Guns Visualizing the Internet (2023) softlayer-python: language bindings/CLI for a cloud company SwFTP: SFTP/FTP Server For Openstack Swift Video: Morning Copenhagen Commute Goodbye Evepraisal Visualizing the spectrum of the sun (Part 2) Visualizing the Internet (2022) Evepraisal: A price estimation tool for Eve Online Visualizing the spectrum of the sun
Months Considered Harmful
2026-01-01 · via kmcd.dev

The calendar we all live by is a shambling mess. It has arbitrary month lengths, misnamed months, and rules so absurd we rely on nursery rhymes just to remember them. For something that structures our lives, it is clunky and illogical. This post is my attempt to design something that actually makes sense.

What’s wrong with our calendar?

Our current calendar is far from optimal. Months have varying numbers of days, which isn’t just annoying; it makes planning harder. For example, budgeting is made harder because month lengths don’t just vary in days, but in the number of pay periods or expense cycles they contain, leading to unpredictable cash flow. This may seem trivial, but it’s a strange flaw in a system we use every day.

Built through centuries of compromises and quick fixes, what began as lunar tracking has decayed into something that does neither job well. While not directly relevant to most modern daily planning, the conceptual failure to maintain a consistent natural rhythm highlights the calendar’s fundamental breakage from its origins. This breakdown stems from prioritizing the solar year for stable seasons and holidays, an aim that directly conflicts with the irregular lunar cycle.

The naming convention is another glaring bug. Consider September, October, November, and December. Their Latin roots (septem (7), octo (8), novem (9), and decem (10)) clearly point to their original positions. Yet, today they are our 9th, 10th, 11th, and 12th months. This historical mess is the result of early Roman calendar reforms, where the start of the year was shifted, leaving several months with names that no longer match their position.

So what are we left with?

  • Months are inconsistent in length.
  • The naming of months is inconsistent with their meaning.
  • We have vestigial concepts that have lost their ties to their original purpose.

Part I: 13-Month Year

My first pass at a fix was all about logic. I designed a clean, predictable system based on a perfect grid.

The Spec: A Perfect Grid

The idea was a perpetual calendar:

  • 13 Months, each 28 days long.
  • 4 Perfect Weeks per month, starting on a Monday and ending on a Sunday. Always.
  • 1 “Year Day” at the end. 13 × 28 = 364. The 365th day is a special holiday outside the weekly cycle, with a second “Leap Day” when we need it.

To see the difference, compare a perfect 13th-month calendar month with our current January 2026.

“Perfect” Month

MonTueWedThuFriSatSun
1234567
891011121314
15161718192021
22232425262728

January 2026

MonTueWedThuFriSatSun
1234
567891011
12131415161718
19202122232425
262728293031

The appeal is its deterministic nature. The 10th of any month is always a Wednesday. Annoying date arithmetic for things like budgets, sprints, and payroll just becomes simple. It’s a clean API for time.

Where My Dream Falls Apart

Of course, for all its elegance on paper, this system slams into a wall of bitter reality.

The entire global economy runs on four quarters. 13 is a prime number, meaning you can’t divide it cleanly into equal quarters. While individuals don’t live their lives in quarters, corporations do. This would necessitate creating awkward 3-3-3-4 month quarters for financial reporting, which ultimately reintroduces the very inconsistency we were attempting to eliminate. Economic reality kills calendar idealism.

Implementing such a calendar change would be a monumental undertaking, akin to Y2K on a global scale but vastly more complex due to deeply embedded legal, civil, and international coordination challenges. Every piece of software, every legal contract, and every database on Earth would require extensive rewriting. The associated cost would be unfathomable and would ultimately outweigh any benefits that we’d gain.

Introducing a “timeless” day (or two on leap years) into the calendar disrupts the continuous seven-day weekly cycle. It is… awkward. How would you write the date for this day? This disruption would break critical real-world systems like payroll cycles, recurring shifts, and automated cron jobs that rely on an unbroken weekly sequence. Some people still have to work, so there would be a weird exception for planning for this day. Timekeeping software would need to specifically handle this.

After considering the downsides, I have decided that my dream will continue to stay a dream. Months cannot be fixed… at least not without creating more problems. Who really needs months anyway?


Part II: Deprecating the Month

Why do we use months at all? What purpose do they serve in our daily lives? They’re a mashup of bad Latin, Roman vanity, and arbitrary divisions that have no real connection to the 7-day cycle that actually governs our schedules. The bug isn’t the implementation of the month. The month itself is the bug.

So, let’s deprecate the abstraction.

Long live the week

The proposal is to use the week as the main unit of time beyond the day. A year is just 52 weeks. And get this: this isn’t some new idea I dreamed up. It’s already part of the ISO 8601 international standard.

The formats are clean and unambiguous:

  • Week: YYYY-Www. Example: 2025-W41 represents the 41st week of 2025.
  • Week with weekday: YYYY-Www-D. Example: 2025-W41-2 represents the 2nd day (Tuesday) of the 41st week of 2025. (Monday is 1, Sunday is 7).

The system is built and standardized; we just don’t use it as our default. Here’s how the first few weeks of 2026 look using the ISO 8601 week-date system, with the Gregorian date (day/month) for comparison.

ISO WeekMonTueWedThuFriSatSun
2026-W0129/1230/1231/1201/0102/0103/0104/01
2026-W0205/0106/0107/0108/0109/0110/0111/01
2026-W0312/0113/0114/0115/0116/0117/0118/01
2026-W0419/0120/0121/0122/0123/0124/0125/01
2026-W0526/0127/0128/0129/0130/0131/0101/02

Note that week 1 of 2026 starts in December of 2025. This might seem confusing, but it’s a deliberate design choice. Rule of thumb: The first week of the year is the week that has the year’s first Thursday in it. This is the standard definition and explains why the week can straddle years—it ensures the majority of the week belongs to the new year. It’s a trade-off: the Gregorian calendar breaks weekday consistency at the year’s boundary, while the week-date system prioritizes the weekly cycle over the year boundary. In practice, you often stop caring which ‘year’ a Monday belongs to, because your planning horizon is almost always weeks ahead, not abstract year boundaries.

Addressing the Concerns

This idea has its own set of hurdles, but they feel more like matters of habit than hard blockers.

The fiscal quarter problem is solved. Remember how the 13-month calendar failed because 13 is a prime number? The week-based system fixes this beautifully. A 52-week year divides perfectly into four 13-week quarters. This is already a common practice in many industries (often called a 4-4-5 calendar) because it makes financial reporting and year-over-year comparisons much more consistent. Far from being a problem, this is a major advantage.

Months are poor seasonal anchors anyway. “December” is winter here in Copenhagen but high summer in Cape Town. Tying months to seasons is just a Northern Hemisphere bias. We can create new narratives. The argument that we need months for “chapter breaks” in our year assumes we’re incapable of making new patterns. We could easily create new milestones around 10-week blocks or the four 13-week quarters. The narrative doesn’t disappear; it just gets refactored.

As I’ve learned living in Denmark, using week numbers for planning can be completely normal. It coexists with the standard calendar. I’ve had people invite me to events in “week 45.” The first time, I had to look it up. The fifth time, I also had to look it up. But I assume that with enough usage I will build an intuition.

The Migration Path: An Evolution

The end result of this thought exercise is a new year years goal for myself: I’m going to lean into using week numbers more in my own life. This isn’t a radical proposition; it’s about consciously adopting a better system that already exists in parallel. It’s an evolutionary change, and here’s how you can start:

Add Week Numbers to Your Calendar. Most digital calendars support this as a display option. Making the week number visible is the first step to making it intuitive. Try it for three months.

Start Using Weeks in Planning. In your next meeting invite, add the week number. “Let’s sync up in Week 45.” Will people look at you weird when you ask that? Probably. But notice how often months stop mattering in your planning.

By pushing for a better standard that already exists, maybe you can start the slow process of deprecating using months in favor of weeks in your own life. Happy week 1, everyone!


References & Further Reading

For those interested in a deeper dive into the topics discussed, here are some of the resources used in researching this article: