<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Josh Pullen</title>
    <description>The latest articles on DEV Community by Josh Pullen (@pulljosh).</description>
    <link>https://dev.to/pulljosh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F17459%2Fa4fb6301-1aa5-4ae5-b47d-1d1f9ef40f68.jpeg</url>
      <title>DEV Community: Josh Pullen</title>
      <link>https://dev.to/pulljosh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pulljosh"/>
    <language>en</language>
    <item>
      <title>The best programs put users at the wheel.</title>
      <dc:creator>Josh Pullen</dc:creator>
      <pubDate>Mon, 08 Jun 2020 01:18:07 +0000</pubDate>
      <link>https://dev.to/pulljosh/the-best-programs-put-users-at-the-wheel-42nn</link>
      <guid>https://dev.to/pulljosh/the-best-programs-put-users-at-the-wheel-42nn</guid>
      <description>&lt;p&gt;Spreadsheets are everywhere. They are the go-to tool for people who need to do powerful work on computers but don't know how to code.&lt;/p&gt;

&lt;p&gt;Spreadsheets are both powerful and approachable. These qualities usually act in opposition, but spreadsheets are able to span both worlds. Beginning as a simple table, a spreadsheet is easily approachable, but there is great power lurking just beneath the surface.&lt;/p&gt;

&lt;p&gt;These two qualities make the spreadsheet one of the most productive and widely-used tools in computing. How is this dual approachability and power achieved?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When creating a spreadsheet, the program &lt;em&gt;is&lt;/em&gt; the output.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In almost all other forms of software, there is a clear distinction creating and consuming programs. Coding an app and using it are separate activities, performed by different people. Programmers know best, and users are told to accept what they are given.&lt;/p&gt;

&lt;p&gt;Spreadsheets take a different approach. To use a computer is to command it, and the most powerful command is code. Spreadsheets openly encourage users to program for themselves—to work with the computer, not against it.&lt;/p&gt;

&lt;p&gt;Unlike in most traditional programming languages, spreadsheets make no distinction between the program and its output. The code and the output exist in the same space, and this dramatically lowers the barrier to entry. By intermixing program and output, spreadsheets lower the barrier to entry of coding, and make programming a natural part of using a computer.&lt;/p&gt;

&lt;p&gt;In particular, starting with the output allows for a natural induction-based approach to building programs. A traditional programming experience begins with code and ends with output. Spreadsheets flip this process around. Users begin by manually specifying the output they desire. A novice spreadsheet user might enter data and perform calculations manually. Only when the desired output is entirely obvious and its manual generation too strenuous, a user writes the program necessary to automate the computation. By beginning with example outputs and only &lt;em&gt;then&lt;/em&gt; writing the program, there is never any confusion about what the code needs to do or how it should work. This reversed process makes the act of programming a computer vastly more approachable.&lt;/p&gt;

&lt;p&gt;This kind of programming-oriented interface is rare, but not entirely unique. Minecraft, for instance, allows players to program within their own worlds using redstone. The lights, wires, switches, and other components exist within the world being programmed. The code and the output are, again, unified. As with spreadsheets, this paradigm led Minecraft to massive success. Minecraft is the #1 most-purchased video game of &lt;a href="https://en.wikipedia.org/wiki/List_of_best-selling_video_games"&gt;all time&lt;/a&gt;, despite being incredibly buggy and artistically primitive. Its willingness to make the user a programmer in their own world is the killer feature that transforms Minecraft from a game to an art form.&lt;/p&gt;

&lt;p&gt;One up-and-comer in the field of programmable products is Notion. It is a note-taking tool that allows notes to be sorted, filtered, and creatively displayed based on user-defined properties. The tool isn't as powerful as a spreadsheet, but it's far more customizable than most note-taking apps, and again, the programming and the content both exist in a unified interface. Notion, too, has seen incredible success, with a &lt;a href="https://techcrunch.com/2020/04/01/notion-hits-2-billion-valuation-in-new-raise/"&gt;$2 billion valuation&lt;/a&gt; despite continually turning down investors.&lt;/p&gt;

&lt;p&gt;Spreadsheets, Minecraft, and Notion are all unparalleled success stories, and they share one feature in common: to use the tool is to program it. These tools lower the barrier to entry to programming by making programming a natural part of computer usage.&lt;/p&gt;

