<?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: Chidozie Managwu</title>
    <description>The latest articles on DEV Community by Chidozie Managwu (@chidoziemanagwu).</description>
    <link>https://dev.to/chidoziemanagwu</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%2F2120770%2F70bc1bdf-8963-476d-939a-0f5943104c3a.jpg</url>
      <title>DEV Community: Chidozie Managwu</title>
      <link>https://dev.to/chidoziemanagwu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chidoziemanagwu"/>
    <language>en</language>
    <item>
      <title>Fix Your DevEx, Fix Your Innovation: The 3-Step Framework</title>
      <dc:creator>Chidozie Managwu</dc:creator>
      <pubDate>Fri, 26 Sep 2025 10:18:38 +0000</pubDate>
      <link>https://dev.to/chidoziemanagwu/fix-your-devex-fix-your-innovation-the-3-step-framework-2mh</link>
      <guid>https://dev.to/chidoziemanagwu/fix-your-devex-fix-your-innovation-the-3-step-framework-2mh</guid>
      <description>&lt;h2&gt;
  
  
  The $85B Productivity Drain
&lt;/h2&gt;

&lt;p&gt;Developers waste 31% of their time battling bad tooling, slow pipelines, and unclear processes (Stripe). That’s $85B annually in lost innovation. Worse? Top engineers quit when friction outweighs impact. Atlassian proved teams with high DevEx scores resolve incidents 2x faster.&lt;/p&gt;

&lt;h3&gt;
  
  
  Measure What Matters: The SPACE Framework
&lt;/h3&gt;

&lt;p&gt;Stop guessing. Track these:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Satisfaction&lt;/td&gt;
&lt;td&gt;eNPS score&lt;/td&gt;
&lt;td&gt;DX&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;Deploy frequency&lt;/td&gt;
&lt;td&gt;GitHub Actions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Efficiency&lt;/td&gt;
&lt;td&gt;Rework rate&lt;/td&gt;
&lt;td&gt;SonarQube&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  3 DevEx Fixes for Immediate Impact
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Consolidate Your Toolchain&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Replace 5+ fragmented tools with 1 integrated platform (e.g., GitLab for CI/CD + project mgmt). Reduces context-switching by 60%.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automate the Top 3 Manual Tasks&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Isolate time sinks (e.g., environment setup, approvals). Shopify cut deployment time by 80% this way.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Protect Deep Work Blocks&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Implement "no-meeting Wednesdays" and async documentation (Notion/Confluence). Asana saw 30% more features shipped.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Start Here: The 1-Week DevEx Audit
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Survey your team: &lt;em&gt;"Rate workflow friction (1-5)."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Fix the lowest-rated pain point by Friday.&lt;/li&gt;
&lt;li&gt;Track cycle time change for 2 sprints.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;DevEx isn’t a perk—it’s your innovation engine.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Building Responsible AI Agents: Balancing Innovation and Ethics</title>
      <dc:creator>Chidozie Managwu</dc:creator>
      <pubDate>Sat, 28 Dec 2024 11:19:29 +0000</pubDate>
      <link>https://dev.to/chidoziemanagwu/building-responsible-ai-agents-balancing-innovation-and-ethics-45ll</link>
      <guid>https://dev.to/chidoziemanagwu/building-responsible-ai-agents-balancing-innovation-and-ethics-45ll</guid>
      <description>&lt;p&gt;Artificial Intelligence (AI) is transforming industries, with autonomous AI agents like Salesforce’s AgentForce and open-source tools like AutoGPT leading the charge. These agents automate complex tasks, collaborate with other systems, and enhance productivity. However, as they become more autonomous, the need for responsible AI development is critical to address issues like bias, transparency, and accountability.&lt;/p&gt;

&lt;p&gt;The rapid adoption of AI agents has sparked debates about their ethical implications. While they offer immense potential to revolutionize industries like healthcare, education, and sales, they also pose risks if not designed responsibly. Developers, organizations, and governments must work together to ensure these systems are both innovative and ethical.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Does It Mean to Build Responsible AI Agents?
&lt;/h2&gt;

&lt;p&gt;Responsible AI agents are designed to be ethical, transparent, and accountable, ensuring they align with human values and minimize harm. These agents must operate fairly, respect privacy, and provide clear explanations for their decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key principles of responsible AI include:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fairness&lt;/strong&gt;: Avoiding bias in decision-making and ensuring equitable outcomes for all users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transparency&lt;/strong&gt;: Making AI decisions understandable to users and stakeholders.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accountability&lt;/strong&gt;: Establishing responsibility for AI outcomes and ensuring systems can be audited.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy&lt;/strong&gt;: Protecting user data and ensuring secure operations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sustainability&lt;/strong&gt;: Designing AI systems that are energy-efficient and environmentally friendly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Building responsible AI is not just a technical challenge—it’s a multidisciplinary effort that requires collaboration between developers, ethicists, policymakers, and end-users.&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%2Fucarecdn.com%2F3cda96bd-ca41-46ae-bfed-f4b08acd5264%2F" 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%2Fucarecdn.com%2F3cda96bd-ca41-46ae-bfed-f4b08acd5264%2F" alt="principles-of-responsible-AI.webp" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Examples of Ethical Dilemmas in AI Systems
&lt;/h2&gt;

&lt;p&gt;As AI agents become more autonomous, they face ethical dilemmas that challenge their design and deployment. Here are some real-world examples:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fucarecdn.com%2Fd93775a7-2767-494d-95c0-99e70f98ece5%2F" 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%2Fucarecdn.com%2Fd93775a7-2767-494d-95c0-99e70f98ece5%2F" alt="Top-9-ethical-issues-in-artificial-intelligence.webp" width="800" height="376"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;1. Bias in Decision-Making&lt;/strong&gt;&lt;br&gt;
AI agents trained on biased datasets can make discriminatory decisions. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A hiring agent might favor certain demographics over others due to historical biases in recruitment data.&lt;/li&gt;
&lt;li&gt;A financial AI agent might deny loans to specific groups based on biased credit scoring models.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Lack of Transparency&lt;/strong&gt;&lt;br&gt;
Many AI agents operate as "&lt;strong&gt;black boxes&lt;/strong&gt;," making decisions that are difficult to interpret or explain. For instance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A customer service AI agent might escalate or resolve issues without providing clear reasoning, leading to frustration and mistrust among users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Accountability Gaps&lt;/strong&gt;&lt;br&gt;
When an AI agent makes a mistake, who is responsible? For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If an autonomous vehicle controlled by an AI agent causes an accident, is the blame on the developer, the manufacturer, or the user?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Privacy Violations&lt;/strong&gt;&lt;br&gt;
AI agents often require access to sensitive user data to function effectively. However:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A sales AI agent might inadvertently share confidential customer information, violating privacy laws like GDPR.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Ethical Use of AI in Sales and Marketing&lt;/strong&gt;&lt;br&gt;
Tools like Salesforce’s AgentForce are transforming sales and marketing by automating lead generation and customer engagement. However:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If an AI agent uses manipulative tactics to upsell products, it raises questions about ethical marketing practices.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These dilemmas highlight the importance of embedding ethical considerations into the design and deployment of AI agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frameworks and Best Practices for Responsible AI Development
&lt;/h2&gt;

