<?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: Enmanuel Magallanes Pinargote</title>
    <description>The latest articles on Forem by Enmanuel Magallanes Pinargote (@enmanuelmag).</description>
    <link>https://forem.com/enmanuelmag</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%2F1258109%2F7574ecf4-bde6-4716-8a78-96ff4df81069.jpeg</url>
      <title>Forem: Enmanuel Magallanes Pinargote</title>
      <link>https://forem.com/enmanuelmag</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/enmanuelmag"/>
    <language>en</language>
    <item>
      <title>Security Logger</title>
      <dc:creator>Enmanuel Magallanes Pinargote</dc:creator>
      <pubDate>Tue, 16 Jan 2024 13:56:10 +0000</pubDate>
      <link>https://forem.com/enmanuelmag/security-logger-kba</link>
      <guid>https://forem.com/enmanuelmag/security-logger-kba</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Disclaimer: The only real data in this site was hidden to protect the privacy of the user. The rest of the data is fake.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This project is build with ViteJs and ReactJs, the main idea is to create a web app and also a native desktop app to register new visitors on urbanization, the web app is for the directive (i.e urbanization president) and the desktop app is for the security guard.&lt;/p&gt;

&lt;p&gt;The app allow to create user three types of user:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Admin: Can create new users and also can see all the logs&lt;/li&gt;
  &lt;li&gt;Security guard: Can create, read and update new logs&lt;/li&gt;
  &lt;li&gt;Guest: Can only read the logs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The records are stored first in the &lt;strong&gt;IndexDB&lt;/strong&gt; and then are synced with the Firestore database, the app also has a &lt;strong&gt;offline mode&lt;/strong&gt;, so the user can use the app without internet connection and when the connection is available the app will &lt;strong&gt;sync the data with the database&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The records could be filtered by visitor name, visitor ID, date, and also by the house number, the app also has a &lt;strong&gt;search bar&lt;/strong&gt; that allow to search by name quickly. Also, you can exported the entire records of filtered records to a XLSX file or a PDF file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deep learning integration
&lt;/h2&gt;

&lt;p&gt;This app also has a integration with a other personal project, that consist in a &lt;strong&gt;Deep Learning model&lt;/strong&gt; that can detect and extract the text of visitor name and ID from a image. So the app can extract the image from the security camera that focus the visitor ID and the model will extract the text and fill the form with the data. The information can be edited by the security guard too. The model is build with &lt;strong&gt;Tensorflow&lt;/strong&gt; based on a little version of YOLOv5.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LzdmIhLR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yv5w1e7jbyy6t8moct0c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LzdmIhLR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yv5w1e7jbyy6t8moct0c.png" alt="Web app view" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Currently the app is only available in Spanish, and deploy or installation is only available previos contact and agreement. The app will have more tools powered by AI to detect and extract more information as vehicle plate, visitor face, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech used
&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Firebase (Auth, Firestore)&lt;/li&gt;
  &lt;li&gt;ReactJs, React Router, React Context&lt;/li&gt;
  &lt;li&gt;React-Query&lt;/li&gt;
  &lt;li&gt;Zod (Validation)&lt;/li&gt;
  &lt;li&gt;Tensorflow&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ia</category>
      <category>webdev</category>
      <category>security</category>
    </item>
    <item>
      <title>Budgetfy</title>
      <dc:creator>Enmanuel Magallanes Pinargote</dc:creator>
      <pubDate>Tue, 16 Jan 2024 13:50:59 +0000</pubDate>
      <link>https://forem.com/enmanuelmag/budgetfy-ii7</link>
      <guid>https://forem.com/enmanuelmag/budgetfy-ii7</guid>
      <description>&lt;p&gt;In this web app you can create budget to define your expenses and incomes as unique events or recurrent events as you usually create events for a calendar, in order to plan your &lt;strong&gt;budget through slice of time that you can define&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The Budget view has show you one card per moth with three sections. The first section is Category summary, it show the total amount of money for each category that you have defined.&lt;/p&gt;

&lt;p&gt;The second section is Timeline, that show the following information:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Timeline: show all the events for that month (expenses and incomes) and the estimated balance for that month. Also if you clic on the event you can mark it as paid (for expenses) or received (for incomes). This will update the balance.&lt;/li&gt;
  &lt;li&gt;Balance: section you will see all the money available without expenses for that month and the monthly balance, it mean the difference between the incomes and the expenses for that specific month.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally the third section is the &lt;strong&gt;Timeline plot&lt;/strong&gt;, that show the evolution of the incomes, expenses and balance for the the defined range of time on the budget creation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LApJ4yYX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e575gwljmpr8up8y713y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LApJ4yYX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e575gwljmpr8up8y713y.png" alt="Web app view" width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can create a account for free using a email and password or &lt;strong&gt;Google account&lt;/strong&gt;, then you can create your budget and start to add your incomes and expenses. Visit the &lt;a rel="noopener noreferrer" href="https://budgetfy.cardor.dev"&gt;website&lt;/a&gt; to see more details.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech used
&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Firebase (Auth, Firestore)&lt;/li&gt;
  &lt;li&gt;ReactJs, React Router, React Context&lt;/li&gt;
  &lt;li&gt;React-Query&lt;/li&gt;
  &lt;li&gt;Highcharts&lt;/li&gt;
  &lt;li&gt;Zod (Validation)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
      <category>finances</category>
      <category>firebase</category>
      <category>webdev</category>
    </item>
    <item>
      <title>IAflow</title>
      <dc:creator>Enmanuel Magallanes Pinargote</dc:creator>
      <pubDate>Tue, 16 Jan 2024 13:42:19 +0000</pubDate>
      <link>https://forem.com/enmanuelmag/iaflow-j3m</link>
      <guid>https://forem.com/enmanuelmag/iaflow-j3m</guid>
      <description>&lt;p&gt;This library help to create models with identifiers, checkpoints, logs and metadata automatically, in order to make the training process more efficient and traceable.&lt;/p&gt;

