<?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: Thomas Nielson</title>
    <description>The latest articles on DEV Community by Thomas Nielson (@tfnielsonse).</description>
    <link>https://dev.to/tfnielsonse</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%2F997553%2F54abee40-4427-4933-9d46-c552fd84c20b.jpg</url>
      <title>DEV Community: Thomas Nielson</title>
      <link>https://dev.to/tfnielsonse</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tfnielsonse"/>
    <language>en</language>
    <item>
      <title>Locking Down Your Cloud-Native App with Snyk</title>
      <dc:creator>Thomas Nielson</dc:creator>
      <pubDate>Wed, 08 Jan 2025 03:07:24 +0000</pubDate>
      <link>https://dev.to/tfnielsonse/locking-down-your-cloud-native-app-with-snyk-3824</link>
      <guid>https://dev.to/tfnielsonse/locking-down-your-cloud-native-app-with-snyk-3824</guid>
      <description>&lt;h2&gt;
  
  
  &lt;u&gt;Introduction&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;Security in cloud-native applications is crucial, and integrating tools like Snyk into your development lifecycle can make all the difference. Here's &lt;strong&gt;how to integrate Snyk&lt;/strong&gt; with an application, across various stages of the SDLC, &lt;strong&gt;focusing&lt;/strong&gt; on &lt;strong&gt;SCM&lt;/strong&gt;, &lt;strong&gt;reporting&lt;/strong&gt;, &lt;strong&gt;CI/CD&lt;/strong&gt;, and &lt;strong&gt;IDE integration&lt;/strong&gt;.&lt;/p&gt;

&lt;h6&gt;
  
  
  &lt;strong&gt;GooF - The Cloud-Native App&lt;/strong&gt;
&lt;/h6&gt;

&lt;h6&gt;
  
  
  Goof Overview: Check out &lt;a href="https://github.com/snyk/goof" rel="noopener noreferrer"&gt;snyk/goof&lt;/a&gt; if you haven't yet. It's a JavaScript app designed by Snyk with intentional security holes, using npm and Docker, perfect for getting hands-on with security practices.
&lt;/h6&gt;

&lt;h2&gt;
  
  
  &lt;u&gt;The Power of Snyk in Security&lt;/u&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Snyk Code:&lt;/strong&gt; Gives you real-time feedback on your code's security, so you can fix issues before they become headaches. (SAST)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Snyk Open Source:&lt;/strong&gt; Detects vulnerabilities in code dependencies and ensures your packages are secure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Snyk Container:&lt;/strong&gt; Analyzes Docker images for potential security issues.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Snyk Infrastructure as Code (IaC):&lt;/strong&gt; Scans deployment scripts for configuration errors or security risks pre-build. (i.e, Terraform files)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;u&gt;Implementing Snyk in your SDLC&lt;/u&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  SCM Integration
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Setup:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to your Snyk &lt;strong&gt;account&lt;/strong&gt; and select "&lt;strong&gt;Integrations&lt;/strong&gt;".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Click&lt;/strong&gt; on the &lt;strong&gt;GitHub&lt;/strong&gt; tile and &lt;strong&gt;authorize Snyk&lt;/strong&gt; to access your repositories.&lt;/li&gt;
&lt;li&gt;Decide whether to scan all repositories or select specific ones.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Benefits:&lt;/strong&gt; Snyk can now scan your repos automatically, creating pull requests to fix vulnerabilities directly in GitHub.&lt;/p&gt;

&lt;h3&gt;
  
  
  CI/CD Integration
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Setup:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;In your CI/CD pipeline&lt;/strong&gt; (e.g., GitHub Actions), add a Snyk step to run scans.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use&lt;/strong&gt; &lt;strong&gt;&lt;code&gt;snyk test&lt;/code&gt;&lt;/strong&gt; for scanning and &lt;strong&gt;&lt;code&gt;snyk monitor&lt;/code&gt;&lt;/strong&gt; for continuous monitoring post-deployment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Benefits:&lt;/strong&gt; This integration ensures no vulnerable code reaches production, automatically testing for security with every push or pull request.&lt;/p&gt;

&lt;h3&gt;
  
  
  IDE Plugin
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Setup:&lt;/strong&gt;&lt;br&gt;
Install the Snyk plugin for your IDE (like VS Code or JetBrains IDEs) from the plugin marketplace.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt; Developers can see security issues in real-time while coding, promoting immediate fixes insights. Fix issues as you go.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reporting Views
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project Level Reports:&lt;/strong&gt; View vulnerabilities specific to each project within Goof, including severity, affected packages, and remediation steps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Organization Overview:&lt;/strong&gt; Get a bird's-eye view of security across all projects, highlighting trends and high-priority issues.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance and Licensing:&lt;/strong&gt; Reports that help in understanding the compliance status and license obligations of the dependencies used.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;u&gt;The Value Proposition for Customers&lt;/u&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Security as a Brand:&lt;/strong&gt; Integrating Snyk into your processes shows commitment to security, enhancing trust with customers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Efficiency and Speed:&lt;/strong&gt; With Snyk security checks automated from the code commit to deployment, you're not just developing fast; you're doing it securely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost Reduction:&lt;/strong&gt; Decreases the likelihood of security incidents - preventing breaches is way cheaper than cleaning up after one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance:&lt;/strong&gt; Snyk helps make sure your app isn't just secure but also compliant with whatever rules apply.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;By integrating Snyk into SDLC across SCM, CI/CD, and development tools, you're not just securing the application but also fostering a security-first culture. &lt;/p&gt;

