clay | ||
drafts | ||
files | ||
fonts | ||
images | ||
images-src | ||
infra | ||
js | ||
lib | ||
pages | ||
posts | ||
src | ||
templates | ||
.drone.yml | ||
.gitignore | ||
blog-rekahsoft-ca.cabal | ||
channels.scm | ||
guix.scm | ||
LICENSE | ||
manifest.scm | ||
README.org | ||
robots.txt | ||
Setup.hs | ||
site |
Source Code for #! Lambda Slang
- Features
- Tools
- License
- Guix Development Environment
- Building
- Deploying
- Known Issues
- Allow external code files to be included in pages and blog entries
- Remove the use of application cache now that most major browsers are pulling support
- Completely replace all references to stack
- Fix analytics (pywiki is no longer in use, find and use something else)
- Modernize javascript in js/default.js
- Allow posts (and pages?) to be written in org-mode
- Fix rendering of mathjax
- Setup automated deployment from ci
- Add missing terraform backend files to repository
- Figure out fast workflow for modifying haskell sources without rebuilding guix package
#! Lambda Slang is the personal technical blog of Collin Doering, built using software that respects our freedoms.
Features
- Single Page Application (SPA)
- Utilizes CSS 3
- Uses HTML5 Application Cache for offline viewing of website
Tools
The creation of this website was made possible by the following open source tools and libraries:
- Hakyll is used to generate site from static files
- Clay is used for CSS pre-processing
- Skeleton is used for CSS boilerplate
- MathJax is used for rendering mathematics
- JQuery and JQuery-address are used for various DOM manipulations
- Inkscape and the Gimp were used to create various images/artwork
- Gnu Free Fonts, specifically FreeMono is used as main font
- Gnu Emacs because there is no place like home; and no greater editor!
License
Simply put, you're welcome to use the code used to generate this site though there are a few restrictions:
- Any images and artwork that embody the likeness of "#! Lambda Slang" are not to be distributed or used and are strictly copyright
- The content of pages and posts can be used with attribution, providing you aren't making money off of it
Various licenses (GPLv3, Creative Commons BY-NC-SA License, and Creative Commons BY-NC-ND License) are deployed dependent on which part of the site is in question. Please see the LICENSE file for full details.
TODO Guix Development Environment
Build Site
guix shell -CP -E LANG -E GUIX_LOCPATH -m manifest.scm -- bash -c './site clean; ./site build'
Modify haskell sources
guix time-machine -C channels.scm -- shell -CNP -E LANG -E GUIX_LOCPATH -Df guix.scm -m manifest.scm
TODO Building
Guix is used to manage dependencies for this project.
A simple wrapper script site
is provided that also takes care of building the static site
and offering access to hakyll commands.
./site build
./site watch
Deploying
Terraform is used to deploy this site. Its configuration files are located in ./infra
. Three
workspaces are currently available, including:
- default (unused)
- staging
- production
For example, this is how to deploy the production version of the site:
cd infra
terraform workspace select production
terraform plan --var-file=production.tfvars --out local.plan
terraform apply local.plan
Known Issues
If you have an issue while browsing my blog please file a issue in the blog-rekahsoft-ca issue tracker.