<?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: Tahami AK SERVICES</title>
    <description>The latest articles on DEV Community by Tahami AK SERVICES (@tahami_akservices_cb075e).</description>
    <link>https://dev.to/tahami_akservices_cb075e</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3968766%2F562c21dd-97b7-4c94-b5d4-e91491cc82dd.png</url>
      <title>DEV Community: Tahami AK SERVICES</title>
      <link>https://dev.to/tahami_akservices_cb075e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tahami_akservices_cb075e"/>
    <language>en</language>
    <item>
      <title>Your AI Agent Doesn't Need the Keys: A Beginner's Guide to Least Privilege</title>
      <dc:creator>Tahami AK SERVICES</dc:creator>
      <pubDate>Sat, 26 Sep 2026 17:02:41 +0000</pubDate>
      <link>https://dev.to/tahami_akservices_cb075e/your-ai-agent-doesnt-need-the-keys-a-beginners-guide-to-least-privilege-46da</link>
      <guid>https://dev.to/tahami_akservices_cb075e/your-ai-agent-doesnt-need-the-keys-a-beginners-guide-to-least-privilege-46da</guid>
      <description>&lt;p&gt;&lt;strong&gt;Imagine building an AI coding assistant that can:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Read your project&lt;br&gt;
Modify files&lt;br&gt;
Run commands&lt;br&gt;
Call APIs&lt;br&gt;
Access Git&lt;br&gt;
Interact with external tools&lt;/p&gt;

&lt;p&gt;That's ...&lt;a href="https://shortlink.win/1EJhI" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But from a security perspective, I immediately have another question:&lt;/p&gt;

&lt;p&gt;What happens if the agent is manipulated?&lt;/p&gt;

&lt;p&gt;This is where one of the oldest cybersecurity principles becomes extremely relevant:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Least privilege&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Give a system only the permissions it ...&lt;a href="https://shortlink.win/1EJhI" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Capability isn't authorization&lt;/p&gt;

&lt;p&gt;An AI agent might be capable of deleting a file.&lt;/p&gt;

&lt;p&gt;That doesn't mean it should have permission to delete every file.&lt;/p&gt;

&lt;p&gt;It might be capable of calling an API.&lt;/p&gt;

&lt;p&gt;That doesn't mean it needs administrator-level API access.&lt;/p&gt;

&lt;p&gt;It might be capable of accessing a database.&lt;/p&gt;

&lt;p&gt;That doesn't mean it ...&lt;a href="https://shortlink.win/1EJhI" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This distinction is simple but important:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Capability ≠ authorization.&lt;/p&gt;

&lt;p&gt;Why prompt injection makes this important&lt;/p&gt;

&lt;p&gt;AI systems can process information from external sources.&lt;/p&gt;

&lt;p&gt;That information might contain instructions that attempt to ...&lt;a href="https://shortlink.win/1EJhI" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;OWASP identifies prompt injection as a major AI security concern and recommends least-privilege access, human approval for high-risk operations and independent enforcement of...&lt;a href="https://shortlink.win/1EJhI" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Consider two agents.&lt;/p&gt;

&lt;p&gt;Agent A&lt;/p&gt;

&lt;p&gt;Read-only access to one project.&lt;/p&gt;

&lt;p&gt;Agent B&lt;/p&gt;

&lt;p&gt;Read/write access to the entire machine + cloud credential ...&lt;a href="https://shortlink.win/1EJhI" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If both encounter malicious instructions, the second architecture has a much larger potential blast radius.&lt;/p&gt;

&lt;p&gt;That's why limiting permissions matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A simple security checklist&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before giving an AI agent a tool, ask:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Does it actually need this tool?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If not, don't connect it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Does it need write access?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Maybe read-only access is enough.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Does it need access to the whole system?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Probably not.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Does the action require human approval?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If it can cause serious damage, consider ...&lt;a href="https://shortlink.win/1EJhI" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Are the actions logged?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If something goes wrong, you need visibility.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Can the agent be isolated?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For coding agents and command execution, sandboxing can reduce the blast radius.&lt;/p&gt;

&lt;p&gt;OWASP's current guidance for AI-agent security recommends least privilege, sandboxing/isolation where appropriate, monitoring, human oversight and ...&lt;a href="https://shortlink.win/1EJhI" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The security mindset&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When we talk about AI security, it's tempting to focus entirely on the model.&lt;/p&gt;

&lt;p&gt;But secure AI is also about the architecture ...&lt;a href="https://shortlink.win/1EJhI" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Model&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Application&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Authorization&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Tools&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Data&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;External systems&lt;/p&gt;

&lt;p&gt;Every connection creates another security boundary.&lt;/p&gt;

&lt;p&gt;The model shouldn't be trusted with security decisions that the application can ...&lt;a href="https://shortlink.win/1EJhI" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final lesson&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI agents are becoming more capable.&lt;/p&gt;

&lt;p&gt;That doesn't mean they should become more privileged.&lt;/p&gt;

&lt;p&gt;In fact, the opposite may be true:&lt;/p&gt;

&lt;p&gt;The more powerful the agent becomes, the more carefully we should control ...&lt;a href="https://shortlink.win/1EJhI" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Build powerful agents.&lt;/p&gt;

&lt;p&gt;Give them useful tools.&lt;/p&gt;

&lt;p&gt;But don't give them every key.&lt;/p&gt;

&lt;p&gt;What would you restrict first in an AI coding agent: file access, shell commands, API credentials, or network access?&lt;/p&gt;

&lt;h1&gt;
  
  
  ai #security #programming #devops #cybersecurity
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>programming</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Build a File Integrity Checker in Python: Detect Modified, Missing, and Unchanged Files</title>
      <dc:creator>Tahami AK SERVICES</dc:creator>
      <pubDate>Sun, 20 Sep 2026 18:15:13 +0000</pubDate>
      <link>https://dev.to/tahami_akservices_cb075e/build-a-file-integrity-checker-in-python-detect-modified-missing-and-unchanged-files-2fc2</link>
      <guid>https://dev.to/tahami_akservices_cb075e/build-a-file-integrity-checker-in-python-detect-modified-missing-and-unchanged-files-2fc2</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Have you ever wondered how you can detect whether an important file has been changed without ...&lt;a href="https://shortlink.win/1EhsJ" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A simple and powerful answer is file hashing.&lt;/p&gt;

&lt;p&gt;In this project, we'll build a small File Integrity Checker in Python that can:&lt;/p&gt;

&lt;p&gt;🔐 Generate SHA-256 and MD5 hashes&lt;br&gt;
💾 Save a trusted baseline&lt;br&gt;
🔎 Compare files against that baseline&lt;br&gt;
⚠️ Detect modified files&lt;br&gt;
❌ Detect missing files&lt;br&gt;
✅ Identify unchanged files&lt;br&gt;
📁 Monitor multiple files&lt;br&gt;
💾 Keep the baseline between program runs&lt;/p&gt;

