<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Coding Fatale</title>
    <description>The latest articles on Forem by Coding Fatale (@codefatale).</description>
    <link>https://forem.com/codefatale</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%2F427130%2F99bac8a6-01d2-427f-983d-9fa56140d943.png</url>
      <title>Forem: Coding Fatale</title>
      <link>https://forem.com/codefatale</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/codefatale"/>
    <language>en</language>
    <item>
      <title>How did it feel looking a old projects before AI code tools?</title>
      <dc:creator>Coding Fatale</dc:creator>
      <pubDate>Tue, 24 Mar 2026 13:00:00 +0000</pubDate>
      <link>https://forem.com/codefatale/how-did-it-feel-looking-a-old-projects-before-ai-code-tools-3dn</link>
      <guid>https://forem.com/codefatale/how-did-it-feel-looking-a-old-projects-before-ai-code-tools-3dn</guid>
      <description>&lt;p&gt;I wrote an article while back to reflect on an old project I decide to do for fun. In my sophomore year in college, I decided to create my first personal project. It was a chatbot. I used ChatterBot, an open-source chatbot library. This project was my first time using Python, and I wanted to create a simple application that answers interview questions. I decided to return to my old chatbot project, which I completed years ago, and try to update it. I knew I had come very far from where I started. &lt;/p&gt;

&lt;p&gt;This was before ChatGPT and the others. If I where to update the process now it would be very different. I have moved on years later with new interests. Was this chatbot project groundbreaking? No. I decided to take on learning about AI. In fact, this helped me heavily in my undergrad senior year during an AI course.It's a surreal experience looking at old projects and then think. How different will it look if I used AI to guide the process. It's an interesting thought to try and redo old projects, but now with vibe coding.&lt;/p&gt;

&lt;p&gt;Have you used AI code tools to update an old project and what where the results?&lt;/p&gt;

</description>
      <category>learning</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Writing code for the sake of code</title>
      <dc:creator>Coding Fatale</dc:creator>
      <pubDate>Tue, 17 Mar 2026 17:21:49 +0000</pubDate>
      <link>https://forem.com/codefatale/writing-code-for-the-sake-of-code-4g2p</link>
      <guid>https://forem.com/codefatale/writing-code-for-the-sake-of-code-4g2p</guid>
      <description>&lt;p&gt;It has come for me to write something on a topic every developer has heard at some point. With AI being present into our daily lives and AI assisting developers, I feel this would become more of an issue. It's a problem that will naturally occur in the world of programming. Writing code just to write code. What does that mean? In my opinion, it means coding without any thought. Writing code without a clear purpose or plan can lead to various issues, especially for software developers working in a collaborative or long-term project setting. Even with vibe coded application these issues can compounded if not addressed. &lt;/p&gt;

&lt;h3&gt;
  
  
  Code Quality and Maintainability
&lt;/h3&gt;

&lt;p&gt;Random code is often unstructured and lacks comments or coherent design, making it hard to read, maintain, or extend in the future. Clean, organized code is essential for a project to evolve without accumulating "technical debt" that could slow development and increase costs. Now I know that the concept of "clean code" itself is a polarizing discussion among software engineers and it has been that way for a long time. The clean code debate continues to exist in the programming world. &lt;/p&gt;

&lt;p&gt;Projects in the corporate world go by fast, there is no time to refactor or "improve" the codebase, unlike personal projects which are created with no time restrictions. Even if the code makes me cringe I can't do anything to it unless I get approval from a tech lead or another dev on the team. So "bad code" continues to exist because "it works" mentality. This is very subjective and why code quality is the most debatable topic. &lt;/p&gt;

&lt;h3&gt;
  
  
  Increased Bug Risk
&lt;/h3&gt;

&lt;p&gt;Writing code without a plan usually means skipping the design and testing phases, which increases the likelihood of introducing bugs. This can result in more time spent debugging and fixing issues down the line. I don't hate testing and see it as a necessary evil. Reasons others dislike testing due to its repetitive nature and or denial resulting in "Hey I did it myself, how can there be any errors? The tests are wrong." attitude. Worst case, the testing phases are skipped due to a lack of care or running out of project time.  Mistakes can slip through the cracks and can be fixed. I don't want it worse by keeping moving without assessing the issue.  Having a clear design before starting addresses obvious issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  Wasted Resources
&lt;/h3&gt;

