Skip to content

Remove AI-generation tells from pattern pages#14

Merged
arivictor merged 1 commit into
mainfrom
content/remove-generation-tells
Jun 10, 2026
Merged

Remove AI-generation tells from pattern pages#14
arivictor merged 1 commit into
mainfrom
content/remove-generation-tells

Conversation

@arivictor

Copy link
Copy Markdown
Owner

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

  • Singleton — the sync.Once intro 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.
  • Microservices — rewrote The Decision: de-spliced two comma-splice sentences (the "I saw Spotify do it" list and the "tooling is mature now, Kubernetes…" line) and cut the word "real" from 4 → 1. Also de-recycled the "not a hypothetical" lead.
  • Clean Architecture — deleted the duplicated "the domain is the core asset… the infrastructure is the variable" sentence (kept the load-bearing instance in The Decision); rewrote the meta description into one clean sentence.
  • Homepage — the hero title and meta description are now full sentences instead of fragments. nav_title: Home keeps the nav label unchanged.
  • Borrowed abstraction — swapped the generic Duck/Swimmer/Runner example for a notifier (Sender / HealthChecker, a SlackNotifier satisfying both, a retrying sender embedding Sender), which is closer to code you'd actually write. Kept the "thirty-year mortgage on coupling" line.
  • De-duplicated the verbatim phrase "adds ceremony without value", which appeared word-for-word on Strategy and Repository and as "ceremony without payoff" on Clean Architecture. Each now has distinct wording.

Code bug

  • Fixed a template leak where Go examples declared package gomark instead of package main. The originally flagged instance was in Microservices, but the same leak existed in four more filesprototype.md, errgroup.md (×2), and event-driven.md. All are standalone programs (func main() / go run main.go), so package main is 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

  • Content-only; no Go source in the module changed.
  • Deliberately left alone (already strong): Mutex, Strategy, Worker Pool, Repository. Strategy and Repository received only the one-line "ceremony" phrase swap to break the verbatim recycling — not a rewrite.
  • The contrastive tic was not eliminated everywhere; in moderation it's good voice (e.g. Mutex's "the lock isn't optional — it's the only door in"). Only the highest-density and verbatim-recycled instances were rewritten.

🤖 Generated with Claude Code

- 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>
Copilot AI review requested due to automatic review settings June 10, 2026 05:27
@arivictor arivictor merged commit 2dbdab8 into main Jun 10, 2026
1 check passed
@arivictor arivictor deleted the content/remove-generation-tells branch June 10, 2026 05:29

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 gomark to package 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 references os.Getenv, http.Server, and api.NewRouter without importing os/net/http (and api isn’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 itusually 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.
Comment thread content/index.md
@@ -1,7 +1,7 @@
---
title: Go Design Patterns, with the Decision Attached
title: Every Go design pattern here comes with the decision attached.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants