Discordian date with ddate

New Calendar

Article from Issue 179/2015

The Discordian calendar straightens outs the remaining irregularities in our present calendar with a wink of the eye. Using ddate, you can convert the current time into the "new system."

For many years, humans have been living according to the Gregorian calendar, which was pontifically decreed centuries ago. The journey of days through the seasons that Julius Caesar's calendar had created was thus deactivated for a time. This had, in turn, straightened out the previous lunar calendar, which went through a year in 354 days and therefore had to be adjusted continuously and manually to the actual state of affairs.

Twelve-month years with seven-day weeks may be quite a usable compromise for counting time, but it's also a rotten one in many ways. The six-plus-one rule might seem practical, but four weeks only fill up a whole month once a year – the others have 30 or 31 days. This irregularity leads, for example, to the fact that you celebrate your birthday on a different day of the week each year.

Calendar of Discord

The Discordian calendar [1] (from the Latin discordia) thoroughly tidies up these difficulties and takes a completely different approach: It divides the year into five months, each of which has 73 days. A year still has 365 days, with a leap day every four years. However, the weeks shrink to five days. Take a look at the output from the ddate command invoked without any arguments (Figure 1).

Figure 1: Output of the ddate command.

The addition "Celebrate Mojoday" reminds people not to forget to celebrate the forthcoming public holiday – which you celebrate on the fifth of the month and repeat again on the fiftieth like all other Discordian public holidays.

The abbreviation "YOLD" stands for "Year Of Our Lady Of Discord," which parallels the Christian notation "Year Of Our Lord." The year date, which is reminiscent of orthodox calendars, sets the Gregorian year 1166BC as an epoch that is gloriously derived from the Law of Fives [2]: 1959 is considered the founding year of Discordianism, and said year emerges by taking five to the power of five and creating the difference. (See the "Law of Fives" box for more.)

Law of Fives

In Discordianism, everything is based on five – for example, the number of months of the year, based on the divisibility of the days of the year by five. One of the primary principles of Discordianism is "All things happen in fives, or are divisible by or are multiples of five, or are somehow directly or indirectly appropriate to 5" [2].

As this unfiltered output shows, Discordians do not take themselves particularly seriously. Everything is based on metaphors, negations, and digs at the real-world calendar. Discordianism is considered the anti-religion per se, but certainly does not see itself as pseudo-atheism. It is just a parody of various rituals and taboos and ultimately of itself. The disciples of the goddess of discord poke fun at themselves. Anyone who tries to glean a spark of seriousness from this is certainly barking up the wrong tree.

The code in Listing 1 output the current day's event. You will find an explanation of the various placeholders in the man page (Figure 2).

Listing 1

Today's Event


Figure 2: The formatting options for ddate are the same as the Linux date command; however, it doesn't have any of the typical GNU-style options.

You can create an attractive version of the data in the graphic interface as easily as you can in the command line: Simple script GUIs, such as KDialog or Zenity, make it possible to conjure up a small window on the desktop with little effort (Figure 3). The corresponding Bash code is shown in Listing 2.

Listing 2

Bash Code for Zenity Dialog


Figure 3: With Zenity, you can create a simple dialog that displays the current date from the Discordian calendar.

Until version 2.23, ddate was part of the util-linux package, although it was disabled in version 2.21. Current versions of the program are available from a GitHub repository [3]. Additionally, packages or more recent versions are available for Fedora, Debian "sid," or ROSA 2014.1. The Debian package is compatible with Ubuntu and its offshoots in most cases; an archive is available in the Arch User Repository (AUR) for Arch Linux.

Compiling the software for other distributions is quite simple and hardly requires any dependencies. The three-step process differs from the GNU default because cmake is used instead of the GNU autotools: To compile, simply enter cmake && make && make install.


Ddate appeared inadequately maintained even before it was ejected from util-linux. A gettext implementation for compiling is missing, as well as useful options for the command line, such as those offered by date. Ddate therefore remains far behind its counterpart. Nevertheless, the Zenity application example mentioned could put the finishing touches to the desktop, although the practical benefits are virtually zero.

Without wanting to admit that Red Hat Karel Zak, who removed the program from util-linux (see the "Expulsion from Paradise" box), was right, ddate is nothing more than a gimmick. On the other hand, it offers an attractive application field for budding programmers.

Expulsion from Paradise

The end of ddate in util-linux was sealed, but very quickly someone took up the outcast child in GitHub and has already helped provide some releases. The new home was originally intended only to protect the program from disappearing entirely into oblivion. Meanwhile, however, other programmers have turned to work on the software.

Zak literally threw out ddate when he took over as maintainer of the util-linux package. That earned him sparse applause, accompanied by fairly harsh criticism from some users, who accused Zak of totalitarianism [4] [5].

The Author

Mario Blättermann is a co-maintainer of gLabels. He also builds packages for Fedora.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Time Machines

    Command-line aficionados do not have to forgo calendars and appointment reminders. The shell offers many tools for user-friendly handling of date definitions in scripts.

  • Zenity and KDialog

    Zenity and KDialog let you integrate your scripts with the native KDE or Gnome environment.

  • Command Line: Calendar Tools

    We take a spin through several personal calendar apps that you can manage from the command line.

  • Workspace: DokuWiki Plugins

    DokuWiki is a useful wiki system already, but you can take its functionality to a whole new level using some of the available plugins.

  • Zenity Dialogs

    The Zenity command-line utility lets you create simple dialog boxes with your own data or with the output of utilities and applications.

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More