<?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>Forem: Brandon Charest</title>
    <description>The latest articles on Forem by Brandon Charest (@brandoncharest).</description>
    <link>https://forem.com/brandoncharest</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%2F689688%2Fc1617e71-470b-4668-bd7a-5b1c5ce81a6d.png</url>
      <title>Forem: Brandon Charest</title>
      <link>https://forem.com/brandoncharest</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/brandoncharest"/>
    <language>en</language>
    <item>
      <title>How I Stopped Over-Thinking and Started Shipping</title>
      <dc:creator>Brandon Charest</dc:creator>
      <pubDate>Mon, 29 Dec 2025 16:30:11 +0000</pubDate>
      <link>https://forem.com/brandoncharest/how-i-stopped-over-thinking-and-started-shipping-e62</link>
      <guid>https://forem.com/brandoncharest/how-i-stopped-over-thinking-and-started-shipping-e62</guid>
      <description>&lt;h2&gt;
  
  
  The Analysis Paralysis and the Cycle of Abandoned Projects
&lt;/h2&gt;

&lt;p&gt;I found myself constantly stuck &lt;em&gt;trying&lt;/em&gt; to create new projects and had perfected the art of quickly killing it by over-analyzing. Each time I came up with a new idea I found myself constantly stuck trying to create new projects and had perfected the art of killing them before they lived. Each time I came up with a new idea, I'd get lost in the smallest details.&lt;/p&gt;

&lt;p&gt;You know when those details mattered? &lt;strong&gt;Never.&lt;/strong&gt; Because I never finished any of the projects.&lt;/p&gt;

&lt;p&gt;After reflecting on this problem for a little while, I wondered what if I built just a completely ridiculous project, something that had no serious value and was strictly just for fun.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "Stupid" Idea: Weaponized Insults
&lt;/h2&gt;

&lt;p&gt;The idea is simple: a user inputs a password, and the API returns a security score... and an insult.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it yourself:&lt;/strong&gt; &lt;a href="https://roastmypassword.com/" rel="noopener noreferrer"&gt;roastmypassword.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yup, that's it. No stakes, no pressure, just a fun little project.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Over-Engineering Trap
&lt;/h2&gt;

&lt;p&gt;I still wanted to learn something along the way, and since I use Python, JavaScript, and Java daily for work, I decided to implement the API in Rust. I have been wanting to learn more about the language for a while, and thought this would be as good a time as any.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Trap
&lt;/h3&gt;

&lt;p&gt;No sooner did I start, I caught myself thinking too far ahead... &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"Whats the best structure I should use so I could scale this easier in the future?"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"What if I need a database?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;"What kind of database?"&lt;/em&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;..and various other thoughts about clever ways I could implement the insult generator. &lt;/p&gt;

&lt;h3&gt;
  
  
  Breaking Free
&lt;/h3&gt;

&lt;p&gt;This time I made myself remember, all these thoughts are not getting me any close to finishing this. So I literally stopped worrying about what &lt;strong&gt;could be&lt;/strong&gt; needed and just started writing &lt;strong&gt;only&lt;/strong&gt; what I needed right now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Embracing the "Good Enough"
&lt;/h2&gt;

&lt;p&gt;Giving myself permission to be &lt;em&gt;lazy&lt;/em&gt; was the hardest part of the project. But once I did all the technical decisions became obvious. I did not need a React SPA application with Redux state management, or a database to store insults, or anything complex. I needed a function that took in a string and returned a string.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Language:&lt;/strong&gt; Rust (because I wanted to learn it and insult users blazingly fast)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; AWS Lambda&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; A single HTML file. No build steps, no node_modules.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The code is simple. It uses the &lt;a href="https://crates.io/crates/zxcvbn" rel="noopener noreferrer"&gt;&lt;code&gt;zxcvbn&lt;/code&gt;&lt;/a&gt; crate to calculate the strength of the password, and a simple "Mad Libs" style insult generator to construct the insult.&lt;/p&gt;

&lt;h2&gt;
  
  
  The $0.00 Deployment
