Jeff Geerling's blog

More Christian Allegory in The Dark Knight Rises: Peter Foley and Sampietrini

There was a thought-provoking article by Catholic Veritas titled The Dark Knight Rises: Sacred Art. Most of the main characters, locations, and themes were related to similar Christian names, places, and themes, but one character left unexplored was Peter Foley, the deputy police commissioner who had a rather large role in the film, considering the number of other leading cast members.

I noticed, in watching the movie a second time, a certain scene where police are martyred by the main protagonist (to the words of "Shoot them. Shoot them all."), and the camera moves to a closeup of one of the police officers (Peter Foley), laying murdered in the street, in his dress attire.

Sampietrini Officer killed in the Dark Knight Rises

An observant person would notice a few things about this scene:

  • Like Peter the Apostle (and first Pope), this particular officer (Deputy Commissioner Peter Foley) had earlier denied the call by commissioner Gordon to come out of hiding for fear of the angry mobs that were wont to kill people in positions of authority (including the police).
  • Foley, who had seemed a coward when he was in hiding while his compatriots were hopelessly imprisoned in the city sewers, was the first to step forward into the battle to defend the city, and all the other police officers followed his lead.
  • The stone pavement underneath the Foley is made up of small, square stones—hearkening to the sampietrini, found throughout ancient Rome. (More on this later).

Like C.S. Lewis, it seems that Christopher Nolan sometimes hits his audience with an allegorical 2x4 sometimes! That officer matches very well the profile of the Apostle Peter—and Christopher Nolan seems to make his allegorical statement even more blindingly obvious through the subtler things. In this case, the pavement.

Sampietrini – 'Little Peters'

Jeff Geerling standing on Sanpietrini pavers outside of St. Peter's square
Yours truly, trying to make a happy face just outside St. Peter's square (Rome, Italy).

When my wife and I visited Roma after we were married, our tour guide gave us a short history lesson about the distinctive pavement found throughout the streets and sidewalks of most of Rome. Instead of using concrete, asphalt, or any other kind of pavers, Rome uses thousands of small squares of volcanic stone, nicknamed 'sampietrini'.

The reason for this name is that the stones were originally chosen by Pope Sixtus V as the pavement for St. Peter's Square (in the Vatican), and eventually for most of Rome, Italy. St. Peter's square is built around an egyptian Obelisk that was originally placed in Rome by the Emporer Caligula in 37 A.D., and was in a Roman circus. It just so happens that this particular circus was the one in which Peter the Apsostle was matryed—thus, the Church built the magnificent namesake basilica in that location.

The stones received the nickname sampietrini—'little St. Peters'.

So, is it simply coincidence that the 'martyered' police officer (who denied the police force and later became its de facto leader in its great battle) died in a square paved with stones hearkening to the sampietrini—or is Nolan really that deep with his allegory? Looks like we'll have to go all Inception on this thought and see how many more layers Nolan has placed in this movie!

Server Check.in - Website and Server uptime monitoring

Server Check.in is a simple and inexpensive server and website uptime monitoring service I've recently launched.

Server Check.in logo

If you have a website or online service you need to make sure is running, Server Check.in is a great way to get notified when there's a problem. Unlike most other monitoring solutions, Server Check.in offers free SMS (text) messages and email notifications, and it only costs $15/year (just $1.25/month!).

The Motivation

There are probably thousands of other uptime monitoring services on the web, and it's typically a good idea to use existing tools rather than build your own—if they're practical for your needs!

I had three main requirements for any service I wanted to use:

  1. I needed to monitor a few websites (at least three).
  2. I didn't want to spend more than ~$20/year.
  3. I needed SMS (text message) notifications, and I didn't want to pay a bunch extra to get them.

Many services hit one or two of these marks—some extremely well! However, no service I found could meet all three of these requirements, though a few did come close.

Knowing that SMS messaging is relatively cheap (typically around $0.01 or less per message), and knowing that I needed a new challenge, I decided to build myself the best possible server monitoring and notification system I could—for myself. I built every feature I wanted, and made it fit my workflow perfectly. It's ridiculously simple, it lets me get email and SMS notifications, and it even shows me how my sites are performing over the past day and month.

Unlike many of my personal projects, though, I noticed that this service is one that would be good to share with others—I believe it's the simplest and most inexpensive solution for individuals and small businesses who want to monitor their servers and websites.

It doesn't have all the fancy bells and whistles of other more 'enterprise-level' solutions, but I don't need that. I just need to know when one of my sites goes down, so I can react to the outage quickly. Downtime is lost money!