&lt;p&gt;To address these challenges, developers and organizations can adopt the following frameworks and best practices:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Ethical AI Frameworks&lt;/strong&gt;&lt;br&gt;
Several organizations have developed guidelines for responsible AI, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google’s AI Principles&lt;/strong&gt;: Focused on fairness, privacy, and accountability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OECD AI Principles&lt;/strong&gt;: Emphasizing human-centered values and transparency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Salesforce’s Ethical AI Guidelines&lt;/strong&gt;: Aimed at building trust and ensuring fairness in AI systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Bias Mitigation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use diverse and representative datasets to train AI agents.&lt;/li&gt;
&lt;li&gt;Regularly audit AI models for bias and retrain them as needed.&lt;/li&gt;
&lt;li&gt;Implement fairness metrics to evaluate the impact of AI decisions on different groups.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Explainability and Transparency&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use techniques like S*&lt;em&gt;HAP (SHapley Additive exPlanations)&lt;/em&gt;* or &lt;strong&gt;LIME (Local Interpretable Model-agnostic Explanations)&lt;/strong&gt; to make AI decisions interpretable.&lt;/li&gt;
&lt;li&gt;Provide users with clear explanations of how AI agents make decisions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Accountability Mechanisms&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Establish clear governance structures for AI projects.&lt;/li&gt;
&lt;li&gt;Assign responsibility for AI outcomes to specific teams or individuals.&lt;/li&gt;
&lt;li&gt;Maintain detailed logs of AI agent actions for auditing purposes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Privacy and Security&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use encryption and secure protocols to protect user data.&lt;/li&gt;
&lt;li&gt;Implement differential privacy techniques to anonymize sensitive information.&lt;/li&gt;
&lt;li&gt;Comply with data protection regulations like GDPR and CCPA.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;6. Continuous Monitoring and Feedback&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitor AI agents in real-time to detect and address issues.&lt;/li&gt;
&lt;li&gt;Collect user feedback to improve the performance and ethical alignment of AI agents.&lt;/li&gt;
&lt;li&gt;Regularly update AI models to reflect changing societal norms and values.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fucarecdn.com%2F8d1db2d1-3a7a-412a-814b-841a78c59f87%2F" 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%2Fucarecdn.com%2F8d1db2d1-3a7a-412a-814b-841a78c59f87%2F" alt="Responsible AI.png" width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Role of Stakeholders
&lt;/h2&gt;

&lt;p&gt;Building responsible AI agents is a shared responsibility that requires collaboration across multiple stakeholders:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Governments&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enact regulations to ensure AI systems are fair, transparent, and accountable.&lt;/li&gt;
&lt;li&gt;Promote research and development in ethical AI.&lt;/li&gt;
&lt;li&gt;Establish oversight bodies to monitor the deployment of AI agents.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Organizations&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Develop internal policies and guidelines for responsible AI.&lt;/li&gt;
&lt;li&gt;Invest in training programs to educate employees about ethical AI practices.&lt;/li&gt;
&lt;li&gt;Partner with academic institutions and nonprofits to advance ethical AI research.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Developers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prioritize ethical considerations during the design and development of AI agents.&lt;/li&gt;
&lt;li&gt;Advocate for responsible AI practices within their organizations.&lt;/li&gt;
&lt;li&gt;Stay informed about the latest advancements in ethical AI frameworks and tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Salesforce and AgentForce: A Case Study
&lt;/h2&gt;

&lt;p&gt;Salesforce, a leader in customer relationship management (CRM), has been at the forefront of responsible AI development. Their AgentForce platform leverages AI agents to automate sales processes, improve customer engagement, and drive business growth.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fucarecdn.com%2F7760d724-1ea3-459e-8c97-ec05ee5cfed8%2F" 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%2Fucarecdn.com%2F7760d724-1ea3-459e-8c97-ec05ee5cfed8%2F" alt="Newsroom-Feature-Title-1200x675-2.png" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
What sets Salesforce apart is its commitment to ethical AI. The company has implemented robust guidelines to ensure that its AI systems are fair, transparent, and accountable. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bias Detection&lt;/strong&gt;: Salesforce uses tools to identify and mitigate bias in its AI models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explainability&lt;/strong&gt;: AgentForce provides users with clear insights into how AI-driven recommendations are made.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy&lt;/strong&gt;: Salesforce ensures that customer data is handled securely and in compliance with global regulations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By prioritizing responsible AI, Salesforce has set a benchmark for other organizations to follow.&lt;/p&gt;

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

&lt;p&gt;As AI agents become more autonomous, balancing innovation with ethics is essential. By addressing issues like bias, transparency, and accountability, we can ensure that AI agents are not only innovative but also ethical.&lt;/p&gt;

&lt;p&gt;Building responsible AI agents requires a collaborative effort between developers, organizations, and governments. By adopting ethical frameworks, mitigating bias, and ensuring transparency, we can create AI systems that benefit society while minimizing harm. Tools like &lt;strong&gt;Salesforce’s AgentForce&lt;/strong&gt; demonstrate how responsible AI can drive innovation while maintaining trust and fairness.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fucarecdn.com%2F6a32e810-075f-4a3e-8581-c52afef192e4%2F" 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%2Fucarecdn.com%2F6a32e810-075f-4a3e-8581-c52afef192e4%2F" alt="How-Westworld-could-be-Predicting-the-Future-of-AI-and-Robotics.png" width="800" height="406"&gt;&lt;/a&gt;&lt;br&gt;
The future of AI is bright, but it’s up to us to ensure that it’s also responsible.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How to Build a Face Mask Detection System: A Practical Guide for Beginners</title>
      <dc:creator>Chidozie Managwu</dc:creator>
      <pubDate>Fri, 20 Dec 2024 12:02:32 +0000</pubDate>
      <link>https://dev.to/chidoziemanagwu/how-to-build-a-face-mask-detection-system-a-practical-guide-for-beginners-30fb</link>
      <guid>https://dev.to/chidoziemanagwu/how-to-build-a-face-mask-detection-system-a-practical-guide-for-beginners-30fb</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;Face mask detection has become an essential tool in ensuring public safety during the COVID-19 pandemic. In this post, I’ll show you how to build a simple face mask detection system using Python, OpenCV, and a pre-trained deep learning model. This project is based on my publication, "Face Mask Detection Application and Dataset," which you can find here.&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%2Fc5sjrkzjbe48wq2b0izv.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%2Fc5sjrkzjbe48wq2b0izv.png" alt="Image description" width="495" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before we begin, make sure you have the following installed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.x&lt;/li&gt;
&lt;li&gt;OpenCV&lt;/li&gt;
&lt;li&gt;TensorFlow or PyTorch&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’ll also need a dataset of images with and without face masks. You can use the dataset from my publication or create your own.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Loading the Dataset
&lt;/h2&gt;

&lt;p&gt;Here’s how to load and preprocess the dataset:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import cv2
import os

def load_images_from_folder(folder):
    images = []
    for filename in os.listdir(folder):
        img = cv2.imread(os.path.join(folder, filename))
        if img is not None:
            images.append(img)
    return images

mask_images = load_images_from_folder('data/mask')
no_mask_images = load_images_from_folder('data/no_mask')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2F7jh2e0l9duiwxcn4f7ja.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%2F7jh2e0l9duiwxcn4f7ja.png" alt="Image description" width="426" height="118"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Training the Model
&lt;/h2&gt;

&lt;p&gt;Use a pre-trained model like MobileNetV2 for transfer learning. Fine-tune the model on your dataset to classify images as “mask” or “no mask.”&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%2F2vaixx8o11uq656bscth.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%2F2vaixx8o11uq656bscth.png" alt="Image description" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Real-Time Detection
&lt;/h2&gt;