&lt;/h2&gt;

&lt;p&gt;In the past, this is where I would have spent the next few hours or days, trying to find a clever solution with my insult generator. I would have tried to come up with a more scalable solution.&lt;/p&gt;

&lt;p&gt;Instead, I deployed it.&lt;/p&gt;

&lt;p&gt;The frontend is just a index.html file hosting on Cloudflare Pages. The backend is a Rust binary running on Lambda. It costs me $0.00/month to run.&lt;/p&gt;

&lt;p&gt;Is it perfect? No, in fact I am almost positive I have some spelling mistakes and bugs. Does it scale to millions of users? Probably not, (but I'm sure Rust helps with that). Does it make me laugh? Yes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Moral of the Story
&lt;/h2&gt;

&lt;p&gt;As engineers we are trained to think about the edge cases, scalability, performance, architecture patterns, and "future-proofing".&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(I'm looking at you Database Abstraction Layer. You know, just in case I decide to migrate from PostgreSQL to MongoDB to Cassandra next Tuesday)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But for a side project, future-proofing is just procrastination with extra steps.&lt;/p&gt;

&lt;p&gt;By choosing to build something "stupid", I was able to make that mental shift and removed the pressure to be "smart". I learned more about Rust, and managing my own deployment to AWS in a weekend then I would have if I spent the next few days/months watching more tutorials and researching to build a more "serious" project. Not everything needs to be perfect or serious, sometimes its nice to just have fun.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your turn:&lt;/strong&gt; Stop over-thinking. Start shipping. Have fun.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>rust</category>
      <category>beginners</category>
      <category>aws</category>
    </item>
    <item>
      <title>Getting Started With Kafka Using Docker</title>
      <dc:creator>Brandon Charest</dc:creator>
      <pubDate>Wed, 29 Jun 2022 18:59:38 +0000</pubDate>
      <link>https://forem.com/brandoncharest/getting-started-with-kafka-using-docker-3aon</link>
      <guid>https://forem.com/brandoncharest/getting-started-with-kafka-using-docker-3aon</guid>
      <description>&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;Before we do anything let's make sure we have Docker installed.&lt;/p&gt;

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

&lt;p&gt;Docker Desktop is a simple and easy way to manage containers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.docker.com/desktop/mac/install/" rel="noopener noreferrer"&gt;Mac&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.docker.com/desktop/windows/install/" rel="noopener noreferrer"&gt;Windows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.docker.com/desktop/linux/install/" rel="noopener noreferrer"&gt;Linux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is &lt;a href="https://kafka.apache.org/" rel="noopener noreferrer"&gt;Kafka&lt;/a&gt;?
&lt;/h2&gt;

&lt;p&gt;Kafka is an open source streaming platform that was developed by LinkedIn written in Java and Scala and is now under the Apache foundation.&lt;/p&gt;

&lt;p&gt;In simple terms Kafka is a message broker, which helps transmit messages from one system to another in realtime, now I understand that this is a major simplification as to exactly what Kafka is and does but for now this definition will work. To note, there are other products that achieve similar results, some popular ones are &lt;a href="https://redis.io/" rel="noopener noreferrer"&gt;Redis&lt;/a&gt; and &lt;a href="https://www.rabbitmq.com/" rel="noopener noreferrer"&gt;RabbitMQ&lt;/a&gt;, each with there own pros and cons that I wont go into here.&lt;/p&gt;

&lt;p&gt;We will also be using a service called Zookeeper which is used to manage Kafka cluster, track the node status and maintain a list of topics and messages and manage a bunch of other metadata. &lt;/p&gt;

&lt;p&gt;It is possible to use Kafka without Zookeeper by using Kafka Raft Metadata Mode (KRaft). Which is available in experimental mode in Kafka 2.8 and should be ready for production by Kafka 3.3. But for this we are just going to stick with using Zookeeper&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Kafka Using Docker
&lt;/h2&gt;

&lt;p&gt;Now that we have Docker and understand a little bit about Kafka we can start.&lt;/p&gt;

&lt;p&gt;I like to create a separate folder for all my projects so for this I will call it 'kafka-docker'.&lt;/p&gt;

&lt;p&gt;We will be using the following containers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bitnami/kafka
bitnami/zookeeper
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are other images available for Kafka and Zookeeper and you can use which ever you prefer, I have just chosen these two.&lt;/p&gt;

&lt;p&gt;Instead of setting this up manually we are going to use &lt;a href="https://docs.docker.com/compose/" rel="noopener noreferrer"&gt;Compose&lt;/a&gt;. If you have not used Docker Compose before essentially its a convenient way to work with multiple containers at once using a single YAML config file.&lt;/p&gt;

&lt;p&gt;Inside the folder you created, create a YAML file with the following information. By default &lt;strong&gt;docker-compose&lt;/strong&gt; looks for a file called 'docker-config' but you can name it whatever you want.&lt;/p&gt;

&lt;p&gt;docker-config.yml&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;version: "3"
services:
  zookeeper:
    image: 'bitnami/zookeeper:latest'
    ports:
      - '2181:2181'
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
  kafka:
    image: 'bitnami/kafka:latest'
    ports:
      - '9092:9092'
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    depends_on:
      - zookeeper
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We do not need anything too special for this config file so we can take this for the documentation found &lt;a href="https://hub.docker.com/r/bitnami/kafka" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If ports &lt;strong&gt;9092&lt;/strong&gt; or &lt;strong&gt;2181&lt;/strong&gt; are not available for your system feel free to change them to ports that you have open and available.&lt;/p&gt;

&lt;p&gt;Once that file is created its time to use &lt;strong&gt;docker-compose&lt;/strong&gt; to setup our containers for us.&lt;/p&gt;

&lt;p&gt;Inside the same folder that has your YAML config file run the following.&lt;/p&gt;

&lt;p&gt;Format:&lt;br&gt;
docker-compose -f &amp;lt;&lt;em&gt;nameOfYourConfig.yml&lt;/em&gt;&amp;gt; up -d&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker-compose &lt;span class="nt"&gt;-f&lt;/span&gt; docker-compose.yml up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Command Breakdown:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;docker-compose&lt;/strong&gt;: Utility used to download/run the containers we defined in out config file&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;-f&lt;/strong&gt;: Specify an alternate compose file (default: docker-compose.yml)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;docker-compose.yml&lt;/strong&gt;: Our config file&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;up&lt;/strong&gt;: Create and start the containers specified in the config file&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;-d&lt;/strong&gt;: Run in detached mode. Containers will run in the background&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once finished let's check that everything is actually running.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Command Breakdown:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ps: List all containers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If all went smoothly you should see something in your terminal similar to below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7v2cuk1e91jcyjjzlajn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7v2cuk1e91jcyjjzlajn.png" alt="containersRunning" width="800" height="72"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We did it! We are now up and running with Kafka using Docker!&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting to Kafka Shell
&lt;/h2&gt;

&lt;p&gt;With Kafka up and running we can create a connection to it.&lt;/p&gt;

&lt;p&gt;Format:&lt;br&gt;
docker exec -it --user &amp;lt;&lt;em&gt;userName&lt;/em&gt;&amp;gt; &amp;lt;&lt;em&gt;nameOfContainer&lt;/em&gt;&amp;gt; bash&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="nt"&gt;--user&lt;/span&gt; root kafka-docker_kafka_1 bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Command Breakdown:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;exec&lt;/strong&gt;: Run a command in a running container&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;-it&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;-i&lt;/strong&gt;: Interactive mode&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;-t&lt;/strong&gt;: Pseudo Terminal&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;--user&lt;/strong&gt;: Username of user id&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;root&lt;/strong&gt;: Name of the user we are going to login as&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;kafka-docker_kafka_1&lt;/strong&gt;: Our container name we want to run the commands on&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;bash&lt;/strong&gt;: Open interactive Bash session&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;If all goes well we should have opened a new Bash session side our Kafka container!&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7n4rgk5svkz8bdfe0pc9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7n4rgk5svkz8bdfe0pc9.png" alt="insideKafka" width="800" height="53"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  That's A Wrap
&lt;/h2&gt;

&lt;p&gt;At this point you have a fully functioning Kafka instance running inside Docker.&lt;/p&gt;

&lt;p&gt;I like to try and keep posts relatively short so I will save going over a little more about what Kafka is, creating topics, and creating some microservices to can interact with each other using Kafka for the next blog post, I am hoping for this to be a small series so be sure to check back!&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>docker</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Terminal: Copy Current Path</title>
      <dc:creator>Brandon Charest</dc:creator>
      <pubDate>Wed, 22 Jun 2022 13:28:48 +0000</pubDate>
      <link>https://forem.com/brandoncharest/terminal-copy-current-path-30a</link>
      <guid>https://forem.com/brandoncharest/terminal-copy-current-path-30a</guid>
      <description>&lt;h2&gt;
  
  
  TLDR:
&lt;/h2&gt;

&lt;p&gt;Create this alias into your .aliases/.zshrc/.bashrc or where ever you store aliases for easier use later.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;alias cpwd="pwd | tr -d '\n' | pbcopy &amp;amp;&amp;amp; echo 'pwd copied to clipboard'"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Recently I have been spending a little more time using the terminal for work and have had a few instances where I needed to copy the current directory I am in. Now in most cases you could just use the mouse to highlight and copy the directory you need, but I am &lt;del&gt;pretty lazy&lt;/del&gt; motivated to try and make this a little easier as I suppose there could be a time where using a mouse is not an option.&lt;/p&gt;

&lt;h2&gt;
  
  
  Parts Breakdown
&lt;/h2&gt;

&lt;h2&gt;
  
  
  pwd: print working directory
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ pwd
/User/(username)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Prints the current directory path you are in.&lt;/p&gt;




&lt;h2&gt;
  
  
  tr: translate characters
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tr -d '\n'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will copy standard input to the standard output with substation or deletion of selected characters.&lt;/p&gt;

&lt;p&gt;The pwd command above will produce the working directory string but it will have a line return character '\n' appended to it.&lt;/p&gt;

&lt;p&gt;We use the -d command to signal that we want to delete a character off the string and '\n' to signal which character we wish to delete.&lt;/p&gt;




&lt;h2&gt;
  
  
  Copying to system clipboard
&lt;/h2&gt;

&lt;p&gt;Depending on if you are on OSX or Windows the copy command could be different&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Windows&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;clip&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;OSX&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;pbcopy&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;this will copy text to the system clipboard (by default).&lt;/p&gt;




&lt;h2&gt;
  
  
  echo: Writes to the standard output.
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo 'pwd copied to clipboard'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This part is not needed I just personally like to have something in my commands that will tell me that the command was at least executed.&lt;/p&gt;




&lt;h2&gt;
  
  
  Pipe it all together
&lt;/h2&gt;

&lt;p&gt;All of these above commands are used with a pipe '|' which will feed the 'output' of one command to the next.&lt;/p&gt;

&lt;p&gt;So the flow will be the following.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;pwd prints out the working directory&lt;/li&gt;
&lt;li&gt;That output is now fed to our &lt;strong&gt;tr&lt;/strong&gt; argument which will remove the trialling newline character&lt;/li&gt;
&lt;li&gt;finally that entire string will be placed into our clipboard for use with the help of pbcopy/clip.&lt;/li&gt;
&lt;li&gt;Then an echo at the very end will just print to the screen that the command has been executed&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Final
&lt;/h2&gt;

&lt;p&gt;Now this is far from the only way to do this, I believe a popular way would be to just use &lt;strong&gt;xclip&lt;/strong&gt; but that may take an install and I tried to find a way to use only what is available by default.&lt;/p&gt;

&lt;p&gt;I hope that someone may find his useful. What are some of the things you have learned in the terminal that has saved you time/made things easier? Let me know! 😃&lt;/p&gt;

</description>
      <category>bash</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>zsh</category>
    </item>
  </channel>
</rss>
