Today is Pungenday, the 10th day of Discord in the Year of our Lady of Discord 3186
People occasionally ask me about my religious beliefs, and in the list that I trot out is Discordianism. I've often said that if someone put a gun to my head and said "pick a religion", it'd be Judaism, because everything's laid out right there in writing for all to see. But in the background, in my hidden heart, I'd be Discordian. It's partly my anarchistic tendencies, partly for the culture jamming that goes along with Operation Mindfuck, possibly just my bloody-minded contrarianism. So I'm a Discordian socialist anarcho-syndicalist, Taoist-Buddist Pagan Jew (in other words, a Buddhist Taoist anarchistic paganistic Jewboy).
The Discordian date is a peculiarity, one of the odd things that has somehow become important to me. One of the sillier things I have on my computer is a little command line toy called ddate, which gives me the Date. Being the silly geek that I am, it's also displayed prominently on my desktop (which for added Geek Points, is of course Linux) via Conky. It makes me happy for a wide variety of reasons.
The fact that I've the Discordian date visible on my computer rather than the Jewish one tells me which is uppermost. It's a reminder to me that I tend to take myself too seriously. It's the reason I've come back to E2, as well. This place is still for me a surreal Hitch Hikers Guide to the Galaxy, an odd mix of opinions, journals, poetry and fact that is how I imagine the world's blog would look like.
Then there's the odd way that time works for me now. Years flee behind me like rats down a drainpipe, but each day is long and rich and turgid with possibility, and having an odd calendar also calls that to mind. Time is telescoping as I grow older, but when I was a child, time crawled by; summers were years long. I suspect that this is the Universe, toying with me. Possibly Eris herself, Goddess of Discord, plays this game with us mere humans. The carousel gets faster the longer you're on it.
I recall a poem I read as a child that encompassed the passing of time with time, in an anthology of children's verse. Quite a thing to have in a book of poems at the age of seven, mortality and existentialism, but it had an impact then and it does now.
When as a child I laughed and wept,
Time crept.
When as a youth I waxed more bold,
Time strolled.
When I became a full grown man,
Time ran.
When older still I daily grew,
Time flew.
Soon I shall find, in passing on,
Time gone.
O Christ! wilt Thou have saved me then?
Amen.
—Henry Twells Time's Paces
Somewhere in storage I still have that book; one day I will despair of not having it in hand, and dig it out. But today is not that day. Today is for the golden apple that is the sun, and throwing myself headlong into country life, the Spring and the indulging of my inordinate fondness for beetles.
Hail, Eris!
Damnit, turgid is such a great word.
Post scriptum I should add a detail to clarify chaosdiscord's comment in the first writeup here: Saint Tibs' Day is an intercalary day added in the standard leap year; in other words, it's the 29th of February.
xclip -o | wc -w
575
ddate | cowsay
________________________________________
/ Today is Prickle-Prickle, the 21st day \
\ of Discord in the YOLD 3190 /
----------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
I've a Bash script that should also run in Windows' WSL:
#!/bin/bash
# Discordian Calendar definitions
seasons=("Chaos" "Discord" "Confusion" "Bureaucracy" "The Aftermath")
day_names=("Sweetmorn" "Boomtime" "Pungenday" "Prickle-Prickle" "Setting Orange")
apostle_holidays=("St. Tib's Day" "Mungday" "Mojoday" "Syaday" "Zaraday")
# Function to determine if a year is a leap year
is_leap_year() {
local year=$1
(( !(year % 4) && (year % 100 || !(year % 400)) ))
}
# Function to calculate the day of the year
day_of_year() {
local date=$1
date -d "$date" +%j
}
# Function to convert Gregorian to Discordian date
gregorian_to_discordian() {
local date=$1
local year=$(date -d "$date" +%Y)
local month=$(date -d "$date" +%m)
local day=$(date -d "$date" +%d)
# Calculate day of the year
local day_of_year=$(day_of_year "$date")
# Discordian year is Gregorian year + 1166
local discordian_year=$((year + 1166))
# Handle St. Tib's Day (leap year)
if ; then
echo "Today is St. Tib's Day in the year of Our Lady of Discord $discordian_year."
return
fi
# Adjust for leap year
if ; then
((day_of_year--))
fi
# Determine the season and day within the season
local season_index=$(( (day_of_year - 1) / 73 ))
local season_day=$(( (day_of_year - 1) % 73 + 1 ))
local day_name_index=$(( (day_of_year - 1) % 5 ))
local season=${seasons$season_index}
local day_name=${day_names$day_name_index}
local apostle_holiday=${apostle_holidays$season_index}
echo "Today is $day_name, the $season_day${suffix} day of $season in the year of Our Lady of Discord $discordian_year."
# Check for Apostle Holidays
if (( season_day == 5 || season_day == 50 )); then
echo "Also, today is $apostle_holiday."
fi
}
# Get the current date if no date is provided
if -z "$1" ; then
date=$(date +%Y-%m-%d)
else
date=$1
fi
# Convert and display the Discordian date
gregorian_to_discordian "$date"
Here, have a Python script to display today's date (works in 3.9):
import datetime
def get_discordian_date():
# Get the current date
current_date = datetime.date.today()
# Calculate the Discordian date
year_offset = 1166
day_of_year = current_date.timetuple().tm_yday
year_of_era = current_date.year + year_offset
day_of_week = current_date.weekday()
discordian_day = (day_of_year % 5) + 1
discordian_season = (day_of_year // 73) + 1
discordian_year = year_of_era
discordian_weekday = (day_of_week % 5) + 1
# Define names for days and seasons
days = ["Sweetmorn", "Boomtime", "Pungenday", "Prickle-Prickle", "Setting Orange"]
seasons = ["Chaos", "Discord", "Confusion", "Bureaucracy", "The Aftermath"]
# Format and return the Discordian date
return "{}, {} {} YOLD".format(days[discordian_day - 1], seasons[discordian_season - 1], discordian_year)
# Display the Discordian date
print("Today's Discordian date is:", get_discordian_date())
Just for increased nuttiness, in Rockstar:
Midnight takes your heart and your soul
While your heart is as high as your soul
Put your heart without your soul into your heart
Listen to your heart
Give back your heart
Let the day be as high as the remainder of the year divided by 5
Let the year be as high as the sum of the current year and 1166
Say "Today's Discordian date is: " without newline
Listen to the day
Whisper "Sweetmorn", "Boomtime", "Pungenday", "Prickle-Prickle", "Setting Orange"
Say the last whisper without newline
Let the season be as high as the remainder of the year divided by 73
Whisper "Chaos", "Discord", "Confusion", "Bureaucracy", "The Aftermath"
Say the last whisper without newline
Say the year
Say " YOLD"
FOr you poor souls on WIndows, in C:
#include
#include
#include
#include
// Define the seasons and day names
const char *seasons = {
"Chaos", "Discord", "Confusion", "Bureaucracy", "The Aftermath"
};
const char *day_names = {
"Sweetmorn", "Boomtime", "Pungenday", "Prickle-Prickle", "Setting Orange"
};
// Check if a year is a leap year
int is_leap_year(int year) {
if (year % 4 == 0) {
if (year % 100 == 0) {
if (year % 400 == 0) {
return 1;
}
return 0;
}
return 1;
}
return 0;
}
// Calculate the Discordian date
void calculate_discordian_date(int day, int month, int year, char *result) {
int days_in_year = (is_leap_year(year)) ? 366 : 365;
int month_days = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (is_leap_year(year)) month_days1 = 29;
int day_of_year = 0;
for (int i = 0; i < month - 1; ++i) {
day_of_year += month_daysi;
}
day_of_year += day;
// Discordian year is the same as the Gregorian year
int discordian_year = year + 1166;
// Adjust for leap year if necessary
if (is_leap_year(year) && day_of_year > 59) {
day_of_year -= 1;
}
// Calculate season and day of season
int season = (day_of_year - 1) / 73;
int day_of_season = (day_of_year - 1) % 73;
// Calculate day of the week
int day_of_week = day_of_year % 5;
// Handle St. Tib's Day (February 29th in a leap year)
if (is_leap_year(year) && month == 2 && day == 29) {
snprintf(result, 256, "St. Tib's Day, Year of Our Lady of Discord %d", discordian_year);
return;
}
snprintf(result, 256, "%s, %s %d, Year of Our Lady of Discord %d",
day_namesday_of_week, seasonsseason, day_of_season + 1, discordian_year);
}
int main(int argc, char *argv) {
if (argc != 4) {
fprintf(stderr, "Usage: %s \n", argv0);
return 1;
}
int day = atoi(argv1);
int month = atoi(argv2);
int year = atoi(argv3);
char discordian_date256;
calculate_discordian_date(day, month, year, discordian_date);
printf("Discordian date: %s\n", discordian_date);
return 0;
}
Compiling and running this is left as an exercise for the poor reader. Serve you right, Windows users :þ
And lastly, for laughs, LOLCODE:
HAI 1.2
I HAS A DAY_ITZ
I HAS A SEASON_ITZ
I HAS A YEAR_ITZ
DAY_ITZ R MOD OF YEAR AN 5
SEASON_ITZ R QUOSHUNT OF YEAR AN 73
YEAR_ITZ R SUM OF 1166 AN YEAR
VISIBLE "Today's Discordian date is: "
I HAS A DAY_NAMES
DAY_NAMES IS NOW A BUCKET
1 YR "Sweetmorn"
2 YR "Boomtime"
3 YR "Pungenday"
4 YR "Prickle-Prickle"
5 YR "Setting Orange"
VISIBLE DAY_NAMES DAY_ITZ
I HAS A SEASON_NAMES
SEASON_NAMES IS NOW A BUCKET
1 YR "Chaos"
2 YR "Discord"
3 YR "Confusion"
4 YR "Bureaucracy"
5 YR "The Aftermath"
VISIBLE SEASON_NAMES SEASON_ITZ
VISIBLE YEAR_ITZ " YOLD"
KTHXBYE