<?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: walerick</title>
    <description>The latest articles on DEV Community by walerick (@walerick).</description>
    <link>https://dev.to/walerick</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%2F559035%2F2ee42fff-7cf8-49f5-880b-f54700e23291.png</url>
      <title>DEV Community: walerick</title>
      <link>https://dev.to/walerick</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/walerick"/>
    <language>en</language>
    <item>
      <title>Mobile Development Platforms and Arcitecture patterns</title>
      <dc:creator>walerick</dc:creator>
      <pubDate>Sun, 30 Jun 2024 22:34:15 +0000</pubDate>
      <link>https://dev.to/walerick/mobile-development-platforms-and-arcitecture-patterns-aal</link>
      <guid>https://dev.to/walerick/mobile-development-platforms-and-arcitecture-patterns-aal</guid>
      <description>&lt;p&gt;We have different platforms that programmers use to develop scalable and efficient projects for mobile. Below are  different mobile development patterns and their usefulness&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Native Development&lt;/strong&gt; : There are two categories for these platforms namely&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;IOS- can bedeveloped with swift or objective-c in Xcode.&lt;/li&gt;
&lt;li&gt;Android - can be developed using kotlin  or Java in Android Studio.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cross-Platform Development&lt;/strong&gt;: There are quite a few platforms under this category namely&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Flutter- Uses Dart Language.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;React Native- Uses Javascript and React.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Xamarin - Uses C# and .NET&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ion - Uses simple web technologies (html, Css and Js).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hybrid Development&lt;/strong&gt; : &lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Cardova - Uses Html, CSS and JavaScript.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Capacitor - Modern alternative to Cardova.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Common Software Arcitecture Pattern with their Pros and Cons
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;MVC(Model-View-Controller)&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Model: Manages data and business logic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;View: Manages the display and user interface.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Controller: Acts as an intermediary between Model and View, handling user input and updating the view accordingly.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;:&lt;br&gt;
Separation of Concerns: Clear division between the application's data, UI, and logic.&lt;br&gt;
Reusability: Models and Views can be reused across different parts of the application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Overhead in Small Applications: For simple apps, MVC can add unnecessary complexity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Complex Controller Logic: Controllers can become overloaded with logic, leading to "Massive View Controller" in iOS development.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;MVP (Model-View-Presenter)&lt;/strong&gt; :&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Model: Manages the data and business logic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;View: A passive interface that displays data and routes user interactions to the Presenter.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Presenter: Handles all the UI logic and communicates between Model and View, making the View more passive.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Improved Testability: Presenters can be tested independently from the Views, enhancing unit test coverage.&lt;br&gt;
Decoupled View Logic: Views are simpler and more focused on rendering data, reducing the risk of complex, monolithic components.&lt;br&gt;
Flexible Views: Easier to swap out or change Views without affecting business logic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Boilerplate Code: Can lead to a significant amount of boilerplate, especially in large applications.&lt;br&gt;
Presenter Complexity: Presenters can become overly complex as they take on more responsibilities.&lt;br&gt;
Maintenance Overhead: Managing interactions between multiple Presenters and Views can become cumbersome.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;MVVM (Model-View-ViewModel)&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Model: Manages data and business logic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;View: Handles the display and binds to properties exposed by the ViewModel.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ViewModel: Acts as a mediator between Model and View, exposing data and handling most of the logic.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Two-Way Data Binding: Enables automatic synchronization between the View and the ViewModel, reducing the need for boilerplate code.&lt;br&gt;
Enhanced Testability: ViewModels can be tested independently of the Views, promoting better test coverage.&lt;br&gt;
Separation of Concerns: Clearly separates UI logic from business logic, making the code more maintainable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Complex Data Binding: Managing data binding can become complex and difficult to debug, especially in larger applications.&lt;br&gt;
Performance Overhead: Extensive use of data binding may lead to performance issues due to frequent UI updates.&lt;br&gt;
Steeper Learning Curve: Understanding and properly implementing MVVM can be challenging for developers new to the pattern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Clean Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Domain Layer: Contains the business logic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data Layer: Manages data sources and repositories.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Presentation Layer: Handles the UI and presentation logic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Interface Adapters: Convert data between the different layers.&lt;br&gt;
&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Highly Scalable: Suitable for large, complex applications due to its modular structure.&lt;br&gt;
Testability: Each layer can be tested independently, ensuring thorough and effective testing.&lt;br&gt;
Independent Frameworks: The architecture is not tightly coupled to any framework, making it easier to switch or update technologies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Initial Complexity: Setting up and understanding Clean Architecture can be daunting, especially for smaller teams or projects.&lt;br&gt;
Increased Development Time: The overhead of maintaining strict boundaries between layers can slow down the development process.&lt;br&gt;
Overkill for Simple Apps: May be excessive for small or simple applications due to its detailed and structured nature.&lt;/p&gt;

