|
| 1 | +# Blog Writing Style Guide |
| 2 | + |
| 3 | +This guide captures the writing style used in SeaQL blog posts (author: Chris Tsang). |
| 4 | +Apply it when drafting or editing blog content. |
| 5 | + |
| 6 | +--- |
| 7 | + |
| 8 | +## Voice and Tone |
| 9 | + |
| 10 | +- **Direct and technical.** The reader is a Rust developer. Do not explain the obvious. |
| 11 | +- **Authoritative but not boastful.** State what the feature does and why it matters; let the code make the case. |
| 12 | +- **Collegial, not corporate.** Use "we" for the team, "you" for the developer. Avoid "our product" or "our solution". |
| 13 | +- **Honest.** Include trade-offs and limitations. Hiding gaps undermines credibility. |
| 14 | + |
| 15 | +--- |
| 16 | + |
| 17 | +## Dos |
| 18 | + |
| 19 | +- **Lead with the change, not the context.** The first sentence should say what is new or what the post covers. Skip "In this post, we will explore..." |
| 20 | +- **Let code be the argument.** Every claim should be demonstrated with a code block or SQL output. Text is the caption; code is the evidence. |
| 21 | +- **Explain the mechanism.** Not just *what* a feature does, but *how* it works internally — which trait, which counter, which SQL path. Engineers want to trust the implementation. |
| 22 | +- **Use before/after pairs.** Show the manual approach, then show how SeaORM eliminates it. This makes value concrete. |
| 23 | +- **Use comparison tables** for structured mappings (e.g. transaction depth → SQL commands, async vs sync API). |
| 24 | +- **Use "Gist" sections** for long posts — a tight code example at the top before going deep. |
| 25 | +- **Be specific in headings.** "Nested Transactions via Savepoints" not "Transactions Deep Dive". Include the mechanism or the technology name. |
| 26 | +- **Bridge sections with a single sentence** that connects the previous section to the next. "That solved the read side. With nested ActiveModel, you can now do the reverse." |
| 27 | +- **Close technical posts with a practical pointer** — a link to a working example, a next step, or a brief wrap-up. Do not recap what was already covered. |
| 28 | + |
| 29 | +--- |
| 30 | + |
| 31 | +## Don'ts |
| 32 | + |
| 33 | +- **No hype words.** Never: amazing, powerful, innovative, cutting-edge, game-changing, seamless, effortless, robust, best-in-class. |
| 34 | +- **No filler phrases.** Cut: "It's worth noting that", "As you can see", "Simply put", "At the end of the day". |
| 35 | +- **No passive voice** where active is possible. "SeaORM walks the tree" not "the tree is walked by SeaORM". |
| 36 | +- **No listicle framing.** Avoid "10 reasons why" or "here are X good reasons". If numbering sections, let them stand on their own without a sales-pitch setup. |
| 37 | +- **No redundant lead-ins.** Don't follow a section heading with a sentence that just restates it. "## What's in SeaORM X" does not need "Here is a detailed breakdown of what is in SeaORM X." |
| 38 | +- **No emoji in body prose.** Emoji are acceptable only in special recurring section titles (Sponsors, Sticker Pack, etc.). |
| 39 | +- **Don't over-explain to the audience.** If the reader is expected to know what a prepared statement or a foreign key is, don't define it. |
| 40 | +- **Don't pad conclusions.** A two-sentence close that points somewhere useful is better than three paragraphs summarising what was just said. |
| 41 | + |
| 42 | +--- |
| 43 | + |
| 44 | +## Structure Patterns |
| 45 | + |
| 46 | +### Feature announcement post |
| 47 | +1. One-paragraph context (what changed, why it matters) |
| 48 | +2. Optional: CTA / access link if commercial |
| 49 | +3. Numbered or headed sections, one per feature — each with prose + code |
| 50 | +4. Limitations section (if relevant) |
| 51 | +5. Brief close or CTA |
| 52 | + |
| 53 | +### Deep-dive / how-we-built post |
| 54 | +1. One-sentence hook stating the surprising or interesting thing |
| 55 | +2. "Gist" section with the key code example |
| 56 | +3. Subsections going progressively deeper |
| 57 | +4. Conclusion: one or two sentences, no recap, optionally link to a runnable example |
| 58 | + |
| 59 | +--- |
| 60 | + |
| 61 | +## Sentence Rhythm |
| 62 | + |
| 63 | +- Prefer short sentences for key claims. Follow with a longer sentence for the mechanism. |
| 64 | +- Colons are fine for introducing a list or consequence. Em-dashes for an aside or contrast. |
| 65 | +- Avoid starting consecutive sentences with the same subject. |
| 66 | + |
| 67 | +--- |
| 68 | + |
| 69 | +## Word Choices |
| 70 | + |
| 71 | +| Instead of | Use | |
| 72 | +|--------------------|------------------------------| |
| 73 | +| powerful | (just show what it does) | |
| 74 | +| easy / simple | only if genuinely true; be specific | |
| 75 | +| handle gracefully | handle transparently / correctly | |
| 76 | +| no boilerplate | no manual X required | |
| 77 | +| out of the box | by default / automatically | |
| 78 | +| allows you to | (just say what it does) | |
| 79 | +| utilize | use | |
| 80 | +| leverage | use | |
0 commit comments