<?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: Aaron Gholson</title>
    <description>The latest articles on DEV Community by Aaron Gholson (@adgholson).</description>
    <link>https://dev.to/adgholson</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%2F1140364%2F9a2794f8-a8ce-4a50-925e-f7103bcd933b.png</url>
      <title>DEV Community: Aaron Gholson</title>
      <link>https://dev.to/adgholson</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adgholson"/>
    <language>en</language>
    <item>
      <title>Flatiron - Phase 5</title>
      <dc:creator>Aaron Gholson</dc:creator>
      <pubDate>Fri, 10 Nov 2023 16:00:30 +0000</pubDate>
      <link>https://dev.to/adgholson/flatiron-phase-5-3nld</link>
      <guid>https://dev.to/adgholson/flatiron-phase-5-3nld</guid>
      <description>&lt;p&gt;Phase 5! I made it! I'm thrilled to announce that I am now a certified Software Engineer! The past three months have been challenging, but the journey was undoubtedly worth it. In the last three weeks, I dedicated my time to working on my final project—a community app tailored for fans of a video game series. Although I haven't deployed it yet, I plan to continue refining it because it's progressing exceptionally well. &lt;/p&gt;

&lt;p&gt;For this blog post, I want to shed light on a feature I added to my project: the real-time notification feature. This feature allows users to favorite a game and receive notifications for any updates related to their chosen game. This wasn't covered in the Flatiron curriculum, and I decided to venture into it on my own.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh4c87adv895un8qgqskz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh4c87adv895un8qgqskz.png" alt="Image description" width="800" height="383"&gt;&lt;/a&gt;&lt;br&gt;
Here's the backend code snippet for this feature. I employed Stream to check for real-time updates on the connected route. When a new review is created, the system ensures it's not an old review and that the review's game ID matches the favorite game ID. If these conditions are met, the review is marked as an old review to prevent notifications for outdated posts. Finally, a response is sent to the frontend, which I can utilize EventSource to listen to.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F57zew69377b6s33rulis.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F57zew69377b6s33rulis.png" alt="Image description" width="800" height="383"&gt;&lt;/a&gt;&lt;br&gt;
On the frontend, I set up EventSource to listen for responses from the streamed route. If it receives anything, I use the onmessage function to either send a message or increase the count for notifications. In my project, I do both. Putting together this piece of code took me three days, and while it was a bit of a headache, I'm proud of the outcome. Self-teaching is not new to me, so learning and successfully implementing this feature into my project was truly satisfying.&lt;/p&gt;

&lt;p&gt;To wrap up this post, I'd like to share my thoughts on Flatiron. For a three-month bootcamp covering four different coding languages, I believe it's well worth the investment. The program goes beyond technical skills, teaching valuable aspects like networking and resume building—essential skills for anyone entering the software engineering field. While I still consider myself relatively new to all of this, I've gained confidence in my skills and my ability to self-teach and grow. The job search may be lengthy, but my concern is more about the duration than my ability to perform or understand the work. If you're considering entering the software engineering field, I highly recommend applying to Flatiron; it's, in my opinion, a valuable investment.&lt;/p&gt;

</description>
      <category>react</category>
      <category>python</category>
      <category>css</category>
      <category>database</category>
    </item>
    <item>
      <title>Flatiron - Phase 4</title>
      <dc:creator>Aaron Gholson</dc:creator>
      <pubDate>Fri, 20 Oct 2023 22:28:34 +0000</pubDate>
      <link>https://dev.to/adgholson/flatiron-phase-4-5c9l</link>
      <guid>https://dev.to/adgholson/flatiron-phase-4-5c9l</guid>
      <description>&lt;p&gt;In the fourth phase of the Flatiron course, the focus shifted to backend web development, marking a crucial step toward becoming a full-stack engineer. This phase was undoubtedly one of the most important, delving deep into creating APIs, deployment, and integrating frontend and backend components for comprehensive projects. With three phases behind me, I felt well-prepared to tackle this challenging segment.&lt;/p&gt;

&lt;p&gt;We kicked off this phase by diving into Flask and SQLAlchemy with greater depth than before, laying a solid foundation for understanding backend technologies. The curriculum then progressed to APIs, emphasizing retrieval and construction, followed by the integration of backend and frontend knowledge in a full-stack project. Despite the intensity of this three-week phase, my comfort level with the course's pace allowed me to navigate the material without excessive stress.&lt;/p&gt;