&lt;p&gt;This approach mitigates risks early, streamlines development, reduces costs, and ensures compliance.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>snyk</category>
      <category>sdlc</category>
      <category>ai</category>
    </item>
    <item>
      <title>Understanding Data Analytics: Scalars, Vectors, Matrices, Tensors using Pandas, NumPy, and TensorFlow</title>
      <dc:creator>Thomas Nielson</dc:creator>
      <pubDate>Sat, 15 Jul 2023 00:21:59 +0000</pubDate>
      <link>https://dev.to/tfnielsonse/understanding-data-analytics-scalars-vectors-matrices-tensors-using-pandas-numpy-and-tensorflow-21j3</link>
      <guid>https://dev.to/tfnielsonse/understanding-data-analytics-scalars-vectors-matrices-tensors-using-pandas-numpy-and-tensorflow-21j3</guid>
      <description>&lt;p&gt;Welcome back! In our previous blog post, we talked about the differences between data analysis and data analytics. We used weather data as examples and introduced essential vocabulary terms. In this continuation, we'll look into Pandas, NumPy, and TensorFlow and how they can benefit your data analysis workflow.&lt;/p&gt;

&lt;p&gt;For the sake of keeping this blog post shorter and avoiding reinventing the wheel.. here are great blogs explaining &lt;a href="https://medium.com/the-data-analyst-toolkit/what-is-difference-between-numpy-and-pandas-9a0e089edf47" rel="noopener noreferrer"&gt;Pandas and NumPy&lt;/a&gt; and &lt;a href="https://medium.com/data-science-bootcamp/introduction-to-tensorflow-7be73a68e1" rel="noopener noreferrer"&gt;TensorFlow&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scalars / shape(1 x 1) 📊
&lt;/h3&gt;

&lt;p&gt;Scalars represent single numerical values without any specific direction. They play a fundamental role in data analytics, allowing us to represent quantities such as temperature, time, or humidity. Let's see an example using NumPy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import numpy as np

temperature = np.array([25.0, 26.5, 24.2])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, the NumPy Array temperature holds a sequence of temperature values. Scalars provide the starting point for our data analysis adventures.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vectors / shape:(m x 1) or (1 x m) 📈
&lt;/h3&gt;

&lt;p&gt;Vectors come into play when we have a collection of related data points. They possess both magnitude and direction, making them essential for representing multivariate data. Vectors can be viewed as a collection of Scalars.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import numpy as np

humidity = np.array([0.6, 0.7, 0.5])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, the NumPy array humidity captures humidity values at different points in time. Vectors enable us to explore the relationships between multiple variables.&lt;/p&gt;

&lt;h3&gt;
  
  
  Matrices / shape:(m x n) 📊
&lt;/h3&gt;

&lt;p&gt;Matrices provide a structured format for organizing and manipulating structured datasets. They are essential for data preprocessing and various analytical tasks. Matrices can be viewed as a collection of Vectors&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import numpy as np

data = np.array([
  [90, 85, 92],
  [78, 80, 88],
  [95, 92, 98]
])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, the NumPy array data represents student scores in different subjects. Matrices allow us to examine relationships and patterns within our data.&lt;/p&gt;

&lt;p&gt;To check the shape of our data, we can use the .shape attribute. Let's see how it works:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;print(data.shape)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output will be (3, 3), indicating that our matrix has 3 rows (m) and 3 columns (n). Understanding the shape of our data is crucial for performing various operations and analyses.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tensors / shape:(k x m x n) 🌌
&lt;/h3&gt;

&lt;p&gt;Tensors generalize scalars, vectors, and matrices to higher dimensions, enabling us to handle complex data structures. TensorFlow offers incredible capabilities for working with tensors. Let's explore an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import tensorflow as tf

image = tf.constant([
  [[255, 0, 0], [0, 255, 0]],
  [[0, 0, 255], [255, 255, 0]]
])

image.shape #Ouput: (2 x 2 x 3) 2 matrices with 2 x 3 shape
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this TensorFlow example, we have a 3D tensor representing a colored image. Tensors are powerful tools for working with diverse data types like images, videos, and time-series data.&lt;/p&gt;

&lt;h4&gt;
  
  
  Basic Operations: Adding and Subtracting Data Elements 📉
&lt;/h4&gt;

&lt;p&gt;In data analytics, we often need to perform basic arithmetic operations on our data. Let's put our math skills to work and perform addition and subtraction on vectors and matrices using NumPy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

addition_result = a + b
subtraction_result = a - b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, we add and subtract corresponding elements of vectors a and b. Similarly, we can perform addition and subtraction on matrices by aligning corresponding elements. These operations allow us to combine or compare data elements, providing valuable insights.&lt;/p&gt;

&lt;h4&gt;
  
  
  Reshaping Data: Adapting to Analytical Needs 🔄
&lt;/h4&gt;

&lt;p&gt;Sometimes, we need to reshape our data to align with our analytical requirements. NumPy provides the .reshape() function for this purpose. Let's see an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;original_data = np.array([1, 2, 3, 4, 5, 6])
reshaped_data = original_data.reshape((2, 3))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this case, we start with a 1D array original_data and reshape it into a 2D array with 2 rows and 3 columns using .reshape((2, 3)). Reshaping data allows us to manipulate and analyze it more effectively.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion: Mastering Data Analytics with Powerful Tools! 💡🔍📊
&lt;/h3&gt;

&lt;p&gt;Now you have a better understanding of scalars, vectors, matrices, tensors, and basic operations in the context of data analytics! With the aid of Pandas, NumPy, and TensorFlow.&lt;/p&gt;

&lt;p&gt;Thanks for taking the time to read! If you found this blog post on data analytics helpful, feel free to share it with others who might find it interesting.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Exploring Data Analytics with Python: What is it?, Vocabulary, and Parallel Technology</title>
      <dc:creator>Thomas Nielson</dc:creator>
      <pubDate>Wed, 12 Jul 2023 20:32:04 +0000</pubDate>
      <link>https://dev.to/tfnielsonse/exploring-data-analytics-with-python-what-is-it-vocabulary-and-parallel-technology-l8</link>
      <guid>https://dev.to/tfnielsonse/exploring-data-analytics-with-python-what-is-it-vocabulary-and-parallel-technology-l8</guid>
      <description>&lt;p&gt;In this blog post, we'll understand the distinction between data analysis and data analytics. We'll explore simple examples using "weather data" and introduce 10 essential vocabulary terms you should be familiar with when venturing into data analytics. Additionally, we'll discuss the importance of parallel technology knowledge in enhancing your data analytics journey.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Analysis vs. Data Analytics:
