<?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: Edvin Dunaway</title>
    <description>The latest articles on DEV Community by Edvin Dunaway (@eddinn).</description>
    <link>https://dev.to/eddinn</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%2F110306%2F6bb0570c-f4e8-4e7d-9081-53bdb14f9a8a.jpg</url>
      <title>DEV Community: Edvin Dunaway</title>
      <link>https://dev.to/eddinn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eddinn"/>
    <language>en</language>
    <item>
      <title>Streamlining the setup of a new user workspace on Ubuntu/Fedora</title>
      <dc:creator>Edvin Dunaway</dc:creator>
      <pubDate>Thu, 24 Oct 2019 13:40:38 +0000</pubDate>
      <link>https://dev.to/eddinn/streamlining-the-setup-of-a-new-user-workspace-on-ubuntu-fedora-pi0</link>
      <guid>https://dev.to/eddinn/streamlining-the-setup-of-a-new-user-workspace-on-ubuntu-fedora-pi0</guid>
      <description>&lt;p&gt;I’ve been wanting to streamline the process of how I set up a new workspace with all the base packages, programs, addons and dotfiles I use and need when I set up a new computer, so I decided to write a script that does exactly that for me.&lt;br&gt;
Sure, I could use Ansible or Puppet and even just Git, to store, save and apply all my settings and programs, but you know.. I like shell scripts!&lt;br&gt;
Also, this gives me the advantage to install everything without having to set up Ansible, Puppet or Git beforehand..&lt;/p&gt;




&lt;p&gt;So, lets go over what the scripts do and what they install (&lt;em&gt;the&lt;/em&gt; &lt;strong&gt;&lt;em&gt;README.md&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;in the repo goes into more detail, so make sure to read it&lt;/em&gt;)&lt;/p&gt;

&lt;h4&gt;
  
  
  Looking at the initial-package-install.sh and post-initial.sh scripts
&lt;/h4&gt;

&lt;p&gt;The &lt;strong&gt;initial-package-install.sh&lt;/strong&gt; script checks what Linux distribution I’m using (&lt;em&gt;I only use Fedora and Ubuntu, so those are the only options, but it’s easy to add other distros if needed..&lt;/em&gt;), and based on that information, installs the corresponding packagebase that I’ve selected, along with Google Chrome and TeamViewer, so that I have the tools I need without having to install them all by hand.&lt;br&gt;
The &lt;strong&gt;post-initial.sh&lt;/strong&gt; script then installs all the snap applications that I want, some Python3 pip modules, my dotfiles (&lt;em&gt;via&lt;/em&gt; &lt;strong&gt;&lt;em&gt;stowit.sh&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;which utilizes the&lt;/em&gt; &lt;strong&gt;&lt;em&gt;stow&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;command in a function&lt;/em&gt;), Oh-My-Zsh for zsh and lastly all the extensions that I use for VSCode and Gnome-Shell.&lt;/p&gt;

&lt;h4&gt;
  
  
  What to take into consideration before running these scripts
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Read the &lt;strong&gt;README.md&lt;/strong&gt; to further familiarize yourself with what the scripts do and how &lt;code&gt;stowit.sh&lt;/code&gt; works&lt;/li&gt;
&lt;li&gt;Make sure to look over the packagebase and change out/add any packages that you want/need&lt;/li&gt;
&lt;li&gt;The same goes for the snaps and Python3 pip packages and VSCode/Gnome-Shell extensions&lt;/li&gt;
&lt;li&gt;Edit and/or replace the dotfiles that you need/use in the &lt;code&gt;./dots/&lt;/code&gt; directory&lt;/li&gt;
&lt;li&gt;Remember, this is not an replacement for an complete configuration, the scripts are just to get you up and running faster, you still need to configure individual settings and applications&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;The scripts will keep on evolving and I will add new features as I need them to further streamline my workspace setup.&lt;br&gt;
Go ahead and check out the initial-package-install script repository on my Github!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/eddinn/initial-package-install"&gt;Check out this repository on GitHub.com (this link opens in a new window)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.eddinn.net/2019/10/24/streamlining-the-setup-of-a-new-user-workspace-on-ubuntu-fedora/"&gt;Streamlining the setup of a new user workspace on Ubuntu/Fedora Read More »&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>scripting</category>
      <category>automation</category>
      <category>shell</category>
    </item>
    <item>
      <title>Backups with rdiff-backup and mysqldump</title>
      <dc:creator>Edvin Dunaway</dc:creator>
      <pubDate>Sat, 19 Oct 2019 20:19:28 +0000</pubDate>
      <link>https://dev.to/eddinn/backups-with-rdiff-backup-and-mysqldump-15l6</link>
      <guid>https://dev.to/eddinn/backups-with-rdiff-backup-and-mysqldump-15l6</guid>
      <description>&lt;p&gt;I’ve been using rdiff-backup for my server backups along with mysqldump for the sql data for years now, as it gives me the ability to browse the increments on file system level and is extremely efficient and easy to use, both for local files and remote.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;So what is rdiff-backup anyway?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;rdiff-backup backs up one directory to another, possibly over a network. The target directory ends up a copy of the source directory, but extra reverse diffs are stored in a special subdirectory of that target directory, so you can still recover files lost some time ago. The idea is to combine &lt;strong&gt;the best features of a mirror and an incremental backup&lt;/strong&gt;. rdiff-backup also preserves subdirectories, hard links, dev files, permissions, uid/gid ownership, modification times, extended attributes, acls, and resource forks. Also, rdiff-backup can operate in a &lt;strong&gt;bandwidth efficient&lt;/strong&gt; manner over a pipe, like rsync. Thus you can use rdiff-backup and ssh to securely back a hard drive up to a remote location, and only the differences will be transmitted. Finally, rdiff-backup is &lt;strong&gt;easy to use&lt;/strong&gt; and settings have sensical defaults.&lt;/p&gt;

