···11+---
22+title: Writing Coherently At Scale
33+date: 2022-06-26
44+tags:
55+ - writing
66+---
77+88+As someone who does a lot of writing, I have been asked how to write about
99+things. I have been asked about it enough that I am documenting this here so you
1010+can all understand my process. This is not a prescriptive system that you must
1111+do in order to make Quality Content™️, this is what I do.
1212+1313+<xeblog-conv name="Cadey" mood="coffee">I honestly have no idea if this is a
1414+"correct" way of doing things, but it seems to work well enough. Especially so
1515+if you are reading this.</xeblog-conv>
1616+1717+<xeblog-hero file="great-wave-cyberpunk" prompt="the great wave off of kanagawa, cyberpunk, hanzi inscription"></xeblog-hero>
1818+1919+## The Planning Phase
2020+2121+To start out the process of writing about something, I usually like to start
2222+with the end goal in mind. If I am writing about an event or technology thing,
2323+I'll start out with a goal that looks something like this:
2424+2525+> Explain a split DNS setup and its advantages and weaknesses so that people can
2626+> make more informed decisions about their technical setups.
2727+2828+It doesn't have to be very complicated or intricate. Most of the complexity
2929+comes up naturally during the process of writing the intermediate steps. Think
3030+about the end goal or what you want people to gain from reading the article.
3131+3232+I've also found it helps to think about the target audience and assumed skills
3333+of the reader. I'll usually list out the kind of person that would benefit from
3434+this the most and how it will help them. Here's an example:
3535+3636+> The reader is assumed to have some context about what DNS is and wants to help
3737+> make their production environment more secure, but isn't totally clear on how
3838+> it helps and what tradeoffs are made.
3939+4040+State what the reader is to you and how the post benefits them. Underthink it.
4141+It's tempting to overthink this, but really don't. You can overthink the
4242+explanations later.
4343+4444+### The Outline
4545+4646+Once I have an end goal and the target audience in mind, then I make an outline
4747+of what I want the post to contain. This outline will have top level items for
4848+generic parts of the article or major concepts/steps and then I will go in and
4949+add more detail inside each top level item. Here is an example set of top level
5050+items for that split DNS post:
5151+5252+```markdown
5353+- Introduction
5454+- Define split DNS
5555+- How split DNS is different
5656+- Where you can use split DNS
5757+- Advantages of split DNS
5858+- Tradeoffs of split DNS
5959+- Conclusion
6060+```
6161+6262+Each step should build on the last and help you reach towards the end goal.
6363+6464+After I write the top level outline, I start drilling down into more detail. As
6565+I drill down into more detail about a thing, the bullet points get nested
6666+deeper, but when topics change then I go down a line. Here's an example:
6767+6868+```markdown
6969+- Introduction
7070+ - What is DNS?
7171+ - Domain Name Service
7272+ - Maps names to IP addresses
7373+ - Sometimes it does other things, but we're not worrying about that today
7474+ - Distributed system
7575+ - Intended to have the same data everywhere in the world
7676+ - It can take time for records to be usable from everywhere
7777+```
7878+7979+Then I will go in and start filling in the bullet tree with links and references
8080+to each major concept or other opinions that people have had about the topic.
8181+For example:
8282+8383+```markdown
8484+- Introduction
8585+ - What is DNS?
8686+ - Domain Name Service
8787+ - https://datatracker.ietf.org/doc/html/rfc1035
8888+ - Maps names to IP addresses
8989+ - Sometimes it does other things, but we're not worrying about that today
9090+ - Distributed system
9191+ - Intended to have the same data everywhere in the world
9292+ - It can take time for records to be usable from everywhere
9393+ - https://jvns.ca/blog/2021/12/06/dns-doesn-t-propagate/
9494+```
9595+9696+These help me write about the topic and give me links to add to the post so that
9797+people can understand more if they want to. You should spend most of your time
9898+writing the outline. The rest is really just restating the outline in sentences.
9999+100100+## Writing The Post
101101+102102+After each top level item is fleshed out enough, I usually pick somewhere to
103103+start and add some space after a top level item. Then I just start writing. Each
104104+top level item usually maps to a few paragraphs / a section of the post. I
105105+usually like to have each section have its own little goal / context to it so
106106+that readers start out from not understanding something and end up understanding
107107+it better. Here's an example:
108108+109109+> If you have used a computer in the last few decades or so, you have probably
110110+> used the Domain Name Service (DNS). DNS maps human-readable names (like
111111+> `google.com`) to machine-readable IP addresses (like `182.48.247.12`). Because
112112+> of this, DNS is one of the bedrock protocols of the modern internet and it
113113+> usually is the cause of most failures in big companies.
114114+>
115115+> DNS is a globally distributed system without any authentication or way to
116116+> ensure that only authorized parties can query IP addresses for specific domain
117117+> names. As a consequence of this, this means that anyone can get the IP address
118118+> of a given server if they have the DNS name for it. This also means that
119119+> updating a DNS record can take a nontrivial amount of time to be visible from
120120+> everywhere in the world.
121121+>
122122+> Instead of using public DNS records for internal services, you can set up a
123123+> split DNS configuration so that you run an internal DNS server that has your
124124+> internal service IP addresses obscured away from the public internet. This
125125+> means that attackers can't get their hands on the IP addresses of your
126126+> services so that they are harder to attack. In this article, I'm going to
127127+> spell out how this works, the advantages of this setup, the tradeoffs made in
128128+> the process and how you can implement something like this for yourself.
129129+130130+In the process of writing, I will find gaps in the outline and just fix it by
131131+writing more words than the outline suggested. This is okay, and somewhat
132132+normal. Go with the flow.
133133+134134+I expand each major thing into its component paragraphs and will break things up
135135+into sections with markdown headers if there is a huge change in topics. Adding
136136+section breaks can also help people stay engaged with the post. Giant walls of
137137+text are hard to read and can make people lose focus easily.
138138+139139+Another trick I use to avoid my posts being giant walls of text is what I call
140140+"conversation snippets". These look like this:
141141+142142+<xeblog-conv name="Mara" mood="hacker">These are words and I am saying
143143+them!</xeblog-conv>
144144+145145+I use them for both creating [Socratic
146146+dialogue](https://en.wikipedia.org/wiki/Socratic_dialogue) and to add prose
147147+flair to my writing. I am more of a prose writer [by
148148+nature](https://xeiaso.net/blog/the-oasis), and I find that this mix allows me
149149+to keep both technical and artistic writing up to snuff.
150150+151151+<xeblog-conv name="Cadey" mood="enby">Amusingly, I get asked if the characters
152152+in my blog are separate people all giving their input into things. They are
153153+characters, nothing more. If you ever got an impression otherwise, then I have
154154+done my job as a writer _incredibly well_.</xeblog-conv>
155155+156156+Just flesh things out and progressively delete parts of the outline as you go.
157157+It gets easier.
158158+159159+### Writing The Conclusion
160160+161161+I have to admit, I really suck at writing conclusions. They are annoying for me
162162+to write because I usually don't know what to put there. Sometimes I won't even
163163+write a conclusion at all and just end the article there. This doesn't always
164164+work though.
165165+166166+A lot of the time when I am describing how to do things I will end the article
167167+with a "call to action". This is a few sentences that encourages the reader to
168168+try the thing that I've been writing about out for themselves. If I was turning
169169+that split DNS article from earlier into a full article, the conclusion
170170+could look something like this:
171171+172172+> ---
173173+>
174174+> If you want an easy way to try out a split DNS configuration, install
175175+> [Tailscale](https://tailscale.com/) on a couple virtual machines and enable
176176+> [MagicDNS](https://tailscale.com/kb/1081/magicdns/). This will set up a split
177177+> DNS configuration with a domain that won't resolve globally, such as
178178+> `hostname.example.com.beta.tailscale.net`, or just `hostname` for short.
179179+>
180180+> I use this in my own infrastructure constantly. It has gotten to the point
181181+> where I regularly forget that Tailscale is involved at all, and become
182182+> surprised when I can't just access machines by name.
183183+>
184184+> A split DNS setup isn't a security feature (if anything, it's more of an
185185+> obscurity feature), but you can use it to help administrate your systems by
186186+> making your life easier. You can update records on your own schedule and you
187187+> don't have to worry about outside attackers getting the IP addresses of your
188188+> services.
189189+190190+I don't like giving the conclusion a heading, so I'll usually use a [horizontal
191191+rule (`---` or `<hr
192192+/>`)](https://www.coffeecup.com/help/articles/what-is-a-horizontal-rule/) to
193193+break it off.
194194+195195+---
196196+197197+This is how I write about things. Do you have a topic in mind that you have
198198+wanted to write about for a while? Try this system out! If you get something
199199+that you like and want feedback on how to make it shine, email me at
200200+`iwroteanarticle at xeserv dot us` with either a link to it or the draft
201201+somehow. I'll be sure to read it and reply back with both what I liked and some
202202+advice on how to make it even better.