<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: zachmarullo</title>
    <description>The latest articles on Forem by zachmarullo (@zachmarullo).</description>
    <link>https://forem.com/zachmarullo</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%2F906742%2Fdc615ac2-62ee-4f2d-831e-a3fb87a3ee73.jpeg</url>
      <title>Forem: zachmarullo</title>
      <link>https://forem.com/zachmarullo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/zachmarullo"/>
    <language>en</language>
    <item>
      <title>Intro to NGINX</title>
      <dc:creator>zachmarullo</dc:creator>
      <pubDate>Sun, 18 Dec 2022 07:15:52 +0000</pubDate>
      <link>https://forem.com/zachmarullo/intro-to-nginx-e92</link>
      <guid>https://forem.com/zachmarullo/intro-to-nginx-e92</guid>
      <description>&lt;h2&gt;
  
  
  What is NGINX?
&lt;/h2&gt;

&lt;p&gt;NGINX is a powerful and popular open-source web server that is known for its ability to handle a high volume of connections simultaneously while maintaining excellent performance. One of the primary benefits of using a reverse proxy is that it can distribute incoming requests to multiple backend servers, allowing you to scale your application or website more easily. It also provides security by hiding the IP addresses of your backend servers from the internet, and can improve performance by caching frequently-requested content.&lt;/p&gt;

&lt;h2&gt;
  
  
  NGINX History and More
&lt;/h2&gt;

&lt;p&gt;NGINX was developed by Igor Sysoev in 2002 and has since become a widely-used server software. NGINX is able to process a large number of requests simultaneously, which makes it a great choice for high-traffic websites. It is usually installed on a Linux server and its configuration is often stored in the "etc" directory.&lt;/p&gt;

&lt;p&gt;By default, the nginx configuration file can be located in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/etc/nginx/nginx.conf,  
/usr/local/etc/nginx/nginx.conf, or  
/usr/local/nginx/conf/nginx.conf  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  NGINX Basic Configuration
&lt;/h2&gt;

