<?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: Augusto Tomás Ibarrola-Crespin</title>
    <description>The latest articles on DEV Community by Augusto Tomás Ibarrola-Crespin (@augustoibarrola).</description>
    <link>https://dev.to/augustoibarrola</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%2F442719%2F055a19dd-4e07-490a-bca3-f177bb13a287.jpeg</url>
      <title>DEV Community: Augusto Tomás Ibarrola-Crespin</title>
      <link>https://dev.to/augustoibarrola</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/augustoibarrola"/>
    <language>en</language>
    <item>
      <title>Firefox Developer Edition DevTools – Debugger  </title>
      <dc:creator>Augusto Tomás Ibarrola-Crespin</dc:creator>
      <pubDate>Fri, 06 Nov 2020 14:43:56 +0000</pubDate>
      <link>https://dev.to/augustoibarrola/firefox-developer-edition-devtools-debugger-4e03</link>
      <guid>https://dev.to/augustoibarrola/firefox-developer-edition-devtools-debugger-4e03</guid>
      <description>&lt;p&gt;A couple of days ago, as I was getting familiar with ol' faithful, the &lt;a href="https://developer.mozilla.org/en-US/" rel="noopener noreferrer"&gt;Mozilla Web Docs&lt;/a&gt;, I came across one Mozilla's new projects – a "Developer Edition" browser. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsqro5mjq3kof0jtufk9w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsqro5mjq3kof0jtufk9w.png" alt="It is aptly called **Firefox Browser Developer Edition**"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, obviously there is nothing wrong with ol' reliable, Google Chrome. Chrome's DevTools is one of the most indispensable tools in any developer's toolbox. &lt;/p&gt;

&lt;p&gt;Still, I'm a sucker for shiny new things, so I decided to waste a couple of minutes &lt;a href="https://www.mozilla.org/en-US/firefox/developer/?utm_campaign=deved_inactive_css&amp;amp;utm_medium=referral&amp;amp;utm_source=developer.mozilla.org" rel="noopener noreferrer"&gt;downloading the browser&lt;/a&gt; and giving it its fair shot to live up its name and reputation. I mean, how could I resist something branded "&lt;strong&gt;Developer Edition&lt;/strong&gt;" from the people that give us the MDN docs? &lt;/p&gt;

&lt;p&gt;So, to cut a long story short I'll just come out and say it: it is pretty fantastic. Firefox's Developer Edition DevTools has a design that reads great and feels intuitive, and is definitely a welcome addition to any toolbox. It even inspired me to learn how to use it's built in debugger! &lt;/p&gt;

&lt;p&gt;Mozilla offers a handy dandy &lt;a href="https://mozilladevelopers.github.io/playground/debugger" rel="noopener noreferrer"&gt;debugger playground&lt;/a&gt; that guides you through a few starter examples with a simple to-do list react app. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl4q78va67j4oxll9dwes.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl4q78va67j4oxll9dwes.png" alt="Handy dandy simple react.js to-do list"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can open up the DevTools by right-clicking and selecting inspect element. This will pop the DevTools up, typically to the side of the browser window. Like so:&lt;/p&gt;

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

&lt;p&gt;At the top of the DevTools, clicking on &lt;strong&gt;Debugger&lt;/strong&gt; will render three panes: &lt;strong&gt;&lt;em&gt;Source List&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;Source&lt;/em&gt;&lt;/strong&gt;, and &lt;strong&gt;&lt;em&gt;Tools&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Source List &amp;amp; Source Panes
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fv29wvpdr81cguuwdo4s5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fv29wvpdr81cguuwdo4s5.png" alt="The Source List and the Source panes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The source list pane shows all the JavaScript files related to the current page or project, while the source pane shows the content of those files. For all intents and purposes, we can think of it very similarly to our typical editor, like Visual Studio Code. &lt;br&gt;
The left pane describes the locations of files and their relative structure to one another in relation to the whole application, and the pane to its right gives us a glimpse into whatever file is selected in the Source List. &lt;/p&gt;

&lt;h2&gt;
  
  
  Tools pane
&lt;/h2&gt;

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

