<?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: Tyrel Hiebert</title>
    <description>The latest articles on DEV Community by Tyrel Hiebert (@tyrelh).</description>
    <link>https://dev.to/tyrelh</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%2F836194%2F1888d684-d5b3-455e-a92d-6d95e4134f8f.png</url>
      <title>DEV Community: Tyrel Hiebert</title>
      <link>https://dev.to/tyrelh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tyrelh"/>
    <language>en</language>
    <item>
      <title>What is DevOps?</title>
      <dc:creator>Tyrel Hiebert</dc:creator>
      <pubDate>Sun, 17 Apr 2022 17:26:38 +0000</pubDate>
      <link>https://dev.to/tyrelh/what-is-devops-4031</link>
      <guid>https://dev.to/tyrelh/what-is-devops-4031</guid>
      <description>&lt;p&gt;In my role as a software engineer at my day job, I’ve been getting more interested in DevOps as a career trajectory. But what does that even mean? Do I even know?&lt;/p&gt;

&lt;p&gt;This is a brief exploration into what DevOps is and how I see it relating to a small development team.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w2r1YDfm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uyq5159y1qdtdadu5nyo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w2r1YDfm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uyq5159y1qdtdadu5nyo.jpg" alt="DevOps Cycle from Atlassian" width="868" height="543"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Index
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Tl;dr&lt;/li&gt;
&lt;li&gt;Initial Assumptions&lt;/li&gt;
&lt;li&gt;Operations &amp;amp; Facilitators&lt;/li&gt;
&lt;li&gt;
Agile Development

&lt;ul&gt;
&lt;li&gt;Quick Iteration&lt;/li&gt;
&lt;li&gt;Feedback &amp;amp; Data&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Automation&lt;/li&gt;
&lt;li&gt;Not Only Software Development&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;li&gt;Resources&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tl;dr
&lt;/h2&gt;

&lt;p&gt;Here are a few key ideas that I think define what DevOps is and what someone in a DevOps position should focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automate things like dev environment setup and employ tools to make writing code simple. Make it easy and painless to write code.&lt;/li&gt;
&lt;li&gt;Automate testing so developers and teams are confident in the code being produced. Developers shouldn't have to "remember" to run tests.&lt;/li&gt;
&lt;li&gt;Automate infrastructure provisioning and blue/green deployments. Code that's reviewed and ready to go should be able to reach customers with a single click (with proper authentication). Make deploying new code trivial.&lt;/li&gt;
&lt;li&gt;Automate data collection and illumination for the dev team primarily but also for the business side depending on the size of your company.&lt;/li&gt;
&lt;li&gt;And I think in general, a DevOps role should facilitate software development by increasing confidence in work being done by both engineers and product managers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Initial Assumptions
&lt;/h2&gt;

&lt;p&gt;Earlier on in my career and in university, DevOps was a buzz word that was thrown around all the time. When I heard the term DevOps I associated that with “cloud infrastructure”. I was connecting the idea of “building things on cloud infrastructure” to the role of DevOps.&lt;/p&gt;

&lt;p&gt;While using cloud infrastructure might be one aspect of the tools and responsibilities of a DevOps role, it doesn’t get to the root of what the role is about.&lt;/p&gt;

&lt;h2&gt;
  
  
  Operations &amp;amp; Facilitators
&lt;/h2&gt;

&lt;p&gt;Within a software company, big or small, there are various so-called “Operations” roles. Business Operations, Customer Operations, Insert Anything Operations. My perspective on these roles in general is that they are facilitator roles rather than managerial roles. “Managers” may often have an Officer title, while “facilitators” may have an Operations title.&lt;/p&gt;

&lt;p&gt;What do I mean by Facilitators? These are roles that essentially amplify the work in a given area or team. Their job is to ensure process and procedure are in place so that work can get done effectively, impactfully, and efficiently. It’s not necessarily their job to oversee the work being done, but to boost the impact and productivity of the work being done.&lt;/p&gt;

