diff --git a/eleventy.config.js b/eleventy.config.js index 84e5e82f..b5fd824e 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -19,6 +19,7 @@ import timeToRead from "eleventy-plugin-time-to-read"; import embedEverything from "eleventy-plugin-embed-everything"; import env from "./src/_data/env.js"; import { minify } from "html-minifier-terser"; +import slugify from "slugify"; import path from 'path'; @@ -35,16 +36,16 @@ export default async function(eleventyConfig) { eleventyConfig.addFilter("debug", (content) => `
${inspect(content)}
`); eleventyConfig.addPlugin(eleventyImageOnRequestDuringServePlugin); eleventyConfig.addPlugin(EleventyHtmlBasePlugin, { - // The base URL: defaults to Path Prefix - // baseHref: eleventyConfig.pathPrefix, + // The base URL: defaults to Path Prefix + // baseHref: eleventyConfig.pathPrefix, - // But you could use a full URL here too: - // baseHref: env.baseUrl, + // But you could use a full URL here too: + // baseHref: env.baseUrl, - // Comma separated list of output file extensions to apply - // our transform to. Use `false` to opt-out of the transform. - extensions: "html", - }); + // Comma separated list of output file extensions to apply + // our transform to. Use `false` to opt-out of the transform. + extensions: "html", + }); // Return active path attributes eleventyConfig.addShortcode('activepath', function (itemUrl, currentUrl) { @@ -58,40 +59,40 @@ export default async function(eleventyConfig) { }); eleventyConfig.addPlugin(eleventyImageTransformPlugin, { - // which file extensions to process - extensions: "html", + // which file extensions to process + extensions: "html", - // Add any other Image utility options here: + // Add any other Image utility options here: - // optional, output image formats - formats: ["webp", "jpeg"], - // formats: ["auto"], + // optional, output image formats + formats: ["webp", "jpeg"], + // formats: ["auto"], - // optional, output image widths - widths: [800, 500, 300], + // optional, output image widths + widths: [1980, 1200, 800, 500, 300], urlPath: "/static/img/", outputDir: "./_site/static/img/", - // optional, attributes assigned on override these values. - defaultAttributes: { - loading: "lazy", - decoding: "async", - sizes: "auto", - }, + // optional, attributes assigned on override these values. + defaultAttributes: { + loading: "lazy", + decoding: "async", + sizes: "auto", + }, filenameFormat: (id, src, width, format) => { const { name } = path.parse(src); return `${name}-${width}w.${format}`; }, - }); + }); // Return responsive images eleventyConfig.addShortcode("image", async function(src, alt, cls = [], pictureCls = "", sizes = "auto", widths = [300, 600, 1000, 1980]) { - if(alt === undefined) { - // You bet we throw an error on missing alt (alt="" works okay) - throw new Error(`Missing \`alt\` on responsiveimage from: ${src}`); - } + if(alt === undefined) { + // You bet we throw an error on missing alt (alt="" works okay) + throw new Error(`Missing \`alt\` on responsiveimage from: ${src}`); + } let imgClass = cls.length ? cls.map(s => `.${s}`).join(' ') : ''; @@ -100,7 +101,7 @@ export default async function(eleventyConfig) { content = markdownLibrary.renderInline(content); return content; - }); + }); // // Collection of items promotoed // eleventyConfig.addCollection('promotedContent', (collection) => { @@ -166,19 +167,19 @@ export default async function(eleventyConfig) { // Minify HTML eleventyConfig.addTransform("htmlmin", function (content) { - if ((this.page.outputPath || "").endsWith(".html")) { - let minified = minify(content, { - useShortDoctype: true, - removeComments: true, - collapseWhitespace: true, - }); - - return minified; - } + if ((this.page.outputPath || "").endsWith(".html")) { + let minified = minify(content, { + useShortDoctype: true, + removeComments: true, + collapseWhitespace: true, + }); + + return minified; + } - // If not an HTML output, return content as-is - return content; - }); + // If not an HTML output, return content as-is + return content; + }); // Check a string starts with a character. eleventyConfig.addFilter('starts_with', function(str, prefix, not = false) { @@ -202,30 +203,46 @@ export default async function(eleventyConfig) { return typeof obj == 'string' }); + eleventyConfig.addFilter("isTag", (str, tag) => { + return str === tag; + }); + eleventyConfig.addFilter("readableDate", (dateObj, format, zone) => { - // Formatting tokens for Luxon: https://moment.github.io/luxon/#/formatting?id=table-of-tokens - return DateTime.fromJSDate(dateObj, { zone: zone || "utc" }).toFormat(format || "dd LLLL yyyy"); - }); - - eleventyConfig.addFilter('htmlDateString', (dateObj) => { - // dateObj input: https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-date-string - return DateTime.fromJSDate(dateObj, {zone: 'utc'}).toFormat('yyyy-LL-dd'); - }); - - // Return all the tags used in a collection - eleventyConfig.addFilter("getAllTags", collection => { - let tagSet = new Set(); - for(let item of collection) { - (item.data.tags || []).forEach(tag => tagSet.add(tag)); - } - let tsArray = Array.from(tagSet); + // Formatting tokens for Luxon: https://moment.github.io/luxon/#/formatting?id=table-of-tokens + return DateTime.fromJSDate(dateObj, { zone: zone || "utc" }).toFormat(format || "dd LLLL yyyy"); + }); + + eleventyConfig.addFilter('htmlDateString', (dateObj) => { + // dateObj input: https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-date-string + return DateTime.fromJSDate(dateObj, {zone: 'utc'}).toFormat('yyyy-LL-dd'); + }); + + // Return all the tags used in a collection + eleventyConfig.addFilter("getAllTags", collection => { + let tagSet = new Set(); + for(let item of collection) { + (item.data.tags || []).forEach(tag => tagSet.add(tag)); + } + let tsArray = Array.from(tagSet); return tsArray.sort(); - }); + }); - eleventyConfig.addFilter("filterTagList", function filterTagList(tags) { - return (tags || []).filter(tag => ['all', 'nav', 'rss', '#reading', '#writing', '#thinking', 'Reading', 'Thinking', 'promotedContent', 'footerNav', 'footerSecondaryNav', 'mainNav', 'allContent', 'reading', 'writing', 'thinking'].indexOf(tag) === -1); - }); + eleventyConfig.addFilter("filterTagList", function filterTagList(tags) { + return (tags || []).filter(tag => ['all', 'nav', 'rss', '#reading', '#writing', '#thinking', '#reading-library', 'Reading', 'Thinking', 'promotedContent', 'footerNav', 'footerSecondaryNav', 'mainNav', 'allContent', 'reading', 'writing', 'thinking'].indexOf(tag) === -1); + }); + + // Custom slug filter + eleventyConfig.addFilter("slug", (str) => { + if (!str) { + return; + } + return slugify(str, { + lower: true, + strict: true, + remove: /[']/g, + }); + }); // Sort footer menu items by 'order' field eleventyConfig.addCollection('footerNav', (collection) => { @@ -278,6 +295,12 @@ export default async function(eleventyConfig) { return sortByDate(nav).reverse(); }); + // Sort reading old books pieces by 'order' field + eleventyConfig.addCollection('readingLibrary', (collection) => { + var nav = collection.getFilteredByTag('#reading-library'); + return sortByDate(nav).reverse(); + }); + // Sort thinking pieces by 'order' field eleventyConfig.addCollection('thinking', (collection) => { var nav = collection.getFilteredByTag('#thinking'); @@ -319,50 +342,50 @@ export default async function(eleventyConfig) { } async function getPictureMarkup(src, alt, cls, pictureCls = "", sizes = "(min-width: 30em) 50vw, 100vw", widths = [300, 600, 1000, 1980]) { - if(alt === undefined) { - // You bet we throw an error on missing alt (alt="" works okay) - throw new Error(`Missing \`alt\` on responsiveimage from: ${src}`); - } - - let metadata = await Image(src, { - widths: widths, - formats: ['webp', 'jpeg'], + if(alt === undefined) { + // You bet we throw an error on missing alt (alt="" works okay) + throw new Error(`Missing \`alt\` on responsiveimage from: ${src}`); + } + + let metadata = await Image(src, { + widths: widths, + formats: ['webp', 'jpeg'], urlPath: "/static/img/", outputDir: "./_site/static/img/" - }); - - let lowsrc = metadata.jpeg[0]; - let highsrc = metadata.jpeg[metadata.jpeg.length - 1]; - - return ` - ${Object.values(metadata).map(imageFormat => { - return ` `; - }).join("\n")} - + ${Object.values(metadata).map(imageFormat => { + return ` `; + }).join("\n")} + ${alt} - `; - }; + alt="${alt}" + loading="lazy" + decoding="async"> + `; + }; async function getPictureData(src, widths = [300, 600, 1000, 1980]) { let metadata = await Image('./pages' + src, { - returnType: 'object', + returnType: 'object', widths: widths, - formats: ['jpeg'], + formats: ['jpeg'], urlPath: "/static/img/", outputDir: "./_site/static/img/" - }); + }); return metadata; }; - eleventyConfig.addPairedShortcode("ImgFigure", function(content, caption = false, classes, md = true) { + eleventyConfig.addPairedShortcode("ImgFigure", function(content, caption = false, classes = [], md = true) { if (caption) { - caption = '
' + caption + '
'; + caption = '
' + (md ? markdownLibrary.renderInline(caption) : caption) + '
'; } return '' + (md ? markdownLibrary.renderInline(content) : content) + (caption ? caption : '') +''; }); @@ -379,12 +402,12 @@ export default async function(eleventyConfig) { symbol: "#", level: [1,2,3,4], }), - slugify: eleventyConfig.getFilter("slug") + slugify: eleventyConfig.getFilter("slugify") }).use(markdownItAttrs).use(markdownItSmall); eleventyConfig.setLibrary("md", markdownLibrary); - eleventyConfig.addFilter("markdown", (content) => { - return markdownLibrary.render(content); + eleventyConfig.addFilter("markdown", (content, ril = false) => { + return ril ? markdownLibrary.renderInline(content) : markdownLibrary.render(content); }); eleventyConfig.addPairedShortcode("Markdown", function(content, ril = false) { diff --git a/pages/index.md b/pages/index.md index 6956940d..356d5621 100644 --- a/pages/index.md +++ b/pages/index.md @@ -2,7 +2,7 @@ title: Joe Baker description: My writer's journal, for my writing projects, as well as the reading and thinking that support them. pageTitle: Writer -date: 2026-01-25T12:34:21Z +date: 2026-02-08T13:20:21Z eleventyNavigation: key: Home layout: home.njk @@ -17,3 +17,12 @@ pagination: --- My writer's journal, for my [writing](/writing){.light} projects, as well as the [reading](/reading){.light} and [thinking](/thinking){.light} that support them. + +---{.margin-block-start-vlg} + +**And also …**{.bold} Yeah, sure, there’s plenty of new books, but do you ever read old books? +{.margin-block-start-vlg} + +Welcome to [Dr B's Library](/library/){.light .single-meta-forward .bold} + +Let's pick one off the shelf. diff --git a/pages/library/index.md b/pages/library/index.md new file mode 100644 index 00000000..9099da51 --- /dev/null +++ b/pages/library/index.md @@ -0,0 +1,27 @@ +--- +title: Dr B's Library +description: | + Yeah, sure, there’s plenty of new books, but do you ever read old books? + + Let's pick one off the shelf. +date: 2026-02-06T11:39:24Z +layout: list-library.njk +hideDescriptions: true +promoted: false +eleventyNavigation: + key: Dr B's Library + order: 4 +pagination: + data: collections.readingLibrary + size: 11 + alias: items +pageClass: "site-content--surface-dark site-content--surface-rose" +indexListClass: "site-content--surface-dark site-content--surface-rose" +tags: + '#reading' +order: -10 +image: + social: /static/images/oldbooks/pexels-tima-miroshnichenko-9572619.jpg +redirectFrom: + - /reading/old-books/ +--- diff --git a/pages/library/lecarre-tinker-tailor.md b/pages/library/lecarre-tinker-tailor.md new file mode 100644 index 00000000..69092d0c --- /dev/null +++ b/pages/library/lecarre-tinker-tailor.md @@ -0,0 +1,112 @@ +--- +title: "Tinker, Tailor, Soldier, Spy, by John le Carré" +description: Have you ever read … John le Carré's classic spy novel of betrayal and living double lives +date: 2026-02-07T18:23:04Z +layout: page-library.njk +promoted: true +order: -1 +page: + class: "page--with-hero" +image: + path: /static/images/oldbooks/lecarre-tinker-tailor-library.jpeg + alt: 'Cover of Tinker, Tailor, Soldier, Spy, by John le Carré' + class: + - image-obj-cover + - image-darken-50 + - image-obj-pos-bottom + figureClass: + page: "content-canvas-item-full figure--hero" +tags: + - Reading + - Novels + - "Dr B's Library" + - "#reading-library" +redirectFrom: + - /reading/old-books/lecarre-tinker-tailor/ + - /lecarre-tinker-tailor/ +--- + +Here’s how it starts, the opening sentence … + +> The truth is, if old Major Dover hadn’t dropped dead at Taunton races Jim would never have come to Thursgood’s at all. +> {.bq-alt} + +Come on, John, that’s not fair. + +How can you start like that and get us hooked from the very beginning? You’re having a laugh. You’re laughing at us. From the first sentence. + +We have questions: + +- Who is Major Dover? +- And why’s he dropped dead? + +Even before we were ready, even before we were paying attention, he’s gone, shuffled off this mortal coil. Dead, before we even had a chance to draw breath ourselves. + +And more questions, too: + +- Who on Earth is Jim? +- And what — or where! — is Thursgood's? + +Nothing but confusion, from the start … and we're hooked! That's the way to do it. That's the way to write stuff, that's the way to start things off. + +The whole of the first chapter carries on that way, carries on the intrigue. Thursgood's is a school, it turns out, and Jim a new teacher. But John, you tell us hardly anything else, leave us guessing. And, we discover, Jim isn't even the novel's main character! + +What? + +What a bonkers way to start things off. That's proper daring, starting your novel that way. You have to be John le Carré to pull off something like that. + +--- + +Everyone thinks *Tinker, Tailor* is a spy novel, but it's not really. Well, yes, it is set in the world of spies and spying, that's certainly true, but it's not really about espionage at all. There's certainly precious little actual spycraft in the story, and if you're looking for wild adventures you might want to look elsewhere, an Ian Fleming or a Len Deighton, maybe. We never escape from the language and idiom of the spy world, but that is only the habitat in which these characters live. + +In truth, *Tinker, Tailor* is about betrayal, about friendship and its failures. It's a story about men, driven men, about the destructive power of ambition, and how it's easy for truth to hide inside us. And it's about the yearning for purpose and meaning when what we thought was true is shown to be false or empty. + +> The more identities a man has, the more they express the person they conceal. The fifty-year-old who knocks five years off his age. The married man who calls himself a bachelor; the fatherless man who gives himself two children. +> *pg. 227*{.small} +> {.bq-alt} + +The novel follows George Smiley, John le Carré's most enduring character, now an ageing and unhappily retired spymaster. Smiley is brought back to help track down a Soviet mole in British intelligence. + +Smiley was forced out of the service after a botched operation that resulted in the capture and torture of Jim Prideaux, the Jim of that opening sentence. The question is, who betrayed him? Suspicion falls on 5 men at the top of MI6, friends and ex-colleagues. + +--- + +It's said that the novel is le Carré's examination of his own life and experiences, the people he knew when he was a spy himself. The 1950s and ’60s saw a bunch of revelations that exposed the [Cambridge Five traitors](https://www.theguardian.com/books/2014/apr/18/cambridge-spy-ring-what-biographers-say){target=_blank rel="noopener noreferrer"}, many of whom [le Carré had known and worked with](https://theconversation.com/john-le-carre-authentic-spy-fiction-that-wrote-the-wrongs-of-post-war-british-intelligence-152055){target=_blank rel="noopener noreferrer"}, people who had deeply covered over all that they were doing to undermine everything he stood for. Le Carré was coming to terms with discovering people he knew and trusted were two things, diametrically opposed, at once. One character, Roy Bland, is drinking with Smiley at a bar: + +> ‘You’re an educated sort of swine,’ he announced easily as he sat down again. ‘An artist is a bloke who can hold two fundamentally opposing views and still function: who dreamed that one up?’ +> *pg. 167*{.small} +> {.bq-alt} + +In the same way, the book leads the reader to do the same — to leave naïvety behind, to examine one's own motives and those of one's friends, to understand what we believe in, what we are committed to, and why. The novel puts me face-to-face with my fragilities and false hopes, and asks me to be honest with them and with myself. + +--- + +Reading *Tinker, Tailor* is an exquisite experience. Le Carré's language and his use of language is beautiful. + +> Few men can resist expressing their appetites when they are making a fantasy about themselves. +> *pg. 227*{.small} +> {.bq-alt} + +In Chapter 2, at the beginning of the story as Smiley is still trying to decipher the chaos that led to his retirement, he is given one devastating version of the downfall that also saw Control, the Head of Service, ejected. + +> The monstrosity of this, reaching Smiley through a thickening wall of spiritual exhaustion, left him momentarily speechless. +> *pg. 23*{.small} +> {.bq-alt} + +I read that and I feel it with him, feel all the lethargy and terrible resignation that builds up but is still vulnerable and can be punctured with the right needling words. + +Chapter 37, the penultimate chapter, opens with a sentence of such sublime and gentle revelation: + +> There are moments which are made up of too much stuff for them to be lived at the time they occur. +> *pg. 381*{.small} +> {.bq-alt} + +How can you do that, John? How can you take words, simple English words, and make them do such perfect things, help us understand ourselves and the world we inhabit? + +--- + +{% ImgFigure "Gary Oldman plays intelligence officer George Smiley in Tomas Alfredson’s screen adaptation (2011). Image courtesy of [Mere Orthodoxy](https://mereorthodoxy.com/were-all-george-smiley-now){target=_blank rel=\"noopener noreferrer\"}.", "margin-block-vlg content-canvas-item-wide" %}![Gary Oldman as George Smiley](/static/images/oldbooks/lecarre-tinker-tailor-oldman.jpg){% endImgFigure %} + +A great triumph of this book's brilliance is that it has been given new lives — turned into a [series for TV on the BBC](https://www.imdb.com/title/tt0080297/){target=_blank rel="noopener noreferrer"} in 1979, staring Alec Guinness as George Smiley, and more recently for cinema in a [film of Tinker, Tailor](https://www.imdb.com/title/tt1340800/){target=_blank rel="noopener noreferrer"} with Gary Oldman in the main role. Both actors have breathed Smiley into existence in their own astonishing way. Both are testaments to the story's power, accolades and deepest compliments. + +But the greatest experience is in the reading. So go on, get hold of *Tinker, Tailor, Soldier, Spy* for yourself. diff --git a/pages/library/tartt-secret-history.md b/pages/library/tartt-secret-history.md new file mode 100644 index 00000000..0be8c7d6 --- /dev/null +++ b/pages/library/tartt-secret-history.md @@ -0,0 +1,122 @@ +--- +title: "The Secret History, by Donna Tartt" +description: Have you ever read … Donna Tartt's modern classic of academic elitism and moral decay +date: 2026-02-09T10:23:04Z +layout: page-library.njk +promoted: true +order: -1 +page: + class: "page--with-hero" +image: + path: /static/images/oldbooks/tartt-secret-history.jpeg + alt: 'Cover of The Secret History, by Donna Tartt' + class: + - image-obj-cover + - image-darken-33 + - image-obj-pos-lower + figureClass: + page: "content-canvas-item-full figure--hero" +tags: + - Reading + - Novels + - "Dr B's Library" + - "#reading-library" +redirectFrom: + - /tartt-secret-history/ +--- + +So, let's see how it starts. Well, the book begins with a prologue, always an interesting place to kick off. + +> The snow in the mountains was melting and Bunny had been dead for several weeks before we came to understand the gravity of our situation. He'd been dead for ten days before they found him, you know. +> *pg. 1*{.small} +> {.bq-alt} + +A death, before we've even picked it up? + +What are you doing, Donna? Really, how can you do that? A story, before the actual story. What are you doing? + +Oh my. + +Now I want to know. + +Who is Bunny? And what kind of a name is that? Is that an actual bunny rabbit, called Bunny, weirdly? Or is it the name of a real human person? + +The next few sentences tell us — there's a huge manhunt, involving police and FBI, but snow falls after the death and covers the body where it lies at the bottom of a ravine, and there's footsteps in the mud leading down there. And then we discover the story's in the first person, and the narrator says they're partly to blame for the death – and we're not even off the first page! + +Woah. + +Have mercy on us, Donna Tartt. So much to take on board already. + +The prologue is only two pages long, and you don't ease up on the 2nd page. What? What, Donna? + +The narrator breezes through the search party, but also seems to understand that walking away is a wholly different thing. And, before leaving us, suggests that maybe it was actually a conspiracy, and that such horrors continue their haunting. So it ends, this brusque two-page prologue: + +> I suppose at one time in my life I might have had any number of stories, but now there is no other. This is the only story I well ever be able to tell. +> *pg. 2*{.small} +> {.bq-alt} + +Well, yes. + +No surprise there. Coz it's already so chilling, so terrible, and you've made sure I'm in on the secret — and I'm totally and utterly hooked. + +--- + +The story is told in two parts — Book I, and Book II — roughly the same size, and it's quickly clear that Book I has fallen back in time from the world of the prologue. Sort of. We read and we discover that the narrator is a man called Richard Papen who, at the age of twenty-eight, is telling us his story as a kind of confession. + +> Does such a thing as 'the fatal flaw,' that shadowy dark crack running down the middle of a life, exist outside of literature? I used to think it didn't. Now I think it does. And I think that mine is this: a morbid longing for the picturesque at all costs. +> *pg. 5*{.small} +> {.bq-alt} + +So begins Richard's unburdening. + +He takes us back to his time at Hampden College, a dusty institution in rural Vermont where Richard has landed almost by accident and via Financial Aid, and to his friends there. Bunny appears again quickly, as soon as pg. 7, amongst his other classmates — an exclusive club of wealthy friends, amongst whom Richard, feels forever an interloper. + +The reader realises quickly that Book I is going to take us to his terrible death. + +That makes *The Secret History* already two things — a murder mystery thriller, and a campus coming-of-age story. But there's one more — it's also a modern-day Greek tragedy. + +Richard, Bunny, and their classmates all study classics together, particularly the Greeks, and [Euripides' story of *The Bacchae*](https://chs.harvard.edu/primary-source/euripides-bacchae-sb/){target=_blank rel="noopener noreferrer"} has a shaping hand on the plot of Donna Tartt's novel. The climax of *The Bacchae* has the strongest echo — King Pentheus of Thebes has rejected Dionysus, god of wine and religious ecstasy, and his whole cult, and in punishment the god lures him to the mountains, where he is torn apart by the frenzied Maenads — but there are lots of other classical themes throughout, for those sensitive to them. + +{% ImgFigure "'A Bacchanalian Revel Before a Term' (a bust, of Pan here), Nicolas Poussin, 1632–1633. Image: [WikiMedia](https://commons.wikimedia.org/w/index.php?curid=156625){target=_blank rel=\"noopener noreferrer\"}", "margin-block-vlg content-canvas-item-wide" %}![A Bacchanalian Revel Before a Term, Nicolas Poussin, 1632–1633](/static/images/oldbooks/nicolas-poussin-bacchanale-devant-une-statue-de-pan.jpg){% endImgFigure %} + +That's no barrier to enjoying the story, though. Book I pulses with Bacchanalian sensibilities where 'beauty is terror' (pg.41), and the 'violence and savagery' (pg. 42) of the *Bacchae* feel as if they're pulling us towards the inevitable. But Tartt is so skilled an writer you can rest in the strength of her deep knowledge and just follow her in the story. + +Book II takes us into the terrible aftermath of Bunny's death — the early searches and the group's attempts to maintain their camouflage, then the strains and fractures that appear, their fears, their recriminations, their dispersal, and the ultimate outcomes. + +--- + +At its heart, the book is a devastating critique of the pursuit of beauty and appearance, the picturesque, at the expense of all else, how it can metastasise into a driven obsession that destroys anything and everything else. + +Beside that, the novel explores the experience of the in-crowd. Donna Tartt herself was part of a clique of the gifted like the one in *The Secret History* — she started on the novel while she was at Bennington College, yes, in Vermont, with [Jonathan Lethem](https://jonathanlethem.com/){target=_blank rel="noopener noreferrer"} (*Motherless Brooklyn*, etc.), [Jill Eisenstadt](https://jilleisenstadt.com/){target=_blank rel="noopener noreferrer"} (*From Rockaway*, etc.), and [Bret Easton Ellis](https://www.breteastonellis.com/){target=_blank rel="noopener noreferrer"} (*American Psycho*, etc.). Ironically, Tartt's created an in- and out-crowd with her readers, for those who are students of the classics, and those who aren't. + +Tartt has brushed off suggestions the book is based on her own life, but there is such vibrancy in the sensibilities portrayed: of trying, of desperate hope to measure up, of comparing yourself with the success of others, of a desperation for acceptance, confusion at being overlooked or worse, ostracised, that the book feels as thoroughly studied in the realm of human experience as in the world of Greek tragedy. + +--- + +The language in *The Secret History* is sublime. Not showy for its own sake, but perfectly tuned to the characters and their context. + +Speaking of Richard's tutor and of his coursemates: + +> His students — if they were any mark of his tutelage — were imposing enough, and different as they all were they shared a certain coolness, a cruel, mannered charm which was not modern in the least but had a strange cold breath of the ancient world: they were magnificent creatures, such eyes, such hands, such looks +> *pg. 32*{.small} +> {.bq-alt} + +Later, as the depth of Bunny's secret knowledge and festering resentments accelerates the group's terrible plan, Richard reflects on all the moments when they could have chosen differently. + +> It’s funny, but thinking back on it now, I realize that this particular point in time, as I stood there blinking in the deserted hall, was the one point at which I might have chosen to do something very different from what I actually did. But of course I didn’t see this crucial moment then for what it was; I suppose we never do. Instead, I only yawned, and shook myself from the momentary daze that had come upon me, and went on my way down the stairs. +> *pg. 223*{.small} +> {.bq-alt} + +From the closing pages, as Richard considers being forever haunted, by what happened at Hampden College, and by the investigation: + +> What are the dead, anyway, but waves and energy? Light shining from a dead star? +> *pg. 627*{.small} +> {.bq-alt} + +--- + +Almost 35 years have passed the book was published and it has lost none of its power or brilliance. + +Reading Donna Tartt's *The Secret History* is to read an exceptional writer of formidable talent, and I'm envious of those who never have done yet and get to experience that afresh — it's truly wondrous writing. + +I commend you to read it, whether for the first time or the umpteenth. Just read it. diff --git a/pages/reading/2023/11-november.md b/pages/reading/2023/11-november.md index fab2184b..cca77f1d 100644 --- a/pages/reading/2023/11-november.md +++ b/pages/reading/2023/11-november.md @@ -24,7 +24,7 @@ image: figureClass: page: "content-canvas-item-full figure--hero" caption: "A woman sitting in a chair reading a book." - credit: 'Photo by zero take on Unsplash' + credit: 'Photo by zero take on Unsplash' reviews: list: - title: How to Build a Boat @@ -79,7 +79,7 @@ reviews: loveable: It's complicated diverse: Yes flaws: Yes - text: "This is a special novel. I can't believe that I've only just discovered Sebastian Barry this year (reading [*Old God's Time*](/reading/2023/08-august/#old-god's-time) because it was on the 2023 Booker Prize longlist). + text: "This is a special novel. I can't believe that I've only just discovered Sebastian Barry this year (reading [*Old God's Time*](/reading/2023/08-august/#old-god's-time){target=_blank rel=\"noopener noreferrer\"} because it was on the 2023 Booker Prize longlist). Eneas McNulty grows up in Sligo, on the west coast of Ireland, at the beginning of the 20th Century. One simple choice of a naive young man during depressed times, to go to work in the British merchant navy, defines the whole of the rest of his life as the rise of Irish nationalism and the struggle for freedom from British rule begets violence and conflict. Returning from the ships to a lack of work and a cold shoulder, Eneas joins the Royal Irish Constabulary, becomes an unfortunate witness to a killing. He's branded traitor and forced to flee Ireland, his home, his family, and Viv, the woman he loves. Though he tries to return later when he hopes that memories have faded, he discovers there will never be a place for him in Sligo. diff --git a/pages/reading/index.md b/pages/reading/index.md index 72fcb4f6..fc6bb681 100644 --- a/pages/reading/index.md +++ b/pages/reading/index.md @@ -1,7 +1,7 @@ --- title: Reading description: Notes on my reading, and thoughts about reading. -date: 2026-02-05T11:39:24Z +date: 2026-02-10T14:32:19Z layout: list.njk eleventyNavigation: key: Reading @@ -16,7 +16,7 @@ pageClass: "site-content--surface-dark site-content--surface-violet" I'm currently reading: -- Anne Tyler, *[The Accidental Tourist](https://app.thestorygraph.com/books/d01c49e2-1c5c-41a5-9cec-54438f5a9541){target=_blank rel="noopener noreferrer"}* +- Anne Michaels, *[Held](https://app.thestorygraph.com/books/2d4ba404-c998-4518-a846-1bad638d02d0){target=_blank rel="noopener noreferrer"}* - Hannah Arendt, *[The Origins of Totalitarianism](https://app.thestorygraph.com/books/3d22409b-1c07-48ae-9468-ac0b158ccff1){target=_blank rel="noopener noreferrer"}* - John Banville, *[The Infinities](https://app.thestorygraph.com/books/c5c5c6d4-3dbf-42ad-a564-35bcd0723c82){target=_blank rel="noopener noreferrer"}* @@ -24,6 +24,8 @@ I'm on [The StoryGraph](https://app.thestorygraph.com/profile/joesb){target=_bla ## Read in 2026{.h3-style} +- **February** + - Anne Tyler, *[The Accidental Tourist](https://app.thestorygraph.com/books/d01c49e2-1c5c-41a5-9cec-54438f5a9541){target=_blank rel="noopener noreferrer"}* - **January** - Arundhati Roy, *[Mother Mary Comes To Me](https://app.thestorygraph.com/books/e1b64482-44ed-408d-adbf-254e289642d2){target=_blank rel="noopener noreferrer"}* - John Banville, *[The Untouchable](https://app.thestorygraph.com/books/3f1c814b-f957-42e4-88cd-fc6a73fc8268){target=_blank rel="noopener noreferrer"}* diff --git a/pages/static/images/oldbooks/anthony-fomin-_J4qf8fEaro-unsplash.jpg b/pages/static/images/oldbooks/anthony-fomin-_J4qf8fEaro-unsplash.jpg new file mode 100644 index 00000000..ac3afde9 Binary files /dev/null and b/pages/static/images/oldbooks/anthony-fomin-_J4qf8fEaro-unsplash.jpg differ diff --git a/pages/static/images/oldbooks/lecarre-tinker-tailor-library.jpeg b/pages/static/images/oldbooks/lecarre-tinker-tailor-library.jpeg new file mode 100644 index 00000000..d085824c Binary files /dev/null and b/pages/static/images/oldbooks/lecarre-tinker-tailor-library.jpeg differ diff --git a/pages/static/images/oldbooks/lecarre-tinker-tailor-oldman.jpg b/pages/static/images/oldbooks/lecarre-tinker-tailor-oldman.jpg new file mode 100644 index 00000000..ab20ea55 Binary files /dev/null and b/pages/static/images/oldbooks/lecarre-tinker-tailor-oldman.jpg differ diff --git a/pages/static/images/oldbooks/lecarre-tinker-tailor.jpeg b/pages/static/images/oldbooks/lecarre-tinker-tailor.jpeg new file mode 100644 index 00000000..8c1fc556 Binary files /dev/null and b/pages/static/images/oldbooks/lecarre-tinker-tailor.jpeg differ diff --git a/pages/static/images/oldbooks/nicolas-poussin-bacchanale-devant-une-statue-de-pan.jpg b/pages/static/images/oldbooks/nicolas-poussin-bacchanale-devant-une-statue-de-pan.jpg new file mode 100644 index 00000000..3711c945 Binary files /dev/null and b/pages/static/images/oldbooks/nicolas-poussin-bacchanale-devant-une-statue-de-pan.jpg differ diff --git a/pages/static/images/oldbooks/pexels-artbovich-5998034.jpg b/pages/static/images/oldbooks/pexels-artbovich-5998034.jpg new file mode 100644 index 00000000..b96414fa Binary files /dev/null and b/pages/static/images/oldbooks/pexels-artbovich-5998034.jpg differ diff --git a/pages/static/images/oldbooks/pexels-tima-miroshnichenko-9572619.jpg b/pages/static/images/oldbooks/pexels-tima-miroshnichenko-9572619.jpg new file mode 100644 index 00000000..1747aa33 Binary files /dev/null and b/pages/static/images/oldbooks/pexels-tima-miroshnichenko-9572619.jpg differ diff --git a/pages/static/images/oldbooks/tartt-secret-history.jpeg b/pages/static/images/oldbooks/tartt-secret-history.jpeg new file mode 100644 index 00000000..5cea6295 Binary files /dev/null and b/pages/static/images/oldbooks/tartt-secret-history.jpeg differ diff --git a/pages/static/images/source/knczbciv.avif b/pages/static/images/source/knczbciv.avif new file mode 100644 index 00000000..6598c2e3 Binary files /dev/null and b/pages/static/images/source/knczbciv.avif differ diff --git a/pages/static/images/source/knczbciv.jpg b/pages/static/images/source/knczbciv.jpg new file mode 100644 index 00000000..8692b5ab Binary files /dev/null and b/pages/static/images/source/knczbciv.jpg differ diff --git a/pages/static/images/source/nasa-pale-blue-dot-revised.jpg b/pages/static/images/source/nasa-pale-blue-dot-revised.jpg new file mode 100644 index 00000000..46928a82 Binary files /dev/null and b/pages/static/images/source/nasa-pale-blue-dot-revised.jpg differ diff --git a/pages/static/images/source/nasa-pale-blue-dot-revised.webp b/pages/static/images/source/nasa-pale-blue-dot-revised.webp new file mode 100644 index 00000000..8497a66d Binary files /dev/null and b/pages/static/images/source/nasa-pale-blue-dot-revised.webp differ diff --git a/pages/thinking/being-zaphod-beeblebrox.md b/pages/thinking/being-zaphod-beeblebrox.md new file mode 100644 index 00000000..032e876f --- /dev/null +++ b/pages/thinking/being-zaphod-beeblebrox.md @@ -0,0 +1,98 @@ +--- +title: "Being Zaphod Beeblebrox, or: How We Learned to Cope in the Total Perspective Vortex" +description: | + The universe is vast and baffling and we are insignificant specs within it. + + So why haven't we all gone mad? +layout: page.njk +date: 2026-01-27T11:38:44Z +promoted: true +sharePage: true +hideDescription: true +order: 0 +tags: + - Thinking + - '#thinking' +page: + class: "page--with-hero page--thinking" +image: + path: /static/images/source/knczbciv.avif + alt: "Sam Rockwell as Zaphod Beeblebrox in 'The Hitchhiker's Guide to the Galaxy'" + credit: "Sam Rockwell as Zaphod Beeblebrox in *The Hitchhiker's Guide to the Galaxy*. Image via Buena Vista." + class: + - image-obj-cover + - image-darken-10 + # pictureClass: "content-canvas-item-right content-canvas-item-right--span-3" + pictureClass: + list: "index-list__item__picture" + figureClass: + page: "content-canvas-item-full picture--hero" +classes: + figClasses: + - content-canvas-item-wl-ms + - content-canvas-item-span-4 +--- + +It's the most amazing thing that so few of us are out of our minds.{.large .bold} + +How do we manage to stay sane?{.large .margin-block-end-lg} + +The world that we all live in is utterly vast. Take the country. Let's just start there. Millions of people! And you're just one of those. + +Scale that up to the continent, to the world — there's [8.3 billion people currently living on Planet Earth](https://www.worldometers.info/world-population/){target=_blank rel="noreferrer noopener"}, at the start of 2026. 8.3 billion! Bonkers. + +And this planet we're on — that's tiny, too. Have you seen the pale blue dot photo? + +{% ImgFigure "NASA's [pale blue dot image](https://science.nasa.gov/mission/voyager/voyager-1s-pale-blue-dot){target=_blank rel=\"noreferrer noopener\"} of Earth taken beyond Neptune, 6 billion kilometres out from the Sun.", classes.figClasses %} +!["Earth as a pale blue dot in the universe"](/static/images/source/nasa-pale-blue-dot-revised.jpg) +{% endImgFigure %} + +It was taken on Feb. 14, 1990, by NASA’s Voyager 1 spacecraft at the edge of the solar system. Earth is just a point of light, barely one pixel in size, caught in a scattered ray of sunlight. + +We are each little individuals walking around on that tiny point of light for the briefest instant of cosmic time. Bananas. + +The Universe itself? Well, the [scale of the Universe](https://scaleofuniverse.com/en-gb){target=_blank rel="noreferrer noopener"} is just incomprehensible. + +Now, think of some names — of people who are generally well-known amongst that 8.3 billion. On a good day we could probably list a hundred or so public figures, maybe even a few more — still that's a vanishingly small portion of the global population, so insignificant it's little more than a rounding error. Those people, those famous names — they're barely a blink. + +Think back a bit in your family history. Do you know who your great, great grandparents were? That's your grandparents' grandparents, that's all — not that far back in your lineage, probably sometime around the end of the 1800s, the first part of the 1900s, or thereabouts. Do you know much about them? Do you know anything about them? Do you even know their names? You're directly descended from them — you of all people should be someone who remembers them, even if no one else in that 8.3 billion does. No? + +And how about us — *will our great, great grandchildren remember us?* + +But this is all just about existing. What about living? + +Living as a human is hard. + +The world is a bewildering and baffling place, confusing and difficult, a continual experience of triumph and adversity, joy and pain and hope, a place that begins and ends in suffering and surviving. + +Tom Junod, author of the famous [*The Falling Man* essay](https://www.esquire.com/news-politics/a48031/the-falling-man-tom-junod/){target=_blank rel="nofollow noopener"} in Esquire magazine (originally published in the September 2003 issue), [talks powerfully of our tragic fallibility](https://www.youtube.com/watch?v=JnHTUyZjwiY&t=3870s){target=_blank rel="nofollow noopener"}. The long epic of human history, he says, tells its own story, a story in which everything humanity does is wrong. We fuck up. We fuck up again, and again, and again. Any piece of technology we get from or put to use in war, and we keep doing it. Our religion, our politics, inevitably becomes a tool of tyranny, he says. We fuck up. We fuck up again, and again, and again. + +The same consistent truth governs the personal scale. Relationships between individuals are fraught with difficulties, where so much is confusing or cryptic or impenetrable. We hurt each other, and we are hurt by each other, and we carry on hurting each other. + +And yet, we do not despair. Despite all of this, we rarely lose hope. We rise, and we rise again the next day and we get on with living, with moving forward, through the suffering and the confusion and the bewilderment. + +Why? And how? + +## Entering the Total Perspective Vortex + +Douglas Adams's brilliant series *The Hitchhiker's Guide to the Galaxy* includes terrible torture device called the "Total Perspective Vortex". In the *Hitchhiker's* novels, the Vortex was described in *The Restaurant at the End of the Universe*: + +> … when you are put into the Vortex you are given just one momentary glimpse of the entire unimaginable infinity of creation, and somewhere in it a tiny little marker, a microscopic dot on a microscopic dot, which says ‘You are here.’ +> +> Douglas Adams, *The Restaurant at the End of the Universe*, pg. 72{.smaller .margin-block-start-none} + +Its potency is unimaginable, described briefly by Roosta, who is encountered at The Hitchhiker's Guide to the Galaxy editorial building: + +> “Listen!” said Roosta urgently. “You can kill a man, destroy his body, break his spirit, but only the Total Perspective Vortex can annihilate a man’s soul! The treatment lasts seconds, but the effects last the rest of your life!” +> +> Douglas Adams, *The Restaurant at the End of the Universe*, pg. 60{.smaller .margin-block-start-none} + +Zaphod Beeblebrox, briefly the President of the Galaxy is the only person known to have survived the Total Perspective Vortex. + +Because we tell stories. + +## Narratives > the universe + +Stories are the unique and distinctive power we have over the universe. Stories are an alchemy of two source elements — language, and experience — and they are combined together to resist the implacable, unyielding, remorseless passage of the cosmos, untouched by the to-and-fro of humanity. + +Narrated time changes the very structure of the cosmos, and in doing so makes its shape more human. diff --git a/pages/thinking/readers-and-writers.md b/pages/thinking/readers-and-writers.md index 932dfda4..15f4feb1 100644 --- a/pages/thinking/readers-and-writers.md +++ b/pages/thinking/readers-and-writers.md @@ -5,6 +5,8 @@ layout: page.njk date: 2024-11-21 promoted: true sharePage: true +hideDescriptionTB: false +hideDescriptionPage: true order: 0 page: class: "page--with-hero page--thinking" diff --git a/pages/writing/index.md b/pages/writing/index.md index f157ed6b..1a2ffa1f 100644 --- a/pages/writing/index.md +++ b/pages/writing/index.md @@ -1,7 +1,7 @@ --- title: Writing -description: My writing, and my writing about writing. -date: 2025-12-02T11:53:17Z +description: My writing, and my writing about writing — short stories, being a writer, and other stuff. +date: 2026-02-09T10:50:17Z eleventyNavigation: key: Writing order: 1 diff --git a/pages/writing/what-is-a-story.md b/pages/writing/what-is-a-story.md index a87f3a72..260c67b0 100644 --- a/pages/writing/what-is-a-story.md +++ b/pages/writing/what-is-a-story.md @@ -41,7 +41,7 @@ A story is more than just that, though, more than just a sequence of things that **First**, in a story the set of things that happen has been selected. -In the time-world of the story, Saunders's linear-temporal phenomenon, many things have happen. Indeed, many other things did happen, but a load of them are missed out. They happened but we don't know about them because they're not included in the story, omitted from the tale as told. For some reason, the story's author chose not to include them. +In the time-world of the story, Saunders's linear-temporal phenomenon, many things have happened. Indeed, many other things did happen, but a load of them are missed out. They happened but we don't know about them because they're not included in the story, omitted from the tale as told. For some reason, the story's author chose not to include them. Those things are left out because, one way or another, they're not relevant. Cleaning teeth. Folding down boxes for the recycling. Mowing the lawn. Having left-overs for lunch. Noticing a blackbird mimicking a car alarm. They're too boring, probably, or too inconsequential, too tangential or surreal, or maybe even they're too irritating and prevent the story from getting where it's going. Whatever the reason, they're left out. diff --git a/src/_includes/layouts/components/head-social-cards.njk b/src/_includes/layouts/components/head-social-cards.njk index d39874bd..52675066 100644 --- a/src/_includes/layouts/components/head-social-cards.njk +++ b/src/_includes/layouts/components/head-social-cards.njk @@ -10,7 +10,7 @@ {% set ogType %}article{% endset %} {% endif %} -{% if description and excerpt|length == 0 %} +{% if description and excerpt | length == 0 %} {% set excerpt = description %} {% endif %} diff --git a/src/_includes/layouts/components/index-list.njk b/src/_includes/layouts/components/index-list.njk index 2f70c804..5088d1c5 100644 --- a/src/_includes/layouts/components/index-list.njk +++ b/src/_includes/layouts/components/index-list.njk @@ -8,7 +8,7 @@ {% set trash = sze.next() %} {% endif %} -