&lt;p&gt;Coding without direction can lead to wasted time and effort if the code turns out to be unnecessary or incompatible with the rest of the project. In a team setting, this also wastes resources, as other developers may need to review or rework the code. Time is the biggest hurdle for a project. A project with tight deadlines is something you don't want to waste time on. Wasted tokens can also add up due to awful prompts.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Poor Scalability
&lt;/h3&gt;

&lt;p&gt;Random code often doesn’t consider scalability, which can be problematic as projects grow. Good design anticipates future needs and changes, whereas unplanned code usually requires significant refactoring to meet new requirements. The worst case is that starting from scratch over again. Scalability is another hurdle when migrating an existing project or updating it. &lt;/p&gt;

&lt;p&gt;Any stories of when vibe coding went wrong? Share in the comments!&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>coding</category>
      <category>writing</category>
    </item>
    <item>
      <title>What is Parallel Computing?</title>
      <dc:creator>Coding Fatale</dc:creator>
      <pubDate>Wed, 19 Jun 2024 15:34:48 +0000</pubDate>
      <link>https://forem.com/codefatale/what-is-parallel-computing-37l4</link>
      <guid>https://forem.com/codefatale/what-is-parallel-computing-37l4</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/cs"&gt;DEV Computer Science Challenge v24.06.12: One Byte Explainer&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Explainer
&lt;/h2&gt;

&lt;p&gt;Parallel computing is when you have multiple processors working together to solve a problem. A real-life example is multiple checkouts in a grocery store.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>cschallenge</category>
      <category>computerscience</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Moving and coding - Getting physical as a developer</title>
      <dc:creator>Coding Fatale</dc:creator>
      <pubDate>Fri, 09 Feb 2024 16:30:00 +0000</pubDate>
      <link>https://forem.com/codefatale/moving-and-coding-getting-physical-as-a-developer-5ebj</link>
      <guid>https://forem.com/codefatale/moving-and-coding-getting-physical-as-a-developer-5ebj</guid>
      <description>&lt;p&gt;It is not a surprise that being a developer is a sedentary job. Physical health is just as important as mental health. I aim to get some physical activity every week and take a break from watching the screen. I managed to develop a routine and have hobbies that keep me active.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reasons why exercise is important:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Physical Health&lt;/li&gt;
&lt;li&gt;Energy and Productivity&lt;/li&gt;
&lt;li&gt;Creativity&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Motivation
&lt;/h2&gt;

&lt;p&gt;The biggest challenge is finding motivation when exercising. Working out often feels like a chore for others, but fear not. A helpful tip is to develop a routine. Start small and progress with each week.Pick a physical activity that you enjoy and take a short break.&lt;/p&gt;

&lt;h2&gt;
  
  
  Safety
&lt;/h2&gt;

&lt;p&gt;Before starting physical activity, check with your health provider for existing health conditions. Safety is the number one priority. To prevent injuries, stretch before and after workouts. I had an injury before and it was not fun. Do physical activity at your pace to prevent injuries. It is okay to take a rest if you are not feeling well.&lt;br&gt;
Getting organized&lt;/p&gt;

&lt;p&gt;The easiest way to get started is to use a tool to keep track of progress. Fitness apps and calendars are a great tool for organizing workouts and exercise.&lt;/p&gt;

&lt;p&gt;How I get exercise&lt;br&gt;
Here are a few creators I follow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Heather Robinson - Is one of my favorites when working out. She has a variety of workouts from HIIT to daily workouts. I like her free programs that are generous and can last a week to a month.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MYLEE Dance - A dance channel that focuses on kpop inspired choreography and dance workouts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Fitness Marshall - Zumba-style workouts that are under 5 minutes.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>productivity</category>
    </item>
    <item>
      <title>Surviving the system design interview - part 1</title>
      <dc:creator>Coding Fatale</dc:creator>
      <pubDate>Fri, 17 Nov 2023 17:00:00 +0000</pubDate>
      <link>https://forem.com/codefatale/surviving-the-system-design-interview-part-1-d3f</link>
      <guid>https://forem.com/codefatale/surviving-the-system-design-interview-part-1-d3f</guid>
      <description>&lt;p&gt;If there is one thing that I showed the most improvement on is system design interviews. As you apply for roles, chances are you will have a system-design interview at some point during the interview process. System design interviews use real-world applications to test your experience in designing systems.&lt;/p&gt;

