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:

![Short description of the figure](/images/blog/my-first-blog-post/figure-1.png)

For a caption, use:

![Short description of the figure](/images/blog/my-first-blog-post/figure-1.png)

*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 description](/images/blog/post-title/figure-1.png)

*Figure 1: Caption.*

## Second Section

More text.

```python
print("hello")

References