<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ medium - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ medium - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Tue, 16 Jun 2026 21:36:29 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/medium/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ How I built a leaderboard with the top Medium stories of all time. And how it almost died. ]]>
                </title>
                <description>
                    <![CDATA[ By Michael Deng Last year I built Top Medium Stories — a website that showcases the Medium’s top stories of all time. This is the tale of how a lone developer scraped thousands of stories and hitting seemingly fatal roadblocks. Spoiler alert: Life fi... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-i-built-top-medium-stories-e07a32cf5255/</link>
                <guid isPermaLink="false">66d46040e39d8b5612bc0dbe</guid>
                
                    <category>
                        <![CDATA[ Life lessons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ medium ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ writing ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 10 Apr 2018 11:21:01 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*BUxJuact-veqvL9lvnHlxw.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Michael Deng</p>
<p>Last year I built Top Medium Stories — a website that showcases the Medium’s top stories of all time. This is the tale of how a lone developer scraped thousands of stories and hitting seemingly fatal roadblocks.</p>
<p><em>Spoiler alert: Life finds a way. You can check out the leaderboard — updated daily — at <a target="_blank" href="https://topmediumstories.com/">TopMediumStories.com</a>.</em></p>
<h3 id="heading-why-did-i-make-this">Why did I make this?</h3>
<p>As a long-time reader on Medium, I’ve always been curious what the most popular stories were. While the personalized feed and topic pages surface many great stories, just as many slip through the cracks.</p>
<p>Driven to unearth the gems buried in Medium’s annals, I set a new goal in early 2017: I was going to find the most popular stories of all time on Medium and share them with the rest of the world.</p>
<p>My goal culminated in me publishing my list of the <a target="_blank" href="https://medium.com/startup-grind/most-recommended-medium-stories-by-year-2db66605d5be">Top Medium Stories By Year</a>.</p>
<p>I compiled the stories manually, which was a grueling task. Over the period of a week, I visited every top stories page since September 10, 2014 (when the top stories feature debuted). To find even earlier stories, I dug through publication archives using the Wayback Machine to fetch ancient copies of Medium pages.</p>
<p>I built a massive spreadsheet of every story I found. It was a ton of mind-numbing work, but I was proud of the result.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*Ctml_IoHbj0xWy78KyJhuw.png" alt="Image" width="800" height="438" loading="lazy">
<em>A small section of the colossal spreadsheet ?</em></p>
<p>But my feeling of pride was short-lived, as the list became quickly outdated. I wanted to keep it up-to-date, but doing so manually was impossible.</p>
<p>Then, something dawned on me. I had already determined the manual steps to collect data the first time. There was was no reason why I couldn’t just automate those steps with code. Thus, I decided to turn the list into a dynamic website.</p>
<h3 id="heading-automating-data-collection">Automating data collection</h3>
<p>To automate the manual steps described above, I wrote a web scraper using Python <a target="_blank" href="https://scrapy.org/">Scrapy</a>.</p>
<p>The scraper crawls through every top stories page since September 10, 2014 and tosses any story it sees into a Python dictionary. The dictionary is then sorted by the number of claps each story received and written to a JSON file. (Claps are Medium’s equivalent of a “like” or an “upvote” and readers can give a story up to 50 claps.)</p>
<p>Here’s a snippet of the JSON file:</p>
<pre><code class="lang-json">[  “We fired our top talent. Best decision we ever made.”,   {    “recommends”: <span class="hljs-number">79000.0</span>,     “pub_url”: “https:<span class="hljs-comment">//medium.freecodecamp.org",     “author”: “Jonathan Sol\u00f3rzano-Hamilton”,     “image”: “https://cdn-media-1.freecodecamp.org/images/1*4hU3Xn7wunA81I3v17JIrg.jpeg",     “year”: “2017”,     “story_url”: “https://medium.freecodecamp.org/we-fired-our-top-talent-best-decision-we-ever-made-4c0a99728fde",     “pub”: “freeCodeCamp”,     “author_url”: “https://medium.freecodecamp.org/@peachpie"  }],...</span>
</code></pre>
<p>Before building the scraper, I checked Medium’s <a target="_blank" href="https://medium.com/robots.txt">robots.txt</a> file to verify that I wasn’t violating any policies. I also set the scraping speed very slow (2 seconds between each request), so the scraper wouldn’t hammer Medium’s servers.</p>
<h4 id="heading-converting-the-data-to-html">Converting the data to HTML</h4>
<p>The next step was transforming the JSON file into HTML to display the stories on a web page.</p>
<p>I installed <a target="_blank" href="https://www.crummy.com/software/BeautifulSoup/">BeautifulSoup</a> to do this. First, I constructed an HTML template with empty tables and rows. Then, I wrote a script that uses BeautifulSoup to populate the template from the JSON file.</p>
<p>With a basic HTML file containing all the stories I want to display, it was time to create the actual website.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*3XTqVVycq5riBcjR3h5ZgA.jpeg" alt="Image" width="800" height="117" loading="lazy"></p>
<h3 id="heading-building-a-kickass-website">Building a kickass website</h3>
<p>When planning the website, I had three goals in mind:</p>
<h4 id="heading-1-minimal-and-elegant-design">1. Minimal and elegant design</h4>
<p>The design language is centered around plenty of whitespace and high-contrast text. This way, the focal point is on the stories its trying to highlight, not on the aesthetics of the website itself.</p>
<p>I also added a “Compact” view mode, which hides feature images from the website. This allows readers to skim through the list with ease.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*EqIyKAmHT-FrzN4qm7b9mQ.png" alt="Image" width="800" height="441" loading="lazy">
<em>“Compact” mode</em></p>
<h4 id="heading-2-fast">2. Fast</h4>
<p>The first version of the website was quite sluggish. This is because it was trying to load hundreds of feature images at once.</p>
<p>To solve this issue, I used “lazy loading.” When you land on the website, only the first 50 stories under “All” are loaded. If you want to see more stories, you have to click on “Load more.” This design pattern drastically reduces the initial loading time.</p>
<p>Also, to make navigation feel more responsive, I designed this website as a single-page web app. When you click on a button, you don’t navigate to another HTML page. Instead, jQuery switches the view instantaneously.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*nU4Novi6IXdTY7CqBZPzgA.gif" alt="Image" width="800" height="519" loading="lazy">
<em>Responsive navigation and lazy loading in action</em></p>
<h4 id="heading-3-lightweight">3. Lightweight</h4>
<p>To keep the website light, I chose to forgo most popular frontend libraries. I didn’t use Bootstrap, and I kept JavaScript/jQuery usage to a minimum.</p>
<p>Taking a glance at the project repo reveals a very minimal setup. A few HTML files, a CSS file, a couple scripts, and a handful of data files.</p>
<p>As a result, the website doesn’t have many moving parts and dependencies. It’s very simple to maintain and debug.</p>
<h3 id="heading-testing-and-launching"><strong>Testing and launching</strong></h3>
<p>I shared the prototype with a couple of friends and asked them to rip it apart. Using their feedback, I iterated on the design twice. Then, I launched on Product Hunt.</p>
<p>I could barely sleep that night. I still remember constantly refreshing the page checking for new comments until I passed out from exhaustion.</p>
<p>The next morning, I scrambled out of bed and clawed open my computer. I couldn’t believe my eyes! Top Medium Stories was at the top of Product Hunt’s homepage. At the end of the day, it was awarded the #2 product of the day.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*4XuWJfp8NxmYqJjul8qVRg.png" alt="Image" width="800" height="452" loading="lazy">
_[Product Hunt page for Top Medium Stories](https://www.producthunt.com/posts/top-medium-stories" rel="noopener" target="<em>blank" title=")</em></p>
<h3 id="heading-the-sudden-death-of-medium-top-stories">The sudden death of Medium Top Stories</h3>
<p>The Product Hunt launch exceeded my wildest expectations, and I was on cloud nine for a long time. But I knew I wasn’t done until I shared my project on Medium. I started this post half a year ago and I finally finished it a few weeks ago. I was beyond excited to publish it.</p>
<p>Before submitting, I decided to run the data collection script one more time to update the website.</p>
<p>The script failed catastrophically.</p>
<p>“No big deal. Either Medium has an outage or my internet isn’t working,” I thought. But I was so wrong. When I realized what actually happened, I slumped into my chair and dragged my fingers down my face in frustration.</p>
<p>I kid you not, two days prior Medium had removed the top stories page from their website. They scuttled the very page my scraper depended on to function!</p>
<p>I emailed Medium promptly, asking them to consider reverting the top stories page. I didn’t get the response I was looking for.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*h6hNC0_A-gXqzce1xzDliA.png" alt="Image" width="800" height="132" loading="lazy"></p>
<p>But I didn’t blame them. My website wasn’t officially supported — they weren’t obligated to do anything. Even if they didn’t make this particular change, eventually one of their updates would break my website. It was inevitable.</p>
<p>I felt hopeless. Since the website couldn’t be updated anymore, it was no more than a static list that was soon to be obsolete. In my mind, Top Medium Stories was dead on arrival.</p>
<h3 id="heading-the-sprouts-of-new-life">The sprouts of new life</h3>
<p>For a while, I worked on other stuff and didn’t look at Top Medium Stories at all. But I couldn’t stop thinking about the unfinished story of the website. I wanted to publish a postmortem — even if it didn’t have a happy ending. It felt like a good way close out the project.</p>
<p>I closed the article with:</p>
<blockquote>
<p>“So, I hope you enjoyed reading about Top Medium Stories. It was an amazing experience and I’m proud of what I made — I’m sorry it had to end this way. There will always be things you can’t predict or control, and they can wipe away your work in a heartbeat. That’s life.”</p>
</blockquote>
<p>As I stared at my finished draft, I realized something. <strong>I hate sad endings.</strong></p>
<p>Suddenly, my eyes locked on that same JSON blob I mentioned earlier.</p>
<pre><code class="lang-json">[  “We fired our top talent. Best decision we ever made.”,   {    “recommends”: <span class="hljs-number">79000.0</span>,     “pub_url”: “https:<span class="hljs-comment">//medium.freecodecamp.org",     “author”: “Jonathan Sol\u00f3rzano-Hamilton”,     “image”: “https://cdn-media-1.freecodecamp.org/images/1*4hU3Xn7wunA81I3v17JIrg.jpeg",     “year”: “2017”,     “story_url”: “https://medium.freecodecamp.org/we-fired-our-top-talent-best-decision-we-ever-made-4c0a99728fde",     “pub”: “freeCodeCamp”,     “author_url”: “https://medium.freecodecamp.org/@peachpie"  }],...</span>
</code></pre>
<p>And I had a revelation. I didn’t need the top stories page to update the website. Instead, I could visit each url in the JSON file and pull the data directly from the story’s webpage.</p>
<p>To fetch new stories, I could scrape the new Popular on Medium page, which would give me the top stories published recently.</p>
<p>Having refactored my code, I realized something: it is possible that not every single popular new story will end up being showcased on the Popular on Medium page. So if you happen to read a story that you think should be on Top Medium Stories but isn’t, please let me know. Just send the story’s url to <strong>michaeldeng18@gmail.com</strong>, and I’ll add it in right away. Together, we can ensure the leaderboards are as comprehensive as possible.</p>
<p>There is always the risk that Medium might one day restrict scraping completely, or even release their own ranking of stories. Either of these changes could make Top Medium Stories obsolete.</p>
<p>But in the meantime, I will continue maintaining Top Medium Stories, the best website for discovering awesome stories.</p>
<p>If by this point you still have not seen Top Medium Stories, <a target="_blank" href="https://topmediumstories.com/">go check it out</a>! It’d make me very happy if the site helps you find extraordinary stories that you would’ve otherwise never stumbled upon.</p>
<p>Thanks for reading!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How To Easily Create a Table Of Contents For Your Article ]]>
                </title>
                <description>
                    <![CDATA[ By Adam Kelly In this article, I’ll discuss how you can create a table of contents for your Medium post, and I’ll show you how I built the feature. Table of Contents Get The URL Generate Your Table Of Contents Design Development Get the source Many... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-easily-create-a-table-of-contents-for-your-article-507e313b2af3/</link>
                <guid isPermaLink="false">66c351d4765a634c3485fe0e</guid>
                
                    <category>
                        <![CDATA[ medium ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Node.js ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ writing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ writing tips ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Sun, 25 Feb 2018 00:24:56 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*Bg43TmnKj37GvTiX8vHZCg.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Adam Kelly</p>
<p>In this article, I’ll discuss how you can create a table of contents for your Medium post, and I’ll show you how I built the feature.</p>
<h4 id="heading-table-of-contents">Table of Contents</h4>
<ul>
<li><a target="_blank" href="https://medium.com/p/507e313b2af3#e2d0">Get The URL</a></li>
<li><a target="_blank" href="https://medium.com/p/507e313b2af3#b4b8">Generate Your Table Of Contents</a></li>
<li><a target="_blank" href="https://medium.com/p/507e313b2af3#d9a8">Design</a></li>
<li><a target="_blank" href="https://medium.com/p/507e313b2af3#dca5">Development</a></li>
<li><a target="_blank" href="https://medium.com/p/507e313b2af3#696e">Get the source</a></li>
</ul>
<p>Many of you have probably seen <a target="_blank" href="https://medium.freecodecamp.org/how-to-link-to-a-specific-paragraph-in-your-medium-article-2018-table-of-contents-method-e66595fea549">this post</a> about how to link to parts of your Medium article. You may have also seen <a target="_blank" href="https://medium.com/@castroalves/medium-anchor-a-must-have-chrome-extension-for-bloggers-c45dfdc6b91e">this chrome extension</a>, which makes the process simpler.</p>
<p>Well, you can do one better. This is how to create a table of contents for your Medium article, automatically.</p>
<h3 id="heading-1-get-the-url">1. Get The URL</h3>
<p>First, you need the URL of your Medium article. If it has been published, just grab the link from your address bar</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/FbUV0O6cwmoi23LHvzz2NrKX2MuiSju8xMVQ" alt="Image" width="800" height="24" loading="lazy"></p>
<p>If you are still writing, click the “share” button in the top right corner, and copy the link from there</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/VaWdhwfh2lPCB8GLINgsV4G4dgYpvVl9akgK" alt="Image" width="800" height="456" loading="lazy"></p>
<h3 id="heading-2-generate-your-table-of-contents">2. Generate Your Table Of Contents</h3>
<p>Now the easy bit. Go to <a target="_blank" href="https://www.mediumtoc.com">www.mediumtoc.com</a> and paste your URL in the input bar, and click “go.”</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/SeFydbL76uBcTWxPJBlP0hmWot5mc6li8H2f" alt="Image" width="800" height="399" loading="lazy"></p>
<p>Then it should give you your contents, which you can copy and paste into your medium article!</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/eEoCmfNhuAvDpM1-72E5vu6ZJ42NpZAPsU1w" alt="Image" width="800" height="402" loading="lazy"></p>
<p>You can see this in action at the top of this post.</p>
<h3 id="heading-how-i-built-this">How I Built This</h3>
<h4 id="heading-design">Design:</h4>
<p>I first designed the website in <a target="_blank" href="https://www.sketchapp.com/">Sketch</a>. I chose to take some design cues from the Medium website, with a serif font for the heading, and I also used the same button design.</p>
<p>I chose to use a <a target="_blank" href="https://material.io/guidelines/components/text-fields.html">https://material.io/guidelines/components/text-fields.html</a> input bar, as the design is functional and minimalistic, the style I was going for.</p>
<h4 id="heading-development">Development:</h4>
<p>The architecture of this app is largely based on the <a target="_blank" href="https://jamstack.org/">JAM stack</a>. This is based on the idea of having client side Javascript, reusable API’s, and prebuilt markup. It allows sites to go on CDNs.</p>
<p>The sites architecture is:</p>
<p><strong>Front End:</strong> <a target="_blank" href="https://reactjs.org/">React</a> and <a target="_blank" href="https://preactjs.com/">Preact</a> (a lightweight virtual DOM implementation) in production</p>
<p><strong>Back End:</strong> Express running on <a target="_blank" href="https://zeit.co/now">Now</a>, although I plan to migrate to AWS Lambda, as there is only 1 API endpoint. The back end scrapes the headings from the Medium article and returns their links.</p>
<p><strong>Front End Hosting / CDN:</strong> The site runs on <a target="_blank" href="https://www.netlify.com/">Netlify</a>, which has free SSL integration, and automatically deploys from the master branch on GitHub.</p>
<p>If anyone is interested in any of these topics, leave a comment and I will write more about them!</p>
<p>The website was designed and developed over the course of two days. The first day was focused on the back end of the site, and the design. The second day was the development. There are only 4 react components, and I chose not to use redux, as there is not very much changing in the state.</p>
<h4 id="heading-get-the-source">Get the source!</h4>
<p>This is open source, so you can get all the code on <a target="_blank" href="https://github.com/adamisntdead/medium-toc">github.com/adamisntdead/medium-toc</a>. ✨</p>
<p>Big thanks to the freeCodeCamp community for their wonderful <a target="_blank" href="http://medium.freecodecamp,com">publication</a>!</p>
<h3 id="heading-if-you-liked-this-article-please-leave-an-applause-want-more-articles-like-this-follow-mehttpmediumcomadamisntdead">If you liked this article, please leave an applause! ? Want more articles like this? F<a target="_blank" href="http://medium.com/@adamisntdead/">ollow me.</a></h3>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How I used Python to find interesting people to follow on Medium ]]>
                </title>
                <description>
                    <![CDATA[ By Radu Raicea Medium has a large amount of content, a large number of users, and an almost overwhelming number of posts. When you try to find interesting users to interact with, you’re flooded with visual noise. I define an interesting user as someo... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-i-used-python-to-find-interesting-people-on-medium-be9261b924b0/</link>
                <guid isPermaLink="false">66c34e304f7405e6476b01fd</guid>
                
                    <category>
                        <![CDATA[ medium ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                    <category>
                        <![CDATA[ startup ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 11 Oct 2017 11:31:24 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*9rLeOFD7rvImTlcXQUe-mw.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Radu Raicea</p>
<p>Medium has a large amount of content, a large number of users, and an almost overwhelming number of posts. When you try to find interesting users to interact with, you’re flooded with visual noise.</p>
<p>I define an interesting user as someone who is from your network, who is active, and who writes responses that are generally appreciated by the Medium community.</p>
<p>I was looking through the latest posts from users I follow to see who had responded to those users. I figured that if they responded to someone I’m following, they must have similar interests to mine.</p>
<p>The process was tedious. And that’s when I remembered the most valuable lesson I learned during my last internship:</p>
<p><strong>Any tedious task can and should be automated.</strong></p>
<p>I wanted my automation to do the following things:</p>
<ol>
<li>Get all the <strong>users</strong> from my “Followings” list</li>
<li>Get the latest <strong>posts</strong> of each user</li>
<li>Get all the <strong>responses</strong> to each post</li>
<li>Filter out responses that are older than 30 days</li>
<li>Filter out responses that have less than a minimum number of recommendations</li>
<li>Get the <strong>username</strong> of the author of each response</li>
</ol>
<h3 id="heading-lets-start-pokin">Let’s start pokin’</h3>
<p>I initially looked at <a target="_blank" href="https://github.com/Medium/medium-api-docs">Medium’s API</a>, but found it limiting. It didn’t give me much to work with. I could only get information about my account, not on other users.</p>
<p>On top of that, the last change to Medium’s API was over a year ago. There was no sign of recent development.</p>
<p>I realized that I would have to rely on HTTP requests to get my data, so I started to poke around using my <a target="_blank" href="https://developer.chrome.com/devtools"><strong>Chrome DevTools</strong></a>.</p>
<p>The first goal was to get my list of Followings.</p>
<p>I opened up my DevTools and went on the Network tab. I filtered out everything but <a target="_blank" href="https://en.wikipedia.org/wiki/XMLHttpRequest">XHR</a> to see where Medium gets my list of Followings from. I hit the reload button on my profile page and got nothing interesting.</p>
<p>What if I clicked the Followings button on my profile? Bingo.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/Ee6OOGBa5dG7hRyH4i7CzL7oMUumnReStC8-" alt="Image" width="800" height="387" loading="lazy">
<em>Finding the link that lists a user’s followings</em></p>
<p>Inside the link, I found a very big <a target="_blank" href="https://en.wikipedia.org/wiki/JSON">JSON</a> response. It was a well-formatted JSON, except for a string of characters at the beginning of the response: <code>])}while(1);&lt;</code>/x&gt;</p>
<p>I wrote a function to clean that up and turn the JSON into a Python dictionary.</p>
<pre><code><span class="hljs-keyword">import</span> json
</code></pre><pre><code>def clean_json_response(response):    <span class="hljs-keyword">return</span> json.loads(response.text.split(<span class="hljs-string">'])}while(1);&lt;/x&gt;'</span>)[<span class="hljs-number">1</span>])
</code></pre><p>I had found an entry point. Let the coding begin.</p>
<h3 id="heading-getting-all-the-users-from-my-followings-list">Getting all the users from my Followings list</h3>
<p>To query that endpoint, I needed my User ID (I know that I already had it, but this is for educational purposes).</p>
<p>While looking for a way to get a user’s ID, I <a target="_blank" href="https://medium.com/statuscode/building-a-basic-web-service-to-display-your-medium-blog-posts-on-your-website-using-aws-api-48597b1771c5">found out</a> that you can add <code>?format=json</code> to most Medium URLs to get a JSON response from that page. I tried that out on my profile page.</p>
<p>Oh look, there’s the user ID.</p>
<pre><code>])}<span class="hljs-keyword">while</span>(<span class="hljs-number">1</span>);&lt;/x&gt;{<span class="hljs-string">"success"</span>:<span class="hljs-literal">true</span>,<span class="hljs-string">"payload"</span>:{<span class="hljs-string">"user"</span>:{<span class="hljs-string">"userId"</span>:<span class="hljs-string">"d540942266d0"</span>,<span class="hljs-string">"name"</span>:<span class="hljs-string">"Radu Raicea"</span>,<span class="hljs-string">"username"</span>:<span class="hljs-string">"Radu_Raicea"</span>,...
</code></pre><p>I wrote a function to pull the user ID from a given username. Again, I had to use <code>clean_json_response</code> to remove the unwanted characters at the beginning of the response.</p>
<p>I also made a constant called <code>MEDIUM</code> that contains the base for all the Medium URLs.</p>
<pre><code><span class="hljs-keyword">import</span> requests
</code></pre><pre><code>MEDIUM = <span class="hljs-string">'https://medium.com'</span>
</code></pre><pre><code>def get_user_id(username):
</code></pre><pre><code>    print(<span class="hljs-string">'Retrieving user ID...'</span>)
</code></pre><pre><code>    url = MEDIUM + <span class="hljs-string">'/@'</span> + username + <span class="hljs-string">'?format=json'</span>    response = requests.get(url)    response_dict = clean_json_response(response)    <span class="hljs-keyword">return</span> response_dict[<span class="hljs-string">'payload'</span>][<span class="hljs-string">'user'</span>][<span class="hljs-string">'userId'</span>]
</code></pre><p>With the User ID, I queried the <code>/_/api/users/&lt;user_id&gt;/fol</code>lowing endpoint and got the list of usernames from my Followings list.</p>
<p>When I did it in DevTools, I noticed that the JSON response only had eight usernames. Weird.</p>
<p>After I clicked on “Show more people,” I saw what was missing. Medium uses <a target="_blank" href="https://developer.twitter.com/en/docs/ads/general/guides/pagination"><strong>pagination</strong></a> for the list of Followings.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/3-eKbPasdKJvOhPQW7WT7xlHtVm38Rg3lvDB" alt="Image" width="800" height="448" loading="lazy">
<em>Medium uses pagination for Followings list</em></p>
<p>Pagination works by specifying a <code>limit</code> (elements per page) and <code>to</code> (first element of the next page). I had to find a way to get the ID of that next element.</p>
<p>At the end of the JSON response from <code>/_/api/users/&lt;user_id&gt;/fol</code>lowing, I saw an interesting key.</p>
<pre><code>...<span class="hljs-string">"paging"</span>:{<span class="hljs-string">"path"</span>:<span class="hljs-string">"/_/api/users/d540942266d0/followers"</span>,<span class="hljs-string">"next"</span>:{<span class="hljs-string">"limit"</span>:<span class="hljs-number">8</span>,<span class="hljs-string">"to"</span>:<span class="hljs-string">"49260b62a26c"</span>}}},<span class="hljs-string">"v"</span>:<span class="hljs-number">3</span>,<span class="hljs-string">"b"</span>:<span class="hljs-string">"31039-15ed0e5"</span>}
</code></pre><p>From here, writing a loop to get all the usernames from my Followings list was easy.</p>
<pre><code>def get_list_of_followings(user_id):
</code></pre><pre><code>    print(<span class="hljs-string">'Retrieving users from Followings...'</span>)        next_id = False    followings = []
</code></pre><pre><code>    <span class="hljs-keyword">while</span> True:
</code></pre><pre><code>        <span class="hljs-keyword">if</span> next_id:            # If <span class="hljs-built_in">this</span> is not the first page <span class="hljs-keyword">of</span> the followings list            url = MEDIUM + <span class="hljs-string">'/_/api/users/'</span> + user_id                  + <span class="hljs-string">'/following?limit=8&amp;to='</span> + next_id        <span class="hljs-keyword">else</span>:            # If <span class="hljs-built_in">this</span> is the first page <span class="hljs-keyword">of</span> the followings list            url = MEDIUM + <span class="hljs-string">'/_/api/users/'</span> + user_id + <span class="hljs-string">'/following'</span>
</code></pre><pre><code>        response = requests.get(url)        response_dict = clean_json_response(response)        payload = response_dict[<span class="hljs-string">'payload'</span>]
</code></pre><pre><code>        <span class="hljs-keyword">for</span> user <span class="hljs-keyword">in</span> payload[<span class="hljs-string">'value'</span>]:            followings.append(user[<span class="hljs-string">'username'</span>])
</code></pre><pre><code>        <span class="hljs-keyword">try</span>:            # If the <span class="hljs-string">"to"</span> key is missing, we<span class="hljs-string">'ve reached the end            # of the list and an exception is thrown            next_id = payload['</span>paging<span class="hljs-string">']['</span>next<span class="hljs-string">']['</span>to<span class="hljs-string">']        except:            break</span>
</code></pre><pre><code>    <span class="hljs-keyword">return</span> followings
</code></pre><h3 id="heading-getting-the-latest-posts-from-each-user">Getting the latest posts from each user</h3>
<p>Once I had the list of users I follow, I wanted to get their latest posts. I could do that with a request to <code>[https://medium.com/@&lt;username&gt;/latest?forma](https://medium.com/@username/latest?format=json)</code>t=json</p>
<p>I wrote a function that takes a list of usernames and returns a list of post IDs for the latest posts from all the usernames on the input list.</p>
<pre><code>def get_list_of_latest_posts_ids(usernames):
</code></pre><pre><code>    print(<span class="hljs-string">'Retrieving the latest posts...'</span>)
</code></pre><pre><code>    post_ids = []
</code></pre><pre><code>    <span class="hljs-keyword">for</span> username <span class="hljs-keyword">in</span> usernames:        url = MEDIUM + <span class="hljs-string">'/@'</span> + username + <span class="hljs-string">'/latest?format=json'</span>        response = requests.get(url)        response_dict = clean_json_response(response)
</code></pre><pre><code>        <span class="hljs-keyword">try</span>:            posts = response_dict[<span class="hljs-string">'payload'</span>][<span class="hljs-string">'references'</span>][<span class="hljs-string">'Post'</span>]        except:            posts = []
</code></pre><pre><code>        <span class="hljs-keyword">if</span> posts:            <span class="hljs-keyword">for</span> key <span class="hljs-keyword">in</span> posts.keys():                post_ids.append(posts[key][<span class="hljs-string">'id'</span>])
</code></pre><pre><code>    <span class="hljs-keyword">return</span> post_ids
</code></pre><h3 id="heading-getting-all-the-responses-from-each-post">Getting all the responses from each post</h3>
<p>With the list of posts, I extracted all the responses using <code>https://medium.com/_/api/posts/&lt;post_id&gt;/res</code>ponses</p>
<p>This function takes a list of post IDs and returns a list of responses.</p>
<pre><code>def get_post_responses(posts):
</code></pre><pre><code>    print(<span class="hljs-string">'Retrieving the post responses...'</span>)
</code></pre><pre><code>    responses = []
</code></pre><pre><code>    <span class="hljs-keyword">for</span> post <span class="hljs-keyword">in</span> posts:        url = MEDIUM + <span class="hljs-string">'/_/api/posts/'</span> + post + <span class="hljs-string">'/responses'</span>        response = requests.get(url)        response_dict = clean_json_response(response)        responses += response_dict[<span class="hljs-string">'payload'</span>][<span class="hljs-string">'value'</span>]
</code></pre><pre><code>    <span class="hljs-keyword">return</span> responses
</code></pre><h4 id="heading-filtering-the-responses">Filtering the responses</h4>
<p>At first, I wanted responses that had gotten a minimum number of claps. But I realized that this might not be a good representation of the community’s appreciation of the response: a user can give more than one clap for the same article.</p>
<p>Instead, I filtered by the number of recommendations. It measures the same thing as claps, but it doesn’t take duplicates into account.</p>
<p>I wanted the minimum to be dynamic, so I passed a variable named <code>recommend_min</code> around.</p>
<p>The following function takes a response and the <code>recommend_min</code> variable. It checks if the response meets that minimum.</p>
<pre><code>def check_if_high_recommends(response, recommend_min):    <span class="hljs-keyword">if</span> response[<span class="hljs-string">'virtuals'</span>][<span class="hljs-string">'recommends'</span>] &gt;= recommend_min:        <span class="hljs-keyword">return</span> True
</code></pre><p>I also wanted recent responses. I filtered out responses that were older than 30 days using this function.</p>
<pre><code><span class="hljs-keyword">from</span> datetime <span class="hljs-keyword">import</span> datetime, timedelta
</code></pre><pre><code>def check_if_recent(response):    limit_date = datetime.now() - timedelta(days=<span class="hljs-number">30</span>)    creation_epoch_time = response[<span class="hljs-string">'createdAt'</span>] / <span class="hljs-number">1000</span>    creation_date = datetime.fromtimestamp(creation_epoch_time)
</code></pre><pre><code>    <span class="hljs-keyword">if</span> creation_date &gt;= limit_date:        <span class="hljs-keyword">return</span> True
</code></pre><h3 id="heading-getting-the-username-of-the-author-of-each-response">Getting the username of the author of each response</h3>
<p>Once I had all the filtered responses, I grabbed all the authors’ user IDs using the following function.</p>
<pre><code>def get_user_ids_from_responses(responses, recommend_min):
</code></pre><pre><code>    print(<span class="hljs-string">'Retrieving user IDs from the responses...'</span>)
</code></pre><pre><code>    user_ids = []
</code></pre><pre><code>    <span class="hljs-keyword">for</span> response <span class="hljs-keyword">in</span> responses:        recent = check_if_recent(response)        high = check_if_high_recommends(response, recommend_min)
</code></pre><pre><code>        <span class="hljs-keyword">if</span> recent and high:            user_ids.append(response[<span class="hljs-string">'creatorId'</span>])
</code></pre><pre><code>    <span class="hljs-keyword">return</span> user_ids
</code></pre><p>User IDs are useless when you’re trying to access someone’s profile. I made this next function query the <code>/_/api/users/&lt;user_</code>id&gt; endpoint to get the usernames.</p>
<pre><code>def get_usernames(user_ids):
</code></pre><pre><code>    print(<span class="hljs-string">'Retrieving usernames of interesting users...'</span>)
</code></pre><pre><code>    usernames = []
</code></pre><pre><code>    <span class="hljs-keyword">for</span> user_id <span class="hljs-keyword">in</span> user_ids:        url = MEDIUM + <span class="hljs-string">'/_/api/users/'</span> + user_id        response = requests.get(url)        response_dict = clean_json_response(response)        payload = response_dict[<span class="hljs-string">'payload'</span>]
</code></pre><pre><code>        usernames.append(payload[<span class="hljs-string">'value'</span>][<span class="hljs-string">'username'</span>])
</code></pre><pre><code>    <span class="hljs-keyword">return</span> usernames
</code></pre><h3 id="heading-putting-it-all-together">Putting it all together</h3>
<p>After I finished all the functions, I created a <a target="_blank" href="https://en.wikipedia.org/wiki/Pipeline_(software)">pipeline</a> to get my list of recommended users.</p>
<pre><code>def get_interesting_users(username, recommend_min):
</code></pre><pre><code>    print(<span class="hljs-string">'Looking for interesting users for %s...'</span> % username)
</code></pre><pre><code>    user_id = get_user_id(username)
</code></pre><pre><code>    usernames = get_list_of_followings(user_id)
</code></pre><pre><code>    posts = get_list_of_latest_posts_ids(usernames)
</code></pre><pre><code>    responses = get_post_responses(posts)
</code></pre><pre><code>    users = get_user_ids_from_responses(responses, recommend_min)
</code></pre><pre><code>    <span class="hljs-keyword">return</span> get_usernames(users)
</code></pre><p>The script was finally ready! To run it, you have to call the pipeline.</p>
<pre><code>interesting_users = get_interesting_users(<span class="hljs-string">'Radu_Raicea'</span>, <span class="hljs-number">10</span>)print(interesting_users)
</code></pre><p><img src="https://cdn-media-1.freecodecamp.org/images/1uACHW2JbTMIV-keNz8xATXsRCZRPlOPNpKL" alt="Image" width="636" height="423" loading="lazy">
_Image credit: [Know Your Meme](http://knowyourmeme.com/photos/185885-success-kid-i-hate-sandcastles" rel="noopener" target="<em>blank" title=")</em></p>
<p>Finally, I added an option to append the results to a CSV with a timestamp.</p>
<pre><code><span class="hljs-keyword">import</span> csv
</code></pre><pre><code>def list_to_csv(interesting_users_list):    <span class="hljs-keyword">with</span> open(<span class="hljs-string">'recommended_users.csv'</span>, <span class="hljs-string">'a'</span>) <span class="hljs-keyword">as</span> file:        writer = csv.writer(file)
</code></pre><pre><code>        now = datetime.now().strftime(<span class="hljs-string">'%Y-%m-%d %H:%M:%S'</span>)        interesting_users_list.insert(<span class="hljs-number">0</span>, now)                writer.writerow(interesting_users_list)
</code></pre><pre><code>interesting_users = get_interesting_users(<span class="hljs-string">'Radu_Raicea'</span>, <span class="hljs-number">10</span>)list_to_csv(interesting_users)
</code></pre><p>The project’s source code is on <a target="_blank" href="https://github.com/Radu-Raicea/Interesting-People-On-Medium">GitHub</a>.</p>
<p>If you don’t know Python, go read <a target="_blank" href="https://www.freecodecamp.org/news/how-i-used-python-to-find-interesting-people-on-medium-be9261b924b0/undefined">TK</a>’s <a target="_blank" href="https://medium.freecodecamp.org/learning-python-from-zero-to-hero-120ea540b567">Learning Python: From Zero to Hero</a>.</p>
<p>If you have suggestions on other criteria that make users interesting, please <strong>write them below!</strong></p>
<h3 id="heading-in-summary">In summary…</h3>
<ul>
<li>I made a <a target="_blank" href="https://github.com/Radu-Raicea/Interesting-People-On-Medium"><strong>Python script for Medium</strong></a>.</li>
<li>The script returns a list of interesting users that are <strong>active</strong> and <strong>post interesting responses</strong> on the latest posts of people you are following.</li>
<li>You can take users from the list and run the script with their username instead of yours.</li>
</ul>
<p><strong>Check out my <a target="_blank" href="https://medium.freecodecamp.org/how-open-source-licenses-work-and-how-to-add-them-to-your-projects-34310c3cf94">primer</a> on open source licenses and how to add them to your projects!</strong></p>
<p>For more updates, follow me on <a target="_blank" href="https://twitter.com/radu_raicea">Twitter</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Seeking a volunteer editor to help lead Medium’s largest technology publication ]]>
                </title>
                <description>
                    <![CDATA[ Note: We have moved off of Medium and are no longer looking for editors for this. I kept this online for archive purposes, and in case anyone is interested in how freeCodeCamp used to run its Medium publication. freeCodeCamp is now the largest techno... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/seeking-a-volunteer-editor-to-help-lead-mediums-largest-technology-publication-26fe3670ea09/</link>
                <guid isPermaLink="false">66b8d572f583f6362a68ce20</guid>
                
                    <category>
                        <![CDATA[ Blogger ]]>
                    </category>
                
                    <category>
                        <![CDATA[ medium ]]>
                    </category>
                
                    <category>
                        <![CDATA[ startup ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ writing ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Quincy Larson ]]>
                </dc:creator>
                <pubDate>Tue, 04 Jul 2017 13:39:47 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*nuobF42W04iSFbp12I1lfA.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><em>Note: We have moved off of Medium and are no longer looking for editors for this. I kept this online for archive purposes, and in case anyone is interested in how freeCodeCamp used to run its Medium publication.</em></p>
<p>freeCodeCamp is now the largest technology publication on Medium. And as its sole editor, I get way more high-quality story submissions than I have time to edit and publish.</p>
<p>This means that I’m the biggest bottleneck — between all the developers, designers, and data scientists writing these amazing stories — and a growing audience that’s eager to read them.</p>
<p>Even though freeCodeCamp.org reaches millions of people each month through Medium, <a target="_blank" href="https://www.youtube.com/freecodecamp">YouTube</a>, and our <a target="_blank" href="https://www.freecodecamp.org">coding platform</a>, we’re a small <a target="_blank" href="https://www.freecodecamp.org/donate/">donor-supported nonprofit</a>. We lack the resources to hire professional editors.</p>
<p>This said, a lack of resources hasn’t stopped us in other areas. We have thousands of volunteers running local study groups, contributing to open source projects, and moderating forums and chatrooms.</p>
<p>If you have experience editing a newspaper, academic journal, magazine, or blog, and are able to contribute a few hours of your time each week to this publication, we should talk. ? R<a target="_blank" href="https://medium.freecodecamp.com/how-to-get-published-in-the-freecodecamp-medium-publication-9b342a22400e">ead our publication guide,</a> then reach out to me.</p>
<p>You’ll learn a ton about technology in the process, and help a community that has published 1,000+ free (and ad-free) articles. And together, we’ll be able to maintain our current high standards while publishing a lot more stories for everyone to read.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to get published in the freeCodeCamp Medium publication ]]>
                </title>
                <description>
                    <![CDATA[ Update: Instead of publishing on Medium, we now run our own self-hosted open-source tool where we're publishing articles to an even larger audience. You can read more about our move on this forum thread, which includes instructions for how you can ap... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-get-published-in-the-freecodecamp-medium-publication-9b342a22400e/</link>
                <guid isPermaLink="false">66b8d3ef35b58875dce6fdb9</guid>
                
                    <category>
                        <![CDATA[ Blogger ]]>
                    </category>
                
                    <category>
                        <![CDATA[ medium ]]>
                    </category>
                
                    <category>
                        <![CDATA[ social media ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ writing ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Quincy Larson ]]>
                </dc:creator>
                <pubDate>Thu, 12 Jan 2017 00:05:54 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*pzYsL6a3eciFG0M8woCwVA.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Update: Instead of publishing on Medium, we now run our own self-hosted open-source tool where we're publishing articles to an even larger audience.</p>
<p>You can read more about our move on this forum thread, which includes instructions for how you can apply to become an author, <a target="_blank" href="https://www.freecodecamp.org/news/developer-news-style-guide/">read this style guide</a>.</p>
<p>What follows is for historical purposes if you're curious.</p>
<p>Our open source community runs Medium’s largest technical publication. If you write about development, design, or data science — and are looking for an audience — this is a good place to get published.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*3fMejdhp9NZORXfOaXVHQw.png" alt="Image" width="800" height="507" loading="lazy">
<em>Our stats from the past 90 days. They’re high enough to break the CSS on the Y axis of Medium’s charts.</em></p>
<p>freeCodeCamp is an open source community with thousands of contributors, mentors, teachers, and event organizers.</p>
<p>More than a million people learn to code using freeCodeCamp each month, and thousands of us have worked through the 1,200-hour curriculum and gotten their first developer jobs.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*V0e6SD7Nm-eJD1IIuKcT1g.jpeg" alt="Image" width="800" height="110" loading="lazy"></p>
<p>We’re a nonprofit. You can help us pay for servers and other costs by <a target="_blank" href="https://www.freecodecamp.com/donate">becoming a supporter</a>.</p>
<p>Here’s what all this means for you as a writer:</p>
<ul>
<li>We won’t plaster your story with advertisements, or put it behind a paywall (or “email wall” or anything — no weird tricks).</li>
<li>You can include links to your own blog or service, and even affiliate links, as long as it’s done tastefully and transparently.</li>
<li>Your stories are yours. We don’t lay any claim to them. You can cross-post them wherever you want. Other newspapers and websites may even approach you about syndicating them or translating them. That’s fine with us. We just ask that — since we invest a lot of time in editing and promoting your stories — you don’t remove them from our Medium publication once we’ve published them.</li>
</ul>
<p>Our editors have experience running newspapers and editing technical publications. We’ll read your submission, and if we think it’s promising, we’ll give you candid feedback as to how you can improve it. Then we’ll perform final editing on your story, publish it, then help you publicize it.</p>
<p>Since we launched this Medium publication 18 months ago:</p>
<ul>
<li>we’ve published about 1,000 stories</li>
<li>that have received an average of 23,000 views</li>
<li>with a median of 6,500 views (that is, half of these stories have received at least 6,500 views)</li>
</ul>
<p>So if you’re writing about technology, we can help you reach a much larger audience.</p>
<h4 id="heading-table-of-contents">Table of Contents</h4>
<ul>
<li><a target="_blank" href="https://medium.com/p/9b342a22400e#9ad7">How we evaluate, edit, and publish stories</a></li>
<li><a target="_blank" href="https://medium.com/p/9b342a22400e#0152">A quick primer for writing well on Medium</a></li>
<li><a target="_blank" href="https://medium.com/p/9b342a22400e#4ab0">A good headline makes all the difference</a></li>
<li><a target="_blank" href="https://medium.com/p/9b342a22400e#590c">Arrest with images</a></li>
<li><a target="_blank" href="https://medium.com/p/9b342a22400e#d568">Build momentum with a strong lead</a></li>
<li><a target="_blank" href="https://medium.com/p/9b342a22400e#ce51">Establish credibility</a></li>
<li><a target="_blank" href="https://medium.com/p/9b342a22400e#2e3b">Write smart</a></li>
<li><a target="_blank" href="https://medium.com/p/9b342a22400e#1694">Attribute your sources</a></li>
<li><a target="_blank" href="https://medium.com/p/9b342a22400e#1d6c">Showcase your code</a></li>
<li><a target="_blank" href="https://medium.com/p/9b342a22400e#24ab">Make links look natural</a></li>
<li><a target="_blank" href="https://medium.com/p/9b342a22400e#143e">Embed media</a></li>
<li><a target="_blank" href="https://medium.com/p/9b342a22400e#a8d9">Explain abbreviations</a></li>
<li><a target="_blank" href="https://medium.com/p/9b342a22400e#0c0f">Look and style</a></li>
<li><a target="_blank" href="https://medium.com/p/9b342a22400e#b966">Add 5 tags</a></li>
<li><a target="_blank" href="https://medium.com/p/9b342a22400e#5952">Publicize your stories on social media</a></li>
<li><a target="_blank" href="https://medium.com/p/9b342a22400e#4742">Final advice</a></li>
</ul>
<h3 id="heading-how-we-evaluate-edit-and-publish-stories">How we evaluate, edit, and publish stories</h3>
<p>Note: I’ve hidden the submission instructions, the secret word, and the email address in the text below so that you’ll read all of this. ?</p>
<p>We receive 100+ submissions each week, and are protective of our readers’ time. We seek to only publish stories that are:</p>
<ul>
<li>well written</li>
<li>about interesting topics that people haven’t already written about too much</li>
<li>relevant to our audience of <strong>developers</strong>, <strong>designers</strong>, and <strong>data scientists</strong>.</li>
</ul>
<p>If we think your story is a good fit, we’ll add you as a writer to the freeCodeCamp publication and send you an acceptance letter with further instructions.</p>
<p>Then we’ll put your story in the queue to be edited and published. (Here’s <a target="_blank" href="https://medium.freecodecamp.org/the-freecodecamp-medium-publication-editor-handbook-cb5876d1ef23">our editor handbook</a> if you’re curious about this process). This process may take a while, so we thank you in advance for your patience. You’ll be able to view edits in Medium’s revision history. You will still have full control of your article if you need to make updates.</p>
<p>If we don’t think your story is a good fit for the freeCodeCamp publication, we will send you an email letting you know this. No worries. It won’t negatively affect your ability to get subsequent stories published here.</p>
<p>Note that all our editors have other responsibilities within the open source community, so it may take several days for us to reply to you. But as long as you follow the submission instructions hidden below, we will reply to you.</p>
<h3 id="heading-a-quick-primer-for-writing-well-on-medium">A quick primer for writing well on Medium</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*3qCQZDqlaC1iq6pkyEybSw.jpeg" alt="Image" width="800" height="303" loading="lazy"></p>
<p>As a writer, you fight a war against indifference. You have to get people to care enough to click through to your story. You have to convince them to take a chance on you.</p>
<p>You have only two weapons against the relentless scroll of news feeds: a headline and an image.</p>
<p>Here’s what a story looks like in Medium’s news feed:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*iCN5p_9wOJGDuzoAhfe8BQ.jpeg" alt="Image" width="596" height="452" loading="lazy"></p>
<p>Here’s what it looks like on Facebook:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*K98OoonFq-8q0TBEONae7A.jpeg" alt="Image" width="622" height="454" loading="lazy"></p>
<p>And here’s what it looks like on Twitter:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*xSJcfQ0tnrXfA7bjXGIcAA.jpeg" alt="Image" width="522" height="368" loading="lazy"></p>
<p>Your headline and opening image are the only things people have to judge your story on. Before they can even read your story’s first paragraph, they must answer a question. It’s the same question that we all ask ourselves every day: <strong>is this going to be worth my time?</strong></p>
<p>Your first job as a writer is to choose a headline and image that will make people answer “yes.”</p>
<h3 id="heading-a-good-headline-makes-all-the-difference">A good headline makes all the difference</h3>
<p>Your headline is the most important part of your story. Spend time refining it.</p>
<p>Don’t use clickbait: “You won’t believe this one ridiculously effective headline dark pattern”</p>
<p>Don’t use listicles: “11 outrageous headlines that will compel people to read your Medium story”</p>
<p>Do tell the truth: “Clever but matter-of-fact headline about an interesting topic”</p>
<p>How long should your headline be? HubSpot <a target="_blank" href="http://blog.hubspot.com/marketing/seo-social-media-study#sm.00000z83pnwr7kdwxvrrsinzxyr7l">analyzed</a> 6,000 blog posts and found that stories with 8 to 14-word headlines get more social media shares.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*NLpfioruotY2jjCWCJtvBA.png" alt="Image" width="800" height="545" loading="lazy"></p>
<p>This said, <strong>make sure your headline is 80 characters or fewer</strong>. Otherwise, the title will get truncated in news feeds when people share your article on Facebook and Twitter.</p>
<p>Another consideration is how emotional a headline is. The more emotional (positive or negative) a headline is, the more likely people will click it.</p>
<p>Here’s a <a target="_blank" href="http://coschedule.com/headline-analyzer">tool</a> that helps you balance the length and sentiment of your headlines.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*UQhQRtDVFnpjXmVw9YV5Zg.jpeg" alt="Image" width="750" height="514" loading="lazy">
<em>A screenshot of the tool’s analysis of one of my headlines. Your mileage may vary.</em></p>
<p>Headlines are traditionally written in “title case.” The Associated Press says to “capitalize the first letter of every word except articles, coordinating conjunctions, and prepositions of three letters or fewer.”</p>
<p>On Medium, I often throw title case out the window and just write headlines like a normal sentence. I even include punctuation as necessary. This format is more conversational, and easier to read.</p>
<p>Don’t break stories into parts. Labels like “part 1” scare people off, because who knows when you’ll get around to writing part 2. And if people encounter “part 2” and they haven’t read part 1, there’s a good chance they just won’t bother reading either. So it’s much better to <a target="_blank" href="https://medium.freecodecamp.com/understanding-flexbox-everything-you-need-to-know-b4013d4dc9af">just publish a single in-depth story</a>.</p>
<h3 id="heading-arrest-with-images">Arrest with images</h3>
<p>The second most important aspect of your story is its featured image.</p>
<p>Medium will automatically make the first image in your article its featured image. This means your article’s og-image meta property will be this image. This image will serve as your story’s ambassador everywhere: social media news feeds, Reddit, Google News — even RSS readers.</p>
<p>You can manually force Medium to treat a specific image as your article’s featured image. While in edit mode, click the image, then:</p>
<ul>
<li>Mac: ⌘ + Opt + 8</li>
<li>PC: Ctrl + Alt + 8</li>
</ul>
<p>Start considering images early in the writing process. And never publish without at least one image. Otherwise your story will be all but invisible in news feeds.</p>
<p>You should break up long stories with images. To paraphrase Mary Poppins, a spoonful of images helps the text go down.</p>
<p>Medium offers four different image widths. Note that these will all look the same on mobile.</p>
<p>Most of the time, you’ll want to stick with column width:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*akB3u2t_52nVjR3YMk36Kg.jpeg" alt="Image" width="800" height="533" loading="lazy"></p>
<p>If you have a chart that is hard to read when it’s small, go bigger:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*akB3u2t_52nVjR3YMk36Kg.jpeg" alt="Image" width="800" height="533" loading="lazy"></p>
<p>And if you’re really proud of an image, or if it’s chock full of interesting data, go full-bleed:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*akB3u2t_52nVjR3YMk36Kg.jpeg" alt="Image" width="800" height="533" loading="lazy"></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*akB3u2t_52nVjR3YMk36Kg.jpeg" alt="Image" width="800" height="533" loading="lazy"></p>
<p>… and then there’s side straddle. Don’t use this size at all, because it makes the text less comfortable to read.</p>
<p>It’s also awkward when you’re done talking about the photo and your text is still pushed to the side.</p>
<p>Yeah. I’m still stuck over here.</p>
<p>Always include a high-resolution image at the top of a story under your headline. This has the following benefits:</p>
<ol>
<li>When people share your story on Facebook and Twitter, it will be more prominent in news feeds, making people more likely to click on it.</li>
<li>It will look better in Medium’s own news feeds.</li>
<li>Humans are visual creatures, and click on images.</li>
</ol>
<h3 id="heading-build-momentum-with-a-strong-lead">Build momentum with a strong lead</h3>
<p>Once your reader clicks through to your story, the trial begins. They’re looking for any excuse to jump back to their news feed. Reading requires a lot more effort than scrolling through cat photos.</p>
<p>Don’t waste time with intros or updates like “This was published on my blog at [blog URL]” or “Update: this has been posted on Hacker News.” You can put these things at the bottom of your story.</p>
<p>Instead, start making points and telling your story immediately.</p>
<h3 id="heading-establish-credibility">Establish credibility</h3>
<p>Figure out a way to establish your credibility within the first few paragraphs. If you’re a top expert in your field, say so. Don’t assume that people are going to take the time to google you.</p>
<blockquote>
<p>“Who you are speaks so loudly I can’t hear what you’re saying.” — Ralph Waldo Emerson</p>
</blockquote>
<p>Any achievement or distinction that makes people take you more seriously will help give your readers the impression that “this person knows what they’re talking about.”</p>
<p>Reinforce your credibility throughout your story. Support your arguments with data. Use inline links to (non-paywalled) research.</p>
<p>This isn’t the New England Journal of Medicine. This is Medium. So don’t use footnotes.</p>
<h3 id="heading-write-smart">Write smart</h3>
<p>Good writing is hard. Like any skill, it takes practice. There are no shortcuts to becoming a strong writer.</p>
<p>Do yourself a favor: <strong>write what you know</strong>.</p>
<p>Have you ever heard the term “writers block?” Writer’s block happens when you don’t know enough about a topic to write about it.</p>
<p>If you have trouble coming up with at least 5 minutes worth of things to say on a topic — or if your story devolves into a list of bullet points — you don’t know enough about it.</p>
<p>The antidote is research. Learning. Going out into the field.</p>
<p>Don’t publish anything you’re not proud of. Medium isn’t a numbers game. It’s a social contract. People follow you. In turn, you show respect for their scarce time.</p>
<p>Good Medium stories don’t come naturally. For every minute of story length, expect to spend at least an hour writing, re-writing, and editing your story.</p>
<h3 id="heading-attribute-your-sources">Attribute your sources</h3>
<p>The simplest way to attribute an image is to put the words “Image credit” below an image, and link this text to its original source.</p>
<p>If you’re looking for images you can safely use without permission, check out <a target="_blank" href="https://www.pexels.com/">Pexels</a>, <a target="_blank" href="https://unsplash.com/">Unsplash</a>, or search Google for images labeled for re-use.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*Qf6_zsIAM1WYhL93yqoP0g.png" alt="Image" width="794" height="419" loading="lazy">
<em>A Google image search query with the “Labeled for reuse” option selected.</em></p>
<p>Plagiarism — misrepresenting someone else’s writing as your own — is a serious offense in college, and it’s just as serious on Medium. Always attribute quotes to the people who originally said them. If it’s a multi-line quote, you should use Medium’s pull quotes:</p>
<blockquote>
<p>“When you have wit of your own, it’s a pleasure to credit other people for theirs.”<br>― Criss Jami</p>
</blockquote>
<p>You should only use Medium’s pull quotes as a way to highlight actual quotes — not to style your own text.</p>
<h3 id="heading-showcase-your-code">Showcase your code</h3>
<p>Where possible, code should be in text form rather than images. This makes the code more <a target="_blank" href="https://medium.freecodecamp.com/looking-back-to-what-started-it-all-731ef5424aec">accessible to screen readers</a>, and easier for people to copy and paste.</p>
<p>Medium has a hidden shortcut that will turn text plain text like this:</p>
<p>if (developer === true) {</p>
<p>follow(this.mediumPublication);</p>
<p>}</p>
<p>…into a formatted code block:</p>
<pre><code><span class="hljs-keyword">if</span> (developer === <span class="hljs-literal">true</span>) {
</code></pre><pre><code>  follow(<span class="hljs-built_in">this</span>.mediumPublication);
</code></pre><pre><code>}
</code></pre><p>To accomplish this, select the text, then push:</p>
<ul>
<li><strong>Windows</strong>: Control + Alt + 6</li>
<li><strong>Mac</strong>: Command + Option + 6</li>
<li><strong>Linux</strong>: Control + Alt + 6</li>
</ul>
<p>You can also start a code block with triple back-ticks. If you type three backticks (```) on a new line, Medium will switch into code input mode.</p>
<p>To highlight code inline, select it, then press the backtick key. This way, you can format text as code <code>freeCodeCamp()</code>right in the middle of a sentence.</p>
<p>You can even embed runnable apps right into Medium. Just in case these don’t render properly in Medium’s mobile apps, I recommend including links below each of the embeds as a fallback.</p>
<p>Paste a CodePen.io URL into Medium, then hit enter:</p>
<p><em>View my CodePen <a target="_blank" href="http://codepen.io/FreeCodeCamp/pen/NNvBQW">here</a>.</em></p>
<p>You can also do this with JSFiddle.net:</p>
<p><em>View my JSFiddle <a target="_blank" href="https://jsfiddle.net/avegt5e5/3/">here</a>.</em></p>
<p>Sometimes people start lines of code with a <code>$</code> if they’re terminal commands. Don’t do this. It will confuse beginners and makes it harder to copy and paste commands. Instead, just say something like “Enter the following commands in your terminal.”</p>
<h3 id="heading-make-links-look-natural">Make links look natural</h3>
<p>Figure out a way to work a link into a sentence. One thing I do not recommend doing is putting a link on its own line and pressing enter. This will create a nice looking preview card, like this:</p>
<p><a target="_blank" href="https://medium.freecodecamp.com/how-to-stand-on-shoulders-16e8cfbc127b"><strong>How to stand on the shoulders of giants</strong></a><br><a target="_blank" href="https://medium.freecodecamp.com/how-to-stand-on-shoulders-16e8cfbc127b">_Conquer Not Invented Here Syndrome, then do something new._medium.freecodecamp.com</a></p>
<p>… but readers often assume these are ads, and don’t even look at them.</p>
<p>The only time I would recommend using this is at the end of your story, if you want to link to further reading.</p>
<p>Underlining text makes it harder to read, so only hyperlink a few words.</p>
<p>Don’t paste URLs directly, like this: ❌ <a target="_blank" href="https://www.example.com">https://www.freecodecamp.com</a> ❌</p>
<p>Instead link to sites like <a target="_blank" href="https://www.freecodecamp.com">freeCodeCamp</a> mid sentence, like I just did here.</p>
<h3 id="heading-embed-media">Embed media</h3>
<p>You can embed Tweets, YouTube videos, and other media by pasting their URLs into Medium on a new line, then pressing enter.</p>
<p>Use these sparingly, since they may distract your reader from finishing your story.</p>
<h3 id="heading-explain-abbreviations">Explain abbreviations</h3>
<p>Don’t use an abbreviation unless the abbreviation is more widely understood than what it stands for. For example, HTTP is more widely recognized than Hypertext Transfer Protocol.</p>
<p>If an abbreviation isn’t already widely understood, and you’re going to refer to it more than a few times, you can define it as an abbreviation by doing this:</p>
<p>“Let’s break the code down into an <a target="_blank" href="https://en.wikipedia.org/wiki/Abstract_syntax_tree">Abstract Syntax Tree</a> (AST).”</p>
<p>Here I also linked to the Wikipedia article, for readers’ convenience. Don’t assume people will read these external links, though. You still need to define concepts or illustrate them through example.</p>
<p>Avoid defining an abbreviation in your opening paragraphs, as it slows your reader down and makes them less likely to continue reading.</p>
<p>Here’s the very short list of technology abbreviation that you don’t need to define: API, AJAX, BIOS, CPU, CSS, HTML, HTTPS, JSON, LAN, RAM, REST, USB, WWW, XML. For everything else, you should spell it out.</p>
<p>Always spell out short multi-part words like JavaScript and front-end. Don’t shorten them. The brevity isn’t worth the possible confusion.</p>
<h3 id="heading-look-and-style">Look and style</h3>
<p>If you want to emphasize something, use <strong>bold</strong>, but use it sparingly<strong>.</strong> <em>Italics are harder to read.</em> Don’t bold hyperlinks — the line underneath them already provides enough emphasis.</p>
<p>Don’t use drop caps. They look elegant in old books, but silly on the web.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*FwHC7L-4Uvgc0jb6OwlCqg.jpeg" alt="Image" width="500" height="330" loading="lazy">
<em>Some old-school-cool print dropcaps</em></p>
<p>Only use one exclamation point at a time, typically only after exclamations like: Golly gee! Hot dog!</p>
<p>Put commas and periods inside quotes, except when it might confuse a reader (like with variable names or book titles).</p>
<p>In some parts of the world, people put spaces before colons or question marks, like this : example. Don’t do this.</p>
<p>Use English instead of Latin:</p>
<ul>
<li>Use “for example” instead of “E.G.”</li>
<li>Use “that is” instead of “I.E.”</li>
<li>Use “note that” instead of “N.B.”</li>
<li>Instead of ending lists with “etc.” start them with “like”: “Elvis eats food like bread, peanut butter, and bananas.”</li>
</ul>
<p>According to Google Books, semicolons have been dying a slow death. Let’s put them out of their misery. Just use a period instead, and break clauses into separate sentences.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*BPlMVGr2WwjLnv-6iTMWvw.png" alt="Image" width="800" height="293" loading="lazy"></p>
<p>Use the Oxford Comma when possible. It makes things easier, clearer, and prettier to read.</p>
<p>Use the <a target="_blank" href="http://www.hemingwayapp.com/">Hemingway App</a>. There’s nothing magical about this simple tool, but it will automatically detect widely agreed-upon style issues:</p>
<ul>
<li>passive voice</li>
<li>unnecessary adverbs</li>
<li>words that have more common equivalents</li>
</ul>
<p>The Hemingway App will assign a “grade level” for your writing. Even technical stories can pull off a grade level of 6. And they should aspire to.</p>
<p>Most humans are not native English speakers, and the ones who are don’t usually sit around reading Chaucer all day. They want their information accessible and to the point.</p>
<p>Err on the side of breaking long sentences and paragraphs down into shorter ones.</p>
<p>Despite what you may have learned in English composition class, people prefer short paragraphs to “walls of text.”</p>
<p>There’s nothing wrong with single-sentence paragraphs.</p>
<p>Err on the side of creating new paragraphs.</p>
<p>Use contractions. They’ll make your prose seem more conversational. That’s always a plus.</p>
<p>Keep your tense consistent throughout. If you’re talking about something that occurred in past, use past tense.</p>
<p>Also, <strong>front-end</strong> development (adjective form with a dash) is when you’re working on the <strong>front end</strong> (noun form with no dash). The same goes with the back end, full stack, and many other compound terms.</p>
<h3 id="heading-add-5-tags">Add 5 tags</h3>
<p>Medium allows you to add up to five tags to your story. Use them.</p>
<p>People follow specific topics on Medium. The <a target="_blank" href="https://medium.freecodecamp.com/medium-isn-t-just-startup-people-30a3752b09b9#.5mxkc6mvw">most popular ones</a> are #tech, #life-lessons, #travel, #design, and #startup.</p>
<p>People who follow the tags you use may see your story in their news feed. Tags also make it easier for people to stumble upon your story in search results.</p>
<p>And now that you’ve read this far, here’s how to submit your story to the freeCodeCamp publication: send an email to submit at freecodecamp org. Include the URL for your story on Medium (preferably an unpublished draft) and the word “bananas” so that we’ll know that you have read all this. Only send one story URL per email. There’s no need to add anything further to your email — we just read the stories and judge them based on their own merits.</p>
<h3 id="heading-publicize-your-stories-on-social-media">Publicize your stories on social media</h3>
<p>You can share your story on Twitter, Facebook groups, and relevant Subreddits. If you have a mailing list, you can blast it out to your subscribers, too.</p>
<p>You can view your story’s <a target="_blank" href="https://medium.com/me/stats">stats</a> in real time. Ask for feedback from your friends and followers. Incorporate this feedback into your story.</p>
<p><strong>Don’t do anything sketchy to promote your story.</strong> You will most likely be caught. Sites like Hacker News and Reddit are very good at detecting abnormal voting behavior. This will reflect poorly not just on you, but the entire freeCodeCamp community as well.</p>
<h3 id="heading-final-advice">Final advice</h3>
<p>Remember that when you publish on Medium, you’re asking thousands of people to give you several minutes of their lives. Don’t take your readers for granted.</p>
<p>Before you publish a story, I recommend you sleep, wake up, then proof-read it again.</p>
<p>If you aren’t a native English speaker and are writing in English, ask a native speaker to proof-read your story before submitting it to a publication.</p>
<p>We’re looking forward to reading your submissions. I hope we can help you further improve your stories, and reach a much wider audience.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What I learned from analyzing the top 252 Medium stories of 2016 ]]>
                </title>
                <description>
                    <![CDATA[ Medium may be struggling to find a sustainable business model, but they have years worth of funding left, and more readers than ever. According to SimilarWeb, Medium had more than 84 million visits last month. Medium isn’t going away any time soon. ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/what-i-learned-from-analyzing-the-top-253-medium-stories-of-2016-9f5f1d0a2d1c/</link>
                <guid isPermaLink="false">66b8d67b80f2fbfc1b20bc0c</guid>
                
                    <category>
                        <![CDATA[ Data Science ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Life lessons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ medium ]]>
                    </category>
                
                    <category>
                        <![CDATA[ social media ]]>
                    </category>
                
                    <category>
                        <![CDATA[ writing ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Quincy Larson ]]>
                </dc:creator>
                <pubDate>Fri, 06 Jan 2017 22:15:26 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*FoYx_zJMp43-h15bW-9dMw.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Medium may be struggling to find a sustainable business model, but they have years worth of funding left, and more readers than ever.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/nDPRlKTnO15cvgvALzG1PhvqXcc5uIp4IkxQ" alt="Image" width="800" height="382" loading="lazy">
<em>According to SimilarWeb, Medium had more than 84 million visits last month.</em></p>
<p>Medium isn’t going away any time soon. So instead, let’s focus on how you can write stories that readers will find helpful here in 2017.</p>
<p>I pulled down the top 252 stories of 2016 — all of which had at least 2,500 recommendations from Medium’s readers — and analyzed the dataset.</p>
<p>To put things in perspective, writers published 7,500,000 stories on Medium last year. So this dataset represents the most popular 0.00336% stories of 2016.</p>
<p>Together, these 252 stories racked up 1,033,961 recommendations. That’s a lot of green hearts.</p>
<p>Here are some things I learned from my time with this dataset that can help you reach a wider audience for your writing in 2017.</p>
<h3 id="heading-insight-1-you-dont-have-to-be-famous-to-do-well-on-medium">Insight #1: You don’t have to be famous to do well on Medium</h3>
<p>169 different writers published one of these top-252 stories. Some of those writers had multiple top stories.</p>
<p>Here are the people who wrote more than one top-252 story:</p>
<pre><code>+----------------------+---------+---------------------+|         Name         | Stories | Mostly writes about |+----------------------+---------+---------------------+| Benjamin Hardy       |      <span class="hljs-number">17</span> | Self Improvement    || Quincy Larson        |      <span class="hljs-number">16</span> | Technology          || Jon Westenberg       |      <span class="hljs-number">13</span> | Life                || Darius Foroux        |       <span class="hljs-number">7</span> | Life Lessons        || Julie Zhuo           |       <span class="hljs-number">4</span> | Design              || Sarah Cooper         |       <span class="hljs-number">4</span> | Satire              || Jonathan Z. White    |       <span class="hljs-number">3</span> | Design              || Bill Sourour         |       <span class="hljs-number">3</span> | Programming         || Jessica Semaan       |       <span class="hljs-number">3</span> | Life Lessons        || Jason Fried          |       <span class="hljs-number">3</span> | Business            || Thomas Oppong        |       <span class="hljs-number">3</span> | Life                || Larry Kim            |       <span class="hljs-number">3</span> | Productivity        || Gary Vaynerchuk      |       <span class="hljs-number">3</span> | Entrepreneurship    || Chris Dixon          |       <span class="hljs-number">3</span> | Technology          || Amanda Rosenberg     |       <span class="hljs-number">3</span> | Humor               || Andy Raskin          |       <span class="hljs-number">2</span> | Marketing           || Charles Scalfani     |       <span class="hljs-number">2</span> | Programming         || Chris Messina        |       <span class="hljs-number">2</span> | Design              || James Altucher       |       <span class="hljs-number">2</span> | Life                || John Fawkes          |       <span class="hljs-number">2</span> | Productivity        || John Saito           |       <span class="hljs-number">2</span> | Design              || Marc Cenedella       |       <span class="hljs-number">2</span> | Business            || Tobias Van Schneider |       <span class="hljs-number">2</span> | Design              |+----------------------+---------+---------------------+
</code></pre><p>The only person on this list whom I’d heard of before reading their work here on Medium is Chris Dixon, a well-known tech blogger.</p>
<p>You may recognize some of these names if you’re in their field, but I doubt you’d recognize these people if you ran into them at the super market. They may be “internet famous” but they’re a far cry from household names.</p>
<p>If you can write consistently useful stories and gradually build a following, you can crack this list, too.</p>
<h3 id="heading-insight-2-medium-is-a-serious-place">Insight #2: Medium is a serious place</h3>
<p>Here are the most common tags among these top 252 stories:</p>
<pre><code>+------------------+-------------+------------+|       Tag        |   Stories   | Percentage |+------------------+-------------+------------+| Startup          |          <span class="hljs-number">62</span> | <span class="hljs-number">25</span>%        || Tech             |          <span class="hljs-number">47</span> | <span class="hljs-number">19</span>%        || Life Lessons     |          <span class="hljs-number">45</span> | <span class="hljs-number">18</span>%        || Entrepreneurship |          <span class="hljs-number">37</span> | <span class="hljs-number">15</span>%        || Design           |          <span class="hljs-number">34</span> | <span class="hljs-number">13</span>%        || Self improvement |          <span class="hljs-number">31</span> | <span class="hljs-number">12</span>%        || Productivity     |          <span class="hljs-number">26</span> | <span class="hljs-number">10</span>%        || Politics         |          <span class="hljs-number">21</span> | <span class="hljs-number">8</span>%         || Programming      |          <span class="hljs-number">18</span> | <span class="hljs-number">7</span>%         || UX               |          <span class="hljs-number">18</span> | <span class="hljs-number">7</span>%         || JavaScript       |          <span class="hljs-number">10</span> | <span class="hljs-number">4</span>%         || Web Development  |          <span class="hljs-number">10</span> | <span class="hljs-number">4</span>%         |+------------------+-------------+------------+
</code></pre><p>The following topics — which are the basis of most popular magazines — occurred zero times:</p>
<ul>
<li>sports</li>
<li>fitness</li>
<li>cars</li>
<li>weddings</li>
<li>gaming</li>
<li>homes</li>
<li>food</li>
<li>celebrities</li>
<li>finance</li>
</ul>
<p>“Humor” occurred 9 times, and “satire” 5 times. But that’s about it.</p>
<p>It seems that most people read Medium to:</p>
<ul>
<li>get motivated</li>
<li>learn more about their field</li>
</ul>
<p>Judging by this dataset, the stereotype of Medium’s readership as developer-designer-hustlers isn’t all that far from the truth.</p>
<h3 id="heading-insight-3-you-should-definitely-try-to-get-your-story-into-a-publication">Insight #3: You should definitely try to get your story into a publication</h3>
<pre><code>+----------------------+---------+-----+----------------+|      Publication     | Stories |  %  |     Topic      |+----------------------+---------+-----+----------------+| Not <span class="hljs-keyword">in</span> a publication |      <span class="hljs-number">67</span> | <span class="hljs-number">26</span>% | n/a            || The Mission          |      <span class="hljs-number">52</span> | <span class="hljs-number">21</span>% | Productivity   || Free Code Camp       |      <span class="hljs-number">30</span> | <span class="hljs-number">12</span>% | Technology     || Signal VS Noise      |       <span class="hljs-number">7</span> | <span class="hljs-number">3</span>%  | Startups       || Hi My name is Jon    |       <span class="hljs-number">4</span> | <span class="hljs-number">2</span>%  | Jon Westenberg || Slackjaw             |       <span class="hljs-number">4</span> | <span class="hljs-number">2</span>%  | Humor          || Startup Grind        |       <span class="hljs-number">4</span> | <span class="hljs-number">2</span>%  | Startups       || Year <span class="hljs-keyword">of</span> Looking Glass|       <span class="hljs-number">4</span> | <span class="hljs-number">2</span>%  | Julie Zhuo     || The Startup          |       <span class="hljs-number">4</span> | <span class="hljs-number">2</span>%  | Startups       || Be Yourself          |       <span class="hljs-number">3</span> | <span class="hljs-number">1</span>%  | Life           || Art <span class="hljs-keyword">of</span> Practicality  |       <span class="hljs-number">3</span> | <span class="hljs-number">1</span>%  | Productivity   || Conquer Corp America |       <span class="hljs-number">3</span> | <span class="hljs-number">1</span>%  | Productivity   || Personal Growth      |       <span class="hljs-number">2</span> | <span class="hljs-number">1</span>%  | Productivity   || The Coffeelicious    |       <span class="hljs-number">2</span> | <span class="hljs-number">1</span>%  | Startups       || Development <span class="hljs-built_in">Set</span>      |       <span class="hljs-number">2</span> | <span class="hljs-number">1</span>%  | Education      || UX Design            |       <span class="hljs-number">2</span> | <span class="hljs-number">1</span>%  | UX             |+----------------------+---------+-----+----------------+
</code></pre><p>A vast majority of the top 252 stories were published in one of Medium’s publications.</p>
<p>If you think about this for a moment, it makes perfect sense. These stories showed up not only in the news feeds of the readers who followed their authors, but also readers who followed the publication.</p>
<p>And some of these publications have <a target="_blank" href="http://toppub.xyz/">a lot of followers</a>.</p>
<h3 id="heading-insight-4-personal-stories-do-better">Insight #4: Personal stories do better</h3>
<p>Here’s a lexical analysis of the most common words in the titles of the top 252 stories. I’ve filtered out stop words like “the” and “of.”</p>
<pre><code>+-------+-----------------+| Count |      word       |+-------+-----------------+|    <span class="hljs-number">42</span> |  you            ||    <span class="hljs-number">39</span> |  i              ||    <span class="hljs-number">30</span> |  how            ||    <span class="hljs-number">24</span> |  your           ||    <span class="hljs-number">16</span> |  about          ||    <span class="hljs-number">15</span> |  my             ||    <span class="hljs-number">14</span> |  people         ||    <span class="hljs-number">14</span> |  life           ||    <span class="hljs-number">12</span> |  why            ||    <span class="hljs-number">11</span> |  design         ||    <span class="hljs-number">10</span> |  me             ||     <span class="hljs-number">9</span> |  trump          ||     <span class="hljs-number">9</span> |  read           ||     <span class="hljs-number">9</span> |  learn          ||     <span class="hljs-number">8</span> |  time           ||     <span class="hljs-number">7</span> |  <span class="hljs-keyword">new</span>            ||     <span class="hljs-number">7</span> |  letter         ||     <span class="hljs-number">6</span> |  yourself       ||     <span class="hljs-number">6</span> |  live           ||     <span class="hljs-number">6</span> |  job            ||     <span class="hljs-number">6</span> |  better         ||     <span class="hljs-number">5</span> |  year           ||     <span class="hljs-number">5</span> |  white          ||     <span class="hljs-number">5</span> |  silicon valley ||     <span class="hljs-number">5</span> |  stop           ||     <span class="hljs-number">5</span> |  never          ||     <span class="hljs-number">5</span> |  most           ||     <span class="hljs-number">5</span> |  f***           ||     <span class="hljs-number">5</span> |  free           ||     <span class="hljs-number">5</span> |  apps           ||     <span class="hljs-number">4</span> |  world          ||     <span class="hljs-number">4</span> |  work           ||     <span class="hljs-number">4</span> |  websites       ||     <span class="hljs-number">4</span> |  web            ||     <span class="hljs-number">4</span> |  successful     ||     <span class="hljs-number">4</span> |  smarter        ||     <span class="hljs-number">4</span> |  open           ||     <span class="hljs-number">4</span> |  javascript     ||     <span class="hljs-number">4</span> |  hard           ||     <span class="hljs-number">4</span> |  guide          ||     <span class="hljs-number">4</span> |  f******        ||     <span class="hljs-number">4</span> |  code           ||     <span class="hljs-number">3</span> |  wish           ||     <span class="hljs-number">3</span> |  technology     ||     <span class="hljs-number">3</span> |  startup        ||     <span class="hljs-number">3</span> |  secret         ||     <span class="hljs-number">3</span> |  quit           ||     <span class="hljs-number">3</span> |  productivity   ||     <span class="hljs-number">3</span> |  programming    ||     <span class="hljs-number">3</span> |  powerful       ||     <span class="hljs-number">3</span> |  medium         ||     <span class="hljs-number">3</span> |  love           ||     <span class="hljs-number">3</span> |  future         ||     <span class="hljs-number">3</span> |  development    ||     <span class="hljs-number">3</span> |  developer      ||     <span class="hljs-number">3</span> |  designer       ||     <span class="hljs-number">3</span> |  career         ||     <span class="hljs-number">3</span> |  business       |+-------+-----------------+
</code></pre><p>The words “you” and “I” were by far the most common, which suggests that addressing the reader directly as an individual person is a better writing strategy than writing in third person.</p>
<p>The most common words that fell outside of the 100 <a target="_blank" href="https://en.wikipedia.org/wiki/Most_common_words_in_English">most common English language words</a> were “life” and “design.”</p>
<p>Speaking of English, all but three of the top 252 stories were written in English.</p>
<h3 id="heading-insight-5-you-dont-need-to-cuss-to-get-peoples-attention">Insight #5: You don’t need to cuss to get people’s attention</h3>
<p>Many people complain about the abundance of profanity in Medium headlines.</p>
<p>While it’s certainly present, the “F” word and its variants only occurred 13 times in top-252 headlines, and the “S” word only occurred 3 times.</p>
<h3 id="heading-insight-6-listacles-still-exist-but-they-dont-dominate-medium">Insight #6: “Listacles” still exist, but they don’t dominate Medium</h3>
<p>Only 23 of the top 252 stories were explicitly “listacles” — bullet-point-driven stories.</p>
<p>These stories have headlines that follow the pattern of “[number] things you should do before you [time].”</p>
<p>Full disclosure: one of these listacles is my story about <a target="_blank" href="https://medium.freecodecamp.com/linux-is-25-yay-lets-celebrate-with-25-rad-facts-about-linux-c8d8ac30076d#.tzo9h78jr">Linux turning 25</a>.</p>
<p>But overall, I’d say the decline of listacles is a good thing.</p>
<p>My personal advice to writers is to focus on stories that dive deep into a single topic.</p>
<h3 id="heading-insight-7-7-minutes-is-still-an-ideal-story-length">Insight #7: 7 minutes is still an ideal story length</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/HzH8seT2kuP-Kn3NVOUqcEfvFvfF6AV4MZzr" alt="Image" width="700" height="500" loading="lazy"></p>
<p>The top 252 stories averaged 6.7 minutes in length — the same length that Medium’s data science team determined was optimal <a target="_blank" href="https://medium.com/data-lab/the-optimal-post-is-7-minutes-74b9f41509b#.gjnp22pis">back in 2014</a>.</p>
<h3 id="heading-insight-8-include-images">Insight #8: Include images.</h3>
<p>Only 16 of the top stories didn’t have any images.</p>
<p>The median number of images a story included was 3.</p>
<p>Don’t worry about over-doing it with images, either. 11% of stories used 10 or more images, and two of them used more than 50 images.</p>
<h3 id="heading-insight-9-it-definitely-helps-to-have-a-lot-of-followers">Insight #9: It definitely helps to have a lot of followers</h3>
<p>The median number of followers these authors had as of year’s end was 6,809.</p>
<p>Even if you don’t yet have a lot of followers, there’s still hope of cracking 2017’s top stories. 29 of the authors had less than 2,000 followers, which you can reach in a matter of months if you manage to write a few popular stories.</p>
<p>The best way to get people to follow you is to remind them to follow you.</p>
<p>If someone reads all the way to the bottom of your article, it’s fair (and well within Medium’s terms of service) to remind them to follow you.</p>
<h3 id="heading-insight-10-dont-disable-responses">Insight #10: Don’t disable responses.</h3>
<p>Only 6 of the top stories had disabled responses.</p>
<p>Imagine someone’s reading your story and thinks of something insightful to add. They scroll to the bottom of your story only to discover that they can’t share their thoughts because you’ve disabled responses.</p>
<p>Are they going to recommend your story? I sure wouldn’t.</p>
<p>Don’t hinder the discourse around your story. Allow your readers to respond to you.</p>
<h3 id="heading-now-lets-get-back-to-writing">Now let’s get back to writing</h3>
<p>A huge thanks to <a target="_blank" href="https://www.freecodecamp.org/news/what-i-learned-from-analyzing-the-top-253-medium-stories-of-2016-9f5f1d0a2d1c/undefined">Levent Aşkan</a>, who put in the time compiling these top 252 Medium stories. You can read his story about them <a target="_blank" href="https://medium.com/startup-grind/mediums-most-recommended-stories-of-2016-171efdd705c5#.jlfo409vs">here</a>.</p>
<p>Also, thanks to <a target="_blank" href="https://www.freecodecamp.org/news/what-i-learned-from-analyzing-the-top-253-medium-stories-of-2016-9f5f1d0a2d1c/undefined">Kande Bonfim</a> for further expanding upon Levent’s dataset.</p>
<p>And if you’re interested in getting more readers in 2016, check out my <a target="_blank" href="https://medium.freecodecamp.com/how-to-write-medium-stories-people-will-actually-read-92e58a27c8d8#.n4ps93qhe">tips for writing stories on Medium that people will read</a>.</p>
<p><a target="_blank" href="https://medium.freecodecamp.com/how-to-write-medium-stories-people-will-actually-read-92e58a27c8d8"><strong>How to write Medium stories people will actually read</strong></a><br><a target="_blank" href="https://medium.freecodecamp.com/how-to-write-medium-stories-people-will-actually-read-92e58a27c8d8">_More than 30 million people use Medium each month. They come here in search of something worth reading. Something…_medium.freecodecamp.com</a></p>
<p>And my unofficial <a target="_blank" href="https://medium.freecodecamp.com/a-style-guide-for-writing-on-medium-fcbad27492ea#.hxj5qm1vw">style guide for Medium</a>:</p>
<p><a target="_blank" href="https://medium.freecodecamp.com/a-style-guide-for-writing-on-medium-fcbad27492ea"><strong>A style guide for writing on Medium</strong></a><br><a target="_blank" href="https://medium.freecodecamp.com/a-style-guide-for-writing-on-medium-fcbad27492ea">_After spending more than 1,000 hours writing and editing stories for our Medium publication, I’ve decided to create…_medium.freecodecamp.com</a></p>
<p>Cheers, and happy writing!</p>
<p><strong>I only write about programming and technology. If you <a target="_blank" href="https://twitter.com/ossia">follow me on Twitter</a> I won’t waste your time. ?</strong></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ A style guide for writing on Medium ]]>
                </title>
                <description>
                    <![CDATA[ After spending more than 1,000 hours writing and editing stories for our Medium publication, I’ve decided to create this living style guide for contributors. Feel free to use it for your publication as well. Headlines These are the most important par... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/a-style-guide-for-writing-on-medium-fcbad27492ea/</link>
                <guid isPermaLink="false">66b8d20da9dc72a08aefaf21</guid>
                
                    <category>
                        <![CDATA[ Life lessons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ medium ]]>
                    </category>
                
                    <category>
                        <![CDATA[ startup ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ writing ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Quincy Larson ]]>
                </dc:creator>
                <pubDate>Mon, 17 Oct 2016 19:14:10 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*nuobF42W04iSFbp12I1lfA.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>After spending more than 1,000 hours writing and editing stories for our Medium publication, I’ve decided to create this living style guide for contributors. Feel free to use it for your publication as well.</p>
<h3 id="heading-headlines">Headlines</h3>
<p>These are the most important part of your story, and you should put some serious thought into them.</p>
<p>Don’t use clickbait:</p>
<p>“You won’t believe this one ridiculously effective headline dark pattern”</p>
<p>Don’t use listicles:</p>
<p>“11 outrageous headlines that will compel people to read your Medium story”</p>
<p>Do tell the truth:</p>
<p>“Clever but matter-of-fact headline about an interesting topic”</p>
<p>Don’t label stories that are part 1 of a series “part 1.” It scares people off, as they will perceive reading it to be a bigger time commitment. And who knows when you’ll get around to writing part 2, anyway.</p>
<p>Also, if your headline is too long, Medium will truncate it. Long headlines can also prevent your top image from appearing in news feeds.</p>
<h3 id="heading-images">Images</h3>
<p>Medium offers four different image widths. Note that these will all look the same on mobile.</p>
<p>Most of the time, you’ll want to stick with column width:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*akB3u2t_52nVjR3YMk36Kg.jpeg" alt="Image" width="800" height="533" loading="lazy"></p>
<p>If you have a chart that is hard to read when it’s small, go bigger:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*akB3u2t_52nVjR3YMk36Kg.jpeg" alt="Image" width="800" height="533" loading="lazy"></p>
<p>And if you’re really proud of an image, or if it’s chock full of interesting data, go full-bleed:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*akB3u2t_52nVjR3YMk36Kg.jpeg" alt="Image" width="800" height="533" loading="lazy"></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*akB3u2t_52nVjR3YMk36Kg.jpeg" alt="Image" width="800" height="533" loading="lazy"></p>
<p>… and then there’s side straddle. Don’t use this size at all, because it makes the text less comfortable to read.</p>
<p>It’s also awkward when you’re done talking about the photo and your text is still pushed to the side.</p>
<p>Yeah. I’m still stuck over here.</p>
<p>Always include a high-resolution image at the top of a story under your headline. This has the following benefits:</p>
<ol>
<li>When people share your story on Facebook and Twitter, it will be more prominent in news feeds, making people more likely to click on it.</li>
<li>It will look better in Medium’s own news feeds.</li>
<li>Humans are visual creatures, and click on images.</li>
</ol>
<h3 id="heading-attribution">Attribution</h3>
<p>The simplest way to attribute an image is to put the words “Image credit” below an image, and link this text to its original source.</p>
<p>In some cases, this might not prove enough for an image right holder. In practice, though, most magazines and movie studios have better things to do than send cease and desist letters to people who merely attributed their copyrighted images.</p>
<p>If you’re looking for images you can safely use without permission, check out <a target="_blank" href="https://www.pexels.com/">Pexels</a>, <a target="_blank" href="https://unsplash.com/">Unsplash</a>, or search Google for images labeled for re-use.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*Qf6_zsIAM1WYhL93yqoP0g.png" alt="Image" width="794" height="419" loading="lazy">
<em>A Google image search query with the “Labeled for reuse” option selected.</em></p>
<p>Plagiarism — misrepresenting someone else’s writing as your own — is a serious offense in college, and it’s just as serious on Medium. Always attribute quotes to the people who originally said them. If it’s a multi-line quote, you should use Medium’s pull quotes:</p>
<blockquote>
<p>“When you have wit of your own, it’s a pleasure to credit other people for theirs.”<br>― <strong>Criss Jami</strong></p>
</blockquote>
<p>Note that you should not use pull quotes under any other circumstances, as they make the text harder to read. Resist the temptation to use pull quotes to quote your own story, or to tease something you’re about to say anyway. This is self-aggrandizing and wastes your readers’ time.</p>
<h3 id="heading-code">Code</h3>
<p>Where possible, code should be in text form rather than images. This makes the code more <a target="_blank" href="https://medium.freecodecamp.com/looking-back-to-what-started-it-all-731ef5424aec">accessible to screen readers</a>, and easier for people to copy and paste. Here’s how you can do this:</p>
<p><a target="_blank" href="https://medium.freecodecamp.com/how-to-add-code-to-medium-and-get-syntax-highlighting-d699761a5883"><strong>How to add code blocks to Medium and use embed tools for syntax highlighting</strong></a><br><a target="_blank" href="https://medium.freecodecamp.com/how-to-add-code-to-medium-and-get-syntax-highlighting-d699761a5883">_Medium has a hidden shortcut that will turn text plain text…_medium.freecodecamp.com</a></p>
<h3 id="heading-links">Links</h3>
<p>Figure out a way to work a link into a sentence. If a link is vital to a story, put it on its own line and press enter. This will create a preview card, like this:</p>
<p><a target="_blank" href="https://medium.freecodecamp.com/how-to-stand-on-shoulders-16e8cfbc127b"><strong>How to stand on the shoulders of giants</strong></a><br><a target="_blank" href="https://medium.freecodecamp.com/how-to-stand-on-shoulders-16e8cfbc127b">_Conquer Not Invented Here Syndrome, then do something new._medium.freecodecamp.com</a></p>
<p>Underlining text makes it harder to read, so only hyperlink a few words.</p>
<p>Don’t paste URLS directly, like this: <a target="_blank" href="https://www.example.com">http://www.example.com</a></p>
<p>Do use their top-level domains if it’s a part of their brand, like <a target="_blank" href="http://www.example.com">art.com</a>.</p>
<h3 id="heading-embedding-media">Embedding media</h3>
<p>You can embed Tweets, YouTube videos, and other media by pasting their URLs into Medium on a new line, then pressing enter.</p>
<p>Use these sparingly, since they may distract your reader from finishing your story.</p>
<h3 id="heading-acronyms">Acronyms</h3>
<p>Don’t use an acronym unless the acronym is more widely understood than what it stands for. For example, HTTP is more widely recognized than Hypertext Transfer Protocol.</p>
<p>If an acronym isn’t already widely understood, and you’re going to refer to it more than a few times, you can define it as an acronym by doing this:</p>
<p>“Let’s break the code down into an <a target="_blank" href="https://en.wikipedia.org/wiki/Abstract_syntax_tree">Abstract Syntax Tree</a> (AST).”</p>
<p>Here I also linked to the Wikipedia article, for readers’ convenience. Don’t assume people will read these external links, though. You still need to define concepts or illustrate them through example.</p>
<p>Avoid defining an acronym in your opening paragraphs, as it slows your reader down and makes them less likely to continue reading.</p>
<p>Here’s the very short list of technology acronyms that you don’t need to define: API, AJAX, BIOS, CPU, CSS, HTML, HTTPS, LAN, RAM, REST, USB, WWW, XML. For everything else, you should spell it out.</p>
<p>Always spell out short multi-part words like JavaScript and front-end. Don’t shorten them — the brevity isn’t worth the possible confusion.</p>
<h3 id="heading-text-formatting">Text Formatting</h3>
<p>You can use bold or italic — never both — to place emphasis on a few words. These slow the reader down, and should be used sparingly. Don’t use bold or italic on links. These already stand out due to the underline.</p>
<p>Don’t use drop caps. They look elegant in old books, but silly on the web.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*FwHC7L-4Uvgc0jb6OwlCqg.jpeg" alt="Image" width="500" height="330" loading="lazy">
<em>Some old-school-cool print dropcaps</em></p>
<p>If you want to emphasize something, use <strong>bold</strong>. <em>Italics are harder to read.</em> Don’t bold hyperlinks — the line underneath them already provides enough emphasis.</p>
<p>Only use one exclamation point, typically only after exclamations like: Golly gee! Hot dog!</p>
<p>Put commas and periods inside quotes, except when it might confuse a reader (like with variable names or book titles).</p>
<p>In some parts of the world, people put spaces before colons, like this : example. Don’t do this.</p>
<p>Use English instead of Latin:</p>
<ul>
<li>Use “for example” instead of “E.G.”</li>
<li>Use “that is” instead of “I.E.”</li>
<li>Use “note that” instead of “N.B.”</li>
<li>Instead of ending lists with “etc.” start them with “like”: “Elvis ate food like bread, peanut butter, and bananas.”</li>
</ul>
<p>According to Google Books, semicolons have been dying a slow death. Let’s put them out of their misery. Just use a period instead and break clauses into separate sentences.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*BPlMVGr2WwjLnv-6iTMWvw.png" alt="Image" width="800" height="293" loading="lazy"></p>
<p>Use the Oxford Comma when possible. It’s makes things easier, clearer, and prettier to read.</p>
<h3 id="heading-style">Style</h3>
<p>Use the <a target="_blank" href="http://www.hemingwayapp.com/">Hemingway App</a>. There’s nothing magical about this simple tool, but it will automatically detect widely agreed-upon style issues:</p>
<ul>
<li>passive voice</li>
<li>unnecessary adverbs</li>
<li>words that have more common equivalents</li>
</ul>
<p>The Hemingway App will assign a “grade level” for your writing. Even technical stories can pull off a grade level of 6. And they should aspire to.</p>
<p>Most humans are not native English speakers, and the ones who are don’t usually sit around reading Chaucer all day. They want their information accessible and to the point.</p>
<p>Err on the side of breaking long sentences and paragraphs down into shorter ones.</p>
<p>Use contractions. They’ll make your prose seem more conversational. That’s always a plus.</p>
<p>Keep your tense consistent throughout. If you’re talking about something that occurred in past, use past tense.</p>
<p>Refer to your reader as “you” — not “we” or “us.” “We” are not going to do this tutorial, your reader is going to read your tutorial and do it on their own.</p>
<p>Also, <strong>front-end</strong> development (adjective form with a dash) is when you working on the <strong>front end</strong> (noun form with no dash). The same goes with the back end, full stack, and many other compound terms.</p>
<h3 id="heading-final-advice">Final advice</h3>
<p>Remember that when you publish on Medium, you’re asking thousands of people to give you several minutes of their lives. Don’t take your readers for granted.</p>
<p>Before you publish a story, I recommend you sleep, wake up, then proof-read it again.</p>
<p>If you aren’t a native English speaker and are writing in English, ask a native speaker to proof-read your story before submitting it to a publication.</p>
<p>When you submit your story to a publication, you should expect for editors to actually edit it. Remember that these people spend a lot more time editing stories than you do, and have a more evolved sense of “what works.” But don’t let this stop you from asking questions and correcting any factual inaccuracies they may introduce.</p>
<p>Be wary of publications that publish your story without making any edits. If they didn’t bother editing it (or even reading it?), they probably won’t put much effort into publicizing it, either.</p>
<p>Oh, and don’t open your story with “This was published on my blog at” or “update: this has been posted on Hacker News.” If you choose to add notes like this, put them at the very bottom of your story. People didn’t click through to your story only to be immediately sent away — they came to read your story.</p>
<p>Note that freeCodeCamp itself is no longer publishes on Medium. Instead we publish here. Here's <a target="_blank" href="https://www.freecodecamp.org/news/developer-news-style-guide/">how to get published in freeCodeCamp's publication</a>.</p>
<p>If you want to learn more about effective writing on Medium itself, read <a target="_blank" href="https://medium.freecodecamp.com/how-to-write-medium-stories-people-will-actually-read-92e58a27c8d8">How to write Medium stories people will actually read</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to display code blocks in Medium ]]>
                </title>
                <description>
                    <![CDATA[ And how to write inline code and embed code for syntax highlighting Medium makes it easy to add code blocks and inline Medium has a hidden shortcut that will turn text plain text… if (developer === true) { follow(this.mediumPublication); } …into a fo... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-add-code-to-medium-and-get-syntax-highlighting-d699761a5883/</link>
                <guid isPermaLink="false">66b8d3cd1a59d9c56a518be1</guid>
                
                    <category>
                        <![CDATA[ medium ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Quincy Larson ]]>
                </dc:creator>
                <pubDate>Sun, 18 Sep 2016 17:49:26 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*SKIAmwDYVnrMvFOopOCwPQ.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <h4 id="heading-and-how-to-write-inline-code-and-embed-code-for-syntax-highlighting">And how to write inline code and embed code for syntax highlighting</h4>
<p>Medium makes it easy to add code blocks and inline</p>
<h4 id="heading-medium-has-a-hidden-shortcut-that-will-turn-text-plain-text">Medium has a hidden shortcut that will turn text plain text…</h4>
<p>if (developer === true) {</p>
<p>follow(this.mediumPublication);</p>
<p>}</p>
<h4 id="heading-into-a-formatted-code-block">…into a formatted code block:</h4>
<pre><code><span class="hljs-keyword">if</span> (developer === <span class="hljs-literal">true</span>) {
</code></pre><pre><code>  follow(<span class="hljs-built_in">this</span>.mediumPublication);
</code></pre><pre><code>}
</code></pre><p>To accomplish this, select the text, then push:</p>
<ul>
<li><strong>Windows</strong>: Control + Alt + 6</li>
<li><strong>Mac</strong>: Command + Option + 6</li>
<li><strong>Linux</strong>: Control + Alt + 6</li>
</ul>
<p><strong>Update October 19, 2016:</strong> Medium also now supports the common convention of starting a code block with triple back-ticks. If you type ``` on a new line, Medium will now switch to code input mode. A huge thanks to <a target="_blank" href="https://www.freecodecamp.org/news/how-to-add-code-to-medium-and-get-syntax-highlighting-d699761a5883/undefined">Luke Esterkyn</a> and the rest of the Medium team for implementing this!</p>
<p>You can also highlight code inline by selecting it, then clicking the backtick key (<code>). For example, you can format text as code</code>freeCodeCamp()`right in the middle of a sentence.</p>
<p>You can also embed GitHub gists by pasting their URL into a blank line, then pressing enter:</p>
<h3 id="heading-how-to-embed-web-apps">How to Embed web apps</h3>
<p>As a bonus, you can embed runnable apps right into Medium. Just in case these don’t render properly in Medium’s mobile apps, I recommend including links below each of the embeds as a fallback.</p>
<p>Paste a CodePen.io URL into Medium, then hit enter:</p>
<p><em>View my CodePen <a target="_blank" href="http://codepen.io/FreeCodeCamp/pen/NNvBQW">here</a>.</em></p>
<p>You can also do this with JSFiddle.net:</p>
<p><em>View my JSFiddle <a target="_blank" href="https://jsfiddle.net/avegt5e5/3/">here</a>.</em></p>
<h3 id="heading-but-dont-use-images-of-code">But don’t use images of code.</h3>
<p>Even though it may seem convenient to take screenshots of your code and paste them into Medium, don’t do this.</p>
<p>Medium doesn’t yet have an alt-text option, so this will make your code completely inaccessible to developers who are visually impaired. And yes, <a target="_blank" href="https://medium.freecodecamp.com/looking-back-to-what-started-it-all-731ef5424aec#.fae9jgbx6">they are out there</a>.</p>
<p>You also can’t change the font size of a static images, which makes it a pain to read on a mobile phone (which is where most people read Medium).</p>
<p>Finally, this makes it impossible for readers to copy and paste your code.</p>
<p>I know, I know — you shouldn’t copy and paste code anyway.</p>
<p>But let’s face it — people do. And most people will quickly abandon your tutorial if faced with the prospect of manually typing out lots of code.</p>
<p>So to recap:</p>
<ul>
<li>use Medium’s native code blocks</li>
<li>or embed GitHub gists</li>
<li>use working examples from CodePen and JSFiddle where possible</li>
<li>but don’t paste images of code</li>
</ul>
<p>Happy coding and writing about coding!</p>
<p><strong>I only write about programming and technology. If you <a target="_blank" href="https://twitter.com/ossia">follow me on Twitter</a> I won’t waste your time. ?</strong></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to read more efficiently with RSS ]]>
                </title>
                <description>
                    <![CDATA[ By Naman Kamra Rich Site Summary (RSS) was developed way back in 1999 as a way to quickly subscribe to blogs and newspapers, back before tools like Twitter feeds made it so easy to find and read articles. Over the last 17 years, RSS has largely faded... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/why-an-rss-reader-can-increase-your-productivity-5x-and-how-to-use-it-f4356ab2bcfb/</link>
                <guid isPermaLink="false">66c36679139b845d61e84bce</guid>
                
                    <category>
                        <![CDATA[ Blogger ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Life lessons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ medium ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ reading ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 29 Jul 2016 04:49:34 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*HOQAsv5Z1V5KdSF1uGUQIA.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Naman Kamra</p>
<p>Rich Site Summary (RSS) was developed way back in 1999 as a way to quickly subscribe to blogs and newspapers, back before tools like Twitter feeds made it so easy to find and read articles.</p>
<p>Over the last 17 years, RSS has largely faded from popular usage, but developers never stopped working on it. Today, if you want to streamline your information diet, RSS offers tons of advanced tools that make consuming content a breeze.</p>
<h3 id="heading-you-can-either-actively-discover-content-or-passively-stumble-upon-it">You can either actively discover content or passively stumble upon it.</h3>
<p>Lets say you decide you want to learn to code. You go to Google and search “learn to code for free.” You find Free Code Camp on the first page of the Google results, sign up, and start progressing through its coding challenges. This is called <strong>active discovery.</strong></p>
<p>Now lets say you were just browsing Facebook and you see one of your friends talking about Free Code Camp. This is called <strong>passive discovery</strong>. You click on the link, bookmark it, then move on with your Facebook-ing, only to never get around to visiting the site again.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/cqcfRc6oKVAM5SEaEzUKCjdnGVvMclzDyQeI" alt="Image" width="449" height="143" loading="lazy">
<em>My bookmarks. Don’t end up like me.</em></p>
<p>These examples demonstrate why even if you stumble upon something relevant in social media, you can still end up wasting time. If you don’t have time then and there, you will most likely open a tab or bookmark it. You’ll never get back to, because if you’re busy now, you’re likely to be just as busy later. Contrast this with a google search, which you’ll only do at the exact moment that you need something.</p>
<h3 id="heading-enter-the-rss-feed-reader">Enter the RSS feed reader</h3>
<p>You know how you get a notification when a friend tags on Facebook? Well, you can get the exact same sort of notification from an RSS feed reader when a friend publishes a new article on their blog. Here’s the <a target="_blank" href="https://chrome.google.com/webstore/detail/rss-feed-reader/pnjaodmkngahhkoihejjehlcdlnohgmp?hl=en">RSS feed reader</a> Chrome extension that I use on my desktop.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/k0KBIgZ6fxEYyRNKjwcOfh4DvBEkDBWj7h2R" alt="Image" width="349" height="488" loading="lazy">
<em>My frequently visited blogs</em></p>
<p>This will add a nice little icon on your chrome extensions bar, and every time you are on a blog where a feed exists, there will be a little “+” sign so you can “subscribe” to it.</p>
<p>Let’s say you are looking to form better habits, and you find a nice blog about habits like <a target="_blank" href="http://jamesclear.com">James Clear’s blog</a>. Now, thanks to this Chrome extension, you can just click the + sign and it will add that blog to your feed.</p>
<p>From this point on, whenever James Clear writes an article, you will have a pending notification on that bar until you mark it as read or — better yet — go and read it.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/VwHn23MmuKnglANDNXLL8fNuA-KOldAf6f1C" alt="Image" width="350" height="481" loading="lazy">
<em>Free Code Camp’s latest articles</em></p>
<p>Notice how I have subscribed to Free Code Camp’s Medium articles? That’s right — you can even subscribe to your favorite Medium publications, all in one place. This means you won’t have to open Medium and scroll through your its news feed just to find posts from your favorite publications.</p>
<p>Subscribing to blogs in this way saves you massive amounts of time, because you are targeting what you want to read. You can even see the titles, so you never have to open the website only to find out that you’re not interested its newest content.</p>
<h4 id="heading-using-folders-and-the-dribbble-trick">Using folders and the Dribbble Trick</h4>
<p>And that’s not all! You can even make folders, then combine your thematically similar blogs to better manage them. This often helps me when I am trying to focus one particular topic, and looking for inspiration.</p>
<p>Do you use <a target="_blank" href="https://dribbble.com/">Dribbble</a> for inspiration? Me too! And I follow a lot of designers there. With RSS, you can create folders for Dribbble feeds for individuals designers, so you’ll be the first to know whenever your favorite designers post new content.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/aCEyWx2MbVyfEvRzH1amLM4lbL2AfGKt5nzf" alt="Image" width="353" height="402" loading="lazy">
<em>People I follow on Dribbble and their new Dribbble shots (the green notifications boxes)</em></p>
<p>You can do the same for <a target="_blank" href="http://materialup.com">Material UP</a> inspiration.</p>
<p>The Chrome extension comes packed with lots of other useful features, like the ability to star certain blogs combine them, and even subscribe to podcasts.</p>
<p>And if you prefer emails to notifications, you can configure this extension to send you emails about particular blogs, and at designated times of your day when you’re likely free to read them.</p>
<h3 id="heading-you-should-stop-passively-surfing">You should stop passively surfing.</h3>
<p>According to a CNN <a target="_blank" href="http://edition.cnn.com/2015/11/03/health/teens-tweens-media-screen-use-report/">report</a>, teens spend up to nine hours a day on social media, and check their news feeds up to 100 times a day.</p>
<p>Now, if I didn’t know any better, I would assume that adults are not like teens, and place a higher value on their time. They wouldn’t end spend their days constantly checking social media.</p>
<p>But the reality is, as adults, we end up spending a lot of our time checking our social media instead of actively searching for content that is immediately relevant to us.</p>
<p>When we say we are “surfing the web,” what we are really doing is stumbling upon links which have nice clickbait headlines, only to later realize that the content didn’t teach us anything new. Nor was it relevant to whatever task we were trying to accomplish at the time.</p>
<p>We often find ourselves scrolling through our Facebook news feeds, clicking links our friends have shared, worried that if we don’t do this we may “miss out” on something.</p>
<p>But in all reality, little of this content is essential. Productivity enthusiasts are quick to point out that this “fear of missing out” is misplaced, and that most such content won’t make any real difference in our lives.</p>
<h3 id="heading-the-problem-with-email-lists">The problem with email lists.</h3>
<p>The biggest reason for the decline in popularity of the RSS feeds has been that websites have shifted to manually sending you email newsletters with links to their recent blog posts.</p>
<p>It’s nice to stumble upon a website and be able to stay up-to-date by simply giving them an email address. But if they are not the subtle type, and start bombarding me with emails every day, I am going to feel overloaded at first, then eventually unsubscribe.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/58MMCZfLEa0xzLFnyK0AVBFCWD-Z54g0WxvB" alt="Image" width="800" height="156" loading="lazy"></p>
<p>As you can see, getting 10 promotional emails a day isn’t exactly the most fun way to consume blog content. I have my own designated time to read these posts, and if I don’t get to them because I’m working, I will most likely never get back to them.</p>
<p>With RSS, I have a list of all the blogs that I’ve subscribed to, along with how many new articles each has posted since I last checked them. And I can just leave them as unread for now, then approach them later in a more systematic way.</p>
<p>This way, instead of dealing with random emails that pop up in the middle of my workday, or in the middle of the night when I am trying to sleep, all the content I want to read goes to the same place, and I can get to it at my leisure.</p>
<p>Thanks for reading. I hope this article — and RSS feed readers — can help you be more productive. Again, here’s the <a target="_blank" href="https://chrome.google.com/webstore/detail/rss-feed-reader/pnjaodmkngahhkoihejjehlcdlnohgmp?hl=en">free Chrome extension</a> I use for RSS. If you enjoyed this article, make sure to press that green heart to show your support.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to write Medium stories people will actually read ]]>
                </title>
                <description>
                    <![CDATA[ More than 30 million people use Medium each month. They come here in search of something worth reading. Something substantial. And you can give it to them. Medium’s algorithms put you on a level playing field. Your stories can dominate news feeds. Yo... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-write-medium-stories-people-will-actually-read-92e58a27c8d8/</link>
                <guid isPermaLink="false">66b8d4150c9c1d363b7c422c</guid>
                
                    <category>
                        <![CDATA[ Blogger ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Blogging ]]>
                    </category>
                
                    <category>
                        <![CDATA[ medium ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ writing ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Quincy Larson ]]>
                </dc:creator>
                <pubDate>Tue, 12 Jul 2016 16:45:38 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*cNMDhOfOYjhVFNpBhEtOwQ.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>More than 30 million people use Medium each month. They come here in search of something worth reading. Something substantial. And you can give it to them.</p>
<p>Medium’s algorithms put you on a level playing field. Your stories can dominate news feeds. You can crack Medium’s Top Stories list. You can beat out professional writers and celebrities.</p>
<p>I’ll show you how.</p>
<p>But why should you care what some software developer has to say about writing?</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/4TUFBpsYdYGGFUL-vAIDd-ShEQsAge88vUpu" alt="Image" width="315" height="567" loading="lazy">
<em>A screenshot of my Medium stats page.</em></p>
<p>Because over the past 30 days, I’ve averaged 12,000 views per day on my Medium stories. Medium’s readers have recommended my stories 13,000 times. And I’m the editor of one of Medium’s largest publications.</p>
<p>In short, I know what writing works here on Medium.</p>
<p>But good writing won’t help you if you can’t get people’s attention.</p>
<h4 id="heading-weapons-of-mass-attraction">Weapons of mass attraction</h4>
<p>As a writer, you fight a war against indifference. You have to force people to care enough to click through to your story. You have to convince them to take a chance on you.</p>
<p>You have only two weapons against the relentless scroll of news feeds: a headline and an image.</p>
<p>Here’s what a story looks like in Medium’s news feed:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/yKnxLYjt5KSFHUY3NErNSlYkOJR8ZMLgSSU8" alt="Image" width="596" height="452" loading="lazy"></p>
<p>Here’s what it looks like on Facebook:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/nLeGAJGq3pb9ygul9NIbuvkElbhObcaj4syj" alt="Image" width="622" height="454" loading="lazy"></p>
<p>And here’s what it looks like on Twitter:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/x7QTw7M9emwXZ7XYOPddcZFCDIC4Io8AQarA" alt="Image" width="522" height="368" loading="lazy"></p>
<p>Your headline and opening image are the only things people have to judge your story on. Before they can even read your story’s first paragraph, they must answer a question. It’s the same question that we all ask ourselves every day: <strong>is this going to be worth my time?</strong></p>
<p>Your first job as a writer is to choose a headline and image that will make people answer “yes.”</p>
<h4 id="heading-headlines-part-art-part-science">Headlines: part art, part science</h4>
<p>Your headline is the most important part of your story. Spend time refining it.</p>
<p>BuzzFeed built a publishing empire on the back of compelling headlines. Here’s a a <a target="_blank" href="http://minimaxir.com/2015/01/linkbait/">lexical analysis</a> of 60,000 BuzzFeed headlines, and what works best for them.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/crMjDtGYkGPqMBabE8oKQwq3nRdmrE8zylBu" alt="Image" width="800" height="533" loading="lazy"></p>
<p>I am not saying you should use BuzzFeed-like headlines. But you should be aware of them. They’re filled with hyperbole and fear-of-missing-out. Think about what their effectiveness says about human psychology and the nature news feeds.</p>
<p>Here are some types of headlines that work well on Medium:</p>
<ul>
<li>grand pronouncements like “X is over”, “X is broken”, or “X is bull<em>**</em>”</li>
<li>Headlines that use negative words like “stop”, “never”, and “don’t ever <em>__</em> again”</li>
<li>The “I <strong>_</strong> and it was <strong>_</strong>” pattern (for example: “I ate pizza for breakfast and it was glorious”)</li>
</ul>
<p>How long should your headline be? HubSpot <a target="_blank" href="http://blog.hubspot.com/marketing/seo-social-media-study#sm.00000z83pnwr7kdwxvrrsinzxyr7l">analyzed</a> 6,000 blog posts and found that stories with 8 to 14-word headlines get more social media shares.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/l9NXJjN1PQUsbZRD0YQ8xHyVW9lirTMV-mLG" alt="Image" width="800" height="545" loading="lazy"></p>
<p>Another consideration is how emotional a headline is. The more emotional (positive or negative) a headline is, the more likely people will click it.</p>
<p>Here’s a <a target="_blank" href="http://coschedule.com/headline-analyzer">tool</a> that helps you balance the length and sentiment of your headlines.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/M9mSGtUFQg8U2aYl0Qo-v2kfMr7jDfiZwsC6" alt="Image" width="750" height="514" loading="lazy">
<em>A screenshot of the tool’s analysis of this story’s headline. Your mileage my vary.</em></p>
<p>Headlines are traditionally written in “title case.” The Associated Press says to “capitalize the first letter of every word except articles, coordinating conjunctions, and prepositions of three letters or fewer.”</p>
<p>On Medium, I often throw title case out the window and just write headlines like a normal sentence. I even include punctuation as necessary. This format is more conversational, and easier to read.</p>
<h4 id="heading-arresting-images">Arresting Images</h4>
<p>The second most important aspect of your story is its opening image.</p>
<p>Medium assigns your opening image the og-image meta property. This means that your opening image will serve as your story’s ambassador everywhere: social media news feeds, Reddit, Google News — even RSS readers.</p>
<p>For this story, I chose an image of Emma Stone portraying an aspiring journalist at her typewriter in the 1960s. It’s from the popular 2011 period movie “The Help.”</p>
<p>A stock photo of someone sitting at their laptop would have looked too generic. Our news feeds are already filled with these pictures.</p>
<p>If you do want to use stock photos, though, there are a ton of free <a target="_blank" href="http://finda.photo/">creative commons-licensed stock photos</a> you can use in your stories.</p>
<p>I recommend keeping photos thematically consistent throughout your story. Here’s another image of Emma Stone’s character writing. This helps to break up long stretches of text.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/eCIg0oRVTpLW5AO2un5Rmr7qLqK67Zzg1btb" alt="Image" width="800" height="531" loading="lazy"></p>
<p>On one story, I used only images from The Dark Knight trilogy:</p>
<p><a target="_blank" href="https://medium.freecodecamp.com/salary-negotiation-how-not-to-set-a-bunch-of-money-on-fire-605aabbaf84b"><strong>Salary Negotiation: how not to set a bunch of money on fire</strong></a><br><a target="_blank" href="https://medium.freecodecamp.com/salary-negotiation-how-not-to-set-a-bunch-of-money-on-fire-605aabbaf84b">_Pop quiz, hot shot._medium.freecodecamp.com</a></p>
<p>And I only used images of Peggy Olsen from Mad Men for another:</p>
<p><a target="_blank" href="https://medium.freecodecamp.com/youre-underpaid-here-s-how-you-can-get-the-pay-raise-you-deserve-fafcf52956d6"><strong>Getting a raise comes down to one thing: Leverage.</strong></a><br><a target="_blank" href="https://medium.freecodecamp.com/youre-underpaid-here-s-how-you-can-get-the-pay-raise-you-deserve-fafcf52956d6">_Maybe you’ve been at your job for a while, and your salary hasn’t kept pace with your city’s cost of living._medium.freecodecamp.com</a></p>
<p>These stories don’t mention The Dark Knight or Mad Men in their text. The images are there to visually reinforce each story’s message, while lending them flavor.</p>
<blockquote>
<p>A spoonful of images helps the text go down.</p>
</blockquote>
<p>Another popular technique is to emblazon your story’s headline across your opening image. My friend Kristyna did this on the most-recommended story ever on Medium:</p>
<p><a target="_blank" href="https://entrepreneurs.maqtoob.com/the-37-best-websites-to-learn-something-new-895e2cb0cad4"><strong>The 37 Best Websites To Learn Something New</strong></a><br><a target="_blank" href="https://entrepreneurs.maqtoob.com/the-37-best-websites-to-learn-something-new-895e2cb0cad4">_There is absolutely no excuse for you not to master a new skill, expand your knowledge, or eventually boost your career…_entrepreneurs.maqtoob.com</a></p>
<p>Start considering images early in the writing process. And never publish without at least one image. Otherwise your story will be all but invisible in news feeds.</p>
<h4 id="heading-build-momentum-with-a-strong-lead">Build momentum with a strong lead</h4>
<p>Once your reader clicks through to your story, the trial begins. They are looking for any excuse to jump back to their news feed. Reading requires a lot more effort than scrolling through cat photos.</p>
<p>Don’t waste time with intros or updates — start making points and telling your story immediately.</p>
<h4 id="heading-establish-credibility">Establish credibility</h4>
<p>Figure out a way to establish your credibility within the first few paragraphs. If you are a top expert in your field, say so. Don’t assume that people are going to take the time to google you.</p>
<blockquote>
<p>“Who you are speaks so loudly I can’t hear what you’re saying.” — Ralph Waldo Emerson</p>
</blockquote>
<p>Are you writing about health as a non-physician? Are you writing about personal finance as a non-millionaire? You’ll need to overcome any skepticism readers may have about your credibility.</p>
<p>I established my credibility as a writer earlier by posting my recent Medium stats. You’ll need to find an achievement you can trumpet. Something that gives your readers the impression that “this person knows what they’re talking about.”</p>
<p>Reinforce your credibility throughout your story. Support your arguments with data. Use inline links to (non-paywalled) research.</p>
<p>This isn’t the New England Journal of Medicine. This is Medium. So don’t use footnotes.</p>
<h4 id="heading-write-smart">Write smart</h4>
<p>Good writing is hard. Like any skill, it takes practice. There are no shortcuts to becoming a strong writer.</p>
<p>Do yourself a favor: <strong>write what you know</strong>.</p>
<p>Have you ever heard the term “writers block?” Writer’s block happens when you don’t know enough about a topic to write about it. The antidote is research. Learning. Going out into the field.</p>
<p>Don’t publish anything you’re not proud of. Medium isn’t a numbers game. It’s a social contract. People follow you. In turn, you show respect for their scarce time.</p>
<p>Good Medium stories don’t come naturally. For every minute of story length, expect to spend at least an hour writing, re-writing, and editing your story.</p>
<p>Speaking of story length…</p>
<h4 id="heading-medium-readers-prefer-longer-stories">Medium readers prefer longer stories.</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/H-FJzZQe9QX2r0NiCKNiGvLi6DpidLh9zbKE" alt="Image" width="700" height="500" loading="lazy"></p>
<p>Medium’s data scientists found that <a target="_blank" href="https://medium.com/data-lab/the-optimal-post-is-7-minutes-74b9f41509b#.p8jwm4wpf">7 minutes</a> is the optimal length for a Medium story.</p>
<p>In practice, a story should be as long as it needs to be, and no longer.</p>
<p>If you can’t come up with at least 5 minutes worth of thoughts, rethink the premise of your story.</p>
<p>One exception to this is stories that are mostly images, embeds, or code.</p>
<h4 id="heading-write-at-a-sixth-grade-level">Write at a sixth-grade level</h4>
<p>Just because many of your readers went to college does not mean they enjoy reading at a college level. And many of them will be non-native English speakers.</p>
<p>Paste your story into the <a target="_blank" href="http://www.hemingwayapp.com/">Hemingway Editor</a>. This will highlight dense sentences, adverbs, passive voice, and other style issues. It will also assign a grade level to your overall writing.</p>
<p>Despite what you may have learned in English composition class, people prefer short paragraphs to “walls of text.”</p>
<p>There’s nothing wrong with single-sentence paragraphs.</p>
<p>Err on the side of creating new paragraphs.</p>
<h4 id="heading-add-5-tags">Add 5 tags</h4>
<p>Medium allows you to add up to five tags to your story. Use them.</p>
<p>People follow specific topics on Medium. The <a target="_blank" href="https://medium.freecodecamp.com/medium-isn-t-just-startup-people-30a3752b09b9#.5mxkc6mvw">most popular ones</a> are #tech, #life-lessons, #travel, #design, and #startup.</p>
<p>People who follow the tags you use may see your article in their news feed. Tags also make it easier for people to stumble upon your story in search results.</p>
<h4 id="heading-promote-your-stories-on-social-media">Promote your stories on social media</h4>
<p>Once you hit publish, your story will begin to “decay” in Medium’s recommendation engine. As time passes, it will show up in fewer news feeds. The only way to counteract this decay is to get more views and recommends.</p>
<p>The first few hours are critical. Be sure to get a few recommends on your story immediately. These will serve as a proof of concept.</p>
<p>Peer pressure is powerful. Humans are much more likely to click that recommend heart if others humans have already done so.</p>
<p>Share your story on Facebook, Twitter, and LinkedIn. You can view your story’s <a target="_blank" href="https://medium.com/me/stats">stats</a> in real time. Ask for feedback from your friends and followers. Incorporate this feedback into your story.</p>
<p>Once people have recommended your story, share it on relevant Reddit subreddits and Facebook groups.</p>
<p>If you have a mailing list, you can blast it out to your subscribers, too.</p>
<h4 id="heading-submit-your-story-to-a-large-specialized-publication">Submit your story to a large, specialized publication.</h4>
<p>Another way to reach a much larger audience is by syndicating your story in one of Medium’s publications. These are communities of writers and editors who specialize in writing about a few key topics, such as health or education.</p>
<p>For example, Free Code Camp’s Medium publication (for which I’m an editor) focuses on development, design, and data science. It has more than 50,000 followers.</p>
<p>When a publication syndicates your story, it will show up in the news feeds of its followers. Publications can also feature your story on their landing pages.</p>
<p>Find out who the editors of these publications are and pitch your story to them.</p>
<h4 id="heading-ask-people-to-recommend-and-share">Ask people to recommend and share.</h4>
<p>Medium is still quite new. Most people don’t understand how its recommend and follow mechanisms work.</p>
<p>Here’s my final tip for expanding your readership here on Medium: include instructions and a custom GIF image at the bottom of your stories. This will show people how to recommend your story and follow you.</p>
<p><strong>I only write about programming and technology. If you <a target="_blank" href="https://twitter.com/ossia">follow me on Twitter</a> I won’t waste your time. ?</strong></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Sharing My Coding Journey ]]>
                </title>
                <description>
                    <![CDATA[ By Chris Loveless I’ve thought about blogging my coding journey for a while, but nobody would read it unless I pestered them to. Not me btw. But if I blog on Medium, Free Code Camp can pick up my blog post and publish it here to the entire community... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/i-ve-thought-about-blogging-my-coding-journey-for-a-while-but-nobody-would-read-it-except-for-my-9c41a9a8eb97/</link>
                <guid isPermaLink="false">66c3577b0cede4e9b1329c8a</guid>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ education ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ medium ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 19 Oct 2015 23:11:50 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*ZpA1WOb-mV5HDi5T38QJWg.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Chris Loveless</p>
<p>I’ve thought about blogging my coding journey for a while, but nobody would read it unless I pestered them to.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*_1KXC6kAdaXo4hjDigQ5Dg.gif" alt="Image" width="500" height="277" loading="lazy">
<em>Not me btw.</em></p>
<p>But if I blog on Medium, Free Code Camp can pick up my blog post and publish it here to the entire community.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*Vcj6l6bAo3iJAZvNEFfNHg.gif" alt="Image" width="500" height="375" loading="lazy">
<em>Woo hoo!</em></p>
<p>I’m learning some basic Medium tips, such as:</p>
<p>1) always post with a big image at the top, and use fun images throughout your post.</p>
<p>2) keep your post tightly focused.</p>
<p>3) if you’re struggling with something, other people are probably having that issue too. So blog about it.</p>
<p>Medium makes it so easy to create and share content like this.</p>
<p>I plan to post more often, and hopefully a lot of my posts will end up here in Free Code Camp’s publication.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*T7Re1DVWwvJhscP0ZFyckg.png" alt="Image" width="800" height="613" loading="lazy">
<em>Check out that snazzy looking publication.</em></p>
<p><strong>Join me by creating a Medium account, then going to <a target="_blank" href="http://medium.freecodecamp.com">http://medium.freecodecamp.com</a> and clicking the “follow” button.</strong></p>
<p><strong>Then start writing about your coding journey.</strong></p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