&lt;p&gt;The NGINX configuration file is the main configuration file for the NGINX web server. It specifies how NGINX should behave in different scenarios, including how it should respond to incoming requests and how it should interact with other servers or services. Below is an example of a really basic NGINX configuration file that listens for HTTP requests:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;server {
    listen       80;
    server_name  localhost;

    location / {
        root   html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Above, the &lt;code&gt;server&lt;/code&gt; block specifies the main configuration for the server. The &lt;code&gt;listen&lt;/code&gt; directive tells NGINX to listen for incoming requests (on port 80 in this case). The &lt;code&gt;server_name&lt;/code&gt; directive specifies the server name that should be used in the "host" header of the HTTP request. The &lt;code&gt;location&lt;/code&gt; blocks tell NGINX where to look for different URI paths. The &lt;code&gt;error_page&lt;/code&gt; directive tells the location of the error page that should be displayed for HTTP error codes such as 500, 502, 503, and 504. The location block for the error page specifies that the error page should be served from the html directory. This is only a basic configuration and only covers the most essential features NGINX has to offer. Developers are able to extend and customize the configurations to suit specific needs by using additional &lt;code&gt;server&lt;/code&gt; blocks, and/or using directives.&lt;/p&gt;

&lt;h2&gt;
  
  
  Directives
&lt;/h2&gt;

&lt;p&gt;As a developer, you have a lot of control over the behavior of your NGINX server through the use of directives. Directives are key-value pairs that provide instructions for the server, and they can be used to customize a wide range of features. For example, you can use directives to specify the location of your raw files on the file system, set up SSL certificates, implement rewrites, and route requests to a proxy server. Below is an example of an NGINX directive that sets the maximum size of the client request body:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;client_max_body_size 50m;

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

&lt;/div&gt;



&lt;p&gt;This directive specifies that the maximum size of the client request body is 50 megabytes. This can be used to limit the size of file uploads amongst other things. Limiting the size of file uploads can have a few advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Preventing abuse: Limiting the maximum size of the client request body can help to prevent malicious actors from attempting to abuse your server by sending excessively large requests. This can help to protect your server from resource exhaustion and other types of attacks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improving performance: Allowing clients to send excessively large requests can consume a significant amount of server resources, which can negatively impact the performance of your server. By limiting the maximum size of the client request body, you can help to ensure that your server has sufficient resources available to handle other requests.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What exactly does NGINX do?
&lt;/h2&gt;

&lt;p&gt;One of the primary responsibilities of NGINX is serving static content such as images and HTML.  NGINX keeps track of requests to the server through an access log. An access log is a record of all incoming requests to the server. This log can be useful for debugging issues, analyzing traffic patterns, and monitoring the performance of your server.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Companies use NGINX?
&lt;/h2&gt;

&lt;p&gt;NGINX is a popular and widely-used web server software that is trusted by many well-known companies. Some of these include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Netflix: Netflix uses NGINX as a reverse proxy to distribute incoming requests to its back-end servers and improve the performance of its streaming service.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Airbnb: Airbnb uses NGINX to improve the performance of its website and mobile apps even with millions of users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hulu: Hulu uses NGINX to improve the performance and scalability of its streaming service.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Instagram: Instagram uses NGINX as a reliable and high-performance web server to handle incoming requests and improve the performance of their platform.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sE4L3-e5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y2kgb9w4t8g2aju317r5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sE4L3-e5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y2kgb9w4t8g2aju317r5.png" alt="NGINX Companies" width="880" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;NGINX is a versatile and performant web server that is well-suited for handling a large volume of traffic. Its asynchronous event-driven architecture allows it to handle a large number of connections efficiently, and its customizable directive system allows developers to fine-tune its behavior to meet their specific needs. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Sources:&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;a href="https://www.javatpoint.com/nginx-introduction"&gt;NGINX Javatpoint&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.nginx.com/"&gt;NGINX Docs&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.freecodecamp.org/news/an-introduction-to-nginx-for-developers-62179b6a458f/"&gt;Free Code Camp NGINX Introduction&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>Getting Started with Webpack</title>
      <dc:creator>zachmarullo</dc:creator>
      <pubDate>Mon, 12 Dec 2022 05:05:06 +0000</pubDate>
      <link>https://forem.com/zachmarullo/getting-started-with-webpack-4mi7</link>
      <guid>https://forem.com/zachmarullo/getting-started-with-webpack-4mi7</guid>
      <description>&lt;h2&gt;
  
  
  What is Webpack?
&lt;/h2&gt;

&lt;p&gt;According to the documentation for webpack, it is a module bundler whose purpose is to bundle files for usage in a browser. It is important to note that the minimum version of node to run Webpack 5, the newest version of webpack, is Node version 10.13.0. Webpack is used to process the files from an application and build a dependency graph from one or more entry points. It then combines the files into one or more bundles which are static assets to serve the content from. This can be useful for improving the performance of your website by reducing the number of files that need to be loaded, and by allowing you to use modern JavaScript language features that may not be supported by older browsers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started with webpack
&lt;/h2&gt;

&lt;p&gt;To get started with webpack, you will need to install it using npm, the package manager for JavaScript. It is also important to note, that since version 4 of webpack, you will also need to install webpack CLI. This is because the command line interface for webpack was removed from the main package and added to its own repository. You can achieve both of these installations by entering the following command in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i -D webpack webpack-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will install webpack itself, as well as the command line interface needed to interact with webpack from the terminal as development dependencies. Installing webpack, or any npm package as a development dependency simply means that it will only be used during the build process and will not be included in your final bundle. As of webpack version 4, webpack provides default configuration settings on installation which makes it very easy to use right out of the box. This is great, but quite often with more complex applications, you as a developer will need to create a configuration file to instruct webpack how to handle each file type.&lt;/p&gt;

&lt;h2&gt;
  
  
  webpack.config.js
&lt;/h2&gt;

&lt;p&gt;With no configuration, webpack will assume that your entry point of your code is in &lt;code&gt;src/index.js&lt;/code&gt;, but this can be reconfigured to suit your needs. An extremely basic webpack setup will look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const path = require('path');

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  }
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, &lt;code&gt;./src/index.js&lt;/code&gt; is the entry point for your code. This is the file that webpack will start from when building your bundle. The output section specifies the name and location of the generated bundle file. If you wanted to change the location of either the entry point or the output location, it is as simple as updating the path to either within the webpack.config.js file.&lt;/p&gt;

&lt;p&gt;Once you have created your webpack.config.js file, you can run webpack from the command line by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;./node_modules/.bin/webpack
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
.&lt;br&gt;
Additionally, you could write some scripts within your package.json file to run webpack for you by running a simple command, which is often:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm run build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Core concepts of webpack configuration
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Entry&lt;/strong&gt;&lt;br&gt;
As stated above, an entry point tells webpack where to start when building its internal dependency graph. Webpack is then able to figure out which other modules or libraries that entry point is depending on. There is often only one entry point needed, however, you can specify multiple by setting an entry property in the webpack configuration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
The output property in webpack's configuration file determines the location and filename of the bundles that are generated by webpack. By default, webpack will output the main bundle to ./dist/main.js and any other generated files to the ./dist folder. You can customize this by specifying an output field in your webpack configuration file.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const path = require('path');

module.exports = {
  // ...other webpack options

  output: {
    filename: 'my-bundle.js',
    path: path.resolve(__dirname, 'build')
  }
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, the output property specifies that the generated bundle should be named my-bundle.js and should be placed in the build directory. This allows you to customize the output location and filenames of your webpack bundles.&lt;/p&gt;

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

&lt;p&gt;Webpack loaders are an essential part of the webpack bundler. Loaders allow webpack to process various types of files and convert them into a format that can be bundled and served to the client.&lt;/p&gt;

&lt;p&gt;At a basic level, loaders are transformations that are applied to the source code of a module. They can be used to pre-process files before they are added to the webpack bundle. This allows you to import different types of files, such as TypeScript or SCSS, and have them transformed into JavaScript that can be executed in the browser.&lt;/p&gt;

&lt;p&gt;To use a loader, you need to include it in your webpack configuration file. You can specify which files should be processed by a particular loader using a regular expression. For example, this configuration would use the TypeScript loader to process all files with a .ts or .tsx extension:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module.exports = {
  module: {
    rules: [
      {
        test: /\.(ts|tsx)$/,
        use: 'ts-loader'
      }
    ]
  }
};

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

&lt;/div&gt;



&lt;p&gt;Once a loader has been added to the configuration, you can import the relevant files in your code and webpack will automatically apply the transformation when bundling your application.&lt;/p&gt;

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

&lt;p&gt;Webpack plugins are a powerful way to extend the functionality of the webpack bundler. Unlike loaders, which are used to transform individual files, plugins operate at a higher level and provide a wide range of functionality, from bundle optimization and minification to defining environment variables and adding additional features to the bundling process.&lt;/p&gt;

&lt;p&gt;To use a plugin in webpack, you need to include it in the plugins array in the webpack configuration file. &lt;/p&gt;

&lt;p&gt;Once a plugin has been added to the configuration, it will be automatically applied during the bundling process. Depending on the plugin, this may involve modifying the bundled code or adding additional functionality to the bundler itself.&lt;/p&gt;

&lt;p&gt;There are many plugins available for webpack, and they can greatly enhance the capabilities of the bundler. Some popular plugins include the &lt;code&gt;CleanWebpackPlugin&lt;/code&gt;, which can be used to remove old, unused files from the output directory, and the &lt;code&gt;HtmlWebpackPlugin&lt;/code&gt;, which can be used to generate an HTML page to host the bundled code.&lt;br&gt;
 Plugins can provide a wide range of additional functionality to the bundler. They are an essential part of the webpack configuration and can greatly simplify and improve your development workflow.&lt;/p&gt;

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

&lt;p&gt;In webpack, the mode option is used to specify the environment in which the bundled code will be used. This option can take one of two values: production or development.&lt;/p&gt;

&lt;p&gt;When running webpack in production mode, the bundler will apply optimizations to the output code to make it as small and efficient as possible. This can include minification, tree shaking, and other techniques to reduce the size of the bundled code.&lt;/p&gt;

&lt;p&gt;In development mode, webpack will generate unoptimized code that is easier to debug and work with. This mode may also include additional features such as hot module replacement, which allows you to update modules in the browser without reloading the page.&lt;/p&gt;

&lt;p&gt;The mode option can be specified in the webpack configuration file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module.exports = {
  mode: 'production'
};

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

&lt;/div&gt;



&lt;p&gt;It can also be specified when running webpack on the command line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;webpack --mode=production

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

&lt;/div&gt;



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

&lt;p&gt;Webpack is a powerful and versatile tool that can help you organize and optimize your front-end code. By using webpack, you can write modular, maintainable code that can be easily loaded and executed in the browser. Hope you enjoyed reading!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Sources:&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;a href="https://webpack.js.org/"&gt;Webpack Docs&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=IZGNcSuwBZs&amp;amp;t=1589s"&gt;YouTube Webpack v5 Crash Course&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.sitepoint.com/webpack-beginner-guide/"&gt;Beginner's Guide to Webpack&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>Basic Mechanics of Machine Learning</title>
      <dc:creator>zachmarullo</dc:creator>
      <pubDate>Mon, 28 Nov 2022 05:09:49 +0000</pubDate>
      <link>https://forem.com/zachmarullo/basic-mechanics-of-machine-learning-pik</link>
      <guid>https://forem.com/zachmarullo/basic-mechanics-of-machine-learning-pik</guid>
      <description>&lt;h2&gt;
  
  
  What is machine learning?
&lt;/h2&gt;

&lt;p&gt;According to the Oxford Dictionary, machine learning is the use and development of computer systems that are able to learn and adapt without following explicit instructions, by using algorithms and statistical models to analyze and draw interferences from patterns in data. Machine learning is a subfield of artificial intelligence in which the goal is to understand structures of data and fit that data into models that are able to be used by people. Any and every technology user has benefitted from machine learning, such as facial recognition or even recommendation engines that suggest a show or movie to watch next. Machine learning has been around for probably much longer than you'd guess, 1943 to be exact. Machine learning was first conceived from the mathematical modeling of neural networks, so its been around for quite some time, but recently has become a bit more relevant with storage becoming significantly cheaper.&lt;/p&gt;

&lt;p&gt;Machine learning is great for solving many types of complex problems that would be too much for a human to calculate on their own. Some other relevant examples of machine learning are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Medical Diagnosis:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Machine learning can help us with diagnosing diseases in patients. Some ways machines assist us are in formulating diagnosis as well as recommendation of a treatment option. Machine learning can also assist in the analytics of bodily fluids, and in the case of rare disease, facial recognition software working in tandem with machine learning can be used to scan patient photos and identify phenotypes that correlate with rare genetic disorders.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Predictive Analysis&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Predictive Analysis in machine learning can help determine whether transactions are fraudulent or legitimate as well as improving prediction systems abilities to calculate the possibility of a fault.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Speech/Image Recognition&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Speech and Image Recognition coupled with machine learning is probably the most familiar of these. Speech recognition can be used to translate speech to text or text files, help with appliance control, and facilitate voice searches. Image recognition is equally prevalent in facial recognition in cell phone locks, assigning names to images(like tagging a friend on social media), and analyzing handwriting. &lt;/p&gt;

&lt;p&gt;Machine learning is segmented into several different techniques, mostly divided into 4 categories. These are supervised learning, unsupervised learning, reinforcement learning, and semi-supervised learning. Supervised learning is applicable when a machine is given sample data as well as output data with correct labels. This allows the machines to basically "study" correct images while making predictions about output values and errors that could occur, and attempting to correct them through algorithms. Unsupervised learning is when a machine is trained with some input data, but the output is not known. This is not used as commonly in practical business, but it does help in exploring the data and can infer from the data it is given to describe hidden structures from unlabeled data. Reinforcement learning is feedback-based machine learning, where computer programs need to explore and observe their environment. For each good or correct action, the machine will get a positive reward, and for each incorrect response, they will get a negative reward. The goal of the program is to maximize the positive rewards, and since there is no labeled data, the machine has to rely on learning through experience only. Lastly, semi-supervised learning is an amalgamation of both supervised and unsupervised learning. It performs actions on a mixed set of data, some being labeled and some being unlabeled. This helps to reduce the costs of the machine learning model(not having to label everything), and also helps to increase the accuracy of the machine learning model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Machine Learning's Most Interesting Paradox
&lt;/h2&gt;

&lt;p&gt;Moravec's paradox is a phenomenon in machine learning which occurs when we use AI-powered tools. It states that tasks which humans find simple due to sensorimotor skills that humans naturally possess are difficult things for machines to learn. Additionally, the inverse is true, tasks which are complex to humans, such as solving complex logic puzzles and performing advanced mathematics almost instantaneously, can be relatively easy to teach to a machine. Machines have trouble learning seemingly "simple" tasks because the things that we take for granted, or deem obvious, came about from thousands of years of evolution. At the bottom of the article, I have attached the YouTube video I watched that made me interested in learning more about machine learning and Moravec's Paradox. If you have a few minutes to spare, I would highly recommend watching it or bookmarking it for later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges in Machine Learning
&lt;/h2&gt;

&lt;p&gt;Some of the most common challenges when it comes to machine learning are lack of quality data, the ability to understand which processes need automation, implementation, lack of skilled resources, and inadequate infrastructure. Some of these challenges are due to machine learning as a whole requiring vast amounts of data churning capabilities, as well as machine learning itself to still be in early stages of development. This means not only is there a shortage of infrastructure and data, but also that there is a shortage of skilled employees available to manage and develop machine learning and analytical content. One of the biggest challenges machine learning faces is bad data. Any sort of incomplete or irrelevant data is malicious to machine learning, so professionals must take time to rigorously evaluate the data before it is used in machine learning.&lt;/p&gt;

&lt;p&gt;Hopefully you've learned a thing or two about the basics of machine learning as it is quite the fascinating field, and I'm looking forward to diving deeper into the basics and learning more about machine learning as it develops. Hope you enjoyed the read!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Video:&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://youtu.be/raHM3k-uR0E"&gt;Moravec's Paradox Explained in 5 Levels of Difficulty&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Sources:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.provintl.com/blog/5-common-machine-learning-problems-how-to-beat-them"&gt;5 Common Machine Learning Problems and How to Beat Them&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.javatpoint.com/basic-concepts-in-machine-learning"&gt;Basic Concepts in Machine Learning&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/an-introduction-to-machine-learning"&gt;Digital Ocean Introduction to Machine Learning&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.datasciencecentral.com/7-real-world-examples-of-machine-learning-in-current-times/"&gt;7 Examples of Real World Machine Learning&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://indiaai.gov.in/article/what-is-true-about-moravec-s-paradox"&gt;What is True About Moravec's Paradox&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Popular Python IDEs and a few Helpful Tools</title>
      <dc:creator>zachmarullo</dc:creator>
      <pubDate>Mon, 17 Oct 2022 04:23:44 +0000</pubDate>
      <link>https://forem.com/zachmarullo/popular-python-ides-and-helpful-tools-5293</link>
      <guid>https://forem.com/zachmarullo/popular-python-ides-and-helpful-tools-5293</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Last post, we explored the basics of Python. We discussed information about the birth of the programming language, a little bit of history about it, its main goals, and some basic syntax. This time around, we will be taking a look at some of the most popular IDEs and tools in Python that can make coding in Python a breeze.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/zachmarullo/introduction-to-python-2a5n"&gt;Link to previous post&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Popular Python IDEs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;-IDLE&lt;/strong&gt;&lt;br&gt;
IDLE, or Integrated Development and Learning Environment is one of the most popular IDE's to use with python. For starters, like many others on this list, IDLE is a free Python IDE. Additionally, IDLE has some awesome features, an easy installation, and works on almost all operating systems. Some of the bright points of this coding environment include an efficient debugger, syntax highlighting, as well as the ability to search in or for multiple files simultaneously. IDLE is also considered to be very beginner friendly, making it the perfect IDE for someone who is just beginning to learn Python.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;-PyCharm&lt;/strong&gt;&lt;br&gt;
This IDE made by JetBrains is one of the more well-known IDE's for Python and is packed with helpful tidbits of information and templates to help the user understand Python better. This is currently the IDE I am using to write Python in, but as we will see, there are some more niche uses for other IDE's in the list. One of the most helpful things about the PyCharm IDE is that within the IDE there are examples of things like class instantiation, as well as some examples of algorithms and many other constructive pieces of code built in for you to interact with or look at to try to hone your Python writing skills. PyCharm is another free IDE with some outstanding features such as being able to access databases directly from within the IDE, smart code navigation, and even support for JavaScript, CSS, and TypeScript. In the &lt;a href="https://survey.stackoverflow.co/2022/"&gt;Stack Overflow Developer's Survey&lt;/a&gt;, PyCharm was ranked as the 7th most popular of any IDE.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;-Jupyter Notebook&lt;/strong&gt;&lt;br&gt;
Jupyter notebook is an IDE that is used mostly by data scientists and machine learning engineers because it has the ability to test code only executing one cell, rather than running the whole program like most other IDE's. It is also seen as one of the best IDEs for code collaboration because it works on the browser, and can be annotated for others, as well as having a live code sharing feature. There are also some data science libraries integrated into Jupyter such as Pandas, Matplotlib, and NumPy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;-Thonny&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Thonny is another free IDE that is useful for learning as well as teaching Python programming. Although it does have more of an "old school" look to it, it still comes with some impressive features to assist you on your coding journey. Some of these are an automatic syntax error detector, a detailed view of variable used in a Python project, and an easy to use debugger built in.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--g0olodXJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7fec7o8c7e9ehizsvs4s.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g0olodXJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7fec7o8c7e9ehizsvs4s.PNG" alt="Thonny IDE" width="653" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;-Visual Studio Code&lt;/strong&gt;&lt;br&gt;
According to the developers survey conducted by Stack Overflow, Visual Studio Code is the most popular and most used of any IDE in 2022. VSC's environment supports many different languages, and Python is no exception. One of the perks of Visual Studio Code is that it is free, but this hardly scratches the surface as far as cool things you can do with this IDE. Visual Studio Code is an open-source IDE and was created by Microsoft. It comes with many features including git integration, code debugging within the editor, and one of the best smart code completions IDE's have to offer. On top of all of this, Visual Studio Code has a plethora of options or add-ons that you can use to customize your experience, as well as access to helpful extensions that can be downloaded through the IDE. &lt;/p&gt;



&lt;p&gt;Alright, that covers just a few of the options available, but if you're interested in finding more and seeing the pros and cons of each IDE, &lt;a href="https://www.simplilearn.com/tutorials/python-tutorial/python-ide"&gt;simplilearn&lt;/a&gt; has a list of 10 Python IDE's with some notable features listed, as well as a video walkthrough and some beginner tutorials for learning Python. That being said, we should now take a look at some of the Python tools I found interesting or helpful to know about.&lt;/p&gt;
&lt;h2&gt;
  
  
  Helpful and Interesting Python Tools
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;-PIP&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the bread and butter for Python packages, or modules. If you have Python version 3.4 or later, PIP is automatically included. PIP is used to download many of the other tools on this list, so if you're interested in them you'll want to make sure PIP is installed in your workspace. If you're unsure if PIP is included in the Python IDE you're using, its easy to check the version with the following code:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5xn3IFi2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w2dclb44wbu7gaor1upw.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5xn3IFi2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w2dclb44wbu7gaor1upw.PNG" alt="Check PIP Version Command" width="533" height="64"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have PIP, this will return your version number, but if you do not you'll be returned the usual "no such file or directory" error.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;-Pylint&lt;/strong&gt;&lt;br&gt;
Pylint functions similarly to Eslint for JavaScript in that it is used to catch various errors such as syntax errors, misspelled variable names, and less noticeable logical errors. This can be extremely helpful because, as a developer, it can be quite a headache to scan through a file several times just to realize you misspelled a variable name or forgot an essential syntactical element. Point aside, having a tool that helps you to write code in the "best practice" method can be helpful whether you are a beginner, or well versed in Python and just want to be sure you're using the proper syntax while coding. One of the downsides to this tool is that it sometimes is just plain wrong. This is remedied by creating a ".pylintrc" file which functions similar to a ".gitignore" file in JavaScript. Pylint is also extremely easy to install, just being installed at the command line with the following code:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AKpv-R1G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0jp9i89yy8baui3te3ot.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AKpv-R1G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0jp9i89yy8baui3te3ot.PNG" alt="Pylint Download Command" width="218" height="37"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;-Scikit-Learn&lt;/strong&gt;&lt;br&gt;
Scikit-Learn is an open-source Python tool mostly used by data scientists as well as machine learning. This is because Scikit-Learn is extremely efficient in data mining and data analysis. The Scikit-Learn library has many efficient tools for machine learning as well as statistical modeling. It should be noted that Scikit-Learn should not be used for simpler tasks like reading data, manipulating, or summarizing it. This is because there are better libraries for those things such as &lt;a href="https://pandas.pydata.org/docs/"&gt;Pandas&lt;/a&gt; and &lt;a href="https://numpy.org/doc/"&gt;NumPy&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;-Black&lt;/strong&gt;&lt;br&gt;
Black is a code formatting tool for python. One of the reasons that Black is a good python tool is due to its properties of being fast and not importing any code to format what you've written. It can be tiring to have to go through your files and manually format everything for readability or making sure that lines are properly wrapping. Black solves this problem by scanning through whatever file(s) you tell it to and automatically formatting them for you. Much like others on this list, Black is installed via the command line using PIP. after that its as simple as running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;black nameOfProject_toBeChecked
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;This has been a small look at some of the available IDEs and tools that you as a developer can use to customize your experience learning and writing Python. Although this list does contain a few of the most interesting Python tools, this list does not speak to the vast amount of different packages you can install within your python coding environment to help you in almost any way imaginable. Hopefully this post has given you ideas about which tools you'd like to look further into, and maybe even a "favorite" IDE you can download. Below I've included some of the sources I used to write this post as well as some of the docs for the various tools listed above. Thanks for reading!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Sources:&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://survey.stackoverflow.co/2022/"&gt;Stack Overflow Developer's Survey&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.jetbrains.com/pycharm-edu/"&gt;JetBrains: PyCharm Edu Site&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.simplilearn.com/tutorials/python-tutorial/python-ide"&gt;Simplilearn Python IDE Info&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.upgrad.com/blog/python-developer-tools/"&gt;Python Tools Blog Post&lt;/a&gt;&lt;br&gt;
&lt;a href="https://pylint.pycqa.org/en/latest/"&gt;Pylint Docs&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.w3schools.com/python/python_pip.asp"&gt;W3 Schools Python PIP&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Introduction to Python</title>
      <dc:creator>zachmarullo</dc:creator>
      <pubDate>Mon, 10 Oct 2022 04:41:10 +0000</pubDate>
      <link>https://forem.com/zachmarullo/introduction-to-python-2a5n</link>
      <guid>https://forem.com/zachmarullo/introduction-to-python-2a5n</guid>
      <description>&lt;h2&gt;
  
  
  Basic Information about Python
&lt;/h2&gt;

&lt;p&gt;Python is quickly becoming one of the most popular coding languages out today. This is because it is packed with functionality, and is a relatively beginner-friendly language syntactically. In this post, we will explore some of the basic concepts in python, how they relate to JavaScript, and a brief history of how Python came to be as popular as it is today.&lt;/p&gt;

&lt;h2&gt;
  
  
  History of Python
&lt;/h2&gt;

&lt;p&gt;According to &lt;a href="https://pythoninstitute.org/about-python#:~:text=Python%20was%20created%20by%20Guido,called%20Monty%20Python's%20Flying%20Circus."&gt;Python Institute&lt;/a&gt;, Python was created by Guido van Rossum and originally released on February 20, 1991. Later, in 1999, Guido van Rossum defined his goals for Python as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;an easy and intuitive language just as powerful as those of the major competitors&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;open source, so anyone can contribute to its development&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;code that is as understandable as plain English&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;suitable for everyday tasks, allowing for short development times.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Another fun fact about the programming language is that even though most think it is in reference to the snake, Python got its name from an old BBC comedy sketch series called &lt;em&gt;Monty Python's Flying Circus&lt;/em&gt;. Python did not have as quick of a rise as something like JavaScript, but year after year the number of users of the language continues to increase. According to the &lt;a href="https://survey.stackoverflow.co/2022/#most-popular-technologies-language"&gt;Stack Overflow Developer Survey&lt;/a&gt; taken in 2022, Python is the fourth most popular language. Python ranks lower than JavaScript, HTML/CSS, and SQL.&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic Syntax and Operations
&lt;/h2&gt;

&lt;p&gt;One of the notable differences about Python, as it relates to JavaScript, is that there are no "var", "let", or "const" variable declarations. Instead, variables are just named and set to a value with no declarative keyword. As far as actual usage of these variables, they behave very similarly to JavaScript variables. Basic operations like addition, subtraction, division, multiplication, and the modulus operator exist and operate just as they do inside of JavaScript, allowing us to add numbers, concatenate strings, and pretty much any other operation contained within the Python library.&lt;/p&gt;

&lt;p&gt;One notable difference between JavaScript and Python is the way comments are written. In Python, a single line comment is written using the hash character(#), and will extend the comment to the end of the current line. For multi-line comments, a triple quotation is used("'). &lt;/p&gt;

&lt;h2&gt;
  
  
  Basic Python Operation Examples
&lt;/h2&gt;

&lt;p&gt;First we will go over simple concatenation as well as printing values in Python. As mentioned earlier, there are no declarative variable keywords, so all the programmer needs to do is name their variable and set it equal to a string or other value.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YIOluVd8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/39mdk666mo6kfggbmydb.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YIOluVd8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/39mdk666mo6kfggbmydb.PNG" alt="Variable Declaration and String Concatenation in Python" width="432" height="158"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the above snippet we have created three variables, each containing a piece of a sentence to be concatenated. Once the strings are stored in the variables, its as easy as creating a fourth variable and setting it equal to the concatenation of the first three. This example will "print" the sentence "This is an example of creating and concatenating in Python!". Pretty simple, right?&lt;/p&gt;

&lt;h2&gt;
  
  
  Looping In Python
&lt;/h2&gt;

&lt;p&gt;Loops, like in many coding languages, are used to repeat a task several times without having to rewrite the code to do so. Structurally, and in operation, Python's loops are quite similar to that of JavaScript. Let's take a look at a couple examples of these loops.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--g1XXZIx3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9hu7bnkgw81s8elsz8f5.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g1XXZIx3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9hu7bnkgw81s8elsz8f5.PNG" alt="Loops in Python" width="367" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the two examples above, we looped through numbers 1-10, and in the second example, we multiplied a number by two each time and printed it as long as it was less than the value of 100. &lt;/p&gt;

&lt;h2&gt;
  
  
  Lists in Python
&lt;/h2&gt;

&lt;p&gt;The next concept we are going to cover is lists in Python as well as interacting with them, which are quite similar to JavaScript. Lists can hold different types of data upon initialization, or can be initialized empty and added to at a later time. Just like a JavaScript array, Python's lists are zero-indexed and can be accessed using the index. Below shows a few, but far from all, of the useful methods a programmer can use to interact with values in a list.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JEDEAuLR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4dpmqpfxz9yuq3dffqz1.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JEDEAuLR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4dpmqpfxz9yuq3dffqz1.PNG" alt="List Methods in Python" width="745" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Dictionaries in Python
&lt;/h2&gt;

&lt;p&gt;In Python, the dictionary is similar to an object in JavaScript, having a key as well as a value. Just like in JavaScript, dictionaries can be more complex than lists, but also have a bit more functionality. Similar to objects in JavaScript, you can't have duplicate key values. Trying to add a value to a key that is already assigned will just overwrite the existing value. Additionally, just like the lists in python, you are able to initialize an empty dictionary in Python and add values at a later time. One of the more recent changes in Python, according to W3 Schools, is that dictionaries in python are now ordered. This means that the items have a defined order and will not change. This means that you can technically get values or keys from a dictionary using index value, however, this is not advised as removing an element will shift the index values of each other element contained in the dictionary. This can make things cloudy and lead to bugs so it is usually best to use a different method to return data from a dictionary. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WFoFMjJ0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5cmpsjsx3dtt9wsosbvr.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WFoFMjJ0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5cmpsjsx3dtt9wsosbvr.PNG" alt="Examples of Python Dictionaries" width="813" height="555"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;All in all, I've only taught myself a little bit of Python in my free time, so this post is barely scratching the surface of the capabilities of Python, but hopefully a little bit of introduction to the language has you curious enough to go and learn a few more things about Python. Included below in my sources are everything used to write this article as well as some generally helpful and interesting information about the language. Thanks for reading!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://docs.python.org/3/"&gt;Python Docs&lt;/a&gt;&lt;br&gt;
&lt;a href="https://survey.stackoverflow.co/2022/#most-popular-technologies-language"&gt;Stack Overflow Developer Survey 2022&lt;/a&gt;&lt;br&gt;
&lt;a href="https://pythoninstitute.org/about-python#:~:text=Python%20was%20created%20by%20Guido,called%20Monty%20Python's%20Flying%20Circus."&gt;Python Institute&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.w3schools.com/python/default.asp"&gt;W3 Schools&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.python.org/doc/essays/blurb/"&gt;Python Essay with language comparison link&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>beginners</category>
    </item>
    <item>
      <title>An Introduction to SQL</title>
      <dc:creator>zachmarullo</dc:creator>
      <pubDate>Sun, 02 Oct 2022 23:07:29 +0000</pubDate>
      <link>https://forem.com/zachmarullo/an-introduction-to-sql-3dk6</link>
      <guid>https://forem.com/zachmarullo/an-introduction-to-sql-3dk6</guid>
      <description>&lt;h2&gt;
  
  
  Introduction to SQL
&lt;/h2&gt;

&lt;p&gt;So, what exactly is SQL? The name SQL is an acronym for Structured Query Language, but is sometimes referred to as "Sequel". SQL is a database querying language used to extract, insert, delete and create records inside relational database management systems or RDBMS.  Although SQL has many more operations that can be performed, we will stick with the basics as this is meant to be an introduction to the language. &lt;/p&gt;

&lt;h2&gt;
  
  
  What is a database?
&lt;/h2&gt;

&lt;p&gt;According to &lt;a href="https://www.oracle.com/za/database/what-is-database/"&gt;oracle.com&lt;/a&gt;, a database is an organized collection of structured information, or data, typically stored electronically in a computer system. A database is usually controlled by a database management system (DBMS). Data is most typically organized in rows and columns which are then put into separate tables in order to make querying them effective. Over the years, databases have evolved substantially from a simple tree-like model that only allowed a one-to-many relationship. Some of the newer, more flexible types of database are relational databases, object-oriented databases, and most recently cloud databases and self-driving databases.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mWQ8EMZf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/05ienurx2d697t8j7exe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mWQ8EMZf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/05ienurx2d697t8j7exe.png" alt="Example of a Database Structure" width="880" height="763"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is SQL and why is it used?
&lt;/h2&gt;

&lt;p&gt;Back in the days before SQL, before the internet, databases used to be kept as actual files in file cabinets. I'm sure its not difficult to imagine how tedious it would be to have to go through a plethora of files in filing cabinets, and manually have to compile the data you wanted as well as transforming it. This is part of the job of SQL. As mentioned above, SQL is used to query databases of potentially millions of pieces of data and return only  the relevant information the searcher has specified. Databases can not only contain millions of data entries, but also can have multiple different fields for each entry. This is where SQL can come in handy by returning only the values specified by the person querying the database. For example, if you wanted to query a database of soccer players, but wanted the data returned to be filtered in some way(such as height, name, or weight), SQL could return just that information.&lt;/p&gt;

&lt;h2&gt;
  
  
  A brief history of SQL
&lt;/h2&gt;

&lt;p&gt;According to Chad Brooks of businessnewsdaily.com,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The SQL programming language was developed in the 1970s by IBM researchers Raymond Boyce and Donald Chamberlin. The programming language, known then as SEQUEL, was created following Edgar Frank Codd’s paper, “A Relational Model of Data for Large Shared Data Banks,” in 1970.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Since its development, according to W3 Schools, SQL has become a standard of the American National Standards Institute (ANSI) in 1986, and of the International Organization for Standardization (ISO) in 1987. The most recent version for SQL was published in 1992 by ANSI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic SQL syntax
&lt;/h2&gt;

&lt;p&gt;Depending on the SQL database you're using, you may or may not need to use the semicolon character. This is because commands in SQL can sometimes span several lines, and some programs require the semicolon to signify the end of a command. As far as case sensitivity goes, SQL as a language is not case sensitive, but uppercase is most frequently used for command lines. There are different versions or dialects of the SQL language, but in order to be compliant with ANSI standards, they all support the major commands. These commands include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;SELECT&lt;br&gt;
The select keyword in SQL retrieves information from one or more than one database table&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;UPDATE&lt;br&gt;
The update keyword allows you to update information within a database&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DELETE&lt;br&gt;
Allows you to delete information from database(s)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;INSERT&lt;br&gt;
Allows you to insert information into database(s)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;WHERE&lt;br&gt;
"WHERE" is used to filter data and return records that meet the chosen condition&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example of "SELECT", "FROM", and "WHERE" taken from w3schools.com:&lt;br&gt;
&lt;code&gt;SELECT column1, column2, ...&lt;br&gt;
FROM table_name&lt;br&gt;
WHERE condition;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;On the "SELECT" line of the code example above, the column to be queried is chosen. "FROM" is used to choose which particular table you are trying to access. The "WHERE" condition can be set to return a particular ID associated with the data, or other constraints as mentioned in the intro of this post.&lt;/p&gt;

&lt;h2&gt;
  
  
  Popular SQL Databases in 2022
&lt;/h2&gt;

&lt;p&gt;There are many SQL databases, but three of the most popular, according to &lt;a href="https://db-engines.com/en/ranking"&gt;DB-Engines&lt;/a&gt; are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Oracle:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Oracle is the most widely used SQL database currently, however it is not seen as beginner friendly because the user may need a large amount of SQL knowledge to use the database effectively.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; MySQL:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;MySQL is a mostly open source, free-to-use database(Commercial license is required to use for businesses). It is also considered beginner friendly as anyone can download and begin to use MySQL in a short period of time. One of the drawbacks of using MySQL is that it lacks an efficient debugging tool relative to paid databases.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Microsoft SQL Server:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Microsoft SQL Server has a good source of documentation online, and boasts that it is the most secure database engine over the last 10 years.&lt;/p&gt;

&lt;h2&gt;
  
  
  What jobs use SQL?
&lt;/h2&gt;

&lt;p&gt;As I'm sure you would expect, software developers hit the top of this list because SQL is so useful for using data from databases to make graphs or keep statistics on web pages and on apps. However, SQL seems to be used widely by many different jobs. Some of these include business analysts, data scientists, financial consultants and many more professions. &lt;/p&gt;

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

&lt;p&gt;All in all, SQL is an extremely versatile querying language, and can be used to do a multitude of different things. It is used for many different things from sports statistics to customer databases to finance. If this blog post has grabbed your interest, I have included a couple videos below that I found to be good introductions to the SQL language.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Helpful Videos&lt;/em&gt;&lt;br&gt;
&lt;a href="https://youtu.be/Yw3NNvqk-2o"&gt;Learn Web Code: MySQL for beginners&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=27axs9dO7AE"&gt;Basic Intro/Explanation to SQL&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.businessnewsdaily.com/5804-what-is-sql.html"&gt;Business News Daily&lt;/a&gt;&lt;br&gt;
&lt;a href="https://en.wikipedia.org/wiki/SQL"&gt;Wikipedia&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.itl.nist.gov/div897/ctg/dm/sql_info.html"&gt;NIST Gov&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.w3schools.com/sql/sql_intro.asp"&gt;W3 Schools&lt;/a&gt;&lt;br&gt;
&lt;a href="https://towardsdatascience.com/top-databases-to-use-in-2022-what-is-the-right-database-for-your-use-case-bb8d3f183b21#:~:text=2.-,MySQL,need%20to%20purchase%20a%20license."&gt;Top Databases 2022&lt;/a&gt;&lt;br&gt;
&lt;a href="https://db-engines.com/en/ranking"&gt;DB-Engines Current Rankings&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.microsoft.com/en-us/evalcenter/evaluate-sql-server-2022#Description"&gt;Microsoft SQL Server Info&lt;/a&gt;&lt;/p&gt;

</description>
      <category>sql</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Loops In JavaScript</title>
      <dc:creator>zachmarullo</dc:creator>
      <pubDate>Thu, 11 Aug 2022 17:07:53 +0000</pubDate>
      <link>https://forem.com/zachmarullo/loops-in-javascript-g7</link>
      <guid>https://forem.com/zachmarullo/loops-in-javascript-g7</guid>
      <description>&lt;p&gt;In JavaScript, there are several different kinds of loops that can be used to accomplish whatever task you may have. These range from iterating through an array, to having a loop execute a task a certain number of times. Loops can come in handy in a lot of different ways, from checking through a database for a name, to running a task repetitively in a video game you are creating.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a loop?
&lt;/h2&gt;

&lt;p&gt;Loops are used to run blocks of code repetitively until a certain criteria is met. At this point, the loop will cease execution and move on to the next part of your code.&lt;/p&gt;

&lt;h2&gt;
  
  
  For Loops:
&lt;/h2&gt;

&lt;p&gt;For loops are used to iterate through arrays. They can be combined with conditional "if" statements to pick out pieces of an array and return them to you, or simply to build out something in the console, such as a triangle made out of pound symbols(#).&lt;/p&gt;

&lt;p&gt;Here's an example of creating a triangle:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function createTri(num) {
  for (let i = '!'; i.length &amp;lt;= num; i+='!') {
    console.log(i);
  }
}

console.log(createTri(5));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output for this triangle would look like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;! //first iteration of loop&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;!! //second iteration of loop&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;!!! //third iteration of loop&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;!!!! //fourth iteration of loop&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;!!!!! //fifth iteration of loop&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At this point, the loop would see that it has met its criteria and break out of the for loop because the length of "i" has become equal to the number passed into the function. In this case, the number was 5.&lt;/p&gt;

&lt;p&gt;For loops can also be used to iterate through arrays and return values depending on how the loop is set up.&lt;/p&gt;

&lt;p&gt;Here's another example of a for loop which will be explained afterwards:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const arr = [1, 2, 3, 4, 5, 6];

for (let i = 0; i &amp;lt; arr.length; i++) {
  console.log(arr[i]);
}

for (let j = 1; j &amp;lt; arr.length; j+=2) {
  console.log(arr[j]);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the first example, in each iteration of the for loop, "i" represents the index number, and console logging "arr[i]" on each iteration will print each value of the array to the console because the loop is only going to stop when reaching the end of the array(or "arr.length" in this case).&lt;/p&gt;

&lt;p&gt;In the second example, notice "i" is set to 1. This is because, like mentioned above, the value of "i" is being taken from the &lt;em&gt;index&lt;/em&gt; rather than its actual position in the array. This means that the second loop in the above example will only print 2, 4, 6 (the even numbers). The same would be true to print the odd numbers if "i" were set equal to zero, because it would log the values of "i" at index 0, 2, and 4. This would produce the result of 1, 3, and 5.&lt;/p&gt;

&lt;h2&gt;
  
  
  For-in loops:
&lt;/h2&gt;

&lt;p&gt;For/in loops are used to iterate over the contents of an object. It is important to note that for/in loops can also iterate over the contents of an array, but should not be used if the order of the array contents are important.&lt;/p&gt;

&lt;p&gt;Below is an example of looping through an object, I'll use the object "MNF".&lt;br&gt;
First we will go through looping and logging the key names to the console, and then we will log the values of those keys.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let MNF = {
  firstName: "Marilyn",
  middleName: "Nicole",
  lastName: "Foster"
}

for (let key in MNF) {
  console.log(key);
}

// this prints firstName, middleName, lastName to the console.

let MNF = {
  firstName: "Marilyn",
  middleName: "Nicole",
  lastName: "Foster"
}

for (let key in MNF) {
  console.log(MNF[key]);
}

/* this example will print the actual value 
of the keys to the console, producing: 
Marilyn Nicole Foster
*/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  While Loops
&lt;/h2&gt;

&lt;p&gt;While loops are created to execute a specific block of code over and over as long as the test condition evaluates to true. It is important to note that in a while loop the test condition is evaluated each iteration &lt;strong&gt;before&lt;/strong&gt; execution.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let text = "";
let i = 0;
while (i &amp;lt; 10) {
  text += "The number is " + i + "\n";
  i++;
}

console.log(text);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Above, this code will only run until it hits "The number is 9" because before it runs the code in the body, it can see that the number has reached 10 after iterating and therefore breaks out of the loop.&lt;/p&gt;

&lt;p&gt;In conclusion, as you learn to code, you are introduced to new methods, which can have the same effect that loops will without having to insert all of the pieces manually, but it's important to understand how the foundation of each method works. This is the reason loops are so important to understand when trying to increase your knowledge and ability to do more with less code.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
