I've decided to start a blog after Python package called Pelican caught my eye.
Pelican is a tool to generate a static blog from reStructuredText or Markdown input files. And most importantly it looks to be really fun, full python with jinja2 templating, which means it's fully extendable, configurable and modifiable as it's under GPL license.
Installing Pelican
The setup for Pelican
is pretty straightforward just run:
~> pip install pelican # Installing Pelican package for python
~> mkdir blog && cd blog # Create and jump into your blog directory!
~/blog/> pelican-quickstart
... #answer some simple questions here
~/blog/> vim content/first-page.md
... #write your blog here in simple markdown
~/blog/> pelican content # regenerate website
~/blog/> cd output
~/blog/output> python -m pelican.server # run pelican server to test locally
Now connect to http://localhost:8000
and there you go!
You can check here for how to template your message how to format your blog entry.
Vim markdown highlight for .md files
While going through the installation I've noticed that markdown doesn't have highlighting in vim which was peculiar. I found this post which describes a simple fix.
Simply create directories and file:
~/.vim/ftdetect/markdown.vim
with content:
au BufNewFile,BufRead *.md setf markdown
Theming Pelican
The default Pelican theme is pretty great however I stumbled on flex-theme on pelican theme repo on github. So that's my choice for now, but I'd like to touch up the color scheme a bit. Check out pelican-themes
.
Configuring Pelican
A lot of bells and whistles come straight out of the box with the pelican and your theme. For example to setup Disqus commnets all I had to do is add DISQUS_SITENAME = "granitosaurus"
where granitosaurus
is my registered name of my disqus account.
Publishing Pelican
Since Pelican generates a static webpage you can use anything to publish it. I decided to use github user pages which is a bit more complicated than the docs make it out to be. For user pages I like to keep the whole source code in branch source
and keep the generated output in master
as per github's user pages rule. Then use ghp-import
to automatically update master code with the most recent
$ git checkout -b source
$ pelican -o output -c publishconf.py
$ ghp-import output -b master -p
The above will make source branch, generate blog and push the output to master
so it's viewable at https://username.github.io
NOTE The most important bit is to set SITEURL
in your publishconf.py
to https://username.github.io
make sure it's HTTPS since default SITEURL generated by pelican is http and github pages requires https. This took me an hour of messing around to finally figure out.
Wrap Up
So far Pelican took quite a bit of work to get things going. It looks quite simple but there's a bunch of little quirks that are really hard to debug. It's not as easy as starting up a wordpress blog but it's quite fun and it seems to be really flexible.
Let's see if it pays off!
Checkout the source for more at https://github.com/Granitas/granitas.github.io/tree/source