<?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: Usenmfon</title>
    <description>The latest articles on DEV Community by Usenmfon (@usenmfon_uko).</description>
    <link>https://dev.to/usenmfon_uko</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%2F377498%2F044c1449-446b-46f9-8120-2a3ea4c96586.jpg</url>
      <title>DEV Community: Usenmfon</title>
      <link>https://dev.to/usenmfon_uko</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/usenmfon_uko"/>
    <language>en</language>
    <item>
      <title>Laravel AI Agent That Chats with Telex.im</title>
      <dc:creator>Usenmfon</dc:creator>
      <pubDate>Tue, 04 Nov 2025 20:45:02 +0000</pubDate>
      <link>https://dev.to/usenmfon_uko/laravel-ai-agent-that-chats-with-telexim-2elj</link>
      <guid>https://dev.to/usenmfon_uko/laravel-ai-agent-that-chats-with-telexim-2elj</guid>
      <description>&lt;h2&gt;
  
  
  🤖 Building a Laravel AI Agent That Chats with Telex.im Using Neuron AI + Gemini 2.5 Flash
&lt;/h2&gt;




&lt;h2&gt;
  
  
  🌟 Introduction
&lt;/h2&gt;

&lt;p&gt;Imagine chatting with an intelligent Laravel agent right inside your &lt;strong&gt;Telex.im&lt;/strong&gt; workspace — one that can &lt;strong&gt;explain&lt;/strong&gt;, &lt;strong&gt;generate&lt;/strong&gt;, or &lt;strong&gt;fix code&lt;/strong&gt; instantly.  &lt;/p&gt;

&lt;p&gt;That’s exactly what I built: &lt;strong&gt;Dev Assist&lt;/strong&gt;, a Laravel-based AI assistant powered by &lt;strong&gt;Neuron AI&lt;/strong&gt; and &lt;strong&gt;Google Gemini 2.5 Flash&lt;/strong&gt;, integrated with &lt;strong&gt;Telex.im&lt;/strong&gt; using a workflow node (&lt;code&gt;a2a/mastra-a2a-node&lt;/code&gt;) and publicly accessible via &lt;strong&gt;Expose&lt;/strong&gt; and &lt;strong&gt;Render&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This setup creates a complete conversational loop between Telex and Laravel, driven by cutting-edge AI.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 What Powers Dev Assist
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Laravel&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Backend logic, routing, and message orchestration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Neuron AI (neuron-core/neuron-ai)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI framework bridging Laravel with Gemini API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gemini 2.5 Flash&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The reasoning and code-generation model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Telex.im&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The collaboration environment where the agent lives&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Expose + Render&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Publicly expose and host the Laravel endpoint&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  ⚙️ Step 1: Setting Up Laravel + Neuron AI
&lt;/h2&gt;

&lt;p&gt;Install the Neuron AI package (core version):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;composer require neuron-core/neuron-ai
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then configure your .env file with Gemini credentials:&lt;/p&gt;

&lt;p&gt;NEURON_PROVIDER=gemini&lt;br&gt;
GEMINI_API_KEY=your_gemini_api_key&lt;br&gt;
GEMINI_MODEL=gemini-2.5-flash&lt;/p&gt;

&lt;p&gt;🧩 neuron-core acts as an abstraction layer, letting you switch between OpenAI, Gemini, and other providers easily.&lt;/p&gt;

&lt;p&gt;🧩 Step 2: Build the AI Service in Laravel&lt;/p&gt;

&lt;p&gt;Here’s the DevAssistService class that handles intent detection, Neuron AI communication, and Telex responses:&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;?php

namespace App\Services;

use App\Neuron\DevAssistAgent;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
use NeuronAI\Chat\Messages\UserMessage;

class DevAssistService
{
    public function detectIntent(string $message): string
    {
        $msg = strtolower($message);
        return match (true) {
            str_contains($msg, 'explain') =&amp;gt; 'explain_code',
            str_contains($msg, 'generate') =&amp;gt; 'generate_code',
            str_contains($msg, 'fix') =&amp;gt; 'fix_code',
            default =&amp;gt; 'general',
        };
    }