&lt;p&gt;Here are some of the key points and objectives of system design interviews:&lt;/p&gt;

&lt;p&gt;Problem-Solving Skills: System design interviews evaluate a candidate's ability to break down complex problems into smaller, manageable components. This is a critical skill because real-world systems are complex, and engineers need to design scalable, efficient, and maintainable solutions.&lt;/p&gt;

&lt;p&gt;Evaluate Architectural and Domain Knowledge: They help assess a candidate's understanding of various architectural concepts, including database design, system scalability, fault tolerance, and performance optimization. This knowledge is crucial for designing robust and efficient systems.&lt;/p&gt;

&lt;p&gt;In some cases, system design interviews may assess a candidate's domain-specific knowledge. For example, if you're interviewing for a role at top tech companies you might be asked to design a social media.&lt;/p&gt;

&lt;p&gt;Communication Skills: System design interviews often involve a discussion between the candidate and the interviewer. This tests the candidate's ability to communicate their thought process, make trade-offs, and defend their design choices, which is important in a collaborative work environment.&lt;/p&gt;

&lt;p&gt;Identify Problem-Solving Approach: They reveal a candidate's problem-solving approach. Interviewers look for a systematic and logical approach to design, starting from requirements gathering and progressing through architecture, data modeling, and implementation details.&lt;/p&gt;

&lt;p&gt;Highlight Trade-offs and Bottlenecks: System design interviews often require candidates to make trade-offs between various system attributes, such as scalability, performance, cost, and simplicity. This demonstrates the candidate's ability to think critically and make informed decisions.&lt;/p&gt;

&lt;p&gt;Cultural Fit: These interviews also help gauge how well a candidate fits into the company culture. Strong communication, collaboration, and problem-solving skills are often valued in technical roles. Even if you don't have extensive experience, you can demonstrate your potential to learn and adapt to new challenges.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to prepare for a system design interviews
&lt;/h2&gt;

&lt;p&gt;A good way to prepare for system design interviews is to practice system design interviews.&lt;/p&gt;

&lt;p&gt;Another tactic is to watch and observe. There are YouTube channels that describe the system interview in detail. Other channels have mock system design interviews where you can get a feel for system design interviews. Don't forget to take notes!&lt;/p&gt;

&lt;p&gt;Here are my favorite YouTube channels:&lt;/p&gt;

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

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

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

&lt;h2&gt;
  
  
  Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Be Calm - It's fine to be nervous. Take a deep breath and remember to do your best.&lt;/li&gt;
&lt;li&gt;Ask questions - Communicate with the interviewer. It should not be one-sided.&lt;/li&gt;
&lt;li&gt;Don't Rush - Take your time in the system design interview.&lt;/li&gt;
&lt;li&gt;Keep it simple - Don't over complicate your solution.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I struggled in the beginning with system design interviews and study over time to get better at them. I finally feel comfortable with system design interviews. In system design interviews, there is not a one-size-fits-all answer. Be confident during the system design interview. With practice, you will succeed!&lt;/p&gt;

&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://interviewing.io/guides/system-design-interview" rel="noopener noreferrer"&gt;interviewing.io - System Design guide&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.techinterviewhandbook.org/system-design/" rel="noopener noreferrer"&gt;Tech Interview Handbook - System Design&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
      <category>learning</category>
      <category>motivation</category>
    </item>
    <item>
      <title>My Linux journey: 1-year later after the switch</title>
      <dc:creator>Coding Fatale</dc:creator>
      <pubDate>Sat, 21 Oct 2023 12:00:00 +0000</pubDate>
      <link>https://forem.com/codefatale/my-linux-journey-1-year-later-after-the-switch-2han</link>
      <guid>https://forem.com/codefatale/my-linux-journey-1-year-later-after-the-switch-2han</guid>
      <description>&lt;p&gt;It’s been over one year since I fully made the switch from Windows to Linux for my personal computer. I was nervous at first switching to a different operating system. I have made the step and decided to look back on my decision.&lt;br&gt;
Why I switched?&lt;/p&gt;