&lt;p&gt;This is a simple project, but it introduces an important cybersecurity concept used in real ...&lt;a href="https://shortlink.win/1EhsJ" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;** First: What Is File Integrity?**&lt;/p&gt;

&lt;p&gt;A file can look normal while its contents have been changed.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;config.txt&lt;/p&gt;

&lt;p&gt;Before modification:&lt;/p&gt;

&lt;p&gt;username=admin&lt;/p&gt;

&lt;p&gt;After modification:&lt;/p&gt;

&lt;p&gt;username=attacker&lt;/p&gt;

&lt;p&gt;The filename is still the same.&lt;/p&gt;

&lt;p&gt;But the content is different.&lt;/p&gt;

&lt;p&gt;This is where a hash ...&lt;a href="https://shortlink.win/1EhsJ" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;** What Is a Hash?**&lt;/p&gt;

&lt;p&gt;A hash function takes data and produces a fixed-length value.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;File&lt;br&gt;
  ↓&lt;br&gt;
SHA-256&lt;br&gt;
  ↓&lt;br&gt;
e3b0c44298fc1c149afbf4c8996fb924...&lt;/p&gt;

&lt;p&gt;If the file changes, its hash normally ...&lt;a href="https://shortlink.win/1EhsJ" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So we can compare:&lt;/p&gt;

&lt;p&gt;Original Hash&lt;br&gt;
       ↓&lt;br&gt;
Current Hash&lt;br&gt;
       ↓&lt;br&gt;
Same? → Unchanged&lt;br&gt;
Different? → Modified&lt;/p&gt;

&lt;p&gt;** Step 1 Import Python Libraries**&lt;/p&gt;

&lt;p&gt;We'll use Python's built-in libraries:&lt;/p&gt;

&lt;p&gt;import hashlib&lt;br&gt;
import json&lt;br&gt;
from pathlib import Path&lt;/p&gt;

&lt;p&gt;No external package is required.&lt;/p&gt;

&lt;p&gt;** Step 2 Create a Hash Function**&lt;/p&gt;

&lt;p&gt;def calculate_hash(file_path, algorithm="sha256"):&lt;br&gt;
    hash_function = hashlib.new(algorithm)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;with open(file_path, "rb") as file:
    while chunk := file.read(4096):
        hash_function.update(chunk)

return hash_function.hexdigest()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Here we're reading the file in small chunks instead of loading the entire file ...&lt;a href="https://shortlink.win/1EhsJ" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's useful when working with larger files.&lt;/p&gt;

&lt;p&gt;** Step 3 Create a Baseline**&lt;/p&gt;

&lt;p&gt;The baseline represents the files in their trusted state.&lt;/p&gt;

&lt;p&gt;def create_baseline(files):&lt;br&gt;
    baseline = {}&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for file_path in files:
    path = Path(file_path)

    if path.exists():
        baseline[str(path)] = {
            "sha256": calculate_hash(path, "sha256"),
            "md5": calculate_hash(path, "md5")
        }

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

&lt;/div&gt;

&lt;p&gt;We can then save this information as JSON.&lt;/p&gt;

&lt;p&gt;def save_baseline(baseline, filename="baseline.json"):&lt;br&gt;
    with open(filename, "w") as file:&lt;br&gt;
        json.dump(baseline, file, indent=4)&lt;/p&gt;

&lt;p&gt;Now our program has a record of what the trusted files ...&lt;a href="https://shortlink.win/1EhsJ" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4 Compare the Current Files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now we need to check whether anything has changed.&lt;/p&gt;

&lt;p&gt;def check_integrity(baseline):&lt;br&gt;
    for file_path, hashes in baseline.items():&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    path = Path(file_path)

    if not path.exists():
        print(f"[MISSING] {file_path}")
        continue

    current_hash = calculate_hash(path, "sha256")

    if current_hash == hashes["sha256"]:
        print(f"[UNCHANGED] {file_path}")
    else:
        print(f"[MODIFIED] {file_path}")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now we have three useful results:&lt;/p&gt;

&lt;p&gt;[UNCHANGED]&lt;br&gt;
[MODIFIED]&lt;br&gt;
[MISSING]&lt;br&gt;
 What Happens When a File Changes?&lt;/p&gt;

&lt;p&gt;Imagine our baseline contains:&lt;/p&gt;

&lt;p&gt;config.txt&lt;br&gt;
SHA-256:&lt;br&gt;
ABC123...&lt;/p&gt;

&lt;p&gt;Someone modifies the file.&lt;/p&gt;

&lt;p&gt;We calculate the hash again:&lt;/p&gt;

&lt;p&gt;config.txt&lt;br&gt;
SHA-256:&lt;br&gt;
XYZ789...&lt;/p&gt;

&lt;p&gt;The values don't match.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Our program reports:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;[MODIFIED] config.txt&lt;/p&gt;

&lt;p&gt;That's the basic idea behind file ...&lt;a href="https://shortlink.win/1EhsJ" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What About Deleted Files?&lt;/p&gt;

&lt;p&gt;Suppose the baseline contains:&lt;/p&gt;

&lt;p&gt;config.txt&lt;br&gt;
database.conf&lt;br&gt;
users.csv&lt;/p&gt;

&lt;p&gt;But someone deletes:&lt;/p&gt;

&lt;p&gt;users.csv&lt;/p&gt;

&lt;p&gt;The program checks whether the path exists.&lt;/p&gt;

&lt;p&gt;It doesn't.&lt;/p&gt;

&lt;p&gt;So we get:&lt;/p&gt;

&lt;p&gt;[MISSING] users.csv&lt;/p&gt;

&lt;p&gt;This makes the tool useful for detecting both ...&lt;a href="https://shortlink.win/1EhsJ" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;** Complete Basic Version**&lt;/p&gt;

&lt;p&gt;Here is a simple complete version:&lt;/p&gt;

&lt;p&gt;import hashlib&lt;br&gt;
import json&lt;br&gt;
from pathlib import Path&lt;/p&gt;

&lt;p&gt;BASELINE_FILE = "baseline.json"&lt;/p&gt;

&lt;p&gt;def calculate_hash(file_path, algorithm="sha256"):&lt;br&gt;
    hash_function = hashlib.new(algorithm)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;with open(file_path, "rb") as file:
    while chunk := file.read(4096):
        hash_function.update(chunk)

return hash_function.hexdigest()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;def create_baseline(files):&lt;br&gt;
    baseline = {}&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for file_path in files:
    path = Path(file_path)

    if path.exists():
        baseline[str(path)] = {
            "sha256": calculate_hash(path, "sha256"),
            "md5": calculate_hash(path, "md5")
        }

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

&lt;/div&gt;