&lt;/h3&gt;

&lt;p&gt;While the terms "data analysis" and "data analytics" are often used interchangeably, they do have distinct meaning. Data analysis primarily focuses on extracting insights from data, examining its components, and making conclusions based on observations. On the other hand, data analytics takes the process a step further by leveraging statistical and computational techniques to gain deeper insights, uncover patterns, and predict future outcomes.&lt;/p&gt;

&lt;h5&gt;
  
  
  Example 1: Weather Data Analysis
&lt;/h5&gt;

&lt;p&gt;Let's say we have a dataset containing weather data for various locations. Data analysis involves examining the historical records, identifying trends, and drawing conclusions. For instance, we might discover that rainfall has increased over the past decade in a specific region.&lt;/p&gt;

&lt;h5&gt;
  
  
  Example 2: Weather Data Analytics
&lt;/h5&gt;

&lt;p&gt;Using data analytics, we can employ advanced techniques to gain further insights. We could build a predictive model that takes into account factors like temperature, humidity, and atmospheric pressure to forecast rainfall patterns for the upcoming week or month. This goes beyond analyzing existing data and offers the ability to make informed predictions.&lt;/p&gt;

&lt;p&gt;In other words: Data Analysis focuses on the existing data to tell a story, how and why?. While Data Analytics focuses on the existing data to make predictions&lt;/p&gt;

&lt;h4&gt;
  
  
  Essential Vocabulary in Data Analytics:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Descriptive Statistics: Summarizing and describing datasets.&lt;/li&gt;
&lt;li&gt;Data Wrangling: Cleaning, transforming, and preparing data for analysis.&lt;/li&gt;
&lt;li&gt;Machine Learning: Algorithms enabling computers to learn from data and make predictions or decisions.&lt;/li&gt;
&lt;li&gt;Visualization: Presenting data graphically for better understanding and analysis.&lt;/li&gt;
&lt;li&gt;Predictive Analytics: Using historical data to forecast future outcomes.&lt;/li&gt;
&lt;li&gt;Regression Analysis: Examining relationships between variables using statistical methods.&lt;/li&gt;
&lt;li&gt;Clustering: Grouping data points based on similarities.&lt;/li&gt;
&lt;li&gt;Big Data: Large and complex datasets requiring specialized tools and techniques.&lt;/li&gt;
&lt;li&gt;Data Mining: Extracting valuable patterns and insights from large datasets.&lt;/li&gt;
&lt;li&gt;Artificial Intelligence (AI): Developing computer systems capable of human-like tasks.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  The Importance of Parallel Technology Knowledge:
&lt;/h4&gt;

&lt;p&gt;As data volume and complexity continue to grow, understanding parallel technologies becomes vital in data analytics. Parallel computing, leveraging multiple processors or machines simultaneously, accelerates data processing and analysis. Cloud platforms like AWS and Azure offer services such as Amazon EMR, Azure Databricks, and others, providing distributed computing capabilities. Additionally, frameworks like Apache Spark enable scalable parallel processing on-premises or in the cloud. Proficiency in these tools empowers efficient handling of big data challenges, enhancing the speed and accuracy of data analytics. With the assistance of parallel technology, data analysts can process large datasets more effectively, uncover valuable insights, and make informed decisions.&lt;/p&gt;

&lt;p&gt;Thanks for taking the time to read! If you found this blog post on data analytics helpful, feel free to share it with others who might find it interesting. Remember, data analytics plays a vital role in today's industry, enabling organizations to gain valuable insights from their data and make informed decisions. So, dive into the world of data analytics and unlock the potential of your data!&lt;/p&gt;

</description>
      <category>python</category>
      <category>datascience</category>
      <category>data</category>
      <category>dataengineering</category>
    </item>
    <item>
      <title>Python: Built-In vs Literals</title>
      <dc:creator>Thomas Nielson</dc:creator>
      <pubDate>Mon, 08 May 2023 18:39:01 +0000</pubDate>
      <link>https://dev.to/tfnielsonse/python-built-in-vs-literals-3leb</link>
      <guid>https://dev.to/tfnielsonse/python-built-in-vs-literals-3leb</guid>
      <description>&lt;p&gt;new_list = [] &lt;/p&gt;

&lt;p&gt;or &lt;/p&gt;

&lt;p&gt;new_list = list()&lt;/p&gt;

&lt;p&gt;🤔???&lt;/p&gt;

&lt;p&gt;When it comes to initializing empty lists or dictionaries in Python, you might wonder whether it is better to use the built-in constructors &lt;code&gt;list()&lt;/code&gt; and &lt;code&gt;dict()&lt;/code&gt; or their literal equivalents &lt;code&gt;[]&lt;/code&gt; and &lt;code&gt;{}&lt;/code&gt;. In this blog post, we will explore the differences between these two approaches and make a case for why you should prefer the latter.&lt;/p&gt;

&lt;p&gt;First, let's take a look at the performance of each method. According to benchmarks conducted by Python developer Tim Peters, using the literals &lt;code&gt;[]&lt;/code&gt; and &lt;code&gt;{}&lt;/code&gt; is slightly faster than using their constructor counterparts. This is because the literal syntax is built into the language and doesn't require a function call to create an empty container. While the performance difference may be negligible in most cases, it is still a good habit to use the most efficient method when possible.&lt;/p&gt;

&lt;p&gt;Another reason to prefer the literal syntax is its readability. When you see &lt;code&gt;[]&lt;/code&gt; or &lt;code&gt;{}&lt;/code&gt; in code, you immediately know that an empty list or dictionary is being created. On the other hand, &lt;code&gt;list()&lt;/code&gt; and &lt;code&gt;dict()&lt;/code&gt; require you to mentally parse a function call, which can be more difficult to understand at a glance.&lt;/p&gt;

&lt;p&gt;But why choose one over the other? After all, both options achieve the same result of creating an empty container. The answer lies in Python's mutable default arguments behavior.&lt;/p&gt;