The Execution

I often think of Drupal as a bit of a golden hammer, but it really is a flexible tool that can do a wide array of things very well. Drupal helped me build the core components of Server Check.in—user management, login, content management, and user interface—quickly and easily. The site is running on Drupal 7 (though I'm beginning testing with Drupal 8), along with a few stable contrib modules to fill out the UI.

Responsive design on Server Check.in website.

I used the excellent Zen theme framework to build a fully-responsive HTML5 theme, and jQuery (baked into Drupal) to add a little UI goodness here and there. I spent a lot of time trying to make sure that users on any device or viewport would receive an optimal overview of all the information they needed to see.

For the back end—the server checks, notifications, etc.—I have a mixture of a few custom Drupal modules, some drush scripts, and some other custom glue. I find a real value in using Drupal's APIs (Batch API, Queue API, Form API, Database API, etc.) along with drush to scale out certain kinds of services, instead of starting from scratch (though, at some point, I will probably need to break a few services away completely).

I've built everything in a modular fashion so it should be relatively easy to scale horizontally as I get constrained by the number of users. (Right now everything's running on one server, and I've projected that I can keep it this way for the first batch of users—hopefully I'll be able to expand soon, but I'll consider Server Check.in a success if it pays enough to cover the costs of email, hosting, and SMS (remember, I really just built it for myself ;).

I'm also experimenting with Python and Node.js to see if I can get HTTP checks and pings to happen more efficiently. In the end, though, I will stick with whatever's simplest, even if it doesn't incorporate the most amazing new technologies programming languages. (Notably, the majority of Server Check.in runs on MySQL, PHP, Apache and CentOS. I know this stack well, and I am loathe to change unless I have a good reason, or until the performance, scalability or structure is a crutch. So far this has not been the case on any project I've worked on in my career.)

Currently, I'm using cURL for HTTP checks, and a custom-built class for PHP, Ping for simple IP/domain pings.

Payments are processed through Stripe, and this is the first time I've ever actually built something on top of Stripe's excellent API—in the past I've used PayPal and some other payment processors who used SOAP, XML, or other protocols, and had very poor DX (developer experience). Many services don't have a test environment, or have a very poor test environment (cough PayPal), and barely comprehensible API documentation. And you can forget about helper libraries for common languages (Ruby, Python, PHP, Java...). Not so with Stripe. I'm extremely satisfied with Stripe so far, and I think their platform is a major boon to online payment acceptance.

Sign up now!

If you're interested in knowing when your servers or websites are down, or tracking their performance over time, please consider signing up for Server Check.in—it only takes one minute!

Any questions about the service, or suggestions to make it better? Please let me know below or in this Hacker News thread.

Pope Benedict XVI joins Twitter as @pontifex

While Pope Benedict has indirectly used Twitter and other forms of online media to promote the faith in the past, he has never had an account on any social network to which he (the royal he—the Papacy) has been personally connected.

Pope Benedict XVI signature on Twitter background

That's going to change as of December 12 (the feast of Our Lady of Guadalupe), when he tweets from the new @pontifex account (available there and in other languages at @pontifex_[language code]). The announcement made Twitter's own blog, and is detailed a bit more in this News.va post:

“In concise phrases, often no longer than a verse from the Bible, profound thoughts can be communicated – as long as those taking part in the conversation do not neglect to cultivate their own inner lives.”

On the 12th, the Pope will be responding to questions posted with the hashtag #askpontifex (which is already lighting up with thousands of questions).

I welcome Pope Benedict to Twitter, and hope that the Vatican can help make the @pontifex account a viable means of communicating the faith and interacting with the world at large—in bite-sized chunks.

Here's to a new era of integrated Vatican communications!

Replacing the hard drive in a (non-unibody) MacBook Pro

A friend of mine had an older 2008 MacBook Pro (the kind that does not have the modern 'unibody' construction), and he noticed it was getting slower. He upgraded the RAM to max it out at 4 GB (I think it might be able to go to 6 or 8 GB if needed). But a lot of things took a long time to do, even though the Mac had a 1.86 Ghz Core 2 Duo processor (not a slouch by any means).

He asked me to replace the hard drive with an SSD, so I did. I followed this iFixIt guide, and put in a new OCZ Agility 256GB SSD, which is way faster (especially for random access, like when you boot the computer or launch an app) than the old disk drive that I removed from the MacBook Pro.