&lt;p&gt;Despite existing for a long time, this area of software is woefully underexplored. There is a vast landscape of programmable formats yet to be discovered. These new tools will empower users to do more, and experience great success as a result. We haven't yet seen all that computers can do; that power will only be unlocked with users at the wheel.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This was originally posted &lt;a href="https://joshuapullen.com/blog/posts/the-program-is-the-output/"&gt;on my blog&lt;/a&gt; under a different name.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>development</category>
      <category>writing</category>
      <category>technology</category>
    </item>
    <item>
      <title>I need a new project.</title>
      <dc:creator>Josh Pullen</dc:creator>
      <pubDate>Fri, 05 Jun 2020 04:18:41 +0000</pubDate>
      <link>https://dev.to/pulljosh/i-need-a-new-project-in3</link>
      <guid>https://dev.to/pulljosh/i-need-a-new-project-in3</guid>
      <description>&lt;p&gt;I spent much of my life creating &lt;a href="https://scratch.mit.edu/users/PullJosh/"&gt;Scratch projects&lt;/a&gt;. When I was still using Scratch, there were a few key elements that made it great:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It was an outlet for creative ideas.&lt;/strong&gt; Creativity is a faucet that can't be turned off. I generally have a constant stream of ideas, and when I don't act on those ideas it's frustrating. Scratch gave me a platform for channeling creative energy into the production of something real.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It taught me a lot.&lt;/strong&gt; You learn the most when you're working &lt;em&gt;in the zone&lt;/em&gt;. The zone is that area outside what you already know, but only by a little bit. With Scratch, I was able to consistently hit the mark.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It was quick.&lt;/strong&gt; Fast projects are great because I have a short attention span. I really enjoy coming up with project ideas, but execution can become a slog. With Scratch, I could have an idea, execute quickly, and share.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It was easy to share.&lt;/strong&gt; Sharing projects was great because I often got useful feedback and just enough encouragement to keep me going.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I've slowly stopped creating Scratch projects, mostly because I don't think I have much left to learn. After 500+ projects, Scratch is no longer gives me the feeling that I'm &lt;em&gt;in the zone&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Unfortunately, I don't have a replacement activity.&lt;/p&gt;

&lt;p&gt;Web development has served as a kind of stand-in, but it has never been quite the same. Websites tend to be much slower to create, and they're harder to share.&lt;/p&gt;

&lt;p&gt;Blogging is okay, but the final product doesn't particularly excite me. When I created a Scratch project, I really enjoyed repeatedly playing my own game. Reading my own blog posts doesn't feel the same.&lt;/p&gt;

&lt;p&gt;I keep searching for something else to try, but I'm feeling a little stuck.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was originally published &lt;a href="https://joshuapullen.com/blog/posts/i-need-a-new-project/"&gt;on my blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Transformative Power of Free</title>
      <dc:creator>Josh Pullen</dc:creator>
      <pubDate>Wed, 25 Mar 2020 18:41:59 +0000</pubDate>
      <link>https://dev.to/pulljosh/the-transformative-power-of-free-358l</link>
      <guid>https://dev.to/pulljosh/the-transformative-power-of-free-358l</guid>
      <description>&lt;p&gt;About a week ago, I made my website &lt;a href="https://www.rocketspelling.com/"&gt;Rocket Spelling&lt;/a&gt; completely free:&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1239688897703141376-407" src="https://platform.twitter.com/embed/Tweet.html?id=1239688897703141376"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1239688897703141376-407');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1239688897703141376&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;The response since then has been amazing. &lt;strong&gt;Before making it free, Rocket Spelling had 115 paying customers. In the past week, over 1,500 teachers have joined.&lt;/strong&gt; Here's the graph of unique users per day for the last 28 days:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbed5ytxfnbrd12pjtrbz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbed5ytxfnbrd12pjtrbz.png" alt="Usage spiked after making Rocket Spelling free." width="645" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The response took me totally off guard. I wasn't expecting this kind of spike, so I've been trying to decipher what went on.&lt;/p&gt;

&lt;h1&gt;
  
  
  What's up with money?
&lt;/h1&gt;

&lt;p&gt;Money clearly acted as a real roadblock to teachers, but it isn't immediately obvious why. Is Rocket Spelling too expensive to afford? This may sometimes be true, but I suspect that most schools with access to computers can afford to pay. If a teacher wants to use the website, all they need to do is ask the district for funding!&lt;/p&gt;

&lt;p&gt;So why is money such a hinderance? I suspect that "all they need to do" is the problematic phrase.&lt;/p&gt;

&lt;h1&gt;
  
  
  The problem isn't price. It's pain.
&lt;/h1&gt;

&lt;p&gt;Paying money takes effort. To pay for an account, a teacher needs to get other people involved. It's a lot of work, which poses a real barrier to getting started. Every barrier reduces the number of people who will use the service massively.&lt;/p&gt;

&lt;p&gt;Before this week, I had read about "sales funnels" and "removing friction from the customer journey" and other business jargon, but it all felt too impersonal to matter. Now I get it. Here's the message:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you want people to do something, make it easy. Then make it easier. Then easier again.&lt;/strong&gt; Here's how:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Make it free&lt;/li&gt;
&lt;li&gt;Make it fast&lt;/li&gt;
&lt;li&gt;Make it obvious&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Remove barriers.
&lt;/h1&gt;