&lt;p&gt;In Python, function arguments are evaluated only once when the function is defined, not every time the function is called. This means that if you use &lt;code&gt;list()&lt;/code&gt; or &lt;code&gt;dict()&lt;/code&gt; as a default argument value and modify it inside the function, the changes will persist across all function calls. This is often not what you want, as it can lead to unexpected behavior.&lt;/p&gt;

&lt;p&gt;To illustrate this, let's consider a simple example. Suppose you want to write a function that takes a list of numbers and returns a new list containing only the even numbers. Here's one way to implement this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def get_evens(numbers=[]):
    evens = []
    for number in numbers:
        if number % 2 == 0:
            evens.append(number)
    return evens
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This function seems correct, but there's a subtle bug lurking in the default argument value of &lt;code&gt;numbers=[]&lt;/code&gt;. If you call the function multiple times without passing a value for &lt;code&gt;numbers&lt;/code&gt;, you will get unexpected results:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; get_evens([1, 2, 3, 4])
[2, 4]
&amp;gt;&amp;gt;&amp;gt; get_evens()
[2, 4]
&amp;gt;&amp;gt;&amp;gt; get_evens()
[2, 4, 2, 4]
&amp;gt;&amp;gt;&amp;gt; get_evens()
[2, 4, 2, 4, 2, 4]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What's happening here is that the same mutable list object is being used as the default value every time the function is called. When you modify the list inside the function, the changes persist across all function calls.&lt;/p&gt;

&lt;p&gt;To fix this, you can use the literal syntax instead of the constructor:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def get_evens(numbers=None):
    if numbers is None:
        numbers = []
    evens = []
    for number in numbers:
        if number % 2 == 0:
            evens.append(number)
    return evens
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By initializing &lt;code&gt;numbers&lt;/code&gt; to &lt;code&gt;None&lt;/code&gt; and using the &lt;code&gt;is&lt;/code&gt; operator to check for &lt;code&gt;None&lt;/code&gt;, we ensure that a new empty list is created every time the function is called without a value for &lt;code&gt;numbers&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;In conclusion, using the literal syntax for empty lists and dictionaries in Python is both more efficient and more readable than using the constructor. Additionally, using &lt;code&gt;[]&lt;/code&gt; and &lt;code&gt;{}&lt;/code&gt; as default argument values can help you avoid unexpected behavior when modifying mutable objects inside functions. So the next time you need to create an empty container in Python, reach for the literals instead&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The importance of coding your own CSS</title>
      <dc:creator>Thomas Nielson</dc:creator>
      <pubDate>Fri, 07 Apr 2023 18:14:16 +0000</pubDate>
      <link>https://dev.to/tfnielsonse/the-importance-of-doing-your-own-css-1bl5</link>
      <guid>https://dev.to/tfnielsonse/the-importance-of-doing-your-own-css-1bl5</guid>
      <description>&lt;p&gt;For my last 2 personal projects I really dove into CSS a bit more, some Vanilla, some using TailwindCSS &amp;lt;- which honestly offers great documentation if you just want to learn Vanilla as well.&lt;/p&gt;

&lt;p&gt;By developing my own structure and I have been able to have a better understanding of how some of the most frustrating features can be made simple. Flexbox for example, extremely easy to use if you follow its conventions and patterns. &lt;/p&gt;

&lt;p&gt;It is very easy and convenient to use free TailwindCSS component websites or Bootstrap, and to be honest thats where I started but that is also how I really dove into figuring out what all those little lines of code did to my div. &lt;/p&gt;

&lt;p&gt;Structuring your own CSS also allows you to plan ahead for your data structure without having to debug this complex component that was given to you.. &amp;lt;- this gets easier to debug as you learn the syntax of Tailwind, its more of a trail and error learning approach. &lt;/p&gt;

&lt;p&gt;One piece of advice that really helped me was setting a border around the structure you're rendering. &amp;lt;- Proven to be really helpful when managing div structure i.e.&lt;/p&gt;

&lt;p&gt;By no means I'm trying to tell you I am a CSS guru but I have been able to have a much more pleasant coding experience. I do most of my styling as I go. This allows me to really get a feel for how the data looks instead of getting all my functionality and then having to refactor all my code to make it look like I want. &amp;lt;- This is where I see most developers frustrated.&lt;/p&gt;

&lt;p&gt;My advice:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Learn Vanilla CSS, pick one element you want to render across all your project (a button is a good example) and Vanilla that guy!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use TailwindCSS resources; MerakiUI, SailboatUI, &amp;amp; DaisyUI for example are great for quick component libraries, but I challenge you to read and understand the syntax here. This is where CSS is awesome for me. Not having to jump to a .css file to make quick rendering features happen.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Hope you liked this post! &lt;br&gt;
I am always open for suggestions and constructive criticism, so feel free to drop a comment below 👇&lt;/p&gt;

</description>
      <category>css</category>
      <category>tailwindcss</category>
      <category>frontend</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>Part 2: From OOP to FP...</title>
      <dc:creator>Thomas Nielson</dc:creator>
      <pubDate>Fri, 07 Apr 2023 17:35:55 +0000</pubDate>
      <link>https://dev.to/tfnielsonse/part-2-from-oop-to-fp-2af3</link>
      <guid>https://dev.to/tfnielsonse/part-2-from-oop-to-fp-2af3</guid>
      <description>&lt;p&gt;Its been 3 weeks since my last post. It's been 3 weeks of full immersion into Elixir and Phoenix LiveView.&lt;/p&gt;

&lt;p&gt;I had 3 weeks to learn the basics of Elixir and Phoenix LiveView to get my capstone project done. I decided to create a Chat App with the intention of showing; Elixir's efficiency in code writing and the benefits of data immutability, Phoenix WebSockets and LiveView!! I didn't write a single line of JavaScript code for this project.&lt;/p&gt;