&lt;p&gt;– Taken from the official rdiff-backup page, &lt;a href="http://www.nongnu.org/rdiff-backup/"&gt;http://www.nongnu.org/rdiff-backup/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Important: If you are operating over a network, you’ll have to install rdiff-backup on both servers, preferably both installations of rdiff-backup will have to be the exact same version.&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  On Ubuntu/Debian:
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;librsync-dev rdiff-backup
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  On Fedora:
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;dnf &lt;span class="nb"&gt;install &lt;/span&gt;librsync rdiff-backup
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  On RHEL/CentOS:
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
rpm &lt;span class="nt"&gt;-ivh&lt;/span&gt; epel-release-7-9.noarch.rpm
yum &lt;span class="nb"&gt;install &lt;/span&gt;librsync rdiff-backup
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  rdiff-backup usage examples
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Backup of a local directory:
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;rdiff-backup foo bar
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  Backup a local directory to a remote location:
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;rdiff-backup /local-dir &lt;span class="nb"&gt;hostname&lt;/span&gt;::/remote-dir
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  Restoring a local directory:
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; bar/dir foo/dir
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  Restoring files backed up 10 days ago:
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;rdiff-backup &lt;span class="nt"&gt;-r&lt;/span&gt; 10D &lt;span class="nb"&gt;hostname&lt;/span&gt;::/remote-dir/file /tmp/file
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;You can also backup and restore from a remote location to another remote location.&lt;br&gt;
&lt;em&gt;Detailed examples can be found here:&lt;/em&gt; &lt;a href="http://www.nongnu.org/rdiff-backup/examples.html"&gt;&lt;em&gt;http://www.nongnu.org/rdiff-backup/examples.html&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is the original version of the script that I use to backup my web and sql servers to a NFS mount on my backup server:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/eddinn/backup"&gt;&lt;strong&gt;Backup script that utilizes rdiff-backup&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/eddinn/backup"&gt;https://github.com/eddinn/backup&lt;/a&gt;&lt;/p&gt;

</description>
      <category>backups</category>
      <category>linux</category>
      <category>mysql</category>
      <category>scripting</category>
    </item>
    <item>
      <title>The Dev Saloon</title>
      <dc:creator>Edvin Dunaway</dc:creator>
      <pubDate>Tue, 15 Oct 2019 22:23:35 +0000</pubDate>
      <link>https://dev.to/eddinn/the-dev-saloon-3i1h</link>
      <guid>https://dev.to/eddinn/the-dev-saloon-3i1h</guid>
      <description>&lt;p&gt;Hi!&lt;br&gt;
Sorry for the off-topic post..&lt;/p&gt;

&lt;p&gt;I've created a Discord server for devs, admins and others who want to discuss, contribute to and learn about programming, system administration and development.&lt;br&gt;
It would be awesome if anyone would like to join and test it out with me, and I'm also looking for moderators for the long run, if anyone is interested.&lt;/p&gt;

&lt;p&gt;Link: &lt;a href="https://discord.gg/zfN8NTA"&gt;https://discord.gg/zfN8NTA&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
      <category>webdev</category>
      <category>bash</category>
    </item>
    <item>
      <title>There are only 10 types of people...</title>
      <dc:creator>Edvin Dunaway</dc:creator>
      <pubDate>Thu, 04 Jul 2019 22:49:22 +0000</pubDate>
      <link>https://dev.to/eddinn/there-are-only-10-types-of-people-e8g</link>
      <guid>https://dev.to/eddinn/there-are-only-10-types-of-people-e8g</guid>
      <description>&lt;p&gt;...those who understand binary, and those who don't.&lt;/p&gt;