&lt;p&gt;The recent spike in traffic has taught me that there are &lt;em&gt;massive&lt;/em&gt; gains to be made by simply removing barriers to entry. Breaking down walls, even little ones, makes your service much more valuable to potential users.&lt;/p&gt;

&lt;p&gt;This is exciting news! It means that improving conversion is simple. Every time there's a button, instruction, or input, ask yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is this action 100% necessary?&lt;/li&gt;
&lt;li&gt;Can it happen later?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Does the user really have to make a password, or can they sign in using their favorite social platform like Github, Google, or Twitter? Do they really have to sign in at all? (The answer might be no: Wikipedia lowered the barrier to entry by allowing anyone to edit pages, even without an account.)&lt;/p&gt;

&lt;p&gt;Do they really have to pay? If yes, do they have to pay &lt;em&gt;now&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;Removing barriers is a simple way to massively improve the user experience, and it doesn't take a genius to ask the question "Is this step necessary?"&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Cover photo by &lt;a href="https://unsplash.com/@ayahya09?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Ali Yahya&lt;/a&gt; on Unsplash&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>showdev</category>
      <category>startup</category>
    </item>
    <item>
      <title>Why is zoomed-in text red and blue?</title>
      <dc:creator>Josh Pullen</dc:creator>
      <pubDate>Sat, 14 Dec 2019 03:13:21 +0000</pubDate>
      <link>https://dev.to/pulljosh/why-is-zoomed-in-text-red-and-blue-53jd</link>
      <guid>https://dev.to/pulljosh/why-is-zoomed-in-text-red-and-blue-53jd</guid>
      <description>&lt;p&gt;If we want to draw something on a computer screen, we do it by setting the colors of individual pixels:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qQ0YQvsD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/3sffe16ujle6fw45wc8e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qQ0YQvsD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/3sffe16ujle6fw45wc8e.png" alt="A pixel smiley face" width="228" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is pretty useful, but it isn't great if we want to draw something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Gt-PBE6B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/vo6suq0dupc0ko41vg3f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Gt-PBE6B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/vo6suq0dupc0ko41vg3f.png" alt="A diagonal line cutting across some pixel divisions" width="228" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can only set each pixel to one color, so in reality we might choose to set the pixels like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vc7kZ4bh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/vrus84wc8te7beiufyre.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vc7kZ4bh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/vrus84wc8te7beiufyre.png" alt="An ugly attempt to align the diagonal to the pixel grid" width="228" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's... not ideal. The boxiness of the pixel grid really cramps our style. Fortunately, there's a fact that helps us improve the situation.&lt;/p&gt;

&lt;p&gt;When screen manufacturers create LCD screens, each pixel they make is built using three lights: a red, a green, and a blue. The lights are too small for your eye to distinguish, so the three primary colors blend together. When we set the color of a pixel, these three lights turn on or off accordingly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vc7kZ4bh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/vrus84wc8te7beiufyre.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vc7kZ4bh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/vrus84wc8te7beiufyre.png" alt="White pixel instructions" width="228" height="228"&gt;&lt;/a&gt;&lt;/p&gt;
We tell the screen to do this



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--57O7_fCF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/8r1blf0o8xvt5awe95gm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--57O7_fCF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/8r1blf0o8xvt5awe95gm.png" alt="The white pixels turned to red, green, and blue" width="228" height="228"&gt;&lt;/a&gt;&lt;/p&gt;
But it secretly does this instead



&lt;p&gt;Since we know the arrangement of the little lights (the "subpixels"), we can fill in just half a pixel by giving it a funky color:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XTvwB14L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/yrwm2mzcdf1k376qalko.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XTvwB14L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/yrwm2mzcdf1k376qalko.png" alt="Asking the computer to render some blue and red pixels along the boundaries of the diagonal line" width="228" height="228"&gt;&lt;/a&gt;&lt;/p&gt;
We're telling the computer to render red and blue, but it won't look that way!



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TDcuXvEM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/50209gl946y7hwrvnw9p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TDcuXvEM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/50209gl946y7hwrvnw9p.png" alt="Our red and blue pixels have turned to subpixels to make the diagonal smooth" width="228" height="228"&gt;&lt;/a&gt;&lt;/p&gt;
When rendered, the red and blue pixels become left-half and right-half pixels respectively. This looks a lot smoother!



