This is the content hosted at sef.kloninger.com. It's a Nikola
static site hosted by Github pages. This repo contains both the
source files for the blog and the rendered pages. The source files
are in the dev
branch (default for this repo) and the build
products are pushed to master
.
The general workflow is:
-
Write. I like writing in Markdown with vi. Green characters on a black background. Old school is the good school.
-
Review. Nikola has a nice feature to automatically rebuild your project whenever something changes. workflow. Command is
nikola auto -p 8888
. The extra port because the default, 8000, usually collides with my dev environment or something similar. -
Publish. Check the changes to the dev branch and push that branch. Then run the command
nikola github_deploy
to build and publish the build product to the master branch. github_deploy builds, commits, and pushes in one fell swoop. -
Repeat
Now that Nikola has moved over to Python 3 we have a little bit more to set things up:
cd ./sefk.github.io
python3 -m venv .
source ./bin/activate
Remember to source ./bin/activate
when starting up future shells.
I chose not to check in my theme. I figure maybe it'd be better to have that versioned elsewhere. This will install the requirements to run Nikola and then start it going.
pip3 install -r requirements.txt
nikola theme -i bootstrap3
nikola auto
If you're seeing this:
fatal error: 'libxml/xmlversion.h' file not found error: command 'cc' failed with exit status 1
Then try this:
brew install libxml2
brew install libxslt
brew link libxml2 --force
brew link libxslt --force
CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2 CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install lxml
Not sure the brew steps are req'd or not. That last step is what did it. From this answer on StackOverflow.