&lt;p&gt;This final project, a collaborative effort with a partner, marked the culmination of our learning journey. Despite the rush to develop a complete application in just one week, my partner and I, both seasoned in the course, adeptly handled challenges along the way. Personally, I took on the task of validation, an area where I felt a bit rusty. Ensuring that backend validation seamlessly aligns with frontend validation proved to be a significant challenge. However, utilizing available resources and my determination, I successfully tackled this hurdle.&lt;/p&gt;

&lt;p&gt;One of the most significant challenges I encountered revolved around validating formats, especially for inputs like dates and phone numbers. Proper formatting is crucial, and I dedicated a substantial amount of time to master this aspect. I delved into understanding Flask's formatting conventions, such as using regular expressions like r'^\d{3}-\d{3}-\d{4}$' to validate phone numbers in the XXX-XXX-XXXX format. Though challenging, mastering backend validations was a valuable learning experience that will undoubtedly benefit me in the upcoming final project.&lt;/p&gt;

&lt;p&gt;In summary, Phase 4 was a content-packed journey that deepened my understanding of backend web applications. Despite its intensity, my progress in the course allowed me to keep pace and absorb valuable knowledge. As I transition to Phase 5, I am thrilled to have reached the stage where I consider myself a full-stack developer. The next phase will be a chance for me to prove my skills with a substantial solo project, and I am excited to embrace this challenge.&lt;/p&gt;

</description>
      <category>fullstack</category>
      <category>beginners</category>
      <category>flask</category>
      <category>react</category>
    </item>
    <item>
      <title>Flatiron - Phase 3</title>
      <dc:creator>Aaron Gholson</dc:creator>
      <pubDate>Wed, 27 Sep 2023 20:04:10 +0000</pubDate>
      <link>https://dev.to/adgholson/flatiron-phase-3-1p10</link>
      <guid>https://dev.to/adgholson/flatiron-phase-3-1p10</guid>
      <description>&lt;p&gt;Phase 3 at Flatiron is now complete! This phase was relatively relaxed compared to the previous ones, even though we learned a few new programming languages. Python was the main focus, and after grasping the basics of it, we integrated SQL into our learning. Personally, I found Python relatively easy to pick up, but things got a bit confusing for me when SQL was introduced.&lt;/p&gt;

&lt;p&gt;Let's break down SQLite for those who might not be familiar with it. In the expansive world of databases, where heavyweight giants like MySQL and PostgreSQL reign supreme, there's an unsung hero that often goes unnoticed—SQLite. This unassuming database management system (DBMS) may not be a household name, but it's a powerhouse in its own right. Unlike traditional databases that require a separate server process, SQLite is embedded directly into the application that uses it. This unique design makes it an incredibly lightweight and efficient choice for various scenarios. SQLite's versatility extends to a range of applications: mobile apps, desktop apps, web apps, and more. Its simplicity, efficiency, and cross-platform support make it an ideal choice for a wide range of applications.&lt;/p&gt;

&lt;p&gt;Our project for phase 3 was to create a CLI application using Python and SQL. This project wasn't too challenging since we had a template to work with, but a majority of the work involved troubleshooting and bug fixing. We encountered problems that required us to do some in-depth research or quick thinking to resolve. One of my biggest challenges was ensuring that the user inputted an integer and not a string, and vice versa. I explored a few ways to address this issue, and in the end, I opted to create functions that I could call to check if the input values were of the correct types. Initially, this solution threw errors and even closed the program, but my partner and I were able to clean up the code and complete the task without any issues.&lt;/p&gt;

&lt;p&gt;This phase of Flatiron was not as stressful as the previous ones, although understanding databases posed a personal challenge for me. It's challenging for me to code a program without immediate visual feedback. In React, having the application update in real time was a very helpful feature that I definitely took for granted. However, as we conclude phase 3, I have a solid grasp of SQL and Python, so I'm still very satisfied with the Flatiron course.&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>beginners</category>
      <category>sql</category>
      <category>python</category>
    </item>
    <item>
      <title>Flatiron - Phase 2</title>
      <dc:creator>Aaron Gholson</dc:creator>
      <pubDate>Fri, 08 Sep 2023 23:05:07 +0000</pubDate>
      <link>https://dev.to/adgholson/flatiron-phase-2-75g</link>
      <guid>https://dev.to/adgholson/flatiron-phase-2-75g</guid>
      <description>&lt;p&gt;Phase 2 of my Flatiron journey is complete! I have to say, this phase gave me quite a bit more of a headache than the last one.&lt;/p&gt;