&lt;p&gt;Integrate the model with OpenCV to perform real-time face mask detection using your webcam:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import cv2

cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    # Add face detection and mask classification logic here
    cv2.imshow('Face Mask Detection', frame)
    if cv2.waitKey(1) &amp;amp; 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;Building a face mask detection system is a great way to learn about computer vision and deep learning. If you’d like to see the full code or need help with implementation, feel free to reach out or check out my GitHub!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Chidozie Managwu</dc:creator>
      <pubDate>Sun, 15 Dec 2024 07:12:04 +0000</pubDate>
      <link>https://dev.to/chidoziemanagwu/-190f</link>
      <guid>https://dev.to/chidoziemanagwu/-190f</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/chidoziemanagwu" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F2120770%2F70bc1bdf-8963-476d-939a-0f5943104c3a.jpg" alt="chidoziemanagwu"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/chidoziemanagwu/prompt-engineering-the-secret-sauce-for-ai-success-4d1k" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Prompt Engineering: The Secret Sauce for AI Success&lt;/h2&gt;
      &lt;h3&gt;Chidozie Managwu ・ Dec 15&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#ai&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#machinelearning&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>ai</category>
      <category>promptengineering</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Prompt Engineering: The Secret Sauce for AI Success</title>
      <dc:creator>Chidozie Managwu</dc:creator>
      <pubDate>Sun, 15 Dec 2024 07:11:30 +0000</pubDate>
      <link>https://dev.to/chidoziemanagwu/prompt-engineering-the-secret-sauce-for-ai-success-4d1k</link>
      <guid>https://dev.to/chidoziemanagwu/prompt-engineering-the-secret-sauce-for-ai-success-4d1k</guid>
      <description>&lt;p&gt;In the world of AI, where models like GPT-4 are redefining possibilities, prompt engineering has emerged as a critical skill. It’s the bridge between human intent and machine understanding, enabling developers to extract meaningful and accurate responses from AI systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Basics of Prompt Engineering
&lt;/h2&gt;

&lt;p&gt;Prompt engineering is the art of crafting input prompts that guide AI models to produce desired outputs. It’s not just about asking questions—it’s about asking the right questions in the right way.&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%2Fkw9hikpii378g3ld5kay.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%2Fkw9hikpii378g3ld5kay.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why It Matters
&lt;/h2&gt;

&lt;p&gt;AI models are only as good as the prompts they receive. A well-designed prompt can unlock the full potential of an AI model, while a poorly designed one can lead to irrelevant or misleading results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Be Specific: Provide clear instructions and avoid ambiguity.&lt;/li&gt;
&lt;li&gt;Use Examples: Show the AI what kind of response you’re looking for.&lt;/li&gt;
&lt;li&gt;Iterate and Refine: Experiment with different prompts to find what works best.&lt;/li&gt;
&lt;li&gt;Leverage Context: Include relevant background information to guide the AI.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Advanced Techniques
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Few-Shot Learning: Providing a few examples in the prompt to improve accuracy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Chain-of-Thought Prompting: Encouraging the AI to explain its reasoning process.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Role-Playing: Asking the AI to assume a specific role or perspective.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fawxgaftdcvhz4bg8sytt.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%2Fawxgaftdcvhz4bg8sytt.png" alt="Image description" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Applications
&lt;/h2&gt;

&lt;p&gt;From content creation to customer support, prompt engineering is transforming industries. It’s a skill that every AI developer should master.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>machinelearning</category>
      <category>programming</category>
    </item>
    <item>
      <title>Building ErgoVision: A Developer's Journey in AI Safety</title>
      <dc:creator>Chidozie Managwu</dc:creator>
      <pubDate>Wed, 30 Oct 2024 21:42:27 +0000</pubDate>
      <link>https://dev.to/chidoziemanagwu/building-ergovision-a-developers-journey-in-ai-safety-58ip</link>
      <guid>https://dev.to/chidoziemanagwu/building-ergovision-a-developers-journey-in-ai-safety-58ip</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Hey dev community! 👋 I'm excited to share the journey of building ErgoVision, an AI-powered system that's making workplaces safer through real-time posture analysis. Let's dive into the technical challenges and solutions!&lt;/p&gt;

&lt;h2&gt;
  
  
  The Challenge
&lt;/h2&gt;

&lt;p&gt;When SIIR-Lab at Texas A&amp;amp;M University approached me about building a real-time posture analysis system, we faced several key challenges:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Real-time processing requirements&lt;/li&gt;
&lt;li&gt;Accurate pose estimation&lt;/li&gt;
&lt;li&gt;Professional safety standards&lt;/li&gt;
&lt;li&gt;Scalable implementation&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Technical Stack
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Core dependencies
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;mediapipe&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;mp&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why This Stack?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;MediaPipe: Robust pose detection&lt;/li&gt;
&lt;li&gt;OpenCV: Efficient video processing&lt;/li&gt;
&lt;li&gt;NumPy: Fast mathematical computations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key Implementation Challenges
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Real-time Processing
&lt;/h3&gt;

&lt;p&gt;The biggest challenge was achieving real-time analysis. Here's how we solved it:&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;process_frame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# Convert to RGB for MediaPipe
&lt;/span&gt;    &lt;span class="n"&gt;rgb_frame&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cvtColor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;COLOR_BGR2RGB&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pose&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;process&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rgb_frame&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;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pose_landmarks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# Process landmarks
&lt;/span&gt;        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;analyze_pose&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pose_landmarks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Accurate Angle Calculation
&lt;/h3&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;calculate_angle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&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="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;vector1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&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="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&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="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&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="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt;
    &lt;span class="n"&gt;vector2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt;

    &lt;span class="c1"&gt;# Handle edge cases
&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;linalg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;norm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vector1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;linalg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;norm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vector2&lt;/span&gt;&lt;span class="p"&gt;)&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="k"&gt;return&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;

    &lt;span class="n"&gt;cosine_angle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vector1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;vector2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;linalg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;norm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vector1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;linalg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;norm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vector2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;degrees&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;arccos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;clip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cosine_angle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. REBA Score Implementation
&lt;/h3&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;calculate_reba_score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;angles&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# Initialize scores
&lt;/span&gt;    &lt;span class="n"&gt;neck_score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;_get_neck_score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;angles&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;neck&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="n"&gt;trunk_score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;_get_trunk_score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;angles&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;trunk&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="n"&gt;legs_score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;_get_legs_score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;angles&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;legs&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

    &lt;span class="c1"&gt;# Calculate final score
