Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/karlicoss/beepb00p
My blog!
https://github.com/karlicoss/beepb00p
blog hakyll ipython org-babel org-mode
Last synced: 4 months ago
JSON representation
My blog!
- Host: GitHub
- URL: https://github.com/karlicoss/beepb00p
- Owner: karlicoss
- License: other
- Created: 2019-11-02T21:44:27.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-01-10T00:56:06.000Z (about 1 year ago)
- Last Synced: 2024-09-28T18:40:56.375Z (4 months ago)
- Topics: blog, hakyll, ipython, org-babel, org-mode
- Language: Python
- Homepage: https://beepb00p.xyz
- Size: 592 KB
- Stars: 82
- Watchers: 4
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.org
- License: LICENSE.md
Awesome Lists containing this project
- awesome-starred - karlicoss/beepb00p - My blog! (others)
README
Compiler for my blog.
NOTE: readme is a little outdated, I've moved away from Hakyll to a custom generation [[file:src/build.py][script]].
You can fild retired Hakyll stuff [[file:hakyll][here]].Features:
- formats:
- [[https://beepb00p.xyz/sandbox/test.html][org-mode]]
- [[https://beepb00p.xyz/sandbox/Test.html][ipython notebooks]]
- markdown (useful to link READMEs as blog posts)
- tags
- feeds (rss/atom)
- comments support using Isso
- math support via Mathjax
- drafts
- custom metadata attributes (e.g. tags, special uuid attribute for linking comments, pingback)
- symlink supportThere are some comments in ~site.hs~, feel free to email me or open an issue if you want me to explain how something works!
I'll write down about it properly at some point later!* Post compilers
** Org-mode
See my [[https://beepb00p.xyz/sandbox/test.html][org-mode sandbox]].Org related stuff is in ~Org.hs~ and ~src/compile_org.py~.
To compile Org into HTML, I'm invoking Emacs in batch mode in ~compile_org.py~ script.
Your can try it with ~src/compile_org.py --test src/test.org~.Reason I'm not using Pandoc for rendering is that it only supports a subset of Org-mode.
If you are a heavy user of Org-mode features, e.g. doesn't support literate programming via org-babel.Using custom script lets me configure (and hack a little) Emacs to bend it into doing what I want.
I also process the resulting HTML with BeautifulSoup to add some things org-mode isn't capable of like sidenotes.** Ipython
See my [[https://beepb00p.xyz/sandbox/test.html][org-mode sandbox]].Ipython related things are in ~Ipynb.hs~ and ~src/compile-ipynb~.
I'm compiling with ~jupyter~, that executes the code and does few extra tweaks in ~src/ipynbconfig.py~, in particular:
- hidden cell support (e.g. when you have lots of boilerlate that don't need to be in the post body)
- details/summary support, so you can collapse boilerplate or long outputs in a collapsible section.* Misc things
** ~css/generate-links.py~ for generating CSS for certain links (e.g. wikipedia/reddit/github)
** symlink support: see [[file:src/poke-symlinks.py]] and [[file:preview]].
Very useful when the target post (e.g. ipython notebook is in a different repository). Without this, detecting changes wouldn't work (see [[https://github.com/haskell-fswatch/hfsnotify/issues/87][issue]]).
** screenshot comparisons via [[https://github.com/ewanmellor/git-diff-image][git-diff-image]]
Helpful for testing css changes.
In addition I'm using [[https://github.com/yahoo/blink-diff][blink-diff]] since =compare= can't handle pages that are too long :(* Running & building
I guess best place to start would be [[https://jaspervdj.be/hakyll/tutorials/02-basics.html][hakyll tutorial]].* Compiling the site
When I want to release new version of site, I'm basically doing a clean rebuild and copying the resulting ~_site~ directory.In reality it's a little more elaborate, I'm keeping the whole website (HTMLs) under git, so I can easily track changes and rollback in case of issues.
I'll explain it and share some workflows later.* TODOs
** TODO [2019-11-09 Sat 16:52] explain about using ~.metadata~ files