<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Ahamed Ruyefa</title>
    <description>The latest articles on Forem by Ahamed Ruyefa (@ardf).</description>
    <link>https://forem.com/ardf</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%2F726595%2F3fa84b2c-7d2d-4b2c-b652-1b98399c998c.jpg</url>
      <title>Forem: Ahamed Ruyefa</title>
      <link>https://forem.com/ardf</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ardf"/>
    <language>en</language>
    <item>
      <title>Automatically transcribe your video files uploaded to S3 using AWS Transcribe</title>
      <dc:creator>Ahamed Ruyefa</dc:creator>
      <pubDate>Mon, 21 Oct 2024 03:31:19 +0000</pubDate>
      <link>https://forem.com/ardf/automatically-transcribe-your-video-files-uploaded-to-s3-using-aws-transcribe-j5o</link>
      <guid>https://forem.com/ardf/automatically-transcribe-your-video-files-uploaded-to-s3-using-aws-transcribe-j5o</guid>
      <description>&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;br&gt;
Imagine you have a collection of files, and you want to make changes to them automatically as they're uploaded without any manual intervention. &lt;/p&gt;

&lt;p&gt;For example, what if you wanted to resize images, mask personal data in documents, or even convert a file format? Using S3 Object Lambda, you can transform these files on the go, as they're uploaded to the bucket. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Auto Transcriber&lt;/strong&gt;&lt;br&gt;
Now, let's dive into the project which I've built. A pipeline which transcribes the audio and video files uploaded to the S3 bucket utilizing S3 event notification, lambda function and AWS Transcribe.&lt;/p&gt;

&lt;p&gt;This is the architecture diagram of the project&lt;br&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%2Ffc01c1ifsitg7kk1gyxh.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%2Ffc01c1ifsitg7kk1gyxh.png" alt="Simple Architecture Diagram" width="392" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;AWS Account - If you don't already have, you can &lt;a href="https://aws.amazon.com/free/" rel="noopener noreferrer"&gt;sign up for free account&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's it. Everything else can be managed via the AWS Console.&lt;/p&gt;

&lt;h3&gt;
  
  
  Here’s how it works:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Uploading the Video: You start by uploading your video (like an interview or a lecture) into an S3 bucket. Think of this as a cloud folder where all your files are stored.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Triggering the Transcription: As soon as the video is uploaded, a special function automatically detects the new video. This function then tells another service, called Amazon Transcribe, to listen to the video’s audio and convert everything spoken into text.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Saving the Transcript: Once the transcription is done, the result is saved in a designated location, but this time as a JSON file. This file holds all the text, along with useful information like timestamps for when each word was spoken.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Look at this cool demo&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://drive.google.com/file/d/1H5XbIjryBsRRfCChdxKcOXtFz5mIRm26/view?usp=sharing" rel="noopener noreferrer" class="c-link"&gt;
          demo-auto-transcribe.mp4 - Google Drive
        &lt;/a&gt;
      &lt;/h2&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
          &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fssl.gstatic.com%2Fimages%2Fbranding%2Fproduct%2F1x%2Fdrive_2020q4_32dp.png" width="32" height="32"&gt;
        drive.google.com
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Github Repo - &lt;a href="https://github.com/ardf/serverless-auto-transcribe" rel="noopener noreferrer"&gt;Code for Lambda function&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;Comment down if you need detailed implementation, or have any questions about this project.&lt;/code&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>s3</category>
      <category>lambda</category>
      <category>serverless</category>
    </item>
    <item>
      <title>Keep your applications configurable using environment variables</title>
      <dc:creator>Ahamed Ruyefa</dc:creator>
      <pubDate>Sat, 29 Jul 2023 17:10:34 +0000</pubDate>
      <link>https://forem.com/ardf/the-hidden-power-of-environment-variables-a-developers-tale-5h1m</link>
      <guid>https://forem.com/ardf/the-hidden-power-of-environment-variables-a-developers-tale-5h1m</guid>
      <description>&lt;p&gt;Once upon a time, in the bustling world of software development, I found myself in a tricky situation. I was working on an exciting application that utilized several AWS Lambda functions, each serving a crucial purpose. The application relied on a database hosted on the cloud, and like any other project, changes were inevitable.&lt;/p&gt;

