diff --git a/articles/Tupfile b/articles/Tupfile
index 780e2ae..de31884 100644
--- a/articles/Tupfile
+++ b/articles/Tupfile
@@ -1,4 +1,4 @@
include_rules
-# TODO: autogenerate
+: |> ./generate_listing.sh > %o |> index.md
: foreach *.md |> !article |>
diff --git a/articles/generate_listing.sh b/articles/generate_listing.sh
new file mode 100755
index 0000000..b0be479
--- /dev/null
+++ b/articles/generate_listing.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+cat << EOF
+---
+title: Articles
+---
+
+
+EOF
+
+for file in *.md; do
+ if [ $file = "index.md" ]; then
+ continue
+ fi
+
+ link=$(basename $file .md).html
+ date=$(sed -n 's/date: \(.*\)/\1/p' $file)
+ title=$(sed -n 's/title: \(.*\)/\1/p' $file)
+ echo "- $date: $title
"
+
+done
+
+cat << EOF
+
+EOF
diff --git a/articles/index.md b/articles/index.md
deleted file mode 100644
index 03872df..0000000
--- a/articles/index.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-title: Articles
----
-
-
diff --git a/articles/smileys.md b/articles/smileys.md
new file mode 100644
index 0000000..ad15807
--- /dev/null
+++ b/articles/smileys.md
@@ -0,0 +1,29 @@
+---
+title: Smileys
+date: 2016-02-23
+---
+
+- `(\/) i_i (\/)`
+- `(> ' ' )>`
+- `(>'~'<)`
+- `(\/) (;,,,;) (\/)`
+- `ò_ó`
+- `ಠ_ಠ`
+- `ಥ_ಥ`
+- `(╯°□°)╯︵ ┻━┻`
+- `(ノಠ益ಠ)ノ彡┻━┻`
+- `¯\(°_o)/¯`
+- `ʕノ•ᴥ•ʔノ ︵ ┻━┻`
+- `(☞゚∀゚)☞`
+- ` ¯\_(ツ)_/¯`
+- `ᕕ(ᐛ)ᕗ`
+- `┬┴┬┴┤ʕ•ᴥ├┬┴┬┴`
+- ` ( •_•)`
+- ` ( •_•)>⌐■-■`
+- ` (⌐■_■)`
+- `(・_・;)`
+- `i(ò_ó)--o )x_x)`
+- ` (ง ͠° ͟ʖ ͡°)ง`
+- `ↀܫↀ`
+- `ᕦ(ò_óˇ)ᕤ`
+