&lt;p&gt;Rendering half-pixels allows us to draw much more smoothly. In practice, this effect is most obvious when you zoom in on well-rendered text:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eKlqyI3w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/ailr20sth7a040gfogkq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eKlqyI3w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/ailr20sth7a040gfogkq.png" alt="Zoomed in text with red and blue subpixel trickery visible" width="516" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pretty cool!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Project Idea: The RSS Reader for the End Times</title>
      <dc:creator>Josh Pullen</dc:creator>
      <pubDate>Tue, 05 Nov 2019 14:50:20 +0000</pubDate>
      <link>https://dev.to/pulljosh/project-idea-the-rss-reader-for-the-end-times-2pf</link>
      <guid>https://dev.to/pulljosh/project-idea-the-rss-reader-for-the-end-times-2pf</guid>
      <description>&lt;p&gt;Linus Torvalds once said &lt;a href="https://lkml.org/lkml/2000/8/25/132"&gt;"Talk is cheap. Show me the code."&lt;/a&gt; I am cheap, so I'll just talk. If you're a restless developer looking for something to do, you may wish to take this project on yourself. If you do, there are two possible outcomes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You spend a few afternoons improving your web development skills.&lt;/li&gt;
&lt;li&gt;You save the internet.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  The RSS Reader for the End Times
&lt;/h1&gt;

&lt;p&gt;RSS is dead, and soon we will be too. With massive corporations eating us all alive, it's easy to see why the internet isn't quite as playful as it used to be.&lt;/p&gt;

&lt;p&gt;There are &lt;a href="https://dat.foundation/"&gt;plenty&lt;/a&gt; of &lt;a href="https://dev.to/devteam/the-future-of-dev-160n"&gt;people&lt;/a&gt; working hard to improve the situation, but more need to join the fight. RSS may be dead, but it can be revived.&lt;/p&gt;

&lt;p&gt;Our goal with this project is to solve a fundamental problem: &lt;strong&gt;Content on large networks wins because it's easy to access, not because it's better.&lt;/strong&gt; If we can make it easy to access content that lives on personal sites and other niches of the internet, we can level the playing field and allow the best content to get eyeballs without going where the people are.&lt;/p&gt;

&lt;h2&gt;
  
  
  It's not about RSS
&lt;/h2&gt;

&lt;p&gt;First, let's be clear: RSS itself is on the decline. As far as XML nitty-gritties go, you can't expect every source of content to have an RSS feed available. What I'm saying is that if you want to Syndicate, it won't be Really Simple.&lt;/p&gt;

&lt;p&gt;Fortunately, if you're clever, it's a solvable problem. Although the feed format is no longer standardized between most websites, it is usually still internally standard within a single source. If I want to get a feed of content from &lt;a href="https://jakearchibald.com/"&gt;jakearchibald.com&lt;/a&gt;, I can just scrape it myself. Searching the HTML of the home page for elements with the selector &lt;code&gt;.h-2 &amp;gt; a&lt;/code&gt; gives me a set of links to the ten most recent posts. If I'm really clever, I could probably even figure out how to get the &lt;a href="https://jakearchibald.com/?page=2"&gt;next ten&lt;/a&gt; too.&lt;/p&gt;

&lt;p&gt;If you're willing to get dirty and start scraping, you can generate feeds for a lot of content in a lot of places, even if RSS isn't there to do the heavy-lifting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Selecting elements is hard
&lt;/h3&gt;

&lt;p&gt;Figuring out how to scrape each website differently to find its content is no small task. Fortunately, ad-blockers already have the solution: A browser extension with an "element picker" can help users to generate the selector themselves. Plus, once one person figures it out, you can store that selector in a database somewhere to help out others who want the watch the same feed.&lt;/p&gt;

&lt;p&gt;For some services, it may also make sense to allow users to sign in with OAuth. Maybe a user wants a mirror of their YouTube subscriptions in their RSS reader. No problem! Just sign in with Google!&lt;/p&gt;

&lt;h2&gt;
  
  
  It &lt;em&gt;is&lt;/em&gt; about relationships (and 💰)
&lt;/h2&gt;

&lt;p&gt;One of the benefits of a centralized system is that it allows for relationships between people who make online content (like articles, comics, and videos) and those who consume it. These relationships can include internet comments, or, surprisingly, money! Patreon is shockingly successful because users &lt;em&gt;want&lt;/em&gt; to pay people they appreciate.&lt;/p&gt;

&lt;p&gt;An RSS Reader for the End Times understands this and facilitates it. Each item in the feed can have a public comment section attached, and -- more importantly -- a way to support the creator.&lt;/p&gt;

&lt;p&gt;Imagine that you're subscribed to 100 feeds and want to support all the creators. Each month, you want to donate $20 and divvy it up between them. An RSS reader with donation functionality can facilitate this.&lt;/p&gt;

&lt;p&gt;Every creator who likes money can sign up to receive payouts when users who are subscribed to their content choose to donate. Then, each donation is split up among the feeds (as dictated by the donating user), and once a creator has a few dollars of total donations in the system they can cash out at their leisure.&lt;/p&gt;

