Skip to content

Commit a3cdf39

Browse files
authored
Merge pull request #34 from brylie/add-blog-technologies
Add technologies field to blog posts and enhance tag filtering
2 parents fad7477 + 9898da6 commit a3cdf39

6 files changed

+45
-28
lines changed

src/content.config.ts

+1
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ const blog = defineCollection({
5656
.optional(),
5757
tags: z.array(z.string()),
5858
headline: z.string().optional(),
59+
technologies: z.array(z.string()).optional(),
5960
})
6061
.transform((post) => ({
6162
...post,

src/content/blog/2025-02-18-hello-astro.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ author: "Brylie Christopher Oxley"
88
image:
99
url: "https://docs.astro.build/assets/rose.webp"
1010
alt: "The Astro logo on a dark background with a pink glow."
11-
tags: ["astro", "blogging", "learning in public"]
11+
tags: ["blogging", "learning in public"]
12+
technologies: ["Astro", "JavaScript", "CSS"]
1213
---
1314

1415
Welcome to my _new blog_ about learning Astro! Here, I will share my learning journey as I build a new website.

src/content/blog/2025-02-25-tailwind-css-component-frameworks.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ author: "Brylie Christopher Oxley"
88
image:
99
url: "https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmvnn8bkeli9b4jwcambs.jpg"
1010
alt: "Tailwind CSS component frameworks"
11-
tags: ["tailwind css", "component frameworks", "open source", "web development"]
11+
tags: ["component frameworks", "open source", "web development"]
12+
technologies: ["Tailwind CSS", "JavaScript", "React"]
1213
---
14+
1315
As [Tailwind CSS](https://tailwindcss.com/) continues to reshape the frontend development landscape, we're seeing a flourishing ecosystem of component frameworks emerge. This 'State of Open-Source Tailwind CSS Component Frameworks' is a comprehensive overview of the current landscape, highlighting the most notable frameworks that embrace open-source principles and avoid freemium models favoring community-driven development. While commercial options like Tailwind UI offer polished solutions, many developers are turning to open-source alternatives that provide greater flexibility and transparency. Let's explore the most notable frameworks that embrace open-source principles, avoiding freemium models favoring community-driven development.
1416

1517
## FlyonUI: Bridging Semantic Classes and JavaScript Functionality
@@ -106,4 +108,4 @@ The rise of open-source Tailwind CSS component frameworks has democratized acces
106108

107109
Remember that the best framework for your project isn't necessarily the one with the most components or features but the one that best aligns with your team's workflow and project requirements. Experiment with different options and contribute to the communities that resonate with your development philosophy.
108110

109-
_This article reflects the state of Tailwind CSS component frameworks as of early 2025. Given the rapid evolution of frontend development, check the latest documentation and community discussions when deciding._
111+
_This article reflects the state of Tailwind CSS component frameworks as of early 2025. Given the rapid evolution of frontend development, check the latest documentation and community discussions when deciding._

src/content/blog/2025-03-04-parallel-major-chords.md

+19-13
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
22
layout: ../../layouts/MarkdownPostLayout.astro
3-
title: "Unlocking Musical Color: Understanding and Using Parallel Majors"
3+
title: "Parallel Major Chords: A Journey Through Music Theory"
44
slug: "2025-parallel-major-chords"
55
datePublished: 2025-03-04
6-
description: "Explore the concept of parallel majors and how they can add new colors to your musical compositions."
6+
description: "Dive into the world of parallel major chords and their unique role in music theory."
77
author: "Brylie Christopher Oxley"
8-
tags: ["music theory", "composition", "parallel majors", "chord progressions"]
8+
tags: ["music theory", "chords", "composition", "harmony"]
99
---
1010

1111
Have you ever wondered how some of your favorite songs create such emotionally rich and unexpected chord progressions? Many composers and songwriters use a powerful technique that involves borrowing chords from different scales or modes. Today, we'll explore a specific approach called "parallel majors" that can immediately add new colors to your compositions.
@@ -19,6 +19,7 @@ Before diving into parallel majors, let's establish some foundational concepts.
1919
A mode is essentially a scale that starts on a different note of a parent major scale. For example, if we take the C major scale (C, D, E, F, G, A, B) but start on D instead, we get D Dorian mode (D, E, F, G, A, B, C).
2020

2121
The seven modes of the major scale are:
22+
2223
1. Ionian (major)
2324
2. Dorian
2425
3. Phrygian
@@ -43,15 +44,15 @@ This gives us access to a whole new palette of chords to work with in our compos
4344

4445
Here's a chart showing each C mode, its parallel major scale, and the chords that appear in those parallel major keys:
4546

46-
| C Mode | Parallel Major | I | II | III | IV | V | VI | VII |
47-
|--------|----------------|---|----|----|----|----|----|----|
48-
| **C Ionian** | C Major | C | Dm | Em | F | G | Am | Bdim |
49-
| **C Dorian** | B♭ Major | B♭ | Cm | Dm | E♭ | F | Gm | Adim |
50-
| **C Phrygian** | A♭ Major | A♭ | B♭m | Cm | D♭ | E♭ | Fm | Gdim |
51-
| **C Lydian** | G Major | G | Am | Bm | C | D | Em | F♯dim |
52-
| **C Mixolydian** | F Major | F | Gm | Am | B♭ | C | Dm | Edim |
53-
| **C Aeolian** | E♭ Major | E♭ | Fm | Gm | A♭ | B♭ | Cm | Ddim |
54-
| **C Locrian** | D♭ Major | D♭ | E♭m | Fm | G♭ | A♭ | B♭m | Cdim |
47+
| C Mode | Parallel Major | I | II | III | IV | V | VI | VII |
48+
| ---------------- | -------------- | --- | --- | --- | --- | --- | --- | ----- |
49+
| **C Ionian** | C Major | C | Dm | Em | F | G | Am | Bdim |
50+
| **C Dorian** | B♭ Major | B♭ | Cm | Dm | E♭ | F | Gm | Adim |
51+
| **C Phrygian** | A♭ Major | A♭ | B♭m | Cm | D♭ | E♭ | Fm | Gdim |
52+
| **C Lydian** | G Major | G | Am | Bm | C | D | Em | F♯dim |
53+
| **C Mixolydian** | F Major | F | Gm | Am | B♭ | C | Dm | Edim |
54+
| **C Aeolian** | E♭ Major | E♭ | Fm | Gm | A♭ | B♭ | Cm | Ddim |
55+
| **C Locrian** | D♭ Major | D♭ | E♭m | Fm | G♭ | A♭ | B♭m | Cdim |
5556

5657
## How to Use Parallel Majors in Your Compositions
5758

@@ -60,9 +61,11 @@ Now for the fun part—putting this knowledge to practical use! Here's a step-by
6061
### 1. Start with a Simple Progression in a Major Key
6162

6263
Let's begin with a common chord progression in C major:
64+
6365
```
6466
C - Am - F - G
6567
```
68+
6669
This is a I - vi - IV - V progression, one of the most used progressions in pop music.
6770

6871
### 2. Identify Opportunities for Chord Borrowing
@@ -74,6 +77,7 @@ Each chord in your progression is a potential candidate for "borrowing" from a p
7477
Let's try replacing some chords in our progression by borrowing from parallel majors:
7578

7679
**Example 1:** Replace the vi chord (Am) with the parallel major version from C Aeolian
80+
7781
- Original: C - Am - F - G
7882
- Parallel major of C Aeolian is E♭ major
7983
- The vi chord in E♭ major is Cm
@@ -82,6 +86,7 @@ Let's try replacing some chords in our progression by borrowing from parallel ma
8286
This small change adds a beautiful, melancholic twist to an otherwise standard progression.
8387

8488
**Example 2:** Replace the IV chord (F) with the parallel major version from C Phrygian
89+
8590
- Original: C - Am - F - G
8691
- Parallel major of C Phrygian is A♭ major
8792
- The IV chord in A♭ major is D♭
@@ -94,6 +99,7 @@ This creates a more dramatic, unexpected shift that can work wonderfully for son
9499
Don't stop at just one borrowed chord! Try various combinations:
95100

96101
**Example 3:** Borrow multiple chords
102+
97103
- Original: C - Am - F - G
98104
- Replace Am with Cm (from C Aeolian's parallel major)
99105
- Replace G with C (from C Mixolydian's parallel major)
@@ -137,4 +143,4 @@ Take a simple chord progression in a key you're comfortable with and try replaci
137143

138144
---
139145

140-
*Want to learn more about music theory concepts that can enhance your compositions? Check out our other articles on [brylie.online](https://brylie.online).*
146+
_Want to learn more about music theory concepts that can enhance your compositions? Check out our other articles on [brylie.online](https://brylie.online)._

src/content/blog/2025-03-09-what-is-an-orm.md

+3-10
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,9 @@ slug: "2025-demystifying-orm"
55
datePublished: 2025-03-09
66
description: "Learn how Object-Relational Mapping (ORM) connects object-oriented programming with relational databases, and why it matters for modern web development."
77
author: "Brylie Christopher Oxley"
8-
tags:
9-
[
10-
"web development",
11-
"databases",
12-
"ORM",
13-
"Prisma",
14-
"TypeORM",
15-
"JavaScript",
16-
"TypeScript",
17-
]
8+
tags: ["web development", "databases", "ORM"]
9+
technologies:
10+
["Prisma", "TypeORM", "Sequelize", "Drizzle ORM", "JavaScript", "TypeScript"]
1811
---
1912

2013
# Demystifying ORM: A Developer's Bridge Between Code and Databases

src/pages/tags/[tag].astro

+16-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ export async function getStaticPaths() {
1717
...new Set(allProjects.flatMap((project) => project.data.tags || [])),
1818
];
1919
20+
// Get all technologies from blog posts
21+
const postTechnologies = [
22+
...new Set(allPosts.flatMap((post) => post.data.technologies || [])),
23+
];
24+
2025
// Get all technologies from projects
2126
const projectTechnologies = [
2227
...new Set(
@@ -26,13 +31,22 @@ export async function getStaticPaths() {
2631
2732
// Combine all unique tags and technologies
2833
const uniqueTags = [
29-
...new Set([...postTags, ...projectTags, ...projectTechnologies]),
34+
...new Set([
35+
...postTags,
36+
...postTechnologies,
37+
...projectTags,
38+
...projectTechnologies,
39+
]),
3040
].sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));
3141
3242
return uniqueTags.map((tag) => {
3343
// Filter posts that contain this tag
3444
const filteredPosts = allPosts
35-
.filter((post) => post.data.tags.includes(tag))
45+
.filter(
46+
(post) =>
47+
post.data.tags?.includes(tag) ||
48+
post.data.technologies?.includes(tag),
49+
)
3650
.sort(
3751
(a, b) =>
3852
new Date(b.data.datePublished).valueOf() -

0 commit comments

Comments
 (0)