Blog Management Guide
Complete guide for writing, managing, and publishing blog posts on this Jekyll-based technical blog.
βοΈ Writing a New Blog Post
Quick Start
-
Create a new file in
_posts/directoryFile naming convention:
YYYY-MM-DD-title-with-dashes.mdExample:
2026-02-02-my-first-blog-post.md -
Add front matter at the top
---
layout: post
title: "Your Post Title"
date: 2026-02-02 10:00:00 -0000
categories: [distributed-systems, architecture]
tags: [kubernetes, microservices, scalability]
author: Rakesh Navale
excerpt: "A brief summary of your post that appears in listings"
linkedin_article_url: "https://www.linkedin.com/pulse/your-linkedin-article-url"
---
-
Write your content in Markdown
-
Commit and push
git add _posts/2026-02-02-your-post.md
git commit -m "Add blog post: Your Post Title"
git push
GitHub Pages will automatically build and deploy within minutes!
Front Matter Fields Explained
- layout: Always use
postfor blog posts - title: Your post title (appears in h1 and page title)
- date: Publication date and time (YYYY-MM-DD HH:MM:SS timezone)
- categories: Broad topics (2-3 max) - used for organization
- tags: Specific keywords (5-10 max) - used for discovery
- author: Your name (defaults to config if omitted)
- excerpt: Short summary (1-2 sentences) for listings and SEO
- linkedin_article_url: Optional LinkedIn article URL. When present, the site shows a LinkedIn version link on the post page, blog listing, and home page cards.
- published: Set to
falseto keep as draft (optional)
π Working with Drafts
Store work-in-progress posts in _drafts/ folder:
# Create draft (no date prefix needed)
touch _drafts/my-draft-post.md
# Preview drafts locally
./scripts/jekyll-local serve --drafts
# Publish: move to _posts/ with date
mv _drafts/my-draft-post.md _posts/2026-02-02-my-draft-post.md
π¨ Adding Images
- Store images in organized folders
assets/images/2026/02/my-image.png
- Reference in posts

Note: Use /navalerakesh/ prefix for all asset paths since the site is served from that subdirectory.
- Optimize images before adding (use TinyPNG, ImageOptim, etc.)
π Categories and Tags
Categories (Broad Topics)
Use for high-level organization:
distributed-systemsai-platformsmachine-learningsoftware-engineeringopen-sourcedevopsperformancegeneral
Tags (Specific Keywords)
Use for detailed topics and technologies:
- Technologies:
kubernetes,docker,python,java,go - Concepts:
scalability,microservices,caching,monitoring - Patterns:
event-driven,cqrs,saga-pattern - Tools:
prometheus,grafana,kafka,redis
π» Local Development
Prerequisites
- Ruby 2.7 or higher
- Bundler:
gem install bundler
Setup
# Clone repository
git clone https://github.com/navalerakesh/navalerakesh.git
cd navalerakesh
# Install dependencies
bundle install
# Serve locally with live reload
./scripts/jekyll-local serve --livereload
# Serve with drafts visible
./scripts/jekyll-local serve --drafts
# Build only (output to _site/)
./scripts/jekyll-local build
Visit http://localhost:4000/ to preview your site.
For local development on Ruby 4, use ./scripts/jekyll-local .... It preloads the compatibility shim needed by the older GitHub Pages Jekyll stack in this repo.
Troubleshooting
Bundle install fails:
# Update bundler
gem install bundler
# Clean and reinstall
rm -rf vendor/ .bundle/
bundle install
Port 4000 already in use:
./scripts/jekyll-local serve --port 4001
π Blog Management Best Practices
1. Version Control Workflow
# Create feature branch for new post
git checkout -b post/your-topic-name
# Add and commit
git add _posts/2026-02-02-your-post.md
git commit -m "Add post: Your Topic Name"
# Push and create PR for review
git push origin post/your-topic-name
2. Commit Message Convention
Add post: [Title]- New blog postUpdate post: [Title]- Edit existing postFix post: [Title]- Fix errors/typosDraft: [Title]- Work in progress
3. File Organization
- Images:
assets/images/YYYY/MM/descriptive-name.png - Posts: Always use date prefix in
_posts/ - Drafts: No date needed in
_drafts/
4. Writing Tips
- Clear titles: Be specific and descriptive
- Strong excerpts: Hook readers in 1-2 sentences
- Code examples: Always specify language for syntax highlighting
- Headings: Use proper hierarchy (h2 for main sections, h3 for subsections)
- Links: Use descriptive link text, not βclick hereβ
- SEO: Include keywords naturally in title, excerpt, and content
5. Content Guidelines
β Do:
- Write for your future self
- Include practical examples
- Share real-world experiences
- Add code snippets with explanations
- Link to related posts and external resources
- Update old posts when needed
β Donβt:
- Publish unfinished content
- Use Lorem Ipsum placeholders
- Skip proofreading
- Forget to test code examples
- Over-optimize for SEO
π SEO and Analytics
Built-in SEO Features
- β SEO-friendly URLs
- β
Automatic sitemap (
/sitemap.xml) - β
RSS feed (
/feed.xml) - β Meta tags via jekyll-seo-tag
- β Open Graph tags for social sharing
- β Twitter card support
Adding Analytics (Optional)
Edit _config.yml to add:
# Google Analytics
google_analytics: UA-XXXXXXXXX-X
# Or for GA4
google_analytics_4: G-XXXXXXXXXX
# Google Tag Manager (recommended for advanced tracking)
google_tag_manager: GTM-XXXXXXX
Note: Google Tag Manager (GTM) is recommended for more flexible tracking and tag management. With GTM, you can manage multiple tracking tools (Google Analytics, Facebook Pixel, etc.) from a single interface without modifying code.
π Deployment
Automatic Deployment
GitHub Pages automatically builds and deploys when you push to the main branch:
- Push changes to GitHub
- GitHub Actions builds the site
- Live in 1-3 minutes at
navalerakesh.github.io/navalerakesh
Manual Build Check
# Build locally to check for errors
bundle exec jekyll build
# Check the _site/ folder
ls -la _site/
π Publishing Checklist
Before publishing a new post:
- Proofread content thoroughly
- Test all code examples
- Verify all links work
- Optimize images
- Write compelling excerpt
- Add relevant tags and categories
- Set correct date and time
- Preview locally
- Commit with descriptive message
- Push to GitHub
π Useful Commands
# Create new post quickly
touch _posts/$(date +%Y-%m-%d)-your-post-title.md
# Find broken links
bundle exec jekyll build
grep -r "404" _site/
# Count words in post
wc -w _posts/2026-02-02-your-post.md
# List all posts
ls -1 _posts/
# Search posts
grep -r "keyword" _posts/
π Resources
π Common Issues
Posts Not Showing
- Check date is not in the future
- Verify filename format:
YYYY-MM-DD-title.md - Ensure
published: falseis not set - Check front matter YAML is valid
Images Not Loading
- Use absolute paths with baseurl:
/navalerakesh/assets/images/file.png - Check file actually exists in repo
- Verify image committed to Git
Build Failures
- Check Jekyll build logs in GitHub Actions
- Validate YAML front matter
- Test build locally:
bundle exec jekyll build
For general site information, see README.md