&lt;p&gt;heres the repo if you want to check it out: &lt;br&gt;
&lt;a href="https://github.com/tfnielson-se/LiveWave" rel="noopener noreferrer"&gt;https://github.com/tfnielson-se/LiveWave&lt;/a&gt;&lt;br&gt;
Elixir 1.14.3&lt;br&gt;
Phoenix 1.7&lt;br&gt;
LiveView 0.18&lt;/p&gt;

&lt;p&gt;Having everything done in the same environment was extremely efficient instead of having to communicate between different languages such as Ruby on Rails with React, fetching my own data seems odd to me now. Instead I used Ecto, another library offered by the Elixir environment with takes care of database management, really easy to learn and use.&lt;/p&gt;

&lt;p&gt;I recommend everyone to learn Elixir and Phoenix. The principals of Functional Programming are used in OOP constantly specially with data immutability. We quickly learn that we want to use non-destructive methods to manipulate data and thats made easy with Elixir, I call it a no brainer.&lt;/p&gt;

&lt;p&gt;Another great factor which helped me during my transition was the amazing and well written documentation. I have yet to find another programming language that offers such extensive and clear doc.&lt;/p&gt;

&lt;p&gt;My main takeaway from this project was not adding another language to my belt. I am way more proud of the fact that I can learn anything I set my mind to and that I can understand the logic behind code.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Part 1: From OOP to FP...</title>
      <dc:creator>Thomas Nielson</dc:creator>
      <pubDate>Fri, 10 Mar 2023 22:24:13 +0000</pubDate>
      <link>https://dev.to/tfnielsonse/part-1-from-oop-to-fp-2ajm</link>
      <guid>https://dev.to/tfnielsonse/part-1-from-oop-to-fp-2ajm</guid>
      <description>&lt;p&gt;So I decided to go from Object Oriented Programming (OOP) to Functional Programming (FP) for my bootcamp capstone project.&lt;/p&gt;

&lt;p&gt;For the past 10 weeks I have been fully immersed and on a learning path from Vanilla Js -&amp;gt; ReactJs -&amp;gt; Ruby -&amp;gt; Rails.&lt;br&gt;
Graduation is coming soon and the job hunt will start even before my bootcamp completion certificate arrives. It is scary and overwhelming to say the least. &lt;/p&gt;

&lt;p&gt;The tech job market has been crazy lately, with massive layoffs from tech giants which means the competition out there is even higher and much more experienced than me, a recent Software Engineering bootcamp grad.&lt;/p&gt;

&lt;p&gt;I have a solid background in Mechanical Engineering, that was my previous career, but the whole point of me entering this bootcamp was to give that a spin and move towards the Dev industry instead. More coding, less hands on engineering. &lt;/p&gt;

&lt;p&gt;I researched the industry, reached out to dev friends and LinkedIn communities and asked what is the future of development, what language is out there that is buzzin'.&lt;br&gt;
All roads and tips led me to Elixir. &lt;/p&gt;

&lt;p&gt;Background story:...&lt;br&gt;
I had heard about Elixir, I was actually told by a family friend to look for that in a bootcamp. Elixir is only 10 years old so it doesn't have the popularity as legacy programming languages have, so finding an "in-person" Elixir focused bootcamp in my area was not an option. I ended up at the School I am today, learning OOP.&lt;/p&gt;

&lt;p&gt;Elixir devs are in high demand due to the "lack" of interest on the language, what I have heard as "OOP devs scared of FP". the main difference between the two is DATA. &lt;/p&gt;

&lt;p&gt;Elixir by being a FP, data is immutable, it doesn't change, its consistent. &lt;/p&gt;

&lt;h4&gt;
  
  
  Elixir example:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;if you would like to try it, make sure you have Elixir installed to enter the console by typing 'iex' on your terminal *&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1)&lt;br&gt;
&lt;code&gt;iex(1)&amp;gt; person = %{name: "thomas", age: 30}&lt;br&gt;
%{age: 30, name: "thomas"}&lt;br&gt;
iex(2)&amp;gt; Map.put(person, :age, 31)&lt;br&gt;
%{age: 31, name: "thomas"}&lt;br&gt;
iex(3)&amp;gt; person&lt;br&gt;
%{age: 30, name: "thomas"}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;2) &lt;br&gt;
&lt;code&gt;iex(1)&amp;gt; a = [1, 2, 3]&lt;br&gt;
[1, 2, 3]&lt;br&gt;
iex(2)&amp;gt; b = a&lt;br&gt;
[1, 2, 3]&lt;br&gt;
iex(3)&amp;gt; a = [1, 2, 3, 4]&lt;br&gt;
[1, 2, 3, 4]&lt;br&gt;
iex(4)&amp;gt; IO.inspect b&lt;br&gt;
[1, 2, 3]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;vs. &lt;/p&gt;

&lt;h4&gt;
  
  
  Ruby example:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;if you would like to try it, make sure you have Ruby installed to enter the console by typing 'irb' on your terminal *&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1)&lt;br&gt;
&lt;code&gt;2.7.4 :001 &amp;gt; person = {name: "thomas", age: 31}&lt;br&gt;
 =&amp;gt; {:name=&amp;gt;"thomas", :age=&amp;gt;31}&lt;br&gt;
2.7.4 :002 &amp;gt; person[:age] = 31&lt;br&gt;
 =&amp;gt; 31&lt;br&gt;
2.7.4 :003 &amp;gt; person&lt;br&gt;
 =&amp;gt; {:name=&amp;gt;"thomas", :age=&amp;gt;31}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Sure, OOP does support the same functionalities as FP by using non-destructive methods, which is what I have been taught to do the past weeks. I have to almost always make sure I'm using my non-destructive methods to process my data... Elixir erases this problem, for me to have the persistance Ruby shows above, I would have to create a new variable for that value as such:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;iex(1)&amp;gt; person = %{name: "thomas", age: 30}&lt;br&gt;
%{age: 30, name: "thomas"}&lt;br&gt;
iex(2)&amp;gt; new_person = Map.put(person, :age, 31)&lt;br&gt;
%{age: 31, name: "thomas"}&lt;br&gt;
iex(3)&amp;gt; person&lt;br&gt;
%{age: 30, name: "thomas"}&lt;br&gt;
iex(4)&amp;gt; new_person&lt;br&gt;
%{age: 31, name: "thomas"}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now let me brake your brain 🤯&lt;/p&gt;