&lt;p&gt;If you want your RSS reader to be financially viable without selling users' data or resorting to ads, you could probably even take a little cut yourself. 😉&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>startup</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why Scratch is the Ideal Development Environment</title>
      <dc:creator>Josh Pullen</dc:creator>
      <pubDate>Mon, 01 Jul 2019 19:29:03 +0000</pubDate>
      <link>https://dev.to/pulljosh/why-scratch-is-the-ideal-development-environment-4ddk</link>
      <guid>https://dev.to/pulljosh/why-scratch-is-the-ideal-development-environment-4ddk</guid>
      <description>&lt;p&gt;I don't need to tell you that &lt;a href="https://scratch.mit.edu/" rel="noopener noreferrer"&gt;Scratch&lt;/a&gt; is not a professional tool. Certainly, there are some &lt;a href="https://scratch.mit.edu/users/griffpatch/" rel="noopener noreferrer"&gt;very impressive people&lt;/a&gt; creating &lt;a href="https://scratch.mit.edu/projects/113321949/" rel="noopener noreferrer"&gt;very impressive projects&lt;/a&gt;, but they are the exception, not the rule.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scratch is designed for children.&lt;/strong&gt; It isn't built to be powerful. It isn't designed to be fast. You can't pass around arrays or objects as data, and you can't create a function that returns a value. As a tool for real development, Scratch is worthless. &lt;strong&gt;But Scratch gets one thing right: It makes programming intuitive.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  You Know Your Options
&lt;/h3&gt;

&lt;p&gt;In Scratch, every "block" — every feature and method available to you — is visible on-screen in a single scrolling panel:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0mvv80bx5n9eqznprwj1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0mvv80bx5n9eqznprwj1.png" width="317" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You don't need documentation because everything you can possibly do is right there in front of you. And if you don't know what something does, you can &lt;em&gt;just try it&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Experimentation is Everything
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Want to run some code? Just click it.&lt;/strong&gt; It's that simple. If you have a block or two, you can click them and they will run. Always.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F81j5kk4uhtdp0d35f0k0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F81j5kk4uhtdp0d35f0k0.gif" width="484" height="192"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This means that &lt;strong&gt;you don't need documentation, tutorials, or anything except a willingness to try.&lt;/strong&gt; If you find a block that looks like what you want to do, you can click it — even while your project is running — and see the result immediately.&lt;/p&gt;

&lt;h3&gt;
  
  
  Military-Grade Hot Reloading
&lt;/h3&gt;

&lt;p&gt;In Scratch, your project is a stage and you are the director. Code is merely a way of communicating with your actors (technically, "sprites"). You can, of course, give your actors a script ahead of time, but there's nothing stopping you from giving additional directions as the scene unfolds.&lt;/p&gt;

&lt;p&gt;The Scratch interpreter is baked directly into the editor, which means that when you interact with your code you are manipulating the world directly. &lt;strong&gt;You can change a script &lt;em&gt;while it's running&lt;/em&gt;, and it will just work. That's magic.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Result? Insight and Intuition.
&lt;/h2&gt;

&lt;p&gt;When you combine these elements together, what you get is a very intuitive programming experience. It's underpowered, of course, but it's also &lt;em&gt;empowering&lt;/em&gt;. By giving you as many tools as possible to see into your project and manipulate it, Scratch makes it easy to get a grasp on how code works. When you want to make something, you just start clicking bricks. You can see how they fit together in a way that feels tangible. Code is no longer a black box.&lt;/p&gt;

&lt;h2&gt;
  
  
  I Want Scratch Back
&lt;/h2&gt;

&lt;p&gt;I spent &lt;a href="https://scratch.mit.edu/users/PullJosh/projects/" rel="noopener noreferrer"&gt;a lot of time&lt;/a&gt; with Scratch in my early years, but eventually moved on to bigger and better(?) things. There's a lot to love about the broader programming landscape, but I'm honestly not thrilled to have left behind the editing experience that was once so near and dear to my heart.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But why are intuitive programming environments reserved for children?&lt;/strong&gt; Surely even the big kids could use a little extra assistance. The challenge of programming is understanding what's happening inside our little black boxes. But the more that we can &lt;a href="https://techcrunch.com/2019/06/03/goodbye-trash-can-hello-cheese-grater-apples-reinvented-mac-pro-will-shred-your-workflow/" rel="noopener noreferrer"&gt;poke holes in the box&lt;/a&gt; — the more that we can give insights into how our code looks and feels from the inside — the better software we will be able to create.&lt;/p&gt;

