Czeslaw Milosz was the writer-in-residence at UNC c. 1992.
I used to see him all the time at the Hardback Cafe, always sitting at a two-top
drinking coffee, reading, writing, eating chips and salsa. I remember a gentleness
behind the enormous bushy eyebrows and that we called him Coleslaw. – anon
- IRC in #coleslaw on Freenode!
- Subscribe to the mailing list email@example.com.
Git for storage
RSS and Atom feeds
Markdown Support with Code Highlighting provided by colorize
- Currently supports: Common Lisp, Emacs Lisp, Scheme, C, C , Java, Python, Erlang, Haskell, Obj-C, Diff.
- Static Pages
- Sitemap generation
- Incremental builds
- Analytics via Google or Piwik
- Comments via Disqus or isso
- Hosting via Github Pages or Amazon S3
- Embedding gfycats
- Tweeting about new posts
- Using LaTeX via Mathjax
- Writing posts in ReStructured Text
- Importing posts from WordPress
- Code Highlighting via Pygments instead of colorize
See the wiki for a list of coleslaw-powered blogs.
A core goal of coleslaw is to be both pleasant to read and easy to
hack on and extend. If you want to understand the internals and bend
coleslaw to do new and interesting things, I strongly encourage you
to read the Hacker’s Guide to Coleslaw. You’ll find some
current TODO items towards the bottom.
Coleslaw can either be run manually on a local machine or
triggered automatically on git push to a server. If you want a
server install, run these commands on your server after setting up a
git bare repo.
Otherwise, run the commands on your local machine.
- Install a Common Lisp implementation (we recommend SBCL) and
- Place a config file for coleslaw in your
$HOMEdirectory. If you
want to run multiple blogs with coleslaw, you can keep each blog’s
config file in that blog’s repo. Feel free to copy and edit the
example config or consult the config docs
to create one from scratch.
- This step depends on whether you’re setting up a local or server install.
- Server Install: Copy and
example post-receive hook to your blog’s bare repo.
- Local Install: Just run the following commands in the
REPL whenever you’re ready to regenerate your blog:
(ql:quickload :coleslaw) (coleslaw:main "http://www.webdesignernews.com/path/to/my/blog/")
- Server Install: Copy and
- Optionally, point the web server of your liking at your config-specified
:deploy-dir. Or “deploy-dir/.curr” if the
versionedplugin is enabled.
- If you use Emacs, consider installing
coleslaw-mode to author your
Now just write posts, git commit and build by hand or by push.
The Content Format
Coleslaw expects content to have a file extension matching the class
of the content. (I.e.
.post for blog posts,
.page for static
There should also be a metadata header on all files
starting and ending with the config-specified
:separator, “;;;;;” by
;;;;; title: foo tags: bar, baz date: yyyy-mm-dd hh:mm:ss format: html (for raw html) or md (for markdown) excerpt: Can also be extracted from content (see :excerpt-sep config param) ;;;;; your post
Posts require the
Pages require the
To omit a field, simply do not have the line present, empty lines and
fields (e.g. “tags:” followed by whitespace) will be ignored.
Two themes are provided: hyde, the default, and readable (based on
A guide to creating themes for coleslaw lives