diff --git a/users/tazjin/atom-feed/default.nix b/users/tazjin/atom-feed/default.nix
index cd189b867..fe5e4b997 100644
--- a/users/tazjin/atom-feed/default.nix
+++ b/users/tazjin/atom-feed/default.nix
@@ -111,6 +111,10 @@ let
${elem "title" e.title}
${elem "id" e.id}
${elem "updated" (renderEpoch e.updated)}
+ ${if e ? published
+ then elem "published" (renderEpoch e.published)
+ else ""
+ }
${if e ? content
then ''${escape e.content}''
else ""
diff --git a/users/tazjin/blog/default.nix b/users/tazjin/blog/default.nix
index 2232be273..a5254b549 100644
--- a/users/tazjin/blog/default.nix
+++ b/users/tazjin/blog/default.nix
@@ -15,6 +15,9 @@ let
title = string;
date = int;
+ # Optional time at which this post was last updated.
+ updated = option int;
+
# Path to the Markdown file containing the post content.
content = path;
diff --git a/users/tazjin/blog/fragments.nix b/users/tazjin/blog/fragments.nix
index 78a64afa3..98028fad7 100644
--- a/users/tazjin/blog/fragments.nix
+++ b/users/tazjin/blog/fragments.nix
@@ -74,6 +74,11 @@ let
echo '${escape post.title}
' >> $out
echo '' >> $out
${
diff --git a/users/tazjin/homepage/feed.nix b/users/tazjin/homepage/feed.nix
index 5e1fa15da..3c0cc06f1 100644
--- a/users/tazjin/homepage/feed.nix
+++ b/users/tazjin/homepage/feed.nix
@@ -14,7 +14,7 @@ let
title = post.title;
content = readFile (renderMarkdown post.content);
published = post.date;
- updated = post.date; # TODO(tazjin): this should be distinct from published
+ updated = post.updated or post.date;
links = singleton {
rel = "alternate";