I do not intend to spend a lot of time on articles about web servers or other matters
related to setting up python-based applications on the internet. However, I will take some
time to walk through how this blog is set up and how I think it shows the spirit of
using the diverse python eco-system to build a simple, scalable solution that meets
The first part of this article will describe my reasoning behind my technology choice.
I will provide a follow on article that describes how I set up my system.
When it comes to setting up a blog, you have one big questions to answer:
- Do I want to host my own site or use an available service?
There are lots of possible options for hosting your blog such as WordPress,
Tumblr, Blogger. The key benefit with these services is that setting up your blog
may be as simple as signing up for the service and start typing away.
The other option is to host your own site. You can even use some of the turnkey solutions
above in your own setting. For the most part, I believe in Eating my own dog food.
I decided that I wanted to host my own site but do it in a way that is relatively simple manner.
I have set up blogging sites before with my own custom code. There are certainly technical challenges but the biggest
concern is that it does require time to configure a server and maintain it over time. Even a simple blog platform
requires knowledge of web servers, database servers and linux environments. Believe me, it is great to learn
these technologies and it can be fun. However, you need to be prepared for the long haul. I want
to keep my time free to focus on the content of this site and not the administration of the underlying guts.
In keeping with the spirit of PB Python, I wanted to do a couple things:
- Use python
- Get up and running quickly
- Solve my problem
- Make sure the ongoing maintenance is manageable
These guiding principles apply to almost all the solutions I’ll be walking through in my future entries.
I have hosted my own blog in the past but as I started looking at options for this site, I found that
there are lots of technologies that allow you to create a static blog. As I read more about the
options, I realized that this was the best option for this site.
Statis blogging software essentially takes a collection of text files and creates an HTML-based
site for your blog. The static HTML pages have several advantages over a typical dynamic web site:
Since all the pages are just simple HTML files, they can be served up quickly by your web server.
There is no need for a database server or complex web server setup. Hosting a group of HTML files
is about the simplest thing a web server can do.
Because all of the content is stored in text files in a handful of directories, moving and backing up
is relatively simple. Also, the blogging software is relatively easy to install so upgrading or changing
to other servers should be manageable.
- Version control
As mentioned earlier, all of the content is stored in text files. This has the added advantage of
making it easier to check all the content into a version control system. By having in version
control, I can more easily see changes and have a simple backup mechanism. The other added bonus
I found was that I could even edit my pages online in my source repository. This turned into a great
way to capture ideas when I’m not at home.
A quick note about static blogs. One of the key components of a blog is allowing readers
to provide feedback. Normally a static blog wouldn’t be able to handle comments but services such
as Disqus allows us to use a 3rd party to manage comments through their own system. Building my own
comment management system is another challenge I wanted to avoid. Disqus also has some nice social aspects,
provides a central place to manage my comments and is very common in the python world. Hopefully this means
the barriers to people signing up for it are very low for this audience.
As you can see in the footer, I’ve chosen pelican, for the site. There are many other options
out there but I chose pelican because:
- Written in python
There are options in Ruby and other languages but I prefer to stick with Python options when all else is equal.
- Mature project
Actively being developed since 2010.
- Actively maintained
Last release in July 2014.
- Good documentation
Documentation includes tutorials on the install, customization and themeing.
- Lots of plugins
I am not sure which ones I’ll need now but it’s reassuring to know it is out there.
- Multiple themes
This was actually important to me. I am not strong at the actual design of web sites. I know CSS/HTML
but am not very good at making beautiful websites on my own. I really liked the ability to look at
all the pelican themes that are readily available. Designing sites that work on phones, tablets, laptops,
and multiple browsers is tough. I wanted as much help as I could get.
- Easy to setup and use
I followed the basic instructions for setting up a virtual environment. This tutorial was a great place to start.
I drafted some sample articles and posts and tried it out for a while before deploying. I tried multiple themes,
and played around with it. I was able to do everything I thought I needed so I moved forward.
I hope this overview was helpful. In my follow-on article I will expand on how I installed the blog,
how I am hosting it and my basic workflow.