Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How to Give Your Postgres Blog Posts an Outsize...

How to Give Your Postgres Blog Posts an Outsize Impact | Claire Giordano | FOSDEM 2023

Slides from a talk presented in the PostgreSQL devroom at FOSDEM 2023. Talk description: One of the sayings about development in the Postgres world is “it’s not just open source, it’s open engineering.” In the spirit of openness, this talk will show you how to increase the impact and the reach of your Postgres blog posts. These best practices begin with empathy for your readers—and cover lots of ground from there, including key things to know about SEO, as well as tips on how to promote your blog post. This talk is not just theory: real-world examples are included throughout the talk.

Claire Giordano

February 06, 2023
Tweet

More Decks by Claire Giordano

Other Decks in Technology

Transcript

  1. @clairegiordano This talk has 2 parts... What you write Where

    you send it 1. 2. @clairegiordano@hachyderm.io
  2. @clairegiordano Or as they say in “marketing speak”... What you

    write Where you send it 1. 2. Content Distribution @clairegiordano@hachyderm.io
  3. @clairegiordano So first, let’s dive into CONTENT! 1. 2. Content

    Distribution @clairegiordano@hachyderm.io
  4. @clairegiordano You & Your Frame of Mind The Edit Cycle

    Explore 2 aspects of CONTENT @clairegiordano@hachyderm.io
  5. @clairegiordano #1 – Write with a specific reader in mind

    Who do you want to read your post? Write to that person @clairegiordano@hachyderm.io
  6. @clairegiordano #2 - Pick good topics! Searched for Inspiration: Stack

    Overflow, Slack, IRC, Reddit, Twitter, Mailing Lists... Incognito browser & Google Trends Useful “Interestingness factor” @clairegiordano@hachyderm.io
  7. @clairegiordano Empathy should be your True North § Care about

    reader more than yourself § Recognize they’re busy & in a hurry § Remember—they don’t know what you know @clairegiordano@hachyderm.io
  8. @clairegiordano Empathy #1: SCANNABILITY Your readers are busy—and in a

    hurry! While the manufacture of rubber goods is in no sense a secret industry, the majority of buyers and users of such goods have never stepped inside of a rubber mill, and many have very crude ideas as to how the goods are made up. In ordinary garden hose, for instance, the process is as follows: The inner tubing is made of a strip of rubber fifty feet in length, which is laid on a long zinc-covered table and its edges drawn together over a hose pole. The cover, which is of what is called “friction,” that is cloth with rubber forced through its meshes, comes to the hose maker in strips, cut on the bias, which are wound around the outside of the tube and adhere tightly to it. The hose pole is then put in something like a fifty foot lathe, and while the pole revolves slowly, it is tightly wrapped with strips of cloth, in order that it may not get out of shape while undergoing the process of vulcanizing. When a number of these hose poles have been covered in this way they are laid in a pan set on trucks and are then run into a long boiler, shut in, and live steam is turned on. When the goods are cured steam is blown off, the vulcanizer opened and the cloths are removed. The hose is then slipped off the pole by forcing air from a compressor between the rubber and the hose pole. This, of course, is what is known as hose that has a seam in it. For seamless hose the tube is made in a tubing machine and slipped upon the hose pole by reversing the process that is used in removing hose by air compression. In other words, a knot is tied in one end of the fifty foot tube and the other end is placed against the hose pole and being carefully inflated with air it is slipped on without the least trouble. For various kinds of hose the processes vary, and there are machines for winding with wire and intricate processes for the heavy grades of suction hose, etc. For steam hose, brewers’, and acid hose, special resisting compounds are used, that as a rule are the secrets of the various manufacturers. Cotton hose is woven through machines expressly designed for that purpose, and afterward has a half-cured rubber tube drawn through it. One end is then securely stopped up and the other end forced on a cone through which steam is introduced to the inside of the hose, forcing the rubber against the cotton cover, finishing the cure and fixing it firmly in its place. Source: the Paris Review: How Mechanical Rubber Goods Are Made. February 14, 2014 @clairegiordano@hachyderm.io
  9. @clairegiordano Empathy = SCANNABILITY Your readers are busy—and in a

    hurry! While the manufacture of rubber goods is in no sense a secret industry, the majority of buyers and users of such goods have never stepped inside of a rubber mill, and many have very crude ideas as to how the goods are made up. In ordinary garden hose, for instance, the process is as follows: The inner tubing is made of a strip of rubber fifty feet in length, which is laid on a long zinc-covered table and its edges drawn together over a hose pole. The cover, which is of what is called “friction,” that is cloth with rubber forced through its meshes, comes to the hose maker in strips, cut on the bias, which are wound around the outside of the tube and adhere tightly to it. The hose pole is then put in something like a fifty foot lathe, and while the pole revolves slowly, it is tightly wrapped with strips of cloth, in order that it may not get out of shape while undergoing the process of vulcanizing. When a number of these hose poles have been covered in this way they are laid in a pan set on trucks and are then run into a long boiler, shut in, and live steam is turned on. When the goods are cured steam is blown off, the vulcanizer opened and the cloths are removed. The hose is then slipped off the pole by forcing air from a compressor between the rubber and the hose pole. This, of course, is what is known as hose that has a seam in it. For seamless hose the tube is made in a tubing machine and slipped upon the hose pole by reversing the process that is used in removing hose by air compression. In other words, a knot is tied in one end of the fifty foot tube and the other end is placed against the hose pole and being carefully inflated with air it is slipped on without the least trouble. For various kinds of hose the processes vary, and there are machines for winding with wire and intricate processes for the heavy grades of suction hose, etc. For steam hose, brewers’, and acid hose, special resisting compounds are used, that as a rule are the secrets of the various manufacturers. Cotton hose is woven through machines expressly designed for that purpose, and afterward has a half-cured rubber tube drawn through it. One end is then securely stopped up and the other end forced on a cone through which steam is introduced to the inside of the hose, forcing the rubber against the cotton cover, finishing the cure and fixing it firmly in its place. Source: the Paris Review: How Mechanical Rubber Goods Are Made. February 14, 2014 X @clairegiordano@hachyderm.io
  10. @clairegiordano Empathy = SCANNABILITY Your readers are busy—and in a

    hurry! Section Headlines (not subject titles) Bullets Bold-font prefixes on bullets Short sentences Short paragraphs Whitespace Tables @clairegiordano@hachyderm.io
  11. @clairegiordano Example A real-world example: a multi-tenant TODO application Example

    #1: Turning H2 Section Headers into Newspaper headlines (not subject titles) Boring: Much Better: @clairegiordano@hachyderm.io
  12. @clairegiordano Example A real-world example: a multi-tenant TODO application PgBouncer

    How to set up PgBouncer (our preferred connection pooler) Example #2: Turning H2 Section Headers into Newspaper headlines Boring: Much Better: Just ok: Much Better: @clairegiordano@hachyderm.io
  13. @clairegiordano Example A real-world example: a multi-tenant TODO application PgBouncer

    How to set up PgBouncer (our preferred connection pooler) Conclusion Cheat sheet for tuning Postgres autovacuum Example #3: Turning H2 Section Headers into Newspaper headlines (not subject titles) Boring: Much Better: Just ok: Much Better: Don’t do this: Much Better: @clairegiordano@hachyderm.io
  14. @clairegiordano Empathy #2: VARIETY OF FORMATS Don’t just include paragraphs

    of text! To make your blog post more accessible to different types of people, use: Diagrams Tables Screenshots Code blocks @clairegiordano@hachyderm.io
  15. @clairegiordano Imagine David Rowley’s blog post about: “Speeding up sort

    performance in Postgres 15” without its charts >>>> @clairegiordano@hachyderm.io
  16. @clairegiordano Empathy #3: READABILITY § Write at 3rd or 5th

    grade level Source: HemingwayApp.com @clairegiordano@hachyderm.io
  17. @clairegiordano Empathy #3: READABILITY Write in a conversational voice §

    Write to 2nd person “you” § Write how you speak § As if explaining to a BFF over coffee “If you’ve been running PostgreSQL for a while, you’ve heard about autovacuum. Yes, autovacuum, the thing which everybody asks you not to turn off, which is supposed to keep your database clean and reduce bloat automatically. Source: Debugging Postgres autovacuum problems: 13 tips, by Samay Sharma on the Microsoft TechCommunity Blog @clairegiordano@hachyderm.io
  18. @clairegiordano EMPATHY Checklist for Blogging Scannability q Section headlines (not

    subject titles) q Bullets q Bold-font prefix to bullets q Short sentences q Short paragraphs q Whitespace q Tables Variety of Formats q Not just paragraphs of text q Diagrams q Tables q Screenshots q Code blocks q Captions for images q Alt-text & H2s for screen readers Readability q Conversational voice q Write how you speak q 2nd person (“you”) q Teaching BFF over coffee q Write at 3rd or 5th grade level @clairegiordano@hachyderm.io
  19. @clairegiordano #1 – Embrace the iteration Writing = Editing Gotta

    do the work Unless you’re famous (and your posts get traffic even if crappy)—a good blog post will involve editing and rewriting @clairegiordano@hachyderm.io
  20. @clairegiordano #2 – It’s OK for your first draft to

    suck Dirty little secret: Everybody’s first drafts are a mess Give yourself permission to write things that aren’t perfect! “Perfect is the enemy of the good” @clairegiordano@hachyderm.io
  21. @clairegiordano #3 – Feedback is a gift Good reviewers are

    GOLD: they see things you missed, give you actionable feedback @clairegiordano@hachyderm.io
  22. @clairegiordano #4 – Pro Tip: Focus what you ask reviewers

    to do! Make it easy for reviewers to give you what you need People will not review everything—you can pick their focus, or they will @clairegiordano@hachyderm.io
  23. @clairegiordano #5 – Get your scissors out Cut, cut, cut.

    Keep this advice from Stephen King’s book “On Writing” in your mind. If you can’t bring yourself to “kill” your darlings, just push them to the “cutting room floor.” “Kill your darlings, kill your darlings, even when it breaks your egocentric little scribbler’s heart, kill your darlings.” @clairegiordano@hachyderm.io
  24. @clairegiordano #6 – Fork your draft into several shorter blog

    posts These 3 posts by my teammate Andres Freund @ Microsoft were all part of the same first draft. @clairegiordano@hachyderm.io
  25. @clairegiordano #7 - Keep it simple KISS = “Keep It

    Simple, Stupid” Use analogies to help readers put concepts into mental model they already know Move details into footnotes Write at 3rd or 5th grade level “IF ONLY IT WERE SIMPLE TO KEEP IT SIMPLE” @clairegiordano@hachyderm.io
  26. @clairegiordano #8 – Read it out loud Your ear can

    “hear” mistakes that your brain will self-correct when reading silently Reading it out loud is good way to assess if it’s in a conversational tone of voice @clairegiordano@hachyderm.io
  27. @clairegiordano #9 – Optimize for SEO Improving SEO of post

    increases likelihood it will perform well in search results Don’t need to be “SEO expert”, just some basic SEO skills Claire’s Simple SEO Checklist @clairegiordano@hachyderm.io
  28. @clairegiordano #9 – Optimize for SEO Claire’s Simple SEO Checklist

    q Good content is paramount @clairegiordano@hachyderm.io
  29. @clairegiordano #9 – Optimize for SEO Claire’s Simple SEO Checklist

    q Good content is paramount q Title discoverability & clickability @clairegiordano@hachyderm.io
  30. @clairegiordano Scribble lots of bad title ideas, to find a

    good one TITLE OPTIONS, need to frontload key terms since Google often truncates title on Search Engine Results Pages (SERP) at 60 chars (chars include spaces) 1. Citus adds support for PostgreSQL 15, zero downtime distribution 2. Citus adds support for PostgreSQL 15, zero downtime sharding 3. Citus 11.1 adds Postgres 15 & zero-downtime table distribution 4. New 11.1 release of Citus database adds Postgres 15 support 5. What’s new in Citus 11.1 (including Postgres 15 support) 6. What’s new in the Citus 11.1 extension to Postgres 7. Citus 11.1 adds Postgres 15 + create distributed table concurrently 8. New in Citus 11.1: Postgres 15 & create distributed table CONCURRENTLY 9. Scale out Postgres without downtime with Citus 11.1 10. Scale out Postgres without blocking writes: Citus 11.1 11. Distributing Postgres without blocking writes: Citus 11.1 what’s new 12. New in Citus 11.1: distributing Postgres without blocking writes 13. New in Citus 11.1: scale Postgres without blocking writes, plus Postgres 15 14. Citus 11.1 shards your Postgres tables without interruption 15. Citus 11.1 distributes your Postgres tables without interruption @clairegiordano
  31. @clairegiordano 3 techniques for assessing Title ideas.... TITLE OPTIONS, need

    to frontload key terms since Google often truncates title on Search Engine Results Pages (SERP) at 60 chars (chars include spaces) 1. Citus adds support for PostgreSQL 15, zero downtime distribution 2. Citus adds support for PostgreSQL 15, zero downtime sharding 3. Citus 11.1 adds Postgres 15 & zero-downtime table distribution 4. New 11.1 release of Citus database adds Postgres 15 support 5. What’s new in Citus 11.1 (including Postgres 15 support) 6. What’s new in the Citus 11.1 extension to Postgres 7. Citus 11.1 adds Postgres 15 + create distributed table concurrently 8. New in Citus 11.1: Postgres 15 & create distributed table CONCURRENTLY 9. Scale out Postgres without downtime with Citus 11.1 10. Scale out Postgres without blocking writes: Citus 11.1 11. Distributing Postgres without blocking writes: Citus 11.1 what’s new 12. New in Citus 11.1: distributing Postgres without blocking writes 13. New in Citus 11.1: scale Postgres without blocking writes, plus Postgres 15 14. Citus 11.1 shards your Postgres tables without interruption 15. Citus 11.1 distributes your Postgres tables without interruption 1. Most important terms in first 60 characters? 2. Incognito searches 3. Boring vs. interesting @clairegiordano@hachyderm.io
  32. @clairegiordano #9 – Optimize for SEO Don’t need to be

    “SEO expert”, just some basic SEO skills Claire’s Simple SEO Checklist q Good content is paramount q Title discoverability & clickability qUse Terms your readers use qAvoid general terms (“solution”) qAvoid pronouns (“it”, “this”) qRelevant keywords in Anchor text for hyperlinks qRelevant keywords in URL @clairegiordano@hachyderm.io
  33. @clairegiordano #9 – Optimize for SEO Don’t need to be

    “SEO expert”, just some basic SEO skills Claire’s Simple SEO Checklist q Alt-text for graphics q Author Bio shows EAT: Expertise, Authoritativeness, Trustworthiness @clairegiordano@hachyderm.io
  34. @clairegiordano Examples of Bio’s designed to show EAT Expertise Authoritativeness

    Trustworthiness Some debate among experts how much EAT affects SEO... do it anyway! @clairegiordano@hachyderm.io
  35. @clairegiordano #9 – Optimize for SEO Checklist of basic SEO

    skills that can help make your post more “discoverable” via search engines! Claire’s Simple SEO Checklist q Good content is paramount q Title discoverability & clickability q Use Terms your readers use q Avoid general terms (e.g., “solution”) q Avoid pronouns (e.g., “it”, “this”) q Relevant keywords in Anchor text for hyperlinks q Relevant keywords in URL q Alt-text for graphics q Author Bio shows Expertise, Authority, Trustworthy (EAT) @clairegiordano@hachyderm.io
  36. @clairegiordano q Embrace the iteration! q It’s OK for first

    drafts to suck! q Feedback is a gift q Focus your reviewers q Get your scissors out & cut! q Fork into multiple posts q KISS = Keep it simple q Read it out loud q Optimize for SEO Mastering “The Edit Cycle” when Blogging q Content is paramount q Title discovery & clicks q Use readers’ terms q Avoid general words q Avoid pronouns q Keywords in Anchor text q Keywords in URL q Use alt-text q Author Bio shows EAT Simple SEO Tips 9 Editing Tips @clairegiordano
  37. @clairegiordano That’s it for Content. Now onto: DISTRIBUTION 1. 2.

    Content Distribution You & frame of mind The Edit Cycle @clairegiordano@hachyderm.io
  38. @clairegiordano True or False? “We’ll know which blog posts are

    ‘good’ by how much traffic they get.” True False @clairegiordano@hachyderm.io
  39. @clairegiordano #1 - Pro Tip: Before you promote, doublecheck “unfurl”

    Twitter caches og:image for over 24 hours, so if it’s wrong when your post is first tweeted, your post won’t have the correct graphic on Twitter for a loooong time! • LinkedIn Post Inspector • Slack unfurl Screenshot of an unfurl on Slack, just drop URL into a slack to yourself @clairegiordano@hachyderm.io
  40. @clairegiordano #3 – Go to where your readers are That

    means promoting on lots of channels “All the socials” • Planet Postgres • Twitter • Slack • LinkedIn • Reddit • Discord • Hacker News (YC) • Postgres Weekly • Citus Newsletter • Link in GitHub repo @clairegiordano@hachyderm.io
  41. @clairegiordano #4 – Rinse Lather Repeat Different times of day

    & time zones Multiple days Don’t be hesitant to tweet again, especially if different time of day Only ~1-2% of followers see a tweet @clairegiordano@hachyderm.io
  42. @clairegiordano Example of “Rinse Lather Repeat Same interview tweeted with

    different graphics @ different times of day When I interviewed with Scott Hanselman, there were ~20 different tweets to promote it, that hit every time zone over a 5-6 day period @clairegiordano@hachyderm.io
  43. @clairegiordano #5 – Keep Twitter momentum by recycling tweets RT

    your own tweet after ~12 hours QT your own tweet after ~1-2 days QT other people’s tweets YMMV Example of a “Quote Tweet” @clairegiordano@hachyderm.io
  44. @clairegiordano #6 – Be there for the Q&A and the

    conversation One-way promotion is considered advertising. As “OA” (original author), embrace the Q&A. Especially on Reddit & Twitter. To stay constructive, wear kevlar as needed. @clairegiordano@hachyderm.io
  45. @clairegiordano #7 –Karma is a 2- way street If you

    shine a light on the work of your teammates and friends—they’re more likely to do the same for you! @clairegiordano@hachyderm.io
  46. @clairegiordano PROMOTION Tips & Checklist for Blogging Promotion Tips q

    Doublecheck ”unfurl” q Syndicate to Planet Postgres q Go to where your readers are q Rinse lather repeat q Recycle tweets q Be there for Q&A q Karma is a 2-way street q Use “Promotion Checklist” Promotion Checklist q xxx q yyy q zzz q aaa q bbb q ccc @clairegiordano@hachyderm.io
  47. @clairegiordano But if there’s just 1 thing you remember from

    this talk... @clairegiordano@hachyderm.io
  48. @clairegiordano § Asad Khan § Ashley McNamara Willis § David

    Perell § Hugh McLeod / Gaping Void § Isaac Alves § Marco Slot § My Nguyen § Rachel Agyemang § Sarah Novotny § Stephen O’Grady § Sumedh Pathak @clairegiordano@hachyderm.io Credits & inspiration go to...
  49. @clairegiordano The FOSDEM team & I would both LOVE your

    feedback on my (and all of the) Postgres talks “Submit feedback” link at bottom of page for each talk... https://fosdem.org/2023/schedule/track/postgresql/ Feedback is a gift! @clairegiordano@hachyderm.io
  50. @clairegiordano 40 pairs of lovely Postgres & Citus socks to

    give away! @clairegiordano@hachyderm.io