# Hello World

> A small published fixture post for checking Markdown, MDX components, images, code blocks, math, and post metadata in one stable place.

**Published:** 2015-01-01

**Canonical:** <https://grishy.dev/en/posts/hello-world/>

**Translations:** [English](https://grishy.dev/en/posts/hello-world.md), [Русский](https://grishy.dev/ru/posts/hello-world.md)

![Hello World](https://grishy.dev/_astro/kobu-agency-67L18R4tW_w-unsplash.B0IuxSmv.avif)

---

This post is intentionally visible. It is the stable place where I can check
how the blog renders Markdown, MDX components, images, code, math, links, and
metadata after design or dependency changes.

It should stay boring on purpose: one post, one slug, no duplicate draft
fallbacks.

## Text

A normal paragraph can include **bold text**, *italic text*, `inline code`, and
a regular [link](https://example.com). It can also include ~~removed text~~
when the Markdown parser enables GitHub-flavored strikethrough. Text should wrap
cleanly, keep a readable line length, and not depend on Tailwind prose defaults.

> A blockquote should feel quieter than the main text, but still belong to the
> same typography system.

Here is a footnote reference.[^fixture]

[^fixture]: This checks footnote rendering and spacing.

## GitHub Markdown

GitHub-flavored Markdown adds a few everyday conveniences. Bare links should
become anchors without extra syntax:

<https://grishy.dev>

<hello@example.com>

Task lists should keep checkbox alignment stable:

- [x] Published fixture lives in `posts`
- [x] Old draft fixture pages are gone
- [ ] Future components can be added here

**Expandable note**

This checks the common GitHub pattern for hiding extra details without
introducing a custom component.

## Lists

- Unordered item
- Another unordered item with `code`
- Nested content:
  - Child item
  - Another child item

1. Ordered item
2. Another ordered item
3. Final ordered item

## Table

| Surface | What it checks              | Status |
| :------ | :-------------------------- | :----- |
| Text    | Paragraph rhythm            | Stable |
| Code    | Highlighting and copy UI    | Stable |
| Images  | Asset pipeline and captions | Stable |

| Alignment | Inline content                | Long content                                      |
| :-------- | :---------------------------- | :------------------------------------------------ |
| Left      | `code` and **bold**           | A longer sentence that should wrap inside a cell. |
| Center    | [link](https://example.com)   | The table should stay readable on narrow screens. |
| Right     | ~~old~~ text and current text | This row checks GFM table parsing.                |

## Nested Stress Test

> A quote can contain a list:
>
> - Item inside a quote
> - Item with `inline code`
>
> ```txt
> code inside a quote
> ```

## Code

```ts
type Locale = "en" | "ru";

function postPath(locale: Locale, slug: string) {
  return `/${locale}/posts/${slug}/`;
}

console.log(postPath("en", "hello-world"));
```

```diff
- duplicate draft fixtures
+ one published fixture
```

## Math

Inline math should render like this: $E = mc^2$.

Display math should keep its own rhythm:

$$
\int_0^1 x^2 dx = \frac{1}{3}
$$

## Callouts

> **Note**
>
> This note checks the default callout style.

> **Warning**
>
> This warning checks the accent color and spacing.

> **Tip**
>
> This tip checks the third callout variant.

## Figure

![Laptop on a bright desk](https://grishy.dev/_astro/kobu-agency-67L18R4tW_w-unsplash.B0IuxSmv.avif)

*A regular optimized figure with a caption.*

## Gallery

![Laptop on a bright desk](https://grishy.dev/_astro/kobu-agency-67L18R4tW_w-unsplash.B0IuxSmv.avif)

![Salted egg on a plate](https://grishy.dev/_astro/salty_egg.uOTIFF6z.avif)

## Video

[Video embed fixture](https://www.youtube.com/watch?v=aqz-KE-bpKQ)

---

**Thumbnail:** Photo by [Kobu Agency](https://unsplash.com/@kobuagency) on [Unsplash](https://unsplash.com/photos/67L18R4tW_w).
