<?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: Onyedikachi Emmanuel Nnadi</title>
    <description>The latest articles on DEV Community by Onyedikachi Emmanuel Nnadi (@iamdikachukwu).</description>
    <link>https://dev.to/iamdikachukwu</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%2F1144379%2F5325e9c6-d2ee-43a7-a7e2-747ad457d9de.png</url>
      <title>DEV Community: Onyedikachi Emmanuel Nnadi</title>
      <link>https://dev.to/iamdikachukwu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/iamdikachukwu"/>
    <language>en</language>
    <item>
      <title>🧠 Who Programmed a Programming Language to Program a Program to Program Programs?</title>
      <dc:creator>Onyedikachi Emmanuel Nnadi</dc:creator>
      <pubDate>Thu, 22 May 2025 09:59:24 +0000</pubDate>
      <link>https://dev.to/iamdikachukwu/who-programmed-a-programming-language-to-program-a-program-to-program-programs-41a9</link>
      <guid>https://dev.to/iamdikachukwu/who-programmed-a-programming-language-to-program-a-program-to-program-programs-41a9</guid>
      <description>&lt;p&gt;Finally, Let Me Clear This Up Once and for All&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What we call programming is really just manipulating computer memory&lt;br&gt;
Telling the machine exactly how to change bits and bytes (turn on and off a switch) inside its memory to perform useful tasks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now, a programming language is a tool humans designed&lt;br&gt;
To write those instructions in a way that’s easier to understand by other humans instead of raw binary code (ones and zeros).&lt;br&gt;
E.g. in assembly I can write:&lt;br&gt;
mov x0, 1&lt;br&gt;
...You see how hard it is to understand?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But in other languages I can just say:&lt;br&gt;
let x = 1&lt;/p&gt;

&lt;p&gt;Assembly language was created so that we don’t forget the name of a variable in memory addr... Instead of memorising the addr we can store it as short addr...&lt;/p&gt;

&lt;p&gt;Other languages I believe later tried to simplify the process...&lt;br&gt;
E.g. first with Fortran (1957): still too hard to write on&lt;br&gt;
Then migrated to COBOL (1959) and so on&lt;br&gt;
Till we got to C/C++ (1972) and then to JavaScript/Python and others.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;But here’s the twist
Computers only understand 1 and 0 while humans understand sentences better than numbers.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;(E.g. if I ask you to memorise 1011011... it becomes hard.&lt;br&gt;
But when asked to remember the sentence "how are you?"—it becomes easy.)&lt;/p&gt;

&lt;p&gt;Goal is to write sentences (syntax) that we can remember.&lt;/p&gt;

&lt;p&gt;Also, programming languages themselves need to be understood by the computer.&lt;br&gt;
That is why we write special programs called compilers or interpreters that translate human instructions into what computers understand!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;And guess what?
Those compilers and interpreters are themselves programs—written in other programming languages (e.g. C++ or C)!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is...&lt;br&gt;
We take hard things, make it simple, use the simple one to build more complex ones—not necessarily hard...&lt;br&gt;
Forming a loop.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;This creates a fascinating cycle
Programs to write programs that write programs.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each layer builds upon the previous, hiding the complexity just so that humans can create increasingly powerful software without dealing with the tiniest detail of the hardware.&lt;/p&gt;

&lt;p&gt;So, when you ask...&lt;br&gt;
Who programmed a programming language to program a program to program programs?&lt;/p&gt;

&lt;p&gt;The answer is: Humans did.&lt;br&gt;
We started with 1's and 0's and wrote it in assembly, then convert assembly to a high level Lang (e.g. Python) just to make things very easy to read.&lt;/p&gt;

&lt;p&gt;At the end of the day...&lt;br&gt;
It speeds up our development of a project.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>ai</category>
    </item>
    <item>
      <title>Virtual Assistant Task Request Form</title>
      <dc:creator>Onyedikachi Emmanuel Nnadi</dc:creator>
      <pubDate>Tue, 05 Nov 2024 10:06:13 +0000</pubDate>
      <link>https://dev.to/iamdikachukwu/virtual-assistant-task-request-form-5fac</link>
      <guid>https://dev.to/iamdikachukwu/virtual-assistant-task-request-form-5fac</guid>
      <description>&lt;p&gt;__My name is Emmanuel, a student in the Virtual Assistant program at ALX.&lt;/p&gt;

&lt;p&gt;As part of my training, I am reaching out to request your help in assigning me a task that will take approximately one hour to complete. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://lnkd.in/dan8aYrK" rel="noopener noreferrer"&gt;https://lnkd.in/dan8aYrK&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>17 Must-know React Projects for Developers 👩‍💻 🔥</title>
      <dc:creator>Onyedikachi Emmanuel Nnadi</dc:creator>
      <pubDate>Mon, 21 Oct 2024 14:00:01 +0000</pubDate>
      <link>https://dev.to/iamdikachukwu/17-must-know-react-projects-for-developers-30o9</link>
      <guid>https://dev.to/iamdikachukwu/17-must-know-react-projects-for-developers-30o9</guid>
      <description>&lt;p&gt;DEV Community&lt;/p&gt;

&lt;p&gt;48&lt;/p&gt;

&lt;p&gt;416&lt;/p&gt;

&lt;p&gt;Cover image for 17 Must-know React Projects for Developers 👩‍💻 🔥&lt;br&gt;
Tolgee profile imageAnmol Baranwal&lt;br&gt;
Anmol Baranwal Subscriber for Tolgee&lt;br&gt;
Posted on Oct 16&lt;/p&gt;

&lt;p&gt;227&lt;/p&gt;

&lt;p&gt;38&lt;/p&gt;

&lt;p&gt;45&lt;/p&gt;

&lt;p&gt;45&lt;/p&gt;

&lt;p&gt;59&lt;br&gt;
17 Must-know React Projects for Developers 👩‍💻 🔥&lt;/p&gt;

&lt;p&gt;react&lt;/p&gt;

&lt;p&gt;javascript&lt;/p&gt;

&lt;p&gt;programming&lt;/p&gt;

&lt;p&gt;opensource&lt;br&gt;
The react ecosystem is huge, thanks to the developer community.&lt;/p&gt;

&lt;p&gt;Thousands of packages, libraries and frameworks make it so powerful.&lt;/p&gt;

&lt;p&gt;Today, we are exploring 17 cool React projects that will be very useful for developers. I've also covered three awesome UI component libraries.&lt;/p&gt;

&lt;p&gt;Let's jump in.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tolgee - web-based localization platform.
tolgee&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Tolgee is an open source alternative to Crowdin, Phrase and Lokalise.&lt;/p&gt;

