Athanasius's user image
User since: May 01, 2012 at 11:13 UTC (10 years ago)
Last here: Nov 27, 2021 at 14:07 UTC (7 hours ago)
Experience: 52278
Level: Archbishop (23)
Writeups: 1970
Location:Gold Coast, Australia
Curacy:637th Monk in the Book, Dec 03, 2012
Image:Athanasius I of Alexandria
Motto:Contra Mundum (“Against the World”)
User's localtime: Nov 28, 2021 at 06:50 AEST
Scratchpad: View
Member of: janitors
For this user:Search nodes

Errors, like straws, upon the surface flow;
He who would search for pearls, must dive below.

— John Dryden

On Athanasius


The Christian does not think God will love us because we are good,
but that God will make us good because He loves us.

— C. S. Lewis

Athanasius I of Alexandria

  • Renowned Christian theologian, Church Father, and chief defender of Trinitarianism against Arianism
  • Born c. 296–298 AD, died 2 May, 373
  • Wrote Contra Gentes and De Incarnatione (“a masterpiece”) aged 20–22
  • Served as secretary to Patriarch Alexander of Alexandria at the First Council of Nicæa in 325
  • Patriarch and Archbishop of Alexandria (Roman Provincia Ægyptus) for 45 years (328–373)
  • Spent more than 17 years in five exiles ordered by four different Roman emperors
  • Known as “Father of the Canon” because he was the first to identify the 27 books of the New Testament in use today
  • Said at Nicæa: “Jesus that I know as my Redeemer cannot be less than God”
  His epitaph is Athanasius contra mundum, “Athanasius against the world.” We are proud that our own country has more than once stood against the world. Athanasius did the same. He stood for the Trinitarian doctrine, “whole and undefiled,” when it looked as if all the civilised world was slipping back from Christianity into the religion of Arius — into one of those “sensible” synthetic religions which are so strongly recommended today and which, then as now, included among their devotees many highly cultivated clergymen. It is his glory that he did not move with the times; it is his reward that he now remains when those times, as all times do, have moved away.
 — C. S. Lewis, Introduction to On The Incarnation by Athanasius

Men occasionally stumble over the truth,
but most of them pick themselves up
and hurry off as if nothing had happened.

— Winston Churchill

Athanasius the PerlMonk

Evangelical Christian (Baptist)

Web Presence

PerlMonks Poetry




PerlMonks Career

Level Title XP Date

1 Initiate 0  1 May 2012
2 Novice 20  5 May 2012
3 Acolyte 50  9 May 2012
4 Sexton 90 17 May 2012
5 Beadle 150  4 Jun 2012
6 Scribe 250 14 Jun 2012
7 Monk 400 30 Jun 2012
8 Pilgrim 600 18 Jul 2012
9 Friar 900  8 Aug 2012
10 Hermit 1,300 31 Aug 2012
11 Chaplain 1,800 28 Sep 2012
12 Deacon 2,400 30 Oct 2012
13 Curate 3,000  3 Dec 2012
14 Priest 4,000 25 Jan 2013
15 Vicar 5,400 20 Apr 2013
16 Parson 7,000 17 Aug 2013
17 Prior 9,000 19 Dec 2013
18 Monsignor 12,000 18 Jul 2014
19 Abbot 16,000 13 Jan 2015
20 Canon 22,000 20 Sep 2015
21 Chancellor 30,000 9 Oct 2016
22 Bishop 40,000 19 Sep 2018
23 Archbishop 50,000 20 Mar 2021
24 Cardinal 60,000
25 Sage 70,000
26 Saint 80,000
27 Apostle 90,000
28 Pope 100,000

You know the old saying:
any technology sufficiently advanced
is indistinguishable from a Perl s‎crip‎t.

Programming Perl (The Camel Book)

