Share my learning journey.
🌐 Live at: https://tyrusrc.github.io/learnfromscratch/
Learn From Scratch is a personal technical-learning blog. I publish notes here as I work through programming topics — languages, security, dev tools — from the ground up. Each post is a snapshot of what I understood about a topic at the time I wrote it.
learnfromscratch/
├── .github/workflows/ # GitHub Actions build & deploy workflow
├── _config.yml # Jekyll site config (theme, identity, defaults)
├── _posts/ # Blog posts (YYYY-MM-DD-slug.md)
├── _tabs/ # Sidebar tabs (about, categories, tags, archives)
├── assets/css/ # Custom CSS overrides on top of Chirpy
├── index.html # Home page (uses Chirpy's `home` layout)
├── Gemfile # Ruby dependencies
├── Gemfile.lock # Pinned dep versions (committed)
├── .ruby-version # Ruby 3.3.6 (rbenv)
├── LICENSE # Apache License 2.0
└── README.md # You are here
git clone https://github.com/TyrusRC/learnfromscratch.git
cd learnfromscratch
# Ensure Ruby 3.3.6 is available (rbenv picks .ruby-version automatically)
rbenv install 3.3.6 --skip-existing
bundle install
bundle exec jekyll serve --livereload
# → http://127.0.0.1:4000/learnfromscratch/bundle exec jekyll build -d "_site/learnfromscratch"
bundle exec htmlproofer _site --disable-external \
--ignore-urls "/^http:\/\/127.0.0.1/,/^http:\/\/0.0.0.0/,/^http:\/\/localhost/"The -d "_site/learnfromscratch" flag mirrors what actions/configure-pages
does in CI so that internal links resolve against the same baseurl prefix.
- Copy
_posts/2026-05-22-welcome-to-learn-from-scratch.mdand rename it toYYYY-MM-DD-your-slug.md. - Edit the front matter:
title:— quoted string.date:—YYYY-MM-DD HH:MM:SS +0700.categories:— exactly one category, 1–2 levels broad-to-narrow, e.g.[Python, Async].tags:— any number, lowercase, e.g.[asyncio, decorators].
- Write the body in Markdown. Fenced code blocks need a language hint so Rouge can highlight them.
git add,git commit,git push. The workflow builds and deploys automatically (~1–2 minutes).
Every push to main triggers
.github/workflows/pages-deploy.yml,
which sets up Ruby 3.3, installs gems (cached), builds with
JEKYLL_ENV=production, runs htmlproofer to catch broken internal
links, and publishes via actions/deploy-pages. CI failures block
deployment.
- Jekyll 4.4 — static site generator
- Chirpy 7.5 — theme
- Ruby 3.3.6 (pinned via
.ruby-version) - html-proofer 5.x — link checker in CI
- GitHub Actions + GitHub Pages — build and hosting
- Code (workflows, config, theme overrides) — Apache License 2.0; see
LICENSE. - Content (blog posts and pages) — Creative Commons Attribution 4.0 International (CC BY 4.0), matching the footer notice the Chirpy theme renders.