<?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: Wynter Jones</title>
    <description>The latest articles on DEV Community by Wynter Jones (@wynterjones).</description>
    <link>https://dev.to/wynterjones</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%2F68385%2F17c59a08-b141-4e39-b81f-85e494721632.png</url>
      <title>DEV Community: Wynter Jones</title>
      <link>https://dev.to/wynterjones</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wynterjones"/>
    <language>en</language>
    <item>
      <title>Just a Single Screenshot</title>
      <dc:creator>Wynter Jones</dc:creator>
      <pubDate>Mon, 21 Dec 2020 00:37:39 +0000</pubDate>
      <link>https://dev.to/wynterjones/just-a-single-screenshot-4ol7</link>
      <guid>https://dev.to/wynterjones/just-a-single-screenshot-4ol7</guid>
      <description>&lt;p&gt;Think about it.&lt;/p&gt;

&lt;p&gt;We as developers, we build. And we build some more.&lt;/p&gt;

&lt;p&gt;We take all that work and compress it into a few screenshots, maybe a video and a landing page that sells the product.&lt;/p&gt;

&lt;p&gt;Imagine if it took you 3 years to build and build.&lt;/p&gt;

&lt;p&gt;You launch and it's crickets. Your screenshots, videos and marketing are all missing the mark.&lt;/p&gt;

&lt;p&gt;Do you pivot?&lt;/p&gt;

&lt;p&gt;Are those three years for nothing? What do you do!&lt;/p&gt;

&lt;p&gt;Sure -- nothing in the market happens quick especially out of obscurity. &lt;/p&gt;

&lt;p&gt;Why not, stop building? Start selling. Take a screenshot right now of your product. &lt;/p&gt;

&lt;p&gt;Congratulations - you are done. No more months of work or weeks of tweaking the UI in order to fit a possible problem you've decided you need to solve. Before anyone uses it.&lt;/p&gt;

&lt;p&gt;So I say, stop building. Start selling. Show off your work and once you know, really, really know. Continue building.&lt;/p&gt;

&lt;p&gt;Don't build in a silo. Find another way to feed the farm by turning that silo into a discotheque that brings people in from far and wide.&lt;/p&gt;

&lt;p&gt;That's is all. You got this!&lt;/p&gt;

&lt;p&gt;Launch, launch, launch.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How the Terminal Should Work by Default; But Doesn't</title>
      <dc:creator>Wynter Jones</dc:creator>
      <pubDate>Wed, 16 Dec 2020 22:03:32 +0000</pubDate>
      <link>https://dev.to/wynterjones/how-the-terminal-should-work-by-default-but-doesn-t-13in</link>
      <guid>https://dev.to/wynterjones/how-the-terminal-should-work-by-default-but-doesn-t-13in</guid>
      <description>&lt;p&gt;So we use this Terminal/Console/Command Prompt thingy every day. The first time we used it we felt like we finally hacked into the matrix. &lt;/p&gt;

&lt;h3&gt;
  
  
  Back Story
&lt;/h3&gt;

&lt;p&gt;Even the first computer I used which was some DOS system with green text. You enter a command a some magic would happen. Except I did not know any commands, nor did I know it could process commands. So it was used a way to leave messages on screen for my mom or brother.&lt;/p&gt;

&lt;p&gt;How it worked then and how it works now is the same.&lt;/p&gt;

&lt;p&gt;Enter command, it prints the output and enters a new line. After a while you have a tiny scroll bar and entire history of every command you entered.&lt;/p&gt;

&lt;p&gt;Cool, I guess for some engineers I am sure, for me? I have never needed to look through history to see anything. So ultimately it's all left over noise. &lt;/p&gt;

&lt;p&gt;So I clear screen and continue on.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Side Story
&lt;/h3&gt;

&lt;p&gt;A few years ago I was developing a desktop application that is basically a PostgreSQL database viewer which connected to Ruby on Rails. Most of the commands needed to be entered into a terminal.&lt;/p&gt;

&lt;p&gt;This is when I really learned why they call them terminal emulators and got to understand the shell more. This is when I could control the entire layout of the terminal.&lt;/p&gt;

&lt;p&gt;I realized I never needed any of that history and in fact I needed to see all the output clearly and easily. &lt;/p&gt;

&lt;p&gt;This project has since been closed however.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Point &amp;amp; The Code
&lt;/h3&gt;

