Remove AI-generation tells from pattern pages#14
Merged
Conversation
- Singleton: impersonal voice for the sync.Once intro; de-tic The Decision - Microservices: package gomark->main; de-splice The Decision; cut "real" 4->1 - Clean Architecture: drop duplicated "core asset/variable"; rewrite meta description - Homepage: hero title and meta description are now full sentences - Borrowed abstraction: swap the Duck example for a notifier - De-duplicate "ceremony without value" across Strategy/Repository/Clean Architecture - Fix 4 further leaked `package gomark` decls (prototype, errgroup x2, event-driven) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Editorial sweep across several pattern/philosophy pages to remove repeated “AI-generated” stylistic artifacts and fix a leaked Go template package gomark declaration in embedded examples, improving the site’s consistency and correctness without changing the Go module.
Changes:
- Rewrites/edits prose for voice consistency (removing contrastive-negation tics, comma splices, and duplicated phrasing).
- Replaces several embedded Go example package declarations from
package gomarktopackage main. - Updates homepage and selected pattern pages’ descriptions/one-liners to avoid fragmentary titles/descriptions and repeated “ceremony” phrasing.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| content/philosophy/borrowed-abstraction.md | Swaps the inheritance/composition illustration to a notifier-oriented example. |
| content/patterns/creational/singleton.md | Adjusts Solution/The Decision prose to match the site’s impersonal voice. |
| content/patterns/creational/prototype.md | Fixes embedded example package declaration to package main. |
| content/patterns/concurrency/errgroup.md | Fixes embedded example package declarations to package main (two snippets). |
| content/patterns/behavioral/strategy.md | Rephrases “ceremony” line to avoid verbatim reuse. |
| content/patterns/architectural/repository.md | Rephrases “ceremony” line to avoid verbatim reuse. |
| content/patterns/architectural/microservices.md | Updates prose for clarity and fixes embedded example package declaration to package main. |
| content/patterns/architectural/event-driven.md | Fixes embedded example package declaration to package main. |
| content/patterns/architectural/clean-architecture.md | Tightens meta description, removes duplicated sentence, and rephrases “ceremony” line. |
| content/index.md | Makes homepage title/description full sentences while keeping nav_title: Home. |
Comments suppressed due to low confidence (1)
content/patterns/architectural/microservices.md:58
- The order-service snippet now uses
package main, but it still referencesos.Getenv,http.Server, andapi.NewRouterwithout importingos/net/http(andapiisn’t defined/imported). As written, the example won’t compile, which is distracting for readers who try to run/adapt it.
package main
import (
"myapp/internal/orderservice/app"
"myapp/internal/orderservice/infra/postgres"
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| Before choosing microservices, ask one direct question: what specific coordination problem is this solving? "Team A deploys twenty times a day, Team B needs a two-week audit review, and both teams block each other" is a concrete answer. "We may need to scale later," "microservices are the standard now," and "I saw Spotify do it" are wishes dressed up as reasons. Distributed-systems complexity starts on day one and never goes away; the reason to take it on has to be that concrete. | ||
|
|
||
| Independent deployment and independent scaling are real benefits. Teams that own one service end to end, design, build, and operate it, usually move faster than teams sharing one large monolith with heavy release coordination. But the distributed-systems tax is also real. Every network call can fail, time out, or return stale data. Services need circuit breakers. Work that crosses service boundaries needs sagas instead of normal database transactions. Data consistency becomes eventual across those boundaries. | ||
| Independent deployment and independent scaling are genuine benefits. A team that owns one service end to end — designing, building, and operating it — usually moves faster than teams sharing a large monolith under heavy release coordination. The distributed-systems tax is just as real. Every network call can fail, time out, or return stale data; services need circuit breakers; work that crosses service boundaries needs sagas in place of ordinary database transactions; and data consistency goes eventual across those boundaries. |
| @@ -1,7 +1,7 @@ | |||
| --- | |||
| title: Go Design Patterns, with the Decision Attached | |||
| title: Every Go design pattern here comes with the decision attached. | |||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
An editorial pass that removes the stylistic and structural artifacts that made several pages read as machine-generated. Content only — nothing in the Go module changed.
Prose
sync.Onceintro no longer says "Then we'll show…" (it broke the site's otherwise impersonal voice); rewrote the most-cited contrastive negation in The Decision as a plain declarative.nav_title: Homekeeps the nav label unchanged.Sender/HealthChecker, aSlackNotifiersatisfying both, a retrying sender embeddingSender), which is closer to code you'd actually write. Kept the "thirty-year mortgage on coupling" line.Code bug
package gomarkinstead ofpackage main. The originally flagged instance was in Microservices, but the same leak existed in four more files —prototype.md,errgroup.md(×2), andevent-driven.md. All are standalone programs (func main()/go run main.go), sopackage mainis correct in every case.Why
These are the patterns that betray generated content: contrastive-negation density ("not X, it's Y"), verbatim phrase reuse across pages, intra-page duplication, comma-splice fragments in titles and descriptions, and — worst — an unreviewed template variable (
package gomark) shipped inside published code.Reviewer notes
🤖 Generated with Claude Code