<?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: Arafat Iqbal</title>
    <description>The latest articles on DEV Community by Arafat Iqbal (@arafatiqbal).</description>
    <link>https://dev.to/arafatiqbal</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%2F973433%2F7cef47a9-fdea-4f71-87f6-b0acb12af371.jpeg</url>
      <title>DEV Community: Arafat Iqbal</title>
      <link>https://dev.to/arafatiqbal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arafatiqbal"/>
    <language>en</language>
    <item>
      <title>Intro to Testing in Ember.js</title>
      <dc:creator>Arafat Iqbal</dc:creator>
      <pubDate>Sun, 11 Dec 2022 05:47:03 +0000</pubDate>
      <link>https://dev.to/arafatiqbal/testing-in-emberjs-4p5f</link>
      <guid>https://dev.to/arafatiqbal/testing-in-emberjs-4p5f</guid>
      <description>&lt;p&gt;&lt;a href="https://emberjs.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Ember.js&lt;/strong&gt;&lt;/a&gt; is a popular JavaScript framework for building ambitious web applications. It provides a robust set of tools for testing and ensuring the reliability of your code. In this blog post, we will explore the different types of tests that you can write in Ember.js and how to set up your testing environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of tests in Ember.js
&lt;/h2&gt;

&lt;p&gt;Ember.js uses QUnit as its testing library, which provides several types of tests that you can write for your application. The most common types are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Unit tests&lt;/strong&gt;: These tests focus on a single unit of code, such as a function or a service. They are usually small and fast, and they test the individual components of your application in isolation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Integration tests&lt;/strong&gt;: These tests focus on the interactions between multiple components of your application. They are typically longer and more complex than unit tests, and they test how the different parts of your application work together.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Acceptance tests&lt;/strong&gt;: These tests focus on simulating the behavior of a user using your application. They are typically written in a natural language, such as English, and they test the end-to-end functionality of your application.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setting up the testing environment
&lt;/h2&gt;

&lt;p&gt;To get started with testing in Ember.js, you will need to set up the testing environment in your project. This typically involves installing the necessary dependencies, configuring the test runner, and creating the necessary files and folders for your tests.&lt;/p&gt;

&lt;p&gt;To install the necessary dependencies, run the following command in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; ember-qunit ember-cli-qunit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will install the &lt;strong&gt;ember-qunit&lt;/strong&gt; and &lt;strong&gt;ember-cli-qunit&lt;/strong&gt; packages, which provide the necessary tools for running tests in Ember.js.&lt;/p&gt;

&lt;p&gt;Next, you will need to configure the test runner by creating a &lt;strong&gt;testem.js&lt;/strong&gt; file in the root of your project. This file should look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;test_page&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;tests/index.html?hidepassed&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;disable_watching&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;launch_in_ci&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Chrome&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;launch_in_dev&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Chrome&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This configuration specifies that the test runner should use the tests/index.html file as the entry point for running tests, and it should launch the tests in Chrome. You can customize this configuration to suit your specific needs.&lt;/p&gt;

&lt;p&gt;Finally, you will need to create the necessary files and folders for your tests. In Ember.js, tests are typically organized into the following folders:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;unit&lt;/strong&gt;: This folder contains unit tests for your application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;integration&lt;/strong&gt;: This folder contains integration tests for your application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;acceptance&lt;/strong&gt;: This folder contains acceptance tests for your application.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of these folders should contain a tests subfolder, where you will place the individual test files for your application. For example, if you want to write a unit test for a user-service service, you would create a user-service-test.js file in the unit/tests folder.&lt;/p&gt;

&lt;h2&gt;
  
  
  Writing tests in Ember.js
&lt;/h2&gt;

&lt;p&gt;Once you have set up your testing environment, you can start writing tests for your Ember.js application. In this section, we will go over the basics of how to write tests in Ember.js using QUnit.&lt;/p&gt;

&lt;p&gt;The basic structure of a test in Ember.js is as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;test&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;qunit&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nf"&gt;module&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Unit | Service | user service&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;hooks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;hooks&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;beforeEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Runs before each test in this module&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="nx"&gt;hooks&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;afterEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Runs after each test in this module&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;it exists&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;service&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;owner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lookup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;service:user-service&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;service&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;it does something&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;service&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;owner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lookup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;service:user-service&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;equal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;service&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;doSomething&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, we are writing a unit test for a &lt;strong&gt;user-service&lt;/strong&gt; service. We have defined two tests: &lt;strong&gt;it exists&lt;/strong&gt; and &lt;strong&gt;it does something&lt;/strong&gt;. The &lt;strong&gt;it exists&lt;/strong&gt; test simply checks that the service exists and is properly registered with Ember's dependency injection system. The &lt;strong&gt;it does something&lt;/strong&gt; test calls a method on the service and checks that it returns the expected result.&lt;/p&gt;