</description>
      <category>scratch</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>What are you making?</title>
      <dc:creator>Josh Pullen</dc:creator>
      <pubDate>Tue, 18 Jun 2019 21:05:02 +0000</pubDate>
      <link>https://dev.to/pulljosh/what-are-you-making-1bho</link>
      <guid>https://dev.to/pulljosh/what-are-you-making-1bho</guid>
      <description>&lt;p&gt;Code or otherwise, I want to know: &lt;strong&gt;What's your latest creation?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Thanks to Kevin Jarrett for the &lt;a href="https://unsplash.com/photos/t3d22GqvUqs"&gt;cover image&lt;/a&gt;.)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>askdev</category>
    </item>
    <item>
      <title>Why do you love dev.to?</title>
      <dc:creator>Josh Pullen</dc:creator>
      <pubDate>Fri, 07 Jun 2019 01:32:25 +0000</pubDate>
      <link>https://dev.to/pulljosh/why-do-you-love-dev-to-4p0h</link>
      <guid>https://dev.to/pulljosh/why-do-you-love-dev-to-4p0h</guid>
      <description>&lt;p&gt;Dev is, I believe, the best online community for developers that exists today. So I want to know: &lt;strong&gt;What's your favorite part of the dev.to experience?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What about this website is different than Twitter, Medium, or any of the other places that developers live?&lt;/p&gt;

&lt;p&gt;As a bonus: &lt;strong&gt;What would you like to see improved?&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How Portals Will Restructure the Internet</title>
      <dc:creator>Josh Pullen</dc:creator>
      <pubDate>Tue, 21 May 2019 13:20:31 +0000</pubDate>
      <link>https://dev.to/pulljosh/how-portals-will-restructure-the-internet-25nf</link>
      <guid>https://dev.to/pulljosh/how-portals-will-restructure-the-internet-25nf</guid>
      <description>&lt;p&gt;The Chrome team has a new proposal for the web, and the very preliminary implementations are already beginning to ship in Chrome Canary. It's called "portals", and it's a little bit like iframes on steroids:&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1125886955542106112-544" src="https://platform.twitter.com/embed/Tweet.html?id=1125886955542106112"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1125886955542106112-544');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1125886955542106112&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Portals are crazy because they make it really difficult to follow which website is serving you content. Even with the current URL highlighted in the twitter video, it can be quite hard to understand exactly where everything is coming from.&lt;/p&gt;

&lt;p&gt;At first I found this concerning, but over time I've begun to believe that &lt;strong&gt;portals correctly identify that organizing web browsing by URL is not useful for users in the general case.&lt;/strong&gt; (URLs are, of course, excellent for sharing links to pages. But when clicking around, they aren't nearly as important as we make them seem.)&lt;/p&gt;

&lt;p&gt;I've been thinking a lot lately about &lt;a href="https://dev.to/pulljosh/why-is-jsx-okay-1l2g"&gt;orthogonal methods of grouping ideas&lt;/a&gt;, and how the obvious grouping is not always the most useful one. In the frontend world, we collectively realized that grouping by language is less sensible than grouping by components:&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/PullJosh/embed/wbqyNP?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
I spent too much time on this to only include it in &lt;a href="https://dev.to/pulljosh/why-is-jsx-okay-1l2g"&gt;one post&lt;/a&gt;.



&lt;p&gt;To me, portals seem like the same type of (controversial) shift. &lt;strong&gt;Rather than grouping the content we view by the domain it's served from, we choose to group it by the content it contains.&lt;/strong&gt; This means that links, the original "strings" of the internet, will no longer be needed to tie separate locations together. Instead, pieces of similar content will naturally be grouped regardless of origin.&lt;/p&gt;

&lt;p&gt;I don't foresee this change coming to pass without some sort of major uprising first. We saw it with JSX, and I believe we'll see it again. &lt;strong&gt;But I'm also going to make the claim that portals will drastically improve the internet experience by forcing website owners and users alike to care less about where content is hosted and more about how it's connected.&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Concerns with Separation of Concerns</title>
      <dc:creator>Josh Pullen</dc:creator>
      <pubDate>Tue, 21 May 2019 02:48:39 +0000</pubDate>
      <link>https://dev.to/pulljosh/why-is-jsx-okay-1l2g</link>
      <guid>https://dev.to/pulljosh/why-is-jsx-okay-1l2g</guid>
      <description>&lt;h1&gt;
  
  
  The Old Way: Splitting Code by Language
&lt;/h1&gt;

&lt;p&gt;Before components were cool, we often split our code up into separate HTML, CSS, and JS files. This division kept tangles of related code pulled apart into separate chunks with only the necessary strings between them.&lt;/p&gt;

&lt;p&gt;Splitting code by language was better than putting everything into one file because it lowered the stress on our scroll wheels and allowed us to sleep at night under the false presumption that our code was properly organized.&lt;/p&gt;

&lt;p&gt;But the connecting strings were there, and they haunted us.&lt;/p&gt;

&lt;p&gt;All three languages were necessarily intertwined (if you change a class name in HTML, you have to update your CSS and JS too), so we were constantly jumping back and forth between related files.&lt;/p&gt;

&lt;h1&gt;
  
  
  The New Way: Splitting Code by Component
&lt;/h1&gt;