&lt;p&gt;DevOps is short for Development Operations. And in my context as a software engineer, Development is actually short for Software Development (Development can mean many different things in different fields).&lt;/p&gt;

&lt;p&gt;So in more plain language, the role of DevOps is related to the operations of the development team and the development lifecycle. Ok, so that sounds more appropriate than just “cloud infrastructure”, but what is involved in the operations of those things?&lt;/p&gt;

&lt;h2&gt;
  
  
  Agile Development
&lt;/h2&gt;

&lt;p&gt;While I’m no expert on Agile development practices, I’ve been working with variations of it for my entire software development career thus far.&lt;/p&gt;

&lt;p&gt;In essence, Agile (with a capital A) is intended to make the development process more iterative and quick to react to user feedback. Rather than blocking out big periods of time for large projects that overhaul huge portions of the customer experience, we attempt to release work quicker and in smaller pieces to get feedback on particular features sooner.&lt;/p&gt;

&lt;p&gt;This allows us to not waste time perfecting features that our customers don’t want or won’t use. Instead we can focus more directly on things that are impactful for our customers and our bottom line. Therefore, one aspect of a DevOps role is facilitating the Agile development process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick Iteration
&lt;/h3&gt;

&lt;p&gt;Getting code written, reviewed, and deployed quickly helps you then iterate on that code sooner, leading to better experiences for the customer over time. Building and improving processes around code testing, review, and deployment is a key facilitator opportunity for a DevOps role. This can cover many different things, from automating testing and deployments to improving code review process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Feedback &amp;amp; Data
&lt;/h3&gt;

&lt;p&gt;Timely feedback is also vital to the Agile development process. Both user experience feedback and systems operation feedback (through statistics and error reporting). This feedback informs subsequent development cycles and how features, tweaks, and bug fixes are prioritized against each other for the greatest impact. Developing systems to effectively and concisely collect and relay feedback to the appropriate developers and project leads allows for more informed decision making, and thus is another key responsibility of a DevOps role.&lt;/p&gt;

&lt;h2&gt;
  
  
  Automation
&lt;/h2&gt;

&lt;p&gt;There are many pieces of manual work and human intervention in the software development cycle, and the level of automation in place can vary wildly between different teams and companies. I entered my software development career from essentially a cloud-native perspective, having little to no experience deploying code in a different paradigm.&lt;/p&gt;

&lt;p&gt;But today, with things like IaC (infrastructure as code) and remote dev environments being the norm, every aspect of the developer experience can be automated in some way. Including writing code believe it or not.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dev environment setup can be automated with old tools like Docker, or emerging tools like &lt;a href="https://www.jetbrains.com/space/"&gt;JetBrains Space&lt;/a&gt;.&lt;/strong&gt; Space is essentially a remote dev environment that helps teams standardize their development environments across a team. Space is in closed beta as of the writing of this article. GitHub &amp;amp; Microsoft are working on similar tools with GitHub Codespaces and VS Code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writing code can be automated with new tools like &lt;a href="https://copilot.github.com/"&gt;GitHub Copilot&lt;/a&gt;.&lt;/strong&gt; Copilot is a machine learning tool that has learned how to write code in many popular languages. While it can't directly replace a human developer yet, it can greatly speed up the process of writing code from scratch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reviewing, unit-testing, and merging code can be automated with tools like GitHub and &lt;a href="https://github.com/features/actions"&gt;GitHub Actions&lt;/a&gt;.&lt;/strong&gt; There is still a bit of human touch needed in the review process to ensure features are truly meeting the business needs of the brief, but reviewing security and dependencies for example can be greatly sped up with the help of automation tools. Running tests can be automated with a variety of CI tools. Merging code and resolving merge conflicts has become downright trivial with tools like git and GitHub.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploying code to infrastructure can be automated with a variety of CD tools.&lt;/strong&gt; I've been mainly interested in GitHub Actions and automating deployments to AWS. But I'm now also interested in learning more about AWS CDK (cloud development kit). &lt;a href="https://github.blog/2021-01-25-improving-how-we-deploy-github/"&gt;This blog post from GitHub&lt;/a&gt; has been quite influential in my current thinking about automated deployments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App stats and error monitoring can be automated with tools like Sentry, Datadog, and NewRelic.&lt;/strong&gt; Those stats can be viewed through there respective dashboards or made more accessible through things like Slack bots.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Not Only Software Development
&lt;/h2&gt;