&lt;p&gt;One fine day, it was decided that we needed to switch the database host for our application. Now, you might be thinking, &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"That's a simple task, right? Just replace the old host name with the new one and redeploy."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The challenge lay in the fact that multiple Lambda functions depended on the database, each with its own little piece of configuration containing the database host name. If the host name was hard coded in all those functions, I would have had to painstakingly update each and every one of them manually.&lt;/p&gt;

&lt;p&gt;But, to my immense relief, this was not the case. Instead of using hard-coded values, we had employed a clever practice – storing sensitive information, like the database host name, in environment variables.&lt;/p&gt;

&lt;p&gt;You might wonder, what are environment variables? Well, they are like secret vaults, where you can store important information separate from your code. This ingenious approach not only keeps your sensitive data safe from prying eyes but also helps you avoid the pain of hunting down and modifying code snippets scattered across your entire project.&lt;br&gt;
It also makes it easy to update the information without having to modify the code.&lt;/p&gt;

&lt;p&gt;I used Boto3 to update the environment variables in all the AWS Lambda functions. The script looped through each function, read its environment variable, and replaced the old host name with the new one.&lt;/p&gt;

&lt;p&gt;The beauty of this approach didn't stop there. By using environment variables, we also ensured that our sensitive information remained hidden from prying eyes. Even if someone gained unauthorized access to the codebase, they would find no trace of the sensitive data, making our application far more secure.&lt;/p&gt;

&lt;p&gt;But that's not all; environment variables can work like a charm in other scenarios too. Let's say you have an API key, a password, or any time-bound data that needs to be kept secret. Instead of baking it into your code, you can simply store it as an environment variable, and voilà! You have unlocked the true potential of dynamic and secure configuration management.&lt;/p&gt;

&lt;p&gt;From that day onward, I vowed always to use environment variables to store sensitive information and time-bound data. This developer's tale taught me a valuable lesson: &lt;em&gt;clever solutions are often hidden in plain sight&lt;/em&gt;. Environment variables are a small, unassuming feature, but their power is immeasurable.&lt;/p&gt;

&lt;p&gt;So, dear fellow developers, if you haven't embraced the wonders of environment variables yet, I urge you to do so. You might not have encountered a situation as complex as mine just yet, but when you do, you'll thank your past self for adopting this simple yet powerful practice. Embrace the magic of environment variables, and let them simplify your life and secure your applications like never before.&lt;/p&gt;

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

&lt;p&gt;In this magical journey of a developer, we discovered the hidden power of environment variables and how they can save us from many coding woes. Storing sensitive data and time-bound information in these secret vaults makes our applications more secure and flexible. By adopting this simple yet powerful practice, we can spare ourselves from the tiring task of manually updating code and avoid potential security risks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Points
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Environment variables are like secret vaults where we store sensitive information separate from our code.&lt;/li&gt;
&lt;li&gt;They help us avoid hard-coding sensitive data, making it easier to update and maintain our applications.&lt;/li&gt;
&lt;li&gt;Using environment variables saves time and effort when updating multiple configurations simultaneously.&lt;/li&gt;
&lt;li&gt;They enhance security by keeping sensitive data hidden from unauthorized access.&lt;/li&gt;
&lt;li&gt;Environment variables are not just for database hosts; they can store API keys, passwords, and time-bound data too.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Embrace the magic of environment variables to unlock the true potential of dynamic and secure configuration management.&lt;/p&gt;

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