&lt;p&gt;You can manage translations by using tolgee for translating texts, editing them in real-time and synchronizing them with your app.&lt;/p&gt;

&lt;p&gt;Imagine you have a button in your app that says Submit. Instead of manually creating translations for Submit in different languages (like "Enviar" for Spanish), you add Tolgee to your app.&lt;/p&gt;

&lt;p&gt;Instead of manually editing the large JSONs with lot of localization data, you can alt+click the button directly in your app and change its translation on the spot, without digging through code.&lt;/p&gt;

&lt;p&gt;tolgee react&lt;/p&gt;

&lt;p&gt;Get started with Tolgee React SDK by using this command.&lt;/p&gt;

&lt;p&gt;npm i @tolgee/react&lt;br&gt;
This is how you can use this.&lt;/p&gt;

&lt;p&gt;// wrap your code with the tolgee provider&lt;/p&gt;

&lt;p&gt;import { Tolgee, DevTools, TolgeeProvider, FormatSimple } from "@tolgee/react";&lt;/p&gt;

&lt;p&gt;const tolgee = Tolgee()&lt;br&gt;
  .use(DevTools())&lt;br&gt;
  .use(FormatSimple())&lt;br&gt;
  .init({&lt;br&gt;
    language: 'en',&lt;br&gt;
    apiUrl: process.env.VITE_APP_TOLGEE_API_URL,&lt;br&gt;
    apiKey: process.env.VITE_APP_TOLGEE_API_KEY,&lt;br&gt;
  });&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;&amp;lt;TolgeeProvider&lt;br&gt;
  tolgee={tolgee}&lt;br&gt;
  fallback="Loading..." // loading fallback&lt;/p&gt;

&lt;blockquote&gt;



&lt;/blockquote&gt;

&lt;p&gt;// Use the T component to translate your texts&lt;/p&gt;

&lt;p&gt;import { T } from "@tolgee/react";&lt;/p&gt;

&lt;p&gt;export const Component = () =&amp;gt; {&lt;br&gt;
  return (&lt;br&gt;
    &lt;/p&gt;
&lt;h1&gt;
&lt;br&gt;
      Translate me!&lt;br&gt;
    &lt;/h1&gt;
&lt;br&gt;
  )&lt;br&gt;
}&lt;br&gt;
Check this sample app using Tolgee React SDK.

&lt;p&gt;You can read the docs about react integration. It supports all the other frameworks like Angular, Vue, Svelte, Vanilla JS and Nextjs.&lt;/p&gt;

&lt;p&gt;There are lots of features like:&lt;/p&gt;

&lt;p&gt;-→ In-context Translation : translate them directly in the app with the Tolgee i18n tool.&lt;/p&gt;

&lt;p&gt;-→ One-click screenshots : Click once to take a screenshot from your app with highlighted phrases to translate.&lt;/p&gt;

&lt;p&gt;tolgee features&lt;/p&gt;

&lt;p&gt;Tolgee has 1.7k stars on GitHub and growing strong.&lt;/p&gt;

&lt;p&gt;Star Tolgee ⭐️&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Mantine Hooks - react hooks for state and UI management.
mantine hooks&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;How many times have you been stuck in writing hooks from scratch?&lt;br&gt;
Well, I'm never going to do it from now on thanks to mantine hooks!&lt;/p&gt;

&lt;p&gt;It's not efficient to write more code since you would end up maintaining it later so it's better to use these production-level hooks to make your work a lot easier.&lt;/p&gt;

&lt;p&gt;Trust me, getting 60+ hooks is a big deal considering they have a simple way for you to see the demo of each of the hooks with easy docs to follow.&lt;/p&gt;

&lt;p&gt;Get started with the following npm command.&lt;/p&gt;

&lt;p&gt;npm install @mantine/hooks&lt;br&gt;
This is how you can use useScrollIntoView as part of mantine hooks.&lt;/p&gt;

&lt;p&gt;import { useScrollIntoView } from '@mantine/hooks';&lt;br&gt;
import { Button, Text, Group, Box } from '@mantine/core';&lt;/p&gt;

&lt;p&gt;function Demo() {&lt;br&gt;
  const { scrollIntoView, targetRef } = useScrollIntoView({&lt;br&gt;
    offset: 60,&lt;br&gt;
  });&lt;/p&gt;

&lt;p&gt;return (&lt;br&gt;
    &lt;br&gt;
      
        onClick={() =&amp;gt;&lt;br&gt;
          scrollIntoView({&lt;br&gt;
            alignment: 'center',&lt;br&gt;
          })&lt;br&gt;
        }&lt;br&gt;
      &amp;gt;&lt;br&gt;
        Scroll to target&lt;br&gt;
      &lt;br&gt;
      
        style={{&lt;br&gt;
          width: '100%',&lt;br&gt;
          height: '50vh',&lt;br&gt;
          backgroundColor: 'var(--mantine-color-blue-light)',&lt;br&gt;
        }}&lt;br&gt;
      /&amp;gt;&lt;br&gt;
      Hello there&lt;br&gt;
    &lt;br&gt;
  );&lt;br&gt;
}&lt;br&gt;
They almost have everything from local storage to pagination, to scroll view, intersection, and even some very cool utilities like eye dropper and text selection. This is damn too helpful!&lt;/p&gt;

&lt;p&gt;eye dropper&lt;/p&gt;

&lt;p&gt;You can read the docs.&lt;/p&gt;

&lt;p&gt;They have more than 26.4k+ stars on GitHub. It's not only for the hooks because Mantine is a component library for React.&lt;/p&gt;

&lt;p&gt;Star Mantine Hooks ⭐️&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Aceternity UI - copy paste components for your website.
acernity ui&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After Shadcn was appreciated in the developer community, we saw a surge of new component-based libraries. To be honest, we don't need 100 new libraries, but some definitely stood out.&lt;/p&gt;

&lt;p&gt;Aceternity UI is one of them where you can copy paste the most trending components and use them in your websites without having to worry about styling and animations.&lt;/p&gt;

&lt;p&gt;You can explore all the components.&lt;/p&gt;

&lt;p&gt;I will discuss the top 4 that I really loved. These are animated but you can get the idea based on how they look.&lt;/p&gt;

&lt;p&gt;✅ Floating dock: Useful as navigation, it does a clean animation when I hover over any icon.&lt;/p&gt;

&lt;p&gt;floating dock component&lt;/p&gt;

&lt;p&gt;✅ Lamp Section Header: Useful for separating sections and has a smooth transition of expanding based on scroll.&lt;/p&gt;