&lt;p&gt;In a small company or on a small team, often certain roles wear many hats. In our case, business operations bleed into the development team all the time. People working with clients, company finances, product managers, or even the CEO, will often have inquiries for data about various aspects of our business operations.&lt;/p&gt;

&lt;p&gt;Without adequate access to that data, requests can sometimes fall on developers who are familiar with the system and the data. Ad-hoc SQL queries to our database can sometimes be the norm, but this isn’t an efficient use of anyone's time.&lt;/p&gt;

&lt;p&gt;Building systems and interfaces to our company’s data can be integral to operations and development. Depending on the size of the company and the other roles there, this idea of data illumination could fall on a Business Operations role, but often it can require integration and understanding of the technical stack that is foundational to your application. Therefore that responsibility can fall on a DevOps role, to build digestible interfaces and secure pipelines to get the relevant data to the team members that need it.&lt;/p&gt;

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

&lt;p&gt;In summary, I see DevOps as primarily a facilitator and multiplier role. Depending on the size of the team they could be simultaneously doing development themselves, but the focus is on how to make the development team more productive.&lt;/p&gt;

&lt;p&gt;Facilitating the development team to be more productive means a few things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make code easy and painless to write. Automate environment setup.&lt;/li&gt;
&lt;li&gt;Make code simple to test. Automate tests.&lt;/li&gt;
&lt;li&gt;Make code trivial to deploy when ready. Automate infrastructure and blue/green deployments.&lt;/li&gt;
&lt;li&gt;Make data about development, testing, and deployment visible to the team. Automate data collection and illumination with tools like Datadog.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My summary and this article represents my understanding and opinions right now (Spring 2022). I am constantly learning and improving on my career journey and my knowledge and opinions will undoubtedly change over time.&lt;/p&gt;

&lt;p&gt;If you have any comments or suggestions please feel free to reach out to me on Twitter &lt;a href="https://twitter.com/tyrelhiebert"&gt;@tyrelhiebert&lt;/a&gt;! 👋🏻&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://itrevolution.com/the-phoenix-project/"&gt;The Phoenix Project&lt;/a&gt; - Gene Kim, Kevin Behr, and George Spafford&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.blog/2021-01-25-improving-how-we-deploy-github/"&gt;Improving how we deploy GitHub&lt;/a&gt; - GitHub Blog&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.atlassian.com/devops/what-is-devops"&gt;DevOps principles&lt;/a&gt; - Atlassian&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This article originally appeared on my blog &lt;a href="https://superflux.dev/blog/what-is-devops"&gt;superflux.dev&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>automation</category>
      <category>githubactions</category>
      <category>agile</category>
    </item>
    <item>
      <title>What I'm Learning in 2022</title>
      <dc:creator>Tyrel Hiebert</dc:creator>
      <pubDate>Sat, 26 Mar 2022 16:23:43 +0000</pubDate>
      <link>https://dev.to/tyrelh/what-im-learning-in-2022-4n2b</link>
      <guid>https://dev.to/tyrelh/what-im-learning-in-2022-4n2b</guid>
      <description>&lt;p&gt;Here are some things that I'd like to learn more about in 2022. This is kinda a reference for myself. So I can look back at this next year and reflect on what I learned and what I wanted to learn. &lt;a href="https://twitter.com/tyrelhiebert"&gt;Let me know on twitter&lt;/a&gt; if you are learning these same things or you have any tips or resources to share!&lt;/p&gt;

&lt;h2&gt;
  
  
  Index
&lt;/h2&gt;