&lt;p&gt;Each test consists of a call to the &lt;strong&gt;test&lt;/strong&gt; function, which takes a description of the test and a callback function that contains the actual test code. The callback function is provided with an &lt;strong&gt;assert&lt;/strong&gt; object, which contains a number of helper methods for making assertions about the state of your application. In the example above, we are using the &lt;strong&gt;ok&lt;/strong&gt; and &lt;strong&gt;equal&lt;/strong&gt; methods to make assertions about the service.&lt;/p&gt;

&lt;p&gt;In addition to the &lt;strong&gt;test&lt;/strong&gt; function, you can also use the &lt;strong&gt;module&lt;/strong&gt; function to group related tests together. The &lt;strong&gt;module&lt;/strong&gt; function takes a description of the module and a callback function that contains the setup and teardown code for the tests in the module. In the example above, we are using the &lt;strong&gt;hooks.beforeEach&lt;/strong&gt; and &lt;strong&gt;hooks.afterEach&lt;/strong&gt; hooks to run some code before and after each test in the module.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running tests in Ember.js
&lt;/h2&gt;

&lt;p&gt;Once you have written some tests for your Ember.js application, you can run them using the &lt;strong&gt;ember test&lt;/strong&gt; command. This command will launch the test runner and execute all of the tests in your application. You can specify which types of tests you want to run by using the &lt;strong&gt;--filter&lt;/strong&gt; option, for example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ember &lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="nt"&gt;--filter&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;unit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will only run the unit tests in your application. You can also run the tests in a specific module by using the &lt;strong&gt;--module&lt;/strong&gt; option, for example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ember &lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="nt"&gt;--filter&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;unit &lt;span class="nt"&gt;--module&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;user service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will only run the unit tests in the &lt;strong&gt;user service&lt;/strong&gt; module.&lt;/p&gt;

&lt;p&gt;Ember.js also provides a few other options for running tests, such as the ability to run the tests in watch mode or to generate a code coverage report. You can learn more about these options by running the &lt;strong&gt;ember help test&lt;/strong&gt; command.&lt;/p&gt;

&lt;p&gt;In conclusion, testing is an important part of building reliable and maintainable applications with Ember.js. By using the tools provided by QUnit and Ember.js, you can easily write and run tests for your application to ensure that it behaves as expected. Happy testing!&lt;/p&gt;

</description>
      <category>java</category>
      <category>spring</category>
      <category>ai</category>
    </item>
    <item>
      <title>Top 5 Must Have Mac Apps</title>
      <dc:creator>Arafat Iqbal</dc:creator>
      <pubDate>Thu, 17 Nov 2022 06:38:01 +0000</pubDate>
      <link>https://dev.to/arafatiqbal/top-5-must-have-mac-apps-16n3</link>
      <guid>https://dev.to/arafatiqbal/top-5-must-have-mac-apps-16n3</guid>
      <description>&lt;p&gt;Here are some of my favorite apps on the Mac that make my life as a developer easier. &lt;/p&gt;

&lt;p&gt;Let's get started&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;1. Rectangle&lt;/strong&gt;
&lt;/h2&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%2Fy0ndljwnzvtyhjm89lzl.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%2Fy0ndljwnzvtyhjm89lzl.png" alt="Picture of Rectangle" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mac window management is trash. This helps you organize your windows on your desktop. There are paid versions of this exact app like magnet, but why would you want to pay...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://rectangleapp.com/" rel="noopener noreferrer"&gt;Install Rectangle&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2. Gifox&lt;/strong&gt;
&lt;/h2&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%2Fps4oqbuh6k7anzhubpa4.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%2Fps4oqbuh6k7anzhubpa4.png" alt="Picture of Gifox" width="694" height="561"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Do you ever need to show something to someone, but screen recording is too much and a screenshot wouldn't show everything? Why not send a gif instead! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://gifox.app/" rel="noopener noreferrer"&gt;Install Gifox&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;3. Notion&lt;/strong&gt;
&lt;/h2&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%2F9sgw5w8dtd7aiu1fmytv.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%2F9sgw5w8dtd7aiu1fmytv.png" alt="Picture of Notion" width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notion has to be one of the best note apps. There are things I don't like about it, but for the most part, it does what you tell it to, and your notes stay oragnized.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.notion.so/" rel="noopener noreferrer"&gt;Install Notion&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;4. iTerm2&lt;/strong&gt;
&lt;/h2&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%2Fjnanxske07l212ozxvqu.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%2Fjnanxske07l212ozxvqu.png" alt="Picture of iTerm2" width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The default terminal for mac is okay. It will get the job done. iTerm2 gives you a few more customizations + features.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://iterm2.com/" rel="noopener noreferrer"&gt;Install iTerm2&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;5. Boop&lt;/strong&gt;
&lt;/h2&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%2Foersa8c564g0n9mxsur6.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%2Foersa8c564g0n9mxsur6.png" alt="Picture of Boop" width="800" height="641"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you work with a lot of text often, Boop will help you modify it based on pre-existing scripts. For example, you have a super messy unformated json file. Paste it into boop, and run the format json script! Done!&lt;br&gt;
&lt;a href="https://apps.apple.com/us/app/boop/id1518425043?mt=12" rel="noopener noreferrer"&gt;Install Boop&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mac</category>
      <category>apps</category>
      <category>developer</category>
      <category>productivity</category>
    </item>
    <item>
      <title>First 5 Months, as a Jr. Dev</title>
      <dc:creator>Arafat Iqbal</dc:creator>
      <pubDate>Thu, 17 Nov 2022 01:52:03 +0000</pubDate>
      <link>https://dev.to/arafatiqbal/first-5-months-as-a-jr-dev-2abl</link>
      <guid>https://dev.to/arafatiqbal/first-5-months-as-a-jr-dev-2abl</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Background&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In the spring of 2022, I graduated with my computer science degree. Through out my time in college I did not get any professional software engineering experience. 0 SWE internships, 0 Co-Ops, nothing. After graduation, the next most logical step for me was to start looking at internships/ jobs. I landed an internship which eventually turned into a full-time position. For me, the transition from Student -&amp;gt; Software Engineer, was a bit rough, especially coming in with 0 professional experience. I want to share somethings that I wish I knew before started my first job, as well as how it's been going the past 5 months.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Things I wish I knew before starting&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Git/ Github&lt;/strong&gt;: Using git was one of the hardest things I had to learn when coming into the professional world. I did not get much team experience working on projects in school, that might not be the case for you. But I struggled a lot with understanding how to...&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Branching and Merging&lt;/em&gt;: For the most part you will learn these concepts just by doing them. The main thing I will say is, if you don't have an internship, or have never worked with a team of people before, look into open source projects. Open source projects are a great way to step your foot into the "professional" world. In addition to this, I will attach a few resources down below that helped me out a ton.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Creating PRs&lt;/em&gt;: You will do this a lot, and I mean A LOT. Make sure that when you create a pull request, that it's easy to review. Someone who has never touched this piece of code previously, should be able to read what you are trying to do in your PR.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add comments to explain findings, or ask questions&lt;/li&gt;