I recorded the entire process (about 23 minutes) using my Nikon D7000 along with a Audio Technica PRO88W wireless microphone, and posted it on YouTube:

The Importance of All Souls

Yesterday, at a Mass celebrating the Solemnity of All Saints, the priest's homily was about how All Saints was like Thanksgiving; we're all gathered around a table for a feast—our chatty aunt, our boisterous grandpa, our crazy grandma who drinks a little too much. And all those relatives who have died—our aunts and uncles, our grandmas and grandpas, some of our siblings, and maybe children—are saints. The feast is to celebrate all of them, not 'big name' saints like Augustine, Aquinas, and Clare.

I was willing to give the priest the benefit of the doubt when he said this, because he could mean that all those who have passed away and are now in Heaven are saints... but then he said further: "We're all more good than bad," and proceeded to talk about how he loves eulogies in funeral liturgies (which he says became a norm after Vatican II) because they show all the good things people did in life. He also said he's glad priests don't wear black for funerals anymore (they can, of course, but very few do), because black is so depressing. Priests wear white because they celebrate the resurrection of the dead!

Get out of Hell Free card
This is not how faith works.

What an incredible thing to hear! I might as well stop going to Mass, then, because I generally try to do good things, and worship of God is just one of many good things I could be doing, right? Wrong. Oh, so wrong.

You see, the priest has fallen prey to the belief in the fundamental option and the false outcome of its conclusion: We generally choose to either try to do good and follow God, or not. If we try to choose the good, it doesn't really matter what we do, because God will be all smiles and hugs when we die and visit him at the pearly gates.

Here's the problem: There are most certainly things that can cause us to not get to Heaven, even if we generally (or almost always) do good things. We call those things mortal sins: murder, adultery, masturbation, gluttony, not making holy the Lord's day, etc. When a person commits a mortal sin, that person must go to confession or the person risks losing Heaven!

And another problem: most people don't go straight to Heaven after dying. There's a saying, "there are two people lying at a Funeral—one in the coffin, and one at the pulpit." One good reason for not having a eulogy in the actual Funeral liturgy is that it tends to sanctify the person. Most people, believe it or not, are not perfect, and are not going to Heaven straightaway. They're going to need to spend some time in purgatory purifying themselves of all the effects of their sins before they can make it to Heaven. Imagine a child playing in mud and dirt for an afternoon—before coming to dinner with the rest of his family, he'll need to wash up; the more dirt, the longer the washing. Purgatory's like that.

Also, if one believes that all people who die end up in Heaven, what's the point of today's feast, All Souls? Why would we celebrate All Saints one day and All Souls the next? We're not celebrating our own souls—we're celebrating and praying for the souls of the faithful departed; the souls of our aunts and uncles, grandmas and grandpas, brothers and sisters who have passed away before us. These souls are in need of our prayer, for many are not yet in Heaven!

We can't be sure of anyone's sanctity, so we default to praying for all those who have passed away and are not canonized—even those who we feel lived the holiest of holy lives here on earth! Yes, including your saintly grandmother who prayed the rosary (all the mysteries) every day. Yes, including your uncle who ministered to the poor every week. Yes, including the priest or nun who seemed to be on his or her knees praying more than anyone else you know.

This anecdote (from an article on eulogies in Catholic funeral liturgies) about Mother Teresa illustrates the point that the holiest people are most acutely aware of the fact that they are not holy enough to enter Heaven (yet):

Another joke tells of the man who died at the same time as Mother Teresa of Calcutta and found himself a few places behind her at the Pearly Gates. He is complacent that he will be admitted until he hears Saint Peter exclaim sternly, "But Teresa, you could have done a lot more."

Mother Teresa herself would have insisted that she could have done a lot more. It is one of the characteristics of saints that they are acutely aware of their sins, of how completely they depend on God's mercy, of how little they "deserve" at God's hands. But modern sensibilities have subtly changed hope—that a merciful God will grant me salvation—into arrogant certainty.

We are not certain that our deceased relatives are in Heaven, so we pray for them on this great feast, the feast of All Souls. We celebrate the lives of the saints on November 1st, and hope for the sanctification of others in the communion of the faithful on November 2nd.

Eternal rest grant unto them, O Lord, and let perpetual light shine upon them. May the souls of the faithful departed, through the mercy of God, rest in peace. Amen.

Pages

Subscribe to Reviews Subscribe to Articles Subscribe to All Content Subscribe to Blog Subscribe to RSS - Jeff Geerling's blog