&lt;p&gt;I have a list of reasons why I don’t use Windows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Privacy and ads. No pop-up ads, please.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Limited customization. With Linux, I have a free range of customization options.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Expensive. I do not pay for Microsoft Office when I use Libre Office.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Forced Windows updates. I stopped using third-party security software as well. No more Windows updates interrupting me in the middle when I’m working.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Upgrades. Linux can breathe life into older computers compared to Mircosoft.&lt;br&gt;
Testing other distros&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;My first was Ubuntu. During my time at college,  there were Linux computers in some of the computer rooms on campus. The distro I used was Debian for a system administration course I took in college. After that class, I experimented with Linux Mint for a while before I settled back with Ubuntu.&lt;br&gt;
Time to make the switch&lt;/p&gt;

&lt;p&gt;To switch to Linux, I made a live USB and prepare my HP laptop that had Windows installed. After that, I was about to start my Linux journey.&lt;/p&gt;

&lt;p&gt;Customizing&lt;/p&gt;

&lt;p&gt;I downloaded new backgrounds from Unsplash, candy icons, and sweet dark theme. I like the fact I was able to customize my Linux desktop. My desktop has a cyberpunk theme and the r/unixporn subreddit is a community where users share their custom Linux desktop.&lt;/p&gt;

&lt;p&gt;Developing on Linux&lt;/p&gt;

&lt;p&gt;I had no problem working with text editors such as emacs and visual studio code. I also installed Twine and Ren’Py for game development on Linux. For photo editing, I downloaded GIMP and Inkscape which gets the job done for basic graphic design.&lt;br&gt;
How I feel after 1 year&lt;/p&gt;

&lt;p&gt;I feel better after switching to Linux. I’m able to do my usual work for development and I can still play most of the video games I brought on Steam. I play visual novels, most made by indie devs so most worked fine on Linux.&lt;/p&gt;

&lt;p&gt;Even though I man into a few problems, I managed to get them fixed. I almost had a mini heart attack when updating the Ubuntu version and I did not disable the lock screen while it was updating. I  ran into some problems and had to reinstall it again to make it work. There’s a chance things will break along the way and look into what is causing the problem.&lt;/p&gt;

&lt;p&gt;How to get started switching to Linux&lt;/p&gt;

&lt;p&gt;Before getting started I would like to mention that Linux will take some time to learn. I ran Linux distros in a VM for about 2 years before making the switch full-time. There are stories of people switching to Linux only to return to Windows quickly because they were frustrated. There is a learning curve with Linux. It is best to learn the basic commands and file system. There are cheat sheets with basic Linux commands.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Try out various distros&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Create a VM to try out various Linux distros. I went from Ubuntu to Debian to Linux Mint and finally went back to Ubuntu. Everyone has their own favorite distro.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pick a computer and prepare before installing&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Linux can work with an old or new computer. Make sure to look at the hardware for compatibility before installing. If not fully ready, an option is to duel boot Linux and Windows. However, that can have its own set of risks.&lt;/p&gt;

&lt;p&gt;Go to the selected distro site that is going to be installed. Please read the instructions to install the Linux distro.&lt;/p&gt;

&lt;p&gt;If installing Linux with a live USB, prepare the USB drive. Rufus or Balena Etcher are programs that are used to create the bootable USB drive.&lt;/p&gt;

&lt;p&gt;An important step is to backup files. All files that were previously on Windows will be gone when Linux is installed. Make sure to back up all the files that are important.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install Linux&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When all the preparation is ready for installation, install Linux. Afterward, there is the setup that needs to be done since using Linux for the first time after installation is complete.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enjoy Linux&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When the setup is complete, Linux is now installed on the computer. Install the desired programs on the desktop.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>womenintech</category>
      <category>opensource</category>
    </item>
    <item>
      <title>My 3 year anniversary blogging at Dev.to - A reflection</title>
      <dc:creator>Coding Fatale</dc:creator>
      <pubDate>Sun, 09 Jul 2023 16:01:47 +0000</pubDate>
      <link>https://forem.com/codefatale/my-3-year-anniversary-blogging-at-devto-a-reflection-kmk</link>
      <guid>https://forem.com/codefatale/my-3-year-anniversary-blogging-at-devto-a-reflection-kmk</guid>
      <description>&lt;p&gt;It has been 3 years since I started blogging at dev.to. I want to take this time to review the 3 years I spent with the DEV community. This is a small reflection of what I did over the last 3 years. &lt;/p&gt;

&lt;h2&gt;
  
  
  The beginning
&lt;/h2&gt;

&lt;p&gt;I decided to start blogging before my senior year in college. I wanted to share what I learned. During the pandemic I needed an outlet to share my stories. Blogging did help me in getting my first software developer job out of college. &lt;/p&gt;

