How to Add Blog Posts
How to Add Blog Posts
This site is built with Jekyll using the Academic Pages template. Blog posts live in a special _posts/ folder and are written as Markdown files with a small YAML header at the top.
The current website navigation only shows About, Publications, and CV. To publish blog posts, first add a Blog page and navigation link, then add posts under _posts/.
1. Enable a Blog Page
Create a file named _pages/blog.md:
---
layout: archive
title: "Blog"
permalink: /blog/
author_profile: true
---
Then add Blog to _data/navigation.yml:
main:
- title: "About"
url: /
- title: "Publications"
url: /publications/
- title: "CV"
url: /cv/
- title: "Blog"
url: /blog/
If you want Blog before CV, move the Blog block above the CV block.
2. Create the Posts Folder
If it does not exist yet, create:
_posts/
Every post file must use this filename format:
YYYY-MM-DD-short-title.md
Example:
_posts/2026-04-28-my-first-blog-post.md
3. Write a Blog Post
Start each post with front matter:
---
title: "My First Blog Post"
date: 2026-04-28
permalink: /posts/my-first-blog-post/
author_profile: true
tags:
- machine-learning
- conformal-prediction
---
Write the post here in Markdown.
You can use **bold text**, *italic text*, lists, links, equations, code blocks, and images.
If you do not specify permalink, Jekyll will use the default permalink style from _config.yml.
4. Add Figures and Images
Put blog images under a folder inside images/, for example:
images/blog/my-first-blog-post/figure-1.png
images/blog/my-first-blog-post/diagram.jpg
Then reference them in the post:

For a caption, use:

*Figure 1: A short caption explaining the figure.*
Use absolute site paths starting with /images/... rather than relative paths. That keeps images working from any generated page URL.
5. Add PDFs, Notebooks, or Other Files
Put downloadable files under files/, for example:
files/blog/my-first-blog-post/notes.pdf
files/blog/my-first-blog-post/demo.ipynb
Link to them from the post:
[Download the notes](/files/blog/my-first-blog-post/notes.pdf)
[Open the notebook](/files/blog/my-first-blog-post/demo.ipynb)
6. Add Code Blocks
Use fenced code blocks:
```python
def coverage(scores, threshold):
return (scores <= threshold).mean()
```
For terminal commands:
```bash
bundle exec jekyll serve
```
7. Add Math
Inline math:
The conformal score is \(s(x, y)\).
Display math:
\[
\mathbb{P}(Y \in C(X)) \geq 1 - \alpha.
\]
The Academic Pages template already includes MathJax support in the footer.
8. Preview Locally
From the repo root:
/Users/ozgurguldogan/.rubies/ruby-3.1.3/bin/bundle exec jekyll serve
Then open:
http://127.0.0.1:4000
If you only want to check that the site builds:
/Users/ozgurguldogan/.rubies/ruby-3.1.3/bin/bundle exec jekyll build
9. Publish Online
After adding or editing posts:
git status
git add _posts images/blog files/blog _pages/blog.md _data/navigation.yml
git commit -m "Add blog post"
git push origin main
GitHub Pages usually updates within a minute or two. If the old version still appears, hard refresh the browser with Cmd + Shift + R.
10. Recommended Post Template
Copy this for a new post:
---
title: "Post Title"
date: 2026-04-28
permalink: /posts/post-title/
author_profile: true
tags:
- tag-one
- tag-two
---
Short opening paragraph.
## First Section
Main text.

*Figure 1: Caption.*
## Second Section
More text.
```python
print("hello")
References
- A useful link ```
