<?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 Medeski</title>
    <description>The latest articles on DEV Community by Josh Medeski (@joshmedeski).</description>
    <link>https://dev.to/joshmedeski</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%2F113235%2Fa06e1cbb-2215-4f2d-8ded-4aab4ed28d46.jpg</url>
      <title>DEV Community: Josh Medeski</title>
      <link>https://dev.to/joshmedeski</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joshmedeski"/>
    <language>en</language>
    <item>
      <title>Popup history with tmux and fzf</title>
      <dc:creator>Josh Medeski</dc:creator>
      <pubDate>Wed, 30 Dec 2020 16:36:39 +0000</pubDate>
      <link>https://dev.to/joshmedeski/popup-history-with-tmux-and-fzf-5de5</link>
      <guid>https://dev.to/joshmedeski/popup-history-with-tmux-and-fzf-5de5</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3eorhwin6w2j68n73guc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3eorhwin6w2j68n73guc.png" alt="fzf-tmux history popup"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Many times a minute I use the  keyboard shortcut in my terminal to pull up my history. The &lt;a href="https://en.wikipedia.org/wiki/Pareto_principle" rel="noopener noreferrer"&gt;80/20 rule&lt;/a&gt; states that 80% of the input comes from 20% of the output. Applying that principle to my activity in the terminal means the majority of commands I want to run I &lt;/p&gt;

&lt;p&gt;Thankfully fzf wrote a &lt;a href="https://github.com/junegunn/fzf/blob/master/bin/fzf-tmux" rel="noopener noreferrer"&gt;fzf-tmux script&lt;/a&gt; that makes it easy to integrate fzf with tmux.&lt;/p&gt;

