Skip to main content

Gynvael Coldwind is a security researcher at Google, who hosts weekly livestreams about security and programming in Polish and English). As part of the streams, he gives out missions — basically, CTF-style reverse engineering tasks. Yesterday’s mission was about Elvish — I mean Paint — I mean Python programming and bytecode.

To create a project that other people can use and contribute to, you need to follow a specific directory structure. Moreover, releasing a new version should be as simple and painless as possible. For my projects, I use a template that has the structure already in place, and comes with automation for almost every part of a release.

You’ve just written a great Python web application. Now, you want to share it with the world. In order to do that, you need a server, and some software to do that for you.

The following is a comprehensive guide on how to accomplish that, on multiple Linux-based operating systems, using nginx and uWSGI Emperor. It doesn’t force you to use any specific web framework — Flask, Django, Pyramid, Bottle will all work. Written for Ubuntu, Debian, Fedora, CentOS and Arch Linux (should be helpful for other systems, too). Now with an Ansible Playbook.

Revision 5 (2017-04-29): Better module specification description, environment variable configuration info

I tested the speed of four static site generators: Nikola, Pelican, Hexo and Octopress, in a clean environment. Spoiler alert: Nikola won.

Disclaimer: author is a developer and user of Nikola. The test environments used were the same for all four generators.

Generators tested

  • Nikola v7.6.1, by Roberto Alsina, Chris Warrick and contributors; Python; MIT license
  • Pelican v3.6.0, by Alexis Metaireau and contributors; Python; GNU AGPL license
  • Hexo v3.1.1, by Tommy Chen and contributors; Node.js; MIT license
  • Octopress v2.0, by Brandon Mathis and contributors; Ruby; MIT license (based on Jekyll)