&lt;p&gt;lamp effect&lt;/p&gt;

&lt;p&gt;✅ GitHub Globe: The globe can be dragged. This was originally used on the GitHub website if you are curious.&lt;/p&gt;

&lt;p&gt;github globe&lt;/p&gt;

&lt;p&gt;✅ Animated Tooltip: Useful for showcasing authority and trust. You can use it to show people or organizations you work with.&lt;/p&gt;

&lt;p&gt;animated tooltip&lt;/p&gt;

&lt;p&gt;hovered over the second avatar&lt;/p&gt;

&lt;p&gt;You will find code, installation instructions, a CLI guide and even the description of props that are used within the code.&lt;/p&gt;

&lt;p&gt;props&lt;/p&gt;

&lt;p&gt;One thing I really loved is that a lot of components are keeping things simple, no fancy over-kill type stuff. You can read the docs.&lt;/p&gt;

&lt;p&gt;This is the only project on the list that is not open source but definitely worth checking out.&lt;/p&gt;

&lt;p&gt;Visit Aceternity UI 🔥&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;xyflow - to build node-based UIs with React.
xyflow&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;XYFlow is a powerful open source library for building node-based UIs with React or Svelte. It is a mono repo and provides React Flow &amp;amp; Svelte Flow. Let's see more on what we can do with React flow.&lt;/p&gt;

&lt;p&gt;react flow&lt;/p&gt;

&lt;p&gt;You can watch this video to understand React Flow in 60 seconds.&lt;/p&gt;

&lt;p&gt;Some of the features are available in pro mode, but the ones in the free tier are more than enough to make a very interactive flow. React flow is written in TypeScript and tested with Cypress.&lt;/p&gt;

&lt;p&gt;Get started with the following npm command.&lt;/p&gt;

&lt;p&gt;npm install reactflow&lt;br&gt;
Here's how you can create two nodes, Hello &amp;amp; World, connected by an edge. The nodes have predefined initial positions to prevent overlap and we are also applying styling to ensure sufficient space for rendering the graph.&lt;/p&gt;

&lt;p&gt;import ReactFlow, { Controls, Background } from 'reactflow';&lt;br&gt;
import 'reactflow/dist/style.css';&lt;/p&gt;

&lt;p&gt;const edges = [{ id: '1-2', source: '1', target: '2' }];&lt;/p&gt;

&lt;p&gt;const nodes = [&lt;br&gt;
  {&lt;br&gt;
    id: '1',&lt;br&gt;
    data: { label: 'Hello' },&lt;br&gt;
    position: { x: 0, y: 0 },&lt;br&gt;
    type: 'input',&lt;br&gt;
  },&lt;br&gt;
  {&lt;br&gt;
    id: '2',&lt;br&gt;
    data: { label: 'World' },&lt;br&gt;
    position: { x: 100, y: 100 },&lt;br&gt;
  },&lt;br&gt;
];&lt;/p&gt;

&lt;p&gt;function Flow() {&lt;br&gt;
  return (&lt;br&gt;
    &lt;/p&gt;
&lt;br&gt;
      &lt;br&gt;
        &lt;br&gt;
        &lt;br&gt;
      &lt;br&gt;
    &lt;br&gt;
  );&lt;br&gt;
}

&lt;p&gt;export default Flow;&lt;br&gt;
This is how it looks. You can also add a label, change the type and make it interactive.&lt;/p&gt;

&lt;p&gt;hello world&lt;/p&gt;

&lt;p&gt;You can read the docs and see example React Flow apps for Create React App, Next.js and Remix.&lt;/p&gt;

&lt;p&gt;React Flow comes with several additional plugin components which can help you to make more advanced apps with the Background, Minimap, Controls, Panel, NodeToolbar and NodeResizer components.&lt;/p&gt;

&lt;p&gt;For instance, you may have noticed dots in the background on many websites. You can simply use the Background component in React Flow to implement that pattern.&lt;/p&gt;

&lt;p&gt;import { Background } from 'reactflow';&lt;/p&gt;

&lt;p&gt;  // this will be under React Flow component. Just an example.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>programming</category>
    </item>
    <item>
      <title>15 VS Code Tips and Tricks to Make Your Coding Experience Better</title>
      <dc:creator>Onyedikachi Emmanuel Nnadi</dc:creator>
      <pubDate>Mon, 14 Oct 2024 08:26:56 +0000</pubDate>
      <link>https://dev.to/iamdikachukwu/15-vs-code-tips-and-tricks-to-make-your-coding-experience-better-1917</link>
      <guid>https://dev.to/iamdikachukwu/15-vs-code-tips-and-tricks-to-make-your-coding-experience-better-1917</guid>
      <description>&lt;p&gt;Make your VS Code experience better and improve your workflow with these tips.&lt;br&gt;
VS Code is the top choice for developers these days and I don't have to tell you why so.&lt;/p&gt;

&lt;p&gt;If you are a VS Code user, let me share a few tips and tweaks that could improve your workflow and help your programming experience improve.&lt;/p&gt;

&lt;p&gt;This collection is more than just the VS Code keyboard shortcuts that we discussed earlier. Although, several of the tips utilize shortcuts.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Integrated shell and multiple profile
Firstly, to get an integrated terminal in VS Code, you can use the shortcut CTRL+`.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Function    Shortcut&lt;br&gt;
To enable an integrated terminal    CTRL+`&lt;br&gt;
To open a location in an external terminal  CTRL + SHIFT + C&lt;br&gt;
Now, you can choose the shell you want from the dropdown menu as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2698igz499183j92molc.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2698igz499183j92molc.PNG" alt=" " width="727" height="465"&gt;&lt;/a&gt;&lt;br&gt;
Selecting shell in VS Code integrated terminal&lt;/p&gt;

&lt;p&gt;You can also split the terminal with different profiles. Click on the dropdown near the Plus button on the top of the integrated terminal and select Split terminal. Here, you can select the required profile.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3650f8kaxq6llks44bk3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3650f8kaxq6llks44bk3.jpg" alt=" " width="800" height="593"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Split the editor
VS Code supports split view of editors and editor groups.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Normally, you can split the view on VS Code using the command CTRL+. This will split the view horizontally for two side-by-side editors.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgvxq3mabdu2889xmnqkj.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgvxq3mabdu2889xmnqkj.PNG" alt=" " width="460" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa39li4zjj4snlqzgn4vv.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa39li4zjj4snlqzgn4vv.PNG" alt=" " width="719" height="296"&gt;&lt;/a&gt;&lt;br&gt;
Split view in VS Code editor&lt;br&gt;
Now, each split can have their own files opened, making editor groups possible.&lt;/p&gt;

