<?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: Anthony Nanfito</title>
    <description>The latest articles on DEV Community by Anthony Nanfito (@ananfito).</description>
    <link>https://dev.to/ananfito</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%2F924365%2Fb9e5a9c2-1691-4df7-a8bb-165a345333d7.jpeg</url>
      <title>DEV Community: Anthony Nanfito</title>
      <link>https://dev.to/ananfito</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ananfito"/>
    <language>en</language>
    <item>
      <title>One-Year of Learning Frontend Web Development</title>
      <dc:creator>Anthony Nanfito</dc:creator>
      <pubDate>Sun, 20 Aug 2023 04:02:42 +0000</pubDate>
      <link>https://dev.to/ananfito/one-year-of-learning-frontend-web-development-40je</link>
      <guid>https://dev.to/ananfito/one-year-of-learning-frontend-web-development-40je</guid>
      <description>&lt;h2&gt;
  
  
  My top learning resources and why I like them
&lt;/h2&gt;




&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;I have spent most of the past two years learning to code. For the past year, I’ve primarily been focused on frontend web development.&lt;/p&gt;

&lt;p&gt;In this post, I will share my top 5 resources (in no particular order) for learning web development and why I like them. I will also share a basic roadmap of what topics to learn as well as some thoughts on how to escape Tutorial Hell. Lastly, I’ve included some bonus resources — YouTube channels and websites — that have also helped me out along the way.&lt;/p&gt;

&lt;p&gt;A quick note before we begin:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;These are resources that worked for me. They may or may not work for you. So don’t take my word as “gospel” and think you have to follow only these resources. It’s a journey and we all take different paths to the same destination.&lt;/p&gt;

&lt;p&gt;I hope that by sharing what’s worked for me, you can find something that works for you. Even if it means none of the resources on this list. By knowing what does &lt;strong&gt;not&lt;/strong&gt; work for you you have a better idea of what &lt;em&gt;does&lt;/em&gt; work for you.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This post is inspired by &lt;a href="https://www.swyx.io/learn-in-public" rel="noopener noreferrer"&gt;Swyx’s LearnInPublic and Open Source Knowledge&lt;/a&gt; approach to learning. You can find a condensed version of this list in &lt;a href="https://github.com/ananfito/LearnInPublic" rel="noopener noreferrer"&gt;my LearnInPublic repo&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to learn first
&lt;/h2&gt;

&lt;p&gt;When you’re learning something new it’s helpful to know where you need to go. In a traditional education setting, this is where curriculum and syllabi come in handy. However, as a self-taught learner, these are not always easily accessible.&lt;/p&gt;

&lt;p&gt;Thankfully, in the age of the Internet and Open Source Knowledge, it’s quite easy to find a roadmap (i.e., syllabus) for what topics to study as a self-taught developer. Most of the time you can find these roadmaps with a quick Internet search (e.g., search for "roadmap for becoming a frontend developer").&lt;/p&gt;

&lt;p&gt;You can also look at courses and use their outlines as a guide. Or you can also use job postings to see what the market wants, but this approach can be time-consuming and subject to change with time.&lt;/p&gt;

&lt;p&gt;For myself, I eventually decided to invest in Scrimba’s Pro membership and gain access to the &lt;a href="https://scrimba.com/learn/frontend" rel="noopener noreferrer"&gt;Frontend Career Path&lt;/a&gt; for two reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;They had the roadmap already figured out and it aligned with what I wanted to study&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;By putting my “money where my mouth is” I was more motivated to study and complete projects (whereas before I was kind of bouncing from one free resource to the next not learning or internalizing much)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Thus, the paid resource became my primary learning resource while the free ones I discovered became supplementary learning resources. This worked out well when I needed extra or deeper practice with a topic.&lt;/p&gt;

&lt;h3&gt;
  
  
  A basic roadmap
&lt;/h3&gt;

&lt;p&gt;Learning frontend web development (or any programming language or framework) contains &lt;strong&gt;&lt;em&gt;a lot of&lt;/em&gt;&lt;/strong&gt; concepts. I won’t go into all of the details here because each person’s path will be unique to their situation. Some have the resources to go to a 5-day-a-week, 8 hours-a-day bootcamp while others need a slower, self-paced online learning environment.&lt;/p&gt;

&lt;p&gt;Regardless of which option you choose, here’s a basic roadmap of the big ideas that your path should contain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Understand the basics of HTML and CSS&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;BUILD SOMETHING&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A simple landing page will do&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Learn JavaScript fundamentals&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OOP, data structures and algorithms, functions, etc.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;BUILD SOMETHING&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A to-do list is the usual go to&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Learn a framework (e.g., React, Vue, Angular, etc.)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;BUILD SOMETHING&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;At this point, you should be comfortable building a single-page app or maybe a multi-page website with an app&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Again, this is a very rough, basic roadmap. I’ve intentionally left a lot of the finer details off the list. But you can think of this as “broad brush strokes” for what you need to study.&lt;/p&gt;

&lt;h3&gt;
  
  
  Escape tutorial hell by building something
&lt;/h3&gt;

&lt;p&gt;In the above roadmap, I hope you noticed that I put “BUILD SOMETHING” in between each step. If you didn’t, I’m calling it out now because I think it’s important.&lt;/p&gt;

&lt;p&gt;A lot of people talk about Tutorial Hell — being stuck going from tutorial to tutorial, course to course, without actually learning how to code. A lot of people talk about the best way to break out of Tutorial Hell is to build something. And I wholeheartedly agree. Let’s consider an analogy.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Learning to code by only watching videos is like learning to ride a bicycle by only watching videos. You won’t learn to ride until you put your feet on the pedals and you won’t learn to code until you put your fingers on the keyboard.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let’s go a little deeper with this analogy. Let’s say you’re trying to learn to ride a bicycle. You buy a book that talks about the components of the bicycle and how they work. You watch a bunch of YouTube videos of people riding bicycles, watching what they do with their feet on the pedals.&lt;/p&gt;

&lt;p&gt;Heck! Some of the videos even provide step-by-step instructions for riding the bicycle. You outline the steps in notes and rehearse them in your mind, but you haven’t set foot on a bicycle yet so you don’t know how to ride one yet. But you know humans can ride bicycles because you’ve seen them outside, in the real world.&lt;/p&gt;

&lt;p&gt;However, &lt;strong&gt;&lt;em&gt;you&lt;/em&gt;&lt;/strong&gt; are not going to learn to ride a bicycle by only reading books and watching videos about it. Until you get on the bicycle, put your feet on the pedals and start pedaling, you’re not going to develop the muscle memory you need to balance and ride the bicycle.&lt;/p&gt;

&lt;p&gt;The same is true for learning to code. You can read all the books and watch all the YouTube videos and take all the courses, but until you start to put your fingers on the keyboard and force your brain to figure out what goes where you won’t learn how to code.&lt;/p&gt;

&lt;p&gt;This is why, I think, in addition to taking courses that have a “hands-on” approach you also need to build some things of your own. Now, you can build whatever you want. You create a clone of something or build from scratch. The choice is yours.&lt;/p&gt;

&lt;p&gt;I do suggest starting small and building up from there. Build a single webpage first. Then build a multi-page website. (This is great practice for HTML and CSS).&lt;/p&gt;

&lt;p&gt;Build a single-page web app with JavaScript (or with your preferred framework). Maybe it just counts the number of clicks each time the user clicks a button. Doesn’t need to be fancy or complicated, but in the process of building it you will learn, fortify your knowledge, and build your “muscle memory”.&lt;/p&gt;

&lt;p&gt;Then move on to more complex projects. If you start something and realize you have some missing knowledge, great! You’re learning! Now, go out and find a resource (e.g., docs, tutorial, video, course) that will help you fill in the missing knowledge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is a slow and steady race.&lt;/strong&gt; I know bootcamps and coding courses make promises about learning to code in a matter of months (or weeks!) — and maybe that’s true for a select few — but most humans need time to process to learn and do things well. That’s just how our brains work. It &lt;strong&gt;does not&lt;/strong&gt; happen overnight.&lt;/p&gt;

&lt;p&gt;Okay, I’ll get off the “soap box” and get to the list.&lt;/p&gt;

&lt;h2&gt;
  
  
  My top resources
&lt;/h2&gt;

&lt;p&gt;These are the top resources that have made the most impact on my coding journey. I have included what they offer and why I like them. I have not listed them in any particular order of importance, but I will admit that Scrimba is probably my favorite from this list.&lt;/p&gt;

&lt;h3&gt;
  
  
  freeCodeCamp
&lt;/h3&gt;

&lt;p&gt;Link: &lt;a href="https://freecodecamp.org" rel="noopener noreferrer"&gt;https://freecodecamp.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What they offer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Free verified certifications in frontend, backend, data analysis, machine learning, and more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Full-length YouTube courses with industry experts and high-quality teachers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Self-paced hands-on exercises and projects&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why I like them:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;To earn each certification you must complete and submit a series of projects&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This hands-on approach forces you to get your hands on the keyboard and put your abilities to the test&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Building projects is the best way to grow your skills and escape “tutorial hell”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Of all the free resources I’ve encountered, this is by far the best in terms of quality and quantity&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They have a supportive learning community on Discord and in their website’s forums&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sololearn
&lt;/h3&gt;

&lt;p&gt;Link: &lt;a href="https://sololearn.com" rel="noopener noreferrer"&gt;https://sololearn.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What they offer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;More than 20 courses in Python, JavaScript, Web Development, Data, and more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The lessons are “bite-sized” and can be completed in 5-10 mins.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Each lesson includes practice exercises and mini-project to test your skills&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You get a certificate to validate your results&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They have a free plan which offers bite-sized lessons and help from the community, but for as little as $6/month you can access unlimited practice, bonus exercises, and advanced goals and stats&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why I like them:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I took their JavaScript course and it was a great way for me to review and reinforce concepts like data structures and algorithms, OOP, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Their free plan does limit how many times you can practice (it resets daily) which was fine for me because I was using them to review.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;However, if I were using this as my primary learning resource I probably would consider subscribing so I could unlock the unlimited practice.&lt;/li&gt;
&lt;li&gt;That said, I kind of liked the limited practice because it forced me to focus more since I only had a limited number of tries before I had to wait a day for it to reset.&lt;/li&gt;
&lt;li&gt;Also, when I did reach the max number of tries it forced me to walk away from the challenge and think about something else. When I came back to it, I usually had the solution sitting at the top of my mind. Funny how the mind works. Again, &lt;strong&gt;this is a slow and steady race — a marathon, not a sprint.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Scrimba
&lt;/h3&gt;

&lt;p&gt;Link: &lt;a href="https://scrimba.com" rel="noopener noreferrer"&gt;https://scrimba.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What they offer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Hands-on project-based learning in their browser-based code editor&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Free courses, but they also offer &lt;a href="https://scrimba.com/pricing" rel="noopener noreferrer"&gt;Pro and Bootcamp memberships&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Pro is self-paced and includes access to the online Discord Community&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Priced at $18/month and billed every semester (6 months)&lt;/li&gt;
&lt;li&gt;This level is significantly cheaper than most bootcamps&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;a href="https://scrimba.com/bootcamp" rel="noopener noreferrer"&gt;Bootcamp&lt;/a&gt; includes everything in Pro PLUS weekly virtual bootcamp sessions with a cohort of fellow learners and a coach&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Priced at $700 for 3 months&lt;/li&gt;
&lt;li&gt;Gain access to study groups, mentors, code reviews, group projects&lt;/li&gt;
&lt;li&gt;I haven’t used it, but I think it’s a great price for what they offer especially when compared to other “bootcamps” offering the same&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why I like them:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;A*&lt;em&gt;mazing in-browser editor that lets you directly edit whatever code the instructor is discussing. It’s amazing!&lt;/em&gt;*&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Much better than switching windows/tabs between a YouTube tutorial and a code editor&lt;/li&gt;
&lt;li&gt;It feels like you and the instructor are using the same computer. In a way, you’re pair programming together&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Fantastic instructors that break down ideas and concepts into easily manageable pieces&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Most videos are around 5 minutes long but never longer than 8-10&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;They have an active and supportive community&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Weekly live sessions covering a variety of topics from practical coding skills to soft skills and everything in between&lt;/li&gt;
&lt;li&gt;Forums and channels to ask others for help&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Strong “hands on the keyboard” approach to teaching&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Throughout each module, and indeed in most videos, the instructor gives you challenges to practice what you’re learning.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sometimes this is extending something you’ve already learned. Other times it’s deleting all the coding and starting from scratch.&lt;/li&gt;
&lt;li&gt;This is a great way to build “muscle memory” and learn to code&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Each module ends with a solo project where you get to put your skills to the test.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Projects are outlined with a set of requirements and a Figma file&lt;/li&gt;
&lt;li&gt;Plus, when you finish you can share with the community and get feedback&lt;/li&gt;
&lt;li&gt;You can also add them to your portfolio&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;A great &lt;a href="https://scrimba.com/podcast/" rel="noopener noreferrer"&gt;weekly podcast&lt;/a&gt; where they alternate between interviewing newly hired devs and seasoned pros&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I love hearing about transitioning into tech from both sides: beginners and experts.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Frontend Mentor
&lt;/h3&gt;

&lt;p&gt;Link: &lt;a href="https://frontendmentor.io" rel="noopener noreferrer"&gt;https://frontendmentor.io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What they offer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.frontendmentor.io/challenges" rel="noopener noreferrer"&gt;Free and paid challenges&lt;/a&gt; to build your portfolio and test your skills&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I think there are over 100 free challenges&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Challenges range from beginner (e.g., a preview card) to guru (e.g., full-scale website):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Newbie&lt;/li&gt;
&lt;li&gt;Junior&lt;/li&gt;
&lt;li&gt;Intermediate&lt;/li&gt;
&lt;li&gt;Advanced&lt;/li&gt;
&lt;li&gt;Guru&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Their &lt;a href="https://www.frontendmentor.io/pro" rel="noopener noreferrer"&gt;Pro membership&lt;/a&gt; gives you access to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Professional designs for multi-page websites&lt;/li&gt;
&lt;li&gt;Sketch and Figma design files (these aren’t included in the free challenges so you have to do your best to “eyeball” the design)&lt;/li&gt;
&lt;li&gt;Mobile, tablet, and desktop layout designs&lt;/li&gt;
&lt;li&gt;Professional design system&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Each challenge you complete earns you points, once you’ve earned enough points you can gain access to their hiring platform&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The more difficult the challenge the more points you can earn&lt;/li&gt;
&lt;li&gt;You can also earn points by giving feedback to others in the community&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Feedback on challenge solutions&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An automated process gives you basic feedback on your challenge submission&lt;/li&gt;
&lt;li&gt;The community can see your solution and provide targeted feedback&lt;/li&gt;
&lt;li&gt;You can also see other solutions, give feedback, and learn from their approach&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why I like them:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Great opportunity to practice building things.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I’ve only used their free challenges, but I love them nonetheless.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Great for when you just want to get your hands on the keyboard but don’t know what to build&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The design decision is already made for you so you just have to build. No need to worry about the following because it’s already decided:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What color scheme should be used?&lt;/li&gt;
&lt;li&gt;Where should the button be placed?&lt;/li&gt;
&lt;li&gt;What font family should be used?&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Supportive and helpful community — both on the website and on Discord.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

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

&lt;p&gt;If you’re not used to receiving feedback, I suggest first finding a way to separate yourself (i.e., your ego) from your work. I did not do this in the beginning and it stunted my growth a little bit (plus it didn’t make me want to use the platform).&lt;/p&gt;

&lt;p&gt;It took me some time but I figured out that my work is not who I am. They are separate entities. So a critique of my work is not a critique of myself as an individual.&lt;/p&gt;

&lt;p&gt;Moreover, programming is about iteration and getting better which means making revisions when you receive &lt;strong&gt;&lt;em&gt;valuable and constructive&lt;/em&gt;&lt;/strong&gt; feedback. The keywords there are “valuable” and “constructive”. If someone is being an &lt;code&gt;@$$h0le&lt;/code&gt;, then ignore them.&lt;/p&gt;

&lt;p&gt;That said, I’m still human and still struggle with putting the ego aside so, like all things, it’s a work-in-progress.&lt;/p&gt;

&lt;p&gt;In addition to receiving feedback, you also have the opportunity to give feedback. This is a great way to articulate what you know and understand about programming and the web development process. And, of course, it gives you a chance to connect and help others.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kevin Powell’s "Conquering Responsive Web Design" course
&lt;/h3&gt;

&lt;p&gt;Link: &lt;a href="https://courses.kevinpowell.co/conquering-responsive-layouts" rel="noopener noreferrer"&gt;https://courses.kevinpowell.co/conquering-responsive-layouts&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What they offer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Free 21-day course&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Responsive layouts with a mobile-first approach to web design&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Working with responsive units&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understanding flexbox&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mastering Media Queries&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why I like them:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The course is slowly delivered over 21 days&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some days are intentional rest days so you have time to process the information and work on the projects&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Practical examples and hands-on projects&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Kevin is a great instructor&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;He breaks things down into easy-to-understand pieces&lt;/li&gt;
&lt;li&gt;His passion for CSS shines through and it’s infectious&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;His mobile-first approach to responsive web design changed how I create webpages and websites&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;He argues that since HTML is already responsive by default that it only takes a few “tweaks” to the CSS and media queries to make a site responsive to different screen sizes&lt;/li&gt;
&lt;li&gt;I’ve previously blogged about his approach on &lt;a href="https://blog.ananfito.dev/ive-been-designing-websites-all-wrong" rel="noopener noreferrer"&gt;how HTML is responsive by default&lt;/a&gt; and &lt;a href="https://blog.ananfito.dev/responsive-web-design-with-3-lines-of-css" rel="noopener noreferrer"&gt;how you can use 3 lines of CSS to create responsive websites&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;And I expanded on his ideas from the course in this post about &lt;a href="https://blog.ananfito.dev/how-to-three-methods-for-centering-elements-with-css" rel="noopener noreferrer"&gt;three methods for centering elements with CSS&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  TLDR;
&lt;/h2&gt;

&lt;p&gt;If you want the speedy version of this list, here’s the condensed version of my favorite web dev resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://freeCodeCamp.org" rel="noopener noreferrer"&gt;freeCodeCamp.org&lt;/a&gt; - I completed their Responsive Web Design course. It was very hands-on and focused on building projects. This was a great way for me to get my “feet wet” but I found I wanted to go deeper.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://Sololearn.com" rel="noopener noreferrer"&gt;Sololearn.com&lt;/a&gt; - I used this one to reinforce my knowledge of JavaScript, Object Oriented Programming, and Functional Programming&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://Scrimba.com" rel="noopener noreferrer"&gt;Scrimba.com&lt;/a&gt; - This was a game-changer for me. Their tutorials are entirely hands-on and with their in-browser code editor you can pause the video and work directly with the same code the instructor was working with. It’s very hands-on and has lots of great projects. They have lots of free courses to choose from but I signed up for their pro-membership ($18/month billed every semester) to access their Frontend Developer Career Path which takes you from HTML basics up to Advanced React and Getting Hired. They’ve also got a great online community for support.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://Frontendmentor.io" rel="noopener noreferrer"&gt;Frontendmentor.io&lt;/a&gt; - Once you know a little bit, I recommend checking out the challenges here. It’s a great way to build projects, test your skills, and get feedback. They have a paid plan, but there are plenty of free challenges to choose from as well.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Other Resources
&lt;/h2&gt;

&lt;h3&gt;
  
  
  YouTube Channels
&lt;/h3&gt;

&lt;p&gt;In addition to the above courses, I have also found the following YouTube channels helpful during my journey.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/@freecodecamp" rel="noopener noreferrer"&gt;freeCodeCamp&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What they offer&lt;/strong&gt;: Huge selection of free, full-length courses on a variety of programming topics&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why I like them:&lt;/strong&gt; A great companion to the challenges they offer on their website. I would consider the YouTube videos to be the “lecture” part of the course and the challenges on their website to be the “lab” part of the course where you put the ideas into action.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/@KevinPowell" rel="noopener noreferrer"&gt;Kevin Powell&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What they offer&lt;/strong&gt;: In addition to his free and paid courses, Kevin has some great YouTube videos and tutorials primarily focused on CSS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why I like them:&lt;/strong&gt; As noted above, I enjoy Kevin’s enthusiasm for CSS and responsive web design and he does a great job of breaking ideas down into smaller components.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/@WebDevSimplified" rel="noopener noreferrer"&gt;WebDevSimplified&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What they offer&lt;/strong&gt;: Kyle offers courses and tutorials on web development.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why I like them:&lt;/strong&gt; Kyle’s teaching style is simple, approachable, and he does a great job of breaking concepts down into easy-to-digest chunks. I often watch his videos when I needed extra help with JavaScript or React.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/@AniaKubow" rel="noopener noreferrer"&gt;Code with Ania Kubów&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What they offer&lt;/strong&gt;: Ania offers courses and tutorials on a variety of coding subjects from frontend to backend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why I like them:&lt;/strong&gt; She emphasizes learning to code by building. A lot of her tutorials and projects are centered around game development so if you like games, she’s worth checking out. Because of this approach, it’s a great way to see how JavaScript concepts like &lt;code&gt;for&lt;/code&gt; loops, &lt;code&gt;map()&lt;/code&gt; method, &lt;code&gt;forEach()&lt;/code&gt;, and others work in a real-world setting instead of an abstracted coding challenge you might see on a website like Codewars or LeetCode.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Websites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Internet Search Engines — &lt;a href="https://duckduckgo.com" rel="noopener noreferrer"&gt;DuckDuckGo&lt;/a&gt;, &lt;a href="https://ecosia.org" rel="noopener noreferrer"&gt;Ecosia&lt;/a&gt;, &lt;a href="https://google.com" rel="noopener noreferrer"&gt;Google&lt;/a&gt;, etc.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There’s lots of great, helpful content on the Internet — docs, blogs, tutorials — but you need a way to find it. That’s where search engines come in.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you’re not skilled at using one, you’ll want to learn all the ins and outs of performing searches. Here are some resources for learning how to refine your search engine technique. Note, these resources use Google as their example, but most of the techniques mentioned should work for other search engines as well. If not, you can always look it up! 🙂&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://edu.gcfglobal.org/en/internetbasics/using-search-engines/1/" rel="noopener noreferrer"&gt;Internet Basics - Using search engines&lt;/a&gt; (Tutorial by GCF Global featuring videos and images with examples)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://youtu.be/5ynfoyqqbYE" rel="noopener noreferrer"&gt;Advanced Searching with Google Search Engine&lt;/a&gt; (9min YouTube tutorial by Loi Liang Yang)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://youtu.be/BRiNw490Eq0" rel="noopener noreferrer"&gt;Google Like a Pro – All Advanced Search Operators Tutorial [2023 Tips]&lt;/a&gt; (54min course by freeCodeCamp)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/" rel="noopener noreferrer"&gt;MDN Docs&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If a dictionary is where writers go to look up definitions, this is where programmers go to look up the meaning of code.&lt;/li&gt;
&lt;li&gt;It took a while for me to get used to reading the docs (and sometimes it’s still doesn’t make sense), but this is usually the first place I go when I’m trying to use a method or operator.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;a href="https://chat.openai.com/" rel="noopener noreferrer"&gt;ChatGPT&lt;/a&gt; (or your preferred AI/ML chatbot)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I use it like a “coding buddy” by asking it questions when I’m stuck, usually, I do this after doing an Internet search and it has yielded a helpful result&lt;/li&gt;
&lt;li&gt;Most of the time it’s spot on with its advice, but I almost always have to modify the code it provides to make it fit my situation which I think helps me understand it more deeply.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

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

&lt;p&gt;Those are the top resources I’ve used throughout my coding journey. Each person will have their unique challenges when learning to code so don’t take my word as “gospel”. What worked for me may or may not work for you. However, I hope by sharing these resources will lead your closer to finding something that works for you.&lt;/p&gt;

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

&lt;p&gt;Thanks for reading this post. &lt;strong&gt;What is your favorite learning resource? Tell me what it is and why you like it in the comments below.&lt;/strong&gt; Hearing your thoughts makes this more of a conversation and helps us both learn. Happy coding!&lt;/p&gt;

</description>
      <category>learning</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>How-to: Three Methods for Centering with CSS</title>
      <dc:creator>Anthony Nanfito</dc:creator>
      <pubDate>Sun, 06 Aug 2023 09:17:36 +0000</pubDate>
      <link>https://dev.to/ananfito/how-to-three-methods-for-centering-with-css-4c9</link>
      <guid>https://dev.to/ananfito/how-to-three-methods-for-centering-with-css-4c9</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In web development, knowing how to center things with CSS is an essential skills. Like many things in the programming world there is more than one way to do it. Some ways are better than others, but there’s not always a best way. It often depends on the context of the situation. &lt;/p&gt;

&lt;p&gt;In this blog post, I’ll share my three favorite ways for centering elements using CSS. I first learned about these methods from &lt;a href="https://courses.kevinpowell.co/conquering-responsive-layouts" rel="noopener noreferrer"&gt;Kevin Powell’s ‘Conquering Responsive Layouts’ course&lt;/a&gt; (and in fact, wrote a short &lt;a href="https://ananfito.hashnode.dev/responsive-web-design-with-3-lines-of-css" rel="noopener noreferrer"&gt;blog post in December 2022&lt;/a&gt; about it, but only covered the first method in that post). Here, I’d like to discuss all three methods: &lt;code&gt;margin&lt;/code&gt; and &lt;code&gt;max-width&lt;/code&gt;, &lt;code&gt;flex&lt;/code&gt;, and &lt;code&gt;grid&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;I’ll be assuming you have some familiarity with CSS, flex, and grid. Also, for demonstration purposes I’ll be using the example of a blog website with a single-column layout. I will provide snippets of code throughout the post, but if you’d like to see the source code and live example for these methods, you can view &lt;a href="https://github.com/ananfito/LearnInPublic/tree/main/center-with-css" rel="noopener noreferrer"&gt;the repo here&lt;/a&gt; and the &lt;a href="https://ananfito.dev/LearnInPublic/center-with-css" rel="noopener noreferrer"&gt;live site here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 1: Using &lt;code&gt;margin&lt;/code&gt; and &lt;code&gt;max-width&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;This is probably my favorite way to center elements in CSS. I like it because it’s quick and simple. However, because of its simple approach this also means it’s best used in simple situations. This method works best when you want to center something directly in a vertical column. More complex layouts will require a different or combination of techniques. &lt;/p&gt;

&lt;p&gt;If you want to center the &lt;code&gt;body&lt;/code&gt; (or any element within its parent container), a quick and easy way to do that is with &lt;code&gt;margin&lt;/code&gt; and &lt;code&gt;max-width&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* METHOD 1: Using margin and max-width */&lt;/span&gt;
    &lt;span class="nc"&gt;.blog-post&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;600px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the &lt;code&gt;margin&lt;/code&gt; property, the first value sets the top and bottom margin are set to &lt;code&gt;0&lt;/code&gt; so that they touch whatever is above and below them. In other words, there’s no gap between the elements but if you wanted to have some space you could set the first value to something other than &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The second value, &lt;code&gt;auto&lt;/code&gt;, will automatically set the left and right margin to the same amount with whatever space is available. This ensures that the element is centered along the vertical axis of the page. &lt;/p&gt;

&lt;p&gt;Then the &lt;code&gt;max-width&lt;/code&gt; property ensures that the width of the element does not extend beyond the numerical value. In this case, the maximum width will be &lt;code&gt;600px&lt;/code&gt; but it can be set to whatever value is desired/needed. &lt;/p&gt;

&lt;p&gt;It’s not used in this example, but you can also add &lt;code&gt;width: 80%&lt;/code&gt; (or whatever percentage you desire) so that the element fills 80% of the available width. This will allow for a little bit of space on the left and right. This is ideal on mobile or tablet devices where you might want a little bit of space between the left and right edges of the content and the edge of the screen. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: When &lt;code&gt;max-width&lt;/code&gt; is used in conjunction with &lt;code&gt;width: 80%&lt;/code&gt; the element will fill 80% of the available width up to the maximum width. &lt;/p&gt;

&lt;p&gt;If you’d like to see a demonstration of this in action, you can view a &lt;a href="https://ananfito.dev/LearnInPublic/center-with-css/method1.html" rel="noopener noreferrer"&gt;live example&lt;/a&gt; and the &lt;a href="https://github.com/ananfito/LearnInPublic/blob/main/center-with-css/method1.html" rel="noopener noreferrer"&gt;source code&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 2: Using &lt;code&gt;flex&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Another common method for centering elements is to use &lt;code&gt;flex&lt;/code&gt; with &lt;code&gt;justify-content&lt;/code&gt; and &lt;code&gt;align-items&lt;/code&gt;. Continuing with the same example let’s look at how we would use this to center items within a single-vertical column:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* Method 2: Using flex */&lt;/span&gt;
&lt;span class="nc"&gt;.blog-post-container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;flex-direction&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* REMINDER: with `column`, the main axis is horizonal and cross axis is vertical */&lt;/span&gt;
    &lt;span class="nl"&gt;align-items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* `align-items` still affects the cross axis, but with column it works vertically */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we’ve set the &lt;code&gt;.blog-post-container&lt;/code&gt; class to have a display of &lt;code&gt;flex&lt;/code&gt; and centered its children elements using &lt;code&gt;align-items&lt;/code&gt;. Since the &lt;code&gt;flex-direction&lt;/code&gt; is set to column the &lt;code&gt;align-items&lt;/code&gt; affects the cross axis which the vertical axis. This is what places the elements within the center of the flex container. &lt;/p&gt;

&lt;p&gt;If you’d like to see a demonstration of this in action, you can view a &lt;a href="https://ananfito.dev/LearnInPublic/center-with-css/method2.html" rel="noopener noreferrer"&gt;live example&lt;/a&gt; and the &lt;a href="https://github.com/ananfito/LearnInPublic/blob/main/center-with-css/method2.html" rel="noopener noreferrer"&gt;source code&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 3: Using &lt;code&gt;grid&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Lastly, we can use &lt;code&gt;grid&lt;/code&gt; to center things too. Using our same blog website example, let’s look at how we would do this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* Method 3: Using grid */&lt;/span&gt;
&lt;span class="nc"&gt;.blog-post-container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.blog-post&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;justify-self&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* this places the div in the center of the grid-column */&lt;/span&gt;
    &lt;span class="nl"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;600px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* this prevents the div from filling the entire space */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we have a little bit of a different set up. We have to set the container (in this case &lt;code&gt;.blog-post-container&lt;/code&gt;) to use &lt;code&gt;grid&lt;/code&gt; while at the same time setting the properties for the blog post itself. &lt;/p&gt;

&lt;p&gt;Since we’re only working with a single column layout we don’t need to worry about &lt;code&gt;grid-template-columns&lt;/code&gt; or &lt;code&gt;grid-template-rows&lt;/code&gt; or &lt;code&gt;grid-template-areas&lt;/code&gt;. Instead, we can focus our  attention on the &lt;code&gt;.blog-post&lt;/code&gt; class. &lt;/p&gt;

&lt;p&gt;In this above snippet, we can use the &lt;code&gt;justify-self&lt;/code&gt; property to center this class within the &lt;code&gt;grid&lt;/code&gt; container. And just like with Method 1 we want to set the &lt;code&gt;max-width&lt;/code&gt; property so that the content doesn’t span the entire width of the column or window. &lt;/p&gt;

&lt;p&gt;If you’d like to see a demonstration of this in action, you can view a &lt;a href="https://ananfito.dev/LearnInPublic/center-with-css/method3.html" rel="noopener noreferrer"&gt;live example&lt;/a&gt; and the &lt;a href="https://github.com/ananfito/LearnInPublic/blob/main/center-with-css/method3.html" rel="noopener noreferrer"&gt;source code&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;Those are my three favorite techniques for centering elements. These work best within a single-column layout, but can also be used within more complex layouts (if you want to center something within a section). &lt;/p&gt;

&lt;p&gt;I mostly lean toward using Method 1, but what’s great about all of these is they don’t take up more than a few lines of code. This makes them great in a pinch when you want to center something quickly without worrying too much about the layout. &lt;/p&gt;

&lt;p&gt;If you’re looking to learn more about these techniques and other ways of designing responsive web design, check out the resources listed below. Note, these are &lt;strong&gt;&lt;em&gt;NOT&lt;/em&gt;&lt;/strong&gt; affiliate links. These are just the resources I found useful in learning about these concepts. You can also check out the References section for the documentation I referenced in writing this post. Happy coding!&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.freecodecamp.org/news/css-flexbox-tutorial-with-cheatsheet/" rel="noopener noreferrer"&gt;CSS Flexbox Tutorial with Flexbox Properties Cheat Sheet&lt;/a&gt; (freeCodeCamp) - In-depth tutorial on how to use CSS flex including &lt;code&gt;flex-direction&lt;/code&gt;, &lt;code&gt;justify-content&lt;/code&gt;, &lt;code&gt;align-content&lt;/code&gt;, &lt;code&gt;align-items&lt;/code&gt;, &lt;code&gt;align-self&lt;/code&gt;, and more. Plus, there’s a video tutorial linked in the post.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.freecodecamp.org/news/css-grid-tutorial-with-cheatsheet" rel="noopener noreferrer"&gt;Complete CSS Grid Tutorial with Cheat Sheet&lt;/a&gt; (freeCodeCamp) - In-depth tutorial on how to use CSS grid including &lt;code&gt;grid-template-columns&lt;/code&gt;, &lt;code&gt;grid-template-rows&lt;/code&gt;, &lt;code&gt;grid-template-areas&lt;/code&gt;, and more. Plus, there’s a video tutorial linked in the post.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://courses.kevinpowell.co/conquering-responsive-layouts" rel="noopener noreferrer"&gt;Kevin Powell’s ‘Conquering Responsive Layouts’ course&lt;/a&gt; - Free 21-day course which gradually guides you through designing mobile-first websites using &lt;code&gt;flexbox&lt;/code&gt; and other great tools&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://scrimba.com/learn/cssgrid" rel="noopener noreferrer"&gt;Scrimba’s Learn CSS Grid&lt;/a&gt; - Free interactive tutorial spread out over 18 tutorials building a website, an image grid, and an article. Plus, you’ll learn how to combine CSS grid with flexbox.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_flexible_box_layout/Aligning_items_in_a_flex_container" rel="noopener noreferrer"&gt;Aligning Items in a Flex Container&lt;/a&gt; (MDN Docs)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_grid_layout" rel="noopener noreferrer"&gt;CSS grid layout&lt;/a&gt; (MDN Docs)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.w3schools.com/css/css_grid.asp" rel="noopener noreferrer"&gt;CSS Grid Module&lt;/a&gt; (w3schools)&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Thanks for reading. I hope you found it useful. &lt;strong&gt;What are you favorite techniques for centering content with CSS?&lt;/strong&gt; Let me know in the comments. Hearing your thoughts makes this more of a conversation and helps us both learn. 🚀&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>codenewbie</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Git Command Cheatsheet: My Top 7 Git Commands</title>
      <dc:creator>Anthony Nanfito</dc:creator>
      <pubDate>Sun, 30 Jul 2023 14:35:43 +0000</pubDate>
      <link>https://dev.to/ananfito/git-command-cheatsheet-my-top-7-git-commands-3lhb</link>
      <guid>https://dev.to/ananfito/git-command-cheatsheet-my-top-7-git-commands-3lhb</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;This week I took a deep dive into &lt;a href="https://www.swyx.io/learn-in-public" rel="noopener noreferrer"&gt;Swyx's philosophy of Learn in Public&lt;/a&gt;. I first heard about this idea on &lt;a href="https://scrimba.com/podcast/how-to-create-a-personal-brand-and-why-you-need-it/" rel="noopener noreferrer"&gt;Episode 125 of The Scrimba Podcast&lt;/a&gt;. This episode focused on the topic of developing a personal brand and featured clips from previous episodes. Including Episode 18 which featured an in-depth interview with &lt;a href="https://www.notion.so/c98e3acaf3274e88b6e39fbf34d15dbf?pvs=21" rel="noopener noreferrer"&gt;Swyx&lt;/a&gt; and his book, &lt;a href="http://learninpublic.org" rel="noopener noreferrer"&gt;The Coding Career Handbook&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I listened to both episodes and was so inspired that I purchased the book, joined the community, and (re)started my dailyDevLog journal (a personal journal I use to track my daily progress on projects and what I’m learning).&lt;/p&gt;

&lt;p&gt;As a former educator, I fully understand how beneficial writing-to-learn can be. As &lt;a href="https://skeptics.stackexchange.com/a/22409" rel="noopener noreferrer"&gt;the quote often attributed to Albert Einstein — but more likely came from Lord Rutherford of Nelson&lt;/a&gt; — says, “if you can’t explain it simply, then you don’t understand it well enough”.&lt;/p&gt;

&lt;p&gt;That’s always been my goal with writing (both online and offline), but I haven’t been good about writing regularly since I completed my first round of the #100DaysOfCode challenge. My blog posts have been sporadic and I know that regular reflection is what helps our brains process and retain information.&lt;/p&gt;

&lt;p&gt;I hope that the resources and inspiration I’ve found in these podcast episodes and in Swyx’s book will help me pursue that goal with renewed energy and commitment.&lt;/p&gt;

&lt;p&gt;So, without further ado …&lt;/p&gt;

&lt;p&gt;I present to you my latest installment toward that goal. Here is a quick list of the most common git commands I use when working on a project. In addition to this blog post, I’ve also made a GitHub repo, aptly titled &lt;a href="https://github.com/ananfito/LearnInPublic/tree/main" rel="noopener noreferrer"&gt;LearnInPublic&lt;/a&gt;, in hopes of building a collection of things I’ve found useful along my programming journey.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;git init&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What it does: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initializes git repo in from CLI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useful when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You start your project! Git will track changes within your repo, but first you've got to initialize it. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;git clone &amp;lt;URL&amp;gt;&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone &amp;lt;URL&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What it does: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clones a remote repo (i.e., creates a copy on your local machine)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useful when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloning an open-source repo to your local machine so you can make contributions&lt;/li&gt;
&lt;li&gt;Cloning your own remote repo to your local machine&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;git status&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What it does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Checks the status of the repo

&lt;ul&gt;
&lt;li&gt;Are there any unstaged files? &lt;/li&gt;
&lt;li&gt;Are files staged and ready to commit?&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Useful when: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can't remember if you're last set of changes were committed or not&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;git remote add origin &amp;lt;URL&amp;gt;&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote add origin &amp;lt;URL&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What it does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adds a remote origin to a local repo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useful when: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You've created a local repo and need to connect it to a remote repo

