Posted on 25 February 2013

People sometimes ask me what software tools I use to build the current version of this website, stevetjoa.com:

I ran across your site from a Google search while trying to export some data from python to Matlab. [...] I liked your site's simplicity [...] Can I ask what software/script (if any) you use for your website [...] How do you manage comments in your site.

As of today, here are the tools that I use:

  1. Hosting: Amazon S3 allows hosting of static web pages. This website has no forms or dynamic content. I simply produce static HTML files, upload them to S3, and point stevetjoa.com there. It costs me about $0.20 per month. Before S3, I tried Bitbucket and Github (free) static hosting, and they mostly worked fine, but there were some minor limitations (which I can't recall) that influenced me to use S3. I do have a Linode account for personal projects, but that seemed like overkill for a small static website. At one point, I even considered a database to keep track of posts, which would have been pretty silly for a website this small. (I strongly oppose overengineering.)
  2. Domain Name Registrar: name.com. Simple, cheap, works. No more GoDaddy.
  3. Layout: Twitter Bootstrap. I don't bother writing my own CSS or JS anymore. Bootstrap takes care of all of those annoying issues related to browser compatibility and responsive window resizing.
  4. Templating: Python Jinja2. I love Jinja, and I love everything that Pocoo makes, including Flask, Sphinx, and Pygments. For each page on this website, I create a body.html file that contains the body of each post. A short build.py script plugs the body.html into the template, main.j2.html, which contains everything you see here on the screen, including the header, footer, and sidebar. The output is index.html. Then, it autogenerates the list of posts on the front page. Finally, it uploads the final index.html pages to S3.
  5. Uploading: Python Boto is the Python API for Amazon Web Services. To connect, you need an AWS key pair. Then, you just select an S3 bucket, and choose a file to upload.
  6. Version control: Bitbucket with Mercurial. The rest of the world loves Git. I use Git every day for work, and it's fine. Git has a lot of powerful features... which I never use. For those basic version control tasks that I use most often, Mercurial is flat-out easier to use.
  7. Analytics: Google Analytics, free version. I mostly use it to determine which pages are most popular, how visitors get here (mostly Google), and where they're from (vaguely, only at city/province/country specificity).
  8. Editor: Vim to write the HTML files.
  9. Comments: None for now. I used to host this site with WordPress which easily allows you to enable comments on posts. It also comes with moderation tools and spam filtering. However, Amazon S3 only supports static pages, not dynamic content. I'm not sure if there is a workaround, because, more importantly, I believe that supporting comments is more trouble than it's worth, especially for a small website like this. I want a simple website. If, from my perspective, comments detract from that simplicity without returning value, then I won't support comments. However, visitors are always welcome to contact me by email, stjoa at izotope com!