&lt;p&gt;Learning from scratch&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Vim/NeoVim&lt;/li&gt;
&lt;li&gt;AWS DynamoDB&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Learning more of&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Github Actions&lt;/li&gt;
&lt;li&gt;AWS Client VPN, VPNs in general, and SSO&lt;/li&gt;
&lt;li&gt;SSH&lt;/li&gt;
&lt;li&gt;HTTPS/SSL&lt;/li&gt;
&lt;li&gt;Raspberry Pi&lt;/li&gt;
&lt;li&gt;Home Network&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Things I'm interested in but might not get to this year&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A better static site generator / CMS&lt;/li&gt;
&lt;li&gt;Webhooks&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Learning from scratch
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Docker
&lt;/h3&gt;

&lt;p&gt;Docker really feels like one of those technologies that I've been conveniently ignoring for a little too long. I think what I'll do to start is simply try to containerize some smaller projects I'm working on this year to dip my toes in.&lt;/p&gt;

&lt;p&gt;I acquired a handful of second-hand Raspberry Pis not long ago and I've got a few ideas for some small home automation &amp;amp; monitoring projects that might be perfect simple projects to dockerize.&lt;/p&gt;

&lt;p&gt;A stretch goal would be to work up to containerizing our monolithic app at my day job.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vim/NeoVim
&lt;/h3&gt;

&lt;p&gt;I've always just barely snuck by with my fluency in the terminal. The more I get into networking and Dev Ops the more this deficiency is showing. In general I'd just like to work in the terminal a bit more this year.&lt;/p&gt;

&lt;p&gt;Specifically I'm going to try to develop a couple Node and Python projects I'm cooking up remotely on the Raspberry Pis I hope to run them on.&lt;/p&gt;

&lt;p&gt;Really two main goals I'd like to accomplish with this practice:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Get proficient and comfortable using vim.&lt;/li&gt;
&lt;li&gt;Learn more about making a portable and lightweight dev environment. Something that I can easily spin up on a Raspberry Pi or AWS EC2 instance over SSH and feel comfortable doing real work in.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  AWS DynamoDB
&lt;/h3&gt;

&lt;p&gt;I wasn't actually planning on learning DynamoDB at the start of the year. But a project idea came to mind and the possibility of using Dynamo to store data rather than something like S3 sounded intriguing.&lt;/p&gt;

&lt;p&gt;Essentially what I'm planning is building out a few Raspberry Pi temperature sensors for my house. Maybe 4 or 5 in total monitoring a few rooms in the house as well as the outdoor temperature.&lt;/p&gt;

&lt;p&gt;The idea would be to collect data from all these sensors using Raspberry Pis maybe every 5 mins or so, and ship that data off to Dynamo. Then building an infrastructure to rotate through tables. Basically make a new table each day with a high write provision, and rotate down the previous days tables read and write provisions. Maybe after some period archive the data in S3.&lt;/p&gt;

&lt;p&gt;Might be over engineering for the task, but it's for learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning more of
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Github Actions
&lt;/h3&gt;

&lt;p&gt;Automation is a big focus for me this year. And really just because I rely on Github both personally and professionally, Github Actions is a natural choice to skill up in.&lt;/p&gt;

&lt;p&gt;We're now looking into automating and outsourcing our test suite at work and since we use Github for source control and code reviews/pull requests it makes total sense to use Github Actions.&lt;/p&gt;

&lt;p&gt;I've automated a few things using Github Actions already, namely &lt;a href="https://github.com/tyrelh/battlesnake-typescript-node"&gt;tests and deployment of my&lt;/a&gt; &lt;a href="https://play.battlesnake.com/"&gt;Battlesnake&lt;/a&gt; to AWS Elastic Beanstalk. Automating even just tests for our app at work will be a bit more of a challenge since it's a much older stack and has many more moving parts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-time-series.html"&gt;Best Practices for Handling Time Series Data in DynamoDB&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS Client VPN, VPNs in general, and SSO
&lt;/h3&gt;