&lt;p&gt;Here's some bashrc code that will clear the screen after each command and provide the output in a much nicer way:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;preexec () {
 printf "\033c"
 echo "$fg_bold[red]╭╼$fg[blue] $PWD\n$fg_bold[red]╰───╼$fg_bold[green] $ $history[$HISTCMD] $fg_bold[red]\n"
}
preexec_invoke_exec () {
    [ -n "$COMP_LINE" ] &amp;amp;&amp;amp; return                     # do nothing if completing
    [ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] &amp;amp;&amp;amp; return # don't cause a preexec for $PROMPT_COMMAND
    local this_command=`history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g"`; # obtain the command from the history, removing the history number at the beginning
    preexec "$this_command"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--efSNcMqh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/74gpm68lvxi27gxrr301.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--efSNcMqh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/74gpm68lvxi27gxrr301.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Disclaimer
&lt;/h3&gt;

&lt;p&gt;Yes, you do lose the history and it always shows just the last command at a time.&lt;/p&gt;

&lt;p&gt;Yes, it has some fancy stuff to format the directory and last command.&lt;/p&gt;

&lt;p&gt;Yes, you should be using Starship addon for your terminal to format the node version, etc.&lt;/p&gt;

&lt;p&gt;Yes, I think this is the way it should work. In fact I think the input should always stay at the top of the terminal and output below, however that seems to hard to hack into a .zshrc or .bashrc script.&lt;/p&gt;

&lt;p&gt;Either way, thanks for reading.&lt;/p&gt;

</description>
      <category>terminal</category>
      <category>console</category>
      <category>bashrc</category>
      <category>zshrc</category>
    </item>
    <item>
      <title>Music</title>
      <dc:creator>Wynter Jones</dc:creator>
      <pubDate>Sat, 26 Sep 2020 04:36:06 +0000</pubDate>
      <link>https://dev.to/wynterjones/music-1636</link>
      <guid>https://dev.to/wynterjones/music-1636</guid>
      <description>&lt;p&gt;Probably mentioned a thousand times on here. Rather than search and read what others have posted I am just going to skip to writing about why music is fuel for me.&lt;/p&gt;

&lt;p&gt;In the late nights while bobbing my head up and down listening to UGK and I find the code starts to match the rhythm. Before I know it the prose is mixed in a deeper meaning.&lt;/p&gt;

&lt;p&gt;Just function. &lt;br&gt;
Do the the thing. &lt;br&gt;
Little fingers keep on typing.&lt;/p&gt;

&lt;p&gt;Zap Pow comes in and lights up the room and suddenly that new screen is no longer another thing to do but a groovey new piece of awesomeness sliding it's way into your product.&lt;/p&gt;

&lt;p&gt;While you pause and reflect the smooth sounds of Nikolai Rimsky fill the room and the button works. The function is performed and the action taken.&lt;/p&gt;

&lt;p&gt;Success.&lt;/p&gt;

&lt;p&gt;Celebrate the good times with sounds of Micheal Jackson. Moonwalk your way away from the computer and into a effortless sleep as today your fingers danced along the keyboard to produce a small piece of magic.&lt;/p&gt;

&lt;p&gt;Keep on jammin' &lt;/p&gt;

</description>
      <category>music</category>
    </item>
    <item>
      <title>Useless Chrome Extensions for YouTube</title>
      <dc:creator>Wynter Jones</dc:creator>
      <pubDate>Mon, 18 Mar 2019 15:37:19 +0000</pubDate>
      <link>https://dev.to/wynterjones/useless-chrome-extensions-for-youtube-2gja</link>
      <guid>https://dev.to/wynterjones/useless-chrome-extensions-for-youtube-2gja</guid>
      <description>

&lt;p&gt;Hello Dev.to community!&lt;/p&gt;

&lt;p&gt;I'd like to share with you some useless code for creating a variety of Chrome Extensions that play around with YouTube. &lt;/p&gt;

&lt;p&gt;The idea was mostly to see how I could inject CSS and JavaScript onto a page using a chrome extension. Very basic and simple.&lt;/p&gt;

&lt;p&gt;Only problem, what do I do with that power?&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Idea #1 - Hide YouTube Comments&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;First, here's the basic &lt;code&gt;manifest.json&lt;/code&gt; file for injecting CSS.&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "name": "Replace YouTube Comments",
  "version": "0.0.1",
  "manifest_version": 2,
  "description": "",
  "homepage_url": "http://www.monetizedesign.com",
  "default_locale": "en",
  "content_scripts": [
    {
      "matches": ["http://*/*", "https://*/*"],
      "css": [
        "inject.css"
      ]
    }
  ],
  "permissions": [
    "tabs", "http://*/*", "https://*/*"
  ]
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;For a chrome extension you basically need the &lt;code&gt;manifest.json&lt;/code&gt;, &lt;code&gt;locales/en/messages.json&lt;/code&gt; and extra files for what you plan to do with your extension.&lt;/p&gt;

&lt;p&gt;For this first example here's the CSS that will hide the YouTube comments.&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ytd-comments {
  display: none !important
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Amazing!&lt;/p&gt;

&lt;p&gt;Fairly boring, although 318,626 users might think otherwise and praise this very simple chrome extension (or argue about features in the comments) as seen here on the &lt;a href="https://chrome.google.com/webstore/detail/hide-youtube-comments/kehdmnjmaakacofbgmjgjapbbibhafoh?hl=en"&gt;Hide YouTube Comments extension&lt;/a&gt;. &lt;/p&gt;




&lt;p&gt;This next one might sound silly and when I showed other people this idea they initially thought I was being a troll... That's up to you to decide.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Idea #2 - Auto Dislike YouTube Videos&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;If you're like me and watch way too much YouTube videos that you might think this is useless and it is. &lt;/p&gt;

&lt;p&gt;Personally, I rarely like, comment or subscribe any YouTube video, however since 90% of YouTube videos ask you to Like and Subscribe; I thought why not auto-dislike every video I'm watching?&lt;/p&gt;

&lt;p&gt;Here's the &lt;code&gt;manifest.json&lt;/code&gt; to inject JavaScript onto the page.&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "name": "Auto Dislike YouTube Videos",
  "version": "0.0.1",
  "manifest_version": 2,
  "description": "",
  "homepage_url": "http://www.monetizedesign.com",
  "default_locale": "en",
  "content_scripts": [
    {
      "matches": ["http://*/*", "https://*/*"],
      "js": ["jquery.js", "inject.js"],
      "run_at":"document_end"
    }
],
  "permissions": [
    "activeTab"
  ]
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Yes, I included jQuery, mostly because I am lazy. Feel free to rewrite the code with vanilla JS, which I would do if I were to actually release this extension.&lt;/p&gt;

&lt;p&gt;Here's the code that is always checking and ready to dislike any YouTube video at a moments notice:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function checkAndDislike() {
    setTimeout(checkAndDislike, 5000)
    if ($('ytd-app[is-watch-page]').length) {
      if (!$('#menu ytd-toggle-button-renderer').eq(1).hasClass('style-default-active')) {
        $('#menu ytd-toggle-button-renderer').eq(1).trigger('click')
      }
    }
}
setTimeout(checkAndDislike, 5000);
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Now this may seem cruel and unusual. &lt;/p&gt;