&lt;p&gt;Alternatively, you can create several other layouts for split, like grid layout. For this, click on View → Editor Layout → Select a Layout.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdg3hapb6fggoxl33ojxt.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdg3hapb6fggoxl33ojxt.PNG" alt=" " width="687" height="539"&gt;&lt;/a&gt;&lt;br&gt;
Editor layout selection&lt;br&gt;
Now, once a layout is selected, drag and drop the files to each grid like the example below.&lt;/p&gt;

&lt;p&gt;💡&lt;br&gt;
You can split the current editor without creating a new editor group with the View: Split Editor in Group command (Ctrl+K Ctrl+Shift+).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create files on the go
If you have a file specified in a code, you can open that file by pressing the CTRL key and clicking on it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;💡&lt;br&gt;
If the item is a web link, it will be opened on your default web browser.&lt;br&gt;
If the file is not present on the location, you will get a prompt to create that file and then open it on a new tab.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhdysyy0jadwqtjifwir2.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhdysyy0jadwqtjifwir2.PNG" alt=" " width="725" height="264"&gt;&lt;/a&gt;&lt;br&gt;
Create a new file on the go&lt;br&gt;
No need to open a file manager or a terminal the specified new file.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Scroll fast&lt;br&gt;
If you are skimming through a huge code file, it will be beneficial to scroll a bit fast to reach a particular position. In VS Code, when you press the ALT key and then scroll using your mouse scroll wheel, you will get a 5x speed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Synchronize scrolling&lt;br&gt;
When you are comparing two files side-by-side, synchronizing the scroll speed across the editors will help a lot.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;First, open the command prompt by pressing CTRL + SHIFT + P. Here, search for “Toggle Locked Scrolling Across Editors”. Press enter on this setting.&lt;/p&gt;

&lt;p&gt;That's it! Now, when you scroll one editor, the other editors will also start scrolling at the same pace.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Sticky scroll
This is useful, especially when you are dealing with huge files with different sections.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For example, I am working with a markdown file that has a lot of chapters in headings.&lt;/p&gt;

&lt;p&gt;If the Sticky scroll is enabled, when you scroll, each main section you are currently editing are stuck to the top of the editor. Thus, it is both a reminder and a navigation helper.&lt;/p&gt;

&lt;p&gt;To enable this, open the command prompt by using CTRL + SHIFT + P. Now, search and then press Enter on “Toggle Editor Sticky Scroll”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fephicefl37pq44zcnle8.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fephicefl37pq44zcnle8.PNG" alt=" " width="692" height="214"&gt;&lt;/a&gt;&lt;br&gt;
Sticky Scroll&lt;br&gt;
In the above screenshot, I am editing inside the Sixth Subheading, and it neatly sticks that to the top for easy access.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Multi-cursor editing
This is a popular item in many code editors and IDE, allowing users to edit using multiple cursors simultaneously.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For this, you can press the ALT key and click on multiple locations to select multiple cursor positions.&lt;br&gt;
Similarly, instead of selecting each location manually, you can add additional cursors to all occurrences of the current selection with Ctrl+Shift+L.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh57gqql7wrh356b7jdi3.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh57gqql7wrh356b7jdi3.PNG" alt=" " width="692" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F05h2xro6q742ogc4la4j.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F05h2xro6q742ogc4la4j.PNG" alt=" " width="731" height="279"&gt;&lt;/a&gt;&lt;br&gt;
In the above image, you can see that there is multiple cursor for all the messageFour variable name.&lt;/p&gt;

&lt;p&gt;Another useful trick here is by using the Ctrl+D shortcut multiple times to only select the next occurrence after the one you selected, so you can add selections one by one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnzuojxoxnkgpka93tmar.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnzuojxoxnkgpka93tmar.PNG" alt=" " width="660" height="191"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Markdown preview
VS Code can preview the markdown file you are editing both in a new tab and as a live preview.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Use the shortcut CTRL + SHIFT + V to get a markdown preview in a new tab. Or use CTRL+K V to get the markdown preview as a split view.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd89vsbopswmi8t6v854g.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd89vsbopswmi8t6v854g.PNG" alt=" " width="463" height="165"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjl2fc2f2epw4n6g45h5g.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjl2fc2f2epw4n6g45h5g.PNG" alt=" " width="699" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Zen mode
VS Code has a cluttered interface with lots and lots of buttons and menus. Did you feel like this? Then the Zen mode is for you.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;On an editor, press CTRL + K and then press Z. Now, you will get a focussed editor view, with nothing other than your code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0c9aruipmei34b9i32kj.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0c9aruipmei34b9i32kj.PNG" alt=" " width="662" height="632"&gt;&lt;/a&gt;&lt;br&gt;
To escape, press ESC key twice.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Move a line upwards or downwards
You can use the shortcut mentioned below to move a line to a line above or below.
🚧
It is possible to copy a line down or up using a shortcut. This key is disabled by default in Ubuntu, because of conflict with system default shortcuts.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh8d3uuk7s9xolikwsih0.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh8d3uuk7s9xolikwsih0.PNG" alt=" " width="749" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Rename function/variable&lt;br&gt;
To rename a variable, select that variable and press F2. Now, enter the new name. When you press Enter, the variable name will be changed on all occurrences.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Format whole document&lt;br&gt;
To format an entire document, you can use the shortcut CTRL + SHIFT + I.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Function    Shortcut&lt;br&gt;
Format whole document   CTRL + SHIFT + I&lt;/p&gt;

&lt;p&gt;Format whole document&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Comment/Uncomment multiple lines
In order to comment or uncomment multiple lines, you can use the shortcut CTRL + SHIFT + A.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Function    Shortcut&lt;br&gt;
Comment multiple lines  CTRL + SHIFT + A (Linux only)&lt;br&gt;
🚧&lt;br&gt;
This shortcut is only valid for Linux. For other OS, there is specific shortcuts.&lt;/p&gt;

&lt;p&gt;Comment/Uncomment multiple lines&lt;/p&gt;

&lt;p&gt;14 Simple Browser&lt;br&gt;
VS Code provide a Simple Browser bundled extension, that is primarily meant to be used by other extensions for showing simple web content.&lt;/p&gt;

&lt;p&gt;This is a basic browser preview using an iframe embedded in a webviewW.&lt;/p&gt;