&lt;p&gt;A far better system, with less jumping involved, is to split code up based on what goes together. Components help us do that! Components are a recognition that splitting up our code into files based on the programming language is the wrong approach.&lt;/p&gt;

&lt;p&gt;It was controversial in the beginning. There were outcries. The public made clear that such a convolution of concerns was an infringement on the very foundations of a civil society.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3cmIRXjF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/0d1r6louz13ppynjeltw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3cmIRXjF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/0d1r6louz13ppynjeltw.png" alt="Dan the Witch" width="640" height="422"&gt;&lt;/a&gt;&lt;/p&gt;
For a while we were convinced that &lt;a href="https://dev.to/dan_abramov"&gt;this generous bloke&lt;/a&gt; was actually a witch!



&lt;p&gt;But, as it happens, combining HTML, CSS, and JS all together is actually a really great idea. The key condition? &lt;strong&gt;You must instead divide up your code based on which pieces of HTML, CSS, and JS work together to form a coherent whole.&lt;/strong&gt; That's what happens when we split our code into files at the component level.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/PullJosh/embed/wbqyNP?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The key benefit is that we no longer have strings attached between each of our files. (If we change a class name, everything happens in one place.) In an ideal world, every component is entirely self-contained and does not rely on the implementation details of other components to function properly. This means that we no longer need to jump between files nearly as often.&lt;/p&gt;

&lt;h1&gt;
  
  
  Change is the Only &lt;code&gt;const&lt;/code&gt;
&lt;/h1&gt;

&lt;p&gt;Changing deep-rooted ideals (about, for instance, separation of concerns) is incredibly difficult. Fortunately, web developers seem to be quite good at it. The industry moves fast, and it can sometimes seem like we're reinventing the practice &lt;em&gt;too often&lt;/em&gt;. But looking back at old ideas is a reminder that the adaptations are worth the pain. Keep up the good fight, y'all! ✌&lt;/p&gt;

</description>
      <category>react</category>
      <category>jsx</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Blind in a Blindfold</title>
      <dc:creator>Josh Pullen</dc:creator>
      <pubDate>Fri, 10 May 2019 23:10:40 +0000</pubDate>
      <link>https://dev.to/pulljosh/blind-in-a-blindfold-4435</link>
      <guid>https://dev.to/pulljosh/blind-in-a-blindfold-4435</guid>
      <description>&lt;p&gt;A few years ago I discovered something strange: "Mental image" is a far more literal phrase than I had ever believed. &lt;strong&gt;It turns out that the majority of people really can "see" things that aren't in front of them. I cannot.&lt;/strong&gt; &lt;a href="https://www.scientificamerican.com/article/when-the-minds-eye-is-blind1/"&gt;It's a condition known as Aphantasia&lt;/a&gt;, and — although little is known about it — there are &lt;a href="https://www.reddit.com/r/aphantasia"&gt;many people&lt;/a&gt; who have recently come to the same discovery.&lt;/p&gt;

&lt;p&gt;Fortunately, people with Aphantasia seem to be faring pretty well. Ed Catmull, for example, was president of Pixar despite &lt;a href="https://www.bbc.com/news/health-47830256"&gt;having Aphantasia&lt;/a&gt;. In fact, I would argue that limitations like Aphantasia can be beneficial in certain fields.&lt;/p&gt;

&lt;h1&gt;
  
  
  Imagine this...
&lt;/h1&gt;

&lt;p&gt;Imagine, if you can, blindness of the eyeballs, not just the mind. A blind person must, necessarily, become a talented sightless navigator. Years of practice accumulate until a blind person can navigate nearly as well as a sighted one. They'll never be quite as quick at getting around, of course, but they can come pretty close.&lt;/p&gt;

&lt;p&gt;But if you took a blind person and a sighted person and put them both in blindfolds, the tables would turn. The blind person — with years of practice — would be able to navigate quite well. But the usually-sighted person would struggle with even the most basic skills.&lt;/p&gt;

&lt;h1&gt;
  
  
  What Does it Mean for Me?
&lt;/h1&gt;

&lt;p&gt;Aphantasia, I believe, is similar to the blindfold analogy. In the general case, I (and other aphants) will underperform in mental tasks. My reading comprehension of fiction, for example, is atrocious. But in certain cases &lt;em&gt;everyone's&lt;/em&gt; mind is blinded, and my intense practice helps me in those areas.&lt;/p&gt;

&lt;p&gt;I believe programming is one such occasion. &lt;strong&gt;Programming, as far as I can discern, is not a skill which is particularly aided by visual imagery.&lt;/strong&gt; Almost everyone who is writing code needs to think in data, which can be a challenge for many. &lt;strong&gt;As a person with Aphantasia, I — like the blind in a blindfold — feel no less comfortable writing code than I do thinking about anything else.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The general principle, it seems, is that challenges and limitations can result in surprising benefits. I, for one, will be capitalizing on the good parts.&lt;/p&gt;

