<?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: DaoistRose</title>
    <description>The latest articles on DEV Community by DaoistRose (@daoistrose).</description>
    <link>https://dev.to/daoistrose</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%2F3364847%2F075cf062-2a66-4e44-bc3e-55e4c42f714a.png</url>
      <title>DEV Community: DaoistRose</title>
      <link>https://dev.to/daoistrose</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/daoistrose"/>
    <language>en</language>
    <item>
      <title>Breaking Out of Tutorial Hell</title>
      <dc:creator>DaoistRose</dc:creator>
      <pubDate>Fri, 15 Aug 2025 19:02:24 +0000</pubDate>
      <link>https://dev.to/daoistrose/breaking-out-of-tutorial-hell-33em</link>
      <guid>https://dev.to/daoistrose/breaking-out-of-tutorial-hell-33em</guid>
      <description>&lt;h4&gt;
  
  
  My First Off-Script Project
&lt;/h4&gt;

&lt;p&gt;Since July 17th, 2025, I’ve been fully immersed in structured coding courses. Codecademy, Boot.dev, Python, JavaScript, you name it, I’ve been working through it. And honestly? I’ve loved every minute.&lt;/p&gt;

&lt;p&gt;But lately, I’ve hit what I’ve learned is called “Tutorial Hell.” That moment when you’ve gotten really good at following step-by-step lessons… yet when faced with a blank VS Code screen and no instructions, you freeze.&lt;/p&gt;

&lt;p&gt;It’s not that I don’t know how to code. I’ve learned the basic syntax. I’ve built loops, functions, and even a few small projects inside course environments. But when I step outside those guardrails, it’s like someone hit “delete” on my brain.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Feels So Strange
&lt;/h2&gt;

&lt;p&gt;By most beginner measures, I can confidently say I’m doing well. I can comfortably navigate Python, and I’ve been deep into JavaScript lately while moving through Codecademy’s Backend Engineer path. But Python still feels like home—the ease, the predictability, the way it just… clicks.&lt;/p&gt;

&lt;p&gt;So why does “just build something” feel so intimidating?&lt;br&gt;
Because structured learning and creative building are two different muscles, and I’ve been overtraining one while ignoring the other.&lt;/p&gt;




&lt;h2&gt;
  
  
  My Way Forward
&lt;/h2&gt;

&lt;p&gt;I’ve decided it’s time to go completely off script. No instructions. No checkpoints. Just me, a blank editor, and an idea.&lt;/p&gt;

&lt;p&gt;My goal: build a functional, real-world app from scratch.&lt;br&gt;
Is it ambitious for my current skill level? Absolutely.&lt;br&gt;
Will I finish it? Yes.&lt;br&gt;
Will I break it? Absolutely, Yes.&lt;/p&gt;

&lt;p&gt;I’ll break the process into small, clear steps and document every stage here on the blog. Partly to stay accountable, partly because writing helps me process what I’m learning, and maybe it’ll help someone else avoid getting stuck in the same place.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Project: An I-Ching App
&lt;/h2&gt;

&lt;p&gt;I wanted something that’s both simple enough for a beginner and meaningful enough to me to keep me engaged. Enter: the I Ching.&lt;/p&gt;

&lt;p&gt;The concept is straightforward:&lt;br&gt;
• Ask a question&lt;br&gt;
• Flip coins&lt;br&gt;
• Generate a hexagram&lt;br&gt;
• Look up its meaning&lt;br&gt;
• Display the result in an easy-to-read format&lt;/p&gt;

&lt;p&gt;But even a simple app has multiple moving parts… perfect for practicing problem decomposition and planning.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Plan
&lt;/h2&gt;

&lt;p&gt;Here’s how I’ll tackle it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Mind Mapping &amp;amp; Planning&lt;/strong&gt;&lt;br&gt;
Define the app’s core purpose and main features (coin flipping, symbol generation, lookup table, reading display).&lt;br&gt;
Sketch user flows and core screens&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Research &amp;amp; Requirements&lt;/strong&gt;&lt;br&gt;
Translate the I Ching logic behind coin flips and hexagrams.&lt;br&gt;
List technical needs (Android compatibility, offline use, etc.).&lt;br&gt;
Choose a tech stack (I am thinking React Native or Flutter, if you have a better suggestion please leave them in the comments).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Design&lt;/strong&gt;&lt;br&gt;
Wireframe each screen.&lt;br&gt;
Pick colors, fonts, and layouts.&lt;br&gt;
Plan navigation and accessibility features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Project Setup&lt;/strong&gt;&lt;br&gt;
Configure my development environment, version control, and project structure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Development&lt;/strong&gt;&lt;br&gt;
Build features step-by-step: account creation, question process and validation, coin flip logic, animations, lookup tables, result display, navigation, and error handling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Testing&lt;/strong&gt;&lt;br&gt;
Unit test each feature, then run full integration testing. Gather feedback. (This is one area I could really use some insight on, are there platforms for beta tests?)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Polishing&lt;/strong&gt;&lt;br&gt;
Optimize performance, fix bugs, refine UI/UX, add finishing touches.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Deployment&lt;/strong&gt;&lt;br&gt;
Prepare for release, test on real devices, and publish to the Google Play Store.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters to Me
&lt;/h2&gt;

&lt;p&gt;In the military, I learned that a 70% solution executed early and iterated on beats a 100% solution delivered too late. This project is my 70% solution for breaking into the tech career field. It won’t be perfect. It will break. I’ll have to backtrack, refactor, and rethink.&lt;/p&gt;

&lt;p&gt;But it will be mine.&lt;/p&gt;

&lt;p&gt;And when it’s done, I’ll have something tangible, a piece of software that started as a blank screen and became a working tool because I made it happen (… and a nice first project for my professional portfolio).&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Tutorials are great for learning fundamentals, but at some point, you have to step outside the safe zone and start building your own roadmap. This is my first real attempt at doing that.&lt;/p&gt;

&lt;p&gt;If you’re also in tutorial hell, maybe it’s time to pick an idea (any idea) and just start. The only way to learn how to build, is to build.&lt;br&gt;
Here’s to getting unstuck: one function, one screen, one deploy at a time.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>career</category>
      <category>beginners</category>
    </item>
    <item>
      <title>From Beginner Python to Backend Engineer: My Next Step</title>
      <dc:creator>DaoistRose</dc:creator>
      <pubDate>Sat, 09 Aug 2025 12:29:53 +0000</pubDate>
      <link>https://dev.to/daoistrose/from-beginner-python-to-backend-engineer-my-next-step-2jid</link>
      <guid>https://dev.to/daoistrose/from-beginner-python-to-backend-engineer-my-next-step-2jid</guid>
      <description>&lt;p&gt;After completing Codecademy’s Beginner Python 3 course, I took a couple of weeks to explore a different platform, introduce some variety into my learning, and continue building my skills. That short break gave me a fresh perspective, and now I am ready to dive back in with renewed energy.&lt;/p&gt;