&lt;ul&gt;
&lt;li&gt;In other words, this tells &lt;code&gt;git&lt;/code&gt; where to send the files when you use the &lt;code&gt;git push&lt;/code&gt; command&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;git add &amp;lt;FILENAME&amp;gt;&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add &amp;lt;FILENAME&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What it does: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adds untracked changes in file to staging (i.e., they're ready to commit to the repo)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useful when: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You've made changes to a project and need to stage those changes &lt;em&gt;before&lt;/em&gt; you commit the changes to the repo

&lt;ul&gt;
&lt;li&gt;In other words, you're happy with the changes and ready to "store" them&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Variant
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What it does: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adds all files with untracked changes to staging &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useful when: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You've made mutliple changes to multiple changes. With &lt;code&gt;git add&lt;/code&gt; you need to list individual file names after the command so this is useful when you've made lots changes. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CAUTION&lt;/strong&gt;: Including &lt;em&gt;all&lt;/em&gt; files may also include hidden files (e.g., &lt;code&gt;.DS_Store&lt;/code&gt;) within the directory where your repo is located. These kinds of files often contain system metadata, however you may not want them in your repo repository, especially if it's a public one. &lt;/p&gt;

&lt;p&gt;Further, you may be working on a project that contains access keys. If you add these files and commit them, then push them to a public repo they become available to the public. This could be bad news if these keys give access to a private database.&lt;/p&gt;

&lt;p&gt;To solve this, you can either move these files to another directory or add them to a &lt;code&gt;.gitignore&lt;/code&gt; file. This file contains a list of files and directories that git will ignore (i.e., it won't track any changes, stage them for commits, or push them to remote repos). &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;git commit -m "&amp;lt;COMMIT MSG GOES HERE&amp;gt;"&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -m "&amp;lt;COMMIT MSG GOES HERE&amp;gt;"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What it does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Commits the file changes to the repo along with a message about the changes made (e.g., &lt;code&gt;"fix broken link"&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useful when: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You're satisfied with the changes you made and want to "save" them&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Variant
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -am "&amp;lt;COMMIT MSG GOES HERE&amp;gt;"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What it does: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adds all untrack files to staging, then commits them (it's a 2-for-1 command)

&lt;ul&gt;
&lt;li&gt;Here the &lt;code&gt;-am&lt;/code&gt; tag is for adding the untracked files to staging (the &lt;code&gt;a&lt;/code&gt; part) and attaching the message (&lt;code&gt;m&lt;/code&gt;) for the commit &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Useful when: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You've made &lt;strong&gt;a lot of changes&lt;/strong&gt; and don't want to have to type two separate commands for &lt;code&gt;add&lt;/code&gt; and &lt;code&gt;commit&lt;/code&gt; (i.e., &lt;del&gt;you're feeling lazy&lt;/del&gt; you're a productive programmer and want to save time)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;git push&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What it does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pushes commits to remote repo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useful when: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You've made your changes and its time to share them with the world! &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Variant
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git push --all --set-upstream origin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What it does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This sets the upstream of the repo to the remote repo so it will push future commits to the remote repo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useful when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You've created a repo on your local machine and you want to push the files to a remote repo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note: Unless you decide to change the upstream, you only need to this once. I usually do it on my first push.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other commands
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;git branch &amp;lt;NAME&amp;gt;&lt;/code&gt;: Creates a new branch with desired name (e.g., &lt;code&gt;"add-feature"&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git checkout &amp;lt;NAME&amp;gt;&lt;/code&gt;: Moves to specified branch (e.g., from &lt;code&gt;main&lt;/code&gt; to &lt;code&gt;add-feature&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git checkout -b &amp;lt;NAME&amp;gt;&lt;/code&gt;: Creates new branch and moves to that branch&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git branch -d &amp;lt;NAME&amp;gt;&lt;/code&gt;: Deletes specified branch&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git fetch&lt;/code&gt;: Fetches new changes from remote repo&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git merge &amp;lt;NAME&amp;gt;&lt;/code&gt;: Merges changes from the named branch into the current branch&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://git-scm.com/doc" rel="noopener noreferrer"&gt;Git Documentation&lt;/a&gt; - Docs are always a good starting place when you want to learn how to use a tool&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://learngitbranching.js.org/" rel="noopener noreferrer"&gt;Learn Git Branching&lt;/a&gt; - Fun interactive resource for beginners to learn how git branching works&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://osxdaily.com/2009/12/31/what-is-a-ds_store-file/" rel="noopener noreferrer"&gt;What is a .DS_Store file?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Thanks for reading. I hope you found it useful.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What git commands to you use the most? Did I leave any out?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let me know in the comments. Hearing your thoughts makes this more of a conversation and helps us both learn. 😄&lt;/p&gt;

</description>
      <category>git</category>
      <category>beginners</category>
      <category>cheatsheet</category>
      <category>learning</category>
    </item>
    <item>
      <title>Project Showcase: Tenzies Clone</title>
      <dc:creator>Anthony Nanfito</dc:creator>
      <pubDate>Fri, 14 Jul 2023 08:49:11 +0000</pubDate>
      <link>https://dev.to/ananfito/project-showcase-tenzies-clone-16i2</link>
      <guid>https://dev.to/ananfito/project-showcase-tenzies-clone-16i2</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;Hello and welcome to another blog post for &lt;a href="https://ananfito.hashnode.dev/" rel="noopener noreferrer"&gt;Anthony’s Techie Thoughts&lt;/a&gt;! If you’re new here, my name is Anthony and I’m studying programming to make a career change from mathematics teacher to frontend web developer.&lt;/p&gt;

&lt;p&gt;In my blog posts, I reflect on my journey and share things I’m learning along the way. You can find me on &lt;a href="https://hachyderm.io/@infinifito" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://twitter.com/wordsbyfifi" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://github.com/ananfito" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, and &lt;a href="https://linkedin.com/in/anthonynanfito/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this blog post, I’ll be sharing some thoughts on a recent project I completed: a clone of the Tenzies dice game. Thanks for stopping by and happy coding!&lt;/p&gt;

&lt;h2&gt;
  
  
  Tenzies Clone
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Overview
&lt;/h3&gt;

&lt;p&gt;This project was introduced in Module 11 "React Basics" of &lt;a href="https://scrimba.com/learn/frontend" rel="noopener noreferrer"&gt;the Scrimba Frontend Career Path&lt;/a&gt;. It is a clone of the popular dice game, &lt;a href="https://ilovetenzi.com/" rel="noopener noreferrer"&gt;Tenzies&lt;/a&gt;, and is played the same way.&lt;/p&gt;

&lt;p&gt;The goal of the game is to roll the 10 dice until they are the same. During gameplay, players can set aside the number they are trying to reach -- this means these dice will not be rolled during the next roll. They then continue rolling and holding dice until all are the same number.&lt;/p&gt;

&lt;p&gt;The bulk of this project was completed during follow-along tutorials, however, the following features were completed independently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Ability to track time&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Store the player's best time in local storage&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Track the number of rolls&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use CSS to add dice dots&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Built with
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;React JS&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Screenshots
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhndjf87rjs35ah6yzme3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhndjf87rjs35ah6yzme3.png" alt="Game title and instructions at the top. In the middle, ten dice laid out in two rows of five. Underneath the dice, the game stats: number of rolls, game time, and best time." width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffs4jnemgvi221eka62zv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffs4jnemgvi221eka62zv.png" alt="Game title and instructions at the top. In the middle, ten dice laid out in two rows of five with two dice selected, or held, and highlighted in green. Underneath the dice, the game stats: number of rolls, game time, and best time." width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Links
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Live: &lt;a href="https://tenzies-clone.netlify.app/" rel="noopener noreferrer"&gt;https://tenzies-clone.netlify.app/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Repo: &lt;a href="https://github.com/ananfito/tenzies-clone" rel="noopener noreferrer"&gt;https://github.com/ananfito/tenzies-clone&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  My big takeaway: How to use CSS Grid
&lt;/h3&gt;

&lt;p&gt;This project packed a lot into it! It was a great opportunity to review key practices with React, such as &lt;code&gt;useState&lt;/code&gt; and &lt;code&gt;useEffect&lt;/code&gt;, but I think my biggest takeaway from this project was learning how to use CSS &lt;code&gt;grid&lt;/code&gt; to create the dice dots.&lt;/p&gt;

&lt;p&gt;As I learned from &lt;a href="https://dev.to/ekeijl/creating-dice-using-css-grid-j4"&gt;this&lt;/a&gt; &lt;a href="http://DEV.to" rel="noopener noreferrer"&gt;DEV.to&lt;/a&gt; &lt;a href="https://dev.to/ekeijl/creating-dice-using-css-grid-j4"&gt;blog post by Edwin&lt;/a&gt;, the trick here is to use CSS grid with &lt;code&gt;grid-template-areas&lt;/code&gt; and the &lt;code&gt;nth-child()&lt;/code&gt; pseudo-selector to specify where the dots (or pips) will appear. This is because the dots on an actual dice fall into a 3x3 grid which makes CSS grid a great choice for displaying the dots.&lt;/p&gt;

&lt;p&gt;Here's an excerpt of the CSS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.die-face&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.25&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;.20em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;45px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;45px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;pointer&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="c"&gt;/* each area (or letter) will be taken by a dot */&lt;/span&gt;
  &lt;span class="py"&gt;grid-template-areas&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
      &lt;span class="s1"&gt;"a . c"&lt;/span&gt;
      &lt;span class="s1"&gt;"e g f"&lt;/span&gt;
      &lt;span class="s1"&gt;"d . b"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.pip&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;align-self&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;justify-self&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#333&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;inset&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;#111&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;inset&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;-3px&lt;/span&gt; &lt;span class="m"&gt;#555&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* these assign the dots to the appropriate grid areas */&lt;/span&gt;
&lt;span class="nc"&gt;.pip&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;2&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;grid-area&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.pip&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;3&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;grid-area&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.pip&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;4&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;grid-area&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.pip&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;5&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;grid-area&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.pip&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;6&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;grid-area&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* this places the dot of the 3 and 5 die in the center */&lt;/span&gt;
&lt;span class="nc"&gt;.pip&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;odd&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nd"&gt;:last-child&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="py"&gt;grid-area&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I found this solution to be particularly clever and helpful in completing the independent portions of the project. For a full explanation, I strongly encourage you to read &lt;a href="https://dev.to/ekeijl/creating-dice-using-css-grid-j4"&gt;Edwin's post&lt;/a&gt; and check out the sandbox he provided at the end of the post.&lt;/p&gt;

&lt;h3&gt;
  
  
  Closing thoughts
&lt;/h3&gt;

&lt;p&gt;I was excited to work on this project because Tenzies is a game that I’ve played with my family many times. It’s so simple, yet so addictive! The hallmark qualities of a great game. Creating a clone of the game helped me to practice my programming skills and also see the connection between real-world activities and software. And this excites me!&lt;/p&gt;

&lt;p&gt;One of the things I love and find fascinating about developing software like this is seeing how activities (like rolling dice) can be broken down into smaller and smaller actions which then can be written as code and executed by a computer. And the best part is when you learn this skill and put it into practice like I have in this project, it’s such an exhilarating moment.&lt;/p&gt;

&lt;p&gt;Granted, it takes a lot of hard work, trial and error (maybe lots of errors?), and refactoring to get to that point, but I think that makes it all the more joyous. You get to see the results of how your hard work paid off. And then you get to do it again! These are the two parts of programming I enjoy the most: the process and the results. Which means it’s time to start another project!&lt;/p&gt;

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

&lt;p&gt;Thanks so much for reading this post. I hope you found it helpful. I’d love to know: &lt;strong&gt;what are your favorite parts of programming?&lt;/strong&gt; Share your thoughts in the comments below. Hearing your thoughts makes this more of a conversation and helps us all learn. See you next time.&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>codenewbie</category>
      <category>css</category>
    </item>
    <item>
      <title>My Top 3 Tips for Staying Focused</title>
      <dc:creator>Anthony Nanfito</dc:creator>
      <pubDate>Tue, 20 Jun 2023 12:45:46 +0000</pubDate>
      <link>https://dev.to/ananfito/my-top-3-tips-for-staying-focused-4map</link>
      <guid>https://dev.to/ananfito/my-top-3-tips-for-staying-focused-4map</guid>
      <description>&lt;h2&gt;
  
  
  What I learned from three rounds of #100DaysOfCode
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Intro
&lt;/h3&gt;

&lt;p&gt;Hello and welcome to another blog post for &lt;a href="https://ananfito.hashnode.dev/" rel="noopener noreferrer"&gt;Anthony’s Techie Thoughts&lt;/a&gt;! If you’re new here, my name is Anthony and I’m studying programming to make a career change from mathematics teacher to frontend web developer. In my blog posts, I reflect on my journey and share things I’m learning along the way. You can find me on &lt;a href="https://hachyderm.io/@infinifito" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://github.com/ananfito" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://linkedin.com/in/anthonynanfito/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://hashnode.com/@ananfito" rel="noopener noreferrer"&gt;Hashnode&lt;/a&gt;, &lt;a href="http://DEV.to" rel="noopener noreferrer"&gt;DEV.to&lt;/a&gt;, and &lt;a href="https://community.codenewbie.org/ananfito" rel="noopener noreferrer"&gt;CodeNewbie&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this blog post, I’ll share my top three tips for staying focused while studying or coding. These came out of a reflection after completing a third round of the &lt;a href="https://www.100daysofcode.com/" rel="noopener noreferrer"&gt;#100DaysOfCode challenge&lt;/a&gt;. These techniques worked for me and they might work for you. Feel free to take what vibes with you and toss the rest. Alright, let’s get to the tips!&lt;/p&gt;

&lt;h3&gt;
  
  
  Tips for Staying Focused
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Tip #1: Turn off notifications 🔕
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://unsplash.com/photos/xv7-GlvBLFw" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1554177255-61502b352de3%3Fixlib%3Drb-4.0.3%26ixid%3DM3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%253D%253D%26auto%3Dformat%26fit%3Dcrop%26w%3D1170%26q%3D80%2520align%3D" alt="Red and white neon sign with a heart and zero." width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Image Credit:&lt;/em&gt; &lt;a href="https://unsplash.com/@prateekkatyal" rel="noopener noreferrer"&gt;&lt;em&gt;Prateek Katyal&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re looking to stay focused and, perhaps, get into a state of &lt;a href="https://en.wikipedia.org/wiki/Flow_(psychology)" rel="noopener noreferrer"&gt;flow&lt;/a&gt;, then you’ve got to eliminate distractions. Apart from choosing a quiet working environment, this means turning off notifications on your devices (e.g., phone, tablet, computer) for the duration of your work session. The last thing you want is to hear a ‘ding’ and then get pulled down a virtual rabbit hole and lose valuable work time. Your future self will thank you.&lt;/p&gt;

&lt;p&gt;Turn off the notifications and, if you can, put your phone out of arm’s reach. I’ve found that even if I pick up my phone, even when it’s on silent, I can still get sucked into something distracting. So I’ve started following the motto of “out of sight, out of mind” by placing my phone out of arms reach, but still where I can hear my interval timer go off (more on that in Tip #3).&lt;/p&gt;

&lt;h4&gt;
  
  
  Tip #2: Listen to relaxing music 🎶
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://unsplash.com/photos/5gn2soeAc40" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1458560871784-56d23406c091%3Fixlib%3Drb-4.0.3%26ixid%3DM3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%253D%253D%26auto%3Dformat%26fit%3Dcrop%26w%3D1074%26q%3D80%2520align%3D" alt="Close up shot of a record on a turntable with the needle resting on the record. " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Image Credit:&lt;/em&gt; &lt;a href="https://unsplash.com/@adkorte" rel="noopener noreferrer"&gt;&lt;em&gt;Adrian Korte&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Jazz, Classical, Lo-Fi, whatever floats your boat or, in this case, wiggles your eardrums. Choose some music that puts you at ease and helps you focus. I prefer music without any words otherwise I find it distracting. Any else perform tiny desk karaoke? No, just me. Okay, moving on!&lt;/p&gt;

&lt;p&gt;Bonus music-listening tips:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Use headphones to block out surrounding noise&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is especially helpful if you’re somewhere like a cafe or a busy office environment.&lt;/li&gt;
&lt;li&gt;I’ve also found that when others see me with headphones on it signals to them that I’m focusing on important work and don’t want to be disturbed.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Listen to the same song on repeat&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This might sound a little whacky, but having it on repeat lets your brain worry less about the patterns in the music and more about the task you’re trying to complete (because yes, your brain is using energy to analyze the patterns in music even if you’re not conscious of it)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h4&gt;
  
  
  Tip #3: Use an interval timer ⏲️ to practice the Pomodoro 🍅 Technique
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://unsplash.com/photos/0dAREtlOGlE" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1540829414482-5f8ef8834d85%3Fixlib%3Drb-4.0.3%26ixid%3DM3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%253D%253D%26auto%3Dformat%26fit%3Dcrop%26w%3D1185%26q%3D80%2520align%3D" alt="Tomatoes lined up on a window shelf in front of a blurred background" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Image Credit:&lt;/em&gt; &lt;a href="https://unsplash.com/@slavudin" rel="noopener noreferrer"&gt;&lt;em&gt;Slejven Djurakovic&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In case you’re not familiar with the &lt;a href="https://en.wikipedia.org/wiki/Pomodoro_Technique" rel="noopener noreferrer"&gt;Pomodoro Technique&lt;/a&gt;, here’s a quick overview:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Set a timer for 25 minutes and work until the timer goes off&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Take a quick break before setting the timer again and continuing your work&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Repeat 3-4 times or until your task is complete&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There’s plenty of room for variation within this technique to tweak so it fits your needs. I use an app called &lt;a href="https://apps.apple.com/us/app/interval-timer-hiit-workouts/id406473568" rel="noopener noreferrer"&gt;Interval Timer&lt;/a&gt; on my iPhone where I’ve set up three different Pomodoro timers. This is an app designed for HIIT workout timers, but I found it useful in this situation as well. I like this better than using the standard timer that came with my phone because I can customize both the time spent working on a task and the time spent taking a break.&lt;/p&gt;

&lt;p&gt;Here are my three Pomodoro timers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Short Session&lt;/strong&gt;: Two 20-minute work sessions with a 3-minute break in between each session (46 minutes total).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Medium Session&lt;/strong&gt;: Three 20-minute work sessions with a 3-minute break in between each session (1hr 9m total).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Long Session&lt;/strong&gt;: Five 25-minute work sessions with a 5-minute break in between (2hr 30m total).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ll select one of these timers based on how much time I have to study. This helps me use my time effectively and stay focused. When the timer starts, I get to work and when the session ends I take a quick break. During the break between work sessions, I like to get up and move around. I will either stretch or do bodyweight exercises (e.g., push-ups) to stay active and not be seated at a computer for too long. I found this also helps with eye strain too. During the break when I get up and move, I also make a point to go look out a window.&lt;/p&gt;

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

&lt;p&gt;Thanks so much for reading this post. I hope you found it useful.&lt;/p&gt;

&lt;p&gt;These are the top three techniques I’ve used over the past three rounds of the #100DaysOfCode challenge. They’ve helped me stay focused and get into a flow state which has allowed me to learn many new skills for my career change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What techniques do you use to stay focused while you code 👨‍💻 or study 📖?&lt;/strong&gt; Leave your suggestions in the comments below 👇🏼. Hearing your thoughts 💭 makes this more of a conversation and helps us learn together.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>productivity</category>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>Experimenting with Linux</title>
      <dc:creator>Anthony Nanfito</dc:creator>
      <pubDate>Sun, 23 Apr 2023 06:17:27 +0000</pubDate>
      <link>https://dev.to/ananfito/experimenting-with-linux-482i</link>
      <guid>https://dev.to/ananfito/experimenting-with-linux-482i</guid>
      <description>&lt;h2&gt;
  
  
  Impressions after installing Ubuntu on an external hard drive
&lt;/h2&gt;




&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;Hello and welcome to another blog post for &lt;a href="https://ananfito.hashnode.dev/" rel="noopener noreferrer"&gt;Anthony’s Techie Thoughts&lt;/a&gt;! If you’re new here, my name is Anthony and I’m studying programming to make a career change from mathematics teacher to a frontend web developer. In my blog posts, I reflect on my journey and share things I’m learning along the way. You can find me on &lt;a href="https://hachyderm.io/@infinifito" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://github.com/ananfito" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://linkedin.com/in/anthonynanfito/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://hashnode.com/@ananfito" rel="noopener noreferrer"&gt;Hashnode&lt;/a&gt;, &lt;a href="http://DEV.to" rel="noopener noreferrer"&gt;DEV.to&lt;/a&gt;, and &lt;a href="https://community.codenewbie.org/ananfito" rel="noopener noreferrer"&gt;CodeNewbie&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this blog post, I share my experience with installing Ubuntu on an external hard drive. This article is more of a reflection of my experience and impressions of Ubuntu and not so much a “how-to” guide, but I will include links to the resources I used for learning about Linux and how to install Ubuntu. Alright, let’s get to it!&lt;/p&gt;

&lt;h3&gt;
  
  
  Free time to explore
&lt;/h3&gt;

&lt;p&gt;During the weeks of March 27 to April 16, I had the good fortune to be on a mid-term break from my teaching job. One of those weeks was spent on a (much-needed) vacation, but the remainder were (mostly) dedicated to studying. Along with continuing the interactive videos and projects on &lt;a href="http://Scrimba.com" rel="noopener noreferrer"&gt;Scrimba.com&lt;/a&gt;, I started exploring other tutorials within the realm of computers, programming, etc.&lt;/p&gt;

&lt;p&gt;Before I dive too deeply into the Linux crash course I completed and how I installed Ubuntu on an external hard drive, let’s take a quick look at what Linux is and how it got started.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Linux
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Disclaimer: I am by no means an expert on Linux and its various distributions (or distros), but here’s a basic overview based on my limited experience with the OS. Please forgive if I make any errors and if you know more about Linux, feel free to correct my misunderstandings or misinterpretations. Thank you.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Linux is a family of free and open-source operating systems based on the Unix operating system. These are based on the Linux kernel first released by Linus Torvalds on September 17, 1991.&lt;/p&gt;

&lt;p&gt;There are a huge variety of Linux distributions (or distros) but the most popular include Debian, Fedora, Linux, and Ubuntu. The advantage of these operating systems is that they are open-source. This means that their source code is freely available for anyone to inspect and improve. This makes them very secure and reliable to use.&lt;/p&gt;

&lt;p&gt;You can learn more about Linux at &lt;a href="http://linux.org" rel="noopener noreferrer"&gt;linux.org&lt;/a&gt; or on &lt;a href="https://en.wikipedia.org/wiki/Linux" rel="noopener noreferrer"&gt;the Linux Wikipedia page&lt;/a&gt; (both of which were helpful to me in writing this section)&lt;/p&gt;

&lt;h2&gt;
  
  
  Taking a crash course and using Ubuntu
&lt;/h2&gt;

&lt;p&gt;During my break, one of the tutorials I stumbled across (or perhaps saved — I can’t remember) was &lt;a href="https://youtu.be/ROjZy1WbCIA" rel="noopener noreferrer"&gt;freeCodeCamp’s “Linux Operating System - Crash Course for Beginners”&lt;/a&gt; taught by &lt;a href="https://www.youtube.com/channel/UCP2bshADPrVMoNrdJvZEQzw" rel="noopener noreferrer"&gt;KeepItTechie&lt;/a&gt;. I enjoyed the course and found it very accessible. Josh (KeepItTechie) does a great job of guiding beginners through the installation and basic usage of the operating system.&lt;/p&gt;

&lt;p&gt;I will note that the installation instructions on the video did not work for me. I think it’s simply a matter of the video was record a year or so ago and the Virtual Machine software has since been updated. I found &lt;a href="https://ubuntu.com/tutorials/how-to-run-ubuntu-desktop-on-a-virtual-machine-using-virtualbox#1-overview" rel="noopener noreferrer"&gt;these instructions from Ubuntu to run desktop on a virtual machine&lt;/a&gt; very helpful.&lt;/p&gt;

&lt;p&gt;The course covers the following topics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Terminal commands&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Working with directories&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Working with files&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Working with file content&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Linux file structure&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;System information&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Networking&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Package manager&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Text editors&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Overall, it was a great introduction to Linux/Ubuntu. It helped me get some exposure to the operating system and it helped boost my confidence in using the command line interface. However, I was curious to know more about Linux and what you could do with it. So I started searching the Internet and YouTube. That’s when I discovered you could install and run Linux on a USB drive or an external hard drive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Ubuntu on an external hard drive
&lt;/h2&gt;

&lt;p&gt;One of the valuable resources I found after doing those Internet and YouTube searches was the &lt;a href="https://www.youtube.com/@SwitchedtoLinux" rel="noopener noreferrer"&gt;Switch to Linux YouTube channel&lt;/a&gt;. I found the tutorials here very helpful in getting a better understanding of the process of installing Linux to a USB flash drive or an external hard drive.&lt;/p&gt;

&lt;p&gt;First I created a bootable USB stick with Ubuntu 22.04 installed on it. This allowed me to “try out” the OS without having to do a complete install. I have MacOS so I used this &lt;a href="https://ubuntu.com/tutorials/create-a-usb-stick-on-macos#1-overview" rel="noopener noreferrer"&gt;installation tutorial for MacOS from&lt;/a&gt; &lt;a href="http://Ubuntu.com" rel="noopener noreferrer"&gt;Ubuntu.com&lt;/a&gt;, but they also have an &lt;a href="https://ubuntu.com/tutorials/create-a-usb-stick-on-windows#1-overview" rel="noopener noreferrer"&gt;installation tutorial for Windows users&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;However, having a bootable USB stick only allows you to test drive the OS or install it on a machine. I wanted to have it installed and operational on an external hard drive so that I could have persistence (more on that in this &lt;a href="https://youtu.be/aOccwpM2cRk" rel="noopener noreferrer"&gt;YouTube video by Switch to Linux&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;After doing some sleuthing on the Internet, I found this &lt;a href="https://ubuntuhandbook.org/index.php/2022/04/install-ubuntu-2204-step-by-step/" rel="noopener noreferrer"&gt;installation guide on&lt;/a&gt; &lt;a href="http://UbuntuHandbook.com" rel="noopener noreferrer"&gt;UbuntuHandbook.com&lt;/a&gt; which helped me install Ubuntu 22.04 onto an external hard drive, including how to encrypt the drive.&lt;/p&gt;

&lt;p&gt;Once I had Ubuntu installed on the hard drive, I was ready to get a deeper feel for the OS. I decided to complete my solo project, &lt;a href="https://github.com/ananfito/tindog" rel="noopener noreferrer"&gt;Tindog&lt;/a&gt;, for Module 7 of &lt;a href="http://Scrimba.com" rel="noopener noreferrer"&gt;Scrimba.com&lt;/a&gt;&lt;a href="https://scrimba.com/learn/frontend" rel="noopener noreferrer"&gt;’s Frontend Developer Career path&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Impressions
&lt;/h2&gt;

&lt;p&gt;Overall, this was a great experience and I look forward to exploring more of Ubuntu and Linux. I’ve used MacOS for close to 7 years now and Ubuntu, in terms of looks, wasn’t too dissimilar so there wasn’t a big adjustment there. I have used Windows in the past (and still use it at my place of employment) so I could see Ubuntu being a harder adjustment for a Windows user who’s not used to using different operating systems. However, I do know there are Windows-like Linux distros for Windows users looking to try Linux but don’t want too big of a change.&lt;/p&gt;

&lt;p&gt;As of right now, I’m not sure if I’m interested in going into back-end development or working with operating systems. I’m still very early in my career change, but I did appreciate that this experience of installing Ubuntu onto an external hard drive taught me a little bit about how computer drives are partitioned. I won’t claim to have a full and deep understanding of it, but I am grateful I know a little bit more than I did before this experience.&lt;/p&gt;

&lt;p&gt;I’m also grateful that I am now no longer using GitHub Desktop to manage my repositories. Instead, I am now working directly in the command line interface. I purposefully did not install GitHub Desktop onto the Ubuntu “computer” I created with the external hard drive. I have been studying how to use Git within the command line interface, but having GitHub Desktop installed on my computer made it a bit of a crutch. Why open up a terminal window and manually type commands when you can just click to update that repo on GitHub, right?&lt;/p&gt;

&lt;p&gt;Well, I wanted to put add another layer of learning to the project I was working on so I decided to use the command line interface and directly update my repo using the Git commands. This helped me gain a deeper understanding of how these commands are used and create a habit ofw using them. I have now uninstalled GitHub Desktop and use the terminal for updating my remote repos, but I will say that using GitHub Desktop as a beginner was a great stepping stone to getting where I’m at now with using the Git commands.&lt;/p&gt;

&lt;p&gt;Lastly, I like the spirit and philosophy that comes with using Linux and other open-source software. One of the key advantages of using a Linux distro is that oftentimes you can install it on older hardware and runs great.&lt;/p&gt;

&lt;p&gt;This helps bring old computers back to life and extends their usage. I like this idea because it helps reduce tech waste as well as gives me (us) an option for getting off the consumerism treadmill of always “needing” the latest and greatest device.&lt;/p&gt;

&lt;p&gt;Further, there are privacy concerns with using proprietary software such as MacOS or Windows, but I think that discussion is outside the scope of this post.&lt;/p&gt;

&lt;p&gt;Ultimately, I love the idea of being able to extend my current computer’s lifespan with a Linux distro because that means I can save the money I would have spent on a new computer for other things like life experiences (e.g., travel).&lt;/p&gt;

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

&lt;p&gt;Thanks so much for reading this post. I hope you found it helpful and enlightening.&lt;/p&gt;

&lt;p&gt;Have you tried a Linux distribution like Ubuntu before? How did you feel about it? Leave your thoughts in the comments below.&lt;/p&gt;

&lt;p&gt;Hearing your thoughts makes this more of a conversation and helps us all learn. See you next time.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Using ChatGPT as a Coding Buddy</title>
      <dc:creator>Anthony Nanfito</dc:creator>
      <pubDate>Mon, 10 Apr 2023 01:00:49 +0000</pubDate>
      <link>https://dev.to/ananfito/using-chatgpt-as-a-coding-buddy-5bg9</link>
      <guid>https://dev.to/ananfito/using-chatgpt-as-a-coding-buddy-5bg9</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;Hello, world! Welcome to another blog post for &lt;a href="https://ananfito.hashnode.dev/" rel="noopener noreferrer"&gt;Anthony’s Techie Thoughts&lt;/a&gt;! If you’re new here, my name is Anthony and I’m studying programming to make a career change from mathematics teacher to a frontend web developer. In my blog posts, I reflect on my journey and share things I’m learning along the way. You can find me on &lt;a href="https://github.com/ananfito" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://linkedin.com/in/anthonynanfito/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://hashnode.com/@ananfito" rel="noopener noreferrer"&gt;Hashnode&lt;/a&gt;, &lt;a href="http://DEV.to" rel="noopener noreferrer"&gt;DEV.to&lt;/a&gt;, and &lt;a href="https://community.codenewbie.org/ananfito" rel="noopener noreferrer"&gt;CodeNewbie&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this blog post, I’ll offer a quick reflection on my progress this week and share some thoughts on how I used ChatGPT as a coding buddy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Weekly Reflection
&lt;/h2&gt;

&lt;p&gt;This past week has been productive for me. This is mostly because I’m currently on a mid-term break from work and I have extra time I can dedicate to my studies. Which I am thoroughly enjoying. Here’s a quick list of my accomplishments this week:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Completed the solo project for Module 6 of &lt;a href="https://scrimba.com/learn/frontend" rel="noopener noreferrer"&gt;Scrimba’s Frontend Career Path&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub Link: &lt;a href="https://github.com/ananfito/learning-journal" rel="noopener noreferrer"&gt;https://github.com/ananfito/learning-journal&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Live link: &lt;a href="https://ananfito.github.io/learning-journal/" rel="noopener noreferrer"&gt;https://ananfito.github.io/learning-journal/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Started Module 7 of &lt;a href="https://scrimba.com/learn/frontend" rel="noopener noreferrer"&gt;Scrimba’s Frontend Career Path&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Published &lt;a href="https://ananfito.hashnode.dev/using-python-to-make-my-teaching-job-easier" rel="noopener noreferrer"&gt;a blog post on how I used a Python script to automate a part of my teaching job&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This might seem small, but I had written this post weeks ago and just never published it so I’m glad I got it out there.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;I played around with using ChatGPT as a coding buddy and it helped me figure out a problem I was having with the code for my Learning Journal project (more thoughts on that below)&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Using ChatGPT as a ‘coding buddy’
&lt;/h2&gt;

&lt;p&gt;On a whim, I decided to make use of ChatGPT as a ‘coding buddy’ by asking it questions when I got stuck or needed a sounding board. As a self-taught dev, this is one of the things I’ve struggled with the most. Sometimes I wish I could just tap someone on the shoulder and say, “Hey, what do I need to make this work?” Or “This is what I’m thinking for this problem. Is that the right approach?” However, this isn’t always an easy option so this week I tried something different: I asked ChatGPT.&lt;/p&gt;

&lt;p&gt;For example, I was working on a function earlier this week for my Learning Journal project where I needed it to return the first three elements of an array, but I couldn’t figure out what method I needed to use. Initially, I thought I could use the &lt;code&gt;.filter()&lt;/code&gt; method, but further down you’ll see how ChatGPT corrected me on that idea. First I asked it, “How do I write a function in JavaScript to return the first 3 items in an array?” Here is the response I received:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgk6uadm2g04vtsco8ccm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgk6uadm2g04vtsco8ccm.png" alt="Image of chat conversation with ChatGPT. QUERY: write a function in javascript that will return the first three elements from an array.  RESPONSE: You can write a function in JavaScript that returns the first three elements from an array using the slice() method. Here's an example:  javascript  function getFirstThreeElements(arr) {   return arr.slice(0, 3); }  This function takes an array arr as an argument and returns a new array containing the first three elements of arr.  Here's an example of how to use this function:  javascript  const myArray = [1, 2, 3, 4, 5, 6]; const firstThreeElements = getFirstThreeElements(myArray); console.log(firstThreeElements); // Output: [1, 2, 3]  In this example, the getFirstThreeElements() function is called with the myArray array as an argument. The function returns a new array containing the first three elements of myArray, which are then printed to the console." width="713" height="646"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I asked my ‘coding buddy’ this question the first thing it mentions is the &lt;code&gt;.slice()&lt;/code&gt; method and I was like, “Oh! duh! Of course, why didn’t I think of that?” As requested, it did write an entire function for returning the first 3 elements of an array, but I didn’t need the entire function. I just needed that little hint to use &lt;code&gt;.slice()&lt;/code&gt; instead of &lt;code&gt;.filter()&lt;/code&gt;. When I asked it if I could use the &lt;code&gt;.filter()&lt;/code&gt; method it explained why it wasn’t possible and why I should use the &lt;code&gt;.slice()&lt;/code&gt; method instead:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu3qnj4ng6wfcrssq09kg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu3qnj4ng6wfcrssq09kg.png" alt="Image of chat conversation with ChatGPT. QUERY: Is it possible to write return the first three elements of an array using the filter() method in JavaScript?  RESPONSE: The filter() method in JavaScript is not suitable for returning the first three elements of an array because it is designed to filter an array based on some condition and returns a new array containing only the elements that pass that condition. It does not provide a way to select a specific number of elements from the beginning of an array.  Instead, you can use the slice() method to return the first three elements of an array, as shown in the previous example:  javascript  function getFirstThreeElements(arr) {   return arr.slice(0, 3); }  const myArray = [1, 2, 3, 4, 5, 6]; const firstThreeElements = getFirstThreeElements(myArray); console.log(firstThreeElements); // Output: [1, 2, 3]  The slice() method can be used to select a range of elements from an array, starting from the first element and ending at the specified index. In this example, we used slice(0, 3) to select the first three elements of the myArray array." width="713" height="646"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(NOTE: While writing this blog post, I noticed that my initial question here has a typo in the first part of the question. I’m not sure why my brain decided to write “Is it possible to write return …” but ChatGPT seems to have correctly interpreted this to mean “Is it possible to write a function that returns the first …” This is interesting, but could also just be a random occurrence. In the big picture, I’m not sure if ChatGPT is always good at interpreting human miscommunication.)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This second explanation helped me realize the error in my initial approach and redirect toward a solution that worked. Of course, this is information could have obtained from someone in a Discord community, a forum, or even through reading through webpages and documentation, but those come with a longer time commitment. Here, in a few minutes, I got some advice on the direction I needed to go as well as some examples to reference. In fact, in this case, I just needed a nudge in the right direction. As a self-taught dev, this is particularly useful because I can’t just lean over to the next cubicle and ask a coworker quick questions like these. But, for now, I can ask ChatGPT and it (might) give me an answer to ‘nudge’ me in the right direction.&lt;/p&gt;

&lt;h3&gt;
  
  
  Closing thoughts on ChatGPT
&lt;/h3&gt;

&lt;p&gt;As impressive as it ChatGPT is (and other AI software like it), we’ve already seen examples of where it will hallucinate and present incorrect information. With that in mind, I do &lt;strong&gt;not&lt;/strong&gt; think it is a good idea to ask it to do a specific task for you.&lt;/p&gt;

&lt;p&gt;For example, I’m sure I could have given it more information and context about how and why I needed a function to return the first three elements of an array, but that would have defeated the purpose of studying. To me, that is the equivalent of having someone else do your work for you. Which doesn’t help you become a better developer.&lt;/p&gt;

&lt;p&gt;I tell my students, “the person who holds the pencil learns the math.” Meaning, the person who is sitting there going through the steps (and perhaps struggling a bit) to solve the problem is the one who will learn and remember it. In this case, the person who types on the keyboard learns to code.&lt;/p&gt;

&lt;p&gt;All that said, I do think this could become another tool within our developer toolbox. We have a plethora of resources already at our deposal: freeCodeCamp, Stackoverflow, W3 Schools, YouTube, Discord Communities, and more! This is an addition to that and perhaps it might fill in some gaps that the others don’t provide or don’t meet the needs of the learner. I think this is how I’ll use it moving forward (and continue to use it as long as it proves useful). It’s one tool in a vast toolbox of tools to help me learn how to code and get better at achieving my goal of making a career switch.&lt;/p&gt;

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

&lt;p&gt;Thanks so much for reading this post. Have you used ChatGPT in your studies? If so, how have you been using it? Has it been helpful? Leave your thoughts in the comments below. Hearing your thoughts makes this more of a conversation and helps everyone learn.&lt;/p&gt;

</description>
      <category>chatgpt</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Using Python to Make my Teaching Job Easier</title>
      <dc:creator>Anthony Nanfito</dc:creator>
      <pubDate>Thu, 06 Apr 2023 06:27:29 +0000</pubDate>
      <link>https://dev.to/ananfito/using-python-to-make-my-teaching-job-easier-313o</link>
      <guid>https://dev.to/ananfito/using-python-to-make-my-teaching-job-easier-313o</guid>
      <description>&lt;h2&gt;
  
  
  How I used a Python script to create individual grade reports for my students
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Intro
&lt;/h3&gt;

&lt;p&gt;Hello and welcome to another blog post for &lt;a href="https://ananfito.hashnode.dev/" rel="noopener noreferrer"&gt;Anthony’s Techie Thoughts&lt;/a&gt;! It's been a few months since my last post, but I've kept busy studying and progressing toward my goal of making a career transition from mathematics teacher to front-end web developer. If you're new here, in my blog posts I reflect on my journey and share things I'm learning along the way. You can find me &lt;a href="https://github.com/ananfito" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://hashnode.com/@ananfito" rel="noopener noreferrer"&gt;Hashnode&lt;/a&gt;, &lt;a href="http://DEV.to" rel="noopener noreferrer"&gt;DEV.to&lt;/a&gt;, and &lt;a href="https://community.codenewbie.org/ananfito" rel="noopener noreferrer"&gt;CodeNewbie&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this blog post, I want to share how I used a Python script to make my day job a little easier. Specifically, I used the script to create individual .CSV files with students' assignments and grades. Throughout the post, I will share snippets of the code, but if you'd like to see the script in its entirety, you can view it in &lt;a href="https://github.com/ananfito/splitter" rel="noopener noreferrer"&gt;this GitHub repo&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem
&lt;/h3&gt;

&lt;p&gt;At the school I work at we use an online database management software to manage things such as attendance, grades, etc. For the most part, it gets the job done but there’s one feature (a vital one in my opinion) that’s missing: the ability to generate individualized reports for students. Having the ability to do this helps solve two problems:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Answering the question “What’s my grade?”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improving student’s ability to complete missing assignments&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In my experience, when students can receive regular updates on their progress their overall learning and understanding of the content improve. However, the software we currently use does not provide this feature (or at least I haven’t been able to find it). The result is that come progress reports or end-of-semester reports students (and parents) are sometimes surprised about what their overall grade is.&lt;/p&gt;

&lt;p&gt;To avoid this shock and surprise at report time I put in the effort to export my grade book as an Excel spreadsheet, then import it into Google Sheets (we use Google’s Education tools at my school), and then create a separate Google Sheet for each student which is then shared to that student’s individual school email account.&lt;/p&gt;

&lt;p&gt;This process is both tedious, repetitive, and time-consuming. In particular, it was something that a computer could do and give me back time that could be spent doing more productive things like planning lessons, helping struggling students (before they receive their final grade report and it’s too late), or simply just spending less time staring at a screen. So I sent out on a quest to find out how to automate this process with a Python script.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Python Script Solution
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Exporting the Spreadsheet
&lt;/h4&gt;

&lt;p&gt;The first thing I needed to do was to export the grade book as an Excel spreadsheet and do some data cleaning. In particular, I needed to remove duplicate columns and unnecessary rows. Then save the document as a CSV.&lt;/p&gt;

&lt;p&gt;This part took some trial and error. At first, I attempted to use the &lt;code&gt;.read_excel()&lt;/code&gt; method from the Pandas library directly on the exported Excel file, but the way the grade book software exports the Excel file made it unreadable using this method. As such, it was easier to modify the file and export it as a CSV file. Then use the &lt;code&gt;.read_csv()&lt;/code&gt; pandas method.&lt;/p&gt;

&lt;h4&gt;
  
  
  Importing pandas and creating a dataframe
&lt;/h4&gt;

&lt;p&gt;Once I had the properly cleaned and formatted CSV file it was time to import the Pandas library and create a dataframe:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data.csv&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once I had the dataframe set up the next part was to set up a loop to iterate through the rows in the dataframe and then save them as an individual CSV file. In this case, each row of the dataframe represents a student and their corresponding assignment grades.&lt;/p&gt;

&lt;p&gt;This is the first time I have worked with Python in while — for the past few months I’ve been studying JavaScript. So in my first attempt to write the &lt;code&gt;for&lt;/code&gt; loop it didn’t work out because &lt;code&gt;for&lt;/code&gt; loops are used differently in Python than in JavaScript. Instead, in Python, I had to make use of the &lt;code&gt;while&lt;/code&gt; loop. Here’s a quick tangent on the difference between a &lt;code&gt;for&lt;/code&gt; loop and a &lt;code&gt;while&lt;/code&gt; loop in Python.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;for&lt;/code&gt; vs. &lt;code&gt;while&lt;/code&gt; loop in Python
&lt;/h4&gt;

&lt;p&gt;In Python, &lt;a href="https://www.w3schools.com/python/python_for_loops.asp" rel="noopener noreferrer"&gt;“a &lt;code&gt;for&lt;/code&gt; loop is used for iterating over a sequence (that is either a list, a tuple, a dictionary, a set, or a string)”&lt;/a&gt;. In other words, it won’t work for iterating over the dataframe so instead,n I had to make use of &lt;a href="https://www.w3schools.com/python/python_while_loops.asp" rel="noopener noreferrer"&gt;a &lt;code&gt;while&lt;/code&gt; loop&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# separates rows of data frame into individual CSV files
&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# isolate each row of data and save it as CSV based on the Name
&lt;/span&gt;    &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;to_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;today&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;_&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.csv&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
    &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here the loop goes through each row in the dataframe and then saves that row as it’s own CSV file which includes the current date (more on that in the next section) and the student’s name.&lt;/p&gt;

&lt;h4&gt;
  
  
  Importing &lt;code&gt;date&lt;/code&gt; from &lt;code&gt;datetime&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;Initially, when I saved the split files I had manually typed in the current date as part of the file’s name, but then I realized that the whole point of writing this script was to be able to automate the process and having to type in the current date each time I used the script kind of defeated the overall purpose.&lt;/p&gt;

&lt;p&gt;So instead I figured out how to import the current date and have it written into the file name automatically using the following set of code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;
&lt;span class="n"&gt;today&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;today&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the variable &lt;code&gt;today&lt;/code&gt; can be used within the naming scheme for the file name inside the &lt;code&gt;while&lt;/code&gt; loop (see the previous snippet above).&lt;/p&gt;

&lt;h4&gt;
  
  
  Sharing the files
&lt;/h4&gt;

&lt;p&gt;Once I had the files created the next step was to upload them to Google Drive and share them with the students. This part I had to do this manually but I suspect there is a way to automate it which leads me to the ideas for improving the script.&lt;/p&gt;

&lt;h3&gt;
  
  
  Features to Add
&lt;/h3&gt;

&lt;p&gt;Here’s the short list I’ve come up with for features to add to the script:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Export as a PDF instead of a CSV&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;My students are familiar with using Google Sheets to read CSV files, but I can envision use cases where it might help to have a PDF version instead. Maybe even have the ability for the user to choose.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Highlight only missing assignments&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is another feature that’s missing from the grade book software the school uses. There’s no way to run a report of just the missing assignments. This is something I’ve found valuable in the past because it acts as a checklist for students on what work they need to complete and improve their grades. (Assuming the student’s low grade is due to lack of completed assignments and not conceptual misunderstandings)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Email students directly&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I had to do this part manually, but I know it’s possible to use Gmail’s API to send emails via a Python script so this would something I would like to add because it would cut out the steps of uploading the files to Google Drive and sharing them with each student.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Continue working on seeing if I can work directly from the exported Excel spreadsheet&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;As stated previously, I initially tried to read the Excel file and convert it to a dataframe but struggled with getting it to work. This is something I’d like to possibly explore because it would eliminate another step in the process. This would especially be useful if I could also automate the data cleaning step of removing the unneeded rows and columns that come with the exported spreadsheet.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;These are a few of the ideas I have for improving the script. However, at a certain point, this begins to develop into a full-fledged database management software system — something the school is already paying for even though it lacks, in my opinion, some critical and helpful features.&lt;/p&gt;

&lt;p&gt;For now, I’m happy with my simple script because it saves me time and I was able to put into practice my programming skills in a real-world setting. Python completed this task in seconds whereas it took me over than hour to manually separate each spreadsheet row and save them to an individual file that could be shared with 80+ students.&lt;/p&gt;

&lt;h4&gt;
  
  
  Resources
&lt;/h4&gt;

&lt;p&gt;Along with copious amounts of Internet searching, I found the following resources useful in learning how to create this script:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Automate with Python (Beginner’s Course): &lt;a href="https://youtu.be/PXMJ6FS7llk" rel="noopener noreferrer"&gt;https://youtu.be/PXMJ6FS7llk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Automate the Boring Stuff: &lt;a href="https://automatetheboringstuff.com/" rel="noopener noreferrer"&gt;https://automatetheboringstuff.com/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Thanks so much for reading this post. I hope you found it useful.&lt;/p&gt;

&lt;p&gt;How do you use automation to save yourself time? Share your thoughts in the comments. Hearing your thoughts makes this more of a conversation and helps us all learn.&lt;/p&gt;

&lt;p&gt;Thanks for stopping by and happy coding!&lt;/p&gt;

</description>
      <category>python</category>
      <category>beginners</category>
      <category>programming</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>MathemaQuizzo: My First Web App</title>
      <dc:creator>Anthony Nanfito</dc:creator>
      <pubDate>Wed, 14 Dec 2022 09:46:15 +0000</pubDate>
      <link>https://dev.to/ananfito/mathemaquizzo-my-first-web-app-3ck7</link>
      <guid>https://dev.to/ananfito/mathemaquizzo-my-first-web-app-3ck7</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;Hello, world! Welcome to another blog post for &lt;a href="https://ananfito.hashnode.dev" rel="noopener noreferrer"&gt;Anthony’s Techie Thoughts&lt;/a&gt;! If you’re new here, my name is Anthony and I’m studying programming to make a career change from mathematics teacher to a frontend web developer. In my blog posts, I reflect on my journey and share things I’m learning along the way. You can find me on &lt;a href="https://github.com/ananfito" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://linkedin.com/in/anthonynanfito/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://hashnode.com/@ananfito" rel="noopener noreferrer"&gt;Hashnode&lt;/a&gt;, &lt;a href="https://dev.to/ananfito"&gt;DEV.to&lt;/a&gt;, and &lt;a href="https://community.codenewbie.org/ananfito" rel="noopener noreferrer"&gt;CodeNewbie&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This will likely be my final post of 2022 and while I'm only reflecting on my coding journey of the past week it also represents the progress I've made in the past six (and indeed the last twelve) months. If you had told me in July (before I even learned any javascript) that I would be creating a web app from scratch by the end of the year, I would have thought you were crazy. But that's exactly what I did this past week.&lt;/p&gt;

&lt;p&gt;In this post I'll share my reflections on the app I created, some general reflections about my coding journey thus far, and my goals for next year.&lt;/p&gt;

&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;I started studying javascript back in August of this year. It has been a rollercoaster of a journey with lots of ups and downs. There have been plenty of frustrating moments where I felt like giving up. However, I'm grateful I did not give up because I wouldn't have gotten to where I am now.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it started
&lt;/h3&gt;

&lt;p&gt;My day job is working as a middle school mathematics teacher and right now we're nearing the end of our first semester. Grades are finalized and submitted but there are still a few weeks left in the semester. At times like these, I like to step away from the textbook, the curriculum, and other resources and have my students work independently on creating something of their own. This time I chose to assign a self-study project where students are to create their own mathematically-themed game. It must have at least three levels and have two math problems to solve per level. Some students are choosing to create a video game of sorts while others are opting to create a tabletop game. Students are working in groups to compete for the best game and win a prize.&lt;/p&gt;

&lt;p&gt;At first, I hadn't planned on creating something myself and I hadn't thought about it all until a student asked me what I would be making for the project (usually I like to create something alongside my students). My initial response was "nothing" but after giving it some thought I decided to this would be a good opportunity to put my javascript skills to the test and create some sort of web application. And that's how the idea of MathemaQuizzo was born.&lt;/p&gt;

&lt;h2&gt;
  
  
  MathemaQuizzo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8y7neuea8686v9jhzm42.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8y7neuea8686v9jhzm42.png" alt="screenshot of the app with the title " start="" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The app I created isn't revolutionary or ground-breaking in any way. Compared to most other web applications on the Internet it's quite simple. But it's something I made entirely on my own. And that's what makes it a truly exciting and proud moment for me. It represents the act of persevering and, perhaps most importantly, it gives me the courage and confidence to keep going.&lt;/p&gt;

&lt;p&gt;Given that my skills are still at a novice level, I knew that I wasn't going to build a mega-game app like Angry Birds or Candy Crush. So I settled on creating a simple quiz-like app that met the same requirements as the project I assigned to my students. And like any great millennial entrepreneur, I gave it the name "MathemaQuizzo" because it sounded cool and it had double letters.&lt;/p&gt;

&lt;h3&gt;
  
  
  My process
&lt;/h3&gt;

&lt;p&gt;I started with a basic HTML layout on a single page with some simple CSS styling. The elements are centered on the page with buttons to activate/render the game and provide interactivity during gameplay. After finalizing the layout and styles, I started working on the javascript for the app's functionality. I knew I needed to have the app have a 'start game' button, as well as the ability to move on to the next question, receive a hint (if needed), and keep track of points for correct answers, incorrect answers, and hints. This is the part where I was surprised at how much of my learning I was able to produce. Most of the functions for these buttons I completed on my own, however, there were a few times when I needed to consult the MDN documentation or a previously made app for reference.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tribulations
&lt;/h3&gt;

&lt;p&gt;Most of my points of struggle came with the CSS styling. This is a skill I'm continuing to develop, but thanks to the coursework by &lt;a href="https://courses.kevinpowell.co" rel="noopener noreferrer"&gt;Kevin Powell&lt;/a&gt; and &lt;a href="https://scrimba.com/" rel="noopener noreferrer"&gt;Scrimba&lt;/a&gt;, I am getting better at this. In particular, it mostly came down to knowing how to space things out on the page so that it's visible and responsive. As for the javascript, most of this felt like I was testing my knowledge and seeing if all that time I spent studying paid off. Which, thankfully, it did because writing most of the functions for this was not only doable but relatively easy for me. Plus, it helped me to practice these concepts in a lifelike setting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Feedback
&lt;/h3&gt;

&lt;p&gt;The repo and live links for this project can be found below. I am open to hearing thoughts and constructive criticism. I built this entirely on my own so I'm sure there's some room for improvement. If you'd like to share your thoughts, feel free to reach out to me via the &lt;a href="https://github.com/ananfito/mathemaquizzo/issues" rel="noopener noreferrer"&gt;GitHub Issues&lt;/a&gt; for the project, &lt;a href="https://www.linkedin.com/in/anthonynanfito" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, or &lt;a href="https://anthonynanfito.com/contact/" rel="noopener noreferrer"&gt;Email&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Repo: &lt;a href="https://github.com/ananfito/mathemaquizzo/" rel="noopener noreferrer"&gt;https://github.com/ananfito/mathemaquizzo/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Live Version: &lt;a href="https://ananfito.github.io/mathemaquizzo/" rel="noopener noreferrer"&gt;https://ananfito.github.io/mathemaquizzo/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Looking Ahead
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The next app
&lt;/h3&gt;

&lt;p&gt;I've already started working on a similar app, currently called &lt;a href="https://github.com/ananfito/mathapalooza" rel="noopener noreferrer"&gt;Mathapalooza 2000&lt;/a&gt;, that provides the user with random questions instead of progressing through a series of levels. So far this is proving to be a bit more challenging but I'm enjoying it because it's pushing me to grow my skills. In particular, I'm still trying to figure out how to generate a series of random numbers and not have them repeat. I've got a few ideas I haven't tested yet, but once I'm back in study mode I'll be ready to test them out. More on that in a future blog post.&lt;/p&gt;

&lt;h3&gt;
  
  
  What to study next
&lt;/h3&gt;

&lt;p&gt;Now that I'm feeling more confident about my javascript skills I think I'm ready to start learning some frameworks and libraries. When I started this &lt;a href="https://ananfito.hashnode.dev/day-100-lessons-learned-from-100daysofcode" rel="noopener noreferrer"&gt;second round of the #100DaysOfCode challenge&lt;/a&gt;, I wanted to focus more on the vanilla javascript but now I'm feeling ready for some more powerful tools. This is exciting because it means I will be able to do and create more sophisticated applications and websites, but also because it means I will be more job-ready.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting job-ready
&lt;/h3&gt;

&lt;p&gt;Since this is a reflection post and my last post of 2022, I can't help be think about what my goals will be for 2023. I'm very proud of the progress I've made these past six months, but there's still more work to be done. Specifically, I want to start getting ready for the job application process. My current teaching contract ends in June and I'd like to have a frontend web developer job lined up at that time to make my career switch.&lt;/p&gt;

&lt;p&gt;This means getting my profiles on GitHub and LinkedIn polished up and adding more projects to my portfolio. It also means preparing for the infamous tech interviews. After the new year, I plan to start dedicating some of my study time to these efforts. Based on what I've already researched about the job application process (and the job market) it will likely take anywhere from three to six months to find a job. This means I can't start looking in June when my teaching contract ends, but sooner than that.&lt;/p&gt;

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

&lt;p&gt;Thanks so much for ready this post. I hope you found it useful or inspiring.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's one goal you have for yourself in 2023?&lt;/strong&gt; Share what you want to achieve in the comments. Hearing your thoughts makes this more of a conversation and I can't wait to hear what you're goals are for 2023. Happy coding!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Responsive Web Design with 3 Lines of CSS</title>
      <dc:creator>Anthony Nanfito</dc:creator>
      <pubDate>Mon, 05 Dec 2022 07:59:02 +0000</pubDate>
      <link>https://dev.to/ananfito/responsive-web-design-with-3-lines-of-css-51k5</link>
      <guid>https://dev.to/ananfito/responsive-web-design-with-3-lines-of-css-51k5</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;Hello world! Welcome to another blog post for &lt;a href="https://ananfito.hashnode.dev/" rel="noopener noreferrer"&gt;Anthony’s Techie Thoughts&lt;/a&gt;! If you’re new here, my name is Anthony and I’m studying programming to make a career change from mathematics teacher to frontend web developer. In my blog posts I reflect on my journey and share things I’m learning along the way. You can find me on &lt;a href="https://github.com/ananfito" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://linkedin.com/in/anthonynanfito/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://hashnode.com/@ananfito" rel="noopener noreferrer"&gt;Hashnode&lt;/a&gt;, &lt;a href="https://dev.to/ananfito"&gt;DEV.to&lt;/a&gt;, and &lt;a href="https://community.codenewbie.org/ananfito" rel="noopener noreferrer"&gt;CodeNewbie&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;This week I continued working my way through the curriculum on &lt;a href="http://Scrimba.com" rel="noopener noreferrer"&gt;Scrimba.com&lt;/a&gt;, &lt;a href="https://sololearn.com/" rel="noopener noreferrer"&gt;Sololearn.com&lt;/a&gt;, and &lt;a href="https://courses.kevinpowell.co/conquering-responsive-layouts" rel="noopener noreferrer"&gt;Kevin Powell’s ‘Conquering Responsive Layouts’ course&lt;/a&gt;.  In this blog post I’ll share the 3 lines of CSS I learned to keep page elements centered and responsive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Weekly Reflection
&lt;/h2&gt;

&lt;p&gt;My progress was slow and steady this week due to some extra responsibilities at work. I would have liked to had made more progress, especially with the ideas I’m learning in Kevin’s course, but sometimes life gets in the way and you just gotta roll with it. Throughout this week one idea from Kevin Powell’s course has stuck with me: using &lt;code&gt;width&lt;/code&gt;, &lt;code&gt;max-width&lt;/code&gt;, and &lt;code&gt;margin&lt;/code&gt; to center elements on a page. &lt;/p&gt;

&lt;p&gt;His approach is simple and uses a minimal amount of code. This is something I (as a novice) can appreciate because it lessens the burden of entry to building responsive websites. For example, the following is the minimal amount of CSS code needed to center a &lt;code&gt;container&lt;/code&gt; on a page, ensure that it fills 80% of the body width, and sets a limit on how wide it will stretch (this is particularly helpful for really wide screens, the text when spread all the way across):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1100px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;max-width&lt;/code&gt; property will change depending on what is in the container and the design of the page — as could the &lt;code&gt;width: 80%&lt;/code&gt; if you didn’t want it to fill 80% of the page’s width — but these are the core properties needed to center the &lt;code&gt;.container&lt;/code&gt; on the page. As an example, this CodePen features &lt;a href="https://codepen.io/ananfito/full/KKebpZz" rel="noopener noreferrer"&gt;my solution to a challenge from Kevin Powell’s course&lt;/a&gt; that makes use of this idea in practice. The goal is to create a responsive webpage that uses flexbox to create columns and rows of content while implementing these 3 lines of CSS to keep the elements centered and responsive. &lt;/p&gt;

&lt;p&gt;Previously, I had been using any and all properties to get things to center on the page (e.g., height, width, display, etc.) — most of it unnecessary. With these three lines of code things are centered and responsive. Granted, this isn’t the end of the line but the start. There may be more styling properties required based on the design specifications of the page, but this comes later and in other places. &lt;/p&gt;

&lt;p&gt;I’ve only completed up to Day 9 of his 21-day course, but ideas such as this one have already triggered thoughts like, “oh, that would’ve been helpful for project X, instead of using &lt;em&gt;gliff&lt;/em&gt;, &lt;em&gt;glaff&lt;/em&gt;, and &lt;em&gt;gluff&lt;/em&gt; to do the same thing”. But this is the nature of learning. You crawl (and stumble) before you learn to walk and run. After I’m done with his course, I’d like to go back to previous Frontend Mentor projects and apply what I’ve learned (and, of course, carry these ideas into new projects).&lt;/p&gt;

&lt;h2&gt;
  
  
  Projects from the Week
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Scrimba Project

&lt;ul&gt;
&lt;li&gt;Basic Blackjack App

&lt;ul&gt;
&lt;li&gt;Repo: &lt;a href="https://github.com/ananfito/basic-blackjack" rel="noopener noreferrer"&gt;https://github.com/ananfito/basic-blackjack&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Live: &lt;a href="https://ananfito.github.io/basic-blackjack/" rel="noopener noreferrer"&gt;https://ananfito.github.io/basic-blackjack/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

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

&lt;p&gt;Thanks so much for reading this post. I hope you found it useful and inspiring. What’s a big idea you learned this week that’s stuck with you? Feel free to share your thoughts in the comments below. Hearing your thoughts makes this more of a conversation and helps everyone learn.&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>I’ve Been Designing Websites All Wrong</title>
      <dc:creator>Anthony Nanfito</dc:creator>
      <pubDate>Sun, 27 Nov 2022 08:32:21 +0000</pubDate>
      <link>https://dev.to/ananfito/ive-been-designing-websites-all-wrong-e2i</link>
      <guid>https://dev.to/ananfito/ive-been-designing-websites-all-wrong-e2i</guid>
      <description>&lt;h2&gt;
  
  
  &lt;em&gt;How Kevin Powell’s mobile-first mindset is changing my approach to web dev&lt;/em&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;Hello world! Welcome to another blog post for &lt;a href="https://ananfito.hashnode.dev/" rel="noopener noreferrer"&gt;Anthony’s Techie Thoughts&lt;/a&gt;! If you’re new here, my name is Anthony and I’m studying programming to make a career change from mathematics teacher to frontend web developer. In my blog posts I reflect on my journey and share things I’m learning along the way. You can find me on &lt;a href="https://github.com/ananfito" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://linkedin.com/in/anthonynanfito/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://hashnode.com/@ananfito" rel="noopener noreferrer"&gt;Hashnode&lt;/a&gt;, &lt;a href="https://dev.to/ananfito"&gt;DEV.to&lt;/a&gt;, and &lt;a href="https://community.codenewbie.org/ananfito" rel="noopener noreferrer"&gt;CodeNewbie&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;This week I continued to review the fundamentals of JavaScript via Sololearn and Scrimba, but my biggest triumph was starting &lt;a href="https://courses.kevinpowell.co/conquering-responsive-layouts" rel="noopener noreferrer"&gt;Kevin Powell’s course “Conquering Responsive Layouts"&lt;/a&gt;. In this blog post I share my initial thoughts on his course and how his mobile-first mindset to web development is changing my approach to creating websites.&lt;/p&gt;

&lt;h2&gt;
  
  
  Weekly Reflection
&lt;/h2&gt;

&lt;p&gt;On Tuesday of this week I completed &lt;a href="https://www.frontendmentor.io/solutions/responsive-product-preview-card-using-css-grid-VHa9lno4Au" rel="noopener noreferrer"&gt;the Frontend Mentor challenge “Product Preview Card”&lt;/a&gt;. While I’m happy I was able to complete the challenge and meet the project specifications, I definitely took the “long way” to get there. And based on the (amazing) feedback I got from users on Frontend Mentor there’s definitely a lot of room for improvement. In particular, my approach to the challenge used a lot of extra (and unnecessary) code to get the project to meet the specifications.&lt;/p&gt;

&lt;p&gt;At first, all of the feedback was initially overwhelming but once I sorted through it I found the most useful suggestion to be exploring &lt;a href="https://www.youtube.com/@KevinPowell" rel="noopener noreferrer"&gt;Kevin Powell’s YouTube Channel&lt;/a&gt;. Kevin is CSS guru and takes a mobile-first mindset to his web development. My exploration of some of the videos on his channel led me to his (free) 21-day course &lt;a href="https://courses.kevinpowell.co/conquering-responsive-layouts" rel="noopener noreferrer"&gt;“Conquering Responsive Layouts”&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;In the course he teaches you how to use his mobile-first mindset by leveraging HTML and CSS to your advantage without having to add countless media queries. So far I’m &lt;strong&gt;&lt;em&gt;really&lt;/em&gt;&lt;/strong&gt; enjoying his course. The first few videos have been an eye opener on responsive web design and I’m starting to see the advantages of the mobile-first design mindset he espouses. &lt;/p&gt;

&lt;p&gt;Kevin argues (and I agree) that instead of starting with the desktop version of the site it’s better to start with the mobile version first and use CSS to your advantage when you want to make it responsive. I’m surprised (and happy) to learn things like removing the &lt;code&gt;height&lt;/code&gt; property and using units like &lt;code&gt;em&lt;/code&gt; and &lt;code&gt;rem&lt;/code&gt; make this really easy to do. &lt;/p&gt;

&lt;p&gt;This works because HTML is already responsive by default and we (developers) can often easily mess it up by adding in extra and unnecessary CSS properties to make it “mobile-friendly”. It’s better to start with the mobile design &lt;strong&gt;&lt;em&gt;first&lt;/em&gt;&lt;/strong&gt; then build outward to the desktop version of the site. As opposed to layering on media query after media query to making your site mobile friendly for all the various mobile devices out there.&lt;/p&gt;

&lt;p&gt;I’m eager to learn more, but I also like his “drip” style of pacing for this course. He has designed the course so that you only have access to the lessons on a specified date. That is, you can only access Day 2 Lessons on Day 2, not before. This is different from the typical “binge” approach that other courses (and tutorials) usually take — which some students might prefer — but having a day (or two) between lessons is definitely beneficial for processing the information. It’s important to absorb the information and give yourself time to process it.&lt;/p&gt;

&lt;p&gt;I still have 19 more days of the course to complete before I finish, but I already have some ideas for how I could improve my solution to &lt;a href="https://www.frontendmentor.io/solutions/responsive-product-preview-card-using-css-grid-VHa9lno4Au" rel="noopener noreferrer"&gt;the Frontend Mentor challenge “Product Preview Card”&lt;/a&gt;. I’m eager to implement these ideas but mindful that I need to wait until I’ve had some time to fully “digest” the ideas from the course. &lt;/p&gt;

&lt;p&gt;Looking ahead to next week, I plan to continue my studies and following my even/odd day approach (even days for HTML/CSS and odd days for JS). Like Kevin’s course, I find having some time between concepts helps me think about them more deeply. &lt;/p&gt;

&lt;h2&gt;
  
  
  Projects from the Week
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Scrimba Solo Projects

&lt;ul&gt;
&lt;li&gt;Personal website: &lt;a href="https://startling-starlight-cc84f0.netlify.app/" rel="noopener noreferrer"&gt;https://startling-starlight-cc84f0.netlify.app/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Basketball Scoreboard: &lt;a href="https://github.com/ananfito/basketball-scoreboard" rel="noopener noreferrer"&gt;https://github.com/ananfito/basketball-scoreboard&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Frontend Mentor Challenges

&lt;ul&gt;
&lt;li&gt;Product Preview Card: &lt;a href="https://github.com/ananfito/product-preview-card" rel="noopener noreferrer"&gt;https://github.com/ananfito/product-preview-card&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

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

&lt;p&gt;Thanks so much for reading this post. If you found it helpful or have a suggestion for something I can improve upon, please let me know in the comments below. Hearing your thoughts makes this more of a conversation and helps everyone learn.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>100daysofcode</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>R2D6: Sololearn, Scrimba, and Frontend Mentor</title>
      <dc:creator>Anthony Nanfito</dc:creator>
      <pubDate>Sun, 20 Nov 2022 10:07:06 +0000</pubDate>
      <link>https://dev.to/ananfito/r2d6-sololearn-scrimba-and-frontend-mentor-1jf6</link>
      <guid>https://dev.to/ananfito/r2d6-sololearn-scrimba-and-frontend-mentor-1jf6</guid>
      <description>&lt;h2&gt;
  
  
  &lt;em&gt;How these resources are making me a better dev&lt;/em&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;Hello and welcome to another blog post for &lt;a href="https://ananfito.hashnode.dev/" rel="noopener noreferrer"&gt;Anthony’s Techie Thoughts&lt;/a&gt;! If you’re new here, my name is Anthony and I’m studying programming to make a career change from mathematics teacher to frontend web developer. In my blog posts I reflect on my journey and share things I’m learning along the way. You can find me on &lt;a href="https://github.com/ananfito" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://hashnode.com/@ananfito" rel="noopener noreferrer"&gt;Hashnode&lt;/a&gt;, &lt;a href="https://dev.to/ananfito"&gt;DEV.to&lt;/a&gt;, and &lt;a href="https://community.codenewbie.org/ananfito" rel="noopener noreferrer"&gt;CodeNewbie&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;This week, on Tuesday November 15, I started my second round of the #100DaysOfCode challenge. In this blog post, I’ll share my reflection on my progress including my dailyDevLog with notes reflections, references, and links to my work. Thanks for stopping by and happy coding!&lt;/p&gt;

&lt;h2&gt;
  
  
  Weekly Reflection
&lt;/h2&gt;

&lt;p&gt;I’m five days into the second round of the #100DaysOfCode challenge. I wrote about &lt;a href="https://ananfito.hashnode.dev/day-100-lessons-learned-from-100daysofcode" rel="noopener noreferrer"&gt;my reflections after the first challenge&lt;/a&gt; and I’m looking forward to another 100 days of learning. This week has been a very productive week. I found two fantastic resources (&lt;a href="https://www.sololearn.com/profile/27548051" rel="noopener noreferrer"&gt;Sololearn&lt;/a&gt; and &lt;a href="https://scrimba.com/" rel="noopener noreferrer"&gt;Scrimba&lt;/a&gt;) to continue to improve my JavaScript coding skills. &lt;/p&gt;

&lt;p&gt;I’ve been enjoying the quick, short lessons on Sololearn to review JS concepts, especially since I can practice both on the computer and on my phone. This is really useful when I’m at work and only have 15-30 minutes to time to study. It’s perfect for squeezing micro lessons. &lt;/p&gt;

&lt;p&gt;I’ve fallen in love with how Scrimba uses scrims to teach and engage learners. If you haven’t checked it out, I recommend it. It’s worth looking into. I really love how you can pause the video and interact directly with the code that’s being discussed in the video without having to clone a repository or switch to a code editor. This makes learning more efficient and practical — it’s really great learn the concepts but be able to practice before seeing a solution.&lt;/p&gt;

&lt;p&gt;I’m currently working my way through the Frontend Developer Career Path (which is part of the Pro subscription package) with the end goal of being hirable upon completion. Hopefully, I’ll be done with the program by May 2023 (if not, sooner) and ready to start looking for jobs. I also really like how Scrimba charges in 6-month increments with the mindset that six months you’ll be job-ready. This is both motivating to me and flexible for my finances. &lt;/p&gt;

&lt;p&gt;I’m still working on finalizing the &lt;a href="https://github.com/ananfito/frontend-mentor/tree/main/product-preview-card" rel="noopener noreferrer"&gt;“product preview card” for the Frontend Mentor Challenge&lt;/a&gt;. This has been another excellent resource for both putting my skills into action and reviewing concepts like HTML and CSS which I study back in May/June of this year. This project in particular has helped me review CSS and I’m looking forward to finishing the challenge with a mobile-friendly design. This is something that I’m continue to struggle with but with practice I know I’ll get better.&lt;/p&gt;

&lt;p&gt;Looking ahead to next week, I want to continue with the even/odd study days where I on even numbered days I focus on Frontend Mentor Challenges and on odd numbered days I focus on learning JavaScript via Sololearn, freeCodeCamp, and/or Scrimba. This was an idea that occurred to me after reflecting on my first round of #100DaysOfCode. So far it’s working really well because (1) I always know what I need to focus on (I don’t waste time trying figure out what to learn) and (2) alternating days gives a break from topics which lets my subconscious work “behind-the-scenes” to better understanding them. &lt;/p&gt;

&lt;h3&gt;
  
  
  TLDR;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Triumphs&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Completed the first 3 modules on Sololearn’s JavaScript Course&lt;/li&gt;
&lt;li&gt;8% complete with Module 3 of Scrimba’s The Frontend Developer Career Path&lt;/li&gt;
&lt;li&gt;Created a simple &lt;a href="https://github.com/ananfito/passenger-counter-app" rel="noopener noreferrer"&gt;passenger counter app&lt;/a&gt; (inspired by the one in Scrimba curriculum) for my partner, who’s a flight attendant, to use&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Tribulations&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Designing the passenger counter app to be mobile-friendly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Goals for next week&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Continue with even/odd study days

&lt;ul&gt;
&lt;li&gt;Even Days: Frontend Mentor Challenges&lt;/li&gt;
&lt;li&gt;Odd Days: JS, fCC, and/or Scrimba curriculum&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  dailyDevLog
&lt;/h2&gt;

&lt;p&gt;Here are my daily reflections for the #100DaysOfCode challenge from this week.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tue Nov 15
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Today's Progress:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Completed the last 3 intermediate scripting algorithms on fCC (now onto the certification projects!)&lt;/li&gt;
&lt;li&gt;Play around with some introductory Node.js&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;I’m really happy I completed the final few scripting challenges on freeCodeCamp’s JavaScript course. I took a break from the challenges to use some other resources but I came back to them today and it was a good review of functions, &lt;code&gt;this&lt;/code&gt;, &lt;code&gt;some&lt;/code&gt;, and &lt;code&gt;map()&lt;/code&gt;. It was also helpful to learn about some new things like currying and &lt;code&gt;delete&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Moving ahead, I’d like to review the JavaScript concepts. Even though I completed all the challenges on fCC and I feel (mostly) confident in going to work on the certification projects, I still want a stronger JavaScript foundation to stand on before I move on the frameworks and libraries. I’ve already downloaded the Sololearn app to my phone to start reviewing and I think I’ll complete the video courses for JavaScript that are on the fCC YouTube channel. &lt;/p&gt;

&lt;p&gt;I’ve also got some other tutorial videos for building projects (like games) saved in a playlist on YouTube so I think I’ll start going through those too. I really enjoy the “learning by doing” approach. Sometimes the challenges on fCC (or elsewhere) are a little too abstract for me.   &lt;/p&gt;

&lt;p&gt;&lt;em&gt;References:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some" rel="noopener noreferrer"&gt;&lt;code&gt;some&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3docs.com/learn-javascript/currying.html" rel="noopener noreferrer"&gt;Currying&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this" rel="noopener noreferrer"&gt;&lt;code&gt;this&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete" rel="noopener noreferrer"&gt;&lt;code&gt;delete&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math" rel="noopener noreferrer"&gt;&lt;code&gt;Math&lt;/code&gt; Global Object&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map" rel="noopener noreferrer"&gt;&lt;code&gt;map()&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Link to work:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://freecodecamp.org/ananfito" rel="noopener noreferrer"&gt;https://freecodecamp.org/ananfito&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Wed Nov 16
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Today's Progress:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Completed 2 JavaScript lessons on Sololearn about &lt;code&gt;if&lt;/code&gt;, &lt;code&gt;else&lt;/code&gt;, and &lt;code&gt;else if&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Added styling for the “product preview card” challenge for frontend mentor&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Really satisfied with today’s session. Sololearn is turning out to be a good resource for me to review my knowledge of JavaScript and I’m liking how the Frontend Mentor challenge helps me review/practice my HTMS/CSS skills.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;References:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.udemy.com/css-strikethrough/" rel="noopener noreferrer"&gt;CSS Strikethrough&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/V9yP0QG0NWI" rel="noopener noreferrer"&gt;CSS Variables - Using them in the real world and a cool trick&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Link to work:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ananfito/frontend-mentor/tree/main/product-preview-card" rel="noopener noreferrer"&gt;https://github.com/ananfito/frontend-mentor/tree/main/product-preview-card&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sololearn.com/profile/27548051" rel="noopener noreferrer"&gt;https://www.sololearn.com/profile/27548051&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Thu Nov 17
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Today's Progress:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Completed two lessons on Sololearn: the &lt;code&gt;switch&lt;/code&gt; statement and the &lt;code&gt;for&lt;/code&gt; loop&lt;/li&gt;
&lt;li&gt;Joined Scrimba &amp;amp; Completed Sections 1-12 of Module 1 of the Learn JavaScript course&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Notes &amp;amp; Quotes:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;swtich&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When using a &lt;code&gt;switch&lt;/code&gt; statement if there is a case where there is no match you can use the keyword &lt;code&gt;default&lt;/code&gt; at the end of the statement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;for&lt;/code&gt; loops:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Statement 1 in a &lt;code&gt;for&lt;/code&gt; loop is optional &lt;strong&gt;if&lt;/strong&gt; the variable is defined before the start of the &lt;code&gt;for&lt;/code&gt; loop

&lt;ul&gt;
&lt;li&gt;Also within in Statement 1 you can initiate more than one variable by separating them with commas. e.g., &lt;code&gt;for (i = 1, text=""; i &amp;lt; 5; i++)&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Statement 2 of a &lt;code&gt;for&lt;/code&gt; loop is optional &lt;strong&gt;if and only if&lt;/strong&gt; you put a &lt;code&gt;break&lt;/code&gt; statement in the lop&lt;/li&gt;

&lt;li&gt;Optionally Statement 3 can be included inside of the for loop at the end&lt;/li&gt;

&lt;/ul&gt;

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

&lt;p&gt;I felt a little lost at the start of today’s study session. Today was an odd so I my focus is “set” to work on freeCodeCamp projects, but I’m just not feeling confident about my JavaScript skills. Yeah I completed the course work but it still feels jumbled and “soft” in my brain. I know I need to start building up the skills with projects, but I’m also not sure where to start. So I started looking for some resources and stumbled upon Scrimba which is a really cool learning resource and I wish I had known about it earlier. &lt;/p&gt;

&lt;p&gt;For now, I think I’ll continue to study the coursework during the week and save the projects for the Saturdays, when I have more time to focus. Right now, it’s hard to get started on the projects when I only have 10-15 mins here and there to study while at work. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;M - F

&lt;ul&gt;
&lt;li&gt;Odd Days: JS, fCC, and/or Scrimba curriculum&lt;/li&gt;
&lt;li&gt;Even Days: Frontend Mentor Challenges&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Sat

&lt;ul&gt;
&lt;li&gt;fCC Project Work Day (have an extended study session)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Sun (no code, rest &amp;amp; reflect)

&lt;ul&gt;
&lt;li&gt;Weekly reflection blog post

&lt;ul&gt;
&lt;li&gt;Triumphs&lt;/li&gt;
&lt;li&gt;Tribulations&lt;/li&gt;
&lt;li&gt;Goals for next week&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Link to work:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ananfito" rel="noopener noreferrer"&gt;https://github.com/ananfito&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://freecodecamp.org/ananfito" rel="noopener noreferrer"&gt;https://freecodecamp.org/ananfito&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sololearn.com/profile/27548051" rel="noopener noreferrer"&gt;https://www.sololearn.com/profile/27548051&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fri Nov 18
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Today's Progress:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Added styling to “product preview card” (frontend mentor challenge)

&lt;ul&gt;
&lt;li&gt;Need to figure out how to properly style SVG graphic&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

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

&lt;p&gt;Today’s session was short because I went on a field trip for work and came home tired (and with a headache) so I didn’t get much done beside some simple styling. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;References:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial" rel="noopener noreferrer"&gt;SVG Tutorial (MDN)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Link to work:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ananfito/frontend-mentor/tree/main/product-preview-card" rel="noopener noreferrer"&gt;https://github.com/ananfito/frontend-mentor/tree/main/product-preview-card&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sat Nov 19
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Today's Progress:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Completed 2 lessons on Sololearn about the &lt;code&gt;do...while&lt;/code&gt; loop&lt;/li&gt;
&lt;li&gt;Continued working through the JS course on Scrimba&lt;/li&gt;
&lt;li&gt;Created my own version of the ‘passenger counting app’ based on the one featured in the Scrimba coursework&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Notes &amp;amp; Quotes:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“The &lt;strong&gt;while&lt;/strong&gt; loop repeats through a block of code, but only as long as a specified condition is &lt;strong&gt;true&lt;/strong&gt;.”

&lt;ul&gt;
&lt;li&gt;“If a condition is always true, the loop will run forever”&lt;/li&gt;
&lt;li&gt;“Make sure that the condition in a &lt;strong&gt;while&lt;/strong&gt; loop eventually becomes &lt;strong&gt;false&lt;/strong&gt;.”

&lt;ul&gt;
&lt;li&gt;This can be done by remember to increase/decrease the value of the variable (e.g., &lt;code&gt;i++&lt;/code&gt; or &lt;code&gt;i--&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;The &lt;code&gt;do...while&lt;/code&gt; loop differs from the &lt;code&gt;while&lt;/code&gt; loop in that it “will execute the code block once, &lt;strong&gt;before&lt;/strong&gt; checking if the condition is true, and then it will repeat the loop as long as the condition is true.”

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;do...while&lt;/code&gt; loop must end with a semicolon &lt;code&gt;;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;“The loop will always be executed &lt;strong&gt;at least once&lt;/strong&gt;, even if the condition is false, because the code block is executed before the condition is tested.”&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

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

&lt;p&gt;Really satisfied with today’s study session. I feel like things are starting to come together. I’m really enjoying using a Sololearn as a quick-study tool to review JS concepts. I’m also really enjoying Scrimba — so much so that I’m considering signing up for their Pro account in order to get access to their Frontend Developer Path and full access to their community. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;References:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/background" rel="noopener noreferrer"&gt;CSS Background (MDN)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sebhastian.com/background-image-opacity-css/" rel="noopener noreferrer"&gt;Background image opacity (blog tutorial)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Link to work:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ananfito/passenger-counter-app" rel="noopener noreferrer"&gt;https://github.com/ananfito/passenger-counter-app&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sololearn.com/profile/27548051" rel="noopener noreferrer"&gt;https://www.sololearn.com/profile/27548051&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Thanks so much for reading this post. If you found it helpful or have a suggestion for something I can improve upon, please let me know in the comments below. Hearing your thoughts makes this more of a conversation and helps us all learn. See you next time.&lt;/p&gt;

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