Anzac Day and Sacrifice

In Australia and New Zealand we have this special day on 25 April to remember the sacrifices made by those who went to war. It arose originally from those who fought at Gallipoli in WW1… a joint Aust and NZ force who were called ANZACS.

It is a very emotional day . In postwar Australia almost every family was affected in some way by wartime events. It is something our indigenous Australians and our migrants understand and join in. In contrast to our national day, there is no protest about Anzac Day.

The idea of sacrifice is something everyone understands.
Even those who write code talk about sacrificing brevity for readability. In modern economic jargon it is called a tradeoff.
So how did this sacrifice concept arise ?

Well, it is very ancient. You can read about sacrifice in the Old Testament, and it is embodied in the Christian idea of Lent.
But it is older than that. Hunter-gatherer tribal people used to
sacrifice excess children when food was in short supply, to ensure the tribe could be fed.
But it is an entirely human thing, animals, AFAIK do not make deliberate sacrifices… they make choices but there is no ulterior motive.

So sacrifice is somehow associated with achieving a ‘common good’. It is more than a tradeoff, it is a charitable tradeoff. There is some element of giving. That is why it unites everyone.

This year there was a full moon on Anzac Day.
Can anyone calculate when will be the next occurence of full moon on Anzac Day?

2 Likes

I did some searching and Copilot help with a Python script. I came up with a date.

Full moon on: 0.9633145305501329 04252025

The 0.9633 is the phase of the moon where 0 is a new moon and 1 is a full moon. I said to count anything 0.95 or higher as a full moon.

I’m not sure what should be called a full moon. If 27/28 is 0.964 then maybe that works.

import ephem
import datetime
from datetime import datetime

def get_moon_phase(date=None):
    """
    This function returns the moon phase for a given date.
    If no date is provided, the current date is used.

    :param date: The date for which the moon phase is fetched.
    :type date: datetime.date, optional
    :return: The moon phase (0: New Moon, 0.5: First Quarter, 1.0: Full Moon)
    :rtype: float
    """
    if date is None:
        date = datetime.datetime.now()

    moon = ephem.Moon(date)
    phase = moon.moon_phase
    return phase

the_year = 2025
while (the_year <= 5000):
  yyyy = str(the_year)
  mmddyyyy = '0425' + yyyy
  date_fmt = '%m%d%Y'
  the_date = datetime.strptime(mmddyyyy, date_fmt)
  moon_phase = get_moon_phase(the_year)
  print(the_year, '\r', end='')
  if (moon_phase >= 0.95):
    print()
    print('Full moon on: ', moon_phase, mmddyyyy)
    quit()
  the_year += 1
3 Likes

Yes that is debatable. It depends on location and time of day… today in Sydney at 12.02pm it is 98.8%
The day on which 100% illumination is reached is a clearer way to define it… but harder to compute.
Python really has lot going for it

3 Likes