&lt;p&gt;I enjoyed writing and sharing content. It would be best for me to continue writing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Posts overview
&lt;/h2&gt;

&lt;p&gt;Over the last 3 years I wrote various articles on my &lt;br&gt;
My top 3 highest viewed posts were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/codefatale/quick-guide-to-create-a-custom-chatterbot-corpus-2c1a"&gt;Quick guide to create a custom ChatterBot corpus&lt;/a&gt; - I created a chatbot project in college years ago,before ChatGPT. It was my first project using python and used the Chatterbot library. I was surprised how many views it received.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/codefatale/writing-a-story-for-a-visual-novel-57np"&gt;Writing a story for a visual novel&lt;/a&gt; - I prefer developing visual novels and I use the open source game engine Ren'Py. I still have some good story ideas in the future. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/codefatale/creating-a-remix-using-tone-js-1kdg"&gt;Creating a remix using Tone.js&lt;/a&gt; - This post got me featured on official &lt;a href="https://twitter.com/ThePracticalDev/status/1401192196334931969" rel="noopener noreferrer"&gt;Dev Community twitter&lt;/a&gt;. I wanted to learn how to create music using code. I found Tone.js, a JavaScript library that allows you to play music notes. I used to be a musician and that gravitated me towards Tone.js.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm happy to write my articles on dev.to and interact and help out other developers. Even though the last few months were difficult for me finding my place as a software developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;I have decided to go with the next steps pursing and developing my career. I have plans to start a new personal blog to write my personal experiences in the next few weeks. I'm focusing on my re-branding and building my skills. &lt;/p&gt;

&lt;p&gt;I recently left my previous job and this is a good time to focus on my professional career. I decided to continue pursing personal projects and becoming more focused on open source contributions. I wanted my work to make an impact. &lt;/p&gt;

&lt;p&gt;I'm have gained so many skills and continuing to learn new ones.I'm taking charge of my own career again. &lt;/p&gt;

</description>
      <category>womenintech</category>
      <category>opensource</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>Creating a menu in Ren'Py that remembers player choices</title>
      <dc:creator>Coding Fatale</dc:creator>
      <pubDate>Sat, 11 Feb 2023 16:56:46 +0000</pubDate>
      <link>https://forem.com/codefatale/creating-a-menu-in-renpy-that-remembers-player-choices-4jmp</link>
      <guid>https://forem.com/codefatale/creating-a-menu-in-renpy-that-remembers-player-choices-4jmp</guid>
      <description>&lt;p&gt;This article will show how to create a menu that will remember the player's choices. &lt;/p&gt;

&lt;h2&gt;
  
  
  Variables
&lt;/h2&gt;

&lt;p&gt;Start by creating the variables for the menu. This will help keep track what events are going to happen in the story. For example, the character is getting ready for the day and they have a daily routine. We want the player to select choices on which actions the character can do.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;default tasks_completed = 0

default teeth = False
default clothes = False
default face = False

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

&lt;/div&gt;



&lt;p&gt;We are going to use task_completed for a points base system that will be implemented later. Set the default value to 0. &lt;/p&gt;

&lt;h2&gt;
  
  
  Creating the menu
&lt;/h2&gt;

&lt;p&gt;Create a menu to show the choices the player can choose.&lt;br&gt;
The player can choose 3 choices, brush teeth, wash face, and get dressed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; menu daily_routine:

                "Brush teeth":
                        jump brush_teeth
                "Get dressed":
                        jump get_dressed
                "Wash face":
                        jump wash_face

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

&lt;/div&gt;



&lt;p&gt;When a choice is selected it jumps to its label. &lt;/p&gt;

&lt;h2&gt;
  
  
  Remembering menu choices
&lt;/h2&gt;

&lt;p&gt;Restrict the player choices to prevent choosing the same option twice. Conditional statements and the variables that were defined above will be added to the daily_routine menu. To remove a choice after it has been selected, we will use a conditional statement.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; "Brush teeth" if teeth == False :
                        $ teeth = True
                        jump brush_teeth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the character has not brushed their teeth, it is false. Once the player selects "Brush teeth"  it will be made true and jump to the label. After the choice is selected, it will disappear from the menu. &lt;/p&gt;

&lt;h2&gt;
  
  
  Adding new choice based using a points based system
