Building Our Website

Over the 2016 Christmas break, I worked on two "rainy day" projects. One of these involved developing this website. In this post, I discuss the tools that I used for this project.

The first tool is the Python programming language. I use Python in our Data projects. So, when it came time to create our website, I looked for Python-based tools.

This then led me to Pelican: "Pelican is a static site generator, written in Python". "Static" means that the pages of our website, for now, consist merely of HTML code, with or without images and/or Javascript.

In web development, the opposite of "static" is "dynamic". The latter type of website generates a page using server code when a user loads the page in a browser or phone app (think Facebook).

In the future, we may need to transition to a dynamic website. For example, we might roll out a service where our clients login to our website for viewing and playing with the data mining results that we prepare for them. Such a service would require dynamic server-side code (since different customers would get different results for the same base URLs).

With this in mind, we chose Google Cloud Platform for hosting our site. Of course, given our current, simple website, this is kind of like choosing an helicopter for a trip to the grocery store — i.e. over-kill. But as the complexity of our site grows, and more server-side computation is needed, it will be easy to roll out these functions using the Cloud Platform.

Instead of Google Cloud Platform, we could have went with Amazon AWS, Microsoft Azure, or IBM SoftLayer for hosting There's a good argument that these services are more or less interchangeable. Indeed, we are already an AWS customer for two other sites, and AWS would have served nicely for what we just did with Google. So why did we choose Google?

I think one reason is gravity. That is, we already use Google for other company services, including email, calendar, domains, and patent searching. Seemed easy to add in the Cloud Platform for website hosting.

Beside this crappy Microsoft-circa-1990 reason, some other things that I liked about Cloud Platform are:

  • freemium: the storage is free for the first 5GB (our website right now is at .004% of that limit)
  • KISS: I like how they more or less hide the complexity of their features until you need them.

On the latter point, I find the glcoud bash command delightfully lucid and terse for deploying the website to the cloud ("gcloud app deploy"). But the wide range of options for glcoud makes it clear that it can handle complexity as well.

Wrapping up, the tool we use for writing the blog posts and pages of the site is Macdown: "The open source Markdown editor for macOS". It's a sweet program for writing web content in the Markdown language.

For writing and editing the Python code of our site, we use PyCharm: "Python IDE for Professional Developers". Back in the early 1980s, when I first learned programming, I didn't use an IDE. So most IDEs feel claustrophopic to me. Not PyCharm.

The total cost of all of these tools — Python, Pelican, Google Cloud Platform, Macdown, and PyCharm — is $0 (for the time being, and at the levels that we're using these tools).

It's a wonderful world.