Skip to content

Commit 8b78fda

Browse files
committed
Stop rendering Social Shares on deep dives
1 parent d0e2f13 commit 8b78fda

7 files changed

Lines changed: 63 additions & 31 deletions

File tree

‎_TODO.md‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,8 @@ The text, diagrams, and images in this work are licensed under CC BY-NC 4.0
141141
All code samples in this article are licensed under the MIT License. Feel free to use, modify, and distribute them in any project.
142142
```
143143

144+
- When someone's already given their email address, the Download CTA should just have a download button - not require them to sign up again
145+
144146
## Search
145147

146148
- How do we handle the keywords in the long form / pdf files from a search perspective? Can we return the result in the search results if the short form content is not returned in the search results, and highlight it somehow in the search results to show that it is gated content? And clicking on its link takes the user to the Download page for that item?
@@ -166,6 +168,26 @@ https://mermaid.js.org/config/directives.html
166168

167169
- Focus-visible / active handling on ToC nav items
168170

171+
- Style "Share to Mastodon" modal in src/components/Social/Mastodon/client/index.ts
172+
173+
- There's a pretty long delay when you push the Content Switcher to go from short to deep dive, what's causing it? It should be fast - maybe it's a prefetch issue, prefetch on page load
174+
175+
- Suggestions on improving table layout for better visual experience
176+
177+
- Cap callout length at 80% or 90% of the column so they're not longer than any text
178+
179+
- Consider adding a trim outline to tables
180+
181+
- Social share shouldn't appear on deep dive
182+
183+
- Themepicker and search icon are too big in non-squished header. Logo too - the initial presentation should be smaller.
184+
185+
- Search box in header should have blue outline, not highlight
186+
187+
- Contact page Uppy file upload not displaying. Submit button is huge on Contact page.
188+
189+
- Hero animation not loading on home page.
190+
169191
## List Component
170192

171193
- Task list checked variant Markdown in dark theme is awkward, it has a dark shadow

‎src/components/Content/Layout/index.astro‎

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ export type Props = {
2828
}
2929
3030
const { author, article, path, readingTime, section } = Astro.props
31+
32+
const isDeepDive = section === 'Deep Dive Articles'
3133
---
3234

3335
<MarkdownLayout
@@ -80,24 +82,15 @@ const { author, article, path, readingTime, section } = Astro.props
8082
slot="after-content"
8183
>
8284
<WebMentions url={`https://www.webstackbuilders.com${path}`} />
83-
<div class="flex flex-col gap-6">
84-
<div class="flex flex-col sm:flex-row sm:justify-start sm:items-center gap-2">
85-
<h2
86-
class="text-lg font-semibold"
87-
id="article-share-title"
88-
>
89-
Share this article
90-
</h2>
91-
<p class="text-content-active text-sm sm:text-right sm:ml-6">
92-
Found this helpful? Share it with others who might benefit.
93-
</p>
85+
{!isDeepDive && (
86+
<div class="flex flex-col gap-6">
87+
<Shares
88+
url={`https://www.webstackbuilders.com${path}`}
89+
title={article.data.title}
90+
description={`Read "${article.data.title}" on Webstack Builders`}
91+
/>
9492
</div>
95-
<Shares
96-
url={`https://www.webstackbuilders.com${path}`}
97-
title={article.data.title}
98-
description={`Read "${article.data.title}" on Webstack Builders`}
99-
/>
100-
</div>
93+
)}
10194
</section>
10295

10396
{/** SLOT: related-content */}

‎src/content/articles/alert-fatigue-reduction-triage-actionable-alerts/index.mdx‎

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ Before you can fix alert noise, you need to know what you have. Most teams can't
4141

4242
Export your alert definitions and firing history. Prometheus/Alertmanager stores this in rules files and the `ALERTS` metric. Datadog and PagerDuty have API endpoints for historical data. You want at least 90 days of history to capture weekly and monthly patterns.
4343

44-
For each alert, capture: alert name, firing frequency over the last 90 days, action rate (percentage of firings that required human intervention), owning team, and whether a runbook exists. The action rate column is the most important and the hardest to populate—you'll need to cross-reference alert firings with incident tickets or on-call logs.
45-
4644
<Newsletter />
4745

46+
For each alert, capture: alert name, firing frequency over the last 90 days, action rate (percentage of firings that required human intervention), owning team, and whether a runbook exists. The action rate column is the most important and the hardest to populate—you'll need to cross-reference alert firings with incident tickets or on-call logs.
47+
4848
### Step 2: Classify by Action Rate
4949

5050
Once you have the inventory, sort by action rate. This single metric tells you more about alert usefulness than anything else.
@@ -72,9 +72,23 @@ But an alert that fires constantly and gets ignored isn't a lesson learned—it'
7272

7373
The talking points that work:
7474

