<?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: Stuxint</title>
    <description>The latest articles on DEV Community by Stuxint (@stuxint).</description>
    <link>https://dev.to/stuxint</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%2F2910750%2Fafd19058-3ee8-46fd-b3b1-74a14d59c7fb.png</url>
      <title>DEV Community: Stuxint</title>
      <link>https://dev.to/stuxint</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/stuxint"/>
    <language>en</language>
    <item>
      <title>Woman's Day: Be Yourself</title>
      <dc:creator>Stuxint</dc:creator>
      <pubDate>Thu, 02 Apr 2026 22:38:16 +0000</pubDate>
      <link>https://dev.to/stuxint/womans-day-be-yourself-5d8e</link>
      <guid>https://dev.to/stuxint/womans-day-be-yourself-5d8e</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/wecoded-2026"&gt;2026 WeCoded Challenge&lt;/a&gt;: Frontend Art&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Show us your Art
&lt;/h2&gt;

&lt;p&gt;Link to art: &lt;a href="https://dev.tourl"&gt;https://docs.google.com/spreadsheets/d/1VDolqe9jt72ukHc3WOIQAMNANp_Nolv13_7pp76rrnM/edit?gid=0#gid=0&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Inspiration
&lt;/h2&gt;

&lt;p&gt;Define being yourself: Is it what the world expects you to be? What your culture of family passes on to you? NO! It's who you are, who we each are made to be. Yes, Woman's Day is a reminder that Woman are equal members of society, who greatly contribute to its function. But it also stands as a day to inform everyone, that you shouldn't be ashamed of who you are. Where would be if Madame Curie was a simple housewife, or if Mahatma Gandhi kept himself shut about the injustice that bothered him?&lt;/p&gt;

&lt;p&gt;Being a colored individual, I personally know how struggling is it to have your true identity conflict the values and ideas your surrounded. This painting is intended to tell people that being yourself is to be who YOU are. Not who your mom is, or who Beyonce is.&lt;/p&gt;

&lt;p&gt;My desire is for the painting's viewers to gain a sense of pride, that they are wonderfully and beautifully made. Though small, may it be a reminder to all that you can be yourself if remain who you are.&lt;/p&gt;

&lt;h2&gt;
  
  
  Note: I made the art using Google Sheets, thinking that would count as a front end tool. Sorry if it's not valid.
&lt;/h2&gt;