&lt;li&gt;Make sure the description explains what you are trying to do.&lt;/li&gt;
&lt;li&gt;Don't spam commit. Make your commits tell a story. It makes reviewing the PR a lot easier.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Reviewing PRs&lt;/em&gt;: When reviewing PRs, there are a few things that I started doing. If I don't understand something at all, I would leave questions (don't be embarrassed about asking stupid questions). Checkout the branch, and run the code yourself. Run tests. If you see something odd, point it out (ex: commented out code, random debuggers, etc). &lt;/p&gt;

&lt;p&gt;You won't learn or understand a lot of git commands, unless you do them. Sure, it's important to read about them, and understand what they do, but make sure you practice and use them. Here are a few things I used to make my learning experience easier.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did you mess something up, and want a quick fix? &lt;a href="https://ohshitgit.com/" rel="noopener noreferrer"&gt;https://ohshitgit.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Struggling with understanding branching? &lt;a href="https://learngitbranching.js.org" rel="noopener noreferrer"&gt;https://learngitbranching.js.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;If you can't use the command line, find a GUI that you enjoy, and use that. Here are a couple good ones.

&lt;ul&gt;
&lt;li&gt;GitHub Desktop &lt;a href="https://desktop.github.com/" rel="noopener noreferrer"&gt;https://desktop.github.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Built in VsCode GUI &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;https://code.visualstudio.com/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Make a sandbox project, make branches, mess something up, try to fix it.&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Testing&lt;/strong&gt;: Testing is something that isn't talked a lot about in most computer science programs, but is almost always present in the professional world. Code without tests, is trash. Your tests should fail, if your code doesn't work correctly. Make sure to keep that in mind when writing them. In one of my first tests, I had to assert a DOM element existed. I used a class, that another DOM element also had, so even if my element wasn't present, the test would pass. This is bad. Tests were not on my priority list when I first started, but are definitely something I look to add now. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Communication&lt;/strong&gt;: If you are ever stuck, or don't even know where to start with a problem/ task. Ask. Everyone knows that you are new. Nobody expects you to know everything. Ask for help. A lot of people take this a bit too far though. I wouldn't want to be spammed questions every second. Try to figure it out on your own first. Chances are, the first task you are given might be fairly simple. Look at your organizations GitHub, and find similar PRs of someone else doing the same task. Try to do it on your own, before reaching out. When you reach out, explain what you have tried, and where you currently are with this problem. Overall, just be descriptive about your findings. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's okay to not know&lt;/strong&gt;: Every person at one point did not know. But as you progress, and experience different problems, solutions, tasks, you will start to pick things up quick. The first time you do something is very challenging, but the more you experience it, the easier it gets. Coming in, you might be thinking about learning everything, but it's okay to not know. Focus on specific things that interest you, and learn about them. You don't have to learn about every single thing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
I have only been working for about 5 months now, and I can proudly say that I have learned so much, and am excited to keep expanding my knowledge. There are certain things that I still need to improve upon, such as communication, but I'm actively setting goals for myself. Being a software engineer is fun, and a lot different than what I expected, but I'm happy to be here, and super excited for the future. I really hope this helps someone who also recently started, and is in a similar boat as me.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