&lt;/span&gt;    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;neck_score&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;trunk_score&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;legs_score&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ol&gt;
&lt;li&gt;Performance Optimization&lt;/li&gt;
&lt;li&gt;Use NumPy for vector calculations&lt;/li&gt;
&lt;li&gt;Implement efficient angle calculations&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optimize frame processing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Error Handling&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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;safe_angle_calculation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;landmarks&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;angles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;calculate_angles&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;landmarks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;angles&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="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log_error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;default_angles&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Testing Strategy&lt;/li&gt;
&lt;li&gt;Unit tests for calculations&lt;/li&gt;
&lt;li&gt;Integration tests for video processing&lt;/li&gt;
&lt;li&gt;Performance benchmarking&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;p&gt;Our implementation achieved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;30 FPS processing&lt;/li&gt;
&lt;li&gt;95% pose detection accuracy&lt;/li&gt;
&lt;li&gt;Real-time REBA scoring&lt;/li&gt;
&lt;li&gt;Comprehensive safety alerts&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Code Repository Structure
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ergovision/
├── src/
│   ├── analyzer.py
│   ├── pose_detector.py
│   └── reba_calculator.py
├── tests/
│   └── test_analyzer.py
└── README.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Future Improvements
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Performance Enhancements
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Planned optimization
&lt;/span&gt;&lt;span class="nd"&gt;@numba.jit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nopython&lt;/span&gt;&lt;span class="o"&gt;=&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;def&lt;/span&gt; &lt;span class="nf"&gt;optimized_angle_calculation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;vectors&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# Optimized computation
&lt;/span&gt;    &lt;span class="k"&gt;pass&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Feature Additions&lt;/li&gt;
&lt;li&gt;Multi-camera support&lt;/li&gt;
&lt;li&gt;Cloud integration&lt;/li&gt;
&lt;li&gt;Mobile apps&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Get Involved!
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Star our repository&lt;/li&gt;
&lt;li&gt;Try the implementation&lt;/li&gt;
&lt;li&gt;Contribute to development&lt;/li&gt;
&lt;li&gt;Share your feedback&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;a href="//github.com/chidoziemanagwu/Ergovision"&gt;GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Happy coding! 🚀&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>python</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>AI: The Future of Housing, from Smart Homes to Smart Cities</title>
      <dc:creator>Chidozie Managwu</dc:creator>
      <pubDate>Sat, 26 Oct 2024 18:09:18 +0000</pubDate>
      <link>https://dev.to/chidoziemanagwu/ai-the-future-of-housing-from-smart-homes-to-smart-cities-1hb6</link>
      <guid>https://dev.to/chidoziemanagwu/ai-the-future-of-housing-from-smart-homes-to-smart-cities-1hb6</guid>
      <description>&lt;p&gt;The housing sector, a cornerstone of our daily lives, is experiencing a technological shift like never before. Artificial Intelligence (AI) is stepping in to address key challenges, from improving tenant experiences to streamlining property management. As the world becomes more interconnected and data-driven, AI has the potential to reshape the housing landscape, making it more efficient, cost-effective, and accessible. In this blog, we will explore how AI is transforming various aspects of the housing sector, and why embracing this technology is crucial for future growth.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Personalized Tenant Experience&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;In an era where customer experience is paramount, AI is enabling housing associations and property managers to provide personalized tenant services. Chatbots powered by AI are used to handle common tenant requests, such as maintenance schedules, lease inquiries, and even emergency alerts. These virtual assistants not only provide instant responses but also analyze tenant preferences over time to ensure tailored services.&lt;/p&gt;

&lt;p&gt;Imagine a tenant reaching out for a simple inquiry about available amenities—instead of waiting for a property manager, an AI system instantly provides the required information. AI-powered tools have the ability to improve the tenant experience dramatically by reducing response time and offering personalized solutions based on historical data.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Smart Maintenance and Predictive Analytics&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;A critical aspect of housing management is maintenance. AI can significantly enhance this by incorporating predictive analytics. AI models can analyze data from smart sensors installed in properties to predict maintenance issues before they escalate into costly repairs. For instance, AI can alert property managers when a HVAC system shows signs of malfunction, thus facilitating early intervention.&lt;/p&gt;

&lt;p&gt;In addition to predictive maintenance, AI can also automate technician assignments, optimizing the scheduling of maintenance workers. By analyzing factors such as availability, skills, and proximity, AI can ensure that the most suitable technician is assigned to a task, thus reducing downtime and ensuring a smooth experience for tenants.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Optimizing Property Management&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The role of property management has always been a challenging one—coordinating between landlords, tenants, and maintenance teams while ensuring profitability and tenant satisfaction. AI tools can streamline property management processes, automate rent collection, generate financial reports, and even optimize energy consumption to reduce operational costs.&lt;/p&gt;

&lt;p&gt;For example, AI-powered platforms provide comprehensive dashboards that give property managers insights into occupancy rates, rent collection, and overall performance metrics. This real-time data empowers property managers to make informed decisions that can improve tenant retention and operational efficiency.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;AI in Real Estate Decision Making&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;AI-driven analytics can also support better decision-making for investors and developers in the housing sector. Machine learning algorithms can assess market trends, evaluate investment risks, and provide predictive insights into property values. With these capabilities, real estate investors can make data-driven decisions, mitigating risk and identifying lucrative opportunities.&lt;/p&gt;

&lt;p&gt;One of the key challenges in real estate has been price estimation and demand forecasting. AI can change the game by analyzing past transactions, market trends, and economic data to predict property prices and identify potential areas for investment. This data-driven insight is invaluable for developers who are trying to understand emerging markets and make strategic investments.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Enhancing Housing Accessibility&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;AI can also play a vital role in making housing more accessible and equitable. Housing agencies can use AI tools to match applicants with suitable housing opportunities, considering factors like family size, income, and specific needs. This data-driven approach ensures that housing allocation is more efficient and fair.&lt;/p&gt;

&lt;p&gt;Additionally, AI can help detect patterns in rental applications that may indicate discrimination. By ensuring that data is analyzed fairly and objectively, AI can contribute to reducing biases and making housing accessible to everyone, regardless of their background.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;AI's Impact on Sustainable Housing&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The housing sector is also a major contributor to carbon emissions, and AI can contribute to the development of sustainable housing solutions. By monitoring energy usage through smart home devices, AI can provide recommendations to reduce energy consumption, thus helping to lower the environmental footprint. For property developers and managers aiming to create sustainable communities, AI becomes an essential tool for improving energy efficiency.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Road Ahead&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The integration of AI into the housing sector holds great promise. From enhancing tenant experiences and optimizing property management to enabling data-driven investment decisions and promoting sustainability, the potential applications of AI are vast. However, the adoption of AI in housing is still in its nascent stage, and there are challenges to overcome, including concerns about data privacy and the need for the right infrastructure.&lt;/p&gt;

&lt;p&gt;Despite these challenges, the benefits far outweigh the drawbacks. For stakeholders in the housing sector—from property managers to real estate developers—the time to embrace AI is now. As the technology matures, the housing industry must adapt to stay competitive, and leveraging AI-driven solutions can provide a significant advantage.&lt;/p&gt;

&lt;p&gt;AI Titans Network invites you to be part of this conversation. If you’re passionate about leveraging technology to solve real-world challenges, especially in sectors like housing, we’re excited to connect with you. Together, let’s shape the future of AI in housing and beyond.&lt;/p&gt;

</description>
      <category>python</category>
      <category>ai</category>
      <category>machinelearning</category>
      <category>programming</category>
    </item>
    <item>
      <title>Implementing Edge Detection with Python and OpenCV: A Step-by-Step Guide</title>
      <dc:creator>Chidozie Managwu</dc:creator>
      <pubDate>Sat, 19 Oct 2024 21:55:57 +0000</pubDate>
      <link>https://dev.to/chidoziemanagwu/implementing-edge-detection-with-python-and-opencv-a-step-by-step-guide-57ab</link>
      <guid>https://dev.to/chidoziemanagwu/implementing-edge-detection-with-python-and-opencv-a-step-by-step-guide-57ab</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Edge detection is fundamental in computer vision, allowing us to identify object boundaries within images. In this tutorial, we'll implement edge detection using the Sobel operator and the Canny edge detector with Python and OpenCV. We'll then create a simple web application using Flask, styled with Bootstrap, to allow users to upload images and view the results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DEMO LINK:&lt;/strong&gt; &lt;a href="https://edge-detection-u7f3.onrender.com" rel="noopener noreferrer"&gt;Edge Detection Demo&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.x installed on your machine.&lt;/li&gt;