&lt;p&gt;This time, I am taking on something much bigger: Codecademy’s Backend Engineer Career Path.&lt;/p&gt;

&lt;p&gt;Over the course of my Python journey so far, I have realized something important. This will be no surprise if you have read any of my other posts, but I am far more drawn to backend development than frontend. I love the logic, the structure, and the problem-solving that happens behind the scenes. This next step feels like the natural direction for me.&lt;/p&gt;

&lt;p&gt;I want to be transparent throughout this process, sharing my wins, my challenges, and the lessons I pick up along the way. I would love for you to join me on this journey (this is a way to hold myself accountable and keep me on track). Whether you are learning alongside me, a step ahead, or a seasoned mentor, your insights, encouragement, and feedback will be invaluable.&lt;/p&gt;

&lt;p&gt;If you are on a similar path, let’s connect. I am always excited to build relationships with others who share the same passion, whether we are at the starting line together or you have been running the race for years.&lt;/p&gt;

&lt;p&gt;Here is to the next chapter and to building something meaningful, one line of code at a time.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>career</category>
      <category>backend</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Transitioning into Web Development – Seeking Advice, Communities &amp; Mentorship</title>
      <dc:creator>DaoistRose</dc:creator>
      <pubDate>Wed, 06 Aug 2025 04:53:33 +0000</pubDate>
      <link>https://dev.to/daoistrose/transitioning-into-web-development-seeking-advice-communities-mentorship-56g1</link>
      <guid>https://dev.to/daoistrose/transitioning-into-web-development-seeking-advice-communities-mentorship-56g1</guid>
      <description>&lt;p&gt;I'm currently in the process of transitioning into a career in web development and could really use some guidance from those who’ve been down this path.&lt;/p&gt;

&lt;p&gt;So far, I’ve been studying on my own and am working through Codecademy and Boot.Dev and I'm focused on back-end development. The more I learn, the more excited I get about creating things for the web — but I also realize how much more there is to learn beyond tutorials.&lt;/p&gt;

&lt;p&gt;I’d really appreciate any suggestions on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Great communities (online or local) where beginners can connect and learn&lt;/li&gt;
&lt;li&gt;How to find a mentor (or be “mentor-ready”)&lt;/li&gt;
&lt;li&gt;Ways to get real-world experience or contribute to open-source&lt;/li&gt;
&lt;li&gt;Anything you wish you'd known earlier in your journey&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’ve made a similar transition, I’d love to hear about your path. And if you’re open to chatting or sharing resources, I’d be extremely grateful.&lt;br&gt;
Thanks so much in advance — looking forward to connecting&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>discuss</category>
      <category>career</category>
    </item>
    <item>
      <title>From Red Errors to Real Confidence</title>
      <dc:creator>DaoistRose</dc:creator>
      <pubDate>Thu, 31 Jul 2025 15:09:42 +0000</pubDate>
      <link>https://dev.to/daoistrose/from-red-errors-to-real-confidence-5jm</link>
      <guid>https://dev.to/daoistrose/from-red-errors-to-real-confidence-5jm</guid>
      <description>&lt;h3&gt;
  
  
  Wrapping Up My Codecademy Beginner Python 3 Journey
&lt;/h3&gt;

&lt;p&gt;On July 17, 2025, I made a decision: to stop browsing articles about programming and actually become a programmer. After years in the military leading teams, managing operations, and solving high-pressure problems, I wanted to see if I could bring that same focus to a completely new domain: software development.&lt;/p&gt;

&lt;p&gt;On July 30, 2025, after weeks of consistent study, hands-on practice, and mental workouts, I’ve completed the Beginner Python 3 course on Codecademy. It feels less like a conclusion and more like stepping through the door into something I’ve been looking for all along.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Started
&lt;/h2&gt;

&lt;p&gt;As an Officer in the United States Army, I’ve spent years making decisions in complex environments, balancing data, risk, and systems thinking. That mindset maps surprisingly well to programming.&lt;/p&gt;

&lt;p&gt;I’ve always been drawn to problem-solving, logic, and the quiet satisfaction that comes from building something out of nothing but thought and syntax. But it wasn’t until I started writing actual code that I realized:&lt;/p&gt;

&lt;p&gt;This is the work I want to, and was meant to, do.&lt;/p&gt;

&lt;p&gt;This beginner Python path was my structured launchpad. And it worked.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;This course gave me more than just syntax—it gave me habits, problem-solving strategies, and a growing comfort with failure. Here are some of the core concepts I tackled:&lt;/p&gt;

&lt;p&gt;•  Data Types &amp;amp; Structures: I practiced working with strings, lists, dictionaries, tuples, and explored how to move, filter, and combine data efficiently.&lt;br&gt;
•  Control Flow: If/else statements, logical operators, and loops became tools I now rely on daily. These formed the backbone of all my early projects.&lt;br&gt;
•  Functions: I learned to build reusable code modules with clean inputs and outputs, and now naturally think in terms of breaking logic into discrete, testable pieces.&lt;br&gt;
•  Debugging: I no longer fear red error messages. In fact, I look forward to what they teach me. I now approach bugs like puzzles—frustrating, but solvable with patience and logic.&lt;br&gt;
•  User Input &amp;amp; Validation: Creating experiences that respond clearly (and kindly) to the user has become a focus in many of my projects. Adding validation and thoughtful prompts helped elevate my scripts from “it works” to “it’s usable.”&lt;br&gt;
•  Object-Oriented Programming: Towards the end, I explored classes and objects. It was a big mental leap, but it’s helping me think more modularly and structurally about my code.&lt;/p&gt;

&lt;p&gt;The Codecademy platform itself was incredibly effective. It offered a smooth, supportive entry point with just enough friction to grow. I would have loved more opportunities for free-form, critical-thinking challenges, but even so—it laid a powerful foundation.&lt;br&gt;
Would I recommend this course? Absolutely. Especially if you’re new, self-paced, and ready to put in focused effort.&lt;/p&gt;




&lt;h2&gt;
  
  
  Finding Focus in Backend Development
&lt;/h2&gt;

&lt;p&gt;Throughout this course, I realized how much I enjoy backend architecture. I’m drawn to the quiet logic, the way systems communicate behind the scenes, and the problem solving that powers scalable, secure applications.&lt;/p&gt;

&lt;p&gt;After exploring blogs, videos, and backend engineering communities, I stumbled on a site called Boot.dev. It's a gamified backend developer path—and I’m already hooked. In just a day and a half, I’ve hit Level 17 Apprentice and am currently ranked #1 in my league for the month.&lt;/p&gt;

&lt;p&gt;It’s fun. It’s engaging. It’s practical. And because the first course is Python-focused, I’ve been able to jump right in with confidence. What makes Boot.dev stand out is the way it connects concepts to real-world backend logic—I'm literally writing the backend functions for a fantasy video game, which makes learning both immersive and memorable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Career Transition in Progress
&lt;/h2&gt;

