# Retrospective

slow

## Accept anything is harder than you think

#softwaredevelopment

“About 1% of development time of a new program makes it unique, the other 99% are spend playing catch-up to feature parity with existing programs.”

““Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.” Coined by Jamie Zawinski (who called it the “Law of Software Envelopment”) to express his belief that all truly useful programs experience pressure to evolve into toolkits and application platforms (the mailer thing, he says, is just a side effect of that). It is commonly cited, though with widely varying degrees of accuracy.”

Why did I start a new CLI/terminal calendar (khal) program, instead of extending an existing one (insert name of the program I always forget here) by the features it lacked?

Well, I didn’t actually plan to write anything a tenth as complex as khal turned out to be. I liked to use cal(1), but there were some things about it [#], that made me think “I can do better (and quickly”) So I wrote a little python script, that behaved mostly like cal(1) (and lives mostly unchanged in khal until this day), but with some little deviations (I call them improvements) [#]_.

TODO where does the name come from

As I had previously written a little CardDAV client (why?? Zirkelschluss?), one day I thought “I would be need if khal could display events scheduled for today”

.. _python script: https://github.com/pimutils/khal/blob/3f9a1bbdc4b48f8abd12cf33a1e96e08e174ddeb/khal/calendar_display.py .. [#] I’m used to weeks starting on Mondays (and cal(1) displays weeks starting with Sundays). ncal(1), which can actually be made to start weeks on Mondays (for example by telling it to use German locale settings ncal -s DE), displays dates which fall onto the same weekday in the same row and not column as I like it. While ncal can be made to use the traditional cal arrangement, at least the version supplied by either FreeBSD or Debian at that time, could not use the traditional layout and making weeks start on Mondays at the same time. Displaying week numbers colliding with one of the above options as well.

.. [#]

1. weeks start on Mondays (this is now configurable)
2. have the option of displaying week numbers
3. display as may months worth of weeks concatenated (by default three)khal