&lt;p&gt;You can access it by first going to the command prompt (CTRL + SHIFT + P) and searching Simple Browser.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Double click keeps the file active
Here's the thing. You browse your files from the project explorer in the left. You click on the file and it is opened in the editor. You just read it and don't modify it. Next, you open another file the same way and you'll notice that the previously opened file has been automatically closed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is the default behavior so that the editor is not cluttered with tens of unmodified text files like browser tabs.&lt;/p&gt;

&lt;p&gt;If you want to read a file as well as keep them active, just double click on them while opening them. This way, they will remain active in the editor regardless of whether they were modified or not.&lt;/p&gt;

&lt;p&gt;Share your favorite VS Code tip&lt;br&gt;
Not all the tips would be applicable to your scenario but I have a feeling that you'll find some useful tips in this list. If that's the case, which one do you like the most here?&lt;/p&gt;

&lt;p&gt;Do you also know some lesser known VS Code tip that you are proud of? Why not share it with us?&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>opensource</category>
      <category>typescript</category>
      <category>devchallenge</category>
    </item>
    <item>
      <title>Perks of being an Executive Assistant (EA)</title>
      <dc:creator>Onyedikachi Emmanuel Nnadi</dc:creator>
      <pubDate>Mon, 30 Sep 2024 10:33:59 +0000</pubDate>
      <link>https://dev.to/iamdikachukwu/perks-of-being-an-executive-assistant-ea-hni</link>
      <guid>https://dev.to/iamdikachukwu/perks-of-being-an-executive-assistant-ea-hni</guid>
      <description>&lt;p&gt;A bit of admin, long hours, crazy deadlines and almost impossible missions. Supporting C-level executives is more than scheduling, filing and minutes. A solid chunk requires intellect, foresight, agility, innovation and strategy. It’s a gold mine of opportunities and an accelerated path to developing executive and top management skills.  Working in the 'top' office has advantages and here are a few I found valuable. &lt;/p&gt;

&lt;p&gt;Working with CEOs builds character&lt;/p&gt;

&lt;p&gt;Working with the most respected and sometimes - let's face it - the most feared person(s) in the organization builds confidence and courage to push boundaries and go beyond the comfortable norm. Being an assistant in a fast-paced environment yields sharp listening skills and a get-it-right-the-first-time attitude. These traits are not just for the office; they benefit personal life too.&lt;/p&gt;

&lt;p&gt;The compensation is decent&lt;/p&gt;

&lt;p&gt;And it keeps getting better if you continually develop skills that compound the value of your role. Supporting C-level executives entails doing whatever it takes to ensure your manager succeeds in that which is priority to them and the organisation. Success is a non-negotiable and EAs are usually fairly compensated to emphasize the value of the work and to encourage commitment, focus and flexibility. &lt;/p&gt;

&lt;p&gt;You are an influencer&lt;/p&gt;

&lt;p&gt;The role is an opportunity to help shape and improve standards within the organisation.&lt;/p&gt;

&lt;p&gt;EAs know what executives are aiming for and are also exposed to realities on the ground. They can make contributions that help executives achieve the organization's goals while being fully cognisant of all-around impact. &lt;/p&gt;

&lt;p&gt;There is unparalleled exposure to information &lt;/p&gt;

&lt;p&gt;This is a big one. EAs normally see everything and that's why confidentiality is a key success driver when supporting C-level executives. EAs are the Executive’s left/right-hand extension and need the information to execute and understand their manager’s perspectives and priorities. Extensive access to intel provides a competitive platform to upskill and master how organisations are managed and business conducted at the top. &lt;/p&gt;

&lt;p&gt;Did someone say CEOx?&lt;/p&gt;

&lt;p&gt;Supporting C-level executives can be a route to becoming one yourself. You are in the room, at the table with the strategists and visionaries. The exposure is a game-changer! I like the idea that you are the average of 5 people around you. Being the average of your manager, executives, top stakeholders and the Board is attractive. Your leadership skills have no option but to naturally scale up. &lt;/p&gt;

&lt;p&gt;Your network explodes&lt;/p&gt;

&lt;p&gt;You wake up one day and your WhatsApp is full of business messages and calls with the who’s who of the organization: decision-makers, stakeholders, funders and partners. EAs become part of the leadership network. This beautiful space is not to be abused and navigating it with respect is another mark of a good EA. &lt;/p&gt;

&lt;p&gt;You help people achieve their goals&lt;/p&gt;

&lt;p&gt;There is a deep satisfaction that comes from giving or supporting the next person. It exists even in a paying job and finds ways to surface in everyday wins and achievements. It feels good when a colleague says “Thank you for the help. We nailed it!” or knowing that you contributed to the closing of a big contract. These peak moments affirm the power of your contributions and refuel your energy tank.&lt;/p&gt;

&lt;p&gt;As with a coin, there is a flip-side to being stationed in the C-suite. In my upcoming post, I'll talk about the hurdles that come with the role and offer tips on how to overcome them like a pro.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Become a Better Coder: 10 Tips</title>
      <dc:creator>Onyedikachi Emmanuel Nnadi</dc:creator>
      <pubDate>Thu, 26 Sep 2024 06:21:59 +0000</pubDate>
      <link>https://dev.to/iamdikachukwu/become-a-better-coder-10-tips-5h2b</link>
      <guid>https://dev.to/iamdikachukwu/become-a-better-coder-10-tips-5h2b</guid>
      <description>&lt;p&gt;With countless Python best practices circulating online, opinions on each can vary depending on who you ask. The internet has democratized expertise, allowing anyone — including myself — to share their views. However, in this article, we’ll focus on 10 timeless Python best practices that have achieved widespread consensus and are widely regarded as fundamental.&lt;/p&gt;

&lt;p&gt;Pandas Cheatsheet&lt;/p&gt;

&lt;p&gt;Git Commands cheatsheet&lt;/p&gt;

&lt;p&gt;Top 50+ SQL Interview Questions&lt;/p&gt;

&lt;p&gt;Tip 1: Functions Should Specify The Parameter And Return Type&lt;br&gt;
When defining a function, you want to always specify what the arguments’ types are and also what data type the result of the function returns. This would help both you and the devs in your team know what to expect without always having to use print statements to get a visual understanding.&lt;/p&gt;

&lt;p&gt;Tip 2: Functions Should Be At The Same Level Of Abstraction&lt;br&gt;
When we talk about functions being at the same level of abstraction, we’re referring to the idea that a function should perform a single, well-defined task. That task should be at a consistent level of abstraction throughout the function. In other words, the function should focus on a specific level of detail or complexity, and all the functions’ operations should operate at that same level.&lt;/p&gt;

