Jeff Geerling's blog

Server - Website and Server uptime monitoring

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

Server logo

If you have a website or online service you need to make sure is running, Server is a great way to get notified when there's a problem. Unlike most other monitoring solutions, Server 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—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 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 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 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—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 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.

Windows 8 - A Long Way to Go [Updated]

[Update: I've been playing around with Windows 8 Pro for a few hours since receiving it from Amazon (Win 8 Pro is only $66 on Amazon!), and I have a few more observations:

  • For an IT staffer or someone doing normal Windows configuration—adding printers, changing TCP/IP settings, etc., Windows 8 is almost exactly the same as Windows 7, with some typical version-to-version text and icon arrangement changes.
  • Using gestures with a mouse in a virtualized environment is a pain. Keyboard shortcuts are easier, but require more learning. I'll probably install a start button app.
  • Metro is mostly out of the way, but certain things have to be done through the metro interface, and on a computer with a keyboard and mouse, those things are not immediately intuitive (see notes below).
  • Interface animations and transitions are pretty smooth; still not as unintrusive as iOS, but better than anything else I've seen (including Android).]

I've been playing around with all the Windows 8 preview releases, and reading a bunch of early preview reviews, and current reviews. This review from Ars Technica highlights the highs and lows of Windows 8, but almost all the most annoying aspects of the new version of Windows have to do with the 'desktop' vs 'Metro' ('modern ui') divide. This paragraph summarizes my thoughts exactly:

There is a hard and dividing line between the two worlds. Far from allowing seamless switching between the two environments, they barely even acknowledge the other's existence. It's extremely limited, and it means that as a person who has to use the desktop for some things, I find myself avoiding Metro apps for all things. Bridging the gap is just too painful and annoying.

At this point, I'm still of the opinion that Apple has it right: Full-featured desktop OS optimized for keyboards, mice, and trackpads called Mac OS X, and Full-featured tablet/phone OS optimized for touch called iOS.

I had hoped Windows 8 would be a desktop OS on the desktop (or when you have a mouse/keyboard attached to your Windows tablet), and Metro/modern ui when you're using a tablet. Trying to have both worlds on both platforms feels terrible, especially on the desktop. Instead of feeling like a 'modern' ui, Metro feels like a thorn in Windows' side because of how annoying it can be. Even with all the (hard-to-learn) keyboard shortcuts.

Hopefully Windows 8 will improve it's desktop experience dramatically, or I fear it will be another Windows Vista (maybe worse) in terms of early user acceptance/perception.


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