</description>
      <category>aphantasia</category>
      <category>programming</category>
    </item>
    <item>
      <title>Be Mindful What you Measure</title>
      <dc:creator>Josh Pullen</dc:creator>
      <pubDate>Tue, 30 Apr 2019 23:48:56 +0000</pubDate>
      <link>https://dev.to/pulljosh/be-mindful-what-you-measure-4eb6</link>
      <guid>https://dev.to/pulljosh/be-mindful-what-you-measure-4eb6</guid>
      <description>&lt;p&gt;When you measure something, you change it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://en.wikipedia.org/wiki/Observer_effect_(physics)"&gt;Observer Effect&lt;/a&gt;:&lt;/strong&gt;&lt;br&gt;
"In physics, the observer effect is the theory that the mere observation of a situation or phenomenon inevitably changes that phenomenon."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Quantum physics are pretty weird, but it turns out that humans are weird in much the same way. Who knew?&lt;/p&gt;

&lt;p&gt;In my life, standardized tests are a big deal. AP tests are coming up, and the ACT is still on the horizon.  SAT results come out Thursday. I work tirelessly to resist the idea that my education is about beating a test, but it's not easy to avoid.&lt;/p&gt;

&lt;p&gt;In the pursuit of more data, we've created tests that attempt to evaluate students' abilities. These tests aren't perfect, of course — you can't effectively measure skills like interpersonal communication on a multiple choice exam — but it seems reasonable to expect that more data will result in better decision-making. Unfortunately, when we measure what students have learned, we change what they learn.&lt;/p&gt;

&lt;p&gt;It's no secret that schools, if they want to do a "good" job (according to the measurement tools at our disposal), must teach the skills that are testable and overlook the ones that aren't. But the compatibility of a skill with a multiple-choice exam is not at all correlated with its usefulness in the real world. (Or, if you're feeling really spicy, you might even argue that a correlation exists and is downward-sloping.) As a result, our choice to collect more data has caused the quality of education to decline.&lt;/p&gt;

&lt;h1&gt;
  
  
  We must be careful what we measure.
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;If measurement can affect an outcome then we need to be thoughtful about what we measure and how we might change things as a result.&lt;/strong&gt; We all know that measuring a programmer's success in "lines of code" is a futile exercise.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-837749167049031681-238" src="https://platform.twitter.com/embed/Tweet.html?id=837749167049031681"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-837749167049031681-238');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=837749167049031681&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;On my best days, I write negative code. But if you want me to make that number big, it's an easy game to play:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;6 lines already! 🎉 Am I a rockstar developer?&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We encourage what we measure, so we have to be sure that we're measuring the right thing.&lt;/p&gt;

&lt;p&gt;Fortunately, this measurement effect can be weaponized for good too. That's why &lt;a href="https://www.discourse.org/"&gt;Discourse&lt;/a&gt; displays the amount of time a user has spent reading, not how much they have written:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Printing a post count number next to every user's name implies that the more you post, the better things are. [...] &lt;em&gt;Is this even true?&lt;/em&gt;&lt;br&gt;&lt;br&gt;
I find that the value of conversations has little to do with how much people are talking. I find that too much talking has a &lt;em&gt;negative&lt;/em&gt; effect on conversations."&lt;br&gt;&lt;br&gt;
- &lt;a href="https://blog.codinghorror.com/because-reading-is-fundamental-2/"&gt;Jeff Atwood (Coding Horror)&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead, by measuring time spent reading, the system encourages people to read more. It's not complicated, but — as is often the case with simple things — it's &lt;a href="https://blog.codinghorror.com/for-a-bit-of-colored-ribbon/"&gt;startlingly effective&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How can we apply this idea ourselves?
&lt;/h2&gt;

&lt;p&gt;When we are developing our own products, we can — we must — think about the effects that our measurements will have, and choose to emphasize the measurements that we believe matter. If you're making a social media app, think about &lt;a href="https://dev.to/grv19/number-of-followers-to-be-shown-on-a-profile-pbi"&gt;the numbers&lt;/a&gt; you display next to users' posts. Do they promote the kind of interactions you're looking for?&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1118970853654290432-986" src="https://platform.twitter.com/embed/Tweet.html?id=1118970853654290432"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1118970853654290432-986');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1118970853654290432&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;There are no set rules. The answers to questions like these will change depending on your circumstances and goals. But there's no doubt in my mind that simply measuring and displaying data is a great way to manipulate it.&lt;/p&gt;

&lt;p&gt;Perhaps we can measure how we measure. That might do the trick.&lt;/p&gt;

</description>
      <category>measure</category>
      <category>data</category>
      <category>product</category>
    </item>
  </channel>
</rss>