</description>
      <category>softwareengineering</category>
      <category>aws</category>
      <category>python</category>
      <category>security</category>
    </item>
    <item>
      <title>How I Built Lift Simulator using HTML, CSS, and JavaScript.</title>
      <dc:creator>Ahamed Ruyefa</dc:creator>
      <pubDate>Wed, 19 Jul 2023 05:32:08 +0000</pubDate>
      <link>https://forem.com/ardf/how-i-build-lift-simulator-using-html-css-and-javascript-5351</link>
      <guid>https://forem.com/ardf/how-i-build-lift-simulator-using-html-css-and-javascript-5351</guid>
      <description>&lt;p&gt;JavaScript is a powerful and versatile programming language that can be used for web development, data analysis, game design, and more. However, learning JavaScript can be challenging, especially for beginners who are not familiar with its syntax, features, and paradigms. That’s why I decided to create a lift simulation project as a way to practice and improve my JavaScript skills.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is a lift simulation project?&lt;/strong&gt;&lt;br&gt;
A lift simulation project is a web application that simulates the behavior of a lift (or elevator) in a building. The user can interact with the lift by pressing buttons to select floors, and the lift will move accordingly. The lift simulation project also displays the current floor, direction, and status of the lift on the web page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How did I create the lift simulation project?&lt;/strong&gt;&lt;br&gt;
To create the lift simulation project, I used HTML, CSS, and JavaScript as the main technologies. Here are the main steps I followed to create the project:&lt;/p&gt;

&lt;p&gt;I created an HTML file that contains the basic structure of the web page, such as the title, header, footer, and main content.&lt;br&gt;
I created a CSS file that defines the style and layout of the web page elements, such as the colors, fonts, margins, and positions.&lt;br&gt;
I created a JavaScript file that contains the logic and functionality of the lift simulation project. This file has several variables, functions, and event listeners that control the behavior of the lift.&lt;br&gt;
I linked the HTML, CSS, and JavaScript files together using script and link tags in the HTML file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are some of the challenges and learnings I faced while creating the lift simulation project?&lt;/strong&gt;&lt;br&gt;
Creating the lift simulation project was not easy. I faced many challenges and learned many new things along the way. Here are some of them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One of the challenges was to design a realistic and user-friendly interface for the lift simulation project. I had to think about how to arrange the buttons, labels, and indicators on the web page in a way that makes sense and looks good. I also had to consider how to make the web page responsive for different screen sizes and devices.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Another challenge was to implement the logic and functionality of the lift simulation project. I had to think about how to store and manipulate data, such as the current floor, status, and queue of requests for the lift. I also had to think about how to handle different scenarios and edge cases, such as when there are multiple requests for the same floor or when there are no requests at all. To overcome this challenge, I used JavaScript as a programming language to create variables, functions, and event listeners that control the behavior of the lift.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Another learning was to use debugging tools and techniques in my code. Debugging is the process of finding and fixing errors or bugs in code. Debugging tools and techniques are tools or methods that help me identify and solve problems in my code. Some of the debugging tools and techniques I used are console.log(), alert(), debugger;, etc. These tools and techniques helped me track down and resolve issues in my code faster and easier.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What are some of the benefits and outcomes of creating the lift simulation project?&lt;/strong&gt;&lt;br&gt;
Creating the lift simulation project was a rewarding experience for me. It helped me achieve several benefits and outcomes, such as:&lt;/p&gt;

