diff --git a/components/Footer.tsx b/components/Footer.tsx
index 8c92be0..14e6547 100644
--- a/components/Footer.tsx
+++ b/components/Footer.tsx
@@ -14,11 +14,10 @@ export default function Footer() {
Welcome to my homepage!
- > - ) -} - -export default Home -``` - -For a markdown file, the default image tag can be used and the default `img` tag gets replaced by the `Image` component in the build process. - -Assuming we have a file called `ocean.jpg` in `data/img/ocean.jpg`, the following line of code would generate the optimized image. - -``` - -``` - -Alternatively, since we are using mdx, we can just use the image component directly! Note, that you would have to provide a fixed width and height. The `img` tag method parses the dimension automatically. - -```js -- Photo by [YUCAR - FotoGrafik](https://unsplash.com/@yucar?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) - on - [Unsplash](https://unsplash.com/s/photos/sea?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) -
- -# Benefits - -- Smaller image size with Webp (~30% smaller than jpeg) -- Responsive images - the correct image size is served based on the user's viewport -- Lazy loading - images load as they are scrolled to the viewport -- Avoids [Cumulative Layout Shift](https://web.dev/cls/) -- Optimization on demand instead of build-time - no increase in build time! - -# Limitations - -- Due to the reliance on `next/image`, unless you are using an external image CDN like Cloudinary or Imgix, it is practically required to use Vercel for hosting. This is because the component acts like a serverless function that calls a highly optimized image CDN. - - If you do not want to be tied to Vercel, you can remove `imgToJsx` in `remarkPlugins` in `lib/mdx.js`. This would avoid substituting the default `img` tag. - - Alternatively, one could wait for image optimization at build time to be supported. A different library, [next-optimized-images](https://github.com/cyrilwanner/next-optimized-images) does that, although it requires transforming the images through webpack which is not done here. - -- Images from external links are not passed through `next/image` -- All images have to be stored in the `public` folder e.g `/static/images/ocean.jpeg` diff --git a/data/blog/illusive-golden-age-out-now.md b/data/blog/illusive-golden-age-out-now.md new file mode 100644 index 0000000..b883e9c --- /dev/null +++ b/data/blog/illusive-golden-age-out-now.md @@ -0,0 +1,16 @@ +--- +title: Illusive Golden Age out now +date: '2018-11-01' +tags: ['album', 'merch', 'release'] +draft: false +summary: Today is a great day for Augury, Illusive Golden Age is finally out! +images: ['/static/images/news/iga.jpg'] +--- + +Today is a great day for Augury, _Illusive Golden Age_ is finally out! + +Album and cover t-shirt available at: [theartisanerastore.com](http://www.theartisanerastore.com) + +Band merch store: [augury.ifmerch.com/en/](https://augury.ifmerch.com/en/) + + diff --git a/data/blog/introducing-tailwind-nextjs-starter-blog.mdx b/data/blog/introducing-tailwind-nextjs-starter-blog.mdx deleted file mode 100644 index 70c175e..0000000 --- a/data/blog/introducing-tailwind-nextjs-starter-blog.mdx +++ /dev/null @@ -1,193 +0,0 @@ ---- -title: 'Introducing Tailwind Nextjs Starter Blog' -date: '2021-01-12' -lastmod: '2021-02-01' -tags: ['next-js', 'tailwind', 'guide'] -draft: false -summary: 'Looking for a performant, out of the box template, with all the best in web technology to support your blogging needs? Checkout the Tailwind Nextjs Starter Blog template.' -images: ['/static/images/canada/mountains.jpg', '/static/images/canada/toronto.jpg'] ---- - - - -# Tailwind Nextjs Starter Blog - -[](https://vercel.com/new/git/external?repository-url=https://github.com/timlrx/tailwind-nextjs-starter-blog) - -This is a [Next.js](https://nextjs.org/), [Tailwind CSS](https://tailwindcss.com/) blogging starter template. Probably the most feature-rich Next.js markdown blogging template out there. Comes out of the box configured with the latest technologies to make technical writing a breeze. Easily configurable and customizable. Perfect as a replacement to existing Jekyll and Hugo individual blogs. - -Check out the documentation below to get started. - -Facing issues? Check the [FAQ page](https://github.com/timlrx/tailwind-nextjs-starter-blog/wiki) and do a search on past issues. Feel free to open a new issue if none has been posted previously. - -Feature request? Check the past discussions to see if it has been brought up previously. Otherwise, feel free to start a new discussion thread. All ideas are welcomed! - -## Examples - -- [Demo Blog](https://tailwind-nextjs-starter-blog.vercel.app/) - this repo -- [My personal blog](https://www.timlrx.com) - modified to auto-generate blog posts with dates -- [Aloisdg's cookbook](https://tambouille.vercel.app/) - with pictures and recipes! -- [GautierArcin's demo with next translate](https://tailwind-nextjs-starter-blog-seven.vercel.app/) - includes translation of mdx posts, [source code](https://github.com/GautierArcin/tailwind-nextjs-starter-blog/tree/demo/next-translate) -- [David Levai's digital garden](https://davidlevai.com/) - customized design and added email subscriptions -- [Thinh's Corner](https://thinhcorner.com/) - [customized layout](https://github.com/Th1nhNg0/th1nhng0.vercel.app/blob/5e73a420828d82f01e7147512a2c3273c4ec19f8/layouts/PostLayout.js) with sticky side table of contents - -Using the template? Feel free to create a PR and add your blog to this list. - -## Motivation - -I wanted to port my existing blog to Nextjs and Tailwind CSS but there was no easy out of the box template to use so I decided to create one. Design is adapted from [Tailwindlabs blog](https://github.com/tailwindlabs/blog.tailwindcss.com). - -I wanted it to be nearly as feature-rich as popular blogging templates like [beautiful-jekyll](https://github.com/daattali/beautiful-jekyll) and [Hugo Academic](https://github.com/wowchemy/wowchemy-hugo-modules) but with the best of React's ecosystem and current web development's best practices. - -## Features - -- Easy styling customization with [Tailwind 3.0](https://tailwindcss.com/blog/tailwindcss-v3) and primary color attribute -- Near perfect lighthouse score - [Lighthouse report](https://www.webpagetest.org/result/210111_DiC1_08f3670c3430bf4a9b76fc3b927716c5/) -- Lightweight, 45kB first load JS, uses Preact in production build -- Mobile-friendly view -- Light and dark theme -- Self-hosted font with [Fontsource](https://fontsource.org/) -- Supports [plausible](https://plausible.io/), [simple analytics](https://simpleanalytics.com/) and google analytics -- [MDX - write JSX in markdown documents!](https://mdxjs.com/) -- Server-side syntax highlighting with line numbers and line highlighting via [rehype-prism-plus](https://github.com/timlrx/rehype-prism-plus) -- Math display supported via [KaTeX](https://katex.org/) -- Citation and bibliography support via [rehype-citation](https://github.com/timlrx/rehype-citation) -- Automatic image optimization via [next/image](https://nextjs.org/docs/basic-features/image-optimization) -- Flexible data retrieval with [mdx-bundler](https://github.com/kentcdodds/mdx-bundler) -- Support for tags - each unique tag will be its own page -- Support for multiple authors -- Blog templates -- TOC component -- Support for nested routing of blog posts -- Newsletter component with support for mailchimp, buttondown and convertkit -- Supports [giscus](https://github.com/laymonage/giscus), [utterances](https://github.com/utterance/utterances) or disqus -- Projects page -- Preconfigured security headers -- SEO friendly with RSS feed, sitemaps and more! - -## Sample posts - -- [A markdown guide](https://tailwind-nextjs-starter-blog.vercel.app/blog/github-markdown-guide) -- [Learn more about images in Next.js](https://tailwind-nextjs-starter-blog.vercel.app/blog/guide-to-using-images-in-nextjs) -- [A tour of math typesetting](https://tailwind-nextjs-starter-blog.vercel.app/blog/deriving-ols-estimator) -- [Simple MDX image grid](https://tailwind-nextjs-starter-blog.vercel.app/blog/pictures-of-canada) -- [Example of long prose](https://tailwind-nextjs-starter-blog.vercel.app/blog/the-time-machine) -- [Example of Nested Route Post](https://tailwind-nextjs-starter-blog.vercel.app/blog/nested-route/introducing-multi-part-posts-with-nested-routing) - -## Quick Start Guide - -1. JS (official support) - `npx degit https://github.com/timlrx/tailwind-nextjs-starter-blog.git` or TS (community support) - `npx degit timlrx/tailwind-nextjs-starter-blog#typescript` -2. Personalize `siteMetadata.js` (site related information) -3. Modify the content security policy in `next.config.js` if you want to use - any analytics provider or a commenting solution other than giscus. -4. Personalize `authors/default.md` (main author) -5. Modify `projectsData.js` -6. Modify `headerNavLinks.js` to customize navigation links -7. Add blog posts -8. Deploy on Vercel - -## Development - -First, run the development server: - -```bash -npm start -# or -npm run dev -``` - -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. - -You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file. - -## Extend / Customize - -`data/siteMetadata.js` - contains most of the site related information which should be modified for a user's need. - -`data/authors/default.md` - default author information (required). Additional authors can be added as files in `data/authors`. - -`data/projectsData.js` - data used to generate styled card on the projects page. - -`data/headerNavLinks.js` - navigation links. - -`data/logo.svg` - replace with your own logo. - -`data/blog` - replace with your own blog posts. - -`public/static` - store assets such as images and favicons. - -`tailwind.config.js` and `css/tailwind.css` - contain the tailwind stylesheet which can be modified to change the overall look and feel of the site. - -`css/prism.css` - controls the styles associated with the code blocks. Feel free to customize it and use your preferred prismjs theme e.g. [prism themes](https://github.com/PrismJS/prism-themes). - -`components/social-icons` - to add other icons, simply copy an svg file from [Simple Icons](https://simpleicons.org/) and map them in `index.js`. Other icons use [heroicons](https://heroicons.com/). - -`components/MDXComponents.js` - pass your own JSX code or React component by specifying it over here. You can then call them directly in the `.mdx` or `.md` file. By default, a custom link and image component is passed. - -`layouts` - main templates used in pages. - -`pages` - pages to route to. Read the [Next.js documentation](https://nextjs.org/docs) for more information. - -`next.config.js` - configuration related to Next.js. You need to adapt the Content Security Policy if you want to load scripts, images etc. from other domains. - -## Post - -### Frontmatter - -Frontmatter follows [Hugo's standards](https://gohugo.io/content-management/front-matter/). - -Currently 10 fields are supported. - -``` -title (required) -date (required) -tags (required, can be empty array) -lastmod (optional) -draft (optional) -summary (optional) -images (optional, if none provided defaults to socialBanner in siteMetadata config) -authors (optional list which should correspond to the file names in `data/authors`. Uses `default` if none is specified) -layout (optional list which should correspond to the file names in `data/layouts`) -canonicalUrl (optional, canonical url for the post for SEO) -``` - -Here's an example of a post's frontmatter: - -``` ---- -title: 'Introducing Tailwind Nexjs Starter Blog' -date: '2021-01-12' -lastmod: '2021-01-18' -tags: ['next-js', 'tailwind', 'guide'] -draft: false -summary: 'Looking for a performant, out of the box template, with all the best in web technology to support your blogging needs? Checkout the Tailwind Nextjs Starter Blog template.' -images: ['/static/images/canada/mountains.jpg', '/static/images/canada/toronto.jpg'] -authors: ['default', 'sparrowhawk'] -layout: PostLayout -canonicalUrl: https://tailwind-nextjs-starter-blog.vercel.app/blog/introducing-tailwind-nextjs-starter-blog ---- -``` - -### Compose - -Run `node ./scripts/compose.js` to bootstrap a new post. - -Follow the interactive prompt to generate a post with pre-filled front matter. - -## Deploy - -**Vercel** -The easiest way to deploy the template is to use the [Vercel Platform](https://vercel.com) from the creators of Next.js. Check out the [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. - -**Netlify / GitHub Pages / Firebase etc.** -As the template uses `next/image` for image optimization, additional configurations have to be made to deploy on other popular static hosting websites like [Netlify](https://www.netlify.com/) or [GitHub Pages](https://pages.github.com/). An alternative image optimization provider such as Imgix, Cloudinary or Akamai has to be used. Alternatively, replace the `next/image` component with a standard `` blocks. - -## Line highlighting and line numbers - -Line highlighting and line numbers are now supported out of the box thanks to the new [rehype-prism-plus plugin](https://github.com/timlrx/rehype-prism-plus) - -The following javascript code block: - -```` -```js {1, 3-4} showLineNumbers -var num1, num2, sum -num1 = prompt('Enter first number') -num2 = prompt('Enter second number') -sum = parseInt(num1) + parseInt(num2) // "+" means "add" -alert('Sum = ' + sum) // "+" means combine into a string -``` -```` - -will appear as: - -```js {1,3-4} showLineNumbers -var num1, num2, sum -num1 = prompt('Enter first number') -num2 = prompt('Enter second number') -sum = parseInt(num1) + parseInt(num2) // "+" means "add" -alert('Sum = ' + sum) // "+" means combine into a string -``` - -To modify the styles, change the following class selectors in the `prism.css` file: - -```css -.code-highlight { - @apply float-left min-w-full; -} - -.code-line { - @apply -mx-4 block border-l-4 border-opacity-0 pl-4 pr-4; -} - -.code-line.inserted { - @apply bg-green-500 bg-opacity-20; -} - -.code-line.deleted { - @apply bg-red-500 bg-opacity-20; -} - -.highlight-line { - @apply -mx-4 border-l-4 border-primary-500 bg-gray-700 bg-opacity-50; -} - -.line-number::before { - @apply mr-4 -ml-2 inline-block w-4 text-right text-gray-400; - content: attr(line); -} -``` - -## Newletter component (v1.1.3) - -Introduced in v1.1.3, the newsletter component gives you an easy way to build an audience. It integrates with the following providers: - -- [Mailchimp](https://mailchimp.com/) -- [Buttondown](https://buttondown.email/) -- [Convertkit](https://convertkit.com/) - -To use it, specify the provider which you are using in the config file and add the necessary environment variables to the `.env` file. -For more information on the required variables, check out `.env.sample.` - -Two components are exported, a default `NewsletterForm` and a `BlogNewsletterForm` component, which is also passed in as an MDX component -and can be used in a blog post: - -```jsx --``` - - - -The component relies on nextjs's [API routes](https://nextjs.org/docs/api-routes/introduction) which requires a server-side instance of nextjs to be setup -and is not compatible with a 100% static site export. Users should either self-host or use a compatible platform like Vercel or Netlify which supports this functionality. - -A static site compatible alternative is to substitute the route in the newsletter component with a form API endpoint provider. - -## Bibliography and Citations (v1.2.1) - -`rehype-citation` plugin is added to the xdm processing pipeline in v1.2.1. This allows you to easily format citations and insert bibliography from an existing bibtex or CSL-json file. - -For example, the following markdown code sample: - -```md -Standard citation [@Nash1950] -In-text citations e.g. @Nash1951 -Multiple citations [see @Nash1950; @Nash1951, page 50] - -**References:** - -[^ref] -``` - -is rendered to the following: - -Standard citation [@Nash1950] -In-text citations e.g. @Nash1951 -Multiple citations [see @Nash1950; @Nash1951, page 50] - -**References:** - -[^ref] - -A bibliography will be inserted at the end of the document, but this can be overwritten by specifying a `[^Ref]` tag at the intended location. -The plugin uses APA citation formation, but also supports the following CSLs, 'apa', 'vancouver', 'harvard1', 'chicago', 'mla', or a path to a user-specified CSL file. - -See [rehype-citation readme](https://github.com/timlrx/rehype-citation) for more information on the configuration options. - -## Self-hosted font (v1.5.0) - -Google font has been replaced with self-hosted font from [Fontsource](https://fontsource.org/). This gives the following [advantages](https://fontsource.org/docs/introduction): - -> Self-hosting brings significant performance gains as loading fonts from hosted services, such as Google Fonts, lead to an extra (render blocking) network request. To provide perspective, for simple websites it has been seen to double visual load times. -> -> Fonts remain version locked. Google often pushes updates to their fonts without notice, which may interfere with your live production projects. Manage your fonts like any other NPM dependency. -> -> Commit to privacy. Google does track the usage of their fonts and for those who are extremely privacy concerned, self-hosting is an alternative. - -This leads to a smaller font bundle and a 0.1s faster load time ([webpagetest comparison](https://www.webpagetest.org/video/compare.php?tests=220201_AiDcFH_f68a69b758454dd52d8e67493fdef7da,220201_BiDcMC_bf2d53f14483814ba61e794311dfa771)). - -To change the default Inter font: - -1. Install the preferred [font](https://fontsource.org/fonts) - `npm install -save @fontsource/ ` -2. Update the import at `pages/_app.js`- `import '@fontsource/ .css'` -3. Update the `fontfamily` property in the tailwind css config file - -## Upgrade guide - -There are significant portions of the code that has been changed from v0 to v1 including support for layouts and a new mdx engine. - -There's also no real reason to change if the previous one serves your needs and it might be easier to copy -the component changes you are interested in to your existing blog rather than migrating everything over. - -Nonetheless, if you want to do so and have not changed much of the template, you could clone the new version and copy over the blog post over to the new template. - -Another alternative would be to pull the latest template version with the following code: - -```bash -git remote add template git@github.com:timlrx/tailwind-nextjs-starter-blog.git -git pull template v1 --allow-unrelated-histories -rm -rf node_modules -``` - -You can see an example of such a migration in this [commit](https://github.com/timlrx/timlrx.com/commit/bba1c185384fd6d5cdaac15abf802fdcff027286) for my personal blog. - -v1 also uses `feed.xml` rather than `index.xml`, to avoid some build issues with Vercel. If you are migrating you should add a redirect to `next.config.js` like so: - -```js -async redirects() { - return [ - { - source: '/:path/index.xml', - destination: '/:path/feed.xml', - permanent: true, - } - ] -} -``` diff --git a/data/blog/pictures-of-canada.mdx b/data/blog/pictures-of-canada.mdx deleted file mode 100644 index 68cf7fc..0000000 --- a/data/blog/pictures-of-canada.mdx +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: O Canada -date: '2017-07-15' -tags: ['holiday', 'canada', 'images'] -draft: false -summary: The scenic lands of Canada featuring maple leaves, snow-capped mountains, turquoise lakes and Toronto. Take in the sights in this photo gallery exhibition and see how easy it is to replicate with some MDX magic and tailwind classes. ---- - -# O Canada - -The scenic lands of Canada featuring maple leaves, snow-capped mountains, turquoise lakes and Toronto. Take in the sights in this photo gallery exhibition and see how easy it is to replicate with some MDX magic and tailwind classes. - -Features images served using `next/image` component. The locally stored images are located in a folder with the following path: `/static/images/canada/[filename].jpg` - -Since we are using mdx, we can create a simple responsive flexbox grid to display our images with a few tailwind css classes. - ---- - -# Gallery - - -- -# Implementation - -```js --  ---  ---  ---  ----``` - -With MDX v2, one can interleave markdown in jsx as shown in the example code. - -### Photo Credits - --  ---  ---  ---  --- Maple photo by [Guillaume - Jaillet](https://unsplash.com/@i_am_g?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) - on - [Unsplash](https://unsplash.com/s/photos/canada?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) --- Mountains photo by [John - Lee](https://unsplash.com/@john_artifexfilms?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) - on - [Unsplash](https://unsplash.com/s/photos/canada?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) --- Lake photo by [Tj - Holowaychuk](https://unsplash.com/@tjholowaychuk?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) - on - [Unsplash](https://unsplash.com/s/photos/canada?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) --- Toronto photo by [Matthew - Henry](https://unsplash.com/@matthewhenry?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) - on - [Unsplash](https://unsplash.com/s/photos/canada?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) -diff --git a/data/blog/the-time-machine.mdx b/data/blog/the-time-machine.mdx deleted file mode 100644 index 13cc546..0000000 --- a/data/blog/the-time-machine.mdx +++ /dev/null @@ -1,238 +0,0 @@ ---- -title: 'The Time Machine' -date: '2018-08-15' -tags: ['writings', 'book', 'reflection'] -draft: false -summary: 'The Time Traveller (for so it will be convenient to speak of him) was -expounding a recondite matter to us. His pale grey eyes shone and -twinkled, and his usually pale face was flushed and animated...' ---- - -# The Time Machine by H. G. Wells - -_Title_: The Time Machine - -_Author_: H. G. Wells - -_Subject_: Science Fiction - -_Language_: English - -_Source_: [Project Gutenberg](https://www.gutenberg.org/ebooks/35) - -## Introduction - -The Time Traveller (for so it will be convenient to speak of him) was -expounding a recondite matter to us. His pale grey eyes shone and -twinkled, and his usually pale face was flushed and animated. The fire -burnt brightly, and the soft radiance of the incandescent lights in the -lilies of silver caught the bubbles that flashed and passed in our -glasses. Our chairs, being his patents, embraced and caressed us rather -than submitted to be sat upon, and there was that luxurious -after-dinner atmosphere, when thought runs gracefully free of the -trammels of precision. And he put it to us in this way—marking the -points with a lean forefinger—as we sat and lazily admired his -earnestness over this new paradox (as we thought it) and his fecundity. - -“You must follow me carefully. I shall have to controvert one or two -ideas that are almost universally accepted. The geometry, for instance, -they taught you at school is founded on a misconception.” - -“Is not that rather a large thing to expect us to begin upon?” said -Filby, an argumentative person with red hair. - -“I do not mean to ask you to accept anything without reasonable ground -for it. You will soon admit as much as I need from you. You know of -course that a mathematical line, a line of thickness _nil_, has no real -existence. They taught you that? Neither has a mathematical plane. -These things are mere abstractions.” - -“That is all right,” said the Psychologist. - -“Nor, having only length, breadth, and thickness, can a cube have a -real existence.” - -“There I object,” said Filby. “Of course a solid body may exist. All -real things—” - -“So most people think. But wait a moment. Can an _instantaneous_ cube -exist?” - -“Don’t follow you,” said Filby. - -“Can a cube that does not last for any time at all, have a real -existence?” - -Filby became pensive. “Clearly,” the Time Traveller proceeded, “any -real body must have extension in _four_ directions: it must have -Length, Breadth, Thickness, and—Duration. But through a natural -infirmity of the flesh, which I will explain to you in a moment, we -incline to overlook this fact. There are really four dimensions, three -which we call the three planes of Space, and a fourth, Time. There is, -however, a tendency to draw an unreal distinction between the former -three dimensions and the latter, because it happens that our -consciousness moves intermittently in one direction along the latter -from the beginning to the end of our lives.” - -“That,” said a very young man, making spasmodic efforts to relight his -cigar over the lamp; “that . . . very clear indeed.” - -“Now, it is very remarkable that this is so extensively overlooked,” -continued the Time Traveller, with a slight accession of cheerfulness. -“Really this is what is meant by the Fourth Dimension, though some -people who talk about the Fourth Dimension do not know they mean it. It -is only another way of looking at Time. _There is no difference between -Time and any of the three dimensions of Space except that our -consciousness moves along it_. But some foolish people have got hold of -the wrong side of that idea. You have all heard what they have to say -about this Fourth Dimension?” - -“_I_ have not,” said the Provincial Mayor. - -“It is simply this. That Space, as our mathematicians have it, is -spoken of as having three dimensions, which one may call Length, -Breadth, and Thickness, and is always definable by reference to three -planes, each at right angles to the others. But some philosophical -people have been asking why _three_ dimensions particularly—why not -another direction at right angles to the other three?—and have even -tried to construct a Four-Dimensional geometry. Professor Simon Newcomb -was expounding this to the New York Mathematical Society only a month -or so ago. You know how on a flat surface, which has only two -dimensions, we can represent a figure of a three-dimensional solid, and -similarly they think that by models of three dimensions they could -represent one of four—if they could master the perspective of the -thing. See?” - -“I think so,” murmured the Provincial Mayor; and, knitting his brows, -he lapsed into an introspective state, his lips moving as one who -repeats mystic words. “Yes, I think I see it now,” he said after some -time, brightening in a quite transitory manner. - -“Well, I do not mind telling you I have been at work upon this geometry -of Four Dimensions for some time. Some of my results are curious. For -instance, here is a portrait of a man at eight years old, another at -fifteen, another at seventeen, another at twenty-three, and so on. All -these are evidently sections, as it were, Three-Dimensional -representations of his Four-Dimensioned being, which is a fixed and -unalterable thing. - -“Scientific people,” proceeded the Time Traveller, after the pause -required for the proper assimilation of this, “know very well that Time -is only a kind of Space. Here is a popular scientific diagram, a -weather record. This line I trace with my finger shows the movement of -the barometer. Yesterday it was so high, yesterday night it fell, then -this morning it rose again, and so gently upward to here. Surely the -mercury did not trace this line in any of the dimensions of Space -generally recognised? But certainly it traced such a line, and that -line, therefore, we must conclude, was along the Time-Dimension.” - -“But,” said the Medical Man, staring hard at a coal in the fire, “if -Time is really only a fourth dimension of Space, why is it, and why has -it always been, regarded as something different? And why cannot we move -in Time as we move about in the other dimensions of Space?” - -The Time Traveller smiled. “Are you so sure we can move freely in -Space? Right and left we can go, backward and forward freely enough, -and men always have done so. I admit we move freely in two dimensions. -But how about up and down? Gravitation limits us there.” - -“Not exactly,” said the Medical Man. “There are balloons.” - -“But before the balloons, save for spasmodic jumping and the -inequalities of the surface, man had no freedom of vertical movement.” - -“Still they could move a little up and down,” said the Medical Man. - -“Easier, far easier down than up.” - -“And you cannot move at all in Time, you cannot get away from the -present moment.” - -“My dear sir, that is just where you are wrong. That is just where the -whole world has gone wrong. We are always getting away from the present -moment. Our mental existences, which are immaterial and have no -dimensions, are passing along the Time-Dimension with a uniform -velocity from the cradle to the grave. Just as we should travel _down_ -if we began our existence fifty miles above the earth’s surface.” - -“But the great difficulty is this,” interrupted the Psychologist. ’You -_can_ move about in all directions of Space, but you cannot move about -in Time.” - -“That is the germ of my great discovery. But you are wrong to say that -we cannot move about in Time. For instance, if I am recalling an -incident very vividly I go back to the instant of its occurrence: I -become absent-minded, as you say. I jump back for a moment. Of course -we have no means of staying back for any length of Time, any more than -a savage or an animal has of staying six feet above the ground. But a -civilised man is better off than the savage in this respect. He can go -up against gravitation in a balloon, and why should he not hope that -ultimately he may be able to stop or accelerate his drift along the -Time-Dimension, or even turn about and travel the other way?” - -“Oh, _this_,” began Filby, “is all—” - -“Why not?” said the Time Traveller. - -“It’s against reason,” said Filby. - -“What reason?” said the Time Traveller. - -“You can show black is white by argument,” said Filby, “but you will -never convince me.” - -“Possibly not,” said the Time Traveller. “But now you begin to see the -object of my investigations into the geometry of Four Dimensions. Long -ago I had a vague inkling of a machine—” - -“To travel through Time!” exclaimed the Very Young Man. - -“That shall travel indifferently in any direction of Space and Time, as -the driver determines.” - -Filby contented himself with laughter. - -“But I have experimental verification,” said the Time Traveller. - -“It would be remarkably convenient for the historian,” the Psychologist -suggested. “One might travel back and verify the accepted account of -the Battle of Hastings, for instance!” - -“Don’t you think you would attract attention?” said the Medical Man. -“Our ancestors had no great tolerance for anachronisms.” - -“One might get one’s Greek from the very lips of Homer and Plato,” the -Very Young Man thought. - -“In which case they would certainly plough you for the Little-go. The -German scholars have improved Greek so much.” - -“Then there is the future,” said the Very Young Man. “Just think! One -might invest all one’s money, leave it to accumulate at interest, and -hurry on ahead!” - -“To discover a society,” said I, “erected on a strictly communistic -basis.” - -“Of all the wild extravagant theories!” began the Psychologist. - -“Yes, so it seemed to me, and so I never talked of it until—” - -“Experimental verification!” cried I. “You are going to verify _that_?” - -“The experiment!” cried Filby, who was getting brain-weary. - -“Let’s see your experiment anyhow,” said the Psychologist, “though it’s -all humbug, you know.” - -The Time Traveller smiled round at us. Then, still smiling faintly, and -with his hands deep in his trousers pockets, he walked slowly out of -the room, and we heard his slippers shuffling down the long passage to -his laboratory. - -The Psychologist looked at us. “I wonder what he’s got?” - -“Some sleight-of-hand trick or other,” said the Medical Man, and Filby -tried to tell us about a conjuror he had seen at Burslem, but before he -had finished his preface the Time Traveller came back, and Filby’s -anecdote collapsed. diff --git a/data/siteMetadata.js b/data/siteMetadata.js index 3574976..c8989ba 100644 --- a/data/siteMetadata.js +++ b/data/siteMetadata.js @@ -18,6 +18,7 @@ const siteMetadata = { youtube: 'https://youtube.com/augurymetal', spotify: 'http://open.spotify.com/artist/7Iy3W9Pe1ivZzIM3jZvW59', applemusic: 'https://music.apple.com/us/artist/augury/1101253774', + bandcamp: 'https://augurymetal.bandcamp.com', lastfm: 'https://www.last.fm/music/augury', locale: 'en-CA', analytics: { diff --git a/jsconfig.json b/jsconfig.json index 657a114..a01d7de 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -6,8 +6,7 @@ "@/data/*": ["data/*"], "@/layouts/*": ["layouts/*"], "@/lib/*": ["lib/*"], - "@/css/*": ["css/*"], - "@/static/*": ["public/static/*"] + "@/css/*": ["css/*"] } } } diff --git a/layouts/AuthorLayout.tsx b/layouts/AuthorLayout.tsx index 0d3a0af..464d2d6 100644 --- a/layouts/AuthorLayout.tsx +++ b/layouts/AuthorLayout.tsx @@ -20,6 +20,7 @@ export default function AuthorLayout({ children, frontMatter }: Props) { twitter, spotify, applemusic, + bandcamp, lastfm, } = frontMatter @@ -49,6 +50,7 @@ export default function AuthorLayout({ children, frontMatter }: Props) {+