Beepb00p
My blog!
Install / Use
/learn @karlicoss/Beepb00pREADME
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 support
There 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
Related Skills
node-connect
338.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
338.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.6kCommit, push, and open a PR