&lt;p&gt;def save_baseline(baseline):&lt;br&gt;
    with open(BASELINE_FILE, "w") as file:&lt;br&gt;
        json.dump(baseline, file, indent=4)&lt;/p&gt;

&lt;p&gt;def load_baseline():&lt;br&gt;
    with open(BASELINE_FILE, "r") as file:&lt;br&gt;
        return json.load(file)&lt;/p&gt;

&lt;p&gt;def check_integrity(baseline):&lt;br&gt;
    for file_path, hashes in baseline.items():&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    path = Path(file_path)

    if not path.exists():
        print(f"[MISSING] {file_path}")
        continue

    current_sha256 = calculate_hash(path, "sha256")

    if current_sha256 == hashes["sha256"]:
        print(f"[UNCHANGED] {file_path}")
    else:
        print(f"[MODIFIED] {file_path}")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;files_to_monitor = [&lt;br&gt;
    "example.txt",&lt;br&gt;
    "config.txt"&lt;br&gt;
]&lt;/p&gt;

&lt;p&gt;baseline = create_baseline(files_to_monitor)&lt;/p&gt;

&lt;p&gt;save_baseline(baseline)&lt;/p&gt;

&lt;p&gt;print("Baseline created.\n")&lt;/p&gt;

&lt;p&gt;baseline = load_baseline()&lt;/p&gt;

&lt;p&gt;print("Checking file integrity...\n")&lt;/p&gt;

&lt;p&gt;check_integrity(baseline)&lt;/p&gt;

&lt;p&gt;Why SHA-256?&lt;/p&gt;

&lt;p&gt;The project uses both MD5 and SHA-256 for learning and comparison.&lt;/p&gt;

&lt;p&gt;For actual integrity/security decisions, SHA-256 is the better choice.&lt;/p&gt;

&lt;p&gt;MD5 is considered cryptographically broken and should not be relied upon for modern ...&lt;a href="https://shortlink.win/1EhsJ" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The important concept here isn't simply memorizing algorithms.&lt;/p&gt;

&lt;p&gt;It's understanding:&lt;/p&gt;

&lt;p&gt;File → Hash → Baseline → Comparison → Detection&lt;/p&gt;

&lt;p&gt;** What I Learned From This Project**&lt;/p&gt;

&lt;p&gt;This project helped me understand that cybersecurity doesn't always require complicated tools.&lt;/p&gt;

&lt;p&gt;A relatively small Python program can demonstrate an important security concept:&lt;/p&gt;

&lt;p&gt;If we can establish a trusted state, we can compare future states against it and ...&lt;a href="https://shortlink.win/1EhsJ" rel="noopener noreferrer"&gt;Read More&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It also helped me practice:&lt;/p&gt;

&lt;p&gt;Python file handling&lt;br&gt;
Hashing&lt;br&gt;
JSON storage&lt;br&gt;
Exception/error thinking&lt;br&gt;
Security monitoring&lt;br&gt;
Baseline creation&lt;br&gt;
Change detection&lt;br&gt;
 Ideas to Improve the Project&lt;/p&gt;

&lt;p&gt;There are many ways to make this project more advanced.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Version 2&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add:&lt;/p&gt;

&lt;p&gt;Timestamp logging&lt;br&gt;
Multiple directories&lt;br&gt;
Configuration files&lt;br&gt;
Better error handling&lt;br&gt;
Detailed modification reports&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Version 3&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add:&lt;/p&gt;

&lt;p&gt;Real-time monitoring&lt;br&gt;
Email alerts&lt;br&gt;
Log files&lt;br&gt;
Dashboard&lt;br&gt;
Scheduled scans&lt;br&gt;
Windows/Linux support&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Version 4&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Turn it into a proper File Integrity Monitoring (FIM) tool.&lt;/p&gt;

&lt;p&gt;That would make it much closer to a real security ...&lt;a href="https://shortlink.win/1EhsJ" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;** Final Thoughts**&lt;/p&gt;

&lt;p&gt;This project started with a simple question:&lt;/p&gt;

&lt;p&gt;"How can I know if a file has been changed?"&lt;/p&gt;

&lt;p&gt;The answer led to hashing, baselines, and integrity monitoring.&lt;/p&gt;

&lt;p&gt;That's what I enjoy about cybersecurity projects.&lt;/p&gt;

&lt;p&gt;A simple programming concept can become a practical ...&lt;a href="https://shortlink.win/1EhsJ" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Build → Test → Break → Improve → Learn. &lt;/p&gt;

&lt;p&gt;If you're learning Python and cybersecurity, try building your own version instead of simply ...&lt;a href="https://shortlink.win/1EhsJ" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>cybersecurity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🐍 One of my biggest Python lessons: input() gives you text, even when you type a number. Don't blame your logic immediately read the error, check the type, make one change, and try again. My experience 👇 https://dev.to/tahami_akservices_cb075e</title>
      <dc:creator>Tahami AK SERVICES</dc:creator>
      <pubDate>Mon, 07 Sep 2026 11:47:47 +0000</pubDate>
      <link>https://dev.to/tahami_akservices_cb075e/one-of-my-biggest-python-lessons-input-gives-you-text-even-when-you-type-a-number-dont-b1k</link>
      <guid>https://dev.to/tahami_akservices_cb075e/one-of-my-biggest-python-lessons-input-gives-you-text-even-when-you-type-a-number-dont-b1k</guid>
      <description>&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://dev.to/tahami_akservices_cb075e" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" 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%2F3otvb2z646ytpt1hl2rv.jpg" height="400" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://dev.to/tahami_akservices_cb075e" rel="noopener noreferrer" class="c-link"&gt;
            Tahami AK SERVICES - DEV Community
          &lt;/a&gt;
        &lt;/h2&gt;
          
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" 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%2F8j7kvp660rqzt99zui8e.png" width="300" height="299"&gt;
          dev.to
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>🐍 One of my biggest Python lessons: input() gives you text, even when you type a number. Don't blame your logic immediately read the error, check the type, make one change, and try again. My experience 👇 https://dev.to/tahami_akservices_cb075e</title>
      <dc:creator>Tahami AK SERVICES</dc:creator>
      <pubDate>Mon, 07 Sep 2026 10:41:20 +0000</pubDate>
      <link>https://dev.to/tahami_akservices_cb075e/one-of-my-biggest-python-lessons-input-gives-you-text-even-when-you-type-a-number-dont-1jj5</link>
      <guid>https://dev.to/tahami_akservices_cb075e/one-of-my-biggest-python-lessons-input-gives-you-text-even-when-you-type-a-number-dont-1jj5</guid>
      <description>&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://dev.to/tahami_akservices_cb075e" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" 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%2F3otvb2z646ytpt1hl2rv.jpg" height="400" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://dev.to/tahami_akservices_cb075e" rel="noopener noreferrer" class="c-link"&gt;
            Tahami AK SERVICES - DEV Community
          &lt;/a&gt;
        &lt;/h2&gt;
          
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" 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%2F8j7kvp660rqzt99zui8e.png" width="300" height="299"&gt;
          dev.to
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Python Gave Me an Error Because I Forgot One Small Thing</title>
      <dc:creator>Tahami AK SERVICES</dc:creator>
      <pubDate>Mon, 07 Sep 2026 10:28:37 +0000</pubDate>
      <link>https://dev.to/tahami_akservices_cb075e/python-gave-me-an-error-because-i-forgot-one-small-thing-c24</link>
      <guid>https://dev.to/tahami_akservices_cb075e/python-gave-me-an-error-because-i-forgot-one-small-thing-c24</guid>
      <description>&lt;p&gt;&lt;strong&gt;A beginner Python mistake that taught me to stop blaming the code and start reading the error&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I started learning Python, I thought small programs would be easy.&lt;/p&gt;