&lt;p&gt;Tip 3: Functions Should Be Small&lt;br&gt;
A function is meant to be reusable. And the bigger the function gets, the less likely it is to be reusable. This also correlates to why a function should do only one thing. If it does only one thing, there’s a high chance it’s going to be small.&lt;/p&gt;

&lt;p&gt;Tip 4: Open Closed Principles&lt;br&gt;
The open-closed principle (OCP) states that a class, method, or function must be open for extension but not modification. This means that any class, method, or function defined can be easily reused or extended for multiple instances without changing its code.&lt;br&gt;
This fails to adhere to OCP because whenever there’s a new country, we would need to write a new if statement to complement that. This might seem simple now but imagine we have 100 or more countries to take into account. How would that look?&lt;/p&gt;

&lt;p&gt;Tip 5: Avoid Comments At All Cost&lt;br&gt;
Comments have a way of being falsely true. They deviate the mind of the reader from what the code is actually doing to what someone else says it’s doing.&lt;/p&gt;

&lt;p&gt;This can become very problematic as time passes and the code receives updates or changes. At some point, the comment becomes a lie and everyone now has to observe the truth through the lens of the lie.&lt;/p&gt;

&lt;p&gt;Comments must be avoided at all costs. A comment forces the reader to inherit your thinking which at best is in the past. When a function or class changes, most likely, its comments do not change along with it. Most likely, they block the reader from thinking forward.&lt;/p&gt;

&lt;p&gt;A comment signifies that the writer was mentally incapable of providing a well-descriptive class, function, or variable name. It exposes the lackluster attitude of the programmer and forces the team to inherit such an attitude.&lt;/p&gt;

&lt;p&gt;Tip 6: Avoid Magic Numbers&lt;br&gt;
A Magic Number is a hard-coded value that may change at a later stage, but that can be therefore hard to update.&lt;/p&gt;

&lt;p&gt;For example, let’s say you have a Page that displays the last 50 Orders in a “Your Orders” Overview Page. 50 is the Magic Number here because it’s not set through standard or convention, it’s a number that you made up for reasons outlined in the spec.&lt;/p&gt;

&lt;p&gt;Now, what you do is you have the 50 in different places — your SQL script (SELECT TOP 50 * FROM orders), your Website (Your Last 50 Orders), your order login (for (i = 0; i &amp;lt; 50; i++)) and possibly many other places.&lt;/p&gt;

&lt;p&gt;Tip 7: Avoid Deep Nesting&lt;br&gt;
Limit the levels of nesting within loops, conditionals, or functions to improve readability.&lt;/p&gt;

&lt;p&gt;Tip 8: Avoid Hardcoding Paths&lt;br&gt;
Refrain from hardcoding file paths or URLs; use configuration files or environment variables instead.&lt;/p&gt;

&lt;p&gt;Tip 9: Classes should be small&lt;br&gt;
Yep! Classes should be as small as possible. Just like functions.&lt;/p&gt;

&lt;p&gt;The only difference is that in functions, size is determined by the number of lines in that function while in classes, it is determined by the number of responsibilities in that class.&lt;/p&gt;

&lt;p&gt;Usually, a class name represents the kind of responsibilities it might possess but when the name is ambiguous or too general, most likely we are giving it too much responsibility.&lt;/p&gt;

&lt;p&gt;This takes us back to SRP (single responsibility principle) which states that a class should only have one reason — one responsibility — to change.&lt;/p&gt;

&lt;p&gt;Tip 10: Avoid Complex Ternary Expressions&lt;br&gt;
Refrain from using overly complex ternary expressions; favor readability over brevity to make code more understandable.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>basic</category>
      <category>java</category>
      <category>programming</category>
    </item>
    <item>
      <title>Midweek Fun Activity On Alx</title>
      <dc:creator>Onyedikachi Emmanuel Nnadi</dc:creator>
      <pubDate>Wed, 25 Sep 2024 15:56:49 +0000</pubDate>
      <link>https://dev.to/iamdikachukwu/midweek-fun-activity-on-alx-535g</link>
      <guid>https://dev.to/iamdikachukwu/midweek-fun-activity-on-alx-535g</guid>
      <description>&lt;p&gt;Midweek Fun Activity: Excited About Tracking and Celebrating my Progress on ALX VA course? 💫&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>My ALX VA journey - Day 2</title>
      <dc:creator>Onyedikachi Emmanuel Nnadi</dc:creator>
      <pubDate>Tue, 24 Sep 2024 15:00:54 +0000</pubDate>
      <link>https://dev.to/iamdikachukwu/my-alx-va-journey-day-2-3l83</link>
      <guid>https://dev.to/iamdikachukwu/my-alx-va-journey-day-2-3l83</guid>
      <description>&lt;p&gt;My ALX VA journey - Day 2&lt;/p&gt;

&lt;p&gt;Highlight was the story of the Milan Cathedral🏛️&lt;/p&gt;

&lt;p&gt;Lesson: Great achievements require collaboration, each person bringing unique strengths. By working together, we can create something truly lasting and meaningful.&lt;/p&gt;

&lt;h1&gt;
  
  
  ALXVA, #ALXAccepted, and #LifeAtALX #Beginner #webdev #programmer
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Antithesis to “Don’t Repeat Yourself”</title>
      <dc:creator>Onyedikachi Emmanuel Nnadi</dc:creator>
      <pubDate>Wed, 18 Sep 2024 05:54:39 +0000</pubDate>
      <link>https://dev.to/iamdikachukwu/antithesis-to-dont-repeat-yourself-5208</link>
      <guid>https://dev.to/iamdikachukwu/antithesis-to-dont-repeat-yourself-5208</guid>
      <description>&lt;p&gt;“Don’t Repeat Yourself” (DRY) is a foundational principle in software development that emphasizes the elimination of redundant code and data. Coined by Andrew Hunt and David Thomas in their seminal book &lt;em&gt;The Pragmatic Programmer&lt;/em&gt; published in 1999, DRY asserts that every piece of knowledge must have a single, unambiguous, authoritative representation within a system. Over the past decades, it has become a guiding motif with overwhelmingly positive connotations, encouraging developers to create more maintainable, efficient, and clean codebases.&lt;/p&gt;

&lt;p&gt;The DRY principle is not just about code duplication; it’s about the duplication of knowledge and intent. By adhering to DRY, developers aim to reduce the risk of inconsistencies and make systems easier to understand and modify. It promotes a culture of reusability and modularity, where components are designed to be flexible and adaptable to various contexts.&lt;/p&gt;