&lt;p&gt;&lt;code&gt;iex(1)&amp;gt; person = "thomas"&lt;br&gt;
"thomas"&lt;br&gt;
iex(2)&amp;gt; person = "sam"&lt;br&gt;
"sam"&lt;br&gt;
iex(3)&amp;gt; person&lt;br&gt;
"sam"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;So now you read this a think, wait... I thought data was IMMUTABLE and clearly data is mutating there! I CAN SEE IT!&lt;br&gt;
This is where it gets a little bit more intricate, so here is my best attempt to explain Elixir's data immutability.&lt;/p&gt;

&lt;p&gt;The variable person is initially assigned the value "thomas", but then immediately reassigned the value "sam" on the next line.&lt;/p&gt;

&lt;p&gt;However, it's important to understand that this doesn't actually change the original value of "thomas". Instead, a new value "sam" is created and assigned to the variable person, while the original value "thomas" still exists in memory, but is no longer referenced by any variable.&lt;/p&gt;

&lt;p&gt;🧠... Loading...&lt;/p&gt;

&lt;p&gt;It is still an interesting concept to grasp but just like when I first started programming, I wanted to find reason on everything and once I opened my mind to accepting these foreign concepts, I started cruising.&lt;/p&gt;

&lt;p&gt;Give Elixir a try, I'm sure you will love it!&lt;/p&gt;

&lt;p&gt;Thanks for reading&lt;/p&gt;

</description>
      <category>elixir</category>
      <category>rails</category>
      <category>phoenix</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Phase-3: 'Revenge of the Sith'</title>
      <dc:creator>Thomas Nielson</dc:creator>
      <pubDate>Fri, 17 Feb 2023 20:07:11 +0000</pubDate>
      <link>https://dev.to/tfnielsonse/phase-3-revenge-of-the-sith-3lbf</link>
      <guid>https://dev.to/tfnielsonse/phase-3-revenge-of-the-sith-3lbf</guid>
      <description>&lt;p&gt;The feeling of learning a new programming language.., after learning your first one. You feel so powerful, so much potential and the advantages and uniqueness of each of them is quite interesting. &lt;/p&gt;

&lt;p&gt;So many options, learning Ruby, day 2, so much power. POWER! UNLIMITED POWER!!! ⚡️&lt;/p&gt;

&lt;p&gt;A few weeks ago...&lt;br&gt;
in this same galaxy...&lt;br&gt;
in this same planet...&lt;br&gt;
in this same continent...&lt;br&gt;
in this same country...&lt;br&gt;
in this same state... alright, city, school, building...&lt;/p&gt;

&lt;h2&gt;
  
  
  &amp;lt; Phase-3 &amp;gt; &lt;em&gt;Revenge of the Sith&lt;/em&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &amp;lt; Week 7 /&amp;gt; &lt;em&gt;// Ruby&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;This week started slow, I had a good head start on lectures. I had the brilliant idea to take a look at lectures from the cohort ahead of me. This gave a good base for lectures, keeping me on track and comfortable during live lectures. I highly recommend this move if you feel like you don't have enough time or preparation for your lectures. &lt;/p&gt;

&lt;p&gt;I kept waiting for the big unveiling of what ruby would really do for us, how this would all come together but I just couldn't see the light of at the end of the tunnel for it. Everything seemed so familiar and simple this time, nothing new, array iterations, data manipulation... &lt;/p&gt;

&lt;p&gt;Ruby is nice for its methods. Theres almost a method for any task you may want to accomplish, much more simple and cleaner look than JavaScript.&lt;/p&gt;

&lt;p&gt;It wasn't until Friday of this week that we started using SQL and ActiveRecord which is where Ruby really thrives. Making SQL tasks a lot easier, A LOT!&lt;/p&gt;

&lt;h3&gt;
  
  
  &amp;lt; Week 8 /&amp;gt; &lt;em&gt;CC Week&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;Monday came around, we were "surprised" with a Mock Code Challenge first thing after our Stand Up meeting. Needless to say I didn't feel prepared for it but it was a great motivator to study harder and do better the next day. The main issue with this Phase was the lack of Mock CC, most of us would've liked to have multiple Mock Challenges to work through, this phase just didn't have it. &lt;/p&gt;

&lt;p&gt;Friday came around I was feeling good and ready, Mock CC time was up. I was able to finish all deliverables within 30-45 minutes. 15/15. &lt;/p&gt;

&lt;p&gt;This Phase just didn't seem to be that productive in terms of learning, but my theory behind it is the fact that most programming languages have all the same functionality, its just a matter of learning its rules. &lt;/p&gt;

&lt;h3&gt;
  
  
  &amp;lt; Week 9 /&amp;gt; &lt;em&gt;Project Week&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;I wanted to make something different from just another website, I wanted to add the Software aspect to it, something that would be beyond just a store front, something useful to make life easier... a software.&lt;/p&gt;

&lt;p&gt;I decided to go with a work log for River Guides (employees) to enter their guided trips (completed job) into a database. This database allows employees and employer to have access to their company profile, pay rate, total paycheck and other features. The database works as a single source of truth between employees and employer (admin).&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;After I graduated I took the summer to river guide before jumping into engineering. I had a blast, it's such a fun job and you make so many great friends as well as developing great people management skills.&lt;/p&gt;

&lt;p&gt;As a business, the outpost I worked for did things in a very "old school" way, paper, everything was logged on paper, at least thats how it was for us, on the employee side of things.&lt;/p&gt;

&lt;p&gt;So, we either trusted our boss enough to know we were getting a fair pay or, we kept our own log on the side, wait for the paycheck, run the numbers, if there was a discrepancy you would have to go talk to the boss and show him your log vs their log... etc etc.&lt;/p&gt;

