Welcome to the source code for my personal engineering blog, where I share deep dives into Kubernetes, System Design, DevOps, and Software Engineering best practices.
Live Site: blog.riteshrana.engineer
This blog is built for engineers, by an engineer. It serves as a knowledge base for solving complex infrastructure problems, understanding distributed systems, and mastering modern CI/CD workflows.
- Kubernetes & Orchestration: Advanced patterns, security, and performance tuning.
- System Design: Architectural decisions, scalability, and reliability.
- DevOps: CI/CD pipelines, Infrastructure as Code (IaC), and observability.
- Backend Engineering: Python, Go, and database optimization.
This site is statically generated using Jekyll and hosted on GitHub Pages, ensuring speed, security, and reliability.
- Theme: Custom, maintained in this repository (see Frontend architecture below)
- Comments: Giscus (GitHub Discussions)
- Analytics: Google Analytics 4
- Newsletter: Custom PHP Integration (Self-Hosted)
- Deployment: GitHub Actions
- Content pipeline: lives in a separate private repository and publishes posts here; every post passes this repo's front-matter guard before it can deploy
To run this blog locally on your machine:
- Prerequisites: Ensure you have Ruby and Bundler installed.
- Install Dependencies:
bundle install
- Run Server:
bundle exec jekyll serve - Preview: Open
http://localhost:4000in your browser. - Test (also runs in CI before every deploy):
bundle exec ruby test/plugins_test.rb JEKYLL_ENV=production bundle exec jekyll build && bundle exec htmlproofer _site --disable-external
No theme gem and no JS framework — static HTML, one stylesheet, two small scripts.
| Path | What lives there |
|---|---|
_sass/_tokens.scss |
Design tokens: color (light "paper" / dark "graphite"), type scale, spacing, radii, motion. Change values here, never in components. |
_sass/_*.scss |
base → layout (header, menu, footer) → components → prose (article body) → syntax → pages → print |
_layouts/ |
default, home, post, page, course, archives, categories, tags, taxonomy (category/tag pages), redirect |
_includes/ |
One file per component: post-card, post-meta, toc, breadcrumbs, pager, pagination, newsletter-cta, subscribe-form, course-card, project-card, resource-card, state … |
_plugins/taxonomy.rb |
Normalizes tags/categories on every build using _data/taxonomy.yml (so pipeline posts can't reintroduce duplicates) and emits redirects from _data/legacy_redirects.yml. |
_plugins/content.rb |
Build-time HTML enhancement: code-block labels + copy buttons, heading anchors, callouts, scrollable tables, lazy images; summaries, reading time, related posts. |
_plugins/courses.rb |
Structure for the in-blog notes under courses/ (layout, chapter order from each syllabus, prev/next, links to the full courses). |
_plugins/search_index.rb |
Generates /assets/js/data/search.json for the ⌘K / Ctrl K search dialog. |
assets/js/site.js, search.js |
Theme toggle, dialogs, copy, scroll-spy, forms, filters; search is loaded on first use. |
_data/ |
taxonomy, course_sites (the standalone courses and which articles link to them), start_here (the home page reading path), deep_dives (in-blog notes), projects, resources, nav, icons (Lucide). |
Writing posts. New articles are folders under content/posts/<slug>/ — see docs/content-authoring.md for the full contract, the JSON publishing script and the draft workflow. Legacy _posts/ front matter needs title, date, categories (1–2 from _data/taxonomy.yml, primary first) and tags. Quote titles that contain a colon. Optional: description (otherwise the first paragraph is used), kind (Guide, Case Study, Deep Dive, Comparison, Opinion — otherwise inferred from the title), pin: true, last_modified_at. Callouts: > [!NOTE], > [!TIP], > [!WARNING], > [!IMPORTANT], > [!RESULT].
I run a self-hosted newsletter to share the latest articles.
- Subscribe: Form available on the home page.
- Privacy: No tracking pixels, no third-party data sharing. Just engineering content.
Ritesh Rana
Software Engineer
- Website: riteshrana.engineer
- Contact: contact@riteshrana.engineer
- LinkedIn: riteshengineer
- GitHub: ambicuity
© 2026 Ritesh Rana. All Rights Reserved.