Skip to content

Commit

Permalink
refactor: emails paths to posts (#174)
Browse files Browse the repository at this point in the history
* refactor: go from emails to posts
* chore: redirects
  • Loading branch information
raae committed Mar 6, 2024
1 parent 0e48a34 commit 537c223
Show file tree
Hide file tree
Showing 455 changed files with 1,771 additions and 1,055 deletions.
18 changes: 18 additions & 0 deletions _redirects
@@ -0,0 +1,18 @@
/posts/2021-12-02-conference-buddy-2.0/ /posts/2021-12-02-conference-buddy-v2/
/posts/2022-03-30-determenistic/ /posts/2022-03-30-deterministic/
/posts/2022-05-18-this-week/ /posts/2022-05-18-dynamic-serverless/
/posts/2022-09-06-this-week/ /posts/2022-09-05-this-week/
/posts/2022-09-29-croco-clock/ /posts/2022-10-13-croco-clock/
/react-norway/ /speaker/2022-06-24-react-norway/
/gatsby-fall-camp-2021/ /speaker/2021-09-16-gatsby-fall-camp/
/mpya/ /speaker/2021-12-15-mpya/
/jam/ /speaker/2022-11-08-jamstackconf/
/modern/ /speaker/2022-12-17-modern-frontends/
/posts/2023-02-01-netlify+gatsby/ /posts/2023-02-01-netlify-gatsby/

/emails/ /posts/
/emails/lillylabs /subs/
/emails/reminders /subs/reminders/
/emails/welcome /subs/welcome/
/emails/* /posts/:splat

14 changes: 0 additions & 14 deletions content/emails-queen/2023/09/04-jamstack-is-dead/index.md

This file was deleted.

6 changes: 3 additions & 3 deletions content/landing/index.md
Expand Up @@ -13,9 +13,9 @@ sections:
content: main, form
- badge: Products & Services
body: ./_products-services.md
- title: Treasures from the WWW
titlePath: /emails
content: emails
- title: Latests Posts
titlePath: /posts
content: posts
- badge: noteworthy
title: Talks, Webinars and Streams
content: noteworthy
Expand Down
Expand Up @@ -86,4 +86,4 @@ The next plugin-pirate letter will cover "How do you know what type of sub-task

\* Some people CAN chew a whole donut without choking on it. Don't believe me? Dig up the video with Paul Scanlon winning a donut-eating contest against a Gatsby co-worker. You'll find the video somewhere [on Paul's twitter.](https://twitter.com/PaulieScanlon)

Read more about adding async await to sourceNodes in Queen @raae's email [Remember to await node creation! ⏳ ⌛️](/emails/2022-05-25-await-node-creation/)
Read more about adding async await to sourceNodes in Queen @raae's email [Remember to await node creation! ⏳ ⌛️](/posts/2022-05-25-await-node-creation/)
Expand Up @@ -4,7 +4,7 @@ title: Ola is doing a can-do-with-effort sub-task

Ahoy, skill-builder pirate of Jamstackia!

We looked into one useless-on-it's-own sub-task [in my last letter](/emails/2022-09-07-async-await/), and I promised you this letter would be about "How do you know what type of sub-task is right to bite off for your dev-brain?"
We looked into one useless-on-it's-own sub-task [in my last letter](/posts/2022-09-07-async-await/), and I promised you this letter would be about "How do you know what type of sub-task is right to bite off for your dev-brain?"

> To can't-do or NOT can't-do, that is the question.
Expand Down
Expand Up @@ -4,7 +4,7 @@ title: Could a croco-clock 🐊-⏲️ help you to focus like a pirate?

Ahoy, skill-builder pirate of Jamstackia!

In my last letter, we looked into [Don't let Distraction Diaz distract you](/emails/2022-09-29-automate/). Today, I'll show you my favorite focus tool to determine when your sub-task practice session is done. It's my great-grandfather Captain Crook's croco clock. 🐊 ⏲️ We'll look at:
In my last letter, we looked into [Don't let Distraction Diaz distract you](/posts/2022-09-29-automate/). Today, I'll show you my favorite focus tool to determine when your sub-task practice session is done. It's my great-grandfather Captain Crook's croco clock. 🐊 ⏲️ We'll look at:

What a croco-clock is,
Why it can help you focus and
Expand Down
Expand Up @@ -6,7 +6,7 @@ Ahoy, skill-builder pirate of Jamstackia!

👋😸🏴‍☠️

We looked into "my favorite focus tool to find out when your sub-task practice session is done, [the croco-clock 🐊-⏲️](/emails/2022-10-13-croco-clock/)" in my last letter. Today I'll show you The Again Logbook 📕.
We looked into "my favorite focus tool to find out when your sub-task practice session is done, [the croco-clock 🐊-⏲️](/posts/2022-10-13-croco-clock/)" in my last letter. Today I'll show you The Again Logbook 📕.

We'll look at:

Expand Down
Expand Up @@ -5,7 +5,7 @@ tags: skeleton ui, SSG, authentication, client-side only routes
peeps: mirjam_diala
---

In [yesterday's email](/emails/2022-01-06-client-only-routes/), I alluded to a different approach for authenticated routes.
In [yesterday's email](/posts/2022-01-06-client-only-routes/), I alluded to a different approach for authenticated routes.

Instead of reaching for [client-side only routes](https://www.gatsbyjs.com/docs/how-to/routing/client-only-routes-and-user-authentication/#adjusting-routes-to-account-for-authenticated-users) I more often utilize statically generated pages even for the authenticated routes these days.

Expand Down
File renamed without changes.
Expand Up @@ -4,7 +4,7 @@ emojii: 🦜 📄
tags: file system route api, SSG
---

In the sharky waters around the Gatsby islands, we call the File System Route API SSG pages for Parrot Pages 🦜 as mentioned in Tuesday's email about [SSG with Gatsby](/emails/2022-01-11-ssg/).
In the sharky waters around the Gatsby islands, we call the File System Route API SSG pages for Parrot Pages 🦜 as mentioned in Tuesday's email about [SSG with Gatsby](/posts/2022-01-11-ssg/).

![{} = parrots](./parrot-pages.jpeg "Drawing of `src/pages/{YouTube.id}.js` with {} as parrots")

Expand Down
Expand Up @@ -4,7 +4,7 @@ emojii: 🖼 ☁️
tags: image cdn, gatsby conf
---

Yesterday's email on how to [weed out large images](/emails/2022-03-02-large-files/) was quite on the nose when it came to one of GatsbyConf's big reveals: Image CDN.
Yesterday's email on how to [weed out large images](/posts/2022-03-02-large-files/) was quite on the nose when it came to one of GatsbyConf's big reveals: Image CDN.

With Gatsby Image CDN transformations of images are moved from the build to on-demand, waiting for the sharp transformations a thing of the past.

Expand Down
File renamed without changes.
File renamed without changes.
Expand Up @@ -5,7 +5,7 @@ emojii: 👻 📦
tags: theme shadowing, gatsby theme, mui
---

As I mentioned in yesterday's email, we are [standardizing on MUI](/emails/2022-03-10-mui/) as our React UI Library across the board. So, of course, I created a reusable plugin taking care of all the nitty-gritty work of setting MUI up correctly after getting it all to work on queen.raae.codes.
As I mentioned in yesterday's email, we are [standardizing on MUI](/posts/2022-03-10-mui/) as our React UI Library across the board. So, of course, I created a reusable plugin taking care of all the nitty-gritty work of setting MUI up correctly after getting it all to work on queen.raae.codes.

On this week's unauthorized and rum-fueled [treasure hunt](https://youtu.be/kzUUoglO63k) in the sharky waters around the Gatsby islands, the time had come to add MUI to the new POW! marketing site.

Expand Down
Expand Up @@ -10,7 +10,7 @@ A typical example is sourcing both posts and projects content from markdown. Bot

This week we'll look at three different approaches!

First up is using _multiple page templates_. Tomorrow's email looks at [multiple page components](/emails/2022-03-23-page-components/), and then we'll round it off with my current favorite: [parrot pages](/emails/2022-03-24-parrot-pages/).
First up is using _multiple page templates_. Tomorrow's email looks at [multiple page components](/posts/2022-03-23-page-components/), and then we'll round it off with my current favorite: [parrot pages](/posts/2022-03-24-parrot-pages/).

## Multiple Page Templates

Expand Down
Expand Up @@ -6,7 +6,7 @@ tags: gatsby-source-filesystem

How can you achieve different page layouts for content with the same content node type but varying content types?

In yesterday's email, we looked at a solution involving [multiple page templates](/emails/2022-03-22-page-templates/). Today we'll look at achieving the same with _multiple page components_. And tomorrow we'll look at how to use [parrot pages](/emails/2022-03-24-parrot-pages/) by making our own MarkdownRemark parent nodes 🤯
In yesterday's email, we looked at a solution involving [multiple page templates](/posts/2022-03-22-page-templates/). Today we'll look at achieving the same with _multiple page components_. And tomorrow we'll look at how to use [parrot pages](/posts/2022-03-24-parrot-pages/) by making our own MarkdownRemark parent nodes 🤯

## Multiple Page Components

Expand Down
Expand Up @@ -6,7 +6,7 @@ tags: file system route api, gatsby-source-filesystem

How can you achieve different page layouts for content with the same content node type but varying content types such as posts, projects, and pages?

The approach covered in yesterday's email used [multiple page components](/emails/2022-03-23-page-components/); the day before was [multiple page templates](/emails/2022-03-22-page-templates/) and today we are covering my current favorite: _multiple parrot pages_.
The approach covered in yesterday's email used [multiple page components](/posts/2022-03-23-page-components/); the day before was [multiple page templates](/posts/2022-03-22-page-templates/) and today we are covering my current favorite: _multiple parrot pages_.

If you are not familiar with the term parrot pages, it's what we call files system routes around the Gatsby islands 🤪

Expand Down
Expand Up @@ -8,7 +8,7 @@ Let's start with a definition:

> In computer science, a deterministic algorithm is an algorithm that, given a particular input, will always produce the same output[...] <cite>[Wikipedia](https://en.wikipedia.org/wiki/Deterministic_algorithm)</cite>
In our Gatsby Source YouTube oEmbed Plugin, I did not trust this to be true. Complicating the code by caching the connection between the YouTube Id and the generated node id as part of the [How to use the Gatsby Cache to skip subsequent external API calls](/emails/2022-03-18-cache/)
In our Gatsby Source YouTube oEmbed Plugin, I did not trust this to be true. Complicating the code by caching the connection between the YouTube Id and the generated node id as part of the [How to use the Gatsby Cache to skip subsequent external API calls](/posts/2022-03-18-cache/)

But I had this inkling it would make sense for it is deterministic and made sure to check with Ward when he guested last week's unauthorized and rum-fueled treasure hunt.

Expand Down
Expand Up @@ -4,7 +4,7 @@ emojii: 🛑 🔄
tags: gatsby-source-youtube-oembed, gatsby cache, createNodeId, gatsby-node.js
---

Acknowledging the [deterministic nature of `createNodeId`](/emails/2022-03-30-deterministic/) simplified our Gatsby Source YouTube oEmbed Plugin a smidge, resulting in:
Acknowledging the [deterministic nature of `createNodeId`](/posts/2022-03-30-deterministic/) simplified our Gatsby Source YouTube oEmbed Plugin a smidge, resulting in:

```js
const youTubeNodeId = createNodeId(`YouTube >>> ${youTubeId}`);
Expand Down
Expand Up @@ -8,8 +8,8 @@ tags: onCreateNode, data layer, createNode, treasure hunt

On yesterday's unauthorized and rum-fueled [treasure hunt](https://youtu.be/SWumzHLEpYA) in the sharky waters around the Gatsby islands, we worked through the code from the last two emails:

- [Gatsby's createNodeId is deterministic 📥 💡](/emails/2022-03-30-deterministic/)
- [Should we skip the Gatsby Cache altogether? 🛑 🔄](/emails/2022-03-31-skip-cache/)
- [Gatsby's createNodeId is deterministic 📥 💡](/posts/2022-03-30-deterministic/)
- [Should we skip the Gatsby Cache altogether? 🛑 🔄](/posts/2022-03-31-skip-cache/)

[![Screengrab of stream](./youtube-screengrab.jpg)](https://youtu.be/SWumzHLEpYA)

Expand Down
Expand Up @@ -22,4 +22,4 @@ All the best,
Queen Raae

&nbsp;
**PS:** Interested in learning how to add Gatsby ImageCDN support to your plugin? Check out [How to add support for Gatsby ImageCDN in your source plugin 🖼 ☁️](/emails/2022-03-25-image-cdn-plugin/)
**PS:** Interested in learning how to add Gatsby ImageCDN support to your plugin? Check out [How to add support for Gatsby ImageCDN in your source plugin 🖼 ☁️](/posts/2022-03-25-image-cdn-plugin/)
Expand Up @@ -4,7 +4,7 @@ emojii: 🤪 📑
tags: graphql, resolver
---

In [yesterday](/emails/2022-04-20-related-content-article/)'s email I recommended reading the article [How to Create List of Related Content in Gatsby.JS](https://reckoning.dev/blog/related-posts-gatsbyjs/).
In [yesterday](/posts/2022-04-20-related-content-article/)'s email I recommended reading the article [How to Create List of Related Content in Gatsby.JS](https://reckoning.dev/blog/related-posts-gatsbyjs/).

I liked the approach of using both titles and tags to find similar content, especially since I can be a little sloppy with my tags and have not retroactively added it all emails yet.

Expand Down
Expand Up @@ -4,7 +4,7 @@ emojii: 📄 🖼
tags: gatsby-remark-oembed, markdown, oembed, gatsby plugin
---

As mentioned [yesterday](/emails/2022-04-25-this-week/) I plan to get a good chunk of work done on the next version of the [gatsby-remark-oembed](https://github.com/queen-raae/gatsby-remark-oembed) plugin this week.
As mentioned [yesterday](/posts/2022-04-25-this-week/) I plan to get a good chunk of work done on the next version of the [gatsby-remark-oembed](https://github.com/queen-raae/gatsby-remark-oembed) plugin this week.

But you might wonder what even is that and how does it work?

Expand Down
Expand Up @@ -9,10 +9,10 @@ brands: ScrapingBee
Last week's focus for me was the Gatsby Remark oEmbed Plugin. I fixed three tree-traversal bugs. Support for MDX is still a little up in the air, though, as the only possible solution at the moment will constitute a breaking change.

More on Tree Traversal:
[Fixing an abstract syntax tree bug in Gatsby Remark oEmbed  🌲 🐛](/emails/2022-04-29-tree-problem/)
[Fixing an abstract syntax tree bug in Gatsby Remark oEmbed  🌲 🐛](/posts/2022-04-29-tree-problem/)

More on MDX:
[The cache solution that keeps on NOT giving...  😬 📥](/emails/2022-04-28-cache-problems/)
[The cache solution that keeps on NOT giving...  😬 📥](/posts/2022-04-28-cache-problems/)

&nbsp;
Last week also gave us a new Gatsby release: [v4.13](https://www.gatsbyjs.com/docs/reference/release-notes/v4.13/).
Expand Down
Expand Up @@ -41,7 +41,7 @@ exports.sourceNodes = async ({ actions, createContentDigest }) => {
};
```

`internal.contentDigest` is mandatory and thus part of a [Minimal Viable Content Node](/emails/2022-01-20-minimal-viable-content-node/). If this value has not changed, Gatsby uses the cached node instead of creating a new node, and for instance, `onCreateNode` is not called.
`internal.contentDigest` is mandatory and thus part of a [Minimal Viable Content Node](/posts/2022-01-20-minimal-viable-content-node/). If this value has not changed, Gatsby uses the cached node instead of creating a new node, and for instance, `onCreateNode` is not called.

> **contentDigest:** the digest for the content of this node. Helps Gatsby avoid doing extra work on data that hasn’t changed.
> <cite>[Gatsby Docs](https://www.gatsbyjs.com/docs/reference/config-files/actions/#createNode)</cite>
Expand Down
Expand Up @@ -25,4 +25,4 @@ All the best,
Queen Raae

&nbsp;
**PS:** `createNodeId` [is deterministic](/emails/2022-03-30-deterministic/)
**PS:** `createNodeId` [is deterministic](/posts/2022-03-30-deterministic/)
Expand Up @@ -4,7 +4,7 @@ emojii: 🔗 ✨
tags: javascript, snippet
---

When [scraping Crowdcast](/emails/2022-05-06-scrapingbee/) for webinars to add to the Gatsby Data Layer last week we got back some funny looking paths:
When [scraping Crowdcast](/posts/2022-05-06-scrapingbee/) for webinars to add to the Gatsby Data Layer last week we got back some funny looking paths:

```
/e/gatsby-gotchas-react/register?utm_source=profile&utm_medium=profile_web&utm_campaign=profile`
Expand Down
Expand Up @@ -5,7 +5,7 @@ tags: serverless, lamda, raw body, webhook
brands: Stripe
---

If you are new to serverless, you might have thought nothing of [yesterday's "Using Http Request Body" example](/emails/2022-05-18-dynamic-serverless/).
If you are new to serverless, you might have thought nothing of [yesterday's "Using Http Request Body" example](/posts/2022-05-18-dynamic-serverless/).

```js
export default function handler(req, res) {
Expand Down Expand Up @@ -63,7 +63,7 @@ export default function handler(req, res) {

~~Unfortunately, I cannot seem to make this work locally, but I have verified that it works on Gatsby Cloud. I will, of course, follow up with Gatsby to figure out what's up. Is it a feature? Or a bug? I know my opinion on the matter 😬~~

Update: [Raw body works in develop from v4.16](/emails/2022-06-01-raw-body-fix/)
Update: [Raw body works in develop from v4.16](/posts/2022-06-01-raw-body-fix/)

&nbsp;
All the best,
Expand Down
Expand Up @@ -8,7 +8,7 @@ We added back support for downloading the YouTube thumbnails as local file nodes

[![Hi Queen Raae, Our team has reviewed your content, and we think you may need to make changes to make sure it doesn't violate our spam, deceptive practices and scams policy. In the meantime, we've made the following content private](./youtube-spam.png "YouTube Email")](https://twitter.com/raae/status/1527593806513709057?s=20&t=8HbGrJ66ytV2IfM0qvwhDw)

We removed it in exchanging for ImageCDN on a [treasure hunt with Ward of Gatsby](/emails/2022-03-25-image-cdn-plugin/), but as we are working on a plugin, I later realized it should support both 🤦‍♀️
We removed it in exchanging for ImageCDN on a [treasure hunt with Ward of Gatsby](/posts/2022-03-25-image-cdn-plugin/), but as we are working on a plugin, I later realized it should support both 🤦‍♀️

[![Screengrab of Ward stream](./../../03/25-image-cdn-plugin/youtube-screengrab.jpg)](https://youtu.be/IDW2IfaHGIs)

Expand Down
Expand Up @@ -8,7 +8,7 @@ With Gatsby v4 came a much [strickter approach](https://www.gatsbyjs.com/docs/re

Never in a resolver or anywhere else, even though I stumble over Gatsby Docs pointing in that direction every now and then.

And remember, if you create a node in `onCreateNode` make sure [to add a parent](/emails/2022-04-01-parent-id/), or it will be gone on subsequent builds using the Gatsby Cache.
And remember, if you create a node in `onCreateNode` make sure [to add a parent](/posts/2022-04-01-parent-id/), or it will be gone on subsequent builds using the Gatsby Cache.

&nbsp;
All the best,
Expand Down
Expand Up @@ -5,13 +5,13 @@ tags: source plugins, sourceNodes, onCreateNode, lifecycle
brands: Cloudinary
---

In [yesterday's email](/emails/2022-05-24-node-creation/) I mentioned you must only create nodes within `sourceNodes` and `onCreateNode`.
In [yesterday's email](/posts/2022-05-24-node-creation/) I mentioned you must only create nodes within `sourceNodes` and `onCreateNode`.

A pretty straightforward rule, but sourcing data usually introduces asynchronous code. And with asynchronous code, you can quickly end up in a situation where you create nodes outside `sourceNodes` and `onCreateNode`.

Unfortunately, it still usually works, at least for a few nodes and often in development. However, when you deploy, it falls apart.

When you see inconsistent and weird behavior around node creation, your issue is probably nodes created outside of `sourceNodes` and `onCreateNode`. Or direct manipulation of nodes; the topic for [tomorrow's email](/emails/2022-05-26-direct-mutation/).
When you see inconsistent and weird behavior around node creation, your issue is probably nodes created outside of `sourceNodes` and `onCreateNode`. Or direct manipulation of nodes; the topic for [tomorrow's email](/posts/2022-05-26-direct-mutation/).

There is an excellent example in [the Gatsby Docs](https://www.gatsbyjs.com/docs/debugging-async-lifecycles/), but here is another one without the use of `.then`:

Expand Down

0 comments on commit 537c223

Please sign in to comment.