&lt;p&gt;For install the library, you can use pip:&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;iaflow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you can create the &lt;code&gt;ia_make&lt;/code&gt; with the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;ia_maker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;IAFlow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;models_folder&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;./models&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;checkpoint_params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;monitor&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;val_loss&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;save_best_only&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;save_weights_only&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="n"&gt;tensorboard_params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;histogram_freq&lt;/span&gt;&lt;span class="sh"&gt;'&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="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;write_graph&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;write_images&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And then you can add the model with the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;model_1_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ia_maker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;model_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;model_1&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;model_params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;input_shape&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&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="p"&gt;},&lt;/span&gt;
  &lt;span class="n"&gt;load_model_params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{},&lt;/span&gt;
  &lt;span class="n"&gt;compile_params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;metrics&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;accuracy&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;optimizer&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;adam&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;loss&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;mse&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, you can train the model with the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;ia_maker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;train&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;model_1_data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;epochs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;dataset_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;dataset_1&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This library has integration with &lt;a href="https://github.com/enmanuelmag/notify_function"&gt;Notifier Status Function&lt;/a&gt;, so you can send notifications to Telegram when the training process is finished. To check how to use it and more feature as managing Dataset and Models with the library, you can check the &lt;a rel="noopener noreferrer" href="https://iaflow.cardor.dev"&gt;documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech used
&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Python&lt;/li&gt;
  &lt;li&gt;Tensorflow&lt;/li&gt;
  &lt;li&gt;Telegram API&lt;/li&gt;
  &lt;li&gt;Notifier Status Function (personal lib)&lt;/li&gt;
  &lt;li&gt;Webhooks&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>deeplearning</category>
      <category>tensorflow</category>
      <category>python</category>
    </item>
    <item>
      <title>Mi Horario Web (MHW)</title>
      <dc:creator>Enmanuel Magallanes Pinargote</dc:creator>
      <pubDate>Tue, 16 Jan 2024 13:39:51 +0000</pubDate>
      <link>https://forem.com/enmanuelmag/mi-horario-web-mhw-epp</link>
      <guid>https://forem.com/enmanuelmag/mi-horario-web-mhw-epp</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Disclaimer: Currently we are working on improve and update of NodeJS version of the Lambda functions, so the website is not working properly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is an online timetable generator for students of the ESPOL University. It allows to obtain information of the planned courses, statistics of the teacher in charge and to generate options of schedules according to the courses and selected parallels.&lt;/p&gt;

&lt;p&gt;The project is developed in React and Material-UI, MongoDB as main database for all courses information and FireStore as realtime database for update de progress of schedule generation on the client side.&lt;/p&gt;

&lt;p&gt;The steps to create schedules are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Select the subjects that you will take.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Selected the course numbers that you would like to choose. In this section you can also see the course's teacher, his/her qualification and student's opinios about him/her.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The you can execute the schedules generations, the process can take a while, so a progress bar is show up with the progress update in real time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finally you can see all the options of schedules with out conflict on hours class or exams. You can also download the information as a table (just course numbers and subject) or download the calendar view.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6DUSVFMH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j0xknwh4d4ddq3f05loe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6DUSVFMH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j0xknwh4d4ddq3f05loe.png" alt="View of MHW web app" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech used
&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;React&lt;/li&gt;
  &lt;li&gt;Material-UI&lt;/li&gt;
  &lt;li&gt;MongoDB&lt;/li&gt;
  &lt;li&gt;Highcharts&lt;/li&gt;
  &lt;li&gt;AWS State Machine&lt;/li&gt;
  &lt;li&gt;AWS Lambda Functions&lt;/li&gt;
  &lt;li&gt;Firebase (Auth, Firestore)&lt;/li&gt;
  &lt;li&gt;Github Actions&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>firebase</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Notifier Function Status</title>
      <dc:creator>Enmanuel Magallanes Pinargote</dc:creator>
      <pubDate>Tue, 16 Jan 2024 13:34:38 +0000</pubDate>
      <link>https://forem.com/enmanuelmag/notifier-function-status-4bd6</link>
      <guid>https://forem.com/enmanuelmag/notifier-function-status-4bd6</guid>
      <description>&lt;p&gt;This library provides a decorator to show a toast in your screen and if you setup, send a email when your function end. All that you need to do is use a decorator and some specific parameters, like in the following example:&lt;br&gt;
&lt;/p&gt;

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

&lt;span class="c1"&gt;# Send a message to telegram
&lt;/span&gt;&lt;span class="nd"&gt;@notify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_token&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;your_api_token&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;chat_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;your_chat_id&lt;/span&gt;&lt;span class="sh"&gt;'&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;your_function&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Hello World!&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Another way is by manually calling the function:&lt;br&gt;
&lt;/p&gt;

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

&lt;span class="n"&gt;notifier&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Notifier&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Execution for&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;api_token&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;your_api_token&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
  &lt;span class="n"&gt;chat_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;your_chat_id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;notifier&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Hello World &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;!&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# You can also override all the previous parameters,
# on the constructor, by passing them to the function
&lt;/span&gt;&lt;span class="nf"&gt;notifier&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Execution done&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Finished!&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check these features a more detailed on the &lt;a rel="noopener noreferrer" href="https://github.com/enmanuelmag/notify_function"&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech used
&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Python&lt;/li&gt;
  &lt;li&gt;Telegram API&lt;/li&gt;
  &lt;li&gt;Discord webhooks&lt;/li&gt;
&lt;/ul&gt;

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