&lt;/h2&gt;

&lt;p&gt;There are multiple ways to display a is a choice happens if conditions are met. The task_completed variable keeps track of the daily routine tasks that are completed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
     $ tasks_completed += 1

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

&lt;/div&gt;



&lt;p&gt;Each time there is a choice that is selected, task_completed increments by 1. &lt;/p&gt;

&lt;h2&gt;
  
  
  Adding new choice
&lt;/h2&gt;

&lt;p&gt;Next, we are adding a new choice that appears when a condition is met. The new "Eat breakfast" choice is when the character eats their breakfast once the daily routine is completed. Add a conditional statement.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Eat breakfast" if tasks_completed &amp;gt; 2:
                        jump eat_breakfast
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The task_completed variable  is used to keep track of the points. The choice "Eat breakfast" will appear after task_completed is greater than two.&lt;/p&gt;

&lt;h2&gt;
  
  
  Menu with all choices
&lt;/h2&gt;

&lt;p&gt;This is a menu that will remember the player choices.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; menu daily_routine:

                "Brush teeth" if teeth == False :
                        $ teeth = True
                        $ tasks_completed += 1
                        jump brush_teeth
                "Get dressed" if clothes == False :
                        $ clothes = True
                        $ tasks_completed += 1
                        jump get_dressed
                "Wash face" if face == False:
                        $ face = True
                        $ tasks_completed += 1
                        jump wash_face
                "Eat breakfast" if tasks_completed &amp;gt; 2:
                        jump eat_breakfast
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;p&gt;Official Ren'Py documentation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.renpy.org/doc/html/menus.html#" rel="noopener noreferrer"&gt;Menus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.renpy.org/doc/html/conditional.html?highlight=point" rel="noopener noreferrer"&gt;Conditional Statements&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>flutter</category>
      <category>softwareengineering</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Adding images in Ren'Py - part 1</title>
      <dc:creator>Coding Fatale</dc:creator>
      <pubDate>Sat, 13 Aug 2022 16:00:41 +0000</pubDate>
      <link>https://forem.com/codefatale/adding-images-in-renpy-part-1-2jdp</link>
      <guid>https://forem.com/codefatale/adding-images-in-renpy-part-1-2jdp</guid>
      <description>&lt;p&gt;This article covers the basics on how to add images in Ren'Py for a visual novel. Stock or custom images can be used.&lt;/p&gt;

&lt;h3&gt;
  
  
  Things to have
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Images to use (backgrounds, cursor, sprites, etc.) &lt;/li&gt;
&lt;li&gt;Photo editing software.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Adding a image
&lt;/h2&gt;

&lt;p&gt;Take the image selected and locate the image folder in the project. Store the selected image in the folder. The &lt;code&gt;bg&lt;/code&gt; tag is the naming convention for background images in the Ren'Py documentation. Suppose we have a image of that we want as a background with some narration.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    scene bg location

     "Where am I? "

    "I look around my surroundings."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For more customization, lets add a custom image as the cursor. I have placed a image for the cursor in the &lt;code&gt;gui&lt;/code&gt; folder. Use the &lt;code&gt;config.mouse&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;define config.mouse = { }
define config.mouse['default'] = [ ( "gui/cursor.png", 0, 0)]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is code snippet that uses a background and custom cursor.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;define m = Character("myCharacter")
define config.mouse = { }
define config.mouse['default'] = [ ( "gui/cursor.png", 0, 0) ]

label start:

    scene bg location

    "Where am I? "

    "I look around my surroundings."


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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Things to consider
&lt;/h3&gt;

&lt;p&gt;When adding images make sure the size is appropriate. Use editing tools to scale images if they are not the correct size you want for the game. There are free assets that are already scaled by default that you can use for a visual novel.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>tutorial</category>
      <category>python</category>
    </item>
    <item>
      <title>ADV vs NVL Style in Ren'Py</title>
      <dc:creator>Coding Fatale</dc:creator>
      <pubDate>Thu, 20 Jan 2022 16:58:00 +0000</pubDate>
      <link>https://forem.com/codefatale/adv-vs-nvl-style-in-renpy-2a8m</link>
      <guid>https://forem.com/codefatale/adv-vs-nvl-style-in-renpy-2a8m</guid>
      <description>&lt;p&gt;Renpy has two styles of presenting a visual novel: ADV and NVL. This article will compare and contrast between the two styles.&lt;/p&gt;