&lt;p&gt;By February 2026, I will be transitioning out of the military. My goal is to land a full-time backend developer role, ideally remote or hybrid, on a team that values mentorship, collaboration, and growth. While it’s unlikely I’ll become a fully polished backend engineer overnight, I’m committed to getting as close as I possibly can.&lt;/p&gt;

&lt;p&gt;While I may not have years of experience in tech, I bring something else:&lt;br&gt;
•  A mindset for continuous learning shaped through military leadership and training&lt;br&gt;
•  A proven ability to work under pressure while managing complex systems&lt;br&gt;
•  A deep motivation to build software that solves meaningful, real-world problems&lt;/p&gt;

&lt;p&gt;This isn’t just about landing a job—it’s about building a new identity. I’m not just learning to code. I’m preparing to shift careers, mindsets, and life paths. I’m fueled by curiosity, discipline, and a stubborn belief that it’s never too late to reinvent yourself.&lt;/p&gt;




&lt;h2&gt;
  
  
  What’s Next
&lt;/h2&gt;

&lt;p&gt;Over the next few months, I’ll be:&lt;br&gt;
•  Advancing through Boot.dev’s backend curriculum&lt;br&gt;
•  Completing Codecademy’s Backend Engineer Path&lt;br&gt;
•  Publishing new portfolio projects&lt;br&gt;
•  Reaching out to mentors and peers in the tech industry&lt;br&gt;
•  Continuing to document everything I learn, publicly&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Completing this course doesn’t mean I’m “done.” It means I’ve built a base strong enough to start climbing higher.&lt;/p&gt;

&lt;p&gt;Most days I find myself struggling with logic bugs or feel like I’m piecing things together slowly. But those moments no longer feel like setbacks. They feel like part of the process. They motivate me.&lt;/p&gt;

&lt;p&gt;If you’re starting your own coding journey or changing careers later in life, I hope this post encourages you – even when the learning curve feels steep. It’s never too late to shift paths. You just have to keep learning, keep iterating, and keep showing up.&lt;/p&gt;

&lt;p&gt;Let’s keep building — one loop, one function, one breakthrough at a time.&lt;/p&gt;




&lt;p&gt;Thanks for reading. If you’re also transitioning into tech, learning Python, or working toward your first developer role, I’d love to connect and share ideas.&lt;/p&gt;

</description>
      <category>python</category>
      <category>coding</category>
      <category>webdev</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Caesar Cipher: Shifting Letters and Mindsets</title>
      <dc:creator>DaoistRose</dc:creator>
      <pubDate>Sun, 27 Jul 2025 12:36:35 +0000</pubDate>
      <link>https://dev.to/daoistrose/caesar-cipher-shifting-letters-and-mindsets-4bl6</link>
      <guid>https://dev.to/daoistrose/caesar-cipher-shifting-letters-and-mindsets-4bl6</guid>
      <description>&lt;h3&gt;
  
  
  My Beginner’s Journey (Part 5)
&lt;/h3&gt;

&lt;p&gt;For this project, I dove into something a little more mysterious: encoding and decoding secret messages with the &lt;strong&gt;Caesar Cipher&lt;/strong&gt;. The idea sounded fun (and ancient!) but it also pushed me to level up my understanding of conditionals, loops, user input, and error handling. Even better, this was my first real brush with turning a logic concept into an actual usable program.&lt;/p&gt;

&lt;p&gt;Let’s just say… the puzzle solving vibes were strong.&lt;/p&gt;

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

&lt;p&gt;I’m now at Day 9 of my Codecademy Python 3 journey, and I can feel the difference in how I approach each new project. This one in particular gave me space to combine creativity with structure—a powerful mix for a beginner coder.&lt;/p&gt;

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

&lt;p&gt;The Caesar Cipher is one of the oldest (and simplest) forms of encryption: each letter in a message is shifted a fixed number of spaces down the alphabet. My assignment was to build a program that could:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Encrypt&lt;/strong&gt; a message with a shift of 1 to 10&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Decrypt&lt;/strong&gt; a message if the shift was known&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Crack&lt;/strong&gt; a message if the shift was unknown by trying all possible combinations&lt;/p&gt;

&lt;p&gt;Simple in theory. But in practice it became a lesson in structure, error proofing, and translating ancient logic into clean, readable Python.&lt;/p&gt;

&lt;h3&gt;
  
  
  Starting Points
&lt;/h3&gt;

&lt;p&gt;Use a list of alphabet letter pairs to represent characters and their numeric values&lt;br&gt;&lt;br&gt;
Validate user input carefully (shift values, message characters, etc.)&lt;br&gt;&lt;br&gt;
Create functions to handle each major operation: encryption, decryption, cracking&lt;br&gt;&lt;br&gt;
Rebuild the message by shifting numbers then converting them back to letters  &lt;/p&gt;

&lt;h2&gt;
  
  
  Enhancing the Experience
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Adding Input Validation That Talks Back
&lt;/h3&gt;

&lt;p&gt;This was my second time writing a series of input prompts that actually &lt;strong&gt;talk back&lt;/strong&gt; to the user when something goes wrong. Instead of just crashing or skipping ahead my script now:&lt;/p&gt;

&lt;p&gt;Asks for a valid shift value (1 to 10)&lt;br&gt;&lt;br&gt;
Limits message length (2 to 200 characters)&lt;br&gt;&lt;br&gt;
Accepts only valid characters (letters, spaces, commas, etc.)&lt;br&gt;&lt;br&gt;
Re prompts with helpful error messages  &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%2Fdhg7dpf9qp5yayqcfry4.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%2Fdhg7dpf9qp5yayqcfry4.png" alt=" " width="800" height="320"&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%2F0swtggswbpbky4dwevvm.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%2F0swtggswbpbky4dwevvm.png" alt=" " width="800" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This combined with some dramatic pauses enhances the user experience. It’s a small touch but it really made the flow feel more polished and human.&lt;/p&gt;

&lt;h3&gt;
  
  
  Encrypt Decrypt or Crack Let the User Decide
&lt;/h3&gt;

&lt;p&gt;Rather than write one single function I built out &lt;strong&gt;three modes&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;encrypt&lt;/code&gt;: adds the shift value to each letter&lt;br&gt;&lt;br&gt;
&lt;code&gt;decrypt&lt;/code&gt;: subtracts the shift value&lt;br&gt;&lt;br&gt;
&lt;code&gt;crack&lt;/code&gt;: runs decryption with all possible shift values and prints each result  &lt;/p&gt;

&lt;p&gt;Cracking open a message without knowing the shift felt like creating a mini puzzle solver. And because I wrote it modularly it was easy to reuse functions for both encryption and decryption.&lt;/p&gt;

&lt;h3&gt;
  
  
  Working with Lists Instead of Dictionaries (For Now)
&lt;/h3&gt;

&lt;p&gt;I realized partway through that using a dictionary would have made some steps easier especially when mapping letters to numbers and back. But I haven’t quite gotten to dictionaries in my Codecademy lessons yet so I stuck with a list of &lt;code&gt;[letter, number]&lt;/code&gt; pairs. Was it a little more verbose Sure. But it worked and it helped me reinforce nested loop logic.&lt;/p&gt;