&lt;li&gt;Basic knowledge of Python programming.&lt;/li&gt;
&lt;li&gt;Familiarity with HTML and CSS is helpful but not required.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setting Up the Environment
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Install Required Libraries
&lt;/h3&gt;

&lt;p&gt;Open your terminal or command prompt and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;opencv-python numpy Flask
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Create the Project Directory
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;edge_detection_app
&lt;span class="nb"&gt;cd &lt;/span&gt;edge_detection_app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Implementing Edge Detection
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. The Sobel Operator
&lt;/h3&gt;

&lt;p&gt;The Sobel operator calculates the gradient of image intensity, emphasizing edges.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code Implementation:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import cv2

# Load the image in grayscale
image = cv2.imread('input_image.jpg', cv2.IMREAD_GRAYSCALE)
if image is None:
    print("Error loading image")
    exit()

# Apply Sobel operator
sobelx = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=5)  # Horizontal edges
sobely = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=5)  # Vertical edges
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. The Canny Edge Detector
&lt;/h3&gt;

&lt;p&gt;The Canny edge detector is a multi-stage algorithm for detecting edges.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code Implementation:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Apply Canny edge detector
edges = cv2.Canny(image, threshold1=100, threshold2=200)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Creating a Flask Web Application
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Set Up the Flask App
&lt;/h3&gt;

&lt;p&gt;Create a file named app.py:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from flask import Flask, request, render_template, redirect, url_for
import cv2
import os

app = Flask(__name__)

UPLOAD_FOLDER = 'static/uploads/'
OUTPUT_FOLDER = 'static/outputs/'

app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
app.config['OUTPUT_FOLDER'] = OUTPUT_FOLDER

# Create directories if they don't exist
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
os.makedirs(OUTPUT_FOLDER, exist_ok=True)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Define Routes
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Upload Route:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@app.route('/', methods=['GET', 'POST'])
def upload_image():
    if request.method == 'POST':
        file = request.files.get('file')
        if not file or file.filename == '':
            return 'No file selected', 400
        filepath = os.path.join(app.config['UPLOAD_FOLDER'], file.filename)
        file.save(filepath)
        process_image(file.filename)
        return redirect(url_for('display_result', filename=file.filename))
    return render_template('upload.html')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Process Image Function:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def process_image(filename):
    image_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
    image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)

    # Apply edge detection
    sobelx = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=5)
    edges = cv2.Canny(image, 100, 200)

    # Save outputs
    cv2.imwrite(os.path.join(app.config['OUTPUT_FOLDER'], 'sobelx_' + filename), sobelx)
    cv2.imwrite(os.path.join(app.config['OUTPUT_FOLDER'], 'edges_' + filename), edges)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Result Route:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@app.route('/result/&amp;lt;filename&amp;gt;')
def display_result(filename):
    return render_template('result.html',
                           original_image='uploads/' + filename,
                           sobelx_image='outputs/sobelx_' + filename,
                           edges_image='outputs/edges_' + filename)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Run the App
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if __name__ == '__main__':
    app.run(debug=True)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Styling the Web Application with Bootstrap
&lt;/h2&gt;

&lt;p&gt;Include Bootstrap CDN in your HTML templates for styling.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. upload.html
&lt;/h3&gt;

&lt;p&gt;Create a templates directory and add upload.html:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;title&amp;gt;Edge Detection App&amp;lt;/title&amp;gt;
    &amp;lt;!-- Bootstrap CSS CDN --&amp;gt;
    &amp;lt;link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;div class="container mt-5"&amp;gt;
        &amp;lt;h1 class="text-center mb-4"&amp;gt;Upload an Image for Edge Detection&amp;lt;/h1&amp;gt;
        &amp;lt;div class="row justify-content-center"&amp;gt;
            &amp;lt;div class="col-md-6"&amp;gt;
                &amp;lt;form method="post" enctype="multipart/form-data" class="border p-4"&amp;gt;
                    &amp;lt;div class="form-group"&amp;gt;
                        &amp;lt;label for="file"&amp;gt;Choose an image:&amp;lt;/label&amp;gt;
                        &amp;lt;input type="file" name="file" accept="image/*" required class="form-control-file" id="file"&amp;gt;
                    &amp;lt;/div&amp;gt;
                    &amp;lt;button type="submit" class="btn btn-primary btn-block"&amp;gt;Upload and Process&amp;lt;/button&amp;gt;
                &amp;lt;/form&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. result.html
&lt;/h3&gt;

&lt;p&gt;Create result.html in the templates directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;title&amp;gt;Edge Detection Results&amp;lt;/title&amp;gt;
    &amp;lt;!-- Bootstrap CSS CDN --&amp;gt;
    &amp;lt;link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;div class="container mt-5"&amp;gt;
        &amp;lt;h1 class="text-center mb-5"&amp;gt;Edge Detection Results&amp;lt;/h1&amp;gt;
        &amp;lt;div class="row"&amp;gt;
            &amp;lt;div class="col-md-6 mb-4"&amp;gt;
                &amp;lt;h4 class="text-center"&amp;gt;Original Image&amp;lt;/h4&amp;gt;
                &amp;lt;img src="{{ url_for('static', filename=original_image) }}" alt="Original Image" class="img-fluid rounded mx-auto d-block"&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div class="col-md-6 mb-4"&amp;gt;
                &amp;lt;h4 class="text-center"&amp;gt;Sobel X&amp;lt;/h4&amp;gt;
                &amp;lt;img src="{{ url_for('static', filename=sobelx_image) }}" alt="Sobel X" class="img-fluid rounded mx-auto d-block"&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div class="col-md-6 mb-4"&amp;gt;
                &amp;lt;h4 class="text-center"&amp;gt;Canny Edges&amp;lt;/h4&amp;gt;
                &amp;lt;img src="{{ url_for('static', filename=edges_image) }}" alt="Canny Edges" class="img-fluid rounded mx-auto d-block"&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div class="text-center mt-4"&amp;gt;
            &amp;lt;a href="{{ url_for('upload_image') }}" class="btn btn-secondary"&amp;gt;Process Another Image&amp;lt;/a&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Running and Testing the Application
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Run the Flask App
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python app.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Access the Application
&lt;/h3&gt;

&lt;p&gt;Open your web browser and navigate to &lt;a href="http://localhost:5000" rel="noopener noreferrer"&gt;http://localhost:5000&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upload an image and click Upload and Process.&lt;/li&gt;
&lt;li&gt;View the edge detection results.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  SAMPLE RESULT
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fgnn10w3tin5h4f74j1h2.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fgnn10w3tin5h4f74j1h2.PNG" alt="Image description" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;We've built a simple web application that performs edge detection using the Sobel operator and the Canny edge detector. By integrating Python, OpenCV, Flask, and Bootstrap, we've created an interactive tool that allows users to upload images and view edge detection results.&lt;/p&gt;