&lt;h2&gt;
  
  
  ADV
&lt;/h2&gt;

&lt;p&gt;ADV visual novel present dialouge and narration per line inside of a text box. ADV visual novels are the most common visual novel presentation. Most popular visual novels are in ADV style. &lt;/p&gt;

&lt;h2&gt;
  
  
  NVL
&lt;/h2&gt;

&lt;p&gt;NVL is another style of visual novel that shows multiple lines of text in a window. While NVL is the less popular choice for visual today.Earlier visual novels used NVL before ADV was popular. Some indie developers still chose to use it for aesthetic purposes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which one to use?
&lt;/h2&gt;

&lt;p&gt;ADV is the most popular style of visual novel you will see. ADV visual novels are common to both indie publishers and game companies.&lt;/p&gt;

&lt;p&gt;NVL is used for text heavy stories with more narration in the story.The text window covers most of the graphics. Think of it as a traditional novel exeperience with text across the screen. &lt;/p&gt;

&lt;h2&gt;
  
  
  Developing a ADV or NVL visual novel
&lt;/h2&gt;

&lt;p&gt;ADV is the RenPy default and makes it easy to create dialouge in script files. RenPy allows you to switch to NVL mode if you want to create a NVL style visual novel. &lt;/p&gt;

&lt;p&gt;Developing ADV style visual novels are straightfoward compared to NVL style where you have to make a few changes. To switch into NVL mode start by defining the characters. The only difference is adding &lt;code&gt;kind=nvl&lt;/code&gt;.To define a narrator use &lt;code&gt;nvl_narrator&lt;/code&gt;. Here is what it looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;define j = Character("John", kind=nvl , color = "#0E6818")

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

&lt;/div&gt;



&lt;p&gt;Another thing with NVL is pagination. Lets create a script that set up our visual novel by breaking the script into two pages.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;define j = Character("John", kind=nvl , color = "#0E6818")
define narrator = nvl_narrator


"I'm so glad to be back home. Last semester was so stressful."
"Deciding where to spend the summer I just wanted to relax. I rented out a cabin at a small town."

nvl clear

"The cabin is smaller than I'm used to. It has 2 bedrooms, a living room, bathroom and kitchen."
"I unpacked my things in my room."

nvl clear
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here what it looks like in ADV style.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;define j = Character("John", color = "#0E6818")

"I'm so glad to be back home. Last semester was so stressful."
"Deciding where to spend the summer I just wanted to relax. I rented out a cabin at a small town."

"The cabin is smaller than I'm used to. It has 2  bedrooms, a living room, bathroom and kitchen."
"I unpacked my things in my room."

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

&lt;/div&gt;



&lt;p&gt;When using ADV default , we don't have to make as many declarations compared to NVL.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;I would recommend ADV for most since ADV style is the default choice for many modern visual novels, and the artwork is the main focus on the screen. A downside of NVL is it requires more formatting and customization if you want to make it unique. It all comes down to which style fits your visual novel.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Resource
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.renpy.org/doc/html/nvl_mode.html" rel="noopener noreferrer"&gt;NVL Mode documentaion&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>tutorial</category>
      <category>renpy</category>
    </item>
    <item>
      <title>Adding Splash Screens in Ren'Py</title>
      <dc:creator>Coding Fatale</dc:creator>
      <pubDate>Wed, 22 Dec 2021 17:01:00 +0000</pubDate>
      <link>https://forem.com/codefatale/adding-splash-screens-in-renpy-22cd</link>
      <guid>https://forem.com/codefatale/adding-splash-screens-in-renpy-22cd</guid>
      <description>&lt;p&gt;If you played any visual novels, you might have encountered a intro or cutscene before the game starts. A splash screen can be textual video, or image. Here's some reasons to add a splash screen:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cutscenes&lt;/li&gt;
&lt;li&gt;Introductions&lt;/li&gt;
&lt;li&gt;Warnings&lt;/li&gt;
&lt;li&gt;Loading screens&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Splashscreen Uses
&lt;/h2&gt;

&lt;p&gt;Visual novels can have an opening to show the characters along with some game footage or a prolouge in the beginning of a game. Splash screens can be inserted anywhere in the visual novel. For example, we want to inform the player that time has passed in the story. A textual splash screen can be used to illustrate the time skip in the story.&lt;/p&gt;

