<?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: Erik B.</title>
    <description>The latest articles on DEV Community by Erik B. (@flipflopsandrice).</description>
    <link>https://dev.to/flipflopsandrice</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%2F179714%2F051638f0-d497-44f9-b1fe-418866cf6aba.jpg</url>
      <title>DEV Community: Erik B.</title>
      <link>https://dev.to/flipflopsandrice</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/flipflopsandrice"/>
    <language>en</language>
    <item>
      <title>Quick access to local off-line reference docs through key-binding</title>
      <dc:creator>Erik B.</dc:creator>
      <pubDate>Mon, 02 Dec 2019 12:48:56 +0000</pubDate>
      <link>https://dev.to/flipflopsandrice/quick-access-to-reference-docs-ubuntu-34lm</link>
      <guid>https://dev.to/flipflopsandrice/quick-access-to-reference-docs-ubuntu-34lm</guid>
      <description>&lt;p&gt;Through a simple key-binding (&lt;em&gt;shift+ctrl+d&lt;/em&gt;) I can quickly launch or focus reference documentation (using &lt;a href="https://devdocs.io/"&gt;devdocs&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c4ZZ1r_D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://imgur.com/ZSW4eVJ.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c4ZZ1r_D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://imgur.com/ZSW4eVJ.gif" alt="Quick open reference docs after pressing a key-binding"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, how are we going to do this?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;We're going to install some software to facilitate the mechanics: &lt;code&gt;wmctrl&lt;/code&gt;, &lt;code&gt;nativefier&lt;/code&gt; and &lt;code&gt;devdocs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;We're going to write a bash script that launches or focuses the devdocs&lt;/li&gt;
&lt;li&gt;We're going to bind the bash script to a key-binding&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;(nb: This guide was tested on Ubuntu 18.04)&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🛃 Installing &lt;code&gt;wmctrl&lt;/code&gt; (1 of 3)
&lt;/h2&gt;

&lt;p&gt;What's &lt;code&gt;wmctrl&lt;/code&gt; and why do we need it?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ man wmctrl

NAME
       wmctrl - interact with a EWMH/NetWM compatible X Window Manager.

...

DESCRIPTION
       wmctrl  is  a  command that can be used to interact with an X Window manager that is compatible with the EWMH/NetWM specification.  wmctrl can query the window manager for information, and it can request that certain window
       management actions be taken.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;We'll use &lt;code&gt;wmctrl&lt;/code&gt; to check if our API reference application is running,  and focus on it. If it's not running, we'll start it. &lt;code&gt;wmctrl&lt;/code&gt; is easily installed on Ubuntu through the package manager:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Installs wmctrl
sudo apt install wmctrl
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  💡 Installing &lt;code&gt;nativefier&lt;/code&gt; (2 of 3)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/nativefier"&gt;Nativefier&lt;/a&gt; is a tool to make a native wrapper for any web page. We'll use it to get a local version of DevDocs installed, in case we're ever without Wi-fi.&lt;/p&gt;

&lt;p&gt;It's quite easy to install, just run the following &lt;code&gt;npm&lt;/code&gt; command to install it as a global dependency:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Install nativefier globally
npm install nativefier -g
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  📖 Installing &lt;code&gt;devdocs&lt;/code&gt; (3 of 3)
&lt;/h2&gt;

&lt;p&gt;This is the actual documentation tool we'll be using. You can insert your own if you like. &lt;/p&gt;

&lt;p&gt;We'll use &lt;code&gt;nativefier&lt;/code&gt; to install a local version of DevDocs:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Create software folder
mkdir ~/Software &amp;amp;&amp;amp; cd ~/Software

# Generate local electron version of devdocs
nativefier --name "DevDocs" "https://devdocs.io/"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;We also want to have a &lt;code&gt;.desktop&lt;/code&gt; file installed, so we can launch the application and save it in our favorites sidebar:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo "[Desktop Entry]" \
   "Type=Application" \
   "Terminal=false" \
   "Exec=/home/&amp;lt;your-username&amp;gt;/Software/dev-docs-linux-x64/dev-docs" \
   "Name=DevDocs" &amp;gt; \
   "# Icon=/path-to-optional-icon.png" \
   &amp;gt; ~/.local/share/applications/devdocs.desktop
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;em&gt;(If you're having an issue with adding the application to your favorites in a later stage, add the following to this file: &lt;code&gt;StartupWMClass=dev-docs-nativefier-49fe5b&lt;/code&gt;. Where &lt;code&gt;dev-docs-nativefier-49fe5b&lt;/code&gt; is the name you see when you hover over the running app icon in your application bar).&lt;/em&gt; &lt;/p&gt;
&lt;h2&gt;
  
  
  🚀 Implementing the launch script
&lt;/h2&gt;


&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Create a folder to store our script
mkdir ~/bin

# Create launch/focus script
echo "#!/bin/bash" \
   (wmctrl -l | grep -q DevDocs) &amp;amp;&amp;amp; wmctrl -a DevDocs || gtk-launch devdocs" \
   &amp;gt; `~/bin/devdocs.sh`

# Make the script executable for the user
chmod u+x ~/bin/devdocs.sh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;What exactly does this script do? Let's break it down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;(wmctrl -l | grep -q DevDocs)&lt;/code&gt;: List all applications and find &lt;code&gt;DevDocs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;wmctrl -a DevDocs&lt;/code&gt;: If found, focus on application &lt;code&gt;DevDocs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gtk-launch devdocs&lt;/code&gt; if &lt;em&gt;not&lt;/em&gt; found, launch application &lt;code&gt;devdocs&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  ⌨️ Adding key-binding
&lt;/h3&gt;

&lt;p&gt;Adding the key-binding is easy in Ubuntu, go to &lt;code&gt;Settings&lt;/code&gt; -&amp;gt; &lt;code&gt;Keyboard&lt;/code&gt; and hit the &lt;code&gt;+&lt;/code&gt; icon to add a new key-binding:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wxND2tqx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/Kwqsdb8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wxND2tqx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/Kwqsdb8.png" alt="Quickly configure key-binding"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🎇 That's it!
&lt;/h3&gt;

&lt;p&gt;Test your key-binding by hitting &lt;code&gt;shift+ctrl+d&lt;/code&gt; (or your chosen binding). The devdocs application should launch, and if it's already running it should focus when using the key-binding.&lt;/p&gt;

&lt;p&gt;If you want to run all of the above commands in one go, use the following gist:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bash &amp;lt;(curl -s https://gist.githubusercontent.com/flipflopsandrice/07d84567f4197ef253055066669078b3/raw/6976125db4d5b7b22ba69e5ed3206be223f1ea68/install-devdocs.sh)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



</description>
      <category>ubuntu</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>bash</category>
    </item>
    <item>
      <title>The Recovering Impostor</title>
      <dc:creator>Erik B.</dc:creator>
      <pubDate>Thu, 13 Jun 2019 15:56:56 +0000</pubDate>
      <link>https://dev.to/flipflopsandrice/the-recovering-impostor-3kf4</link>
      <guid>https://dev.to/flipflopsandrice/the-recovering-impostor-3kf4</guid>
      <description>&lt;p&gt;In this post I set out my experience struggling with the infamous impostor syndrome, with only recently some mild success. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IOXNuq71--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/b7qmdun9drt29klq8tk6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IOXNuq71--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/b7qmdun9drt29klq8tk6.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  tl;dr
&lt;/h2&gt;

&lt;p&gt;Impostor syndrome, or work-related anxiety, can be battled quite effectively by regularly reflecting one's insecurities using &lt;a href="https://en.wikipedia.org/wiki/Cognitive_behavioral_therapy"&gt;Cognitive Behavioral Therapy&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;ℹ️ The jargon&lt;/strong&gt;&lt;br&gt;
In my case, and for many others, impostor syndrome is a form of work-related anxiety and insecurity. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Impostor_syndrome"&gt;Wikipedia&lt;/a&gt; defines it as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Impostor syndrome is a psychological pattern in which &lt;strong&gt;an individual doubts his or her accomplishments&lt;/strong&gt; and has a persistent &lt;strong&gt;internalized fear of being exposed as a "fraud"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are a few interesting terms in this definition that completely cover the feelings related to this form of anxiety: &lt;strong&gt;doubt&lt;/strong&gt;, &lt;strong&gt;fear&lt;/strong&gt; and &lt;strong&gt;exposed&lt;/strong&gt;. These perfectly describe the circular thinking that is the downwards spiral of this specific anxiety.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🖼️ The situation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My secret: I'm not educated in Computer Science. Well, not on an academic level anyway, and that's all that matters. So I go around saying say I'm not educated in CS. Of course, that's not true at all, any level of education matters, and many would say experience counts way more. But you'll see that this is a trend: Downplaying your knowledge, skills and accomplishments is the main symptom.&lt;/p&gt;

&lt;p&gt;I would describe myself as self-taught and pragmatic : A do-er. I started working full-time back in 2007 and quickly found work as a junior developer. This was the time of &lt;code&gt;mysql_connect&lt;/code&gt; and IE6 was still dominant. I don't look back at it fondly. The recession of 2009 hit and I decided to start working as a fixed-price contractor, modernizing flows for SMB enterprises in my local area. Things were good for a few years, I was in my own bubble and working hard. Then suddenly unexpected financial setback split my company up and I decided to go back to freelancing as a senior developer.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This decision changed everything.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I had been indirectly in contact with my peers of course, but being in a team and working with people who worked smarter, faster and better then me impacted me more then I ever anticipated. I got stressed out during work when delivering code or discussing technical concepts. They know more than me, they are better than me, what must they think of me? I began to loathe coming in to work, and feeling joy when clocking out. I began to develop the habit of not speaking my mind and not exposing myself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💥 The impact&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This infinite loop of self-judgement has put an incredible pressure on me over the years. Half of the time I can't even think straight. I've stopped doing side-projects, don't contribute to any FOSS and avoid unnecessary challenges. I'm a freelancer: this anxiety is killing my productivity, love for my work, and if I don't look out it could start hurting my income. &lt;/p&gt;
&lt;h2&gt;
  
  
  Analysis
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;🔍 Reflecting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reflecting on all this, my anxiety boils down to:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;1. Doubt in my abilities:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Due to going "self-taught route" (no academic background).&lt;/li&gt;
&lt;li&gt;Lack of quick theoretical knowledge during conceptual talks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;2. Fear of what happens if my doubts are true:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not trusting in my own abilities.&lt;/li&gt;
&lt;li&gt;Self-judgement, not believing in myself: "I'm sure I can't ever understand that fully".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;3. Live under the assumption I will be exposed:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The code I check-in today could be the reason I'm exposed.&lt;/li&gt;
&lt;li&gt;This API architecture discussion could be the reason I'm exposed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, there is a lot of proof that my anxiety is (mostly) unfounded. My peers and colleagues consistently tell me I'm quite capable and a real asset. Short-term contracts have been extended for months, sometimes even years. I've never been fired (read: &lt;em&gt;exposed&lt;/em&gt;). &lt;/p&gt;

&lt;p&gt;There's also the fact that there are a lot more capabilities that define a "good" developer. Being good with people, being able to handle stress, being able to juggle stakeholder demands, not being a complete 💩. There are many people that would even say that technical knowledge is not what makes a senior developer "Senior", it's actually the soft skills that are most important.&lt;/p&gt;

&lt;p&gt;I tried telling myself all of the above for many years. Guess what: I'm still struggling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 Cognitive behavioral therapy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of &lt;em&gt;telling&lt;/em&gt; myself that there's proof and that I shouldn't be so hard on myself, there's an alternative: CGT.&lt;/p&gt;

&lt;p&gt;I learned about CGT, or "&lt;em&gt;proofing myself otherwise&lt;/em&gt;", during the recovery process my wife went through after she had a burn-out. Her symptoms were strangely familiar. She came home one day with this technique, and I soon began to see the benefits of this concept.&lt;/p&gt;

&lt;blockquote&gt;
&lt;h3&gt;
  
  
  Basic tenents of CBT
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N9E9MFOI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/1/1c/Depicting_basic_tenets_of_CBT.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N9E9MFOI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/1/1c/Depicting_basic_tenets_of_CBT.jpg" alt="Basic tenents of CBT"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: &lt;a href="https://en.wikipedia.org/wiki/Cognitive_behavioral_therapy"&gt;Wikipedia&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The concept is that you answer a list of questions to challenge your negative thoughts. These challenges make you reflect on the difference between your thoughts and the facts. Afterwards you should feel (slighly) better about these thoughts. This technique greatly helped my wife in recovery, and I am currently beginning to follow suit.&lt;/p&gt;

&lt;p&gt;Whenever I am confronted with fear or doubt about myself, I try to answer the following questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define the negative thought.&lt;/li&gt;
&lt;li&gt;How strong is this negative thought? (0% - 100%)&lt;/li&gt;
&lt;li&gt;How accurate is this negative thought?&lt;/li&gt;
&lt;li&gt;Evaluate the evidence for and against this thought.&lt;/li&gt;
&lt;li&gt;How strong is the original negative thought (0% - 100%)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result should be that the strength of the negative though decreases, because you are evaluating the reasoning behind it. After doing this exercise for a while I am beginning to see progress. We can't change ourselves in a day, especially not if something has been building up for years. But sticking with this process will yield better results than staying fearful.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👜 Takeaways&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Be aware of your negative thoughts&lt;/li&gt;
&lt;li&gt;Challenge your negative thoughts&lt;/li&gt;
&lt;li&gt;Be consistent&lt;/li&gt;
&lt;li&gt;Stay at it, it can be a long road to recovery&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But remember, it's worth it if you end up feeling better!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/SJUhlRoBL8M"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>career</category>
      <category>psychology</category>
      <category>mentalhealth</category>
      <category>impostorsyndrome</category>
    </item>
  </channel>
</rss>
