New Markdown-Based Blog
This is a new version of my blog. The previous one was at blog.nepto.sk and I will gradually move articles from there here.
For the past 20 years, databases have been the holy grail for storing dynamic content. All blogs I have seen had their articles stored in a database. This is not a bad approach, but in practice it is somewhat impractical.
Blog content is not very dynamic. It changes at the beginning, then usually just sits unchanged. Also, writing through a web interface is not comfortable for me. I find WYSIWYG editors particularly difficult to work with.
Therefore, instead of the traditional database-driven approach, I decided to build my blog using Markdown files.
Why Markdown Files?
Here are few practical reasons:
- Fast and simple - Editing with all the features that the Vim editor offers
- Version control friendly - Posts are plain text files, easy to version
- Easy writing - Clear document structure, no design issues
- AI friendly - Large language models (LLMs) understand Markdown format exceptionally well
Markdown Guide
Since Markdown is relatively new to me, I have prepared an overview with examples of all common formatting options in this post.
Headings
Creating headings using # symbols:
# H1 Heading
## H2 Heading
### H3 Heading
Text Formatting
- Bold text using
**bold**or__bold__ - Italic text using
*italic*or_italic_ - Bold and italic using
***text*** Strikethroughusing~~text~~
Lists
Unordered Lists
- Item 1
- Item 2
- Sub-item 2.1
- Sub-item 2.2
- Item 3
Ordered Lists
- First item
- Second item
- Third item
Task Lists
- [ ] Unchecked task
- [x] Checked task
- [ ] Another task
Links and Images
Links
Creating links is simple:
Visit my training section
Image with Caption
Here is an example of inserting an image with a caption:
Figure: Logo from my old Nepto.sk website
Alternative text is supported as well.
Code
Inline code: const blog = new Blog();
Code blocks:
<?php
function getBlogPosts($lang) {
return Blog::getAllPosts($lang);
}
// JavaScript example
const posts = await fetch('/blog/api/posts');
const data = await posts.json();
Blockquotes
This is a blockquote. It can span multiple lines.
— Author Name
Tables
| Feature | Supported |
|---|---|
| Markdown | Yes |
| Images | Yes |
| Bilingual | Yes |
Horizontal Rule
Conclusion
I hope I will never need this guide. After all, Markdown is quite simple. But if I do need it, it is right here:)