&lt;p&gt;The leftmost pane is the Tools pane, and is where a lot of the useful tools that Firefox gives us (but not all of them!) can be accessed from. In particular &lt;strong&gt;&lt;em&gt;Watch Expression&lt;/em&gt;&lt;/strong&gt; and the &lt;strong&gt;&lt;em&gt;Scope&lt;/em&gt;&lt;/strong&gt; tabs are useful as they allow us to view whatever variables are in play at any given moment, thanks to &lt;strong&gt;&lt;em&gt;Break Points&lt;/em&gt;&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwcil3yl1qnvngoy38116.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwcil3yl1qnvngoy38116.gif" alt="A **Break Point** is added by clicking on the line number in the Source's gutter."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Break points are inserted by clicking on the line number in the Source's gutter. This should mark it with a blue flag, like above. Now, whenever the application is run, it will stop right at the line marked with the blue break point flag. &lt;br&gt;
In this case, that means that when we try to add an item to the to-do list, the program freezes. &lt;/p&gt;

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

&lt;p&gt;This might be a good time to go a little more in depth regarding the Tools pane, and in particular the toolbar. &lt;/p&gt;

&lt;h3&gt;
  
  
  Toolbar
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdamgx8hdw54ek4chltln.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdamgx8hdw54ek4chltln.png" alt="The Debugger Tools toolbar"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Play/Pause

&lt;ul&gt;
&lt;li&gt;Pauses or resumes the execution of the code being debugged. This is useful when you want to continue running your code after hitting a break point – or to move on to the next break point quickly. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;* tl;dr – used for stopping and starting the execution of the code in question
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Step over

&lt;ul&gt;
&lt;li&gt;Executes the immediate next line after the inserted break point. If the next line happens to be a function, it will execute the entire function.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;* tl;dr – used for taking the next "step" single step down your code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Step in

&lt;ul&gt;
&lt;li&gt;If the line being "stepped" over is a a function, one can instead "step in" and execute the function line by line instead of all at once. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;* tl;dr – used for "stepping into" functions and slowly working your way down its execution line-by-line
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Step out

&lt;ul&gt;
&lt;li&gt;Steps out of a function and runs the code until another break point or until completion. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;* tl;dr – used for getting out of the scope of a function and letting it run. &lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Watch Expression&lt;br&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frk1j0le4vv7hz0o4vzlu.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frk1j0le4vv7hz0o4vzlu.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;&lt;em&gt;Watch Expression&lt;/em&gt;&lt;/strong&gt; tab is also a very useful tool in its own right. By typing in an expression or variable into the tab, we can see how that expression comes to acquire or change its values, line-by-line, by using the debugger toolbar. &lt;/p&gt;

&lt;h3&gt;
  
  
  Scopes
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fus4lvmc9h9ax3wx3sy3s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fus4lvmc9h9ax3wx3sy3s.png" alt="relative scopes when signing into an application"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Scopes is another incredibly simple and useful tool that helps you debug your code more easily. At whatever break point in your code, as with the Watch Expression tab above, your relevant scopes are presented to you. &lt;/p&gt;

&lt;p&gt;There is a &lt;em&gt;lot&lt;/em&gt; that the DevTools offers, and as far as user experience goes, I'm happy and sold on this Mozilla browser. Keep in mind, though, that it is still in development mode and though I myself haven't found any glitches or pitfalls while using the application, always keep an open mind that something strange could happen. But as devs, I think we can handle a bug or two.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>A Short Overview of Popular Programming Languages</title>
      <dc:creator>Augusto Tomás Ibarrola-Crespin</dc:creator>
      <pubDate>Wed, 30 Sep 2020 13:14:30 +0000</pubDate>
      <link>https://dev.to/augustoibarrola/a-short-overview-of-popular-programming-languages-16d1</link>
      <guid>https://dev.to/augustoibarrola/a-short-overview-of-popular-programming-languages-16d1</guid>
      <description>&lt;p&gt;We're always hearing how popular JavaScript is – was and probably will be –; often enough, maybe, that it starts going in one ear and out the other. But besides good O'l reliable, what are the other programming languages that bear the heavy crown of popularity alongside JavaScript? And what exactly are those languages supposed to do? Below's a short look at some of the other JavaScripts of the computer programming world.&lt;/p&gt;