&lt;p&gt;This is nothing compared to my next idea in terms of uselessness...&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Idea #3 - Auto Like and Subscribe YouTube Videos&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This might be a bit more social commentary than the rest of these useless chrome extensions, however the goal of this one which includes the same &lt;code&gt;manifest.json&lt;/code&gt; is to do the opposite.&lt;/p&gt;

&lt;p&gt;Auto Like and Subscribe to every YouTube video you watch!&lt;/p&gt;

&lt;p&gt;Here's the code:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function checkAndSubscribe() {
    setTimeout(checkAndSubscribe, 5000)
    if ($('ytd-app[is-watch-page]').length) {
      const likeButton = $('#menu ytd-toggle-button-renderer').first()
      if (!likeButton.hasClass('style-default-active')) {
        likeButton.trigger('click')
      }
      const subscribeButton = $('#subscribe-button paper-button.ytd-subscribe-button-renderer')
      if (!subscribeButton[0].hasAttribute("subscribed")) {
       subscribeButton.first().trigger('click')
      }
    }
}
setTimeout(checkAndSubscribe, 5000);
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;It's pretty evil, isn't it?&lt;/p&gt;

&lt;p&gt;No, I'm not talking about the need to inject jQuery to use it only to use &lt;code&gt;.first()&lt;/code&gt; or &lt;code&gt;.eq()&lt;/code&gt; ... &lt;/p&gt;

&lt;p&gt;Basically every 5 seconds it checks the page to Like and Subscribe the video you are watching. &lt;/p&gt;

&lt;p&gt;How incredibly useless.&lt;/p&gt;

&lt;p&gt;Either way -- the code is not useless just the function.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do You Have Useless Chrome Extension Ideas?
&lt;/h3&gt;

&lt;p&gt;Let me know in the comments some random and silly ideas that serve no real purpose. &lt;/p&gt;


</description>
      <category>chromeextension</category>
      <category>poorlycoded</category>
      <category>jquery</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