&lt;p&gt;I decided to make a simple program that checks a student's marks.&lt;/p&gt;

&lt;p&gt;My first attempt...&lt;a href="https://omg10.com/4/11271622" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;marks = input("Enter your marks: ")&lt;/p&gt;

&lt;p&gt;if marks &amp;gt;= 50:&lt;br&gt;
    print("You passed!")&lt;br&gt;
else:&lt;br&gt;
    print("You failed!")&lt;/p&gt;

&lt;p&gt;It looked completely normal to me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I entered:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Enter your marks: 70&lt;/p&gt;

&lt;p&gt;And then Python complained. 😅&lt;/p&gt;

&lt;p&gt;At first, I was confused.&lt;/p&gt;

&lt;p&gt;"But 70 is greater than 50. Why isn't this working?"&lt;/p&gt;

&lt;p&gt;Then I looked at my code again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The problem was this:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;marks = input()&lt;br&gt;
The mistake&lt;/p&gt;

&lt;p&gt;When we use input(), Python receives the...&lt;a href="https://shortlink.win/1xHKl" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So even though I typed:&lt;/p&gt;

&lt;p&gt;70&lt;/p&gt;

&lt;p&gt;Python was treating it like:&lt;/p&gt;

&lt;p&gt;"70"&lt;/p&gt;

&lt;p&gt;I was trying to compare text with a number:&lt;/p&gt;

&lt;p&gt;"70" &amp;gt;= 50&lt;/p&gt;

&lt;p&gt;That's where my mistake was.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I needed to convert the input into an integer:&lt;/p&gt;

&lt;p&gt;marks = int(input("Enter your marks: "))&lt;/p&gt;

&lt;p&gt;if marks &amp;gt;= 50:&lt;br&gt;
    print("You passed!")&lt;br&gt;
else:&lt;br&gt;
    print("You failed!")&lt;/p&gt;

&lt;p&gt;Now when I enter:&lt;/p&gt;

&lt;p&gt;70&lt;/p&gt;

&lt;p&gt;Python understands it as the number:&lt;/p&gt;

&lt;p&gt;70&lt;/p&gt;

&lt;p&gt;And the program works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What did I actually learn?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The important lesson wasn't just "use int()."&lt;/p&gt;

&lt;p&gt;I learned something more important:&lt;/p&gt;

&lt;p&gt;Don't immediately assume...&lt;a href="https://shortlink.win/1xHKl" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When a program gives an error:&lt;/p&gt;

&lt;p&gt;Read the error.&lt;br&gt;
Look at the line causing the problem.&lt;br&gt;
Check what type of data you're working with.&lt;br&gt;
Make one change.&lt;br&gt;
Run the program again.&lt;/p&gt;

&lt;p&gt;As a beginner, I sometimes want to fix everything immediately.&lt;/p&gt;

&lt;p&gt;But I'm learning that debugging is a process.&lt;/p&gt;

&lt;p&gt;You don't need to understand everything at once.&lt;/p&gt;

&lt;p&gt;Sometimes one small error can teach you more than a...&lt;a href="https://shortlink.win/1xHKl" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Python learning lesson&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm still learning Python step by step.&lt;/p&gt;

&lt;p&gt;I don't want to memorize code and simply copy someone else's solution.&lt;/p&gt;

&lt;p&gt;I want to understand why my code works—and why it doesn't work when I...&lt;a href="https://shortlink.win/1xHKl" rel="noopener noreferrer"&gt;Read More&lt;br&gt;
&lt;/a&gt;&lt;br&gt;
And honestly, these small errors are becoming part of my learning journey. &lt;/p&gt;

&lt;p&gt;What about you?&lt;/p&gt;

&lt;p&gt;What was one small Python mistake that taught...&lt;a href="https://shortlink.win/1xHKl" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'd love to hear from other beginners. 👇&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>python</category>
      <category>programming</category>
    </item>
    <item>
      <title>I Thought My Python Logic Was Broken. It Wasn't.</title>
      <dc:creator>Tahami AK SERVICES</dc:creator>
      <pubDate>Mon, 31 Aug 2026 11:59:36 +0000</pubDate>
      <link>https://dev.to/tahami_akservices_cb075e/i-thought-my-python-logic-was-broken-it-wasnt-39aj</link>
      <guid>https://dev.to/tahami_akservices_cb075e/i-thought-my-python-logic-was-broken-it-wasnt-39aj</guid>
      <description>&lt;p&gt;My first real debugging lesson came from a tiny Python program.&lt;/p&gt;

&lt;p&gt;When you're learning programming, there's a strange...&lt;a href="https://short-url.cc/1CXcN" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You write the code.&lt;/p&gt;

&lt;p&gt;You read it again.&lt;/p&gt;

&lt;p&gt;The logic makes sense.&lt;/p&gt;

&lt;p&gt;You run it.&lt;/p&gt;

&lt;p&gt;And Python basically says:&lt;/p&gt;

&lt;p&gt;No. 😐&lt;/p&gt;

&lt;p&gt;That happened to me while building a simple...&lt;a href="https://short-url.cc/1CXcN" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And surprisingly, the error taught me more than the working program did.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Was Building&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I was working on a basic Caesar cipher.&lt;/p&gt;

&lt;p&gt;The idea is simple:&lt;/p&gt;

&lt;p&gt;Take a letter and shift it through the alphabet.&lt;/p&gt;

&lt;p&gt;For example, with a shift of 3:&lt;/p&gt;

&lt;p&gt;A → D&lt;br&gt;
B → E&lt;br&gt;
C → F&lt;/p&gt;

&lt;p&gt;So a message like:&lt;/p&gt;

&lt;p&gt;hello&lt;/p&gt;

&lt;p&gt;could become something like:&lt;/p&gt;

&lt;p&gt;khoor&lt;/p&gt;