&lt;p&gt;With my day job going fully remote this year, setting up secure remote tools has been high on our priority list. Part of that will be learning about AWS Client VPN which we may use to grant our devs access to some of our AWS infrastructure.&lt;/p&gt;

&lt;p&gt;Part of this work is also moving to more zero trust architecture, and leaning into SSO for authentication.&lt;/p&gt;

&lt;p&gt;Also I recently acquired a Synology NAS for my home (which we actually use to use in our office before we gave that space up). I'm looking to centralize alot of my personal cloud use to the Synology and move away from services like Google Drive (office and documents), iCloud (photos), and Notion (notes). Part of that will be to setup a VPN at home so that I can use those services hosted in my home from anywhere. As well as accessing some of my Raspberry Pis for remote development.&lt;/p&gt;

&lt;h3&gt;
  
  
  SSH
&lt;/h3&gt;

&lt;p&gt;Learning more about SSH and tunneling goes hand-in-hand with a few other learning priorities I have. Learning best practices for connecting securely and crafting secure infrastructure. Also using SSH to practice remote development and learning terminal based tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  HTTPS/SSL
&lt;/h3&gt;

&lt;p&gt;Same as above. Learning more about best practices around secure remote communication. Getting more confident understanding certs and how they work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Raspberry Pi
&lt;/h3&gt;

&lt;p&gt;I've owned a Raspberry Pi 3 for a handful of years now, but I've never really had a project for it. I experimented a bit with retro game emulation on it, but those projects are pretty trivial to setup.&lt;/p&gt;

&lt;p&gt;Now I have a handful of Raspberry Pi 2s and 3s and I have some plans for some smaller single purpose projects for the house that will be perfect for them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Home network
&lt;/h3&gt;

&lt;p&gt;This kinda just happened organically, but I have a lot of computers in my house now! What I'd like to do is centralize a bunch of things into a proper rack. I have a few computers that are mining cryptocurrency that I'd like to transfer to rack-mountable server cases. Along with my new Synology NAS and a few Raspberry Pis.&lt;/p&gt;

&lt;p&gt;Wiring my house with Cat-6 probably won't happen any time soon, but centralizing a bunch of things in a rack will let me hard-wire them all to a small switch without needing to run cables through all my walls.&lt;/p&gt;

&lt;p&gt;Like I mentioned above, also setting up network storage and remote access for my home network.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things I'm interested in but might not get to
&lt;/h2&gt;

&lt;h3&gt;
  
  
  A better static site generator / CMS
&lt;/h3&gt;

&lt;p&gt;My website currently is hand-built in Javascript and React with a few plugins that let me render my articles from markdown. There is still a fair amount of manual process to get each markdown file wired up to display as a page and route, but at least I don't need to reformat the article. I can just paste it in from my notes app and then wire it up.&lt;/p&gt;

&lt;p&gt;Ideally I'd like to learn a better static site generator to simplify this process even more. I've been thinking of learning &lt;a href="https://www.gatsbyjs.com/"&gt;Gatsby&lt;/a&gt; for a while now, but I've just found it a bit cumbersome and hard to get into.&lt;/p&gt;

&lt;p&gt;Some alternatives I'm considering learning instead of Gatsby are &lt;a href="https://jekyllrb.com/"&gt;Jeckyll&lt;/a&gt; or &lt;a href="https://hexo.io/"&gt;Hexo&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Webhooks
&lt;/h3&gt;

&lt;p&gt;Something I'm interested in learning more about.&lt;/p&gt;

&lt;h2&gt;
  
  
  End
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://twitter.com/tyrelhiebert"&gt;@ me on twitter&lt;/a&gt; if you are learning these same things or you have and tips or resources to share!&lt;/p&gt;

&lt;p&gt;This post originally appeared on my blog &lt;a href="https://superflux.dev/blog/what-im-learning-in-2022"&gt;superflux.dev&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>githubactions</category>
      <category>vim</category>
      <category>ssl</category>
    </item>
  </channel>
</rss>
