<?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: Natália Satie</title>
    <description>The latest articles on DEV Community by Natália Satie (@satie_sann).</description>
    <link>https://dev.to/satie_sann</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%2F230492%2F3e250b79-45d1-4dcf-aa97-76d624466835.jpg</url>
      <title>DEV Community: Natália Satie</title>
      <link>https://dev.to/satie_sann</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/satie_sann"/>
    <language>en</language>
    <item>
      <title>AI became my assistant to learning</title>
      <dc:creator>Natália Satie</dc:creator>
      <pubDate>Wed, 01 Apr 2026 16:56:50 +0000</pubDate>
      <link>https://dev.to/satie_sann/ai-became-my-assistant-to-learning-4o53</link>
      <guid>https://dev.to/satie_sann/ai-became-my-assistant-to-learning-4o53</guid>
      <description>&lt;p&gt;AI became a trend stronger than expected, and soon, became part of my routine as a software developer.&lt;/p&gt;

&lt;p&gt;As a skeptical millenial, I originally thought AI would become a trend that sooner or later will slow down. But become the opposite, and now here I am finding ways to make AI more present to my day to day routine.&lt;/p&gt;

&lt;p&gt;As an autistic person, planning and considering fictional scenarios never became easier to do. I have the dream to travel to Japan, but travelling overseas might be too overwhelming and too much stimuli for a single person to handle.&lt;/p&gt;

&lt;p&gt;I've been doing a year and a half studying the Japanese classes, and have already done a few weeks of Duolingo a few years back, but it was not enough to think how much effort I took to read hiragana, katakana and kanji to be stuck in a single place of boarding in a Tokyo airport. Or even, be inside of a konbini store and not to know if I want a bag or my food heated.&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%2Fraw.githubusercontent.com%2FNatSatie%2Fdevto-articles%2Frefs%2Fheads%2Fmain%2Farticles%2Fimg%2Fkonbini-anxiety.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%2Fraw.githubusercontent.com%2FNatSatie%2Fdevto-articles%2Frefs%2Fheads%2Fmain%2Farticles%2Fimg%2Fkonbini-anxiety.png" width="800" height="800" alt="Image generated by Gemini how I picture myself being extremely nervous to answer a Konbini cashier"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Caption: A image generated by Gemini of a woman nervous to answer a cashier from a konbini&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;After &lt;a href="https://www.coursera.org/programs/on-demand-courses-for-google-c4stl/specializations/prompting-essentials-google?authProvider=googlepeopledev&amp;amp;source=search" rel="noopener noreferrer"&gt;a few sessions understanding the potential of AI&lt;/a&gt; in my everyday life, I decided to take the opportunity to improve my Japanese lessons to a customizable session to create some fictional scenarios to understand how to read menus, plates, and even instructions. Since I'm a Brazilian-Japanese, it is mostly expected, due to my appearance, to a few Japanese folks think I'm fluent in the language.&lt;/p&gt;

&lt;p&gt;So, let me show how I've done so far using the last few weeks exercising, let's see the following prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a fictional situation of two people speaking in japanese. It should separate per speaker and the situation should be a person asking where is the airport.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Outcome
&lt;/h3&gt;