&lt;p&gt;It's obviously not strong encryption for modern security, but it is a great beginner project for understanding how text, loops,...&lt;a href="https://short-url.cc/1CXcN" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I wanted my program to do three basic things:&lt;/p&gt;

&lt;p&gt;Take text from the user.&lt;br&gt;
Encrypt the text.&lt;br&gt;
Decrypt it back.&lt;/p&gt;

&lt;p&gt;I also wanted the user to choose the shift value instead of hardcoding it.&lt;/p&gt;

&lt;p&gt;Simple enough.&lt;/p&gt;

&lt;p&gt;Right?&lt;/p&gt;

&lt;p&gt;Well... almost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🐛Then The Bug Appeared&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I ran the program.&lt;/p&gt;

&lt;p&gt;Something wasn't working correctly.&lt;/p&gt;

&lt;p&gt;My first thought was:&lt;/p&gt;

&lt;p&gt;"My logic must be wrong."&lt;/p&gt;

&lt;p&gt;So I started looking through the algorithm.&lt;/p&gt;

&lt;p&gt;I checked the loop.&lt;/p&gt;

&lt;p&gt;I checked the conditions.&lt;/p&gt;

&lt;p&gt;I checked the shift calculation.&lt;/p&gt;

&lt;p&gt;I checked it again.&lt;/p&gt;

&lt;p&gt;And again.&lt;/p&gt;

&lt;p&gt;But the problem wasn't where I...&lt;a href="https://short-url.cc/1CXcN" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One of the issues was related to case handling.&lt;/p&gt;

&lt;p&gt;I was dealing with uppercase and lowercase characters differently than I had intended.&lt;/p&gt;

&lt;p&gt;The code looked reasonable when I read it quickly.&lt;/p&gt;

&lt;p&gt;But computers don't care what the code looks like.&lt;/p&gt;

&lt;p&gt;They care about what the code actually says.&lt;/p&gt;

&lt;p&gt;That was an important lesson.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔍The Second Problem Was Even Simpler&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then I hit a syntax error.&lt;/p&gt;

&lt;p&gt;At that moment, it felt like the entire program...&lt;a href="https://short-url.cc/1CXcN" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But the solution wasn't some advanced cybersecurity technique.&lt;/p&gt;

&lt;p&gt;It was simply finding the mistake in the Python syntax.&lt;/p&gt;

&lt;p&gt;That sounds almost embarrassing when you say it out loud.&lt;/p&gt;

&lt;p&gt;But that's exactly what beginner programming looks like.&lt;/p&gt;

&lt;p&gt;Sometimes you spend 20 minutes thinking:&lt;/p&gt;

&lt;p&gt;"There must be something seriously...&lt;a href="https://short-url.cc/1CXcN" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;"&lt;/p&gt;

&lt;p&gt;And then you discover:&lt;/p&gt;

&lt;p&gt;"Oh... I wrote that wrong." 😂&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;🧠 Debugging Changed How I Look at Errors&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Before this project, I sometimes looked at errors as something that meant:&lt;/p&gt;

&lt;p&gt;"My code failed."&lt;/p&gt;

&lt;p&gt;Now I'm starting to see them differently.&lt;/p&gt;

&lt;p&gt;An error is often telling you:&lt;/p&gt;

&lt;p&gt;"Something specific happened. Go find out why."&lt;/p&gt;

&lt;p&gt;That changes the whole mindset.&lt;/p&gt;

&lt;p&gt;Instead of immediately rewriting everything, I...&lt;a href="https://short-url.cc/1CXcN" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What exactly is Python complaining about?&lt;br&gt;
Which line caused the problem?&lt;br&gt;
What did I expect to happen?&lt;br&gt;
What actually happened?&lt;br&gt;
What changed between those two things?&lt;/p&gt;

&lt;p&gt;Those questions are much more useful than randomly changing code and...&lt;a href="https://short-url.cc/1CXcN" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔧 I Also Learned Not To Change Everything At Once&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This was probably one of my biggest lessons.&lt;/p&gt;

&lt;p&gt;When something doesn't work, it's tempting to...&lt;a href="https://short-url.cc/1CXcN" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But then you don't know which change fixed the problem.&lt;/p&gt;

&lt;p&gt;So I started making smaller changes.&lt;/p&gt;

&lt;p&gt;Change one thing.&lt;/p&gt;

&lt;p&gt;Run the program.&lt;/p&gt;

&lt;p&gt;Check the result.&lt;/p&gt;

&lt;p&gt;Understand what happened.&lt;/p&gt;

&lt;p&gt;Then continue.&lt;/p&gt;

&lt;p&gt;It's slower at first.&lt;/p&gt;

&lt;p&gt;But I think it's teaching me how to actually understand my code instead of simply...&lt;a href="https://short-url.cc/1CXcN" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🐍 A Small Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Suppose I have:&lt;/p&gt;

&lt;p&gt;name = "Tahami"&lt;/p&gt;

&lt;p&gt;print(Name)&lt;/p&gt;

&lt;p&gt;Python won't understand that Name and name are...&lt;a href="https://short-url.cc/1CXcN" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They are different variable names.&lt;/p&gt;

&lt;p&gt;The fix is simple:&lt;/p&gt;

&lt;p&gt;name = "Tahami"&lt;/p&gt;

&lt;p&gt;print(name)&lt;/p&gt;

&lt;p&gt;But the important lesson isn't the fix.&lt;/p&gt;

&lt;p&gt;It's understanding why the first version failed.&lt;/p&gt;

&lt;p&gt;Python follows the instructions we give it not the ...&lt;a href="https://short-url.cc/1CXcN" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚀 From Local Code To GitHub&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After building and debugging the project, I also pushed the code from my...&lt;a href="https://short-url.cc/1CXcN" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That part felt surprisingly exciting.&lt;/p&gt;

&lt;p&gt;It was no longer just:&lt;/p&gt;

&lt;p&gt;"I wrote some Python code on my computer."&lt;/p&gt;

&lt;p&gt;It became:&lt;/p&gt;

&lt;p&gt;"I built something, tested it, debugged it and published it."&lt;/p&gt;

&lt;p&gt;That's a small step.&lt;/p&gt;

&lt;p&gt;But for someone learning programming,...&lt;a href="https://short-url.cc/1CXcN" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;❤️ The Biggest Lesson&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The biggest thing I learned wasn't how to write a Caesar cipher.&lt;/p&gt;

&lt;p&gt;It was this:&lt;/p&gt;

&lt;p&gt;Debugging is part of learning to code.&lt;/p&gt;

&lt;p&gt;You don't become better at programming by...&lt;a href="https://short-url.cc/1CXcN" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You become better by:&lt;/p&gt;

&lt;p&gt;Writing → Breaking → Reading the error → Investigating → Fixing → Understanding&lt;/p&gt;

&lt;p&gt;And then doing it again.&lt;/p&gt;

&lt;p&gt;I'm still learning Python.&lt;/p&gt;

