This site is a personal blog and portfolio built with Jekyll. The following open-source tools, libraries, and services make it possible.
License
Code - All theme source files are released under the MIT License. Feel free to fork, adapt, and build on this work.
Content - Blog posts and written content are published under Creative Commons Attribution 4.0 International (CC BY 4.0). You may reuse or adapt the content with attribution.
Platform
- Jekyll - Static site generator. Markdown and Liquid templates compiled to flat HTML.
- Cloudflare Pages - Hosting and continuous deployment via
git push. - Ruby & Bundler - Dependency management for Jekyll plugins.
Languages & Tooling
- Liquid - Templating language embedded in layouts and includes.
- Sass / SCSS - Compiled by Dart Sass via
jekyll-sass-converter. BEM methodology, no external CSS framework. - Kramdown - Markdown parser configured with GFM input mode.
- Nokogiri - HTML parser used by build-time plugins for external link and heading anchor injection.
Jekyll Plugins
- jekyll-feed - Atom RSS feed at
/feed.xml - jekyll-sitemap -
sitemap.xmlfor search engines - jekyll-paginate-v2 - Blog feed pagination with AJAX load-more
Custom Build Plugins
_plugins/callouts.rb- Converts GitHub-style[!NOTE]/[!TIP]/[!WARNING]blockquotes into semantic HTML callout components at build time._plugins/external_links.rb- Addstarget="_blank",rel="noopener noreferrer",data-extattribute, andaria-labelto all external links inside post content at build time (zero runtime JavaScript)._plugins/heading_anchors.rb- Injects.heading-anchorlinks into everyh2/h3/h4inside post content at build time. JavaScript only handles clipboard copy on click._plugins/markdown_lint.rb- Warns about common Markdown authoring issues duringjekyll build.
Typography
- IBM Plex Sans - Body typeface. IBM's open-source sans-serif designed for technical documentation and product interfaces.
- Outfit - Heading typeface. Clean geometric grotesque with a strong weight range (400-800).
- Cascadia Code - Monospaced typeface for all code blocks and inline code. Microsoft open-source, excellent ligature support (
=>,!=,===).
All fonts are self-hosted as WOFF2 files with font-display: swap - no Google Fonts network requests.
Math Rendering
- KaTeX - Fast client-side LaTeX math rendering via
auto-render. Resources only load on posts withmath: truein front matter.
Search
- Custom BM25 engine - Client-side full-text search built without any external library. Implements BM25 ranking, Porter-style stemming, phrase matching, boolean operators (
AND/OR/-), and advanced filters (topic:,tag:,after:,before:,is:featured,words:>N,time:>N,intitle:,inurl:). The entire index is loaded from a staticsearch.jsonat runtime; no server is involved.
Progressive Web App
- Service Worker API - Custom
sw.jscaches pages and assets for offline reading, using a stale-while-revalidate strategy. - Web App Manifest -
manifest.jsonenables "Add to Home Screen" on Android/iOS with a standalone display mode.
Acknowledgements
Thanks to the open-source community and everyone who builds and maintains the tools that make projects like this possible.