&lt;h4&gt;
  
  
  状況 (Situation): 空港で (At the Airport)
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;登場人物 (Characters):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;田中 (Tanaka):&lt;/strong&gt; Airport Staff&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;スミス (Smith):&lt;/strong&gt; Traveler&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;スミス:&lt;/strong&gt; すみません、国際線の出発ロビーはどこですか？ (Sumimasen, kokusaisen no shuppatsu robī wa doko desu ka?)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;田中:&lt;/strong&gt; 国際線ですね。あちらのエスカレーターで三階へ行ってください。 (Kokusaisen desu ne. Achira no esukarētā de sangai he itte kudasai.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;スミス:&lt;/strong&gt; 三階ですね。ありがとうございます。あの、チェックインカウンターは何時に開きますか？ (Sangai desu ne. Arigatō gozaimasu. Ano, chekkuin kauntā wa nanji ni akimasu ka?)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;田中:&lt;/strong&gt; 出発の三時間前に開きます。搭乗券はお持ちですか？ (Shuppatsu no sanjikan mae ni akimasu. Tōjōken wa omochi desu ka?)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;スミス:&lt;/strong&gt; いいえ、まだです。あそこで手続きをします。 (Iie, mada desu. Asoko de tetsuzuki o shimasu.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;田中:&lt;/strong&gt; 分かりました。あちらのカウンターでお願いします。 (Wakarimashita. Achira no kauntā de onegaishimasu.)&lt;/p&gt;

&lt;h3&gt;
  
  
  Adding the dialog to AI Studio using TTS (text-to-speech)
&lt;/h3&gt;

&lt;p&gt;&lt;iframe width="100%" height="166" src="https://w.soundcloud.com/player/?url=https://soundcloud.com/librarian-underground/dialog-1&amp;amp;auto_play=false&amp;amp;color=%23000000&amp;amp;hide_related=false&amp;amp;show_comments=true&amp;amp;show_user=true&amp;amp;show_reposts=false&amp;amp;show_teaser=true"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  What I learned with AI
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Built a self exercise to practise listening&lt;/li&gt;
&lt;li&gt;Learned more about kanji, particles and katakana reading&lt;/li&gt;
&lt;li&gt;Check mostly common mannerisms in the japanese language&lt;/li&gt;
&lt;li&gt;Positions of objects and existence of objects&lt;/li&gt;
&lt;li&gt;Quizzes and cards can be generated to help memorize&lt;/li&gt;
&lt;li&gt;If you don't want to save the audio like I did, you can use any TTS tool to read in japanese for you&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Downsides
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;While building, you've noticed the voice changed to female, while the speaker generated by AI was someone called Smith. This is a nitpick from my part, but still did the job of learning.&lt;/li&gt;
&lt;li&gt;Iterating too many times with the Gemini and other AI chatbots, might become too lengthy to revise again later, might become too annoying to scroll back to a result you've liked &lt;/li&gt;
&lt;li&gt;Open too many possibilities, I highly recommend to focus on a single topic to not become overwhelmed (Neurodivergent folks will understand to not fall into a rabbit hole)&lt;/li&gt;
&lt;li&gt;Be aware of limits of paid services, in my case, everything was done using free resources&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;I do not intend to cancel my Japanese classes or suggest to replace your language teacher. I'm here to show the potential shown that AI can enhance your learning to fit your situation best. In this case, my desperation to understand anything related to konbinis and airports terrifies me until this day.&lt;/p&gt;

&lt;p&gt;I also did a conversation related if I should drink water, carbonated water or tap water. It was really interesting as well.&lt;/p&gt;

&lt;p&gt;I'm trying to get used to a trend that became more than a part of my professional life, but it is also becoming a part of my routine.&lt;/p&gt;

&lt;p&gt;So, as long we're reasonable to estabilish limits how AI can automate and enhance our lives, we can do much more. Unfortunately, it still cannot clean dishes for me.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>Three months as Software Engineer Intern at Google Brazil</title>
      <dc:creator>Natália Satie</dc:creator>
      <pubDate>Thu, 09 Feb 2023 19:24:15 +0000</pubDate>
      <link>https://dev.to/satie_sann/three-months-as-software-engineer-intern-at-google-brazil-36nd</link>
      <guid>https://dev.to/satie_sann/three-months-as-software-engineer-intern-at-google-brazil-36nd</guid>
      <description>&lt;p&gt;Twenty-two people were selected to work as Software Engineer interns at Google Belo Horizonte (Brazil) for three months. A surprise that struck all of us, some believed it was a prank, others screamed of happiness. “What are the chances?” They wonder.&lt;/p&gt;

&lt;p&gt;Before talking about the experience I should explain how I found the Google internship, how I prepared and the preparation of the trip to Belo Horizonte.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before the internship
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Preparation to the interview
&lt;/h3&gt;

&lt;p&gt;I’m a computer science student at UNICAMP, University of Campinas in Brazil, and it’s very common to receive emails about the latest opportunities, so thanks to the secretary of the Institute of Computing, I was informed about the Google Internship. The opportunity was also a program for Black people communities and for people with disabilities.&lt;/p&gt;

&lt;p&gt;In the link of the registration, I also received material about tips and suggestions of a good curriculum vitae and how to perform nicely in a technical interview.&lt;/p&gt;

&lt;h3&gt;
  
  
  The interview
&lt;/h3&gt;

&lt;p&gt;So, I sent my curriculum vitae, and watched the Google interview live and finally waited for a few weeks. Then I received the first email to schedule my first interview. It was really a short interview in brazilian portuguese, it took about 40 to 45 minutes.&lt;/p&gt;

&lt;p&gt;I received a link for the interview, met my interviewer and I explained that I was in my last year of college and I asked a few questions about him and we started the actual interview. Overall, the most important questions were (no matter the type of question):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How to build your data, think of your data structure&lt;/li&gt;
&lt;li&gt;What kind of logic is required to make a certain condition, are there possible flaws in your first idea?&lt;/li&gt;
&lt;li&gt;Consider the first and last situation in the problem (define the criteria of the limits)&lt;/li&gt;
&lt;li&gt;Did you find any pattern about it? Is it possible to build a function about that?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The second interview was a bit more complex, with a couple of common topics from a conde interview, mine was about probabilies, but other interns had about string manipulation and graphs.&lt;/p&gt;

&lt;p&gt;What actually matters in the interview is to discuss with the interviewer about what you understand, ask questions and figure out with the interviewer how to solve the problem together.&lt;/p&gt;

&lt;p&gt;Something interesting is that the interviewer is responsible to evaluate and help you. The person should give enough information, and answer your question to lead to a common solution. Because what actually matters working in a big tech company is communication and teamwork for problem solving.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Internship
&lt;/h2&gt;

&lt;p&gt;All of the traveling costs were covered by Google, I had to travel from Campinas to Belo Horizonte, and got a hosted at a hotel near the office.&lt;/p&gt;

&lt;p&gt;Most of the first 2 weeks were filling forms, setting up the computer and getting used to their technologies.&lt;/p&gt;

&lt;p&gt;Google's technologies despite having a lot of common languages in their services, the hard part is to get used to their own architecture, product rules and their own libraries and frameworks.&lt;/p&gt;

&lt;p&gt;Each intern got assigned to a team and received a project plan to achieve in the three months with a host and co-host. The level of detail of each project and type of presentation changes from team to team and also from the department you’re working.&lt;/p&gt;

&lt;p&gt;Our work was mostly flexible, due to the transition from the remote work from and work in the office. A couple of days were needed to go to the office, which were the most interesting, there’s a great infrastructure and great enviroment.&lt;/p&gt;

&lt;p&gt;Google’s workflow is very collaborative, I worked with my host and co-host that made much easier, not just in programming, but Google has a lot of projects available making it quite hard to understand by myself.&lt;/p&gt;

&lt;p&gt;Also, you need to document your work properly, making sure it’s easier for the internship recruiters to evaluate your work later on. The internship itself is a whole evaluation if you’re worth being a Google’s employee.&lt;/p&gt;

&lt;p&gt;But not every moment is about work, you’re able to participate in many club activities, such as soccer, volley, board games, track and even games.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final remarks of the Internship
&lt;/h2&gt;

&lt;p&gt;The experience was truly unique, and I recommend to any student to try their selective process. Not just for your career, but it’s an experience you’re able to make new friends and learn new stuff that goes beyond computing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Useful tips
&lt;/h2&gt;

&lt;p&gt;Check it out Cracking the Coding Interview book, it’s really useful to understand the main practises.&lt;/p&gt;

&lt;p&gt;To check more opportunities check &lt;a href="https://careers.google.com/"&gt;Google Careers&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>internship</category>
      <category>google</category>
      <category>jobs</category>
      <category>work</category>
    </item>
    <item>
      <title>How to write a for loop in Javascript: a too many ways guide</title>
      <dc:creator>Natália Satie</dc:creator>
      <pubDate>Sat, 28 Jan 2023 14:13:35 +0000</pubDate>
      <link>https://dev.to/satie_sann/how-to-write-a-for-loop-in-javascript-a-too-many-ways-guide-5h03</link>
      <guid>https://dev.to/satie_sann/how-to-write-a-for-loop-in-javascript-a-too-many-ways-guide-5h03</guid>
      <description>&lt;p&gt;There’s a lot of possibilities and styles to write a loop in Javascript. In this article, I’ll show simple options, the readable options and least talked options.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Vanilla For loop&lt;/li&gt;
&lt;li&gt;While and Do-While Loop&lt;/li&gt;
&lt;li&gt;Calling forEach&lt;/li&gt;
&lt;li&gt;References&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Vanilla For loop
&lt;/h2&gt;

&lt;p&gt;This examples are mostly shown in tutorials, Stackoverflow questions and documentation.&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="c1"&gt;// Option 1: use a start and end value&lt;/span&gt;
&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;startValue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;endValue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Before the loop: i is set to startValue&lt;/span&gt;
    &lt;span class="c1"&gt;// After each iteration of the loop: i++ is executed&lt;/span&gt;
    &lt;span class="c1"&gt;// The loop continues as long as i &amp;lt;= endValue is true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;About the endValue:&lt;/strong&gt; If you want to check the array lenght you should use myArray.lenght&lt;br&gt;
&lt;strong&gt;About the i++:&lt;/strong&gt; it means i = i + 1, that increments one by one, you're also able to use i = i + anyValueYouWant&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="c1"&gt;// Option 2: use a For … in , mostly used if you have an array&lt;/span&gt;
&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nx"&gt;things&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// If things is an array, i will usually contain the array keys *not advised*&lt;/span&gt;
    &lt;span class="c1"&gt;// If things is an object, i will contain the member names&lt;/span&gt;
    &lt;span class="c1"&gt;// Either way, access values using: things[i]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Option 3: use a For … of &lt;/span&gt;
&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;things&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// there's no need to use the index&lt;/span&gt;
    &lt;span class="c1"&gt;// i is actually the object&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Benefits&lt;/strong&gt;&lt;br&gt;
✔️ Very easy to learn&lt;br&gt;
✔️ Readable&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Downsides&lt;/strong&gt;&lt;br&gt;
❌ Uses too many lines&lt;br&gt;
❌ Not appropriate to deal with Promises and async functions&lt;/p&gt;
&lt;h2&gt;
  
  
  While and Do-While Loop
&lt;/h2&gt;

&lt;p&gt;You're also able to use the &lt;code&gt;while&lt;/code&gt; to se a condition to your for loop, as long it's set the beggining value, the condition and the update.&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="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// beginning value&lt;/span&gt;
&lt;span class="k"&gt;while  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;endValue&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="c1"&gt;// condition to while stop&lt;/span&gt;
    &lt;span class="c1"&gt;// Do something&lt;/span&gt;
    &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// the update&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Another way is to use &lt;code&gt;do...while&lt;/code&gt;, but remember the test condition is different from the &lt;code&gt;while&lt;/code&gt;.  Check the documentation of &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/do...while" rel="noopener noreferrer"&gt;do...while&lt;/a&gt; and &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/while" rel="noopener noreferrer"&gt;while&lt;/a&gt;&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="c1"&gt;// Alternative: use a do.. while&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;do&lt;/span&gt;  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// loop body&lt;/span&gt;
    &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;  &lt;span class="k"&gt;while  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;endValue&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Benefits&lt;/strong&gt;&lt;br&gt;
✔️ You learn to use &lt;code&gt;while&lt;/code&gt; and &lt;code&gt;do..while&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Downsides&lt;/strong&gt;&lt;br&gt;
❌ Uses too many lines&lt;br&gt;
❌ If you forget any of your setup, the &lt;code&gt;while&lt;/code&gt; loop will run endlessly&lt;/p&gt;
&lt;h2&gt;
  
  
  Calling forEach
&lt;/h2&gt;

&lt;p&gt;When you're working with arrays, you might have found a whole set of method to deal with, one of them is &lt;code&gt;forEach&lt;/code&gt;. (&lt;a href="https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach" rel="noopener noreferrer"&gt;Documentation link&lt;/a&gt;).&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;myArray&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;element&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Do your operation here&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;element&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;&lt;strong&gt;Benefits&lt;/strong&gt;&lt;br&gt;
✔️ Few lines of code&lt;br&gt;
✔️ Loop through all the elements of your array&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Downsides&lt;/strong&gt;&lt;br&gt;
❌ Not appropriate for Promises and aysnc functions ( instead use &lt;a href="https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Promise/all" rel="noopener noreferrer"&gt;Promise.all&lt;/a&gt; )&lt;br&gt;
❌ You shouldn't use in cases that don't actually need to cover other conditions&lt;/p&gt;

&lt;h3&gt;
  
  
  If I can't use forEach, what should I do?
&lt;/h3&gt;

&lt;p&gt;Follow this guide from &lt;a href="https://stackoverflow.com/questions/9329446/loop-for-each-over-an-array-in-javascript" rel="noopener noreferrer"&gt;Stackoverflow discussion&lt;/a&gt;, I'll share a fraction of great options thata lot of users shared.&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;every&lt;/code&gt;  (&lt;a href="https://tc39.es/ecma262/#sec-array.prototype.every" rel="noopener noreferrer"&gt;spec&lt;/a&gt;  |  &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every" rel="noopener noreferrer"&gt;MDN&lt;/a&gt;) - stops looping the first time the callback returns a falsy value

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;some&lt;/code&gt;  (&lt;a href="https://tc39.es/ecma262/#sec-array.prototype.some" rel="noopener noreferrer"&gt;spec&lt;/a&gt;  |  &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some" rel="noopener noreferrer"&gt;MDN&lt;/a&gt;) - stops looping the first time the callback returns a truthy value&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;filter&lt;/code&gt;  (&lt;a href="https://tc39.es/ecma262/#sec-array.prototype.filter" rel="noopener noreferrer"&gt;spec&lt;/a&gt;  |  &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter" rel="noopener noreferrer"&gt;MDN&lt;/a&gt;) - creates a new array including elements where the callback returns a truthy value, omitting the ones where it doesn't&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;map&lt;/code&gt;  (&lt;a href="https://tc39.es/ecma262/#sec-array.prototype.map" rel="noopener noreferrer"&gt;spec&lt;/a&gt;  |  &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map" rel="noopener noreferrer"&gt;MDN&lt;/a&gt;) - creates a new array from the values returned by the callback&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;reduce&lt;/code&gt;  (&lt;a href="https://tc39.es/ecma262/#sec-array.prototype.reduce" rel="noopener noreferrer"&gt;spec&lt;/a&gt;  |  &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce" rel="noopener noreferrer"&gt;MDN&lt;/a&gt;) - builds up a value by repeatedly calling the callback, passing in previous values; see the spec for the details&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;reduceRight&lt;/code&gt;  (&lt;a href="https://tc39.es/ecma262/#sec-array.prototype.reduceright" rel="noopener noreferrer"&gt;spec&lt;/a&gt;  |  &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduceRight" rel="noopener noreferrer"&gt;MDN&lt;/a&gt;) - like  &lt;code&gt;reduce&lt;/code&gt;, but works in descending rather than ascending order&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/52080/how-do-i-build-a-loop-in-javascript" rel="noopener noreferrer"&gt;How do I build a loop in
JavaScript?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://javascript.info/while-for" rel="noopener noreferrer"&gt;Javascript fundamentals:
    While-for&lt;/a&gt; &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/do...while" rel="noopener noreferrer"&gt;Documentation of
    do...while&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/while" rel="noopener noreferrer"&gt;Documentation of
    while&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach" rel="noopener noreferrer"&gt;Documentation
    Array.prototype.forEach()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/9329446/loop-for-each-over-an-array-in-javascript" rel="noopener noreferrer"&gt;Loop (for each) over an array in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ansible</category>
      <category>cli</category>
      <category>automation</category>
      <category>devops</category>
    </item>
    <item>
      <title>Resolva desafios com Replit (e faça testes!)</title>
      <dc:creator>Natália Satie</dc:creator>
      <pubDate>Wed, 12 Jan 2022 15:30:06 +0000</pubDate>
      <link>https://dev.to/satie_sann/resolva-desafios-com-replit-e-faca-testes-3ik7</link>
      <guid>https://dev.to/satie_sann/resolva-desafios-com-replit-e-faca-testes-3ik7</guid>
      <description>&lt;p&gt;Quando se estuda boas práticas de programação, pode parecer difícil de estudar várias linguagens de programação no computador. Alguns desafios que percorrem em minha rotina são:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;IDE (ambiente de desenvolvimento) adequada&lt;/li&gt;
&lt;li&gt;Como compilar esse programa&lt;/li&gt;
&lt;li&gt;Instalação de pacotes, softwares necessários na máquina&lt;/li&gt;
&lt;li&gt;Qual o sistema operacional adequado&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Com esses problemas em mente, soa muito difícil de preparar o terreno para os estudos. Mas podemos melhorar isso usando o &lt;a href="https://replit.com/"&gt;Replit&lt;/a&gt;: uma ferramenta de desenvolvimento online.&lt;/p&gt;

&lt;p&gt;Não é necessário instalar nenhuma ferramenta, necessita apenas de acesso a internet e criar uma conta no site, pode ser integrado com uma conta da Google, Facebook ou Github.&lt;/p&gt;

&lt;h3&gt;
  
  
  Por que usar o Replit?
&lt;/h3&gt;

&lt;p&gt;Replit é uma ferramenta que vai economizar tempo de desenvolvimento, com ele é possível criar pequenas aplicações, compartilhar com outros usuários e fazer testes.&lt;/p&gt;

&lt;p&gt;Para desafios de programação, uma IDE online é ótima para conhecer linguagens novas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nfHMEARd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://raw.githubusercontent.com/NatSatie/images-repository/main/replit/msedge_tjlGamCqlP.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nfHMEARd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://raw.githubusercontent.com/NatSatie/images-repository/main/replit/msedge_tjlGamCqlP.gif" alt="Gif com demonstração de como funciona o Replit ao rodar um programa Hello World em Java" width="880" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como a IDE é online, é suscetível a erros e lentidão quando a complexidade do projeto se escala, por isso, tem a versão paga para providenciar os recursos computacionais necessários.&lt;/p&gt;

&lt;h3&gt;
  
  
  Indo além de executar e compilar: Testes Unitários
&lt;/h3&gt;

&lt;p&gt;Ao resolver desafios de programação, precisamos testar nossa aplicação e cobrir os casos de erro mais importantes. Por isso, no menu lateral do Replit, tem um ícone que leva a aba de testes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--y5tqGJ5n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/NatSatie/images-repository/main/replit/aba_testes.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--y5tqGJ5n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/NatSatie/images-repository/main/replit/aba_testes.png" alt="Visualização da aba de testes do Replit" width="880" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LqSGKc32--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://raw.githubusercontent.com/NatSatie/images-repository/main/replit/adiconar-teste.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LqSGKc32--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://raw.githubusercontent.com/NatSatie/images-repository/main/replit/adiconar-teste.gif" alt="Gif com demonstração de como adicionar um teste unitário" width="880" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esse programa verifica se uma string dada pelo input foi convertida para um valor inteiro. Nesse caso foi "1234" o valor de entrada e é verificado se o valor convertido para inteiro corresponde ao inteiro 1234.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p3haJrE8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://raw.githubusercontent.com/NatSatie/images-repository/main/replit/rodar-teste.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p3haJrE8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://raw.githubusercontent.com/NatSatie/images-repository/main/replit/rodar-teste.gif" alt="Gif com demonstração de como rodar um teste unitário" width="880" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como foi visto na interface, o teste foi um sucesso!&lt;/p&gt;

&lt;p&gt;Você pode testar criando um Replit de Java usando os mesmo arquivos a partir desse &lt;a href="https://github.com/NatSatie/replit-demonstration"&gt;repositório aqui&lt;/a&gt; e copiar o conteúdo em &lt;code&gt;Main.java&lt;/code&gt; e &lt;code&gt;StringToNumber.java&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Espero que tenham gostado do conteúdo, podem me seguir no Dev.to,  Github e Twitter.&lt;/p&gt;

</description>
      <category>java</category>
      <category>replit</category>
      <category>programming</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Interpretando dados com React Profiler (pt-br)</title>
      <dc:creator>Natália Satie</dc:creator>
      <pubDate>Sun, 05 Sep 2021 18:51:02 +0000</pubDate>
      <link>https://dev.to/satie_sann/interpretando-dados-com-react-profiler-pt-br-5flm</link>
      <guid>https://dev.to/satie_sann/interpretando-dados-com-react-profiler-pt-br-5flm</guid>
      <description>&lt;p&gt;Quando trata-se de uma aplicação um tanto complexa, é natural que as soluções que antes tinham sido colocadas tornem-se obsoletas, devido ao consumo de dados e a complexidade das relações entre componentes da árvore DOM.&lt;/p&gt;

&lt;p&gt;Por isso, a partir de uma aplicação já pré-pronta ( &lt;a href="https://github.com/NatSatie/pokemon-list"&gt;Github do projeto Pokemon List&lt;/a&gt;, vamos verificar quais são as falhas do projeto e identificar o que temos que melhorar no requisito de performance e desempenho.&lt;/p&gt;

&lt;h2&gt;
  
  
  O React Profiler
&lt;/h2&gt;

&lt;p&gt;É uma ferramenta da extensão &lt;a href="https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi"&gt;React Dev Tools&lt;/a&gt; do Google Chrome usada para avaliar quantas vezes a componente foi carregada em uma aplicação de React.&lt;/p&gt;

&lt;p&gt;Ao observar a imagem abaixo, temos uma sequência de barras coloridas que correspondem às componentes que são carregadas no React. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OKdg4uV---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/NatSatie/StudyNotes/main/react/reactprofiler/screenoverview.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OKdg4uV---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/NatSatie/StudyNotes/main/react/reactprofiler/screenoverview.png" alt="" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As informações do Flaregraph mais importantes estão dentro das barras que consiste em:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nome da Componente (um provedor de contexto, componente JSX ou HTML)&lt;/li&gt;
&lt;li&gt;Tempo para renderizar&lt;/li&gt;
&lt;li&gt;Tempo total que a componente existe dentro dessa commit&lt;/li&gt;
&lt;li&gt;Cor: Pode estar cinza sólido, rachurado, tons de verde ou tons de amarelo&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Como usar o Flaregraph React Profiler
&lt;/h2&gt;

&lt;p&gt;No flaregraph, eu gosto de escolher &lt;strong&gt;uma ação&lt;/strong&gt; para analisar. Então para a plataforma podemos escolher uma interação que será gravada as ações necessárias.&lt;/p&gt;

&lt;p&gt;Nesse caso, escolhi procurar o pokemon #123 e faço a busca.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nDxontTF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://raw.githubusercontent.com/NatSatie/StudyNotes/main/react/reactprofiler/action.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nDxontTF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://raw.githubusercontent.com/NatSatie/StudyNotes/main/react/reactprofiler/action.gif" alt="" width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Com isso, temos informações importantes para interpretar na barra superior. Especialmente nas setas e no &lt;code&gt;6/6&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VP9UffiW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/NatSatie/StudyNotes/main/react/reactprofiler/timeline.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VP9UffiW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/NatSatie/StudyNotes/main/react/reactprofiler/timeline.png" alt="" width="198" height="38"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O número &lt;code&gt;6/6&lt;/code&gt; significa que temos seis commits, quando uma componente é renderizada a fase do commit é feita a comparação entre um estado e outro a partir da DOM [1].&lt;/p&gt;

&lt;p&gt;Cada barra corresponde ao tempo de demorou cada commit foi feito, normalmente isso acontece em alguns milissegundos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nDxontTF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://raw.githubusercontent.com/NatSatie/StudyNotes/main/react/reactprofiler/action.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nDxontTF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://raw.githubusercontent.com/NatSatie/StudyNotes/main/react/reactprofiler/action.gif" alt="" width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Cores do flaregraph
&lt;/h2&gt;

&lt;p&gt;Como foi visto, temos algumas cores para o flaregraph que são importantes para definir o que deve e que não deve ser otimizado.&lt;/p&gt;

&lt;p&gt;Quando o objeto está com &lt;strong&gt;tons de verde&lt;/strong&gt; quer dizer que foi renderizado naquele commit. &lt;strong&gt;Tons de amarelo&lt;/strong&gt; corresponde a objetos que foram renderizados mas precisa ser otimizado. Objetos em &lt;strong&gt;cinza&lt;/strong&gt; significa que não foi renderizando naquele commit. &lt;strong&gt;Componentes rachurados&lt;/strong&gt; significa que não renderizaram.&lt;/p&gt;

&lt;p&gt;Por isso, quando o objeto está sendo atualizado várias vezes ou demora muito tempo para carregar em um único commit, o objeto é identficado em amarelo. E são essas componentes que devem ser otimizadas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qCpSYnr2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://raw.githubusercontent.com/NatSatie/StudyNotes/main/react/reactprofiler/profiler.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qCpSYnr2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://raw.githubusercontent.com/NatSatie/StudyNotes/main/react/reactprofiler/profiler.gif" alt="" width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Como otimizar?
&lt;/h2&gt;

&lt;p&gt;Agora que sabemos apontar quais são os problemas de performance da aplicação, podemos pensar em formas de melhorar. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Usar hooks como useMemo(), useCallback() [3]&lt;/li&gt;
&lt;li&gt;Usar memo() [4]&lt;/li&gt;
&lt;li&gt;Algoritmo de Reconciliação [5] [6]&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Referências
&lt;/h3&gt;

&lt;p&gt;[1] &lt;a href="https://blog.bitsrc.io/profiling-performance-of-react-apps-using-react-profiler-d02d77f3c96a"&gt;Profiling Performance of React Apps using React Profiler&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[2] &lt;a href="https://reactjs.org/docs/profiler.html?"&gt;Profiler API by Reactjs.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[3] &lt;a href="https://pt-br.reactjs.org/docs/hooks-reference.html#usecallback"&gt;use hooks reference&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[4] &lt;a href="https://dmitripavlutin.com/use-react-memo-wisely/"&gt;Use React.memo() wisely&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[5] &lt;a href="https://pt-br.reactjs.org/docs/reconciliation.html"&gt;Reconciliação (Reconciliation)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[6] Vídeo RocketSeat: &lt;a href="https://youtu.be/NmU2nNehNNY"&gt;React - Guia definitivo de performance (useMemo, useCallback, memo)&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>performance</category>
      <category>braziliandevs</category>
      <category>wecoded</category>
    </item>
    <item>
      <title>Experience in an intership</title>
      <dc:creator>Natália Satie</dc:creator>
      <pubDate>Fri, 13 Aug 2021 21:17:34 +0000</pubDate>
      <link>https://dev.to/satie_sann/experience-in-an-intership-45c6</link>
      <guid>https://dev.to/satie_sann/experience-in-an-intership-45c6</guid>
      <description>&lt;p&gt;Finally, after a couple of months working with React.js and Typescript I'm able to describe as an computer science student what I learned as a front-end developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preparation, curriculum and interview
&lt;/h2&gt;

&lt;p&gt;I was working with a small project with a professor in my university, and learned the basics of React.js with a small pre-made assets. Also I got quite some experience with Git, the visual interface of &lt;a href="https://github.com/"&gt;Github&lt;/a&gt; and using &lt;a href="https://git-scm.com/download/win"&gt;Git Bash&lt;/a&gt; as main sources of practise it was pretty useful.&lt;/p&gt;

&lt;p&gt;The curriculum was created with my main skills (Javacript, React.js and others), prior experiences (including participation and organization in university events) and Github page. The curriculum was created with &lt;a href="https://pt.overleaf.com/"&gt;Overleaf&lt;/a&gt;, a LaTeX editor.&lt;/p&gt;

&lt;p&gt;Finally the interview, since it was a small business, mostly was a short talk about interests, motivation as a candidate and previous projects and got the intership.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Found good and bad practises of coding (thanks to &lt;a href="https://www.amazon.com.br/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882"&gt;Clean Code: A Handbook of Agile Software Craftsmanship&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Think and participate as a team (also thanks to &lt;a href="https://www.amazon.com.br/Accelerate-Software-Performing-Technology-Organizations/dp/1942788339"&gt;Accelerate&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Undestand the value of automated end-to-end tests (&lt;a href="https://docs.cypress.io/"&gt;Cypress&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Improve networking by participating and talking to friends and colleages&lt;/li&gt;
&lt;li&gt;Found more communities to learn more about the code you're working with (Twitter, Reddit, Stack Overflow, Dev.to, Medium)&lt;/li&gt;
&lt;li&gt;Use more task managers such as Trello and Jira&lt;/li&gt;
&lt;li&gt;Have fun learning unexpected methods to solve issues with Code Challenges (&lt;a href="https://www.codewars.com/"&gt;CodeWars&lt;/a&gt;  and using external tools as &lt;a href="https://replit.com/"&gt;Replit&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But also, working with home-office there's time-management because of university and household tasks. But now, what to improve? Probaly, a lot.  But I believe the main goal is to participate and make the community richer and talk about what you learnded and how to improve with others.&lt;/p&gt;

&lt;p&gt;Maybe your experience with your first intership was very much diffent from mine? How it was? Tell more in the comments.&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>sideprojects</category>
      <category>javascript</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Uber Movement: antes e depois do COVID-19</title>
      <dc:creator>Natália Satie</dc:creator>
      <pubDate>Wed, 09 Sep 2020 17:18:24 +0000</pubDate>
      <link>https://dev.to/satie_sann/uber-movement-antes-e-depois-do-covid-19-17m</link>
      <guid>https://dev.to/satie_sann/uber-movement-antes-e-depois-do-covid-19-17m</guid>
      <description>&lt;p&gt;Este texto consiste em um pequeno projeto realizado no primeiro semestre de 2020 durante a disciplina de Cálculo numérico na UNICAMP. Aqui vamos avaliar as aplicações do método de mínimos quadrados com dados do tempo médio de viagem entre Terminal Tietê (São Paulo - SP) e o Aeroporto de Guarulhos (sem terminal especificado).&lt;br&gt;
Estes dados foram retirado do &lt;a href="https://movement.uber.com/?lang=pt-BR"&gt;Uber Movement&lt;/a&gt;, vamos comparar o tempo médio de viagem entre fevereiro e março de 2020 e de 2019.&lt;br&gt;
O caminho escolhido serve para avaliar o fluxo de pessoas, e verificar se no mês de 2020 houve mudanças do trânsito da capital.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Curiosidades&lt;/strong&gt;: a ideia surgiu depois de vários colegas mudarem de Campinas e eles retornaram para suas cidades natais, alguns amigos moram muito longe e estavam bem com medo da exposição ao COVID-19 devido à grande migração de pessoas no começo da pandemia no Brasil. E verifiquei se no mês de março o trânsito para ir ao Aeroporto de Guarulhos piorou ou não.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Método aplicado
&lt;/h2&gt;

&lt;p&gt;Durante o semestre foi ensinado vários métodos para aproximar vários dados e convertendo em uma função, este problema chamamos o problema do ajuste de curvas, nesta situação, usamos método dos quadrados mínimos [1]. &lt;br&gt;
Este método consiste em ler uma tabela de dados com um mapamento de pares (x, y), x corresponde ao dia (de 1/fev até 31/mar) e y ao tempo médio do dia (em segundos).&lt;br&gt;
A partir destes dados, o método MMQ pode criar uma função polinomial phi(x,y) com determinado grau.&lt;br&gt;
Com Python, criei um software que lê estes dados e imprime um gráfico com função phi(x,y) gerada. E estes foram os resultados (arredondados):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;phi_2(x,y)= 130.4 x -2.0 x^2&lt;/li&gt;
&lt;li&gt;phi_3(x,y)= 238.2x - 8.0 x^2 + 0.07 x^3&lt;/li&gt;
&lt;li&gt;phi_4(x,y)=410.4 x -25.2 x^2 + 0.5 x^3 -0.004 x^4&lt;/li&gt;
&lt;li&gt;phi_5(x,y)=616.0 x -5.7 x^2 + 2.2 x^3 -0.04 x^4  +  0.0002 x^5&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Ferramentas
&lt;/h3&gt;

&lt;p&gt;Postei o projeto dentro do meu repositório &lt;a href="https://github.com/NatSatie/MS211-project"&gt;aqui&lt;/a&gt;, para quem tiver interesse, usei a IDE do &lt;a href="https://www.jetbrains.com/pt-br/pycharm/"&gt;Pycharm&lt;/a&gt;, achei bem fácil de usar. Se não quiser usar instalar uma IDE pode usar o &lt;a href="https://repl.it/~"&gt;Repl.it&lt;/a&gt; , como o programa imprime várias imagens pode ser que sua performance seja bem lenta.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resultados dos gráficos de 2020
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Eq3Yg9GE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/NatSatie/MS211-project/blob/master/img/2020_2.png%3Fraw%3Dtrue%3D100x100" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Eq3Yg9GE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/NatSatie/MS211-project/blob/master/img/2020_2.png%3Fraw%3Dtrue%3D100x100" alt="Alt"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figura 1: Função de segundo grau&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GHGmbtAf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/NatSatie/MS211-project/blob/master/img/2020_3.png%3Fraw%3Dtrue%3D100x100" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GHGmbtAf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/NatSatie/MS211-project/blob/master/img/2020_3.png%3Fraw%3Dtrue%3D100x100" alt="Alt"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figura 2: Função de terceiro grau&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GHGmbtAf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/NatSatie/MS211-project/blob/master/img/2020_3.png%3Fraw%3Dtrue%3D100x100" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GHGmbtAf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/NatSatie/MS211-project/blob/master/img/2020_3.png%3Fraw%3Dtrue%3D100x100" alt="Alt"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figura 3: Função de quarto grau&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qLD5uyb6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/NatSatie/MS211-project/blob/master/img/2020_4.png%3Fraw%3Dtrue%3D100x100" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qLD5uyb6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/NatSatie/MS211-project/blob/master/img/2020_4.png%3Fraw%3Dtrue%3D100x100" alt="Alt"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figura 4: Função de quinto grau&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Resultados dos gráficos de 2019
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LWoYTwu8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/NatSatie/MS211-project/blob/master/img/2019_5.png%3Fraw%3Dtrue%3D100x100" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LWoYTwu8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/NatSatie/MS211-project/blob/master/img/2019_5.png%3Fraw%3Dtrue%3D100x100" alt="Alt"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figura 5: Função de quinto grau com dados de fevereiro e março de 2019&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusões
&lt;/h2&gt;

&lt;p&gt;Quando comparamos os dados do tempo médio do gráfico, temos primeiramente, uma pequena falha (que não consegui resolver), de todas as funções começarem do zero. A numeração dos dias segue a ordem de dia 0 é primeiro de fevereiro e dia 60 é 1 de abril.&lt;br&gt;
Durante o mês de fevereiro mostra-se que tem um tempo consistente de 2500 segundos (aproximadamente 41 minutos) de viagem. No entanto, no mês de março mostram-se pequenos sinais da redução do trânsito em São Paulo, e finalmente no final de março, é anunciado o primeiro período de quarentena entre os dias 22 de março até 7 de abril temos uma redução drástica no tempo de viagem, caindo para 1500 segundo (25 minutos).&lt;br&gt;
Este trabalho foi bem interessante e foi muito importante para praticar programação em Python, infelizmente não fiz os estudos de erro e espero que tenham gostado da minha primeira postagem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--d_jcpjKY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/NatSatie/MS211-project/blob/master/img/2020_2019_comparativo.png%3Fraw%3Dtrue%3D100x100" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--d_jcpjKY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/NatSatie/MS211-project/blob/master/img/2020_2019_comparativo.png%3Fraw%3Dtrue%3D100x100" alt="Alt"&gt;&lt;/a&gt;&lt;br&gt;
 &lt;em&gt;Figura 6: Comparação visual entre as funções de quinto grau geradas pelo MMQ em fevereiro e março de 2019 (linha azul) e 2020 (linha laranja)&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Referências
&lt;/h3&gt;

&lt;p&gt;[1] RUGGIERO. Márcia A. Gomes, LOPES, Vera Lúcia da Rocha. &lt;em&gt;Cálculo Numérico: Aspectos Teóricos e Computacionais&lt;/em&gt;. 2º ed. São Paulo. Pearson&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Written with &lt;a href="https://stackedit.io/"&gt;StackEdit&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>python</category>
      <category>datascience</category>
      <category>brazil</category>
      <category>portuguese</category>
    </item>
  </channel>
</rss>