&lt;p&gt;I'm still making mistakes.&lt;/p&gt;

&lt;p&gt;And honestly, I expect there...&lt;a href="https://short-url.cc/1CXcN" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But now I don't see every error as a failure.&lt;/p&gt;

&lt;p&gt;Sometimes the error is the teacher.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💬 What Was Your First “Stupid” Bug?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you're learning to code, I'm curious:&lt;/p&gt;

&lt;p&gt;What was the first bug that made you think your entire program was broken—only to discover that the actual problem...&lt;a href="https://short-url.cc/1CXcN" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Share it below.&lt;/p&gt;

&lt;p&gt;I think beginner programmers need to hear more stories about the mistakes behind the working code.&lt;/p&gt;

&lt;p&gt;Because sometimes the best lesson isn't:&lt;/p&gt;

&lt;p&gt;"Look what I built."&lt;/p&gt;

&lt;p&gt;It's:&lt;/p&gt;

&lt;p&gt;"Look what broke and what it taught me." 🐛➡️💻&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>python</category>
      <category>devops</category>
      <category>debugging</category>
    </item>
    <item>
      <title>I Built a Tiny Python Password Checker Then Found a Security Bug</title>
      <dc:creator>Tahami AK SERVICES</dc:creator>
      <pubDate>Fri, 21 Aug 2026 17:41:23 +0000</pubDate>
      <link>https://dev.to/tahami_akservices_cb075e/i-built-a-tiny-python-password-checker-then-found-a-security-bug-157f</link>
      <guid>https://dev.to/tahami_akservices_cb075e/i-built-a-tiny-python-password-checker-then-found-a-security-bug-157f</guid>
      <description>&lt;p&gt;While practicing Python, I decided to build a small password checker.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The idea was simple:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the user enters the correct password, allow access. Otherwise, deny it.&lt;/p&gt;

&lt;p&gt;Sounds easy, right?&lt;/p&gt;

&lt;p&gt;Well… I managed...&lt;a href="https://short-url.cc/1wvTZ" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Bug&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My first logic looked something like this:&lt;/p&gt;

&lt;p&gt;password = input("Enter password: ")&lt;/p&gt;

&lt;p&gt;if password == "admin123" or "password":&lt;br&gt;
    print("Access Granted")&lt;br&gt;
else:&lt;br&gt;
    print("Access Denied")&lt;/p&gt;

&lt;p&gt;I tested a completely different...&lt;a href="https://short-url.cc/1wvTZ" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Access Denied&lt;/p&gt;

&lt;p&gt;But Python still gave me:&lt;/p&gt;

&lt;p&gt;Access Granted&lt;/p&gt;

&lt;p&gt;😐&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Went Wrong?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The problem was this part:&lt;/p&gt;

&lt;p&gt;password == "admin123" or "password"&lt;/p&gt;

&lt;p&gt;I was thinking:&lt;/p&gt;

&lt;p&gt;"Check whether the password is admin123 OR password."&lt;/p&gt;

&lt;p&gt;But Python doesn't interpret it that way.&lt;/p&gt;

&lt;p&gt;The string "password" is a non-empty string, and non-empty strings are considered True in a Boolean context.&lt;/p&gt;

&lt;p&gt;So the condition...&lt;a href="https://short-url.cc/1wvTZ" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I changed the condition to explicitly compare the variable with both values:&lt;/p&gt;

&lt;p&gt;if password == "admin123" or password == "password":&lt;br&gt;
    print("Access Granted")&lt;br&gt;
else:&lt;br&gt;
    print("Access Denied")&lt;/p&gt;

&lt;p&gt;Now the logic...&lt;a href="https://short-url.cc/1wvTZ" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Learned&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This tiny bug taught me something important:&lt;/p&gt;

&lt;p&gt;Knowing Python syntax isn't enough. You also need to understand how Python evaluates your logic.&lt;/p&gt;

&lt;p&gt;A small mistake in a condition can completely change the...&lt;a href="https://short-url.cc/1wvTZ" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And when we're talking about authentication, logic mistakes can become security problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Takeaway&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm still learning Python, so I actually like finding these kinds of bugs.&lt;/p&gt;

&lt;p&gt;Instead of feeling that an error means I failed, I'm trying to treat every...&lt;a href="https://short-url.cc/1wvTZ" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One bug at a time.&lt;br&gt;
One concept at a time.&lt;br&gt;
One step closer to becoming a better developer, InshaAllah. &lt;/p&gt;

&lt;p&gt;Have you ever written a simple condition that behaved completely differently from what you expected?&lt;/p&gt;

&lt;p&gt;I'd love to hear about it. 👇&lt;/p&gt;

&lt;p&gt;&lt;a href="https://short-url.cc/1wvTZ" rel="noopener noreferrer"&gt;#Python #Programming #Debugging #CyberSecurity #LearningToCode #PythonBeginner #ProgrammingJourney &lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>bugsmash</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Built My Own Mini Cryptocurrency Using Solidity 🚀 | My Web3 Journey Begins</title>
      <dc:creator>Tahami AK SERVICES</dc:creator>
      <pubDate>Tue, 28 Jul 2026 05:36:38 +0000</pubDate>
      <link>https://dev.to/tahami_akservices_cb075e/i-built-my-own-mini-cryptocurrency-using-solidity-my-web3-journey-begins-2hmc</link>
      <guid>https://dev.to/tahami_akservices_cb075e/i-built-my-own-mini-cryptocurrency-using-solidity-my-web3-journey-begins-2hmc</guid>
      <description>&lt;p&gt;&lt;strong&gt;✍️ Story Content:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Assalamuallikum 🌿&lt;/p&gt;

&lt;p&gt;Bismillah today I’m excited to share something special from my learning journey…&lt;/p&gt;

&lt;p&gt;💡 I built my very first mini cryptocurrency project using Solidity...&lt;a href="https://short.do/6JU_bW" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ The Idea&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As a beginner in Web3, I always wondered:&lt;/p&gt;

&lt;p&gt;👉 How do cryptocurrencies actually work behind the scenes?&lt;/p&gt;

&lt;p&gt;So instead of just watching tutorials…&lt;br&gt;
I decided...&lt;a href="https://short.do/6JU_bW" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🛠️ What I Built&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I created a simple crypto token with:&lt;/p&gt;

&lt;p&gt;✔ Token name &amp;amp; symbol&lt;br&gt;
✔ Total supply control&lt;br&gt;
✔ Balance tracking&lt;br&gt;
✔ Transfer functionality&lt;/p&gt;

&lt;p&gt;Basically, a mini version...&lt;a href="https://short.do/nHnlT2" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔍 Key Learnings&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This project helped me understand:&lt;/p&gt;