&lt;p&gt;However, when DRY is applied indiscriminately, especially at the architectural level, it can lead to unintended complexities and dependencies. This often results in the creation of a Shared Kernel — a common set of components or services shared across different parts of a system or even between different teams. While a Shared Kernel can promote consistency and reduce redundancy, it also introduces shared dependencies that require careful coordination and can complicate the development process significantly.&lt;/p&gt;

&lt;p&gt;The Upside of DRY in Software Development&lt;br&gt;
Implementing DRY principles offers several notable advantages that have made it a staple in the developer’s toolkit.&lt;/p&gt;

&lt;p&gt;Reduced Maintenance Effort&lt;br&gt;
One of the most significant benefits of DRY is the reduction in maintenance effort. When code is duplicated across a system, any change or bug fix must be replicated in every location where the code exists. This not only increases the workload but also the risk of errors if a location is overlooked. By consolidating code, updates and bug fixes need to be made in only one place, simplifying the upkeep of the codebase and ensuring consistency throughout the system.&lt;/p&gt;

&lt;p&gt;Enhanced Reusability and Modularity&lt;br&gt;
DRY enhances the reusability of code by encouraging the creation of modular components that can be easily integrated into different parts of a system or even across different projects. This modularity allows developers to build systems more efficiently, as common functionalities do not need to be rewritten. It fosters a development environment where components are well-defined and responsibilities are clearly separated.&lt;/p&gt;

&lt;p&gt;Increased Efficiency and Focus on Innovation&lt;br&gt;
By enabling developers to avoid “reinventing the wheel,” DRY allows teams to focus on unique challenges and innovative solutions rather than spending time on repetitive tasks. This efficiency can lead to faster development cycles and the ability to allocate more resources to critical areas of the project that require creativity and specialized attention.&lt;/p&gt;

&lt;p&gt;The Downside of DRY in Architectures and Teams&lt;br&gt;
Despite its merits, DRY can have unintended negative consequences when misapplied, particularly in large-scale systems and organizations with multiple teams.&lt;/p&gt;

&lt;p&gt;Complexity Through Over-Generalization&lt;br&gt;
Generalizing code to make it reusable in all contexts can lead to overly complex abstractions. For instance, creating a one-size-fits-all solution may involve adding numerous configuration options and conditional logic to accommodate various use cases. This complexity can make the code harder to understand, test, and maintain. Developers may spend more time deciphering the generalized code than it would have taken to write a specific solution for their particular need.&lt;/p&gt;

&lt;p&gt;Increased Error Potential and Scope Misjudgment&lt;br&gt;
Shared code increases the potential impact of changes. A modification intended to fix a problem in one area might introduce bugs in others if the scope and impact are underestimated. This is especially problematic when the shared code is used by multiple teams or systems that may have different requirements or operating environments. The ripple effect of a change can lead to widespread issues that are difficult to trace back to their source.&lt;/p&gt;

&lt;p&gt;Inter-Team Dependencies and Organizational Overhead&lt;br&gt;
Using a Shared Kernel creates dependencies and responsibilities between teams. Teams become reliant on shared components, which can slow down development if changes are needed. The need for coordination and communication increases, leading to organizational overhead. Teams must align their schedules, agree on priorities, and possibly compromise on solutions that may not be optimal for all parties involved. Managing updates, addressing breaking changes, and maintaining different versions add layers of complexity to the development process.&lt;/p&gt;

&lt;p&gt;Opinionated Design Conflicts&lt;br&gt;
A solution that works well for one team may not suit another due to differing requirements, technologies, or design philosophies. This can lead to conflicts and decreased productivity. For example, one team may prefer a lightweight, agile approach, while another requires a robust, feature-rich solution. Forcing a shared component may result in a suboptimal compromise that satisfies neither team fully.&lt;/p&gt;

&lt;p&gt;When DRY Works Well&lt;br&gt;
DRY is most effective under specific circumstances, and understanding these can help teams leverage its benefits without falling into its pitfalls.&lt;/p&gt;

&lt;p&gt;Limited Scope and Impact&lt;br&gt;
DRY works well when applied to small, self-contained functionalities where the scope and impact are limited. For example, a library used to validate an email address is a perfect candidate for DRY. It reduces duplication without adding unnecessary complexity and can be reliably used across different parts of a system without the risk of significant side effects.&lt;/p&gt;

&lt;p&gt;Team-Internal Use and Short Communication Lines&lt;br&gt;
When shared code is used within a single team, coordination overhead is minimal, and communication is straightforward. Teams can easily align on requirements, priorities, and changes. DRY functions effectively when the development is handled by one team with short communication lines, facilitating consistency without significant drawbacks.&lt;/p&gt;

&lt;p&gt;Enforcing Architectural Standards and Organizational Rules&lt;br&gt;
DRY helps in enforcing architectural specifications or organizational rules, such as standardized logging, tracing mechanisms, or security protocols. By centralizing these aspects, organizations can ensure compliance, reduce the risk of errors, and simplify auditing and monitoring processes.&lt;/p&gt;

&lt;p&gt;When DRY Falls Short&lt;br&gt;
Applying DRY can be counterproductive in certain situations, and recognizing these scenarios is crucial to maintaining efficiency and team autonomy.&lt;/p&gt;

&lt;p&gt;(Architectural-Level) DRY for Non-Specified Elements&lt;br&gt;
Using DRY (at the architectural level) for elements not explicitly defined in the architecture — like project setups, build pipelines, or linter configurations — can introduce unnecessary complexity and coordination challenges. These areas often require flexibility to accommodate different project needs, technologies, or team preferences. Enforcing a shared solution may hinder innovation and adaptability.&lt;/p&gt;

&lt;p&gt;Difficult-to-Generalize Problems&lt;br&gt;
Some domains are inherently complex and resistant to generalization. For instance, entities like “User” or “Contact” can have vastly different properties and behaviors across various business domains. Attempting to create a universal model may lead to a bloated and convoluted design that fails to meet the specific needs of any domain adequately. It can also result in a tight coupling between unrelated systems, making changes risky and cumbersome.&lt;/p&gt;

&lt;p&gt;High Coordination Costs and Reduced Agility&lt;br&gt;
In scenarios where multiple teams must coordinate to manage shared code, the overhead can outweigh the benefits. Teams may have to wait for others to implement changes or may be forced to accept updates that are not aligned with their immediate goals. This dependency reduces agility and can slow down the overall development process.&lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
“Don’t Repeat Yourself” remains a valuable principle in software development, promoting cleaner, more efficient code and fostering a culture of reusability and modularity. However, it is essential to apply DRY judiciously and be mindful of its limitations. Overgeneralization and inappropriate sharing at the architectural level can introduce more problems than they solve, such as increased complexity, higher error rates, and inter-team dependencies.&lt;/p&gt;