&lt;h3&gt;
  
  
  Modular Thinking
&lt;/h3&gt;

&lt;p&gt;This project encouraged me to start thinking in &lt;strong&gt;functions&lt;/strong&gt; not just steps. Instead of one giant block of logic I broke things up:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;convert_to_number()&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;apply_encrypt_shift()&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;apply_decrypt_shift()&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;convert_to_letter()&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;auto_crack_shift()&lt;/code&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%2Fod41g50j7gyhnceickl4.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%2Fod41g50j7gyhnceickl4.png" alt=" " width="752" height="638"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each function does exactly one thing and takes clear inputs and outputs. It was like giving each piece of the cipher its own job description and for the first time my code felt &lt;strong&gt;structured&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;User input validation&lt;/strong&gt; is worth the effort. It makes your program kinder and smarter.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Functions&lt;/strong&gt; are starting to feel more natural. I can see how breaking logic into chunks creates cleaner reusable code.&lt;br&gt;&lt;br&gt;
I’m still wrapping my head around more advanced data types like dictionaries but even without them I can build working solutions.&lt;br&gt;&lt;br&gt;
Shifting letters may be simple but doing it right taught me a lot about loops flow and planning ahead.&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%2Fqz0zl60pib73dpt685gm.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%2Fqz0zl60pib73dpt685gm.png" alt=" " width="800" height="666"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;The Caesar Cipher was a different kind of project more interactive more playful and more structured than anything I’ve built so far. I had fun seeing the output change based on different shift values and it made the idea of &lt;strong&gt;code as a tool&lt;/strong&gt; (not just a task) really click for me.&lt;/p&gt;

&lt;p&gt;Up next I’d love to revisit this project once I learn dictionaries and maybe even add a GUI or allow file encryption. But for now I’m proud of the experience I built one that feels like it could actually be useful in the real world.&lt;/p&gt;

&lt;p&gt;If you’re just starting out like I am I hope this project shows you that simple logic can be incredibly empowering. Let’s keep shifting forward one letter one line one breakthrough at a time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Code
&lt;/h2&gt;