&lt;p&gt;How smart contracts work&lt;br&gt;
Gas fees &amp;amp; transactions&lt;br&gt;
Blockchain immutability&lt;br&gt;
Writing secure code...&lt;a href="https://short.do/nHnlT2" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💻 Tech Stack&lt;/strong&gt;&lt;br&gt;
Solidity&lt;br&gt;
Remix IDE&lt;br&gt;
MetaMask&lt;br&gt;
Ethereum...&lt;a href="https://short.do/IfMOib" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;😅 Challenges I Faced&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Debugging smart contracts&lt;br&gt;
Understanding gas optimization&lt;br&gt;
Fixing small logic mistakes&lt;/p&gt;

&lt;p&gt;But every error...&lt;a href="https://short.do/IfMOib" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎯 Why This Matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is just a small step…&lt;br&gt;
But it’s the beginning of my journey into:&lt;/p&gt;

&lt;p&gt;👉 Web3&lt;br&gt;
👉 Blockchain Development&lt;br&gt;
👉 Cybersecurity...&lt;a href="https://short.do/IfMOib" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔐 Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Learning by building is the best way.&lt;/p&gt;

&lt;p&gt;If you’re starting out don’t wait.&lt;br&gt;
👉 Build small&lt;br&gt;
👉 Break things&lt;br&gt;
👉 Learn fast&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💬 Let’s Connect&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you’re also learning Blockchain Technology or Web3,&lt;br&gt;
let’s...&lt;a href="https://short.do/IfMOib" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>solidity</category>
      <category>security</category>
    </item>
    <item>
      <title>💻🔥“I Built a Simple Calculator… But It Taught Me More Than Expected”</title>
      <dc:creator>Tahami AK SERVICES</dc:creator>
      <pubDate>Fri, 24 Jul 2026 06:51:58 +0000</pubDate>
      <link>https://dev.to/tahami_akservices_cb075e/i-built-a-simple-calculator-but-it-taught-me-more-than-expected-1ke7</link>
      <guid>https://dev.to/tahami_akservices_cb075e/i-built-a-simple-calculator-but-it-taught-me-more-than-expected-1ke7</guid>
      <description>&lt;p&gt;I thought building a calculator in Python would be easy.&lt;/p&gt;

&lt;p&gt;Just add, subtract… done, right?&lt;/p&gt;

&lt;p&gt;But when I actually started coding it, I realized something:&lt;/p&gt;

&lt;p&gt;👉 Writing code is easy.&lt;br&gt;
👉 Writing clean and structured logic is not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 What I Learned&lt;/strong&gt;&lt;br&gt;
Functions make code reusable&lt;br&gt;
Handling edge cases (like division by zero) matters&lt;br&gt;
Small projects build...&lt;a href="https://ln.run/orEE4" rel="noopener noreferrer"&gt;Read More&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔥 The Twist&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I didn’t just stop at basic operations.&lt;/p&gt;

&lt;p&gt;I added:&lt;/p&gt;

&lt;p&gt;Number analysis (positive/negative, even/odd)&lt;br&gt;
Average calculation&lt;br&gt;
Clean function-...&lt;a href="https://tinyurl.com/y8v89wbb" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 Why This Matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This small project helped me understand:&lt;/p&gt;

&lt;p&gt;👉 Programming is not about typing code&lt;br&gt;
👉 It’s about thinking logically&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💻 Code 👇&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;def add(a, b):&lt;br&gt;
    return a + b&lt;/p&gt;

&lt;p&gt;def subtract(a, b):&lt;br&gt;
    return a - b&lt;/p&gt;

&lt;p&gt;def multiply(a, b):&lt;br&gt;
    return a * b&lt;/p&gt;

&lt;p&gt;def divide(a, b):&lt;br&gt;
    if b == 0:&lt;br&gt;
        return "Error: Division by zero"&lt;br&gt;
    return a / b&lt;/p&gt;

&lt;p&gt;def average(a, b):&lt;br&gt;
    return (a + b) / 2&lt;/p&gt;

&lt;p&gt;def check_number(n):&lt;br&gt;
    if n &amp;gt; 0:&lt;br&gt;
        sign = "Positive"&lt;br&gt;
    elif n &amp;lt; 0:&lt;br&gt;
        sign = "Negative"&lt;br&gt;
    else:&lt;br&gt;
        sign = "Zero"&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if n % 2 == 0:
    parity = "Even"
else:
    parity = "Odd"

return f"{sign} &amp;amp; {parity}"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;print("🔥 Smart Calculator 🔥")&lt;/p&gt;

&lt;p&gt;num1 = int(input("Enter first number: "))&lt;br&gt;
num2 = int(input("Enter second number: "))&lt;/p&gt;