Posts by Athanasius
RecamŠn's sequence and memory usage in Meditations
3 direct replies — Read more / Contribute
by Athanasius
on Jul 13, 2015 at 04:41

    Esteemed Monks,

    I was looking at The On-Line Encyclopedia of Integer Sequences (OEIS) (you know, as one does), and on the Welcome page I found a list of Some Famous Sequences, of which the first is RecamŠn’s sequence, defined as follows:

    R(0) = 0; for n > 0, R(n) = R(n-1) - n if positive and not already in the sequence, oth +erwise R(n) = R(n-1) + n.

    What makes this sequence interesting is N. J. A. Sloane’s conjecture that every number eventually appears.

    Coding the sequence is simplicity itself; the challenge is to test Sloane’s conjecture by keeping track of the numbers that have not yet appeared in the series. My initial, naïve approach was to use a sieve, à la Eratosthenes:

    But this turned out to be far too memory-hungry: for values of MAX of the order of twenty million, RAM usage on my 3GB system approaches 100%, thrashing sets in, and the script (along with the rest of Windows) grinds to a shuddering halt.

    Surely, I thought, there must be a memory-efficient way to represent a sieve? And of course there is, and of course it was already implemented on CPAN. A little searching led to the Set::IntSpan module which stores runs of consecutive integers as spans, allowing large (even infinite) collections of integers to be represented very economically.

    Calculation of successive terms in the RecamŠn sequence is noticeably slower using Set::IntSpan for lookup than it is using a hash. But, as the adage says, it’s better to be late than be dead on time. (This was the slogan of an Australian safe driving ad campaign some years ago.) For the record: I also looked at Set::IntSpan::Fast and Set::IntSpan::Fast::XS. The latter failed to install on my system, and the former actually ran slower than Set::IntSpan for this use-case.

    Turns out that Set::IntSpan not only solves the memory problem, it also makes it possible to dispense with an upper bound for the sieve. How, then, to display progressive results? Well, the OEIS has a couple of additional series related to RecamŠn’s:

    • A064228: values of R(n) that take a record number of steps to appear: 1, 2, 4, 19, ...
    • A064227: the values of n corresponding to the values in A064228: 1, 4, 131, 99734, ...

    So I recast the script to output successive values of these two series:

    14:20 >perl 1 <-- 1 2 <-- 4 4 <-- 131 19 <-- 99734 ...

    Here is the new script:

    use strict; use warnings; use sigtrap handler => \&int_handler, 'INT', handler => \&break_handler, 'BREAK'; use Set::IntSpan; use Time::HiRes qw(gettimeofday tv_interval); $| = 1; my $t0 = [gettimeofday]; my $min0 = 1; my $n = 0; my $r0 = 0; my $missing = Set::IntSpan->new( '1-)' ); print "$min0 <-- "; while (++$n) { my $r = $r0 - $n; $r = $r0 + $n if $r < 0 || !$missing->member($r); $missing->remove($r); if ((my $min1 = $missing->min) > $min0) { print "$n\n$min1 <-- "; $min0 = $min1; } $r0 = $r; } sub int_handler { printf "\nn = %d, elapsed time: %.1fs\n", $n, tv_interval($t0); } sub break_handler { int_handler(); exit 0; }

    This script was developed under Windows 8.1, 64-bit, using Strawberry Perl:

    14:20 >perl -v This is perl 5, version 22, subversion 0 (v5.22.0) built for MSWin32-x +64-multi-thread

    The two signal handlers allow the script to be interrupted as follows:

    • Control-C causes the script to display the current value of $n and the total running time of the script so far.
    • Control-Break causes the script to display the same information and then exit.

    My takeaways from this meditation?

    First, we all know that micro-optimisation is pointless until you have first selected the best algorithm(s). But optimising an algorithm may actually consist in optimising its underlying data structures. Obvious? Yes, but still worth a reminder now and then.

    Second, CPAN is awesome! But you knew that already. :-)


    Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

NoŽl, NoŽl in Perl Poetry
2 direct replies — Read more / Contribute
by Athanasius
on Dec 25, 2014 at 01:03

    It’s Christmas! Ring the Monastery bell,
    As we with joy recall that first NoŽl
    When shepherds, watching through the lonely night,
    Were over-awed by heaven’s glorious light.

    With cheer, we’ll greet our brother monks, and sisters,
    And amnesty extend to Pythonistas,
    And other erring souls; foreach, today,
    We wish bright blessings in a long @array.

    And tho’ at times, alas!, we make a %hash
    Of our Monastic Rule, with insults rash
    And words unkind: today we start anew
    And map our way with kinder goals in view.

    A maid needs help with syntax? We’ll not fail ’er.
    A hill of bugs is in our way? We’ll $scalar.
    Tho’ all the year in Perl we script — and well, —
    Today it’s “Per”, in honour of NoŽl.

    © 2014

    Merry Christmas!

    Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

The PerlMonk's Progress in Perl Poetry
No replies — Read more | Post response
by Athanasius
on May 01, 2013 at 09:59
    Happy Monkday!!
    You’ve been here 1 thrilling year.

    Is it really a whole year since I joined the Monastery? I’m so glad I did, and so very grateful to all the monks whose enthusiasm and dedication make PerlMonks the special place it is.

    So this seems like a good opportunity to post a rather long poem I wrote to meet the challenge of finding rhymes for all the monastic levels, from Initiate to Pope.

    Enjoy! :-)


    Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Reflections from the Hermitage in Perl Poetry
1 direct reply — Read more / Contribute
by Athanasius
on Sep 08, 2012 at 04:59

    5 Perlimericks

    A team of aspiring Perlistas
    Would type till their fingers got blisters.
         But without their espresso,
         The code was a mess, so
    They had to take turns as baristas.
    A Perl coder sheepdog named Shep,
    As a herder acquired a rep —
         An array he did keep
         Full of cows, goats, and sheep,
    Then he gathered the sheep using grep.
    Said the Scribe, as his postings increased,
    “An obsession? No, not in the least!
         With my time I’m restrictive.
         I know it’s addictive.”
    At the last report, he was a Priest...
    An old coder’s wit (not a flash of it!)
    Rejected my Perl (the whole stash of it).
         He’d been coding all day
         An associative array,
    So I said, “Well, you’ve sure made a hash of it!”
    Said the boss, “Java’s pure and sublime;
    To use anything else is a crime.”
         But a rebel named Earl
         Said “I much prefer Perl” —
    And his project was finished on time.

    © 2012

    Athanasius <°(((><contra mundum

Scenes from the Monastery in Perl Poetry
No replies — Read more | Post response
by Athanasius
on Aug 17, 2012 at 05:38
    5 Rhyming Haikus
    Newcomer puzzled
    By de-refs; but quickly copes
    With lexical scopes.
    Seeker of wisdom
    Finds that reputation lags
    For want of <code> tags.
    Fresh-minted Friar
    Learning Consideration
    In Moderation.
    Tricky answer found—
    Dancing and cries of “Whoopie!”
    As in rolls XP.
    Newbies, scholars, saints,
    Together in the cloisters
    Opening oysters.

    © 2012

    Athanasius <°(((><contra mundum