    public function processMessage(string $intent, string $message): string
    {
        $prefixed = match ($intent) {
            'explain_code' =&amp;gt; "[EXPLAIN]\n{$message}",
            'generate_code' =&amp;gt; "[GENERATE]\n{$message}",
            'fix_code' =&amp;gt; "[FIX]\n{$message}",
            default =&amp;gt; $message,
        };

        try {
            $agent = DevAssistAgent::make();
            $result = $agent-&amp;gt;chat(new UserMessage($prefixed));
            return $result-&amp;gt;content ?? 'No response received.';
        } catch (\Throwable $e) {
            Log::error('Agent error: '.$e-&amp;gt;getMessage());
            return "Sorry — the Dev Assist agent failed to respond. Try again later.";
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧠 What Makes Gemini 2.5 Flash Special&lt;/p&gt;

&lt;p&gt;Built for fast inference and low latency&lt;/p&gt;

&lt;p&gt;Strong at code reasoning and language understanding&lt;/p&gt;

&lt;p&gt;Works seamlessly through Neuron AI without changing your Laravel code&lt;/p&gt;

&lt;p&gt;Supports both short-form chat and structured JSON responses&lt;/p&gt;

</description>
      <category>agents</category>
      <category>gemini</category>
      <category>laravel</category>
      <category>ai</category>
    </item>
    <item>
      <title>HOW TO SET UP AN APP PASSWORD FOR GOOGLE SERVICES</title>
      <dc:creator>Usenmfon</dc:creator>
      <pubDate>Sat, 12 Oct 2024 06:02:01 +0000</pubDate>
      <link>https://dev.to/usenmfon_uko/how-to-set-up-an-app-password-for-google-services-28oe</link>
      <guid>https://dev.to/usenmfon_uko/how-to-set-up-an-app-password-for-google-services-28oe</guid>
      <description>&lt;p&gt;Setting up an email service that uses Google can be daunting, especially since Google no longer supports using your regular email address and password for external apps. The easiest way to get around this is by generating an app password from your Google account.&lt;/p&gt;

&lt;p&gt;In this article, I’ll guide you through the steps to generate an app password. Let’s get started!&lt;/p&gt;

&lt;p&gt;Step-by-Step Guide&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Click on your account icon and select "Manage your Google Account."&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%2Fft9nuslqxmh2jfugaoaj.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%2Fft9nuslqxmh2jfugaoaj.png" alt="select security option" width="800" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; In the account page, select "Security" from the left-hand menu.&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%2Fw4na1s642qoowhxsqyn7.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%2Fw4na1s642qoowhxsqyn7.png" alt="setup two-factor" width="800" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Set up two-factor authentication (If you already have this set up, proceed to step 5).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Click on "2-Step Verification" and follow the prompts to turn it on. Once done, return to your account page.&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%2F377qhyzjdhh6qerqot67.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%2F377qhyzjdhh6qerqot67.png" alt="security option" width="800" height="274"&gt;&lt;/a&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%2F5c4m2thhgzhc2016jgbz.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%2F5c4m2thhgzhc2016jgbz.png" alt="two-factor enabled" width="800" height="248"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; Use the search bar on your Google Account page to search for "App Passwords" and select it.&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%2Finqcyxweyv7geci0kjue.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%2Finqcyxweyv7geci0kjue.png" alt="search app password" width="800" height="207"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6:&lt;/strong&gt; Enter the name of the app for which you’re generating the password, and click "Create."&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%2F88e8nir4kuh3bqh6flg0.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%2F88e8nir4kuh3bqh6flg0.png" alt="app password name" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7:&lt;/strong&gt; Your app password will be displayed on the next page. Copy it and use it as the password along with your email address.&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%2F9uhx2pxd7nk7vc6bo6kx.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%2F9uhx2pxd7nk7vc6bo6kx.png" alt="password setup successful" width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope this guide helps!&lt;/p&gt;

</description>
      <category>google</category>
      <category>gmail</category>
      <category>password</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Part 1 - PHP String Functions</title>
      <dc:creator>Usenmfon</dc:creator>
      <pubDate>Mon, 09 Oct 2023 00:34:51 +0000</pubDate>
      <link>https://dev.to/usenmfon_uko/part-1-string-functions-57d3</link>
      <guid>https://dev.to/usenmfon_uko/part-1-string-functions-57d3</guid>
      <description>&lt;p&gt;Although PHP string functions are somewhat similar to those in other programming languages, PHP is unique and powerful for string manipulations. In this series, let's explore some examples and learn how to use them.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. addcslashes(string, character):
&lt;/h3&gt;

&lt;p&gt;The addcslashes function returns a string with backslashes in front of the specified characters. It's case-sensitive.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LY_5cBpP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1mbet21nq0h430b0e90q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LY_5cBpP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1mbet21nq0h430b0e90q.png" alt="PHP addcslashes" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. addslashes(string):
&lt;/h3&gt;

&lt;p&gt;Addslashes returns a string with the characters that need to be escaped with backslashes before them. The predefined characters include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Double quotes "&lt;/li&gt;
&lt;li&gt;Single quotes '&lt;/li&gt;
&lt;li&gt;Backslash ()&lt;/li&gt;
&lt;li&gt;NULL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dkR-trBO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0zl1bvkjoa27dnskw223.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dkR-trBO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0zl1bvkjoa27dnskw223.png" alt="PHP addslashes" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. bin2hex(string):
&lt;/h3&gt;

&lt;p&gt;Convert a string of ASCII characters to hexadecimal (Binary to hexadecimal)&lt;/p&gt;

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

&lt;h3&gt;
  
  
  4. chop(string, charlist):
&lt;/h3&gt;

&lt;p&gt;The chop function starts from the right end of the string to remove whitespace or predefined characters. It's case-sensitive&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IlygahbQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0qng6tasfzt4qii19yqq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IlygahbQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0qng6tasfzt4qii19yqq.png" alt="PHP chop" width="800" height="542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. chr():
&lt;/h3&gt;

&lt;p&gt;This function returns a simple byte string from a number. Use 0 for octal values and 0x for hex values. &lt;br&gt;
N/B: EOL - End Of Line&lt;/p&gt;

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

&lt;h3&gt;
  
  
  6. chunk_split(string, length, end):
&lt;/h3&gt;

&lt;p&gt;This function splits a string into smaller parts and determines what it should end each section with.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0oQDwEr_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nkg9jmwygn28nc6tpex2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0oQDwEr_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nkg9jmwygn28nc6tpex2.png" alt="PHP chunk_split" width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. convert_uuencode(string):
&lt;/h3&gt;

&lt;p&gt;This function encodes a string using the uuencode algorithm.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rnUj8TJg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1hho5zi15585hti6e8ul.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rnUj8TJg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1hho5zi15585hti6e8ul.png" alt="PHP uuencode" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  8. convert_uudecode():
&lt;/h3&gt;

&lt;p&gt;Convert_uudecode decodes an encoded string.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HmnCdyN5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0x9056fmk137vu5wjvqw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HmnCdyN5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0x9056fmk137vu5wjvqw.png" alt="PHP uudecode" width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  9. count_chars(string, mode):
&lt;/h3&gt;

&lt;p&gt;This function returns information about characters used in a string. Certain information can be extracted such as;&lt;br&gt;
&lt;strong&gt;mode 0&lt;/strong&gt; - returns an array with the ASCII value as key and number of occurrences as value&lt;br&gt;
&lt;strong&gt;mode 1&lt;/strong&gt; - an array with the ASCII value as key and number of occurrences as value, only lists occurrences greater than zero&lt;br&gt;
&lt;strong&gt;mode 2&lt;/strong&gt; - an array with the ASCII value as key and number of occurrences as value, only lists occurrences equal to zero are listed&lt;br&gt;
&lt;strong&gt;mode 3&lt;/strong&gt; - a string with all the different characters used&lt;br&gt;
&lt;strong&gt;mode 4&lt;/strong&gt; - a string with all the unused characters&lt;/p&gt;

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

&lt;h3&gt;
  
  
  10. explode(separator, string, limit):
&lt;/h3&gt;

&lt;p&gt;The explode function splits a string into different parts forming an array.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Separator is used to signify where to break the string&lt;/li&gt;
&lt;li&gt;String is the string to break&lt;/li&gt;
&lt;li&gt;limit is an optional parameter. 

&lt;ul&gt;
&lt;li&gt;0: returns an array with one element&lt;/li&gt;
&lt;li&gt;negative:  all elements except the last -limit are returned.&lt;/li&gt;
&lt;li&gt;positive: the returned array will contain a maximum of limit 
elements with the last element containing the rest of the string&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;In this series, we've delved into a variety of PHP string functions, each with its unique capabilities for string manipulation. From adding slashes to converting between different representations, these functions offer valuable tools for handling strings in PHP.&lt;/p&gt;

&lt;p&gt;We've explored functions like &lt;code&gt;addcslashes&lt;/code&gt;, &lt;code&gt;addslashes&lt;/code&gt;, &lt;code&gt;bin2hex&lt;/code&gt;, &lt;code&gt;chop&lt;/code&gt;, &lt;code&gt;chr&lt;/code&gt;, &lt;code&gt;chunk_split&lt;/code&gt;, &lt;code&gt;convert_uuencode&lt;/code&gt;, &lt;code&gt;convert_uudecode&lt;/code&gt;, &lt;code&gt;count_chars&lt;/code&gt;, and &lt;code&gt;explode&lt;/code&gt;, each serving its purpose in different scenarios. Understanding these functions empowers you to efficiently manipulate and analyze strings in your PHP projects.&lt;/p&gt;

&lt;p&gt;So, dive into the world of PHP string functions, explore their capabilities, and leverage them to build robust and efficient web applications. Happy coding!&lt;/p&gt;

&lt;p&gt;I am actively working on creating more series focused on special topics in PHP.&lt;/p&gt;

</description>
      <category>php</category>
      <category>programming</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>Push to GitHub as a Pro</title>
      <dc:creator>Usenmfon</dc:creator>
      <pubDate>Mon, 01 Aug 2022 15:31:00 +0000</pubDate>
      <link>https://dev.to/usenmfon_uko/push-to-github-as-a-pro-2em</link>
      <guid>https://dev.to/usenmfon_uko/push-to-github-as-a-pro-2em</guid>
      <description>&lt;p&gt;GitHub is one of the most popular version control systems being used among developers for collaborations, future referencing, versioning, and other purposes.&lt;br&gt;
This article illustrates one of many ways to commit and push changes to a remote repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Must have a GitHub account &lt;br&gt;
(signup on github here: &lt;a href="https://github.com/"&gt;https://github.com/&lt;/a&gt; &lt;br&gt;
download and install git: &lt;a href="https://git-scm.com/downloads"&gt;https://git-scm.com/downloads&lt;/a&gt;&lt;br&gt;
setting up git for the first time: &lt;a href="https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup"&gt;https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup&lt;/a&gt;) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Visual Studio Code Editor (download and install vs code: &lt;a href="https://code.visualstudio.com/download"&gt;https://code.visualstudio.com/download&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows OS&lt;br&gt;
PS: The steps can also be applied to other operating systems with slight difference in commands.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  CREATE A NEW REPO:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;login to github&lt;/li&gt;
&lt;li&gt;create a new repository&lt;/li&gt;
&lt;li&gt;give the repository a name&lt;/li&gt;
&lt;li&gt;tick the &lt;strong&gt;add readMe&lt;/strong&gt; checkbox&lt;/li&gt;
&lt;li&gt;click on &lt;em&gt;Create repository&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;click on the &lt;strong&gt;code&lt;/strong&gt; drop down (far right hand side)&lt;/li&gt;
&lt;li&gt;copy the https link provided&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--64dK4P77--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6umz8uxkn0pugpbbjamq.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--64dK4P77--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6umz8uxkn0pugpbbjamq.gif" alt="set-up-repo" width="880" height="444"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  ON THE LOCAL MACHINE (PC):
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;select where to save the new repo&lt;/li&gt;
&lt;li&gt;click on the &lt;strong&gt;&lt;em&gt;location path&lt;/em&gt;&lt;/strong&gt; at the top section the screen&lt;/li&gt;
&lt;li&gt;type &lt;strong&gt;&lt;em&gt;"powershell"&lt;/em&gt;&lt;/strong&gt; on the path&lt;/li&gt;
&lt;li&gt;press enter key&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  POWER SHELL CONSOLE
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;type &lt;em&gt;git clone&lt;/em&gt; command and paste the copied link
&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 the_copied_github_link
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;press the enter key&lt;/li&gt;
&lt;li&gt;change the directory to the newly cloned repository
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;press the enter key&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  OPEN FOLDER IN VS CODE
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;type on the console
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;press enter key&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZeRIHQ6X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2c7lu7o2u87mntrqwya3.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZeRIHQ6X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2c7lu7o2u87mntrqwya3.gif" alt="clone-to-machine" width="880" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The only file in the repo is a README file, go ahead and create any file (like html, css, etc.) or folders in it.&lt;/p&gt;




&lt;h3&gt;
  
  
  PUSH TO GITHUB
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nVmLvuZo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mz3e2ci9e220vbjqbik6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nVmLvuZo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mz3e2ci9e220vbjqbik6.gif" alt="add-new-file" width="880" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;open the vs code terminal and type the following commands:

&lt;ol&gt;
&lt;li&gt;To add the new changes
&lt;/li&gt;
&lt;/ol&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;ol&gt;
&lt;li&gt;To commit the new entries
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  git commit -m 'a descriptive message of what was done'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;To push to remote repository
&lt;/li&gt;
&lt;/ol&gt;

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

&lt;/div&gt;



&lt;p&gt;Visit the newly created remote repo. Voila! the new changes have been updated, Congratulations.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>devjournal</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Things I wish I knew as a newbie</title>
      <dc:creator>Usenmfon</dc:creator>
      <pubDate>Mon, 25 Jul 2022 15:56:52 +0000</pubDate>
      <link>https://dev.to/usenmfon_uko/things-i-wish-i-knew-as-a-newbie-2fd</link>
      <guid>https://dev.to/usenmfon_uko/things-i-wish-i-knew-as-a-newbie-2fd</guid>
      <description>&lt;p&gt;&lt;strong&gt;TLDR;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn the basics of computer programming&lt;/li&gt;
&lt;li&gt;Research and choose a programming language and learn its fundamental concepts &lt;/li&gt;
&lt;li&gt;Break down each concept&lt;/li&gt;
&lt;li&gt;Google and ask questions on the complex concepts&lt;/li&gt;
&lt;li&gt;Practice the concepts many times&lt;/li&gt;
&lt;li&gt;Understand the concept before moving to another one&lt;/li&gt;
&lt;li&gt;Learn to use a problem-solving technique&lt;/li&gt;
&lt;li&gt;Try not to memorize code solutions&lt;/li&gt;
&lt;li&gt;Avoid tutorial hell&lt;/li&gt;
&lt;li&gt;Get a mentor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Disclaimer:&lt;/em&gt; I am a self-taught developer, there is a high chance that you may not relate to every aspect of this write-up if you went through a boot camp. Nevertheless, I hope you find this article helpful either way.&lt;/p&gt;

&lt;p&gt;Finding a straightforward path in tech could be stressful at times. The guide below is a collation of some of my experiences I believe may be of great help to the reader.&lt;/p&gt;

&lt;p&gt;First off, one needs to ask some questions like; what industry do you intend to work in, what are your salary expectations, how long will it take to learn the nitty gritty of this field to land your first job, and many more questions need to be answered before proceeding to start your journey in tech, without further ado, let's dive into it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Learn the basics of computer programming:&lt;/strong&gt; This is probably the first action to take after one might have developed an interest in programming. This will help give answers to questions like; what is programming, why we need to write programs, and what manner of approach can we use to achieve these. As you will agree, this will present a clearer picture of what one is getting into.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“writing a set of instructions (code) to initiate action or series of actions by a computer could be described as programming. Actions like displaying user interfaces, storing data, linking two or more devices to communicate, placing an order for groceries, etc.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;2. Research and choose a language:&lt;/strong&gt; Human beings communicate with one another by using a common means that involves giving commands, that eventually cause events to take place as a result of the information that has been relayed.&lt;/p&gt;

&lt;p&gt;Machines are no exception, but in its case, it understands machines' codes i.e. series of zeros and ones. Do we get to write the machine's codes ourselves? A BIG NO! We have a medium where we can use our day-to-day plain English language syntax to communicate with the computer. This medium/language is known as the programming language.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“A programming language is any set of rules that converts instructions, most time written as strings into machine codes to process, store, retrieve or cause an event to occur”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We currently have a lot of programming languages available in the tech ecosystem that may tend to confuse a newbie on the right one to choose. The super-secret is, that every programming language can solve every programming problem BUT at varying efficiency, convenience, and speed.&lt;/p&gt;

&lt;p&gt;Some important criteria to consider while choosing a language as a newbie includes but are not limited to:&lt;br&gt;
·         How easy is it to understand?&lt;br&gt;
·         The strength of its ecosystem&lt;br&gt;
·         Is it predominantly used in the industry you intend to work in? etc.&lt;/p&gt;

&lt;p&gt;In the twitter space, JavaScript is littered almost everywhere there is a tech discussion or so, is it the only language? No, is it the most powerful? No, but it is among the most used within the tech developer circle. There are other honorable mentions like Python, C#, Java, Kotlin, C++, Carbon, etc. that are so powerful in their own making.&lt;/p&gt;

&lt;p&gt;Make research on the language that is prevalent in your desired industry and stick with it for a while to get the flow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Break down concepts:&lt;/strong&gt; Learning new things can sometimes seem daunting and intimidating by all the jargon that is being thrown at you as you explore. This should be expected as first as you are being introduced to something somewhat unfamiliar at first.&lt;/p&gt;

&lt;p&gt;The crack here is to extract the aspect that is posing a challenge, then minimize it to smaller parts that you can easily understand, check for definition of terms, use cases, and application patterns, then voila! try to connect the dots to its original context.&lt;/p&gt;

&lt;p&gt;Don't be too hard on yourself, understand the basics at first, and as you keep on learning, the concept will be clearer, and the why will be made glaringly obvious.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Learn to use Google:&lt;/strong&gt; Google has been saving developers' lives since time memorial. Amongst its plethora of services is its ability to serve as a pointer to thousands of references where your present and future questions have been answered a million times. &lt;br&gt;
Google search engine will be of great help, as you start out learning to program. But it's easy to get frustrated in trying to sieve out the exact information you need. Take some time out to learn how to use keywords, and patterns to get what you need quickly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Practice:&lt;/strong&gt; It is not enough to have theoretical knowledge about something, but harnessing the practical aspect of it is essential. Having both in your arsenal will help you when faced with challenges. The idea here is to learn about a concept in programming, practice the examples given, understand the flow, and find ways to apply them repeatedly in other cases.&lt;/p&gt;

&lt;p&gt;For instance, if you were learning about loops in programming. The fundamental purpose of a loop is to repeat a block of code with respect to the number of steps that have been set in the condition. That solves the problem of repeating the same body of code some number of n-times.&lt;/p&gt;

&lt;p&gt;Then, we look at the types of loops; for…, do…while, and while loop. Knowing the concept around why they exist will enable one to apply them appropriately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Don’t be in a hurry:&lt;/strong&gt; Yeah, it’s quite understandable that you may want to complete a  whole programming course in a day, but doing that will definitely lead to burn-outs and frustrations. &lt;br&gt;
The concepts in programming compounds, starting from basic variable declarations to very complex patterns, the knowledge gained from the previous concept serves as a prerequisite to understanding the next one. &lt;/p&gt;

&lt;p&gt;Therefore,  it is necessary to consume a programming course diligently as the knowledge garnered in one is easily transferable to the next one. &lt;/p&gt;

&lt;p&gt;Take a deep breath, try to understand the basics and you will be so happy you took the time to find your way around. Don’t beat yourself when a concept seems so difficult to understand, most times using it in practice will help you see the bigger picture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Problem-solving:&lt;/strong&gt; Many times, it is tempting to open a code editor to start writing programs with the delusion that we already understand the scope of the programming task, then some minutes later we find ourselves stuck in a state of confusion and frustration, mirroring oneself as an imposter or the dumbest person in tech.&lt;/p&gt;

&lt;p&gt;The issue most times is not the programming task or code syntax or maybe the computer is stupid but that we jump too quickly into writing codes instead of understanding the problem statement first.&lt;/p&gt;

&lt;p&gt;What we could do instead is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go through the problem statement multiple times&lt;/li&gt;
&lt;li&gt;Extract some key pointers in the problem statement&lt;/li&gt;
&lt;li&gt;If the problem statement is too complex, break it into smaller parts&lt;/li&gt;
&lt;li&gt;Look back into your toolbox, and find the concepts you have learned which could be applied to any segment of the problem.&lt;/li&gt;
&lt;li&gt;Apply your solution in parts, then combine the whole solution into one.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Remember, to always read to understand what you are up against; find simple means to solve it and optimize your solution later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Do not try to memorize code solutions:&lt;/strong&gt; It may be tempting to try to memorize code solutions that we ever come across. Though, that may serve its purpose in solving the current problem but would be detrimental in the long run because programming problems are dynamic and there is no one cap fits all, kind of solution.&lt;/p&gt;

&lt;p&gt;The best approach to use is to understand the flow of operation in code solutions, and why and when we use certain methods. This way, we could possibly extract the part of the solution we need and make some readjustments to the current problem being faced.&lt;/p&gt;

&lt;p&gt;In a nutshell, there is no need to memorize. Programming problems are dynamic, try to understand the concept to apply later on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. Avoid tutorial hell:&lt;/strong&gt; What is tutorial hell? &lt;br&gt;
Tutorial hell could refer to a process where one continuously watches videos in order to gain mastery but is practically unable to implement solutions thereafter.&lt;/p&gt;

&lt;p&gt;It is so easy to get caught up in the illusion that you are actually understanding the concepts and solution patterns being demonstrated in the videos, because the brain is actually tricking you that you could implement it, until its time to do such, and then voila, you realize that after watching the video for n-number of hours you could barely implement some lines of codes accurately.&lt;/p&gt;

&lt;p&gt;Realistically, these tutorial videos do not give the fundamental knowledge required to solve a programming problem from scratch. Don’t get me wrong, tutorial videos are great, there are specifically made to introduce a concept for quick referencing.&lt;/p&gt;

&lt;p&gt;And there is no need to see yourself as dumb when you can’t immediately implement what you have watched from a tutorial video. Certain factors may have contributed to it; lack of solid foundation of programming concepts, and the fact that tutorial videos are well planned out before being shot, and could take a day or two to have a  5 hour of the tutorial video after final edits.&lt;/p&gt;

&lt;p&gt;Always try to read the documentation on how to use the technology well.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;10. Get a mentor: *&lt;/em&gt;&lt;br&gt;
    &amp;gt;“If I have seen further it is by standing on the shoulders of Giants” - Isaac Newton&lt;/p&gt;

&lt;p&gt;In every aspect of endeavor, getting a mentor is important. If you want to be good; go alone, but if you want to be great; get a mentor. A mentor could be someone who is ahead of you in experience and can contribute immensely to your developer's journey.&lt;/p&gt;

&lt;p&gt;Yeah, I know, you are just starting out. How can you get a mentor? Mentors shouldn’t be limited to persons which we can see physically, it could be someone you admire their work online and have learned from their wealth of resources shared, maybe in a blog post, articles, open source projects, etc. They have gone through the stage you are currently in and could share valuable insights on how to navigate the sphere of programming faster.&lt;/p&gt;

&lt;p&gt;You can essentially be mentored without the person’s physical presence. You can also reach out to the person, who knows, you could eventually get yourself a mentor.&lt;/p&gt;

&lt;p&gt;If you read up to this point, congratulations. A developer’s journey is a marathon, not a sprint. It's filled with ups and downs, periods where you will feel like a dummy, and other times like a superstar. But, in all these transitions I hope you believe in yourself to always come out great.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>HNGi8 2021</title>
      <dc:creator>Usenmfon</dc:creator>
      <pubDate>Sun, 15 Aug 2021 19:06:41 +0000</pubDate>
      <link>https://dev.to/usenmfon_uko/hngi8-2021-545e</link>
      <guid>https://dev.to/usenmfon_uko/hngi8-2021-545e</guid>
      <description>&lt;p&gt;The most anticipated tech internship in this part of the world is here again. HNG internship is a 2-3 months program organized to show people how to code and design. It extends to post-training phase, and encourages collaboration amongst participants.&lt;/p&gt;

&lt;p&gt;Hi, my name is Usenmfon Uko and I am a tech-hungry frontend enthusiast. I have a handful of tools and languages under my belt such as HTML, CSS, JavaScript, git, visual studio code and most recently added react.Js and firebase to the list.&lt;/p&gt;

&lt;p&gt;Yeah, enough of the introduction or maybe not. I strongly believe that the HNG internship program organized by zuri team in collaboration with ingressive for good (I4G) is a life changing venture, this is supported with facts garnered from testimonials of past interns. I know the deterministic factor to be a finalist involves great amount of smart work and collaboration, this is something I’m readily keen to shoot my best shot at.&lt;/p&gt;

&lt;p&gt;My goals for the internship are as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Get the HNG T-shirt (i.e. being amongst the finalist)&lt;/li&gt;
&lt;li&gt;Ensure that I put the amount of effort required to the achieve point one (1)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Achieving my ultimate goal will unlock doors of greatness; becoming the best version of myself, networking with like minds and building amazing things.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I envision a bumpy ride; it's what makes the story beautiful.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Below is a list of beginner friendly tutorial which helped me kickstart my journey in tech:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Figma - &lt;a href="https://www.youtube.com/watch?v=1MbQaYCCzzI"&gt;https://www.youtube.com/watch?v=1MbQaYCCzzI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Git - &lt;a href="https://www.youtube.com/watch?v=SWYqp7iY_Tc"&gt;https://www.youtube.com/watch?v=SWYqp7iY_Tc&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;HTML - &lt;a href="https://www.youtube.com/watch?v=qz0aGYrrlhU"&gt;https://www.youtube.com/watch?v=qz0aGYrrlhU&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;JavaScript - &lt;a href="https://www.youtube.com/watch?v=PkZNo7MFNFg"&gt;https://www.youtube.com/watch?v=PkZNo7MFNFg&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I hope the aforementioned tutorial links will be of help to a newbie to kickstart their journey in web development.&lt;/p&gt;

&lt;p&gt;Thank you for reading to this point.&lt;/p&gt;

&lt;p&gt;More about the internship: &lt;a href="https://internship.zuri.team"&gt;https://internship.zuri.team&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>html</category>
      <category>javascript</category>
      <category>css</category>
    </item>
    <item>
      <title>Why short-circuit in programming?</title>
      <dc:creator>Usenmfon</dc:creator>
      <pubDate>Sat, 03 Jul 2021 08:07:15 +0000</pubDate>
      <link>https://dev.to/usenmfon_uko/why-short-circuit-in-programming-2a37</link>
      <guid>https://dev.to/usenmfon_uko/why-short-circuit-in-programming-2a37</guid>
      <description>&lt;p&gt;From how data binding and storage works, type of javaScript values: numbers, strings, booleans, null and undefined values. The concept of short-circuiting logical operations is imperative for wrting faster and efficient programs.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FYI:&lt;/strong&gt;there's lot of differences between logical and comparison operators. But one similarity they share is that they both return a boolean result/value (i.e. True or False).&lt;br&gt;
Logical operators majorly includes the &lt;em&gt;&amp;amp;&amp;amp;(AND), ||(OR), and !(NOT)&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Short-circuiting is where an expression is stopped being evaluated as soon as its outcome/result is determined.&lt;/p&gt;

&lt;p&gt;That is to say, instead of checking the outcome of the two expressions, we can actually use the result of one expression to determine the output of the whole operation. When dealing with the &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; operator which evaluates as thus:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;True &amp;amp;&amp;amp; True = True&lt;/em&gt;&lt;br&gt;
&lt;em&gt;True &amp;amp;&amp;amp; False = False&lt;br&gt;
False &amp;amp;&amp;amp; True = False&lt;/em&gt;&lt;br&gt;
&lt;em&gt;False &amp;amp;&amp;amp; False = False&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Since the presence of a false value in an expression renders the whole operation false, it would be pertinent to always place the "value/expression" that will result in a false result first in the expression, so as to save memory operation and increase speed of evaluation. The &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; operator is always looking for the first false statement to work on.&lt;/p&gt;

&lt;p&gt;Checkout these examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;console.log(null &amp;amp;&amp;amp; "AnyString")
output: null

console.log("Okay" &amp;amp;&amp;amp; "Confirm")
output: Confirm

console.log("user" &amp;amp;&amp;amp; null)
output: null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;While working with the || operator, it is pertinent to place the "value" that would evaluate to true first in an expression. This is the modus operandi of || operator&lt;br&gt;
&lt;em&gt;True || True = True&lt;/em&gt;&lt;br&gt;
&lt;em&gt;True || False = True&lt;/em&gt;&lt;br&gt;
&lt;em&gt;False || True = True&lt;/em&gt;&lt;br&gt;
&lt;em&gt;False || False = False&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;console.log(null || "Agnes")
output: Agnes

console.log("user" || "non-user")
output: user

console.log("format" || null)
output: format
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Checking for the max number; notice that the LH expression &lt;code&gt;maxNumber == null&lt;/code&gt; is intentionally made to be false.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function findMax(maxNumber) {
    if (maxNumber &amp;gt; 2 || maxNumber == null) {
        console.log(`The heighest number is: ${maxNumber}`);
    }
}

findMax(Math.max(4, 31, 6))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thus, as the RH operation evaluates to true, the LH operation is truncated. &lt;br&gt;
The effect of this process can really be seen while working with functions.&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>codenewbie</category>
      <category>javascript</category>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>How to reverse a string in JavaScript</title>
      <dc:creator>Usenmfon</dc:creator>
      <pubDate>Tue, 22 Jun 2021 09:10:05 +0000</pubDate>
      <link>https://dev.to/usenmfon_uko/how-to-reverse-a-string-in-javascript-3ki</link>
      <guid>https://dev.to/usenmfon_uko/how-to-reverse-a-string-in-javascript-3ki</guid>
      <description>&lt;p&gt;String reversal is primarily concerned with changing the index position of a string in either ascending or descending pattern. &lt;em&gt;i.e. going from come to emoc&lt;/em&gt;. In this short tutorial, we will be looking at various ways to handle this programming task.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XYIKJ1e9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7k7xoaskt9act9k2zicr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XYIKJ1e9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7k7xoaskt9act9k2zicr.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Task:&lt;/strong&gt; Reverse the given string: Hello&lt;br&gt;
Note: This task could be solved in numerous ways, but we will take  a look at two methods on how to go about this. There are;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Imperative approach&lt;/li&gt;
&lt;li&gt;Declarative approach (A single line of code does the work)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Imperative approach
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Pseudocode:&lt;/em&gt;&lt;br&gt;
We will be defining a function (just to make our code organized at this point)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Define a function and give it a name&lt;/li&gt;
&lt;li&gt;The function will accept a single parameter (which is the input to the function)&lt;/li&gt;
&lt;li&gt;Declare a variable and initialize it with the length of the function parameter&lt;/li&gt;
&lt;li&gt;Declare a variable which accepts an empty string which will be used to stored our new reversed string&lt;/li&gt;
&lt;li&gt;Iterate through the given string from the last index in the string array.&lt;/li&gt;
&lt;li&gt;Return the the concatenated reversed string&lt;/li&gt;
&lt;li&gt;Call the function with an argument&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Solution:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function reverseThisString(inputString) {
    let stringLength = inputString.length
    let reversedString = '';
    for (let i = stringLength - 1; i &amp;gt;= 0; i--) {
        reversedString += inputString[i];
    }
    return reversedString;
}
console.log(reverseThisString("hello"));

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Output: olleh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; how the for loop here works&lt;br&gt;
&lt;code&gt;(let i = stringLength - 1)&lt;/code&gt;: we define a variable i with a starting value of &lt;code&gt;stringLength - 1 (i.e 5 - 1 = 4)&lt;/code&gt; where index 4 represents the last index position &lt;code&gt;o&lt;/code&gt; of the sample string (Hello).&lt;br&gt;
&lt;code&gt;(i &amp;gt;= 0)&lt;/code&gt;: We tell it that &lt;code&gt;i&lt;/code&gt; will always be greater than or equal to &lt;code&gt;0&lt;/code&gt; (when it is less than 0, it should stop looping)&lt;br&gt;
&lt;code&gt;(i--)&lt;/code&gt;:  will continually decrement the loop at each iteration&lt;br&gt;
&lt;em&gt;Inside the for loop:&lt;/em&gt;&lt;br&gt;
&lt;code&gt;(reversedString += inputString[i];)&lt;/code&gt;: At each iteration (as the condition above remains valid) store the value of the index position in the &lt;code&gt;reversedString&lt;/code&gt; variable.&lt;/p&gt;
&lt;h3&gt;
  
  
  Declarative  approach
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Pseudocode:&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;This pattern will only take a single line of code.&lt;/strong&gt;&lt;br&gt;
Use step 1,2, 6 &amp;amp; 7 above&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;use split method with a quotation marks &lt;code&gt;split('')&lt;/code&gt; to divide the strings by character i.e. &lt;code&gt;'h','e','l','l','o'&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;use reverse method with no quotation marks &lt;code&gt;reverse()&lt;/code&gt;to iterate through the indexes of the splitted string thus reversing its position. i.e. &lt;code&gt;'o','l','l','e','h'&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;use join method with quotation marks &lt;code&gt;join('')&lt;/code&gt; to concatenate the reversed string back with-out spaces i.e. &lt;code&gt;olleh&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Solution:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function reverseThisString(inputString) {
    return inputString.split('').reverse().join('');
}

console.log(reverseThisString("olleh"));
console.log(reverseThisString("fantastic"));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Output: hello
Output: citsatnaf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>codenewbie</category>
      <category>beginners</category>
      <category>devjournal</category>
    </item>
  </channel>
</rss>