&lt;p&gt;By considering the scope and context — favoring DRY for small-scale, internal, or standardizing components — developers and architects can harness its benefits while avoiding its potential pitfalls. It’s crucial to balance the desire for reusability with the need for simplicity, autonomy, and adaptability. In scenarios where requirements vary significantly or coordination costs are high, it may be wiser to allow some redundancy to maintain agility and empower teams to make decisions that best fit their specific contexts.&lt;/p&gt;

&lt;p&gt;Ultimately, principles like DRY are tools to aid development, not rules to be followed blindly. Thoughtful application, combined with a keen awareness of the project’s and organization’s unique needs, will lead to more effective and sustainable software solutions.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>JavaScript Const Keyword</title>
      <dc:creator>Onyedikachi Emmanuel Nnadi</dc:creator>
      <pubDate>Sun, 08 Sep 2024 11:46:26 +0000</pubDate>
      <link>https://dev.to/iamdikachukwu/javascript-const-keyword-jg</link>
      <guid>https://dev.to/iamdikachukwu/javascript-const-keyword-jg</guid>
      <description>&lt;p&gt;Did you know for the week?&lt;/p&gt;

&lt;p&gt;JavaScript Edition&lt;/p&gt;

&lt;p&gt;JavaScript’s const keyword doesn’t make variables immutable. It prevents the identifier from being reassigned, but the underlying data can still be modified. This makes const ideal for maintaining constants while allowing changes to the data structure!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Top 10 Cursor Features</title>
      <dc:creator>Onyedikachi Emmanuel Nnadi</dc:creator>
      <pubDate>Mon, 02 Sep 2024 07:22:50 +0000</pubDate>
      <link>https://dev.to/iamdikachukwu/top-10-cursor-features-3i7a</link>
      <guid>https://dev.to/iamdikachukwu/top-10-cursor-features-3i7a</guid>
      <description>&lt;p&gt;My favorite Cursor (@cursor_ai) features. Am I missing any:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Generate Code: Hit Ctrl + K and ask for to generate code based on text input.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Multi-Line Edits: Highlight code and press Edit or Ctrl + K to edit highlighted code based on a prompt.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tab Completion: Cursor predicts the code you want to write and to "quick-accept" just press tab.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Smart Rewrites: Freestyle your code in the editor and Cursor fixes syntax errors on the fly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Chat: Integrated chat for real-time assistance with AI model selection.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;References: Use references such as "@ Codebase"  or "@ web" to add appropriate context to prompt.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use Images: Upload images by dragging and dropping into chat to use as context.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Terminal Command Gen.: Ctrl + K in terminal to write commands in plain text. Cursor converts them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cursor Prediction: Cursor editor predicts where it should place the editing cursor next in your file. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ctrl + I to Create Files: Quickly create entirely new files based on a prompt. Gamechanger!&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Dev Tip: How to view Dev Tip: How to view localhost web apps on your phone</title>
      <dc:creator>Onyedikachi Emmanuel Nnadi</dc:creator>
      <pubDate>Sun, 01 Sep 2024 13:26:49 +0000</pubDate>
      <link>https://dev.to/iamdikachukwu/dev-tip-how-to-view-dev-tip-how-to-view-localhost-web-apps-on-your-phone-1kc5</link>
      <guid>https://dev.to/iamdikachukwu/dev-tip-how-to-view-dev-tip-how-to-view-localhost-web-apps-on-your-phone-1kc5</guid>
      <description>&lt;p&gt;I’m always building web application products that need to be optimized for mobile. Viewing my project on a phone before deploying is a must.&lt;/p&gt;

&lt;p&gt;I often use the mobile device emulator in Chrome Devtools for little style adjustments, but there’s nothing that will perfectly emulate an actual mobile browser better than the mobile device itself. This helps me catch mobile-specific bugs before they surface as a problem for users.&lt;/p&gt;

&lt;p&gt;Here’s a method I use to make testing on mobile devices extremely easy. These instructions are for a Mac environment.&lt;/p&gt;

&lt;p&gt;Serve over your wifi via local IP&lt;br&gt;
This sounds complicated but its actually really easy.&lt;/p&gt;

&lt;p&gt;IMPORTANT: Make sure that your dev computer and your mobile device are connected to the same wifi network.&lt;/p&gt;

&lt;p&gt;Step 1: Serve to Localhost&lt;br&gt;
On your dev machine, serve your application in whatever way you usually do that serves it over a localhost address.&lt;/p&gt;

&lt;p&gt;Make sure to note what port number its being served on. In the image below, we’re noting 8080.&lt;/p&gt;

&lt;p&gt;Once you are able to view your app locally on your computer via localhost, you can move to step 2.&lt;/p&gt;

&lt;p&gt;Step 2: Find your Local IP Address&lt;br&gt;
Open System Preferences &amp;gt; Network. Select “Wifi” in the left pane if it isn’t already selected.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5547wlh936ivxuetr3zt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5547wlh936ivxuetr3zt.png" alt=" " width="676" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Under “Status: Connected”, you should see “Wi-Fi is connected to  and has the IP address .”&lt;/p&gt;

&lt;p&gt;Take note of that IP address!&lt;/p&gt;

&lt;p&gt;Note: It’s common for your Local IP Address to change automatically when your device or other devices connect/disconnect from the network. So you can’t really bookmark this address. Instead, you’ll have to find your address each time — for me, this is usually just when I get started each morning and it stays throughout the day.&lt;/p&gt;

&lt;p&gt;Step 3: View on your phone&lt;br&gt;
On your mobile device’s browser (any will work), navigate to http://:.&lt;/p&gt;

&lt;p&gt;For example, if I was serving on localhost:8080 and my local IP address is 123.45.67.890, on my mobile device’s browser I would navigate to &lt;a href="http://123.45.67.890:8080" rel="noopener noreferrer"&gt;http://123.45.67.890:8080&lt;/a&gt; . The http:// is important, don’t leave it off.&lt;/p&gt;

&lt;p&gt;Success!&lt;br&gt;
You should now be viewing your app on your mobile device. Set it up right next to your main monitor, because it will reload every time your localhost reloads, so it will be perfectly in sync with the locally served desktop web application.&lt;/p&gt;

&lt;p&gt;You don’t get any front-end devtools with this experience, but you do get an early warning if things look or behave differently on a native browser’s experience.&lt;/p&gt;

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