&lt;p&gt;Thanks for reading this far, I'm Voldemort a Software engineer.&lt;br&gt;
I accidentally bumped into a post about a free online internship program, &lt;a href="https://hng.tech/internship"&gt;HNG&lt;/a&gt;.&lt;br&gt;
There is also provision to be certified and enjoy &lt;a href="https://hng.tech/premium"&gt;premium&lt;/a&gt; package.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Talking about ReactJs and Nextjs.</title>
      <dc:creator>walerick</dc:creator>
      <pubDate>Sun, 30 Jun 2024 18:46:38 +0000</pubDate>
      <link>https://dev.to/walerick/talking-about-reactjs-and-nextjs-32b3</link>
      <guid>https://dev.to/walerick/talking-about-reactjs-and-nextjs-32b3</guid>
      <description>&lt;h2&gt;
  
  
  Getting familiar with React
&lt;/h2&gt;

&lt;p&gt;React is an open source and flexible Javascript library that allows developers to develop scalable, simple, and fast frontend interfaces for Single Page Application. It supports a functional programming paradigm and a reactive approach.&lt;br&gt;
It was developed by Facebook.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is React used for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Social Media Platforms e.g Facebook, Instagram.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Online Video streaming e.g Netflix&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SAAS tools e.g Zapier.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting familiar with NextJs
&lt;/h2&gt;

&lt;p&gt;Next.Js an open-source and JavaScript framework, allowing you to develop fast and user-friendly web applications and static websites using React.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Next.js used for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;E-commerce&lt;/li&gt;
&lt;li&gt;Landing Pages&lt;/li&gt;
&lt;li&gt;Marketing Website&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Which should you use for my project?
&lt;/h2&gt;

&lt;p&gt;Selecting a framework or library complete depends on your project needs. React and Next.js are emerging and beneficial tools for your project, but only for performing certain tasks.&lt;/p&gt;

&lt;p&gt;Thanks for reading this far. I hope this article helps in a way. There is a an internship program that is currently going on at the moment, &lt;a href="https://hng.tech/internship"&gt;HNG11&lt;/a&gt;.&lt;br&gt;
This year is their 11th year edition and it's completely free.&lt;br&gt;
However, Applicants have the opportunity to&lt;a href="https://hng.tech/premium"&gt;subscribe&lt;/a&gt; for a year premium package.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How I ensured user authentication, by sending emails in Spring Boot</title>
      <dc:creator>walerick</dc:creator>
      <pubDate>Sun, 30 Jun 2024 16:56:50 +0000</pubDate>
      <link>https://dev.to/walerick/how-i-ensured-user-authentication-by-sending-emails-in-spring-boot-866</link>
      <guid>https://dev.to/walerick/how-i-ensured-user-authentication-by-sending-emails-in-spring-boot-866</guid>
      <description>&lt;h2&gt;
  
  
  How to send email in Java Spring Boot
&lt;/h2&gt;

&lt;p&gt;First of all, add the &lt;code&gt;spring-starter-mail&lt;/code&gt; dependency.&lt;br&gt;
This can also be added by modifying your project &lt;code&gt;pom.xml&lt;/code&gt; file to include the following&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;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-boot-starter-mail&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After you've successfully added the dependency, create a class object and access the the &lt;code&gt;JavaMailSender&lt;/code&gt; Interface in your code by following these few steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Use the &lt;code&gt;@Autowired&lt;/code&gt; annotation, to inject he &lt;code&gt;JavaMailSender&lt;/code&gt; interface into the &lt;code&gt;EmailService&lt;/code&gt; class.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a &lt;code&gt;DemoMailMessage&lt;/code&gt; object.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add email properties by using specific methods (&lt;code&gt;setTo&lt;/code&gt;, &lt;code&gt;setSubject&lt;/code&gt;, &lt;code&gt;setText&lt;/code&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Call the &lt;code&gt;send()&lt;/code&gt; method to send the email message.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your code should be similar to this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package com.example;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;

public class MyClass {
    @Service
public class EmailService {

    @Autowired
    private JavaMailSender mailSender;

    public void sendEmail(String to, String subject, String body) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo(to);
        message.setSubject(subject);
        message.setText(body);

        mailSender.send(message);
    }
}
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, you need to configure the SMTP server settings in your &lt;code&gt;application.properties&lt;/code&gt; file as shown below&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;spring.mail.host=smtp.example.com
spring.mail.port=25
spring.mail.username=setusername
spring.mail.password=setpassword
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you're good to go.&lt;/p&gt;

&lt;p&gt;Since you made it this far, There is an internship program, &lt;a href="https://hng.tech/internship"&gt;&lt;/a&gt; that I stumbled upon twitter where developers can learn more and network better. There is also an option to get Certificate if you subscribe to the &lt;a href="https://hng.tech/premium"&gt;premium&lt;/a&gt; package instead.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