&lt;p&gt;print("\ n Operations:")&lt;br&gt;
print("1. Add")&lt;br&gt;
print("2. Subtract")&lt;br&gt;
print("3. Multiply")&lt;br&gt;
print("4...&lt;a href="https://tinyurl.com/y8v89wbb" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;choice = int(input("Choose option (1-6): "))&lt;/p&gt;

&lt;p&gt;if choice == 1:&lt;br&gt;
    print("Result:", add(num1, num2))&lt;/p&gt;

&lt;p&gt;elif choice == 2:&lt;br&gt;
    print("Result:", subtract(num1, num2))&lt;/p&gt;

&lt;p&gt;elif choice == 3:&lt;br&gt;
    print("Result:", multiply(num1, num2))&lt;/p&gt;

&lt;p&gt;elif choice == 4:&lt;br&gt;
    print("Result:", divide(num1, num2))&lt;/p&gt;

&lt;p&gt;elif choice == 5:&lt;br&gt;
    print("Result:",...&lt;a href="https://t.ly/x-oQE" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🚀 Open for Improvements&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feel free to:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Improve UI&lt;br&gt;
Add more features&lt;br&gt;
Optimize logic&lt;/p&gt;

&lt;p&gt;Let’s build together 🔥&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>🧠 “I Tried Debugging a ‘Mini Operating System’ in Python… It Broke Me 😅”</title>
      <dc:creator>Tahami AK SERVICES</dc:creator>
      <pubDate>Tue, 21 Jul 2026 10:10:07 +0000</pubDate>
      <link>https://dev.to/tahami_akservices_cb075e/i-tried-debugging-a-mini-operating-system-in-python-it-broke-me--2mff</link>
      <guid>https://dev.to/tahami_akservices_cb075e/i-tried-debugging-a-mini-operating-system-in-python-it-broke-me--2mff</guid>
      <description>&lt;p&gt;Hey devs👨‍💻,&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yesterday I thought:&lt;/strong&gt;&lt;br&gt;
👉 “Why not simulate a tiny operating system in Python?”&lt;/p&gt;

&lt;p&gt;Simple idea, right?&lt;/p&gt;

&lt;p&gt;Yeah… that’s what I...&lt;a href="https://ln.run/nVcby" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💻 The Idea&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I wanted to build a basic OS simulation that could:&lt;/p&gt;

&lt;p&gt;Manage processes&lt;br&gt;
Allocate CPU time&lt;br&gt;
Handle simple commands&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So I wrote this:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;def run_process(processes):&lt;br&gt;
    for p in processes:&lt;br&gt;
        if p["status"] == "ready":&lt;br&gt;
            print(f"Running {p['name']}")&lt;br&gt;
            p["status"] == "running"&lt;br&gt;
        elif p["status"] == "running":&lt;br&gt;
            print(f"Finishing {p['name']}")&lt;br&gt;
            p["status"] = "done"&lt;/p&gt;

&lt;p&gt;processes = [&lt;br&gt;
    {"name": "Process1", "status": "ready"},&lt;br&gt;
    {"name": "...&lt;a href="https://rb.gy/v965kb" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;run_process(processes)&lt;br&gt;
&lt;strong&gt;🚨 The Bug That Wasted My Time&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At first glance, everything looked fine…&lt;br&gt;
But the output was strange:&lt;/p&gt;

&lt;p&gt;Running Process1&lt;br&gt;
Running Process2&lt;/p&gt;

&lt;p&gt;👉 Wait… why are they not finishing?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔍 Debugging Time&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I checked:&lt;/p&gt;

&lt;p&gt;Logic ✅&lt;br&gt;
Loop ✅&lt;br&gt;
Conditions ✅&lt;/p&gt;

&lt;p&gt;Then I saw it… 👀&lt;/p&gt;

&lt;p&gt;p["status"] == "running"&lt;/p&gt;

&lt;p&gt;💥 That’s not assignment. That’s a comparison.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🛠️ The Fix&lt;/strong&gt;&lt;br&gt;
p["status"] = "running"&lt;/p&gt;

&lt;p&gt;Now the output:&lt;/p&gt;

&lt;p&gt;Running Process1&lt;br&gt;
Finishing Process1&lt;br&gt;
Running Process2&lt;br&gt;
Finishing Process2&lt;br&gt;
🤯 What I Learned&lt;/p&gt;

&lt;p&gt;Sometimes the smallest bugs:&lt;/p&gt;

&lt;p&gt;Don’t crash your program ❌&lt;br&gt;
Don’t show errors ❌&lt;br&gt;
But completely...&lt;a href="//tahamirehman.blogspot.com"&gt;Read More&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔥 Real Talk&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Debugging feels like:&lt;/p&gt;

&lt;p&gt;“I am 100% sure this should work… but it doesn’t.”&lt;/p&gt;

&lt;p&gt;And that’s where real developers are made.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💬 Your Turn&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Have you ever spent hours on a tiny bug like this? 😭&lt;br&gt;
Drop your story below 👇&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚀 Final Thought&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You don’t need to build a real OS to feel like one broke on you.&lt;/p&gt;

&lt;p&gt;Sometimes…&lt;br&gt;
👉 One == is enough.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>🚀 “Can You Solve This? World Cup Score Analyzer (Beginner Friendly)”</title>
      <dc:creator>Tahami AK SERVICES</dc:creator>
      <pubDate>Sun, 19 Jul 2026 10:21:58 +0000</pubDate>
      <link>https://dev.to/tahami_akservices_cb075e/can-you-solve-this-world-cup-score-analyzer-beginner-friendly-4of0</link>
      <guid>https://dev.to/tahami_akservices_cb075e/can-you-solve-this-world-cup-score-analyzer-beginner-friendly-4of0</guid>
      <description>&lt;p&gt;Hey developers 👨‍💻,&lt;/p&gt;

&lt;p&gt;Let’s connect coding with football ⚽&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 Problem:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Write a Python function that:&lt;/p&gt;

&lt;p&gt;Takes goals scored by Team A...&lt;a href="https://shorturl.at/7K8pr" rel="noopener noreferrer"&gt;Read More&lt;br&gt;
&lt;/a&gt;Prints:&lt;br&gt;
“Team A Wins”&lt;br&gt;
“Team B Wins”&lt;br&gt;
“Draw Match”&lt;br&gt;
&lt;strong&gt;🧾 Example:&lt;/strong&gt;&lt;br&gt;
Input: A = 2, B = 1&lt;br&gt;&lt;br&gt;
Output: Team A Wins&lt;br&gt;
🔥 Challenge Level:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Beginner (No loops required)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;💡 Bonus:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add a feature:&lt;/p&gt;

&lt;p&gt;If goals &amp;gt; 5 → print “High Scoring..&lt;a href="https://shorturl.at/qoKsT" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;!”&lt;/p&gt;

&lt;p&gt;👉 Drop your solution in the comments!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>ai</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Now I’m curious… are they from your past or your present?</title>
      <dc:creator>Tahami AK SERVICES</dc:creator>
      <pubDate>Fri, 17 Jul 2026 10:20:23 +0000</pubDate>
      <link>https://dev.to/tahami_akservices_cb075e/now-im-curious-are-they-from-your-past-or-your-present-3jai</link>
      <guid>https://dev.to/tahami_akservices_cb075e/now-im-curious-are-they-from-your-past-or-your-present-3jai</guid>
      <description>&lt;p&gt;&lt;strong&gt;🧾 Content:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hey everyone,&lt;/p&gt;

&lt;p&gt;I’m currently learning Python and practicing basic functions + if/else logic. I tried to build a simple login system, but I’m stuck on a small issue that’s confusing me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here’s what’s happening:&lt;/strong&gt;&lt;br&gt;
Even when I enter the wrong username, the program still asks for the password.&lt;/p&gt;

&lt;p&gt;But logically, I want it to stop right there if the username is incorrect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here’s my code:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;def login(username, password):&lt;br&gt;
    if username == "Admin" and password == 1234:&lt;br&gt;
        print("Login Successful")&lt;br&gt;
        return True&lt;br&gt;
    else:&lt;br&gt;
        print("Invalid Credentials")&lt;br&gt;
        username = input("Enter the username: ")&lt;br&gt;
        password = int(input("Enter the password: "))&lt;br&gt;
        if username == "Admin" and password == 1234:&lt;br&gt;
            print("Login Successful")&lt;br&gt;
            return True&lt;br&gt;
        else:&lt;br&gt;
            print("Invalid Credentials")&lt;br&gt;
            return False&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My question is:&lt;/strong&gt;&lt;br&gt;
👉 How can I structure this so that the program only asks for the password after confirming the username is correct?&lt;/p&gt;

&lt;p&gt;I feel like I’m mixing the logic somewhere, but I want to understand the correct approach instead of just copying a solution.&lt;/p&gt;

&lt;p&gt;Would really appreciate a simple explanation 🙌&lt;/p&gt;

&lt;p&gt;Also curious how did you guys structure your first...&lt;a href="https://shorturl.at/l8XAH" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