&lt;p&gt;This is a solution for those guides, last I chatted with a friend who still worked at the outpost said paper was still the way it was logged.&lt;/p&gt;

&lt;h3&gt;
  
  
  Thursday Feb 16, 2023...
&lt;/h3&gt;

&lt;p&gt;Sam H2Os, one of our cohort leaders brought up the real point of these blogs, the opportunity they serve when looking for jobs and gaining knowledge. &lt;/p&gt;

&lt;p&gt;From now on I will follow the same thought process I had when building this project.. Add some value to it, but "Worry, you shouldn't" the theme will remain the same just with a focus on coding.&lt;/p&gt;

&lt;h4&gt;
  
  
  Friday Feb 17, 2023
&lt;/h4&gt;

&lt;p&gt;Presentation day. &lt;/p&gt;

&lt;p&gt;I got to FIS early today to get done with last minute details on my project and blog...&lt;/p&gt;

&lt;p&gt;I committed my last push to GitHub to only find out it pulled from my last commit and rerendered my code to minimal CSS... I went into panic mode trying to understand what went wrong. Long story short, I had issues with my very first commit which triggered an Err on the last push...&lt;/p&gt;

&lt;p&gt;After nearly 1.5 hrs my project looked similar to its "final" stage.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                         *... TO BE CONTINUED NEXT PHASE*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>mcp</category>
      <category>wsl</category>
      <category>claude</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Phase-2 'Attack of the Clones'</title>
      <dc:creator>Thomas Nielson</dc:creator>
      <pubDate>Thu, 26 Jan 2023 17:01:24 +0000</pubDate>
      <link>https://dev.to/tfnielsonse/phase-2-attack-of-the-clones-52k6</link>
      <guid>https://dev.to/tfnielsonse/phase-2-attack-of-the-clones-52k6</guid>
      <description>&lt;p&gt;Well here we are again... time flies when you're having fun and learning something its of your interest. &lt;/p&gt;

&lt;p&gt;I can't believe its week 5 already, it's scary to think I'm 1/3 of the way done. I've come so far already in such a short amount of time. I feel like I don't know enough, I felt the same way through Phase 1. For now... I'll trust the process and the truth is, in this field, the learning never stops.&lt;/p&gt;

&lt;p&gt;As soon as Phase 2 started, I saw the opportunity to keep the Star Wars theme going. So without further or due...&lt;/p&gt;

&lt;p&gt;A few weeks ago...&lt;br&gt;
in this same galaxy...&lt;br&gt;
in this same planet...&lt;br&gt;
in this same continent...&lt;br&gt;
in this same country...&lt;br&gt;
in this same state... alright, city, school, building... &lt;/p&gt;

&lt;h2&gt;
  
  
  &amp;lt; Phase-2 &amp;gt; &lt;em&gt;Attack of the Clones&lt;/em&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &amp;lt; Week 4 /&amp;gt; &lt;em&gt;// React&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;Well you might have noticed the first difference from last blog post... maybe not, its a subtle change on the sub-headers.. last blog post you saw &lt;em&gt;''&lt;/em&gt; here you see * * , this represents a Component in React. My view of a React Component is a way to "modularize" code, making it more readable and easier to understand.&lt;/p&gt;

&lt;p&gt;At the start of week 4, I started seeing why and how it is important to learn Vanilla-JS. React is basically a more user friendly JS interface. It allows you to modularize your html sections into Components, code using an implicit syntax and ease your code readability as well. &lt;/p&gt;

&lt;p&gt;The reason I felt like this blog could continue our Star Wars theme was because, to me, React is just a clone of Vanilla-JS with small tweaks, making it more accepting... just like the movies.&lt;/p&gt;

&lt;p&gt;Having the experience of Phase 1 / Week 1, the nightmare of feeling behind and feeling lost pushed me to stay on track with my lecture topics as well as the material that was assigned by our instructor, I never felt behind or clueless of what we were talking about. &lt;/p&gt;

&lt;p&gt;Since React is a Clone of V-JS, but better. All I had to do was adjust my thought process and transfer my Phase 1 knowledge to React's ways of thinking. The knowledge transfer was smoother than I expected, specially after I had another "click" moment.&lt;/p&gt;

&lt;h3&gt;
  
  
  &amp;lt; Week 5 /&amp;gt; &lt;em&gt;// Code Challenge&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;The ideas and workflow clicked for me late last week and during the weekend. I came into this week ready to rock my CC, feeling confident. We worked through some pairing labs and more CC practices, I felt solid on my workflow, my creativity so solve problems and work my way around issues. I have become more proficient with those situations. Neat to see how we can adapt and learn in such little time.&lt;/p&gt;

&lt;p&gt;At this point I have been able to identify the things that have helped me learn; repetition, not rushing through topics, being ahead of class lectures, and staying stoked about learning.&lt;/p&gt;

&lt;p&gt;I started working on my Phase 2 Project, trying to get ahead of the curve and be able to focus on preparing for Phase 3 by &amp;lt; Mid-Week 6 /&amp;gt;. I was able to approach it that way at the end of Phase 1, hoping to keep it that way.&lt;/p&gt;

&lt;p&gt;CC: I was able to finish all core deliverables within 30min and handle the rest of Advanced Deliverables in another 15min.&lt;/p&gt;

&lt;p&gt;45min total time of CC for Phase-2. Relief at last, the build up to Code Challenges are usually pretty stressful, its just hammering down the content you learned last week.. repetition, repetition, repetition. Thats all it takes.&lt;/p&gt;

&lt;h3&gt;
  
  
  &amp;lt; Week 6 /&amp;gt; &lt;em&gt;//Project week&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;I pretty much had a good wireframe for my Phase-2 Project, by the time Monday came around I had it pretty much done and only needed to adjust add {BrowserRouter, Routes, Route, NavLink, Link} &lt;/p&gt;

&lt;p&gt;After that was all set and done, I was started working on my CSS, using TailwindCSS and DaisyUI, great resources and easy to learn... however, at the end of the day I didn't like how it all looked and I figured I could add other features to it. So I started and Alt-Phase2 Project. Something I could envision a bit better, deal with a bit more complex data structure and include {useParams, useHistory} and play with those Hooks.&lt;/p&gt;