&lt;p&gt;React is an open-source front-end JavaScript library for building user interfaces based on components. Essentially, it combines JavaScript and HTML to create JSX. Its purpose is to clean up the messiness of JavaScript and prevent users from becoming overwhelmed by their lengthy code files. Even though React is supposed to be easier to understand, I often found myself lost and confused while learning it. Luckily, for this post, I've narrowed down what was so confusing about React for me. The idea that you can pass props and states to different components can get very tricky. I often found myself losing track of props and states because I had a bunch of components to keep track of. This method is supposed to make React easier, but for me, it got my head spinning. However, after three weeks of practice, I'm feeling pretty confident when it comes to React.&lt;/p&gt;

&lt;p&gt;For the project at the end of this phase, we had to create a React App from scratch. By the time the project came around, I wasn't too worried about the requirements, so I decided to challenge myself by taking on a task that I wasn't comfortable with: creating a Form. Think of it like creating an account on Facebook; a Form is where you fill out all the information in the boxes, and at the end, you submit that form to create your own profile. Doing this is tough; each section of the form has a state, and you have to keep track of these states to submit the form. Then comes the process of using the data you submitted on your form for whatever your app entails. Quite a challenge.&lt;/p&gt;

&lt;p&gt;I ran into quite a few issues with my form, such as a section not holding text and another section getting deleted when you click off of it. In hindsight, fixing those bugs was easy, but I encountered a different problem that gave me a lot of headaches. Remember when I mentioned that components confused me? Well, I couldn't figure out why my form wasn't allowing me to post anything to my .JSON file. This made me struggle with rewriting code over and over, only to find out later that it was because of the component structure. An unfortunate setback, but eventually, I moved the form entirely and passed everything pretty easily. To be honest, I couldn't tell you why that seemed to work. I'm starting to love and hate that about coding; sometimes, you sit for hours trying to figure something out, and the simplest fix is to just change it slightly. Being stuck on something is frustrating but super satisfying when you fix it or just approach it in a different way. If anything, that problem shows that I still have work to do in studying React. I definitely challenged myself with this one, but I got it working in the end with help from my teammate.&lt;/p&gt;

&lt;p&gt;This phase was a tough one, but I learned a lot in terms of material, as well as in thinking on my feet and problem-solving. In the next phase, we're going to tackle Python, which is supposed to be an easier coding language and a fan favorite. So, I'm pretty excited about that. No complaints about Flatiron School yet; it's a great program that teaches you a lot. I thought I would struggle to stay interested in the content, but so far, I'm loving it!&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>react</category>
      <category>forms</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Flatiron - Phase 1</title>
      <dc:creator>Aaron Gholson</dc:creator>
      <pubDate>Thu, 17 Aug 2023 23:00:19 +0000</pubDate>
      <link>https://dev.to/adgholson/flatiron-phase-1-25p8</link>
      <guid>https://dev.to/adgholson/flatiron-phase-1-25p8</guid>
      <description>&lt;p&gt;Three weeks ago, I embarked on my journey at Flatiron School. I had anticipated that this program would be challenging, and indeed, my expectations were met. Over this short span of time, my classmates and I have been swiftly introduced to the realms of JavaScript, HTML, CSS, and JSON Servers. The influx of new information has been overwhelming, yet together, we've successfully completed the first of five phases. Despite the difficulties, I find myself relishing each step of this learning process.&lt;/p&gt;

&lt;p&gt;Our initial lessons at Flatiron revolved around what they term the "Three Pillars of Web Programming": Recognize Events, Manipulate the DOM, and Communicate with the Server. In just three weeks, we've delved into utilizing various events in JavaScript to manipulate the HTML files, subsequently showcasing our work on a web page via a JSON server.&lt;/p&gt;

&lt;p&gt;I am enthralled by the concepts I've been able to integrate into my own code and eagerly anticipate delving deeper into this subject matter. Of all the topics covered so far, I have found the art of Manipulating the DOM and crafting distinct webpages using CSS to be particularly engaging. The visual aspect of Web Development captivates me; my inherent creativity thrives in the ability to sculpt a webpage's appearance according to my imagination. The process of preparing for code challenges has endowed me with a comprehensive understanding of the myriad ways in which a webpage can be designed. Furthermore, exploring the diverse events that can be incorporated into a webpage is equally captivating. While I had a reasonable grasp of click events prior to enrolling at Flatiron, the newfound knowledge of submit and mouseover events has broadened my skill set. It is truly gratifying to acquire the expertise necessary to implement seemingly minor features on a website, such as revealing details upon clicking an image or enabling the 'like' functionality for a post. These elements may appear basic and commonplace across websites, yet the ability to create them from scratch is both empowering and enlightening.&lt;/p&gt;