&lt;p&gt;You can check out the full Caesar Cipher script on GitHub here: (&lt;a href="https://github.com/DaoistRose/Caesar_Cipher" rel="noopener noreferrer"&gt;https://github.com/DaoistRose/Caesar_Cipher&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Thanks for reading and if you're learning Python too I’d love to see how you approached this project. Let’s keep decoding the mystery of code together.&lt;/p&gt;

</description>
      <category>python</category>
      <category>coding</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Request For Assistance</title>
      <dc:creator>DaoistRose</dc:creator>
      <pubDate>Thu, 24 Jul 2025 14:26:06 +0000</pubDate>
      <link>https://dev.to/daoistrose/request-for-assistance-30e4</link>
      <guid>https://dev.to/daoistrose/request-for-assistance-30e4</guid>
      <description>&lt;h3&gt;
  
  
  Good morning, everyone!
&lt;/h3&gt;

&lt;p&gt;I'm reaching out to the community for some advice and inspiration.&lt;/p&gt;

&lt;p&gt;I'm nearing the end of the Beginner’s Python 3 course on Codecademy and am looking to challenge myself with a personal project to wrap things up. While I've enjoyed the guided projects throughout the course, I’ve realized I’ve become a bit too reliant on the provided prompts.&lt;/p&gt;

&lt;p&gt;I’d love to build something more independent—ideally a project that solves a real problem or provides tangible value, and one that could serve as a strong first portfolio piece for my professional site.&lt;/p&gt;

&lt;p&gt;If you have any suggestions, ideas, or resources that might help spark some inspiration, I would truly appreciate it!&lt;/p&gt;

&lt;p&gt;Thank you in advance!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>python</category>
      <category>discuss</category>
      <category>community</category>
    </item>
    <item>
      <title>Carly's Cuts: Simplicity and Struggle</title>
      <dc:creator>DaoistRose</dc:creator>
      <pubDate>Wed, 23 Jul 2025 09:20:03 +0000</pubDate>
      <link>https://dev.to/daoistrose/carlys-cuts-simplicity-and-struggle-5bc8</link>
      <guid>https://dev.to/daoistrose/carlys-cuts-simplicity-and-struggle-5bc8</guid>
      <description>&lt;h3&gt;
  
  
  My Beginner’s Journey (Part 4)
&lt;/h3&gt;

&lt;p&gt;When I first opened up the Carly’s Clippers project, it felt refreshingly manageable: simple lists, basic math, and just a few loops. But, as I’ve learned on this Python path, simplicity can still hold plenty of struggle. This project gave me a great chance to practice core concepts like list iteration, list comprehensions, and working with indexes—and reminded me that even when the path is straightforward, it’s okay to walk it slowly.&lt;/p&gt;




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

&lt;p&gt;I’m currently at Day 8 of my Beginner Python 3 Codecademy journey. For this assignment, I stepped into the role of data analyst for the fictional hair salon Carly’s Clippers. My job? Use three basic lists to calculate average prices, revenue, and potential marketing insights.&lt;/p&gt;

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

&lt;p&gt;The project gave me three parallel lists:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;hairstyles&lt;/code&gt;: the haircut names
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;prices&lt;/code&gt;: the price of each haircut
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;last_week&lt;/code&gt;: how many times each haircut was sold last week
&lt;/li&gt;
&lt;/ul&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%2Fibvqaegmfiy7wxhntdj7.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%2Fibvqaegmfiy7wxhntdj7.png" alt=" " width="800" height="104"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each index in the lists matched up across the three—so I could track price, name, and sales quantity together. The tasks were clear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find the average haircut price
&lt;/li&gt;
&lt;li&gt;Adjust the inflated pricing&lt;/li&gt;
&lt;li&gt;Calculate total revenue and average daily revenue
&lt;/li&gt;
&lt;li&gt;Highlight haircuts that will be under $30 next week
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Starting Points
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Loop through a list and add each item to get a total
&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;len()&lt;/code&gt; to calculate averages
&lt;/li&gt;
&lt;li&gt;Apply list comprehensions to modify and filter data
&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;range(len(list))&lt;/code&gt; to iterate by index
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Enhancing the Experience
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Discovering &lt;code&gt;sum()&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;One of my favorite moments during this project came when I caught myself thinking, *There has to be a simpler way to sum these prices. * I was looping manually through the list like this:&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%2Fmry3z8qxe8kdoj8pw3ny.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%2Fmry3z8qxe8kdoj8pw3ny.png" alt=" " width="730" height="97"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;…and then I found the beautiful little shortcut sum()! &lt;code&gt;total_price = sum(prices)&lt;/code&gt;. It felt like leveling up and not just solving the problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cutting Prices with Comprehension
&lt;/h3&gt;

&lt;p&gt;Carly wanted to reduce prices across the board by $5. That was my cue to use list comprehension:&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%2Fbt39v6vk719aa20nlu1h.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%2Fbt39v6vk719aa20nlu1h.png" alt=" " width="800" height="143"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s where things got tricky. Even though list comprehension looks concise, I still find myself having to slow down and mentally unpack what’s going on. I know it’ll get easier with practice, but for now, I still need to break the logic down piece by piece.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tracking Revenue
&lt;/h3&gt;

&lt;p&gt;To calculate revenue, I needed to multiply each haircut price by the number of times it was sold—then add all those up. Here’s where I leaned into the range() function:&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%2Fai3tm6d5bnxgl3irona1.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%2Fai3tm6d5bnxgl3irona1.png" alt=" " width="758" height="125"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This was a satisfying little loop that showed me the power of working with index values when your lists are aligned.&lt;/p&gt;

&lt;h3&gt;
  
  
  Filtering by Price
&lt;/h3&gt;

&lt;p&gt;Finally, I used a list comprehension again to find all haircuts that would be under $30 after the price cut:&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%2Fvis4fizhtrwk69ctgur3.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%2Fvis4fizhtrwk69ctgur3.png" alt=" " width="800" height="80"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This one was a bit of a brain-bender. I really had to slow down and ask myself: &lt;em&gt;What am I pulling? From where? And under what condition?&lt;/em&gt; It took a few tries to get right—and I’m okay with that. These are exactly the reps I need.&lt;/p&gt;




&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;sum()&lt;/code&gt; is a fantastic built-in shortcut for adding lists—and worth using whenever possible
&lt;/li&gt;
&lt;li&gt;List comprehensions are powerful, but still feel abstract to me. I'm learning to slow down and break them apart
&lt;/li&gt;
&lt;li&gt;Parallel lists are easier to work with using index-based loops (&lt;code&gt;range(len(...))&lt;/code&gt;)
&lt;/li&gt;
&lt;li&gt;Even “simple” logic can reveal gaps in understanding—and that’s where the best growth happens
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This project was short, clear, and incredibly valuable. The logic wasn’t complex, but it forced me to apply multiple list operations together—and more importantly, to slow down and &lt;em&gt;understand&lt;/em&gt; what each piece of code was actually doing.&lt;/p&gt;

&lt;p&gt;I still find myself second-guessing list comprehensions and occasionally getting stuck in the weeds with loops. But every time I solve one of these problems, it sticks a little more.&lt;/p&gt;

&lt;p&gt;Next, I’d love to take this project and modularize it—maybe write a function to print a report summary or allow Carly to update styles dynamically. That’s a challenge for another day, though.&lt;/p&gt;

&lt;p&gt;For now, I’m celebrating a working script, a few “aha!” moments, and another piece of my beginner puzzle falling into place.&lt;/p&gt;

&lt;p&gt;If you’re also learning Python or exploring Codecademy’s path, I’d love to hear how you’d approach a project like this. Let’s keep growing—one cut, one loop, one list at a time.&lt;/p&gt;

&lt;h2&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%2Fyeaqb4yklrn9qkgufpm4.png" alt=" " width="488" height="377"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  The Code
&lt;/h2&gt;

&lt;p&gt;You can check out my full script here: &lt;a href="https://github.com/DaoistRose/Carly-s-Cuts" rel="noopener noreferrer"&gt;https://github.com/DaoistRose/Carly-s-Cuts&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>beginners</category>
      <category>coding</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Slices, Prices &amp; Python</title>
      <dc:creator>DaoistRose</dc:creator>
      <pubDate>Mon, 21 Jul 2025 10:42:20 +0000</pubDate>
      <link>https://dev.to/daoistrose/slices-prices-python-4d8e</link>
      <guid>https://dev.to/daoistrose/slices-prices-python-4d8e</guid>
      <description>&lt;p&gt;&lt;strong&gt;My Beginner’s Journey (Part 3)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Len’s Slices 4 Mices is a small but mighty pizza shop serving up slices for every craving. My latest Codecademy Python 3 project brought me into the world of menu management. The task? Take a simple list of toppings and prices, and transform them into a sortable, structured menu that could be updated, sliced, and displayed to customers.&lt;/p&gt;

&lt;p&gt;This project gave me a chance to go deeper into lists, tuples, sorting, and data validation. While the initial instructions were straightforward, I found plenty of room to play, polish, and reflect along the way.&lt;/p&gt;




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

&lt;p&gt;I’m continuing my beginner Python journey (Day 6), and with each new project, I’m starting to notice a shift in how I approach code. This time, Codecademy asked me to build a pizza menu manager—a program that stores prices and toppings, sorts them by cost, and identifies the cheapest and priciest slices.&lt;/p&gt;

&lt;p&gt;While this wasn’t as logic-heavy as shipping calculations or input validation, it gave me hands-on practice with organizing and pairing data in a meaningful way. There was a clear path laid out, but I also saw many little places to add safety checks and flavor (pun intended).&lt;/p&gt;




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

&lt;p&gt;The core of this project was to create and manage a pizza menu. I started by creating two lists: one for toppings and one for their corresponding prices. Then, I combined them into a two-dimensional list where each item had the price first and the topping second.&lt;/p&gt;

&lt;p&gt;Once the menu was created, I sorted it by price to identify the cheapest and most expensive slices. I then removed the last slice of anchovies from the list and added a new item: peppers at $2.50 per slice. Finally, I grabbed the three cheapest slices to create a little deal for our imaginary customers.&lt;/p&gt;




&lt;h3&gt;
  
  
  Starting Points
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create a list of toppings and a corresponding list of prices
&lt;/li&gt;
&lt;li&gt;Count the number of $2 slices using &lt;code&gt;.count()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Calculate the total number of pizza types with &lt;code&gt;len()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Pair each price with its topping using &lt;code&gt;zip()&lt;/code&gt; and convert it to a list
&lt;/li&gt;
&lt;li&gt;Sort the list by price
&lt;/li&gt;
&lt;li&gt;Remove the priciest item, add a new one, and ensure the list remains sorted
&lt;/li&gt;
&lt;li&gt;Slice the list to get the three cheapest pizzas
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once I had all of this working, I started asking myself what could go wrong, and how to make the experience more complete.&lt;/p&gt;




&lt;h2&gt;
  
  
  Enhancing the Experience
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Data Integrity Checks
&lt;/h3&gt;

&lt;p&gt;I began by checking if the original toppings or prices lists were empty. It wasn’t required by the assignment, but it felt important to build in a simple fail-safe. I also made sure each topping had a price after combining the data, which helped prevent formatting errors later.&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%2Flkw1zhvi15nhz2re8xfp.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%2Flkw1zhvi15nhz2re8xfp.png" alt=" " width="800" height="91"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Discovering zip()
&lt;/h3&gt;

&lt;p&gt;One of my favorite discoveries in this project was using zip() to pair prices with their corresponding toppings. I initially considered matching them manually, but zip() made it both faster and cleaner. Once zipped, I converted the result into a list using list() so I could sort, modify, and work with the data more flexibly. It felt like unlocking a new Python shortcut that I’ll definitely reuse in future projects.&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%2Fsq4cndvnw5hw0abqh4tn.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%2Fsq4cndvnw5hw0abqh4tn.png" alt=" " width="800" height="54"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Replacing Anchovies
&lt;/h3&gt;

&lt;p&gt;When the anchovies sold out, I removed them from the list and added peppers instead. I learned that inserting a new item into a sorted list requires a fresh sort to maintain order. That small realization made me appreciate the need for clean, consistent data flow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Formatted Output
&lt;/h3&gt;

&lt;p&gt;I printed the menu line by line using formatted strings, which was a good exercise in handling nested data. I didn’t use a loop this time because I wanted to keep my focus on tuple structure and formatting logic. It was a bit repetitive, but seeing it play out helped me understand how each element fits together.&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%2Fnse0r1c8jhdgywhdfcic.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%2Fnse0r1c8jhdgywhdfcic.png" alt=" " width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Daily Special
&lt;/h3&gt;

&lt;p&gt;I had some fun with the “Three Blind Mice” idea—bundling our three cheapest pizzas into a special deal. This approach didn’t change the core logic of the program but made the output feel more polished and personal, giving customers a unique, catchy offer to look forward to.&lt;/p&gt;

&lt;p&gt;One important detail was adding a safety check to ensure the special only appears when we actually have enough pizzas available. Since the special requires three different pizza options, I implemented a condition to simulate inventory availability and prevent errors that would occur if there are fewer than three pizzas to choose from.&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%2Ftcopeu5mx9bihzh15b6c.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%2Ftcopeu5mx9bihzh15b6c.png" alt=" " width="800" height="247"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;p&gt;This project helped me solidify a few key concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pairing data using &lt;code&gt;zip()&lt;/code&gt; is simple and powerful
&lt;/li&gt;
&lt;li&gt;Sorting a list of tuples is surprisingly effective and easy to use
&lt;/li&gt;
&lt;li&gt;Removing and adding data requires thoughtful restructuring if you care about order
&lt;/li&gt;
&lt;li&gt;Sometimes it’s okay to avoid loops if you’re focusing on learning another concept
&lt;/li&gt;
&lt;li&gt;Even a static menu can be a great place to practice validation and formatting
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This was a smaller project compared to my previous two, but it introduced important ideas that build the foundation for more advanced data handling. It made me think more about how to structure and present information, and it reminded me that even basic logic needs guardrails to work reliably.&lt;/p&gt;

&lt;p&gt;Next, I’d love to refactor the print statements into a loop, then begin wrapping things into functions. Eventually, I want to build a version where users can “order” pizzas or update the menu on the fly.&lt;/p&gt;

&lt;p&gt;For now, I’m happy that the menu works, the logic holds up, and I got to practice making my code both functional and a little bit fun.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Code
&lt;/h2&gt;

&lt;p&gt;If you'd like to see the full script for this project, you can check it out on GitHub here:&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/DaoistRose/Slices-Prices-Python" rel="noopener noreferrer"&gt;https://github.com/DaoistRose/Slices-Prices-Python&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Thanks for reading! If you’re also working through Codecademy’s Python curriculum, feel free to share your version or your take on this project. Let's keep learning together!&lt;/p&gt;

</description>
      <category>python</category>
      <category>beginners</category>
      <category>coding</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Sal’s Shipping Struggles</title>
      <dc:creator>DaoistRose</dc:creator>
      <pubDate>Sat, 19 Jul 2025 11:19:01 +0000</pubDate>
      <link>https://dev.to/daoistrose/sals-shipping-struggles-46kl</link>
      <guid>https://dev.to/daoistrose/sals-shipping-struggles-46kl</guid>
      <description>&lt;h2&gt;
  
  
  Expanding the User Experience — My Beginner’s Journey
&lt;/h2&gt;

&lt;p&gt;Sal’s Shippers is the busiest logistics outfit in the tri-county area. With a growing customer base and a variety of services, Sal needed a solution that would help users quickly determine the most affordable way to ship their packages. That’s where my next Codecademy Python project came in: build a simple, functional, and friendly tool to compare shipping options based on weight.&lt;/p&gt;

&lt;p&gt;It started as a basic calculator. But just like last time, I saw opportunities to explore more: adding polish, improving the flow, and thinking about the user first.&lt;/p&gt;




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

&lt;p&gt;I’m still early in my coding journey (Day 4), but each new project is an invitation to go beyond the requirements. Codecademy asked me to write a Python script that takes a package’s weight and calculates shipping costs for three different options: &lt;strong&gt;Ground Shipping&lt;/strong&gt;, &lt;strong&gt;Premium Ground&lt;/strong&gt;, and the high-flying new &lt;strong&gt;Drone Shipping&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This felt like the perfect next step from my Magic 8-Ball project. The logic was a bit more involved, and there were plenty of places to make things friendlier, clearer, and more reusable. I started simple, then looked for rabbit holes to follow and lessons to uncover.&lt;/p&gt;




&lt;h2&gt;
  
  
  Project Overview
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Write a program that asks the user for the weight of their package and then tells them which method of shipping is cheapest—and how much it will cost.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Starting Points
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Prompt the user to enter the package weight.&lt;/li&gt;
&lt;li&gt;Calculate the cost for:

&lt;ul&gt;
&lt;li&gt;Ground Shipping (tiered rate + flat fee)&lt;/li&gt;
&lt;li&gt;Premium Ground Shipping (flat rate only)&lt;/li&gt;
&lt;li&gt;Drone Shipping (tiered rate, no flat fee)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Compare the three and return the cheapest option.&lt;/li&gt;

&lt;li&gt;Test with example weights like 4.8 lbs and 41.5 lbs.&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  Enhancing the Experience
&lt;/h2&gt;

&lt;h3&gt;
  
  
  User Input Validation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Caught invalid or negative weight entries with &lt;code&gt;try/except&lt;/code&gt; and a &lt;code&gt;while&lt;/code&gt; loop.&lt;/li&gt;
&lt;li&gt;Helped users recover from errors without crashing the program.&lt;/li&gt;
&lt;/ul&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%2F77f3r9rwcu3j1x8t8rt8.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%2F77f3r9rwcu3j1x8t8rt8.png" alt=" " width="800" height="189"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A More Conversational Flow
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Added a warm intro and a thank-you message.&lt;/li&gt;
&lt;li&gt;Used &lt;code&gt;time.sleep()&lt;/code&gt; to add short pauses, just enough to simulate a helpful assistant thinking things through.&lt;/li&gt;
&lt;li&gt;Wrapped everything in a loop so users could price multiple packages without restarting.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Getting the Output Just Right
&lt;/h3&gt;

&lt;p&gt;Since the program calculates dollar amounts, I wanted all cost values to show exactly two decimal places—no more, no less. At first, I tried using &lt;code&gt;round()&lt;/code&gt; for this. While it worked in theory, I ran into a visual problem: Python would display values like &lt;code&gt;$45.20&lt;/code&gt; as &lt;code&gt;$45.2&lt;/code&gt;, which felt sloppy for something involving money.&lt;/p&gt;

&lt;p&gt;To fix that, I switched to using the &lt;code&gt;.format()&lt;/code&gt; method with a format specifier. Specifically:&lt;br&gt;&lt;br&gt;
&lt;code&gt;{:.2f}&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Here’s what that does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;:&lt;/code&gt; starts the format specification&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.2&lt;/code&gt; ensures exactly two decimal places&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;f&lt;/code&gt; means it’s a floating-point number
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    # define which is the cheapest way to ship an item
    if ground_shipping_price &amp;lt; ground_shipping_premium and ground_shipping_price &amp;lt; drone_shipping_price:
        cheapest_option = 'Your cheapest option to ship this item is with ground shipping. Total cost: ${:.2f} \n'.format(ground_shipping_price)
    elif ground_shipping_premium &amp;lt; ground_shipping_price and ground_shipping_premium &amp;lt; drone_shipping_price:
        cheapest_option = 'Your cheapest option to ship this item is with premium ground shipping. Total cost: ${:.2f} \n'.format(ground_shipping_premium)
    elif drone_shipping_price &amp;lt;= ground_shipping_price and drone_shipping_price &amp;lt;= ground_shipping_premium:
        cheapest_option = 'Your cheapest option to ship this item is via drone shipping. Total cost: ${:.2f} \n'.format(drone_shipping_price)
    else:
        cheapest_option = '\nPlease enter a valid weight '
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So, for example, a package that weighs 6.3 pounds and costs $45.20 to ship will now show up properly—decimal and all. Small fix, big improvement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Readable, Reusable Code (Almost)
&lt;/h3&gt;

&lt;p&gt;While I haven’t modularized things into functions &lt;em&gt;yet&lt;/em&gt;, duplicating logic for repeat packages showed me how useful reusable code will be in the long run.&lt;/p&gt;




&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Validating user input is essential and feels empowering to get right.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;while&lt;/code&gt; loops + &lt;code&gt;try/except&lt;/code&gt; = smooth UX.&lt;/li&gt;
&lt;li&gt;Small touches (like a pause or a prompt) go a long way.&lt;/li&gt;
&lt;li&gt;Writing slightly messy code first is okay, it teaches you what to clean up later.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What I’d Add Next
&lt;/h2&gt;

&lt;p&gt;As I keep learning, I already have a few ideas I’d love to implement when I understand Python a bit more:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create items based on input&lt;/strong&gt;: Let users name their packages and keep a record of each one, including weight and shipping method.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Show a full breakdown&lt;/strong&gt;: Display the price for &lt;em&gt;all&lt;/em&gt; shipping options—not just the cheapest so the user can see the full picture.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use functions&lt;/strong&gt;: Right now my code repeats a lot. Once I better understand how to write and call functions properly, I’d love to restructure this project into clean, reusable blocks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These aren’t “musts” for a basic program, but they’re the kinds of improvements that turn something simple into something &lt;em&gt;polished&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This project pushed me to think about more than just math and logic. It encouraged me to consider how real people would interact with the code—and how to make that interaction as clear and enjoyable as possible.&lt;/p&gt;

&lt;p&gt;Here’s to Sal, shipping, and the small wins that feel big when you’re learning to code.&lt;/p&gt;

&lt;p&gt;If you’re also learning Python or working through Codecademy’s curriculum, I’d love to hear how you’d improve this one! Would you have done anything differently? What would you refactor first?&lt;/p&gt;

&lt;p&gt;Let’s connect and learn together—every project brings something new.&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%2Fliag9avibslry4h3h2ek.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%2Fliag9avibslry4h3h2ek.png" alt=" " width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Code
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
python
# Sal's Shipping - Codecademy Project
import time

# greeting the user
print("\nWelcome to Sal's Shipping! Let's find the best way to ship your package.")
time.sleep(2)
print("We offer three shipping options: Ground Shipping, Premium Ground Shipping, and Drone Shipping. \n")
time.sleep(2)

# define the package weight
weight = input('Enter the weight of the package in pounds: ')

# validate user input for weight
while True:
    try:
        weight = float(weight)
        if weight &amp;lt; 0:
            weight = input('\nPlease enter a valid weight (must be positive): ')
        else:
            break
    except ValueError:
        weight = input('\nPlease enter a valid number for weight: ')

# define ground shipping price
if weight &amp;lt;= 2:
    ground_shipping_price = 1.5 * weight + 20
elif weight &amp;lt;= 6:
    ground_shipping_price = 3 * weight + 20
elif weight &amp;lt;= 10:
    ground_shipping_price = 4 * weight + 20
else:
    ground_shipping_price = 4.75 * weight + 20

# define premium ground shipping (flat rate)
ground_shipping_premium = 125

# define drone shipping price
if weight &amp;lt;= 2:
    drone_shipping_price = 4.5 * weight
elif weight &amp;lt;= 6:
    drone_shipping_price = 9 * weight
elif weight &amp;lt;= 10:
    drone_shipping_price = 12 * weight
else:
    drone_shipping_price = 14.25 * weight

# determine cheapest option
if ground_shipping_price &amp;lt; ground_shipping_premium and ground_shipping_price &amp;lt; drone_shipping_price:
    cheapest_option = 'Your cheapest option to ship this item is with ground shipping. Total cost: ${:.2f} \n'.format(ground_shipping_price)
elif ground_shipping_premium &amp;lt; ground_shipping_price and ground_shipping_premium &amp;lt; drone_shipping_price:
    cheapest_option = 'Your cheapest option to ship this item is with premium ground shipping. Total cost: ${:.2f} \n'.format(ground_shipping_premium)
else:
    cheapest_option = 'Your cheapest option to ship this item is via drone shipping. Total cost: ${:.2f} \n'.format(drone_shipping_price)

print(cheapest_option)
time.sleep(2)

# allow multiple items
more_items = input("Thank you for using Sal's Shipping! Do you have another package to ship? (yes/no) \n").strip().lower()
while more_items not in ['yes', 'no']:
    print('Please answer with "yes" or "no". \n')
    more_items = input("Do you have another package to ship? (yes/no)  ").strip().lower()

while more_items == 'yes':
    weight = input('Enter the weight of the package in pounds: ')

    while True:
        try:
            weight = float(weight)
            if weight &amp;lt; 0:
                weight = input('\nPlease enter a valid weight (must be positive): ')
            else:
                break
        except ValueError:
            weight = input('\nPlease enter a valid number for weight: ')

    if weight &amp;lt;= 2:
        ground_shipping_price = 1.5 * weight + 20
    elif weight &amp;lt;= 6:
        ground_shipping_price = 3 * weight + 20
    elif weight &amp;lt;= 10:
        ground_shipping_price = 4 * weight + 20
    else:
        ground_shipping_price = 4.75 * weight + 20

    ground_shipping_premium = 125

    if weight &amp;lt;= 2:
        drone_shipping_price = 4.5 * weight
    elif weight &amp;lt;= 6:
        drone_shipping_price = 9 * weight
    elif weight &amp;lt;= 10:
        drone_shipping_price = 12 * weight
    else:
        drone_shipping_price = 14.25 * weight

    if ground_shipping_price &amp;lt; ground_shipping_premium and ground_shipping_price &amp;lt; drone_shipping_price:
        cheapest_option = 'Your cheapest option to ship this item is with ground shipping. Total cost: ${:.2f} \n'.format(ground_shipping_price)
    elif ground_shipping_premium &amp;lt; ground_shipping_price and ground_shipping_premium &amp;lt; drone_shipping_price:
        cheapest_option = 'Your cheapest option to ship this item is with premium ground shipping. Total cost: ${:.2f} \n'.format(ground_shipping_premium)
    else:
        cheapest_option = 'Your cheapest option to ship this item is via drone shipping. Total cost: ${:.2f} \n'.format(drone_shipping_price)

    print(cheapest_option)
    time.sleep(2)

    more_items = input("Do you have another package to ship? (yes/no)  ").strip().lower()
    while more_items not in ['yes', 'no']:
        print('Please answer with "yes" or "no".')
        more_items = input("Do you have another package to ship? (yes/no) ").strip().lower()

print("\nThank you for using Sal's 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>python</category>
      <category>beginners</category>
      <category>programming</category>
      <category>coding</category>
    </item>
    <item>
      <title>Predicting the Future with Python: My Magic 8-Ball Project</title>
      <dc:creator>DaoistRose</dc:creator>
      <pubDate>Thu, 17 Jul 2025 18:54:09 +0000</pubDate>
      <link>https://dev.to/daoistrose/predicting-the-future-with-python-my-magic-8-ball-project-1ile</link>
      <guid>https://dev.to/daoistrose/predicting-the-future-with-python-my-magic-8-ball-project-1ile</guid>
      <description>&lt;p&gt;Turning Nostalgia into Code — My Beginner's Journey&lt;/p&gt;

&lt;p&gt;Have you ever shaken a Magic 8-Ball, hoping for a sign from the universe? For my Codecademy Python project, I was tasked with reimagining that classic toy in code—while adding a few creative touches along the way.&lt;/p&gt;




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

&lt;p&gt;I’m at the very beginning of my coding journey. When Codecademy presented this project, it felt approachable yet full of potential: build a Python program that answers users’ questions with random “Yes” or “No” style fortunes.&lt;/p&gt;

&lt;p&gt;The challenge was clear and built on fundamentals I’d learned over the past two days. But I wanted to see how far I could go, how many rabbit holes I’d find, and how I could stretch this assignment to learn more in the process.&lt;/p&gt;




&lt;h2&gt;
  
  
  Project Overview
&lt;/h2&gt;

&lt;p&gt;Write a Python script that returns a random fortune when a user asks a question. Simple, right?&lt;/p&gt;

&lt;p&gt;But good code isn’t just about functionality—it’s about making the experience enjoyable, accessible, and user-friendly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Starting Points
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A list of 9 possible Magic 8-Ball answers
&lt;/li&gt;
&lt;li&gt;Code to randomly select a fortune
&lt;/li&gt;
&lt;li&gt;User input for name and question
&lt;/li&gt;
&lt;li&gt;Clear print statements to display results&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After implementing the basics, I started thinking: &lt;strong&gt;How could I make this even more engaging?&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Enhancing the Experience
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Input Validation
&lt;/h3&gt;

&lt;p&gt;To create a smoother user experience, I added validation for both names and questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Names&lt;/strong&gt; must be 2–15 characters and contain only letters, hyphens, spaces, or apostrophes (because everyone from Mary-Jane to O’Connell deserves inclusion).&lt;/li&gt;
&lt;/ul&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%2Fnbiuxiq73z9e2lfeh11d.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%2Fnbiuxiq73z9e2lfeh11d.png" alt=" " width="624" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Questions&lt;/strong&gt; must be 10–50 characters and end with a &lt;code&gt;?&lt;/code&gt; (because it’s not a question without one!).&lt;/li&gt;
&lt;/ul&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%2Fnmjsa3wr1hoxp9tr1wmt.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%2Fnmjsa3wr1hoxp9tr1wmt.png" alt=" " width="624" height="167"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No numbers or odd symbols allowed — to prevent unexpected behavior or potential code injection.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Invalid input gives friendly, clear feedback to help the user try again.&lt;/p&gt;




&lt;h3&gt;
  
  
  A Touch of Dramatic Flair
&lt;/h3&gt;

&lt;p&gt;To make the experience more immersive, I used &lt;code&gt;time.sleep()&lt;/code&gt; to insert short pauses before revealing each answer. It’s a small trick, but it makes it feel like the universe is pondering your question.&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%2Ftf56nrk0dhl20snf3pg6.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%2Ftf56nrk0dhl20snf3pg6.png" alt=" " width="616" height="139"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Replay Value
&lt;/h3&gt;

&lt;p&gt;Using a &lt;code&gt;while&lt;/code&gt; loop, users can keep asking questions until they decide to stop. Each question brings a new, suspenseful fortune—just like the original toy.&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%2Fo3s5mw9tm86m6zygnah2.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%2Fo3s5mw9tm86m6zygnah2.png" alt=" " width="624" height="176"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Polish
&lt;/h2&gt;

&lt;p&gt;To finish the project, I added some fun touches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ASCII art for a welcoming intro
&lt;/li&gt;
&lt;li&gt;Friendly goodbye message at the end
&lt;/li&gt;
&lt;li&gt;A bonus answer for extra variety
&lt;/li&gt;
&lt;li&gt;Thoughtful handling of edge cases like skipped input&lt;/li&gt;
&lt;/ul&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%2F9zib2572nc0tmpj64srm.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%2F9zib2572nc0tmpj64srm.png" alt=" " width="603" height="279"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;p&gt;This project was about more than just getting the code to work. Along the way, I learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The importance of user experience and clear input validation
&lt;/li&gt;
&lt;li&gt;How to use loops and conditionals effectively
&lt;/li&gt;
&lt;li&gt;How to write code that’s clean, maintainable, and readable&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Building the Magic 8-Ball project was a fun, practical way to boost my Python skills—and a great reminder of why people love software that surprises and delights.&lt;/p&gt;

&lt;p&gt;Whether it’s predicting your future or sparking a smile, a little bit of code can feel like magic.&lt;/p&gt;




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

&lt;p&gt;How would you improve this project? I’m new to programming, and every day is a new opportunity to learn. Looking forward to hearing from you all!&lt;/p&gt;

&lt;h2&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%2F5r257xq4wm8e3wnyjl9q.png" alt=" " width="800" height="754"&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Thanks for reading! You can check out the code on GitHub here: &lt;a href="https://github.com/DaoistRose/Magic-8-Ball.py/blob/main/Magic%208-Ball.py" rel="noopener noreferrer"&gt;https://github.com/DaoistRose/Magic-8-Ball.py/blob/main/Magic%208-Ball.py&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>beginners</category>
      <category>coding</category>
    </item>
  </channel>
</rss>