&lt;p&gt;Today is Thursday. Project 1 is done, meeting all deliverables. Project 2, working on it. Going back and forth on either finishing it and delivering it as my main, or I can focus on Phase-3 Ruby 🛑&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                         *... TO BE CONTINUED NEXT PHASE*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>welcome</category>
      <category>gratitude</category>
    </item>
    <item>
      <title>Phase -1: 'The Phantom Menace'</title>
      <dc:creator>Thomas Nielson</dc:creator>
      <pubDate>Thu, 05 Jan 2023 23:32:59 +0000</pubDate>
      <link>https://dev.to/tfnielsonse/phase-1-the-phantom-menace-4cic</link>
      <guid>https://dev.to/tfnielsonse/phase-1-the-phantom-menace-4cic</guid>
      <description>&lt;p&gt;It seems like yesterday when I first started my journey at Flatiron School, so young, so unprepared... This is not your normal blog post of how to write a function, or understanding event listeners. This blog post is about my experience through &lt;em&gt;Phase-1&lt;/em&gt; of Flatiron School Software Engineering.&lt;/p&gt;

&lt;p&gt;We'll call it 'The Phantom Menace' becuase I had no idea what was ahead of me. I'm hoping to keep the Star Wars theme for my futute blog posts. So without further or due...&lt;/p&gt;

&lt;p&gt;A few weeks ago...&lt;br&gt;
in this same galaxy...&lt;/p&gt;

&lt;h2&gt;
  
  
  &amp;lt; Phase-1 &amp;gt; &lt;em&gt;The Phantom Menace&lt;/em&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &amp;lt; Week 1 &amp;gt; &lt;em&gt;// Just Power Through It&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;No matter how many videos I looked up or podcasts I could've listener to that could've prepared me for the absolute tsunami of information Week 1 was. &lt;/p&gt;

&lt;p&gt;Getting started, learning to learn again, learning something completely new!, and preparing for your first Code Challenge. If the thought of this scenario doesn't overwhelm you, well... then bootcamps are for you. &lt;/p&gt;

&lt;p&gt;The week started with topics covered over the pre-work phase, things you did before heading into class. I like to call it &lt;em&gt;"the confidence booster"&lt;/em&gt;. But as expected, things got harder and more complex, missing a beat during Dakota's lecture would leave you behind, realizing that those who wonder INDEED are lost.&lt;/p&gt;

&lt;p&gt;Needless to say Friday came around, moral was reaching a week low and the weekend was much needed. I was feeling left behind and also fired up to tackle these new topics, I was determined to learn and understand.&lt;/p&gt;

&lt;h3&gt;
  
  
  &amp;lt; The Weekend &amp;gt; &lt;em&gt;// The Click&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;This past week I have done nothing but eat, sleep, and dream JavaScript. Yes, I did dream JS, thinking of paths and ways to solve problems that didn't even need solution, but I was in it. I needed time for myself but also needed as much time as possible to grasp these concepts. I starred at my phone studying and looking up examples on my way to the slopes. I found a way to do both of my needs.&lt;/p&gt;

&lt;p&gt;I was feeling refreshed, I needed to clear my mind. After that, my mind started connecting the dots. It was a pretty amazing and euphoric feeling. Nothing had changed regarding my approach, I just simply needed to take a step back to see the big picture. By no means it was miraculous, but it sure did clear my vision from the blurred lines I was missing.&lt;/p&gt;

&lt;h3&gt;
  
  
  &amp;lt; Week 2 &amp;gt; &lt;em&gt;// The Code Challenge 'CC'&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;Started the week at an all time high... moral high, not Colorado high. Things were clicking for me, I could see and understand the flow of things. Prep labs were challenging but not out of my league, this gave me confidence. I have always been terrible at test taking. The timed restriction and the need to be fast and critical have always messed with my head, so having a good feeling leading into this challenge definitely helped keep the week relaxed. &lt;/p&gt;

&lt;p&gt;Small bumps and hiccups during labs but I was reassured multiple times by my peers that I was doing great and my JS knowledge was solid for this CC. &lt;/p&gt;

&lt;p&gt;Friday, CC day. I arrived at FIS Denver Campus and set up my laptop with an extra screen, same spot since day 1. I was ready, some reviewed, I just hung out and kept a good mentality. &lt;/p&gt;

&lt;p&gt;10AM,  CC time. The assignment was posted and the timer started ticking. Overwhelming feeling to get things going, a couple of breaths and I am back to focus. I read the CORE deliverables and focused on them first. &lt;/p&gt;

&lt;p&gt;"One step at a time". &lt;/p&gt;

&lt;p&gt;CCs are open resource, meaning you can use google, notes, etc. Under 1 hour I was able to get things going and working, all CORE deliverables completed. Uff... I got through it.&lt;/p&gt;

&lt;h3&gt;
  
  
  &amp;lt; Week 3 &amp;gt; &lt;em&gt;// Project&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;Project due date: FRIDAY &lt;/p&gt;

&lt;p&gt;My partner and I did some but really minimal work during our week long break. We focused mainly on our HTML &amp;amp; CSS.&lt;/p&gt;

&lt;p&gt;Coming back from break we got to work on the JS side of things, pace was great we were making great progress through our // TO DO // list.&lt;/p&gt;

&lt;p&gt;By Wednesday morning most tasks were done, it was my partners section to deliver. By Wednesday afternoon after debugging a fetch() GET &amp;amp; db.json file issue, my partner decided to drop out of FIS-SE. &lt;/p&gt;

&lt;p&gt;When I got home that night I sat down for a couple of ours and completed the remaining tasks. Project completed, 100% my code; HTML, CSS &amp;amp; JS. &lt;/p&gt;

&lt;p&gt;I'm delivering this project tomorrow.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                          *... TO BE CONTINUED NEXT PHASE*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>emptystring</category>
    </item>
  </channel>
</rss>