&lt;p&gt;Make sure you have installed the keybindings for your shell (you'll run something like &lt;code&gt;/usr/local/opt/fzf/install&lt;/code&gt; in macOS). After running that command your &lt;code&gt;&amp;lt;ctrl-r&amp;gt;&lt;/code&gt; command will be bound to your history.&lt;/p&gt;

&lt;p&gt;Going one step further, tmux has &lt;a href="https://github.com/tmux/tmux/issues/1842" rel="noopener noreferrer"&gt;floating window support&lt;/a&gt;. To set your history to popup, add the following variables to your shell.&lt;/p&gt;

&lt;p&gt;Here's my configuration with fish:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;FZF_TMUX_OPTS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"-p"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;FZF_CTRL_R_OPTS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"--reverse --preview 'echo {}' --preview-window down:3:hidden:wrap --bind '?:toggle-preview'"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-p&lt;/code&gt; flag will now change all &lt;code&gt;fzf_tmux&lt;/code&gt; behavior to pop up instead of creating a separate pane.&lt;/p&gt;

&lt;p&gt;I chose to use &lt;code&gt;--reverse&lt;/code&gt; on the &lt;code&gt;&amp;lt;ctrl-r&amp;gt;&lt;/code&gt; options because I like the way it looks. I also added an optional preview flag bound to &lt;code&gt;?&lt;/code&gt; as described in the &lt;a href="https://github.com/junegunn/fzf/wiki/Configuring-shell-key-bindings#ctrl-r" rel="noopener noreferrer"&gt;fzf key binding wiki&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I hope you like it! &lt;code&gt;fzf-tmux&lt;/code&gt; with popup support has been a game-changer. I had some hesitations moving away from Visual Studio Code, mostly that tmux and neovim felt outdated when it came to visuals. But now, I'm liking this setup MORE than vscode and am excited to continue to tweak the system to be even more stylish and functional than any other IDE out there.&lt;/p&gt;

&lt;p&gt;This is a simple change, but having a polish balanced screen makes all the difference for me, here it is one more time:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3eorhwin6w2j68n73guc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3eorhwin6w2j68n73guc.png" alt="fzf-tmux history popup"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading, I will continue to post tips and tricks for how to be more productive in the terminal and macOS, hit that follow button if you want to get more articles like this and hit one of those emojis in the sidebar if you liked this tip.&lt;/p&gt;

</description>
      <category>tmux</category>
      <category>fzf</category>
      <category>cli</category>
      <category>fish</category>
    </item>
    <item>
      <title>Why I Switched from ZSH to FISH</title>
      <dc:creator>Josh Medeski</dc:creator>
      <pubDate>Tue, 30 Jul 2019 15:07:54 +0000</pubDate>
      <link>https://dev.to/joshmedeski/why-i-switched-from-zsh-to-fish-2j17</link>
      <guid>https://dev.to/joshmedeski/why-i-switched-from-zsh-to-fish-2j17</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fe1wpy3kakj5i025ozw6s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fe1wpy3kakj5i025ozw6s.png" alt="fish"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've been using the &lt;code&gt;zsh&lt;/code&gt; terminal with the infamous &lt;a href="https://github.com/robbyrussell/oh-my-zsh" rel="noopener noreferrer"&gt;oh-my-zsh&lt;/a&gt; framework for many years now. The features and improvements it makes on plain old bash are impressive. But as my needs change, so does my shell. I made the switch to the &lt;code&gt;fish&lt;/code&gt; shell almost a year ago and here is why I switched.&lt;/p&gt;

&lt;h2&gt;
  
  
  Speed
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;fish&lt;/code&gt; is faster than &lt;code&gt;zsh&lt;/code&gt;. Especially when using &lt;code&gt;zsh&lt;/code&gt; plugins the loading time alone is significantly slower. But more than that, the overall experience for me feels snappier and more responsive in the &lt;code&gt;fish&lt;/code&gt; shell. Since I'm using the terminal to be more efficient and get things done faster than a GUI, speed is one of my top requirements for my shell.&lt;/p&gt;

&lt;h2&gt;
  
  
  Simplicity
&lt;/h2&gt;

&lt;p&gt;The oh-my-zsh configuration and plugins tend to add complexity to the terminal environment, especially custom aliases. Overall, I have found &lt;code&gt;fish&lt;/code&gt; to be much simpler regarding configuration and usage. My config file is only a few lines long and I'm only using one or two plugins for third party utilities (ex: &lt;a href="https://github.com/clvv/fasd" rel="noopener noreferrer"&gt;&lt;code&gt;fasd&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/nvm-sh/nvm" rel="noopener noreferrer"&gt;&lt;code&gt;nvm&lt;/code&gt;&lt;/a&gt;). I also found a very simple theme that only shows me what I need, similar to my previous &lt;code&gt;zsh&lt;/code&gt; theme.&lt;/p&gt;

&lt;h2&gt;
  
  
  Autosuggestion
&lt;/h2&gt;

&lt;p&gt;This is the main reason I moved to &lt;code&gt;fish&lt;/code&gt;. I originally was using the &lt;a href="https://github.com/zsh-users/zsh-autosuggestions" rel="noopener noreferrer"&gt;zsh-autosuggestions&lt;/a&gt; which is "Fish-like autosuggestions for zsh". This is what drew me to fish, this is by far my most used feature. If I mistype a command, it will show in red to indicate that it's an invalid command. But, more importantly, while I type the prompt auto-suggests my previous commands (by recent and most used). This is far quicker than &lt;code&gt;ctrl+r&lt;/code&gt; and usually shows me the command I want 80%+ of the time. Again, this is the main reason I use &lt;code&gt;fish&lt;/code&gt; and one of my favorite productivity tools on my computer, period.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vim Mode
&lt;/h2&gt;

&lt;p&gt;I've been a vim user for many years now. What I love about vim is it's intuitiveness and efficiency (once you've really gotten it down). I know &lt;code&gt;zsh&lt;/code&gt; offers a vim-mode but I was happy to learn &lt;code&gt;fish&lt;/code&gt; has one as well. It a sort of simplified &lt;code&gt;vi&lt;/code&gt; hybrid but it does all I need it to do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;fish&lt;/code&gt; is fast, simple, offers powerful autosuggestion and a vim mode. These are the most important thing for me right now in the terminal so I proudly made the switch to this friendly interactive shell and haven't looked back.&lt;/p&gt;

&lt;p&gt;What shell are you using? Do you love &lt;code&gt;fish&lt;/code&gt; as much as me or found something better? Let me know in the comments!&lt;/p&gt;

</description>
      <category>fish</category>
      <category>zsh</category>
      <category>shell</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Keep Up with the Front-End Industry</title>
      <dc:creator>Josh Medeski</dc:creator>
      <pubDate>Fri, 28 Jun 2019 17:51:19 +0000</pubDate>
      <link>https://dev.to/joshmedeski/how-to-keep-up-with-the-front-end-industry-1mkf</link>
      <guid>https://dev.to/joshmedeski/how-to-keep-up-with-the-front-end-industry-1mkf</guid>
      <description>&lt;p&gt;Here are some tips while staying up-to-date with any large knowledge set, like programming, the news, or anything!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Watch out for overwhelm and take a break if needed&lt;/li&gt;
&lt;li&gt;Recognize you can't know everything&lt;/li&gt;
&lt;li&gt;Share what you're learning with coworkers and friends&lt;/li&gt;
&lt;li&gt;Follow the people/groups that make you excited about the topic&lt;/li&gt;
&lt;li&gt;Contribute to the conversation: write blog posts, Tweet, or record podcasts&lt;/li&gt;
&lt;li&gt;Diversify your sources (one person doesn't have all the answers)&lt;/li&gt;
&lt;li&gt;Automate where possible (&lt;a href="https://feedly.com/"&gt;Feedly&lt;/a&gt; and &lt;a href="https://www.pocketcasts.com/"&gt;Pocket Casts&lt;/a&gt; help me)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;Here is a collection of front-end resources for staying up-to-date with all things front-end related (in no particular order).&lt;/p&gt;

&lt;h3&gt;
  
  
  Email Newsletters
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://css-weekly.com/"&gt;https://css-weekly.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.angular-weekly.com/"&gt;http://www.angular-weekly.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://reactjsnewsletter.com/"&gt;http://reactjsnewsletter.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.getrevue.co/profile/vuenewsletter"&gt;https://www.getrevue.co/profile/vuenewsletter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://frontendfoc.us/"&gt;https://frontendfoc.us/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Blogs
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://css-tricks.com"&gt;https://css-tricks.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://alistapart.com"&gt;https://alistapart.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.smashingmagazine.com/"&gt;https://www.smashingmagazine.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://csswizardry.com/"&gt;https://csswizardry.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.netlify.com/blog/"&gt;https://www.netlify.com/blog/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.angular.io/"&gt;https://blog.angular.io/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjs.org/blog/"&gt;https://reactjs.org/blog/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/"&gt;https://www.freecodecamp.org/news/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Podcasts
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://syntax.fm/"&gt;https://syntax.fm/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://shoptalkshow.com/"&gt;https://shoptalkshow.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://spec.fm/podcasts/toolsday"&gt;https://spec.fm/podcasts/toolsday&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://spec.fm/podcasts/developer-tea"&gt;https://spec.fm/podcasts/developer-tea&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://frontendhappyhour.com/"&gt;https://frontendhappyhour.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://devchat.tv/adv-in-angular/"&gt;https://devchat.tv/adv-in-angular/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.heavybit.com/library/podcasts/jamstack-radio/"&gt;https://www.heavybit.com/library/podcasts/jamstack-radio/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://news.vuejs.org/"&gt;https://news.vuejs.org/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Courses
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://reactforbeginners.com/"&gt;https://reactforbeginners.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://es6.io/"&gt;https://es6.io/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cssgrid.io/"&gt;https://cssgrid.io/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://javascript30.com/"&gt;https://javascript30.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.leveluptutorials.com/"&gt;https://www.leveluptutorials.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://thinkster.io"&gt;https://thinkster.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.nrwl.io/"&gt;https://blog.nrwl.io/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out Wes Bos's &lt;a href="https://wesbos.com/courses/"&gt;other courses&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Twitter
&lt;/h3&gt;

&lt;p&gt;There are too many people and groups to list here. I've made a Twitter list. Feel free to follow it or pick out individuals that stand out to you. &lt;a href="https://twitter.com/joshmedeski/lists/developers/members"&gt;https://twitter.com/joshmedeski/lists/developers/members&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;I hope this advice and these resources help you in staying up-to-date with the front-end industry! This is a collection of resources that have found helpful over the years and I hope it serves you well.&lt;/p&gt;

&lt;p&gt;What resources or tips can you recommend for staying up-to-date with the front-end industry?&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>inspiration</category>
      <category>newsletters</category>
    </item>
  </channel>
</rss>