&lt;p&gt;Next Steps&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enhance the Application: Add more edge detection options or allow parameter adjustments.&lt;/li&gt;
&lt;li&gt;Improve the UI: Incorporate more Bootstrap components for a better user experience.&lt;/li&gt;
&lt;li&gt;Explore Further: Deploy the app on other platforms like Heroku or AWS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository: &lt;a href="https://github.com/chidoziemanagwu/Edge_Detection" rel="noopener noreferrer"&gt;Edge Detection App&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>machinelearning</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Building a Secure Anonymous Feedback System with Django, Twilio, and Pinata</title>
      <dc:creator>Chidozie Managwu</dc:creator>
      <pubDate>Sat, 05 Oct 2024 16:49:27 +0000</pubDate>
      <link>https://dev.to/chidoziemanagwu/building-a-secure-anonymous-feedback-system-with-django-twilio-and-pinata-4bh</link>
      <guid>https://dev.to/chidoziemanagwu/building-a-secure-anonymous-feedback-system-with-django-twilio-and-pinata-4bh</guid>
      <description>&lt;p&gt;In this guide, I will walk you through building a Secure Anonymous Feedback System using Django, Twilio for SMS notifications, Pinata for secure media uploads, and TailwindCSS for responsive styling. By the end of this tutorial, you will have a fully functional feedback system where users can submit feedback, optionally upload media, and receive SMS notifications—all with security and privacy in mind.&lt;/p&gt;

&lt;p&gt;Demo: &lt;a href="https://securefeedback.onrender.com/feedback/submit-feedback/" rel="noopener noreferrer"&gt;Live Link&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Anonymous Feedback Submission: Users can submit feedback or support requests anonymously.&lt;/li&gt;
&lt;li&gt;Secure Media Uploads: Users can upload media files securely via Pinata, stored on IPFS.&lt;/li&gt;
&lt;li&gt;Twilio SMS Notifications: Automatically sends SMS confirmation to users via Twilio.&lt;/li&gt;
&lt;li&gt;Responsive UI: Styled with TailwindCSS for a seamless, modern design.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Technologies Used:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Django: Backend framework for the feedback system.&lt;/li&gt;
&lt;li&gt;Twilio: Handles SMS notifications.&lt;/li&gt;
&lt;li&gt;Pinata: Provides IPFS-based secure media storage.&lt;/li&gt;
&lt;li&gt;TailwindCSS: For responsive frontend styling.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Project Setup and Dependencies
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1.1. Create and Set Up a Virtual Environment&lt;/strong&gt;&lt;br&gt;
Start by setting up your project environment. Ensure you have Python installed and set up a virtual environment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python3 -m venv venv
source venv/bin/activate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;On Windows:&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;venv\Scripts\activate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;Install the necessary packages:&lt;/em&gt;&lt;/strong&gt;&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 django twilio python-decouple requests gunicorn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;1.2. Start a Django Project&lt;/strong&gt;&lt;br&gt;
Initialize a new Django project and app:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;django-admin startproject config .
python manage.py startapp feedback
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 2: Build the Feedback Submission System
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;2.1. Create a Feedback Model&lt;/strong&gt;&lt;br&gt;
Define a model to store feedback submissions in feedback/models.py:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from django.db import models