&lt;p&gt;Reflecting upon my time at Flatiron thus far, I am thoroughly enjoying my introduction to Web Development and eagerly anticipate the challenges that lie ahead. However, I recognize the need to dedicate time to further study. Failing to keep up with the deluge of knowledge could potentially lead to forgetfulness, which in turn might complicate the upcoming final assessment. Nonetheless, I am immensely content with my decision to embark on this initial step in the realm of tech.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>html</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>My Relationship with Coding (so far...)</title>
      <dc:creator>Aaron Gholson</dc:creator>
      <pubDate>Wed, 16 Aug 2023 23:02:06 +0000</pubDate>
      <link>https://dev.to/adgholson/my-relationship-with-coding-so-far-53d2</link>
      <guid>https://dev.to/adgholson/my-relationship-with-coding-so-far-53d2</guid>
      <description>&lt;p&gt;When I was 5 years old, my Dad introduced me to the world of video games, igniting a hobby that would become a lasting passion. By the time I turned 6, I was already drawn to the extra layers of concept art and behind-the-scenes development that accompanied these games. With the arrival of our first family computer, and after downloading all my favorite games, I eagerly delved into the realm of Indie Game Development. I spent hours absorbed in learning various coding techniques, aiming to create simple games like Pac-Man or Snake. Each challenge brought new excitement, and whenever I felt burnt out, I'd find something fresh to reignite my enthusiasm.&lt;/p&gt;

&lt;p&gt;Over the years, I largely self-taught the art of indie game creation, utilizing the vast resources available online. Upon high school graduation, my career path was clear. Despite a somewhat complex school history due to life's unexpected turns, I remained determined.&lt;/p&gt;

&lt;p&gt;Post-graduation, I enrolled at my local community college with the intention of pursuing a degree in 3D Graphics and Design, which had piqued my interest in the visual aspects of game development. Regrettably, after just one semester, circumstances forced me to leave school and secure employment to support myself. This marked the beginning of my journey toward independence, as my parents urged me to assume more responsibility for my life. Nonetheless, I remained undeterred. Approximately a year later, I managed to gather basic necessities—a car, a phone, and a laptop—and re-enrolled, this time at a university.&lt;/p&gt;

&lt;p&gt;For the subsequent two years, Colorado Mesa University became my academic home, where I focused intently on achieving a degree in 3D Graphics and Design. Yet, midway through my second year, the global impact of COVID-19 abruptly halted my studies, prompting a return home during the worldwide quarantine.&lt;/p&gt;

&lt;p&gt;During the lockdown, I transitioned to a job in the food industry to sustain myself. Here, I discovered my knack for management, swiftly ascending the ranks to acquire a respectable title and income. However, my dream of becoming a programmer and game developer remained steadfast. Determined to forge ahead, I left this role for a more flexible position in package delivery, strategically balancing my need for a well-paying job with the time required to resume my education.&lt;/p&gt;

&lt;p&gt;As fate would have it, I stumbled upon a programming bootcamp just after learning of my girlfriend's pregnancy—a surprise that required me to carefully reconsider my priorities. Ultimately, family took precedence, and nine months later, my son was born. Navigating the uncharted waters of parenthood proved to be a formidable challenge, monopolizing much of my time. However, with time, my girlfriend and I established a comfortable routine, paving the way for me to reignite my educational pursuits. Driven by a newfound motivation, I re-enrolled at Flatiron School, eager to immerse myself once again in the world of programming.&lt;/p&gt;

&lt;p&gt;My young adult years have unfolded as an exhilarating adventure, marked by unwavering dedication to my aspirations. With the invaluable guidance of the remarkable individuals at Flatiron School, I am poised to embark on a fulfilling career in the tech industry. Whether my path leads me to the realm of Game Design, Web Development, or beyond, I am ready and eager to embrace the next chapter of my life in the world of technology.&lt;/p&gt;

</description>
      <category>writing</category>
      <category>discuss</category>
      <category>story</category>
      <category>codenewbie</category>
    </item>
  </channel>
</rss>