&lt;p&gt;Another use is adding a warning or statement before the game starts. This can be a warning for a game that has sensitive subjects or has mature content. Having a warning serves a precuation and to inform the players about the content in the visual novel beforehand. &lt;/p&gt;

&lt;p&gt;A loading screen can be a presplash. A presplash is an image when the engine starts up to launch the game. The game is loading into another stage has a loading screen image. Having a loading screen to transition between scenes in the game. &lt;/p&gt;

&lt;h2&gt;
  
  
  Simple text splashscreen
&lt;/h2&gt;

&lt;p&gt;Let's add a text splashscreen that shows up in the beginning before the main menu. We want to inform the player that this is a demo and is not the full game.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;label splashscreen:
    scene black

    show text "This is a demo. Final may game be subject to change." with dissolve
    with Pause(3)

    hide text with dissolve
    with Pause(1)

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

&lt;/div&gt;



&lt;p&gt;To create the simple splashscreen, there is a black screen for the scene. We show the text on the screen for three seconds. The text dissolves and transitions into a fade.  &lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;Splashscreens can have a variety of uses to choose from when developing a visual novel. When creating a splashscreen, determine what is best for the game. The choice is up to you.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.renpy.org/doc/html/splashscreen_presplash.html?highlight=splash%20screen" rel="noopener noreferrer"&gt;RenPy splashscreen documentation&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>gamedev</category>
      <category>renpy</category>
    </item>
    <item>
      <title>Creating characters and scripting dialouge in RenPy</title>
      <dc:creator>Coding Fatale</dc:creator>
      <pubDate>Sun, 28 Nov 2021 15:42:53 +0000</pubDate>
      <link>https://forem.com/codefatale/creating-characters-and-scripting-dialouge-in-renpy-57dp</link>
      <guid>https://forem.com/codefatale/creating-characters-and-scripting-dialouge-in-renpy-57dp</guid>
      <description>&lt;p&gt;After getting an idea for a visual novel, time to start developing the game. RenPy is a popular choice to make a visual novel. The RenPy language takes python expressions. Python code can be also added to the project. This article is going to cover how to create a basic dialogue. &lt;/p&gt;

&lt;h2&gt;
  
  
  1. Create a Project
&lt;/h2&gt;

&lt;p&gt;Open up the RenPy launcher and click create new project where your name and choose options for your project. After that setup, things are ready to go!&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Adding characters to your project
&lt;/h2&gt;

&lt;p&gt;When opening the project in your text editor of choice look for the script.rpy file or create a separate file for adding characters. Let's define two characters: protagonist and Jane. In the Character() function the characters name and who_color is the text color for that character's name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Defines the characters in the story
define p = Character("[p]", who_color = "#fff")
define j = Character("Jane", who_color = "#333")

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

&lt;/div&gt;



&lt;p&gt;Note for the protagonist we have [p], the player character is nameable. Here is how we define the player's name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    $p = renpy.input("What is your name?", "Max", length=15)
    $p = p.strip()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the player character can be named , the input is limited to 15 characters. If the input is empty then it will be the default name Max. &lt;/p&gt;

&lt;h2&gt;
  
  
  3. Dialogue
&lt;/h2&gt;

&lt;p&gt;Let's start the game by adding a short introduction and dialogue.&lt;br&gt;
To end the game add the return statement.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;label start:

p "Hey Jane, how was the test last week?"
j "It was rough. I struggled through it, can't believe we have another test next week."
p "How about we get together and study for it."
j "That sounds great!"

return

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Adding Menus
&lt;/h2&gt;

&lt;p&gt;Adding a menu gives the players options in the game. There other options such a a menu set or menu arguments. Let's add a choice over which location to go to study at.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;menu study_locations:
"Where should we go to study?"

"The library":
  p "We can go to the library."

"Jane's House":
  p "How about we study at your place?"

"My House":
p "Let's go to my place and study for the quiz."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;This article covers some of the basics when developing a game using RenPy. Images can be added when doing scenes and other advanced customization for menus. The choices are endless when adding menus in game. &lt;/p&gt;

&lt;h3&gt;
  
  
  Resource
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.renpy.org/doc/html/menus.html" rel="noopener noreferrer"&gt;Menu documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>gamedev</category>
      <category>python</category>
      <category>tutorial</category>
      <category>renpy</category>
    </item>
  </channel>
</rss>