</description>
      <category>jokes</category>
    </item>
    <item>
      <title>My zsh setup</title>
      <dc:creator>Edvin Dunaway</dc:creator>
      <pubDate>Sun, 23 Jun 2019 15:40:00 +0000</pubDate>
      <link>https://dev.to/eddinn/my-zsh-setup-2gge</link>
      <guid>https://dev.to/eddinn/my-zsh-setup-2gge</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%2Fwww.eddinn.net%2Fimages%2F1%2Fb%2Ff%2Fa%2F9%2F1bfa9018e2e882683ea5ae08e0a4dcfbcf5d5aec-zsh.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%2Fwww.eddinn.net%2Fimages%2F1%2Fb%2Ff%2Fa%2F9%2F1bfa9018e2e882683ea5ae08e0a4dcfbcf5d5aec-zsh.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I switched from using &lt;code&gt;bash&lt;/code&gt; to &lt;code&gt;zsh&lt;/code&gt; as my main shell environment and never looked back. You can find my &lt;code&gt;.zshrc&lt;/code&gt; config file with &lt;a href="https://github.com/robbyrussell/oh-my-zsh" rel="noopener noreferrer"&gt;Oh-My-ZSH&lt;/a&gt; enabled on &lt;a href="https://github.com/eddinn/zsh/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Theme
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ZSH_THEME="agnoster"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  My .zshrc plugin list
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;plugins=(
  git
  dotenv
  rake
  ruby
  ansible
  autoenv
  autopep8
  docker
  docker-compose
  docker-machine
  django
  git-prompt
  gnu-utils
  man
  nmap
  npm
  pip
  pipenv
  pyenv
  pylint
  python
  rsync
  sudo
  systemd
  ubuntu
  virtualenv
  vscode
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>blog</category>
      <category>zsh</category>
      <category>zshrc</category>
    </item>
    <item>
      <title>Manage dotfiles with the GNU stow command</title>
      <dc:creator>Edvin Dunaway</dc:creator>
      <pubDate>Sun, 23 Jun 2019 10:49:00 +0000</pubDate>
      <link>https://dev.to/eddinn/manage-dotfiles-with-the-gnu-stow-command-33f6</link>
      <guid>https://dev.to/eddinn/manage-dotfiles-with-the-gnu-stow-command-33f6</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gzih-rrP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.eddinn.net/images/1/c/a/4/8/1ca487714880de770218b25b4cc88322aac18bc1-tree-view.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gzih-rrP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.eddinn.net/images/1/c/a/4/8/1ca487714880de770218b25b4cc88322aac18bc1-tree-view.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've been looking for a good way to manage my dotfiles and configs, and I found &lt;a href="https://dev.to/writingcode/how-i-manage-my-dotfiles-using-gnu-stow-4l59"&gt;this article&lt;/a&gt; written by &lt;a href="https://dev.to/autoferrit"&gt;Shawn McElroy&lt;/a&gt; about managing your dotfiles with GNU stow.&lt;/p&gt;

&lt;p&gt;So I applied his methods to my config and so far I'm very pleased, and I initialized an git repo on my &lt;a href="https://github.com/eddinn/dotfiles"&gt;GitHub page&lt;/a&gt; with an initial config and README.md&lt;/p&gt;

</description>
      <category>blog</category>
      <category>dotfiles</category>
      <category>zsh</category>
      <category>bash</category>
    </item>
    <item>
      <title>What plugins do you use for PyCharm?</title>
      <dc:creator>Edvin Dunaway</dc:creator>
      <pubDate>Tue, 30 Oct 2018 21:48:04 +0000</pubDate>
      <link>https://dev.to/eddinn/what-plugins-do-you-use-for-pycharm-245f</link>
      <guid>https://dev.to/eddinn/what-plugins-do-you-use-for-pycharm-245f</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VQP0YFXK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/c10y0mi7c90a7tt8qh9e.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VQP0YFXK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/c10y0mi7c90a7tt8qh9e.jpg" alt="PyCharm"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After testing Atom and Sublime, I've been figuring my way around PyCharm for my python/flask/django development adventures, and I always find myself installing, testing and removing plugins to get what I could say the "Ultimate IDE environment".&lt;/p&gt;

&lt;p&gt;So I'm curious, and thus ask you this: What plugins do you think are essential to have for &lt;em&gt;your&lt;/em&gt; "Ultimate IDE environment"?&lt;/p&gt;

&lt;p&gt;Thanks,&lt;/p&gt;

&lt;p&gt;-E&lt;/p&gt;

</description>
      <category>pycharm</category>
      <category>plugins</category>
      <category>python</category>
    </item>
    <item>
      <title>Getting to know Grav CMS</title>
      <dc:creator>Edvin Dunaway</dc:creator>
      <pubDate>Sun, 04 Mar 2018 22:01:00 +0000</pubDate>
      <link>https://dev.to/eddinn/getting-to-know-grav-cms-1khk</link>
      <guid>https://dev.to/eddinn/getting-to-know-grav-cms-1khk</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7k7bG7TF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.eddinn.net/images/4/d/6/5/d/4d65db4660c82500d25b168d8684c319897709ba-grav.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7k7bG7TF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.eddinn.net/images/4/d/6/5/d/4d65db4660c82500d25b168d8684c319897709ba-grav.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've been figuring my way around the &lt;a href="https://getgrav.org/"&gt;Grav CMS platform&lt;/a&gt;, and so far I like it. It has some learning curve to know ones way around the core and how it's all put togeather, but all in all it works very well. My only concern is that it's easy to break the system with minor config adjustments. While Grav has alot of themes and plugins to enrich your site, it still is very much a hands on platform where you need to get to know your way around TWIG, Markdown and YAML along with the good old HTML and CSS.&lt;/p&gt;

</description>
      <category>blog</category>
      <category>gravcms</category>
    </item>
  </channel>
</rss>