&lt;h2&gt;
  
  
  Python
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3TWIPjjX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t9k17m3q84g7w23cljfk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3TWIPjjX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t9k17m3q84g7w23cljfk.png" alt="Python came out in 1991"&gt;&lt;/a&gt; &lt;br&gt;
If we weren't constantly hearing about JavaScript, I'm sure we would be hearing about Python. Python came out in 1991 and is currently on its third rendition: Python 3. &lt;br&gt;
It's a popular choice for beginners because it is said to be picked up easily enough because of its readability and flexibility (however, the latter is sometimes cited as one of Python's downsides). &lt;br&gt;
It's a popular programming language for anyone interested in backend web development, data analysis, AI, and otherwise more data and science-focused web development. &lt;/p&gt;

&lt;h2&gt;
  
  
  SQL
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J_-4MjXR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/d1j6o0vofct99diykbfr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J_-4MjXR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/d1j6o0vofct99diykbfr.png" alt='SQL – pronounced "sequel"'&gt;&lt;/a&gt;&lt;br&gt;
Structured Query Language – abbreviated "SQL" and pronounced "sequel" (¯_(ツ)_/¯) –  is a language that communicates with the databases of applications, pooling or otherwise editing the data stored within it. It's been more or less a standard as far as languages that query databases go since the 70s, despite other languages cropping up over the last 40-some years. In 2020, it was voted third Most Popular Technologies by StackOverflow. &lt;/p&gt;

&lt;h2&gt;
  
  
  Java
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2qdK2zEJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mf4zksyn1p46up5xo80v.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2qdK2zEJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mf4zksyn1p46up5xo80v.jpg" alt="False Friend alert! Java and JavaScript are (very) un-related languages"&gt;&lt;/a&gt;&lt;br&gt;
Java is an object-oriented and class-based language that came out of the sunny state of California in the 1990s, and has been a popular programming language ever since. &lt;br&gt;
It is currently on its 12 version – Java 12, but has kept up a certain momentum over the last three decades that have made it as an exciting and attractive language for developers to pick up as it was at its beginnings.&lt;br&gt;&lt;br&gt;
It is usable for developing apps and applets (widgets) on laptops, game consoles, cellphones – particularly those running on the Android Operating System, since &lt;a href="https://www.bestprogramminglanguagefor.me/why-learn-java"&gt;the OS itself runs on a Java language environment&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  PHP
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N7DbXdO6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qdr4eszjvy284337qkg3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N7DbXdO6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qdr4eszjvy284337qkg3.png" alt='PHP originally stood for "Personal Home Page"'&gt;&lt;/a&gt;&lt;br&gt;
PHP – short for &lt;em&gt;PHP: Hypertext Preprocessor – is a server-side language (like SQL!) released in 1994 (the current rendition is **PHP7&lt;/em&gt;*) that allows for dynamic web-pages, and has been ranked consistently high since its release in 1994. &lt;br&gt;
Facebook, WordPress, and Tesla, and Wikipedia (and many others) all use the language, and it is a popular language among seasoned and beginner developers alike; it was ranked number 9 in StackOverflow's Most Popular Technologies list of 2020.&lt;/p&gt;

&lt;h2&gt;
  
  
  Go
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jro36TYs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ddfp6jpro1t5x4k6l66y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jro36TYs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ddfp6jpro1t5x4k6l66y.png" alt="Go's Gopher Mascot is an essential part of Go"&gt;&lt;/a&gt;&lt;br&gt;
Go is an open-source programming language developed 14 years ago by Google developers, and has quickly become a favorite by beginners in &lt;a href="https://willcrichton.net/notes/systems-programming/"&gt;systems programming&lt;/a&gt;. It is a convenient language for building web servers and data pipelines. Uber, Twitch, and Soundcloud – along with Google, duh – all use Go in some or other capacity, from determining what's offered to you based on your location (&lt;a href="https://brainhub.eu/blog/biggest-companies-using-golang/"&gt;Uber&lt;/a&gt;)to powering Google Earth and Youtube, among others.&lt;/p&gt;