&lt;p&gt;It improved my JavaScript skills by giving me an opportunity to practice and apply what I learned from various sources, such as books, courses, tutorials, etc.&lt;br&gt;
It enhanced my web development skills by giving me an opportunity to work with different technologies, such as HTML, CSS, JavaScript, etc.&lt;br&gt;
It increased my confidence and motivation by giving me an opportunity to create something useful and fun from scratch.&lt;br&gt;
It showcased my creativity and problem-solving skills by giving me an opportunity to design and implement a unique project idea.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
The lift simulation project was a challenging but enjoyable project that helped me learn and improve my JavaScript and web development skills. It also gave me a sense of accomplishment and satisfaction. I hope you enjoyed reading this article and learned something from it. &lt;br&gt;
If you want to see the lift simulation project in action, you can visit this link: &lt;a href="https://lift-simulation-ardf.vercel.app/" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;. &lt;br&gt;
The codebase is public. Feel free to fork and add your own features - &lt;a href="https://github.com/ardf/Lift-Simulation" rel="noopener noreferrer"&gt;Github&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>html</category>
      <category>css</category>
    </item>
    <item>
      <title>Are your users' passwords strong enough? This Python library eases your job</title>
      <dc:creator>Ahamed Ruyefa</dc:creator>
      <pubDate>Tue, 11 Jul 2023 07:52:16 +0000</pubDate>
      <link>https://forem.com/ardf/safeguard-your-digital-life-with-secure-passwords-as-a-python-developer-2gbk</link>
      <guid>https://forem.com/ardf/safeguard-your-digital-life-with-secure-passwords-as-a-python-developer-2gbk</guid>
      <description>&lt;p&gt;In today's world, having secure passwords is essential to protect your online accounts and personal information. Weak and easily guessable passwords make you vulnerable to cyberattacks, while using the same password for multiple accounts puts all your accounts at risk. To help you fortify your passwords effortlessly, there's the password-lib module for Python.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Are Secure Passwords Essential?
&lt;/h3&gt;

&lt;p&gt;Secure passwords act as a robust defense mechanism against unauthorized access to your personal information. Weak passwords, such as "123456" or "password123," are easily guessable and make you vulnerable to cyberattacks. Using the same password across multiple accounts is equally dangerous. If one account gets compromised, hackers can gain access to all your other accounts, including sensitive information like banking details and personal emails.&lt;/p&gt;

&lt;h3&gt;
  
  
  Introducing password_lib
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;password_lib&lt;/code&gt; module is a user-friendly Python package designed to facilitate password security. With a simple installation using pip, you can quickly empower yourself with its features. Let's explore some of the functionalities it offers:&lt;/p&gt;

&lt;h4&gt;
  
  
  Password Strength Checking
&lt;/h4&gt;

&lt;p&gt;The module enables you to evaluate the strength of your passwords. It checks crucial factors like length, inclusion of lowercase and uppercase characters, special characters, and digits. By enforcing strong password requirements, you can significantly reduce the chances of brute-force attacks and password guessing.&lt;/p&gt;

&lt;h4&gt;
  
  
  Password Generation
&lt;/h4&gt;

&lt;p&gt;Creating strong, random passwords for each account can be challenging. However, &lt;code&gt;password_lib&lt;/code&gt; simplifies this process. It includes a password generation feature that generates highly secure passwords for you. You can specify the desired length and complexity requirements, and the module will create a unique password that meets your criteria.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting Started
&lt;/h3&gt;

&lt;p&gt;Getting started with &lt;code&gt;password_lib&lt;/code&gt; is a breeze. Simply open your command line and install the module using pip:&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 password_lib
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once installed, you can import the module into your Python projects and utilize its powerful features.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;The importance of secure passwords cannot be overstated. By incorporating the &lt;code&gt;password-lib&lt;/code&gt; module into your Python projects, you can effortlessly ensure the strength and security of your passwords. Protecting your online accounts is vital for safeguarding your personal information and maintaining your privacy. Take the first step in securing your digital life by using strong and unique passwords with the help of &lt;code&gt;password-lib&lt;/code&gt;. Remember, a small effort in creating secure passwords today can save you from significant headaches in the future.&lt;/p&gt;

&lt;p&gt;So, why wait? Install the &lt;code&gt;password-lib&lt;/code&gt; module today and fortify your passwords for a safer online experience!&lt;/p&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.github.com/ardf/password_utils" rel="noopener noreferrer"&gt;Github - ardf/password_utils&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pypi.org/project/password-lib/" rel="noopener noreferrer"&gt;Pypi - password-lib&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>cybsersecurity</category>
      <category>python</category>
      <category>password</category>
      <category>online</category>
    </item>
  </channel>
</rss>