75-
- "This alert fired 47 times last quarter. How many of those were real problems?" (Usually: zero or one.)
76-
- "Would you notice if this alert stopped firing tomorrow?" (Usually: no.)
77-
- "If we delete this, what's the worst case?" (Usually: we'd notice the problem some other way, slightly later.)
75+
<List
76+
variant="chevron-list"
77+
items={[
78+
{
79+
lead: '"This alert fired 47 times last quarter. How many of those were real problems?"',
80+
text: "(Usually: zero or one.)",
81+
},
82+
{
83+
lead: '"Would you notice if this alert stopped firing tomorrow?"',
84+
text: "(Usually: no.)",
85+
},
86+
{
87+
lead: '"If we delete this, what\'s the worst case?"',
88+
text: "(Usually: we'd notice the problem some other way, slightly later.)",
89+
},
90+
]}
91+
/>
7892

7993
<Callout type="danger">An alert with a 5% action rate is not "coverage"—it is noise that makes your 95% action-rate alerts harder to notice. Delete it or fix it.</Callout>
8094

@@ -94,8 +108,6 @@ Alert counts grow naturally. Someone adds an alert during an incident, another g
94108

95109
Establish a cadence: monthly reviews of which alerts fired most and what their action rates were, quarterly reviews of whether alerts still make sense given how your system has evolved. Every alert needs an owner—encode it in a label. Orphaned alerts are the first candidates for deletion.
96110

97-
Counter the growth with a deletion budget: every quarter, each team must delete or significantly improve 10% of their alerts. It's aggressive enough to force real decisions, but sustainable enough that teams don't feel like they're dismantling their monitoring.
98-
99111
<Download
100112
resource="alert-fatigue-reduction-triage-actionable-alerts"
101113
title="Download the Alert Fatigue Reduction Guide"
@@ -116,6 +128,8 @@ Counter the growth with a deletion budget: every quarter, each team must delete
116128
]}
117129
/>
118130

131+
Counter the growth with a deletion budget: every quarter, each team must delete or significantly improve 10% of their alerts. It's aggressive enough to force real decisions, but sustainable enough that teams don't feel like they're dismantling their monitoring.
132+
119133
## The Results
120134

121135
Remember the system I inherited? Forty-seven alerts per day, forty-four requiring no action—a 6% action rate. MTTA had drifted to 12 minutes. On-call satisfaction was 4/10.

‎src/content/articles/alert-fatigue-reduction-triage-actionable-alerts/pdf.mdx‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@ tags: ["reliability-and-testing", "prometheus"]
99
featured: true
1010
---
1111

12-
*[SLO]: Service Level Objective
13-
*[SLI]: Service Level Indicator
14-
*[MTTR]: Mean Time To Recovery
12+
*[DataDog]: Observability platform
1513
*[MTTA]: Mean Time To Acknowledge
16-
*[PagerDuty]: Incident management platform
14+
*[MTTR]: Mean Time To Recovery
1715
*[OpsGenie]: Incident alerting service
16+
*[PagerDuty]: Incident management platform
17+
*[SLI]: Service Level Indicator
18+
*[SLO]: Service Level Objective
1819

1920
# Alert Fatigue: From 200 Alerts to 5 Pages
2021

‎src/pages/contact/index.astro‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import contactData from '@content/contact.json'
33
import PageLayout from '@layouts/PageLayout.astro'
44
import ContactPage from '@components/Pages/Contact/index.astro'
55
6-
const pageTitle = 'Contact Us'
6+
const pageTitle = 'Contact Me'
77
const pageDescription = 'Connect with Webstack Builders to discuss your infrastructure needs, request an engagement proposal, or ask questions about platform engineering services.'
88
const prefilledProjectType = Astro.url.searchParams.get('type') ?? ''
99
---

‎src/pages/deep-dive/[...slug].astro‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,14 @@ const author = await getEntry(article.data.author)
2424
2525
const articleBody = article.body ?? ''
2626
const readingTime = article.data.readingTime ?? getReadingTimeLabel(articleBody)
27+
// If section const value is changed, update the ContentLayout usage of the value
28+
const section = 'Deep Dive Articles'
2729
---
2830

2931
<ContentLayout
3032
author={author.data.name}
3133
article={article}
3234
path={`/deep-dive/${article.id}`}
33-
section="Deep Dive Articles"
35+
section={section}
3436
{...readingTime && { readingTime }}
3537
/>

‎src/pages/services/index.astro‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const services = allServices
1111
.filter(service => !service.data.isDraft)
1212
.sort((a, b) => a.data.order - b.data.order)
1313
14-
const pageTitle = 'Our Services'
14+
const pageTitle = 'My Services'
1515
const pageDescription = 'Flexible options from full-time capacity to one-off assessments — all month-to-month with no long-term lock-in.'
1616
const path = '/services/'
1717
---

0 commit comments

Comments
 (0)