&lt;h2&gt;
  
  
  Swift
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4WRB2Q35--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/gxyshf88phjxcf90acxu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4WRB2Q35--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/gxyshf88phjxcf90acxu.png" alt="Swift was officially launched in 2014 "&gt;&lt;/a&gt; &lt;br&gt;
Apple's Swift is one of the greener languages on the list, having been officially launched in 2014. It is the de facto language of all iOS, and thus the de facto language of Apple. Although it doesn't rank on every single list out there, it does have a dedicated following (owing to it's devoted Apple fanbase). Although one of the more niche languages on the list, Swift creates beautiful applications for phones and desktops and is friendly enough in its syntax and application for beginners to &lt;a href="https://docs.swift.org/swift-book/"&gt;pick up&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ruby / Ruby on Rails
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--H0ZUEK_L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/y6memirrnkneve4g88nt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H0ZUEK_L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/y6memirrnkneve4g88nt.png" alt="So-named because of its ability to automate so much code."&gt;&lt;/a&gt;&lt;br&gt;
Ah, good ol' ruby. Although you can see countless articles on the internet about the death of ruby dawning nigh, the fact of the matter is that ruby – and in particular the ruby on rails framework – remains a popular programming language for beginners and seasoned programmers and developers alike. It can count Twitter, Airnbnb, and Shopify – as well as countless others – as sites that were developed with the rails framework. &lt;/p&gt;

&lt;p&gt;There are so many programming languages out there, it might feel a little overwhelming at first to see so many languages out there. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oqqrBQMz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ejn1h3d84mtutktjgsng.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oqqrBQMz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ejn1h3d84mtutktjgsng.jpg" alt="Beware colorful graphs and the anxiety they can bring to new devs"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But that doesn't have to be the case! Understanding where your strengths and passions lay is the first step, and the one taken before you can figure out which language you should put your weight behind – front-end-centric languages? Platform-specific languages? Class-based or just Object-Oriented (or not!)? &lt;br&gt;
It's all about getting started with baby steps.&lt;/p&gt;

</description>
      <category>beginners</category>
    </item>
    <item>
      <title>Crash Course Through Rails File Tree</title>
      <dc:creator>Augusto Tomás Ibarrola-Crespin</dc:creator>
      <pubDate>Wed, 09 Sep 2020 17:22:24 +0000</pubDate>
      <link>https://dev.to/augustoibarrola/crash-course-through-rails-file-tree-2e3f</link>
      <guid>https://dev.to/augustoibarrola/crash-course-through-rails-file-tree-2e3f</guid>
      <description>&lt;p&gt;Whenever I take a crack at making a new application with rails, the sight of seeing rails create all those new files is a strange mix of satisfaction and being overwhelmed. &lt;br&gt;
There's the &lt;strong&gt;app&lt;/strong&gt; folder, the &lt;strong&gt;bin&lt;/strong&gt;, the &lt;strong&gt;config&lt;/strong&gt;, the &lt;strong&gt;db&lt;/strong&gt; and then a few others on top of that. More or less, it'll look like the below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xk8R0Yrx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/3o9vl08u3fqumo3p7t59.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xk8R0Yrx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/3o9vl08u3fqumo3p7t59.png" alt="My filetree here is full of files I wanted to know about!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I figure this calls for a quick overview of just a few of the different folders that rails provides for us to help us get our bearings and not have that "oh gosh, what have I done?" feeling. &lt;/p&gt;

&lt;h2&gt;
  
  
  /app
&lt;/h2&gt;

&lt;p&gt;The app folder contains &lt;em&gt;assets&lt;/em&gt;, &lt;em&gt;controllers&lt;/em&gt;, &lt;em&gt;helpers&lt;/em&gt;, &lt;em&gt;mailers&lt;/em&gt;, &lt;em&gt;models&lt;/em&gt;, and &lt;em&gt;views&lt;/em&gt; (&amp;amp; views/&lt;em&gt;layouts&lt;/em&gt;!).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--S2NasznF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/h6ohs77g21uwtpai9qxm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--S2NasznF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/h6ohs77g21uwtpai9qxm.png" alt="The app folder with its long list of subfolders"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Essentially, this is the bread and butter of the rails application. The app folder organizes the application's &lt;strong&gt;MVC&lt;/strong&gt; components. That is, it has a folder that contains the apps &lt;strong&gt;models&lt;/strong&gt;, &lt;strong&gt;views&lt;/strong&gt;, and &lt;strong&gt;controllers&lt;/strong&gt;, all separated from each other to follow standard MVC convention. &lt;/p&gt;

&lt;h4&gt;
  
  
  ./assets
&lt;/h4&gt;

&lt;p&gt;This folder contains images as well as javascript and CSS files that help style your application. These are all generated by rails&lt;/p&gt;

&lt;h4&gt;
  
  
  ./controllers
&lt;/h4&gt;

&lt;p&gt;"Controllers" contain, well, the controller files that handle user requests and that tie our rails MVC model neatly together. &lt;/p&gt;

&lt;h4&gt;
  
  
  ./helpers
&lt;/h4&gt;

&lt;p&gt;This folder is full of .rb files that contain &lt;strong&gt;modules&lt;/strong&gt;. Essentially, files here are used to keep our model and controller code DRY. &lt;/p&gt;

&lt;h4&gt;
  
  
  ./mailers
&lt;/h4&gt;

&lt;p&gt;Mailers seem to be one of the more mysterious -ahem, &lt;strong&gt;&lt;em&gt;advanced&lt;/em&gt;&lt;/strong&gt; – concepts in rails, but essentially, any logic for building out a mailing functionality in your application goes in this subfolder. &lt;/p&gt;

&lt;h4&gt;
  
  
  ./models
&lt;/h4&gt;

&lt;p&gt;Our classic ol' models subfolder holds our class models that deal with the database and the data stored in it. &lt;/p&gt;

&lt;h4&gt;
  
  
  ./views
&lt;/h4&gt;

&lt;p&gt;"Views" contains our layouts folder, as well as any corresponding controller "views" folder (which would be the pluralized version of its respective controller). The layouts can be thought of as the standard "look" of the webpage, while the "views" are the particular flavors and logic of each controller. These two files work together to display our application on a server. &lt;br&gt;
Files here are written in embedded ruby (.erb) that create HTML code. &lt;/p&gt;

&lt;h2&gt;
  
  
  /bin
&lt;/h2&gt;

&lt;p&gt;Contains our scripts that start, setup, test, and run our rails application. &lt;/p&gt;

&lt;h2&gt;
  
  
  /db
&lt;/h2&gt;

&lt;p&gt;The database folder! Here is where your database schema lives, as well as your database migrations and your seeds.rb file. Our database can only be changed &lt;em&gt;through&lt;/em&gt; our migration files (and by running the &lt;strong&gt;rails db:migrate&lt;/strong&gt; command) and our database can be populated using the seeds.rb file. &lt;/p&gt;

&lt;h2&gt;
  
  
  /Gemfile &amp;amp; /Gemfile.lock
&lt;/h2&gt;

&lt;p&gt;The Gemfile and Gemfile.lock files can be thought of as sister files. Whenever you find a cool new gem that adds some awesome functionality to your app (and lets you escape the task of reinventing the proverbial wheel), it gets installed in your app when you place that gem in the Gemfile file and run the &lt;strong&gt;bundle&lt;/strong&gt; command. This will then auto-generate (or update) the Gemfile.lock file, which should itself &lt;em&gt;&lt;strong&gt;never be directly touched&lt;/strong&gt;&lt;/em&gt;. It lists out all the already-bundled gems and their current working versions in your app. &lt;/p&gt;

&lt;h2&gt;
  
  
  /lib
&lt;/h2&gt;

&lt;p&gt;This is a bit of a tough one. Rails documentation describes it as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Basically, any kind of custom code that doesn’t belong under controllers, models, or helpers. This directory is in the load path."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Which helps no one. There is actually not a very wide consensus about what &lt;em&gt;exactly&lt;/em&gt; should go in here, and many sources seem to work out their own conventions regarding this folder, or ignore it altogether. &lt;/p&gt;

&lt;h2&gt;
  
  
  /log
&lt;/h2&gt;

&lt;p&gt;The log folder is your overhead glimpse into your rails session. SQL queries, error messages, request information (including URL, controller, params, and view information) is all stored in this folder. It tells us the history of our time on our application that we can peruse and use to track down bugs and errors. &lt;/p&gt;

&lt;h2&gt;
  
  
  /public
&lt;/h2&gt;

&lt;p&gt;The public folder is used to hold static files. Error files (as in, what to display in case of an error happening)for example, could be stored here. However, storing files in the /public folder is not highly necessary. &lt;/p&gt;

&lt;h2&gt;
  
  
  /test
&lt;/h2&gt;

&lt;p&gt;Contains the tests for your application that helps guide you to full functionality. These are auto-generated, but custom ones can certainly be built out. &lt;/p&gt;

&lt;p&gt;This overview is in &lt;em&gt;__no way&lt;/em&gt;__ exhaustive. Really, it barely scratches the surface. But hopefully now firing up that &lt;em&gt;rails new&lt;/em&gt; command is now just a little less mysterious. &lt;/p&gt;

</description>
      <category>rails</category>
      <category>beginners</category>
    </item>
    <item>
      <title>belongs_to, has_many, &amp; has_many, through:</title>
      <dc:creator>Augusto Tomás Ibarrola-Crespin</dc:creator>
      <pubDate>Wed, 19 Aug 2020 07:18:03 +0000</pubDate>
      <link>https://dev.to/augustoibarrola/belongsto-hasmany-hasmany-through-1mni</link>
      <guid>https://dev.to/augustoibarrola/belongsto-hasmany-hasmany-through-1mni</guid>
      <description>&lt;p&gt;It's a tried and true rule that working on something lends itself to your knowledge of whatever that thing is. If you cook a lot, you know more about cooking. Or if you've got hours of painting under your belt, it's a safe bet that you know a thing or two about mixing colors. Coding follows this same beautiful pattern. The more you code, the better you tend to be at it. The concepts governing coding and development get easier to grasp, and your code goes from a  mangled and complicated exercise in mental acrobatics to clean, precise, and – most importantly – &lt;em&gt;simple&lt;/em&gt; code of a line or two. Ah, simplicity. Ruby, in particular, is all about &lt;a href="https://flatironschool.com/blog/the-father-of-ruby-yukihiro-matsumoto"&gt;simplicity&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;But as anyone learning code for the first time will tell you: you've gotta put in the hard work before it gets to be easy. Even the tools that are available to users with the explicit aim of simplifying their code and streamlining their workflow don't immediately lend themselves if the hard work of grounding oneself in core concepts has been shirked. It's important to know that our most important steps are our first steps, and our first steps should always be baby steps. &lt;/p&gt;

&lt;p&gt;My baby step moment came when learning ActiveRecord. I thought I could skim through its docs (and there's never a shortage of them), cherrypick a few methods here and there, and build the next great big app.&lt;/p&gt;

&lt;p&gt;Haha! Oh, dear reader, how I wish that had been the case. ActiveRecord, like all good things, required me to do my part in understanding what it was all about before it could become my new best friend. Part of that work for me was understanding associations. &lt;/p&gt;

&lt;p&gt;Associations can be a tricky abstraction of an otherwise (seemingly) intuitive concept. Essentially, they are the connections between ruby models that express their distinct relationships and unique attributes. ActiveRecord lets us work with six kinds of associations: belongs_to, has_one, has_many, has_one  :through, has_many :through &amp;amp; has_and_belongs_to_many. For today's short lesson, we'll be focusing on the three most commonly dealt with by beginner rubyists: belongs_to; has_many; and has_many, through:.&lt;/p&gt;

&lt;h2&gt;
  
  
  belongs_to &amp;amp; has_many
&lt;/h2&gt;

&lt;p&gt;Let's say that I have two kids, Leah and Paulo. They are two individuals, but they are both &lt;em&gt;children&lt;/em&gt;, and what's more, they are both &lt;strong&gt;my&lt;/strong&gt; children. In ruby-speak, we can think of the kids as one model that has a relationship to me, the parent, another model. We can say that Leah &lt;em&gt;belongs_to&lt;/em&gt; me and that Paulo &lt;em&gt;belongs_to&lt;/em&gt; me too. I can also say, since two kids are more than one, that I have (er, &lt;em&gt;has&lt;/em&gt;)&lt;em&gt;_many&lt;/em&gt; kids. These two associations in ActiveRecord tend to come in pairs, with the "parent" class being the class that has_many &lt;strong&gt;instances&lt;/strong&gt; of another class. Those &lt;em&gt;instances&lt;/em&gt;, in this case, are my wonderfully fictional children, Leah &amp;amp; Paulo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4oTCk973--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4kf9xoxhuoq7ska8mcny.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4oTCk973--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4kf9xoxhuoq7ska8mcny.png" alt="Paulo &amp;amp; Leah are *instances* of the children class that *belong_to* me, an instance of the parent class."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The relational databases (though for our purposes here, they are really just informative tables) above hopefully help clarify how ActiveRecord understands these associations. The class that &lt;em&gt;belongs_to&lt;/em&gt; another class is the one that "holds the reference" to an instance of the parent class. This is represented by the "augusto" parent_id being present alongside both children instances (i.e., "Leah" and "Paulo"). This same column on the children table is the one that also lets the "augusto" instance of the parent class (Me!) know that it &lt;em&gt;has_many&lt;/em&gt; children. &lt;/p&gt;

&lt;h2&gt;
  
  
  has_many, through:
&lt;/h2&gt;

&lt;p&gt;Let's imagine Paulo and Leah are all grown up (it always happens so fast), and they've got little Paulo &amp;amp; Leah Jrs. of their own. &lt;br&gt;
Suddenly, my little family has expanded. Now I can say that I (have) &lt;em&gt;has_many&lt;/em&gt; &lt;strong&gt;grandchildren&lt;/strong&gt;, &lt;em&gt;through:&lt;/em&gt; (my) &lt;strong&gt;children&lt;/strong&gt;. Suddenly, in ruby, we are dealing with a whole new model, &lt;em&gt;grandchildren&lt;/em&gt;, that the &lt;em&gt;parent&lt;/em&gt; class is able to access and know about through their relationship existent relationship with the &lt;em&gt;children&lt;/em&gt; class. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t869uVtU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/fzh3tijs8izhkz063lpu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t869uVtU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/fzh3tijs8izhkz063lpu.png" alt="Paulo's daughter Leah Jr., and Leah's son Paulo Jr., are both Augusto's grandchildren through the relationship of Paulo and Leah being Augusto's children"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the image above, we can see the new table &lt;strong&gt;grandchildren&lt;/strong&gt; and the effect it has had on the two other tables (no man is an island and no database is either). Now, not only do &lt;strong&gt;children&lt;/strong&gt; &lt;em&gt;instances&lt;/em&gt; belong_to an &lt;em&gt;instance&lt;/em&gt; of &lt;strong&gt;parent&lt;/strong&gt;, but they also (have) &lt;em&gt;has_many&lt;/em&gt; grandchildren! Which, as we remember, in turn, &lt;em&gt;belong_to&lt;/em&gt; their respective parent (or &lt;strong&gt;kid&lt;/strong&gt; &lt;em&gt;instance&lt;/em&gt;). We can see that the grandchildren class &lt;em&gt;holds the reference&lt;/em&gt; to the kids class, which in turn &lt;em&gt;holds the reference&lt;/em&gt; to the parent class. Again, also, we see that in order to establish these associations, we need to make sure each instance of a "referent" class knows "who" it's exactly related to by including the desired instance of a "main" class in their makeup. &lt;/p&gt;

&lt;p&gt;It took me a few days to understand the relationship direction and flow between models that belong_to another model or that have has_many of some other model. Like a lot of ruby, it is deceptively simple! These relationships are much more complex than detailed above – especially when these relationships begin to grow in diversity. Remember: there are six supported associations, and these are only the first three! Not to mention polymorphic associations (&lt;a href="https://guides.rubyonrails.org/association_basics.html#polymorphic-associations"&gt;oye! makes my head spin!&lt;/a&gt;). But also remember: Rome wasn't built in a day. All it takes, really, is patience, close readings of any and all documents available to us, experimentation and practice, practice, practice! Baby steps are hard when you're a baby! But those baby steps turn to walking fast, and eventually, we all get to run.  &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>ruby</category>
      <category>rails</category>
    </item>
  </channel>
</rss>