class Feedback(models.Model):
    message = models.TextField()
    sender_email = models.EmailField()
    sender_phone = models.CharField(max_length=15)
    media_url = models.URLField(null=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"Feedback from {self.sender_email}"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This model captures feedback, email, phone number, and optional media URLs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.2. Create Views for Handling Feedback and SMS Notifications&lt;/strong&gt;&lt;br&gt;
In feedback/views.py, create views to process feedback and send SMS notifications:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from django.shortcuts import render
from django.http import HttpResponse
from .models import Feedback
from twilio.rest import Client
from django.conf import settings
import requests

def upload_to_pinata(file):
    url = "https://api.pinata.cloud/pinning/pinFileToIPFS"
    headers = {
        'pinata_api_key': settings.PINATA_API_KEY,
        'pinata_secret_api_key': settings.PINATA_SECRET_API_KEY,
    }
    files = {'file': file}
    response = requests.post(url, files=files, headers=headers)
    return response.json().get('IpfsHash')

def submit_feedback(request):
    if request.method == 'POST':
        message = request.POST.get('message')
        sender_email = request.POST.get('sender_email')
        sender_phone = request.POST.get('sender_phone')
        file = request.FILES.get('media_file', None)

        media_url = None
        if file:
            media_url = upload_to_pinata(file)

        feedback = Feedback.objects.create(
            message=message,
            sender_email=sender_email,
            sender_phone=sender_phone,
            media_url=media_url
        )

        # Send SMS using Twilio
        client = Client(settings.TWILIO_ACCOUNT_SID, settings.TWILIO_AUTH_TOKEN)
        client.messages.create(
            body=f"Feedback received from {sender_phone}: {message}",
            from_=settings.TWILIO_PHONE_NUMBER,
            to=sender_phone
        )

        return HttpResponse("Feedback submitted successfully!")

    return render(request, 'feedback_form.html')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This view handles form submissions, uploads optional media to Pinata, and sends SMS using Twilio.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.3. Creating the Feedback Form&lt;/strong&gt;&lt;br&gt;
Create an HTML form to submit feedback. In your templates folder, create feedback_form.html:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{% load static %}
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
    &amp;lt;title&amp;gt;Submit Feedback&amp;lt;/title&amp;gt;
    &amp;lt;link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body class="bg-gray-100"&amp;gt;
    &amp;lt;div class="container mx-auto px-4 py-6"&amp;gt;
        &amp;lt;h1 class="text-3xl font-bold text-center"&amp;gt;Submit Feedback&amp;lt;/h1&amp;gt;
        &amp;lt;form method="POST" action="" enctype="multipart/form-data" class="bg-white p-6 rounded shadow-md"&amp;gt;
            {% csrf_token %}
            &amp;lt;div class="mb-4"&amp;gt;
                &amp;lt;label for="message" class="block text-lg font-semibold"&amp;gt;Your Feedback&amp;lt;/label&amp;gt;
                &amp;lt;textarea name="message" id="message" class="w-full p-2 border rounded" required&amp;gt;&amp;lt;/textarea&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div class="mb-4"&amp;gt;
                &amp;lt;label for="sender_email" class="block text-lg font-semibold"&amp;gt;Your Email&amp;lt;/label&amp;gt;
                &amp;lt;input type="email" name="sender_email" id="sender_email" class="w-full p-2 border rounded" required&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div class="mb-4"&amp;gt;
                &amp;lt;label for="sender_phone" class="block text-lg font-semibold"&amp;gt;Your Phone Number&amp;lt;/label&amp;gt;
                &amp;lt;input type="tel" name="sender_phone" id="sender_phone" class="w-full p-2 border rounded" required&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div class="mb-4"&amp;gt;
                &amp;lt;label for="media_file" class="block text-lg font-semibold"&amp;gt;Upload Media (Optional)&amp;lt;/label&amp;gt;
                &amp;lt;input type="file" name="media_file" id="media_file" class="w-full p-2 border rounded"&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div class="text-center"&amp;gt;
                &amp;lt;button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded"&amp;gt;Submit&amp;lt;/button&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/form&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.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%2Fxddi3hlgauguqsiyyspu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fxddi3hlgauguqsiyyspu.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;Image of the Front end&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fihnas7l80frn9q590tyi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fihnas7l80frn9q590tyi.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Image of Pinata Dashboard showing the files uploaded&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 3: Configuring Twilio and Pinata
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;3.1. Set Up Environment Variables&lt;/strong&gt;&lt;br&gt;
Create a .env file in your project’s root directory to store sensitive information like Twilio and Pinata API keys:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SECRET_KEY=your-django-secret-key
DEBUG=True

TWILIO_ACCOUNT_SID=your_twilio_account_sid
TWILIO_AUTH_TOKEN=your_twilio_auth_token
TWILIO_PHONE_NUMBER=your_twilio_phone_number

PINATA_API_KEY=your_pinata_api_key
PINATA_SECRET_API_KEY=your_pinata_secret_api_key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make sure to add .env to your .gitignore file so it won’t be pushed to GitHub:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
`&lt;br&gt;
&lt;strong&gt;3.2. Update settings.py to Use Environment Variables&lt;/strong&gt;&lt;br&gt;
Use python-decouple to securely load environment variables from the .env file:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;`&lt;br&gt;
from decouple import config&lt;/p&gt;

&lt;p&gt;SECRET_KEY = config('SECRET_KEY')&lt;br&gt;
DEBUG = config('DEBUG', default=False, cast=bool)&lt;/p&gt;

&lt;p&gt;TWILIO_ACCOUNT_SID = config('TWILIO_ACCOUNT_SID')&lt;br&gt;
TWILIO_AUTH_TOKEN = config('TWILIO_AUTH_TOKEN')&lt;br&gt;
TWILIO_PHONE_NUMBER = config('TWILIO_PHONE_NUMBER')&lt;/p&gt;

&lt;p&gt;PINATA_API_KEY = config('PINATA_API_KEY')&lt;br&gt;
PINATA_SECRET_API_KEY = config('PINATA_SECRET_API_KEY')&lt;br&gt;
`&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Pushing to GitHub
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;4.1. Initialize Git and Push to GitHub&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Initialize a Git repository in the root of your project:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
git init&lt;br&gt;
git add .&lt;br&gt;
git commit -m "Initial commit for feedback system"&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add your GitHub repository as a remote and push your project:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
git remote add origin https://github.com/yourusername/feedback-system.git&lt;br&gt;
git push -u origin main&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;In this tutorial, you’ve built a secure anonymous feedback system using Django, Twilio for SMS notifications, and Pinata for media uploads. You’ve also learned how to push your project to GitHub and secure sensitive information using environment variables. This system ensures privacy while enabling users to submit feedback and receive SMS notifications.&lt;/p&gt;

&lt;p&gt;Feel free to expand the system further by adding more features or enhancing security. If you found this guide helpful, share your feedback or questions in the comments!&lt;/p&gt;

&lt;p&gt;The Repo to the Project can be found here: &lt;a href="https://github.com/chidoziemanagwu/SecureFeedback" rel="noopener noreferrer"&gt;Repo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>pinatachallenge</category>
      <category>opensource</category>
      <category>devchallenge</category>
      <category>python</category>
    </item>
    <item>
      <title>Excited to Win the Global Recognition Award 2024!</title>
      <dc:creator>Chidozie Managwu</dc:creator>
      <pubDate>Fri, 04 Oct 2024 16:22:27 +0000</pubDate>
      <link>https://dev.to/chidoziemanagwu/excited-to-win-the-global-recognition-award-2024-4a4k</link>
      <guid>https://dev.to/chidoziemanagwu/excited-to-win-the-global-recognition-award-2024-4a4k</guid>
      <description>&lt;p&gt;I am incredibly proud and humbled to share that I have been named the recipient of the Global Recognition Award 2024! This prestigious award is a recognition of exceptional accomplishment in my field, and it marks a significant milestone in my career journey.&lt;/p&gt;

&lt;p&gt;The Global Recognition Awards celebrates extraordinary achievements in entrepreneurship, innovation, and corporate responsibility. To be included in such a prestigious list of global achievers is both inspiring and motivating. With only 120 winners selected from over 2,000 applicants—representing just 5.8% of total applicants—this recognition is truly an honor and a reflection of the hard work, passion, and commitment that has gone into my projects.&lt;/p&gt;

&lt;p&gt;🔍 About the Award:&lt;/p&gt;

&lt;p&gt;The award follows a rigorous evaluation process conducted by a panel of esteemed international judges, ensuring that recipients exemplify excellence in their respective industries.&lt;br&gt;
The Global Recognition Awards focuses on individuals and businesses that demonstrate outstanding innovation, sustainability, and customer service, highlighting their leadership in shaping a better future.&lt;br&gt;
Since its inception, the Global Recognition Awards has gained global prestige, even being listed among the top 10 business awards competitions by Forbes. This international scope adds even more significance to this accolade.&lt;/p&gt;

&lt;p&gt;🌍 An International Milestone&lt;/p&gt;

&lt;p&gt;The Global Recognition Awards highlights not only excellence in business and technology but also the diverse global community of leaders and innovators. Past recipients come from a wide range of industries and geographical locations, both inside and outside the United States, reflecting the truly global nature of the award and its impact.&lt;/p&gt;

&lt;p&gt;🚀 Looking Ahead&lt;/p&gt;

&lt;p&gt;Receiving this award for my work on the Virtual Nutritionist Project (which you can explore at Virtual Nutritionist) is just the beginning. This recognition serves as motivation to continue driving innovation, improving lives, and building tools that make a real impact on people’s well-being. I’m excited for the future and what it holds for both myself and the projects I am passionately committed to.&lt;/p&gt;

&lt;p&gt;I want to express my deepest thanks to the Global Recognition Awards Committee for this incredible honor, and I am sincerely grateful to everyone who has supported me on this journey—mentors, collaborators, friends, and the amazing tech community.&lt;/p&gt;

&lt;p&gt;Here’s to new challenges, more innovations, and a bright future ahead!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>programming</category>
      <category>python</category>
    </item>
    <item>
      <title>A Detailed Guide to Making Your First Pull Request for Hacktoberfest</title>
      <dc:creator>Chidozie Managwu</dc:creator>
      <pubDate>Wed, 02 Oct 2024 18:50:36 +0000</pubDate>
      <link>https://dev.to/chidoziemanagwu/a-detailed-guide-to-making-your-first-pull-request-for-hacktoberfest-4ehp</link>
      <guid>https://dev.to/chidoziemanagwu/a-detailed-guide-to-making-your-first-pull-request-for-hacktoberfest-4ehp</guid>
      <description>&lt;p&gt;One of the toughest things a software developer will ever do is take on an open-source project, yet writing your first pull request (PR) is a big accomplishment that opens up infinite options. You may create a confident first public release for Hacktoberfest 2024 with the help of this extensive tutorial.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Choose the Right Project
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Find a Suitable Repository&lt;/strong&gt;: Look for projects that align with your interests and skill level.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check for Labels&lt;/strong&gt;: Repositories often label issues suitable for beginners with tags like &lt;code&gt;good first issue&lt;/code&gt; or &lt;code&gt;Hacktoberfest&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review Contribution Guidelines&lt;/strong&gt;: Understand the project's standards and requirements.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Fork the Repository
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Navigate to the Repo&lt;/strong&gt;: Go to the project's GitHub page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Click Fork&lt;/strong&gt;: This creates a personal copy of the repository under your GitHub account.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Clone the Forked Repository
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Copy the URL&lt;/strong&gt;: Use the &lt;code&gt;Code&lt;/code&gt; button to copy the repository's URL.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clone Locally&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  git clone https://github.com/your-username/repository-name.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Navigate to the Directory:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd repository-name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Create a New Branch
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Branch Naming:&lt;/strong&gt; Use descriptive names for your branches, such as fix-issue-123 or add-feature-x.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout -b fix-issue-123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  5. Make Your Changes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Edit Files:&lt;/strong&gt; Implement the fix or feature as per the issue's description.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test Your Changes:&lt;/strong&gt; Ensure that your modifications work as intended and do not break existing functionality.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. Commit Your Changes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stage the Changes:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Write a Clear Commit Message:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -m "Fixes issue #123: Corrected typo in README"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  7. Push to Your Fork
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Push the Branch:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  8. Create a Pull Request
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Navigate to Original Repository:&lt;/strong&gt; Go to the project's GitHub page.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Click on Compare &amp;amp; Pull Request:&lt;/strong&gt; This option appears after you push your branch.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fill in Details:&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-- &lt;strong&gt;Title:&lt;/strong&gt; Concise summary of your changes.&lt;/p&gt;

&lt;p&gt;-- &lt;strong&gt;Description:&lt;/strong&gt; Detailed explanation, referencing the issue number (e.g., "Closes #123").&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Submit PR:&lt;/strong&gt; Click the "Create Pull Request" button.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  9. Address Feedback
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Review Comments:&lt;/strong&gt; Project maintainers may request changes or provide feedback.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Make Necessary Edits:&lt;/strong&gt; Update your branch with the requested modifications.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add .
git commit -m "Addressed feedback: Updated README typo"
git push origin fix-issue-123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Communicate:&lt;/strong&gt; Engage politely with reviewers to clarify any doubts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  10. Appreciate Your Input!
&lt;/h2&gt;

&lt;p&gt;Your first contribution to an open-source project has been successfully made if your PR is merged. 🎉&lt;/p&gt;

&lt;p&gt;Tips for a Smooth First PR:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Start Small:&lt;/strong&gt; Begin with minor fixes or documentation improvements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Read the Code:&lt;/strong&gt; Understand the project's structure and coding standards.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Be Patient:&lt;/strong&gt; Maintainers are often busy; give them time to review your PR.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stay Positive:&lt;/strong&gt; Rejections happen; use feedback to improve your future contributions.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Making your first pull request is just the beginning. Embrace the learning experience, connect with the community, and continue contributing to meaningful projects throughout Hacktoberfest and beyond!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hacktoberfest</category>
      <category>opensource</category>
    </item>
    <item>
      <title>The Future of Healthcare: How aI is Revolutionizing Personalized Nutrition</title>
      <dc:creator>Chidozie Managwu</dc:creator>
      <pubDate>Sun, 29 Sep 2024 16:25:30 +0000</pubDate>
      <link>https://dev.to/chidoziemanagwu/the-future-of-healthcare-how-ai-is-revolutionizing-personalized-nutrition-5256</link>
      <guid>https://dev.to/chidoziemanagwu/the-future-of-healthcare-how-ai-is-revolutionizing-personalized-nutrition-5256</guid>
      <description>&lt;p&gt;In our world today, Artificial Intelligence applications and Models are becoming more and more important in the healthcare industry, opening up new avenues for individualised treatment. Customised nutrition as a field is one where AI is making waves. Its majorly used to generate meal plans, these meal plans in turn are specific to a person/users goals and preferences as well as health concerns.&lt;br&gt;
By making nutrition more personalized, it helps in tackling these issues escpecially seeing that illnesses such as diabetes, obesity and heart diseases are becoming common.&lt;/p&gt;

&lt;p&gt;Seeing this and in order to help tackle the issues, I developed an AI-Web Driven tool that help[s to generate meal plans that are personalized to each customer. With its customised diet, this project — which is presently a Minimum Viable Product (MVP) — illustrates how artificial intelligence (AI) might improve preventive healthcare. I will discuss the potential applications of AI-powered nutrition in this post, as well as how the Virtual Nutritionist may improve both individual and societal health.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Personalized Nutrition is Important&lt;/strong&gt;&lt;br&gt;
For a long time we have known that poor eating and diet habits are directly related to and cause a range of chronic illneses even when nutrition is higly personalized. What works for one person may not work for another, especially if that person is managing specific health conditions. Personalized nutrition acknowledges these differences and, with the help of AI, delivers dietary advice tailored to individual needs.&lt;/p&gt;

&lt;p&gt;The Virtual Nutritionist generates meal plans based on each user’s health profile, considering factors like dietary restrictions, caloric goals, and personal preferences. Individuals with diabetes, for instance, can be given meal plans low in sugar, and those who want to lose weight might be given recipes low in calories. Offering people tailored guidance like this encourages them to take charge of their health and enhances their long-term wellbeing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Building the Virtual Nutritionist&lt;/strong&gt;&lt;br&gt;
The Virtual Nutritionist was created with the straightforward goal of enabling everyone to have access to personalised nutrition through AI. Constructed with Django, the application gathers information from users regarding their dietary choices and health objectives, subsequently producing meal plans that fit those requirements.&lt;/p&gt;

&lt;p&gt;The app has a wide range of possible uses, even if it is currently in MVP development. With time, the artificial intelligence (AI) underlying the app will be able to incorporate new nutritional research and health trends to make recommendations that are increasingly precise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Potential Impact on Healthcare&lt;/strong&gt;&lt;br&gt;
Public and individual health could be revolutionised by AI-powered nutrition. In order to improve health outcomes, the Virtual Nutritionist could do the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chronic Disease Management:
Meal plans are created to control symptoms and enhance quality of life are beneficial for people with long-term diseases such as diabetes or heart disease.&lt;/li&gt;
&lt;li&gt;Preventive Healthcare:
The software offers a proactive strategy for preserving health for those in good health. Users may steer clear of common problems like obesity, which frequently serves as a signpost to more significant health issues, by following personalised meal programs.&lt;/li&gt;
&lt;li&gt;Scalable Solutions for Healthcare Providers:
With the help of AI-driven solutions like the Virtual Nutritionist, medical professionals, dietitians, and nutritionists can provide more patients individualised guidance without having to spend time laboriously organising meals by hand.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Future of Personalized Nutrition&lt;/strong&gt;&lt;br&gt;
Looking forward, the Virtual Nutritionist has the potential to integrate with wearable devices like fitness trackers or smartwatches. This would allow the app to adjust meal plans based on real-time data, such as daily activity levels or sleep patterns. Additionally, disease-specific meal plans could be offered for individuals managing specific health concerns, like kidney disease or hypertension.&lt;/p&gt;

&lt;p&gt;Community engagement features could also be added, enabling users to share success stories, meal plans, or health goals. Such features would foster a sense of community and long-term commitment to healthy eating.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Call for Collaboration&lt;/strong&gt;&lt;br&gt;
The application is an open-source project, and I would love to collaborate with other developers, data scientists, and healthcare professionals to help improve the app. The project is available on GitHub, and I welcome contributions that can expand its features, refine the AI model, or enhance the user experience.&lt;/p&gt;

&lt;p&gt;With the right contributions, the Virtual Nutritionist can become a more robust tool that not only improves personal health but also contributes to better public health outcomes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
The application illustrates how applying AI in progressive ways can help revolutionize nutrition and improve overall healthcare of the users and even improving preventive healthcare. Creating meal plans based on individual needs allows the users to make proper decisions for their health and well being. Seeing that healthcare is evolving, and moving towards more proactive measures. Articial Intelligence is going to play a crucial role in helping users manage their health and build a future where personalized health solutions are accessible to everyone.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>python</category>
    </item>
  </channel>
</rss>