</description>
      <category>wecoded</category>
      <category>devchallenge</category>
      <category>frontend</category>
      <category>css</category>
    </item>
    <item>
      <title>I built a bot which can draw Alex</title>
      <dc:creator>Stuxint</dc:creator>
      <pubDate>Tue, 12 Aug 2025 12:31:30 +0000</pubDate>
      <link>https://dev.to/stuxint/i-built-a-bot-which-can-draw-alex-49m9</link>
      <guid>https://dev.to/stuxint/i-built-a-bot-which-can-draw-alex-49m9</guid>
      <description>&lt;p&gt;Hi! I just built a bot which can draw Alex(Link 2 code: &lt;a href="https://dev.tourl"&gt;https://github.com/Stuxint/Leonardo-Bot&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Sorry if it looks bad, it's really hard to get the mouse 2 be in certain places, and draw very accurately. If u have any suggestions, do say so. Ty and GB!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I built a bot which can draw Steve</title>
      <dc:creator>Stuxint</dc:creator>
      <pubDate>Tue, 12 Aug 2025 12:30:08 +0000</pubDate>
      <link>https://dev.to/stuxint/i-built-a-bot-which-can-draw-steve-2c1c</link>
      <guid>https://dev.to/stuxint/i-built-a-bot-which-can-draw-steve-2c1c</guid>
      <description>&lt;p&gt;Hi! I just built a bot which can draw Steve(Link 2 code: &lt;a href="https://dev.tourl"&gt;https://github.com/Stuxint/Leonardo-Bot&lt;/a&gt;). &lt;/p&gt;

&lt;p&gt;Sorry if it looks bad, it's really hard to get the mouse 2 be in certain places, and draw very accurately. If u have any suggestions, do say so. Ty and GB!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I built a bot to rick-roll Airrack(or atleast his team)</title>
      <dc:creator>Stuxint</dc:creator>
      <pubDate>Tue, 12 Aug 2025 12:21:08 +0000</pubDate>
      <link>https://dev.to/stuxint/i-built-a-bot-to-rick-roll-airrackor-atleast-his-team-159</link>
      <guid>https://dev.to/stuxint/i-built-a-bot-to-rick-roll-airrackor-atleast-his-team-159</guid>
      <description>&lt;p&gt;Hi! Learning that Airrack had just posted a job opening, I decided to abuse that in order 2 Rick-Roll him(link 2 code:&lt;a href="https://dev.tourl"&gt;https://github.com/Stuxint/Airrack-Prank-Bot/tree/main&lt;/a&gt;). Basically, the bot sends a legit fake resume, containing a document w/ a Rick-Roll GIF. Sry if it sucks, will see if I can fix. If u have any doubts, do say so. Ty and GB!&lt;/p&gt;

&lt;p&gt;P.S: Since selenium couldn't specify the path to the document, I had to use pyautogui. Does any1 no any alternative 4 that, which is only browser specific? Thx!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How To Rick-Roll W/ Code (LAST ONE IS A BANGER!)</title>
      <dc:creator>Stuxint</dc:creator>
      <pubDate>Wed, 26 Mar 2025 11:32:54 +0000</pubDate>
      <link>https://dev.to/stuxint/how-to-rick-roll-w-code-last-one-is-a-banger-dlb</link>
      <guid>https://dev.to/stuxint/how-to-rick-roll-w-code-last-one-is-a-banger-dlb</guid>
      <description>&lt;p&gt;Rick-Rolling is definitely a prank many wish to master, but few have done so. To be honest, I happened to be one of the suckers who used to yearn to become a Rick-Rolling master. But not for long. After extensive research and hard work, I have come up w/ 3 ways to Rick-Roll &lt;em&gt;anybody&lt;/em&gt;, all thx, to the PWR OF CODE! 💪💪💪&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;1. Simple website&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;As developers, we all know the noobs under us will be COMPLETELY shocked when they see what their all-knowing counterparts have created. And using that insolence, we can back-stab them! &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create a website&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Simply do that by typing/copying and pasting the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Our friendship!❤️❤️❤️&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Remove default body margins */&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nc"&gt;.header&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;yellow&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Make it span the full width */&lt;/span&gt;
            &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;medium&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Stick it to the top */&lt;/span&gt;
            &lt;span class="nl"&gt;z-index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Ensure it's above other elements */&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nc"&gt;.pa&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;padding-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;25px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;medium&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;  
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nc"&gt;.pa1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;padding-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;25px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;medium&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;  
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class = &lt;/span&gt;&lt;span class="s"&gt;header&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Our Great Friendship!❤️❤️❤️&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class = &lt;/span&gt;&lt;span class="s"&gt;pa&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;
        Our friendship has been a winding road of shared laughter, whispered secrets, and 
        unwavering support. We've navigated late-night talks, spontaneous adventures, 
        and the occasional (but always temporary) disagreements. Through it all, a constant thread of 
        understanding and genuine care has kept us close, making it clear that no matter what, we'll always 
        have each other's backs.
    &lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class = &lt;/span&gt;&lt;span class="s"&gt;pa1&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Get ready for a trip down memory lane! Here's a little video showcasing our 
    friendship's journey through the years:&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"text-align: center;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;video&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"myVideo"&lt;/span&gt; &lt;span class="na"&gt;width=&lt;/span&gt;&lt;span class="s"&gt;"320"&lt;/span&gt; &lt;span class="na"&gt;height=&lt;/span&gt;&lt;span class="s"&gt;"240"&lt;/span&gt; &lt;span class="na"&gt;controls&lt;/span&gt; &lt;span class="na"&gt;autoplay&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;source&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"videoSource"&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"PATH_TO_NEVER_GONNA_GIVE_YOU_UP_FILE"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"video/mp4"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
          Your browser does not support the video tag.
        &lt;span class="nt"&gt;&amp;lt;/video&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2: Convince your friend/s&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Tell your friend/s created your own website and would like to share it w/ them. Once they're convinced, share the website, and let the prank begin!  😆😆😆&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2. Spamming their email&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Emails from strangers are just a nuisance people have to constantly deal with. But what would happen if you combined constant email spamming, w/ Rick-Rolling? &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Write Your Code&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Using Python, we can send emails with the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;smtplib&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;email.mime.multipart&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MIMEMultipart&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;email.mime.text&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MIMEText&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;email.mime.base&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MIMEBase&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;encoders&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;send_email_with_video&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="c1"&gt;# Email sender and recipient
&lt;/span&gt;    &lt;span class="n"&gt;sender_email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your_email@example.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;receiver_email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;receiver_email@example.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;password&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your_password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;  &lt;span class="c1"&gt;# Use an app password for security if possible
&lt;/span&gt;
    &lt;span class="c1"&gt;# Create the email message
&lt;/span&gt;    &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;MIMEMultipart&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;From&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sender_email&lt;/span&gt;
    &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;To&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;receiver_email&lt;/span&gt;
    &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Subject&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Subject: Video Attachment&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

    &lt;span class="c1"&gt;# Email body text
&lt;/span&gt;    &lt;span class="n"&gt;body&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hi, do watch this, it&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s fire!!!!!.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;attach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;MIMEText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;plain&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="c1"&gt;# Attach the video file
&lt;/span&gt;    &lt;span class="n"&gt;file_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;path_Never_Gonna_Give_Up_Video.mp4&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;  &lt;span class="c1"&gt;# Replace with the path to your video
&lt;/span&gt;    &lt;span class="n"&gt;file_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;video.mp4&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;  &lt;span class="c1"&gt;# Replace with the name of your video file
&lt;/span&gt;    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;video_file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;part&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;MIMEBase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;application&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;octet-stream&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_payload&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;video_file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
        &lt;span class="n"&gt;encoders&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode_base64&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;part&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Content-Disposition&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;attachment; filename=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;file_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;attach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;part&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Set up the SMTP server and send the email
&lt;/span&gt;    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;smtplib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;SMTP&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;smtp.gmail.com&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;587&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="c1"&gt;# Replace with your email provider's SMTP server
&lt;/span&gt;            &lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;starttls&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sender_email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Email sent successfully!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;Exception&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you run this, it would only send the email once. To make it repetitive, we have to go on to step 2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Make the code run continuously&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By adding the following to the code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;send_emails_every_10_seconds&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="c1"&gt;# Infinite loop to send emails repeatedly
&lt;/span&gt;        &lt;span class="nf"&gt;send_email_with_video&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Waiting for 10 seconds before sending the next email...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# Wait for 10 seconds
&lt;/span&gt;
&lt;span class="c1"&gt;# Call the function to start sending emails every 10 seconds g
&lt;/span&gt;&lt;span class="nf"&gt;send_emails_every_10_seconds&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the program will send emails to whatever person you want to terrorize 🤣🤣🤣. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;3. Everlasting Rick-Rolling&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The two examples above are surely going the prank the heck out of your friends! But know this, they were just an appetizer, a sample, of what this one is. And this, my fellow programmers, will truly make you, a Rick-Rolling Master.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Install &lt;code&gt;pygame&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For this to work, we'll need to install a Python package known as &lt;code&gt;pygame&lt;/code&gt;. Simply do that by typing the following into your IDE's terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install pygame
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2: Write Your Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Finished with step one, create a Python file. Once you've done that, add the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;pygame&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;

&lt;span class="n"&gt;sound_file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;  &lt;span class="c1"&gt;# Replace with the actual path
&lt;/span&gt;
&lt;span class="n"&gt;pygame&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mixer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;init&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;sound&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pygame&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mixer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Sound&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sound_file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;sound&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;play&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="c1"&gt;# If you want to wait for the sound to finish playing:
&lt;/span&gt;        &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;pygame&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mixer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_busy&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
            &lt;span class="n"&gt;pygame&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# Wait a bit
&lt;/span&gt;    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;pygame&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error playing sound: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;pygame&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mixer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;quit&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3: Create Another Python File&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you send the file above to an experienced programmer, they won't be stupid enough to run it. To avoid that, create another file, and in it simply add the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;file_name_containing_Rick_Rolling_Code&lt;/span&gt;

&lt;span class="nf"&gt;file_name_containing_Rick_Rolling_Code&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4: Make the File &lt;code&gt;.exe&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you sent the file made in step 3 to your friend, and they run it, woe is you! To avoid that, you need to make the file &lt;code&gt;.exe&lt;/code&gt; using a tool called PyInstaller. First, install the tool w/ by writing this command in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install PyInstaller
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Afterwards, run the following in your command prompt to make your Python file executable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pyinstaller -w --onefile your_script.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 5: Send the File to Your Friend&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After creating the &lt;code&gt;.exe&lt;/code&gt; file, import it to your Google Drive, then send an email to your friend, stating (or at least along the lines of): &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hey dude, just created a new Python program! To see if it can work with Windows or Linux Commands, be sure to run the file by typing in the terminal:&lt;/p&gt;

&lt;p&gt;pythonw file_name.exe = if you're using Windows device&lt;br&gt;
nohup python file_name.exe &amp;amp; = if you're using linux device&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Unbeknownst to your friend, the commands (pythonw file_name.py or nohup python file_name.py &amp;amp;) will Rick-Roll them until they restart their device or logout 🤣🤣🤣! &lt;/p&gt;

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

&lt;p&gt;In this post, you've explored three ways to Rick-Roll your friends:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;With a simple website&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Spamming their email&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Running infinite code which blasts the song every 30 seconds&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hopefully these techniques will work and be free to share any doubts or what happened when you tried these tricks on your friend. GDBL and talk to you soon ❤️❤️❤️ ✌️✌️✌️!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Best Assistant for Coding: Gemini, ChatGPT, or DeepSeek?</title>
      <dc:creator>Stuxint</dc:creator>
      <pubDate>Mon, 24 Mar 2025 11:34:43 +0000</pubDate>
      <link>https://dev.to/stuxint/the-best-assistant-for-coding-gemini-chatgpt-or-deepseek-34fm</link>
      <guid>https://dev.to/stuxint/the-best-assistant-for-coding-gemini-chatgpt-or-deepseek-34fm</guid>
      <description>&lt;p&gt;With LLMs getting better and better, it's no wonder coders of all levels are using AI to up their game. At first, ChatGPT was the go-to place for any code issues. But with the rise of other AI platforms such as Gemini and DeepSeek, it's hard to decide which one to use. Well, say no more! In this post, I'll see which chatbot is the best coding assistant, based on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The programs they generate&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Who's the best at catching and fixing errors&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Who will complement more&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;1️⃣st Test: Generating&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;For this test, I wanted to see which chatbot would create a better html webpage once given the following prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Create a short, yet dynamic html website containing images (and maybe some GIFs) discussing the recent developments in AI&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The outcome was quite surprising. Let me start by displaying the results:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Gemini's:&lt;/strong&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%2F37qd7zqd465mudo0niee.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%2F37qd7zqd465mudo0niee.png" alt="Image description" width="800" height="1188"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. ChatGPT's:&lt;/strong&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%2F5w0tq7pfkmlradwvp85q.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%2F5w0tq7pfkmlradwvp85q.png" alt="Image description" width="800" height="968"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. DeepSeek's (Sorry about image, had trouble combining website screenshots into one thing):&lt;/strong&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%2F7fc6ep2tvmeckztzob09.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%2F7fc6ep2tvmeckztzob09.png" alt="Image description" width="800" height="1679"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I will admit they all look great! But ChatGPT's... it's not so great. It appears that the images it wanted to have didn't load, and to add fire to the fuel, the GIF it has doesn't show anything. &lt;/p&gt;

&lt;p&gt;That leaves Gemini and DeepSeek. They both have beautiful and well written websites. But when you compare the two, DeepSeek gives more incite to AI, such as recent policies made, and steps done towards autonomy. So, I would say DeepSeek won this challenge, with Gemini coming in 2nd, and ChatGPT in dead last 😞😞😞.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2️⃣nd Test: Catching and Fixing Errors&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To see which chatbot is better at detecting errors, I'll give each of them two prompts, to see which mistakes they catch and fix, and which ones they don't. First, they'll have to check the code given in the prompt below:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Catch any errors in the calculator program and fix them:&lt;/p&gt;


&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Answer: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now considering the code is for beginners, it wasn't surprising that the chatbots noticed the mistakes. Gemini, however, didn't notify me that there was a missing quotation mark for print(), but simply corrected the error. ChatGPT and DeepSeek on the other hand, noted the mistake, and like Gemini, mentioned that my program wouldn't add c and d, but concatenate them.&lt;/p&gt;

&lt;p&gt;For the next prompt, each chatbots be asked to do the following:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Catch any errors in the timer program and fix them:&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;

&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;timer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Timer is finished!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;Like in the previous prompt, Gemini misses the mi nude detail, which in this case, is the fact that time.timer() doesn't even exist. And just like before, ChatGPT and DeepSeek were quick to find that very mistake. So, the W is going to go to both ChatGPT and DeepSeek, with Gemini going in last😞😞😞.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;3️⃣rd Test: Complementing&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;All programmers like to be complemented, even if they're code is just so bull...bull nothing horrible (😁😁😁). To see which ones better, I'll make the chatbots review the awful code written in the given prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Say the best thing about the code below:&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Hello&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Hello baddy&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Hello diddy--don't condone what he did/does!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Hello&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Hello&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Hello&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Hello&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Hello&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;I am such a noooobb!!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;The results: Quite shocking 😲! In Gemini's response, it noted:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The best thing about this code is its simplicity and clarity. Even a complete beginner could easily understand what it will display in a web browser.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In DeepSeek's response, it noted:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The best thing about this HTML code is its simplicity and clarity, and that I had: Clean Structure, Readability, and Humor &amp;amp; Personality (Gotta add it also gave me some ways to improve, Gemini and Chat...nothing didn't do that 😆😆)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In ChatGPT's response, it noted:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The best thing about this code is its simplicity and structure.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Of course, we all know the winner of this challenge is DeepSeek, especially since it's noticed the humor in the noob-written code.&lt;/p&gt;

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

&lt;p&gt;When we tally up the scores, we find DeepSeek to be the winner! With its eye for mistakes and great complements, it's truly a coder's best friend. However, this shouldn't stop you from using Gemini and ChatGPT, as they too offer many perks to improve your coding.&lt;/p&gt;

&lt;p&gt;Anyway, thanks for reading, and as always, PEACE✌️✌️✌️!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Just Made a Tic-Tac-Toe Game in Python (How You Can Too)</title>
      <dc:creator>Stuxint</dc:creator>
      <pubDate>Sun, 23 Mar 2025 10:39:55 +0000</pubDate>
      <link>https://dev.to/stuxint/just-made-a-tic-tac-toe-game-in-python-how-you-can-too-1nkj</link>
      <guid>https://dev.to/stuxint/just-made-a-tic-tac-toe-game-in-python-how-you-can-too-1nkj</guid>
      <description>&lt;p&gt;It's easy to think that making a tic-tac-toe game using Python is complicated, time-consuming, and just for really advanced developers. In reality it isn't, and in just a few steps, I'll show you how to make a simple tic-tac-toe game.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 1: Create the Layout&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We'll start by creating a Python file. Afterwards, we'll import Tkinter (module for creating GUIs in Python) then define things such as fonts, the GUI's size and background, and so on:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from tkinter import *
from tkinter import font

root = Tk()
root.title("Python-Tic-Tac-Toe Game")
root.configure(bg='lightblue') # Sets GUI background to lightblue
root.geometry("300x400") # Defines size of GUI
root.resizable(False, False) # Says GUI can't be resized

f = font.Font(family='Courier', size=24) 
o = font.Font(family='Courier', size=18) 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Great! Now, wouldn't it be good to have a welcome page w/ a 'Yes' or 'No' button? I bet you said yes (and if you didn't, go back to Ohio!). To do that, simply type/copy and paste:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;l = Label(root, text="Python Tic\nTac Toe Game", font=f, bg='lightblue')
l.place(x=30, y=30)

b = Label(root, text="Wish to continue?", font=o, bg='lightblue')
b.place(x=30, y=150)

c = Button(root, text="Yes", font=o, width=10, height=1, bg='white')
c.place(x=70, y=220)

d = Button(root, text="No", font=o, width=10, height=1, bg='white')
d.place(x=70, y=290)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Our program should now look something 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%2F0iibg3tj1lgcmpd1tzty.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%2F0iibg3tj1lgcmpd1tzty.png" alt="Image description" width="448" height="632"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our program looks great! But if you notice, the buttons won't do anything. To solve that, underneath d.place(), type/copy and paste:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;d.config(command=da) 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and underneath c.place(), type/copy and paste:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;c.config(command=ca) 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that, create and fill in functions da and ca, like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def da():
    root.destroy() #This deletes the GUI when someone clicks the button 'No'

def ca():
   l.destroy()
   b.destroy()
   d.destroy()
   c.destroy()

    global vas
    global av
    global ab

    vas = Label(root, text="Which one would\nyou like to use?", font=o, bg='lightblue')
    vas.place(x=30, y=30)

    av = Button(root, text="X", font=o, bg='white', width=5, height=2)
    av.place(x=30, y=150)

    ab = Button(root, text="O", font=o, bg='white', width=5, height=2)
    ab.place(x=170, y=150)


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

&lt;/div&gt;



&lt;p&gt;This will delete the contents from the welcome page and replace them with new text (that being 'Which one would you like to use?') and new buttons (that being X or O). Now, once we click 'Yes', or GUI should 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%2Fllutcv675r89y0w5n2t1.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%2Fllutcv675r89y0w5n2t1.png" alt="Image description" width="446" height="648"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 2: Create the Tic-Tac-Toe board&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We've now created a welcome page, and given the user the ability to choose either X or O. But sadly, the buttons don't do anything, and we still haven't made the actual tic-tac-toe board. To fix that, underneath av.place() type/copy and paste:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;av.config(command=x)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and underneath ab.place() type/copy and paste:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ab.config(command=ask)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once finished, create and fill in functions x and ask, like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def x():
    global vas, av, ab, ba, bb, bc, bd, be, bf, bg, bh, bi, label, i, buttons
    vas.destroy()
    av.destroy()
    ab.destroy()



    # Row 1
    ba = Button(root, font=o, bg='white', width=5, height=2, text=' ', command=lambda: u_action(ba, buttons))
    ba.place(x=30, y=70)


    bb = Button(root, font=o, bg='white', width=5, height=2, text=' ', command=lambda: u_action(bb, buttons))
    bb.place(x=110, y=70)


    bc = Button(root, font=o, bg='white', width=5, height=2, text=' ', command=lambda: u_action(bc, buttons))
    bc.place(x=190, y=70)

    # Row 2
    bd = Button(root, font=o, bg='white', width=5, height=2, text=' ', command=lambda: u_action(bd, buttons))
    bd.place(x=30, y=145)


    be = Button(root, font=o, bg='white', width=5, height=2, text=' ', command=lambda: u_action(be, buttons))
    be.place(x=110, y=145)

    bf = Button(root, font=o, bg='white', width=5, height=2, text=' ', command=lambda: u_action(bf, buttons))
    bf.place(x=190, y=145)


    # Row 3
    bg = Button(root, font=o, bg='white', width=5, height=2, text=' ', command=lambda: u_action(bg, buttons))
    bg.place(x=30, y=220)

    bh = Button(root, font=o, bg='white', width=5, height=2, text=' ', command=lambda: u_action(bh, buttons))
    bh.place(x=110, y=220)

    bi = Button(root, font=o, bg='white', width=5, height=2, text=' ', command=lambda: u_action(bi, buttons))
    bi.place(x=190, y=220)

    label = Label(root, text=f'TIMER:\nO:15', font=o, bg='lightblue')
    label.place(x=100, y=10)

    buttons = [ba, bb, bc, bd, be, bf, bg, bh, bi]

    start_time = Time.time()

    for i in range(15, -1, -1):
        label.config(text=f'TIMER:\nO:{i}')
        root.update() #force the label to update.
        Time.sleep(0.8) #add a one second delay, so the user can see the change.

    end = Time.time()

    r = end - start_time
    result = 12 - r



    if result &amp;lt; 1:
        for button in buttons:
            button.config(state=DISABLED)
        label.destroy()
        d = Label(root, text='No Winner: Tie!!!!', font=o, bg='lightblue')
        d.place(x=20, y=30)


def ask():
    global vas, av, ab, b1, b2, b3, b4, b5, b6, b7, b8, b9, label, buttons1 
    vas.destroy()
    av.destroy()
    ab.destroy()



    # Row 1
    b1 = Button(root, font=o, bg='white', width=5, height=2, text=' ', command=lambda: u_action1(b1, buttons1))
    b1.place(x=30, y=70)


    b2 = Button(root, font=o, bg='white', width=5, height=2, text=' ', command=lambda: u_action1(b2, buttons1))
    b2.place(x=110, y=70)


    b3 = Button(root, font=o, bg='white', width=5, height=2, text=' ', command=lambda: u_action1(b3, buttons1))
    b3.place(x=190, y=70)

    # Row 2
    b4 = Button(root, font=o, bg='white', width=5, height=2, text=' ', command=lambda: u_action1(b4, buttons1))
    b4.place(x=30, y=145)


    b5 = Button(root, font=o, bg='white', width=5, height=2, text=' ', command=lambda: u_action1(b5, buttons1))
    b5.place(x=110, y=145)

    b6 = Button(root, font=o, bg='white', width=5, height=2, text=' ', command=lambda: u_action1(b6, buttons1))
    b6.place(x=190, y=145)


    # Row 3
    b7 = Button(root, font=o, bg='white', width=5, height=2, text=' ', command=lambda: u_action1(b7, buttons1))
    b7.place(x=30, y=220)

    b8 = Button(root, font=o, bg='white', width=5, height=2, text=' ', command=lambda: u_action1(b8, buttons1))
    b8.place(x=110, y=220)

    b9 = Button(root, font=o, bg='white', width=5, height=2, text=' ', command=lambda: u_action1(b9, buttons1))
    b9.place(x=190, y=220)


    label = Label(root, text=f'TIMER:\nO:15', font=o, bg='lightblue')
    label.place(x=100, y=10)

    buttons1 = [b1, b2, b3, b4, b5, b6, b7, b8, b9]

    start_time = Time.time()

    for i in range(15, -1, -1):
            label.config(text=f'TIMER:\nO:{i}')
            root.update() #force the label to update.
            Time.sleep(0.8) #add a one second delay, so the user can see the change.

    end = Time.time()

    r = end - start_time
    result = 12 - r


    if result &amp;lt; 1:
        for button in buttons1:
            button.config(state=DISABLED)
        label.destroy()
        d = Label(root, text='No Winner: Tie!!!!', font=o, bg='lightblue')
        d.place(x=20, y=30)

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

&lt;/div&gt;



&lt;p&gt;With these functions, you should have the tic-tac-toe board as well as a 15 second timer:&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%2F1ze722zwmbfhaik1nkfy.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%2F1ze722zwmbfhaik1nkfy.png" alt="Image description" width="437" height="593"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(P.S: If the timer isn't what you wish it to be, you can always change it in text=f'TIMER:\nO:15' and for i in range(15, -1, -1) )&lt;/p&gt;

&lt;p&gt;Again, we're faced with the issue of the buttons not doing anything. To solve that, we'll have to...&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 3: Allow User to Play&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Start by creating functions, u_action and u_action1, and fill them in with the code below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def u_action(button, buttons):
    button.config(text='X')
    button.config(state=DISABLED)

def u_action1(button, buttons1):
    button.config(text='O')
    button.config(state=DISABLED)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, once we click a button, it becomes filled with X or O and is then disabled (as in it can't be clicked again). It's progress, but tic-tac-toe wasn't made for just one player. To fix that, we'll need to create a bot, and since I said this tutorial would be easy, simply download the Logic module (link: &lt;a href="https://drive.google.com/file/d/1aWYqNuVPvVdRNNtXuo670ULCxJMiJ8Bq/view?usp=sharing" rel="noopener noreferrer"&gt;https://drive.google.com/file/d/1aWYqNuVPvVdRNNtXuo670ULCxJMiJ8Bq/view?usp=sharing&lt;/a&gt;), then import it into your file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import Logic #make sure 'l' is uppercase to avoid errors.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Afterwards, add the line below to u_action():&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Logic.b_action(root, buttons, label, o)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and add this code to u_action1():&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Logic.b_action1(root, buttons1, label, o)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Congrats 🎉🎉🎉! You've officially made your very own tic-tac-toe game, with a welcome page, ability to choose X or O, and a bot to play against! Hopefully you've enjoyed making it as much as I did, and if you have any questions, please leave a comment. PEACE!✌️✌️✌️&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Just created a Linux GUI using Python</title>
      <dc:creator>Stuxint</dc:creator>
      <pubDate>Tue, 04 Mar 2025 11:28:50 +0000</pubDate>
      <link>https://dev.to/stuxint/just-created-a-linux-gui-using-python-gbn</link>
      <guid>https://dev.to/stuxint/just-created-a-linux-gui-using-python-gbn</guid>
      <description>&lt;p&gt;After days, weeks, and months of hard work, I have now created NTEIM(still working on the acronym, LOL), if not, the WORLD'S FIRST PYTHON LINUX GUI! Though it doesn't come equipped w/ all Linux commands, you can move, create, or delete files and some many other things. It's repo (NTEIM Linux GUI) available in git, so do check it out, and be free to give any suggestions for v2.0.0!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>python</category>
      <category>git</category>
    </item>
  </channel>
</rss>
