Compare commits
13 Commits
1ab35815d7
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| ebf7a6b56d | |||
| 7a7aab501a | |||
| 82daa6fde9 | |||
| bbc5c7c61b | |||
| e90f7ab0bd | |||
| af7d40ef39 | |||
| 500fb7bb55 | |||
| 5585dee13e | |||
| 5ad98e23e5 | |||
| 89c7f855c3 | |||
| 3e14e8acbe | |||
| 9c7ed56823 | |||
| 9c9b20a38a |
@@ -1,4 +1,4 @@
|
|||||||
# personal-website
|
# joeac.net
|
||||||
|
|
||||||
Joe Carstairs' personal website
|
Joe Carstairs' personal website
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ REMOTE_SMTP_PORT=
|
|||||||
|
|
||||||
# The username for authenticating to the remote SMTP server
|
# The username for authenticating to the remote SMTP server
|
||||||
# Usually the email address which will be sending the contact emails
|
# Usually the email address which will be sending the contact emails
|
||||||
REMOTE_SMTP_USER=me@joeac.net
|
REMOTE_SMTP_USER=
|
||||||
|
|
||||||
# The email address where contact emails will be sent
|
# The email address where contact emails will be sent
|
||||||
CONTACT_MAILBOX=me@joeac.net
|
CONTACT_MAILBOX=
|
||||||
|
|||||||
@@ -46,6 +46,17 @@
|
|||||||
--colour-error-90: oklch(0.9 0.2 26);
|
--colour-error-90: oklch(0.9 0.2 26);
|
||||||
--colour-error-95: oklch(0.95 0.2 26);
|
--colour-error-95: oklch(0.95 0.2 26);
|
||||||
|
|
||||||
|
--colour-warn-10: oklch(0.1 0.2 46);
|
||||||
|
--colour-warn-20: oklch(0.2 0.2 46);
|
||||||
|
--colour-warn-30: oklch(0.3 0.2 46);
|
||||||
|
--colour-warn-40: oklch(0.4 0.2 46);
|
||||||
|
--colour-warn-50: oklch(0.5 0.2 46);
|
||||||
|
--colour-warn-60: oklch(0.6 0.2 46);
|
||||||
|
--colour-warn-70: oklch(0.7 0.2 46);
|
||||||
|
--colour-warn-80: oklch(0.8 0.2 46);
|
||||||
|
--colour-warn-90: oklch(0.9 0.2 46);
|
||||||
|
--colour-warn-95: oklch(0.95 0.2 46);
|
||||||
|
|
||||||
--colour-primary-fg: var(--colour-primary-90);
|
--colour-primary-fg: var(--colour-primary-90);
|
||||||
--colour-primary-fg-accent: var(--colour-primary-80);
|
--colour-primary-fg-accent: var(--colour-primary-80);
|
||||||
--colour-primary-bg: var(--colour-primary-10);
|
--colour-primary-bg: var(--colour-primary-10);
|
||||||
@@ -57,6 +68,8 @@
|
|||||||
--colour-grey-bg: var(--colour-grey-30);
|
--colour-grey-bg: var(--colour-grey-30);
|
||||||
--colour-error-fg: var(--colour-error-90);
|
--colour-error-fg: var(--colour-error-90);
|
||||||
--colour-error-bg: var(--colour-error-40);
|
--colour-error-bg: var(--colour-error-40);
|
||||||
|
--colour-warn-fg: var(--colour-warn-20);
|
||||||
|
--colour-warn-bg: var(--colour-warn-80);
|
||||||
|
|
||||||
--font-size-sm: 1rem;
|
--font-size-sm: 1rem;
|
||||||
--font-size-base: 1.125rem;
|
--font-size-base: 1.125rem;
|
||||||
@@ -492,3 +505,12 @@ dialog {
|
|||||||
padding-block: var(--spacing--block-sm);
|
padding-block: var(--spacing--block-sm);
|
||||||
padding-inline: var(--spacing-inline-sm);
|
padding-inline: var(--spacing-inline-sm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.warn {
|
||||||
|
background: var(--colour-warn-bg);
|
||||||
|
border: 2px solid var(--colour-warn-fg);
|
||||||
|
color: var(--colour-warn-fg);
|
||||||
|
padding-block: var(--spacing--block-sm);
|
||||||
|
padding-inline: var(--spacing-inline-sm);
|
||||||
|
--colour-hyperlink: var(--colour-hyperlink-40);
|
||||||
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { z } from "astro/zod";
|
|||||||
import { defineAction } from "astro:actions";
|
import { defineAction } from "astro:actions";
|
||||||
import { db, gte, Otp, SentEmails } from "astro:db";
|
import { db, gte, Otp, SentEmails } from "astro:db";
|
||||||
import { transporter } from "../sendmail";
|
import { transporter } from "../sendmail";
|
||||||
import { MAX_DAILY_EMAILS } from "astro:env/server";
|
import { LOCAL_SMTP_ENVELOPE_FROM, MAX_DAILY_EMAILS } from "astro:env/server";
|
||||||
|
|
||||||
export default defineAction({
|
export default defineAction({
|
||||||
input: z.object({
|
input: z.object({
|
||||||
@@ -28,14 +28,17 @@ async function sendOtp({ email, name }: OtpParams) {
|
|||||||
SentEmails,
|
SentEmails,
|
||||||
gte(SentEmails.sentAt, Date.now() - 1000 * 60 * 60 * 24),
|
gte(SentEmails.sentAt, Date.now() - 1000 * 60 * 60 * 24),
|
||||||
);
|
);
|
||||||
if (emailsSentLast24Hours > MAX_DAILY_EMAILS) {
|
if (emailsSentLast24Hours >= MAX_DAILY_EMAILS) {
|
||||||
|
console.warn(
|
||||||
|
`${name} <${email}> requested an OTP, but ${emailsSentLast24Hours} have already been sent, whereas the max daily load is ${MAX_DAILY_EMAILS}.`,
|
||||||
|
);
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`${emailsSentLast24Hours} emails have been sent in the last 24 hours, but the max daily load is ${MAX_DAILY_EMAILS}.`,
|
`${emailsSentLast24Hours} emails have been sent in the last 24 hours, but the max daily load is ${MAX_DAILY_EMAILS}.`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const info = await transporter.sendMail({
|
const info = await transporter.sendMail({
|
||||||
from: `"Joe Carstairs" <me@joeac.net>`,
|
from: LOCAL_SMTP_ENVELOPE_FROM,
|
||||||
to: `${name ? `"${name}" ` : ""}<${email}>`,
|
to: `${name ? `"${name}" ` : ""}<${email}>`,
|
||||||
subject: `joeac.net: your OTP is ${otpPretty}`,
|
subject: `joeac.net: your OTP is ${otpPretty}`,
|
||||||
text: `
|
text: `
|
||||||
@@ -47,6 +50,10 @@ to do anything.`,
|
|||||||
`Sent OTP (${otpPretty}) to ${email}. Message ID: ${info.messageId}`,
|
`Sent OTP (${otpPretty}) to ${email}. Message ID: ${info.messageId}`,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
await db
|
||||||
|
.insert(SentEmails)
|
||||||
|
.values({ messageId: info.messageId, sentAt: Date.now() });
|
||||||
|
|
||||||
await db.insert(Otp).values({
|
await db.insert(Otp).values({
|
||||||
userId: email,
|
userId: email,
|
||||||
value: otp,
|
value: otp,
|
||||||
|
|||||||
@@ -61,6 +61,9 @@ async function sendmail({
|
|||||||
gte(SentEmails.sentAt, Date.now() - 1000 * 60 * 60 * 24),
|
gte(SentEmails.sentAt, Date.now() - 1000 * 60 * 60 * 24),
|
||||||
);
|
);
|
||||||
if (emailsSentLast24Hours > MAX_DAILY_EMAILS) {
|
if (emailsSentLast24Hours > MAX_DAILY_EMAILS) {
|
||||||
|
console.warn(
|
||||||
|
`${name} <${email}> tried to send an email, but ${emailsSentLast24Hours} have already been sent, whereas the max daily load is ${MAX_DAILY_EMAILS}.`,
|
||||||
|
);
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`${emailsSentLast24Hours} emails have been sent in the last 24 hours, but the max daily load is ${MAX_DAILY_EMAILS}.`,
|
`${emailsSentLast24Hours} emails have been sent in the last 24 hours, but the max daily load is ${MAX_DAILY_EMAILS}.`,
|
||||||
);
|
);
|
||||||
@@ -72,6 +75,7 @@ async function sendmail({
|
|||||||
subject: `joeac.net: ${name} left a message`,
|
subject: `joeac.net: ${name} left a message`,
|
||||||
text: `${name} <${email}> sent you a message:\n\n\n${message}`,
|
text: `${name} <${email}> sent you a message:\n\n\n${message}`,
|
||||||
});
|
});
|
||||||
|
|
||||||
await db
|
await db
|
||||||
.insert(SentEmails)
|
.insert(SentEmails)
|
||||||
.values({ messageId: info.messageId, sentAt: Date.now() });
|
.values({ messageId: info.messageId, sentAt: Date.now() });
|
||||||
|
|||||||
188
website/src/content/blog/2026/02/16/short_reformation_stories.md
Normal file
188
website/src/content/blog/2026/02/16/short_reformation_stories.md
Normal file
@@ -0,0 +1,188 @@
|
|||||||
|
---
|
||||||
|
title: 10 very short stories about the Reformation
|
||||||
|
description: >-
|
||||||
|
I'm summarising a few of the big stories about the Reformation I've been
|
||||||
|
studying recently.
|
||||||
|
pubDate: 2026-02-16
|
||||||
|
updatedDate: 2026-02-27
|
||||||
|
---
|
||||||
|
|
||||||
|
1. Moral corruption in public office
|
||||||
|
|
||||||
|
Since the major reforms of Pope Gregory VII (r. 1073-1085) and his successors,
|
||||||
|
the Roman Church had gone through several cycles of moral panic, attempting to
|
||||||
|
crack down on the 'abuses' of the clergy. The main abuses that got folk worked
|
||||||
|
up were simony (i.e. bribery), nepotism, holding multiple benefices, keeping
|
||||||
|
mistresses and having illegitimate children with them, and getting entangled in
|
||||||
|
secular power politics. The Reformation occurred just at a particularly severe
|
||||||
|
instance of one of these moral panics. Both Protestants and Catholics responded
|
||||||
|
with unprecedented reforms, in many ways similar: the clergy was transformed
|
||||||
|
from a comfortable club for elites into a smaller band of well-educated and
|
||||||
|
committed professionals. In the new Latin church, increasingly, nobility was
|
||||||
|
neither necessary nor sufficient, but education and moral virtue were. Amongst
|
||||||
|
Catholics, the priest became the spiritual equivalent of a Personal Trainer.
|
||||||
|
They became experts at hearing confessions and guiding the highly personal
|
||||||
|
development of their flock. Amongst Protestants, priests and ministers focused
|
||||||
|
much more on shared community life, leading communal Psalm-singing and teaching
|
||||||
|
their congregations with sermons. Amongst both Catholics and Protestants, clergy
|
||||||
|
were expected to be resident in their parish or diocese, preach the Gospel,
|
||||||
|
catechise, and administer sacraments.
|
||||||
|
|
||||||
|
2. The Eucharist
|
||||||
|
|
||||||
|
In the 14th and 15th centuries, people in Latin Christendom became increasingly
|
||||||
|
devoted to celebrating the Eucharist. However, ordinary people became
|
||||||
|
increasingly estranged from it. The Eucharist was only distributed to the laity
|
||||||
|
under one kind, and then perhaps as infrequently as once a year at Easter, the
|
||||||
|
legal minimum. The liturgy became a spectacle, but not something ordinary people
|
||||||
|
could participate in or even understand. This had led to major protests,
|
||||||
|
including the Hussite and Lollard revolts, in the fifteenth century. These
|
||||||
|
revolts had been repressed by the Church. However, in the sixteenth century, the
|
||||||
|
Church failed to hold back the tide. Protestants reformed the liturgy, turning
|
||||||
|
the priest to face the congregation, translating the liturgy into the
|
||||||
|
vernacular, and distributing the elements in both kinds. Catholics, while not
|
||||||
|
abolishing the Mass altogether as the Protestants did, mandated frequent
|
||||||
|
attendance at Mass and encouraged priests to explain to the laity what was
|
||||||
|
happening in their own language as the liturgy went on. Christians in the Latin
|
||||||
|
tradition now receive communion in a variety of ways, much of that diversity
|
||||||
|
explicable in sixteenth-century terms, but almost all receive communion
|
||||||
|
frequently, receive both species, and can interpret what they are doing
|
||||||
|
theologically: these are all Reformation legacies. The fractious politics of the
|
||||||
|
sixteenth century meant that these different developments of the Eucharist
|
||||||
|
hardened into explicitly irreconcilable doctrines. Christians in the Latin
|
||||||
|
tradition still do not all offer one another communion as a result of this
|
||||||
|
ongoing schism.
|
||||||
|
|
||||||
|
3. Monastic reform
|
||||||
|
|
||||||
|
In the fifteenth century, there was a well-established monastic system in Latin
|
||||||
|
Christendom. It functioned as a legitimate alternative career to marriage for
|
||||||
|
elite men and women. They had a useful social role: they were paid by other
|
||||||
|
elites to pray for the souls of themselves and their loved ones, thereby, they
|
||||||
|
believed, reducing the duration of their stay in Purgatory. However, in the
|
||||||
|
sixteenth century, this system broke down. Theologians challenged the doctrine
|
||||||
|
of Purgatory, undermining the usefulness of the system. The growing
|
||||||
|
middle-classes resented a system which entrenched the power of the aristocracy.
|
||||||
|
The poor resented the accumulation of wealth in many monasteries, which
|
||||||
|
typically required exorbitant entry fees, or were limited to people of noble
|
||||||
|
birth, or both. In many places, monasteries were overhauled, ending the practice
|
||||||
|
of praying for the souls of benefactors and opening up membership to those of
|
||||||
|
humbler origins, and going out into the world to preach the Gospel and do works
|
||||||
|
of charity. In many other places, the monastic system was abolished altogether.
|
||||||
|
|
||||||
|
4. Justification
|
||||||
|
|
||||||
|
How can I be right with God? In the medieval Roman Church, there were several
|
||||||
|
doctrinal positions available, and none was authorised as the official 'correct'
|
||||||
|
answer. One thing everyone agreed on, even revolutionaries like Jan Hus, was
|
||||||
|
that you had to _do something_ to be right with God. Being justified was a
|
||||||
|
matter of God working in you to transform you from something wretched to
|
||||||
|
something holy. So, if there was no holiness, there was no justification.
|
||||||
|
Profoundly unsatisfied with this, Martin Luther presented a radical alternative:
|
||||||
|
justification is a free, gracious gift of God, won by Christ's work, not ours.
|
||||||
|
Becoming holy isn't completely irrelevant, but for Luther, becoming holy, or
|
||||||
|
'sanctification', comes second, and is not the condition of justification. This
|
||||||
|
idea drove a wedge through the Church. Is this doctrine simply presenting the
|
||||||
|
gospel truth of freedom in Christ, or is it an excuse for being lax on sin?
|
||||||
|
|
||||||
|
5. The authority of Scripture versus tradition
|
||||||
|
|
||||||
|
In the sixteenth century, various schismatics who we now know broadly as
|
||||||
|
Protestants intoned with one voice, that venerating saints is idol-worship.
|
||||||
|
Christians have venerated saints since at least the 3rd century, if not before,
|
||||||
|
and is a tradition affirmed across the Christian world, in Rome, Constantinople,
|
||||||
|
Alexandria and Antioch. How could the Protestants come up with such a novel
|
||||||
|
idea? Their answer: they got it from Scripture. They argued that Scripture
|
||||||
|
consistently condemns worshipping anything other than God, and nowhere promotes
|
||||||
|
exceptions for a special kind of worship for a special kind of non-God. When it
|
||||||
|
was pointed out to them that the cult of saints was an ancient and universal
|
||||||
|
Christian practice, and affirmed by councils and the Pope, they answered that
|
||||||
|
Scripture is a superior authority to the Church.
|
||||||
|
|
||||||
|
6. Confessionalisation
|
||||||
|
|
||||||
|
In the sixteenth century, there was a sudden profusion of confessions and
|
||||||
|
catechisms. While Christians have used confessions, or creeds, since ancient
|
||||||
|
times to rule on their disputes, the Reformation confessions took on different
|
||||||
|
functions. For the Lutherans, the confessions sought to unify the Lutheran
|
||||||
|
churches in distinction to the Catholic, making no attempt to reconcile their
|
||||||
|
differences, but in contrast, to spell out and emphasise those differences. For
|
||||||
|
the Reformed churches, that went even further, with each national church
|
||||||
|
producing their own confessions in distinction with each other. The Reformed
|
||||||
|
confessions didn't even function to unite the Reformed churches internationally:
|
||||||
|
they had a local, and perhaps even temporal, character. Confessions became
|
||||||
|
longer and ever more precise as time went on, becoming 'lawyer-like' in contrast
|
||||||
|
to the sparse, poetic quality of the ancient creeds. The Catholics were by all
|
||||||
|
means at it too, spelling out exactly what distinguished them from the
|
||||||
|
Protestants in the Tridentine Profession of Faith and in numerous catechisms.
|
||||||
|
All this was doubtless only possible because of the recent introduction of the
|
||||||
|
printing press to Europe from China. For the first time, Christians were using
|
||||||
|
confessional texts at scale not to unite Christians but to divide them.
|
||||||
|
|
||||||
|
7. Kings and clerics
|
||||||
|
|
||||||
|
Pope Gregory VII was famous for fighting the Holy Roman Emperor for the right to
|
||||||
|
decide who gets to invest priests. This issue and others continued to grind at
|
||||||
|
the relationship between the Pope and Europe's princes. From the 12th century,
|
||||||
|
popes claimed to have ultimate authority on both spiritual and temporal matters,
|
||||||
|
and attempted to exercise this alleged authority with mixed success. Kings
|
||||||
|
fought back. The kings of France and Spain did particularly well at exacting
|
||||||
|
papal concessions, and by the sixteenth century ended up pretty much in charge
|
||||||
|
of Catholicism in their respective realms. In Germany, Switzerland, Scandinavia,
|
||||||
|
England and Scotland, monarchs were more under the papal thumb, sometimes much
|
||||||
|
more. Ulrich Zwingli, the great Swiss reformer, complained that the Swiss had to
|
||||||
|
accept whatever Roman carriage-driver the Pope decided to send as their priest
|
||||||
|
or bishop. In 1538, Henry VIII declared himself the Supreme Head of the Church
|
||||||
|
of England. This move was little distinguished from the actions of his French
|
||||||
|
and Spanish counterparts (apart from its brazenness). But in the context of the
|
||||||
|
time, he was compelled to make entreaties with the German Protestants. After a
|
||||||
|
period of ambiguity, under his grand-daughter Elizabeth, England ended up firmly
|
||||||
|
in the Protestant camp.
|
||||||
|
|
||||||
|
NB. It has since been pointed out to me that Elizabeth is famously Henry VIII's
|
||||||
|
daughter, not his grand-daughter. I leave this error in situ, so as not to give
|
||||||
|
the false impression that these short stories are in any way to be admired or
|
||||||
|
trusted.
|
||||||
|
|
||||||
|
8. Mysticism
|
||||||
|
|
||||||
|
In the late Middle Ages, a movement known as _devotio moderna_ or 'the modern
|
||||||
|
devotion' swept Europe. It challenged the old rituals of public, communal, vocal
|
||||||
|
prayer, and emphasised private meditation and mental prayer. For adherents, the
|
||||||
|
goal was to transform your soul and re-orient it towards God. Along the way,
|
||||||
|
you'd be likely to use methods from books written by Christendom's top gurus,
|
||||||
|
but there was doubtless plenty of unregulated mysticism happening, too. In the
|
||||||
|
Reformation, mystical experiences became ambiguous on both sides of the fence,
|
||||||
|
for different reasons. Protestants emphasised shared over private spirituality,
|
||||||
|
and suspected mystics of practicing needless and idolatrous false religion. But
|
||||||
|
Protestants also emphasised the work of the Spirit in each believer by faith,
|
||||||
|
and often continued practicing private spirituality. Meanwhile, Catholics
|
||||||
|
celebrated private spirituality and were perfectly happy emphasising that it
|
||||||
|
took hard work to approach a direct encounter with God's presence, but were
|
||||||
|
unsettled by the thought that if you could have a such an encounter by praying
|
||||||
|
and meditating, you wouldn't need the mediation of the Church to bring you God's
|
||||||
|
presence through the sacraments.
|
||||||
|
|
||||||
|
9. Conciliarism
|
||||||
|
|
||||||
|
The medieval Latin church had a thing for councils. Councils functioned as a way
|
||||||
|
to solve disagreements in a fair way, thus generating robust consensus: in
|
||||||
|
theory, at least. Idealists, called 'conciliarists,' wanted to prioritise
|
||||||
|
councils over every other authority, even the Pope: though that meant that
|
||||||
|
ecumenical councils were deeply distrusted by exactly the one person who had the
|
||||||
|
sole authority to call them. These conflicts still lay unresolved when Martin
|
||||||
|
Luther led a revolt against Rome in 1517. For some decades, leaders on both
|
||||||
|
sides of the divide held out hope that an ecumenical council might heal the
|
||||||
|
schism. However, power politics got in the way, and by the end of the Council of
|
||||||
|
Trent, it was abundantly clear that councils had become solidly subservient to
|
||||||
|
papal authority, and were only ever going to exacerbate the split. Conciliarism
|
||||||
|
was finally dead.
|
||||||
|
|
||||||
|
10. Persecution
|
||||||
|
|
||||||
|
In 1520, Martin Luther was declared an heretic in a papal bull issued by Pope
|
||||||
|
Leo X. In response, Martin Luther burned the bull in public and announced that
|
||||||
|
Leo X was the Antichrist. Various players in various quarters tried various
|
||||||
|
strategies for resolving the schism, and it seems that few were willing to give
|
||||||
|
up on violent coercion. In both Catholic and Protestant domains, magistrates
|
||||||
|
burned books and burned people in an attempt to quell heresy.
|
||||||
29
website/src/content/blog/2026/03/04/agnostic.md
Normal file
29
website/src/content/blog/2026/03/04/agnostic.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
title: What is an agnostic?
|
||||||
|
description: >-
|
||||||
|
pubDate: 2026-03-04
|
||||||
|
---
|
||||||
|
|
||||||
|
I learned today that the first agnostic was 'Darwin's Bulldog', Thomas Henry
|
||||||
|
Huxley. He attended the Metaphysical Society, an extremely broad selection of
|
||||||
|
England's foremost thinkers who gathered in London nine times a year throughout
|
||||||
|
the 1870s to discuss the ultimate questions. He tried all the usual
|
||||||
|
appellations: atheist, theist, pantheist, materialist, idealist, Christian. He
|
||||||
|
found all of them wanting. All the various '-ists', he felt, 'were quite sure
|
||||||
|
they had attained a certain "gnosis,"-had, more or less successfully, solved the
|
||||||
|
problem of existence; while I was quite sure I had not, and had a pretty strong
|
||||||
|
conviction that the problem was insolube.' Thus, negating the term 'gnostic', he
|
||||||
|
coined 'agnostic'.
|
||||||
|
|
||||||
|
Thus for Huxley, as with all the first agnostics, the term did not intend the
|
||||||
|
metaphysical neutrality it's often taken to mean today. For Huxley, it's a
|
||||||
|
positive epistemological assertion: sure, I don't know, but neither do you: the
|
||||||
|
matter is in principle unknowable. 'Agnostic' is not a way for Huxley to
|
||||||
|
diplomatically sidestep metaphysical debates without having to take a side, it's
|
||||||
|
a confrontational view which contradicts the theist, the atheist, and all the
|
||||||
|
rest.
|
||||||
|
|
||||||
|
I wonder what people in my life think of this, who have described themselves as
|
||||||
|
'agnostic'. Did they mean what Huxley meant, or did they mean something more
|
||||||
|
irenic? Does Huxley's approach challenge them? Is neutrality really an adequate
|
||||||
|
stance?
|
||||||
@@ -8,6 +8,4 @@ import Page from '../layouts/Page.astro';
|
|||||||
|
|
||||||
<Page title={SITE_TITLE} description={SITE_DESCRIPTION}>
|
<Page title={SITE_TITLE} description={SITE_DESCRIPTION}>
|
||||||
<Me />
|
<Me />
|
||||||
<BlogFeed hideAuthor hideSubheadings maxEntries={1} />
|
|
||||||
<LinksFeed hideAuthor maxEntries={1} />
|
|
||||||
</Page>
|
</Page>
|
||||||
|
|||||||
Reference in New Issue
Block a user