<?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: Stanley Ugwu </title>
    <description>The latest articles on DEV Community by Stanley Ugwu  (@stanleyugwu).</description>
    <link>https://dev.to/stanleyugwu</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%2F715187%2F16fcdfe7-11d1-4de3-8382-e73880b32d36.jpg</url>
      <title>DEV Community: Stanley Ugwu </title>
      <link>https://dev.to/stanleyugwu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/stanleyugwu"/>
    <language>en</language>
    <item>
      <title>Your Brilliant Idea Might Actually Suck</title>
      <dc:creator>Stanley Ugwu </dc:creator>
      <pubDate>Sun, 21 Jul 2024 17:43:59 +0000</pubDate>
      <link>https://dev.to/stanleyugwu/your-brilliant-idea-might-actually-suck-1i9c</link>
      <guid>https://dev.to/stanleyugwu/your-brilliant-idea-might-actually-suck-1i9c</guid>
      <description>&lt;p&gt;Hello wonderful person 👋🏾,&lt;/p&gt;

&lt;p&gt;Allow me to attempt describing you and/or most of us developers and entrepreneurs, and a little bit about our journey in few sentences.&lt;/p&gt;

&lt;p&gt;I'd bet you've dabbled some few technologies and experimented with various ideas in the past, It's 50/50 chance you have an unfinished project somewhere - if you're a developer - that you used to be very passionate about in the beginning. &lt;/p&gt;

&lt;p&gt;What happened? Why is it unfinished? Laziness? lack of resources? You realised the idea won't work? Well I too fit the description above, and even tho sometimes I'm just lazy to finish up what I started, most times it's not that (If I'm motivated by the idea it's hard to be lazy), and it's not lack of resources. &lt;/p&gt;

&lt;p&gt;I've just learned - the hard way - that while ideas can change the world, not all ideas should be pursued for some very strong reasons, which I usually miss due to the temporary excitement that comes with ideas.&lt;/p&gt;

&lt;h3&gt;
  
  
  Misled by Excitement
&lt;/h3&gt;

&lt;p&gt;The excitement of a new idea can be overwhelming. We rush to start building, neglecting to consider some important factors like the time and resources required. We crack open our editor and start coding, only to find ourselves, weeks or even months later, questioning the entire concept. &lt;/p&gt;

&lt;p&gt;By this point, we've invested significant effort and resources, and then we start to face some issues like lack of clear user demand, lack of resources, and most times we're just duplicating some product out there that already solves the problem efficiently.&lt;/p&gt;

&lt;p&gt;Sometimes we persist on building because we don't want our efforts to be wasted, even when we ourselves no longer believe in the idea. It's crucial to understand that while experimentation is essential, it's equally important to validate our ideas before throwing in our valuable resources into development.&lt;/p&gt;

&lt;p&gt;I understand that not all ideas may need validation before we go on to develop it (e.g when you have a way to reverse a binary tree with &lt;code&gt;O(1)&lt;/code&gt; time complexity 😂), and I understand that sometimes you just need a proof of concept as soon as you have an idea &lt;em&gt;like when you forget your flash drive at home and have an idea for a program to store your files in the cloud so it can be accesses from all your devices so you don't carry around your flash drive&lt;/em&gt; (looking 👀 at you &lt;a href="https://en.wikipedia.org/wiki/Dropbox#:~:text=History,-See%20also%3A%20Timeline&amp;amp;text=Dropbox%20founder%20Drew%20Houston%20conceived,seed%20funding%20from%20Y%20Combinator" rel="noopener noreferrer"&gt;Drew at DropBox&lt;/a&gt;. I'm just saying, before you go all in on something you expect to put in front of a lot of users, do some work on validating it.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Shift in Approach
&lt;/h3&gt;

&lt;p&gt;My initial process for bringing ideas to life was straightforward:&lt;br&gt;
&lt;strong&gt;Idea -&amp;gt; Design -&amp;gt; Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a mantra for many, and it was for me. I'd rush from an idea to making sketches and UI designs, then start dabbing keys right away. This approach, however, often led to unfinished projects and abandoned Figma designs because I'd realise midway into design or development that the ideas or the way I thought about them were really flawed. Sometimes I'd realise there's no clear user demand, or the cost of development or maintenance would be too much to start with.&lt;/p&gt;

&lt;p&gt;Recognizing this flaw, I adjusted my approach to:&lt;br&gt;
&lt;strong&gt;Idea -&amp;gt; Validation -&amp;gt; Design -&amp;gt; Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before doing anything design or development, I ensure that I validate the idea thoroughly. This validation step saves me some very valuable resources like time and efforts, helps me think more deeply about the concept and idea, highlights potential errors, and sometimes even unlocks new ideas. The confidence gained from this process alone is invaluable, and also you get to know to some great extent, how likely success is, for your product.&lt;/p&gt;

&lt;h3&gt;
  
  
  My New Approach
&lt;/h3&gt;

&lt;p&gt;Here's a detailed look at the steps I follow to validate and plan the execution of my ideas. This is not the best approach and you may need to modify or build on it. It's not a one-size-fits-all approach, it's just something I spent time and efforts coming up with, and has really been working for me.&lt;/p&gt;

&lt;p&gt;Here are the steps:&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Ideation
&lt;/h4&gt;

&lt;p&gt;This is the magical moment when you come up with your billion-dollar idea that will change the world. You're in your zen mode, you know exactly the problems your idea would solve, you're very clear on the steps you need to take in bringing your idea to life, you seem to know how everything will work out, the features you'll be adding, and sometimes you even know the features you'd add later in the future.&lt;/p&gt;

&lt;p&gt;For me at this point, I let my thoughts run wild without limitations, I don't try to think of what's possible and what's not. I jot down everything, make sketches, and document as much as possible. I don't worry about feasibility at this stage; I just focus on capturing the essence of the idea.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Market Research
&lt;/h4&gt;

&lt;p&gt;Now that you have your rough notes and maybe some sketches, try and answer these critical questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who would need your product? Who is your target audience?&lt;/li&gt;
&lt;li&gt;What is their demographic?&lt;/li&gt;
&lt;li&gt;Has anyone built something similar? Who is that?&lt;/li&gt;
&lt;li&gt;What are their offerings and features?&lt;/li&gt;
&lt;li&gt;Do you have unique features to offer or can you improve on existing ones?&lt;/li&gt;
&lt;li&gt;What will be your revenue model? How can you make money?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are just some questions to get you thinking. Conduct thorough research to learn as much as you can about your target customers, competitors, and market trends. This step is crucial for refining or validating your value proposition and figuring out how to penetrate the market.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Value Proposition
&lt;/h4&gt;

&lt;p&gt;The insights gained from ideation and market research should help you craft a concise &lt;a href="https://www.techtarget.com/searchcio/definition/value-proposition-VP#:~:text=A%20value%20proposition%20is%20a,target%20market%20or%20target%20audience." rel="noopener noreferrer"&gt;value proposition&lt;/a&gt;. This statement should clearly articulate how your product &lt;strong&gt;uniquely&lt;/strong&gt; offers value to its target users. It summarises why a customer would choose your product or service.&lt;/p&gt;

&lt;p&gt;For me at this point, if I still feel motivated about the idea and believe it offers something unique or different, I proceed. If not, it's usually a sign to stop.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Business Model
&lt;/h4&gt;

&lt;p&gt;With a solid value proposition, create a business model that outlines key details such as revenue streams, key activities, resources, cost structure, customer segments, and partnerships. Use a &lt;a href="https://en.wikipedia.org/wiki/Business_Model_Canvas" rel="noopener noreferrer"&gt;business model canvas template&lt;/a&gt; to ensure all necessary aspects are covered.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Product Features
&lt;/h4&gt;

&lt;p&gt;List all the features you want your project to have. Prioritise features based on your value proposition and critical users' needs. If using a &lt;a href="https://www.investopedia.com/terms/f/freemium.asp#:~:text=A%20combination%20of%20the%20words,for%20supplemental%20or%20advanced%20features" rel="noopener noreferrer"&gt;freemium model&lt;/a&gt; for instance, distinguish between free and paid features. Also very importantly, identify the features that will be part of your &lt;a href="https://en.wikipedia.org/wiki/Minimum_viable_product" rel="noopener noreferrer"&gt;MVP&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  6. UI/UX Design
&lt;/h4&gt;

&lt;p&gt;Now it's time to translate your ideas into sketches and wireframes, and then a polished UI design. Normalize not building a project without a UI design, it's unnecessarily stressful (imagine trying to come up with a good colour for your header, and also the perfect flow for onboarding users). This step helps you visualise the end product and identify any design-related issues early on.&lt;/p&gt;

&lt;h4&gt;
  
  
  7. Product Roadmap
&lt;/h4&gt;

&lt;p&gt;Create a timeline for completing the project features you mapped out for you MVP and/or the complete product, setting milestones for each major accomplishment along with deadlines. This roadmap will guide your development process and keep you on track. It mustn't be perfect and you also have templates and tools out there to help you. I use (ClickUp)[&lt;a href="http://clickup.com" rel="noopener noreferrer"&gt;http://clickup.com&lt;/a&gt;] for this, but you can use anything that works. The goal is to have a timeline that'd guide you and keep you in check.&lt;/p&gt;

&lt;h4&gt;
  
  
  8. Development
&lt;/h4&gt;

&lt;p&gt;Now you have most things in check. You know what you're building, who you're building for, what problems you're trying to solve, how long it'll take you to come up with a solution, what the solution would look like, how it'll generate you revenue, etc.&lt;/p&gt;

&lt;p&gt;You're essentially ready to run a business. Now it's time to go into development and its life cycle. It's time for birthing. It's time to change the world.&lt;/p&gt;

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

&lt;p&gt;By integrating validation into my process, I've been able to save time, focus my efforts, and build with confidence. While this approach may not be a one-size-fits-all solution, it has worked well for me and can be adapted to fit different needs. I encourage you to refine and build upon this process to suit your unique journey.&lt;/p&gt;

&lt;p&gt;Remember, validating your ideas is not just about preventing wasted effort; it's about ensuring that the solutions you build are impactful and truly solve the problems they are meant to address.&lt;/p&gt;

&lt;p&gt;Thanks for reading, happy coding. ✌🏾 &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Image credit: &lt;a href="https://images.app.goo.gl/smNDbijbRjZt6m5u7" rel="noopener noreferrer"&gt;https://images.app.goo.gl/smNDbijbRjZt6m5u7&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devpreneur</category>
      <category>entrepreneuship</category>
      <category>projectdevelopment</category>
      <category>coding</category>
    </item>
    <item>
      <title>JavaScript in the threads: Unveiling React Native Threads and Differential JS Handling in Debug versus Release Modes</title>
      <dc:creator>Stanley Ugwu </dc:creator>
      <pubDate>Wed, 16 Aug 2023 01:02:32 +0000</pubDate>
      <link>https://dev.to/stanleyugwu/javascript-in-the-threads-unveiling-react-native-threads-and-differential-js-handling-in-debug-versus-release-modes-1p1g</link>
      <guid>https://dev.to/stanleyugwu/javascript-in-the-threads-unveiling-react-native-threads-and-differential-js-handling-in-debug-versus-release-modes-1p1g</guid>
      <description>&lt;p&gt;Heyo dev! 👋&lt;/p&gt;

&lt;p&gt;Below is a lil bit extended version of the answer I gave to a &lt;a href="https://stackoverflow.com/q/55206889/10669173"&gt;SO question&lt;/a&gt; I came across recently. I decided to spread it here too incase anyone is still stuck with the same question or just want to get an overview of how a React Native app is architected and work internally.&lt;/p&gt;

&lt;p&gt;I'm just going to try to explain the roles of the three threads used in a React Native app, how they work together, and how JavaScript is handled for a React Native app in debug/dev mode and in prod/release mode.&lt;/p&gt;

&lt;h3&gt;
  
  
  In Dev / Debug mode
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://facebook.github.io/metro/"&gt;Metro bundler&lt;/a&gt; (&lt;strong&gt;which runs on top of Node.js&lt;/strong&gt;) bundles all your JavaScript codes: The ones you wrote, the ones in your app's dependency packages, and the ones that comes with React Native. It bundles them into one big JS file, then spins up a local server on port &lt;code&gt;8081&lt;/code&gt; to serve the bundled file when requested.&lt;/p&gt;

&lt;p&gt;Now when you open your compiled debug app (&lt;code&gt;.apk&lt;/code&gt; for Android or &lt;code&gt;.ipa&lt;/code&gt; for iOS), it makes a request to the local metro server to fetch the bundled JS file so that the JS interpreter (&lt;a href="https://developer.apple.com/documentation/javascriptcore"&gt;JavaScriptCore&lt;/a&gt; or &lt;a href="https://hermesengine.dev/"&gt;Hermes&lt;/a&gt; which is packaged into your app can begin executing it. But you may ask, what happens to the native codes (&lt;code&gt;Java/Kotlin&lt;/code&gt; or &lt;code&gt;Obj-C/Swift&lt;/code&gt;) that is also part of the compiled app?&lt;/p&gt;

&lt;p&gt;The simple answer is, these native codes cannot be executed by the JS interpreter, so it has to be executed separately but within the same app. That means JS has to be executed separately and native codes also has to be executed separately, but all within the same app because the two has to come together to make your app whole.&lt;/p&gt;

&lt;p&gt;Fortunately, &lt;a href="https://en.wikipedia.org/wiki/Thread_(computing)"&gt;Threading&lt;/a&gt; allows for such things, they allow you to run multiple sub-programs (threads if you will) within the main program (&lt;a href="https://en.wikipedia.org/wiki/Process_(computing)"&gt;process&lt;/a&gt;). With threading, you can execute two or more programs which can be written in different programming languages concurrently within the same process.&lt;/p&gt;

&lt;p&gt;So when your compiled React Native app is launched (as a process), what actually happens is it spins up three threads from within it: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;JS thread&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is where the JavaScript interpreter which executes your bundled JavaScript - sent from metro server - lives&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Shadow thread&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is where the flexbox-based styles and layout you give to your elements are converted into layout and styles that the native platform (Android or iOS) can understand. This is done by &lt;a href="https://yogalayout.com/"&gt;Yoga&lt;/a&gt;, a cross-platform layout engine.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Main/UI/Native thread&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is where all the native &lt;code&gt;Java/Kotlin&lt;/code&gt; or &lt;code&gt;Obj-C/Swift&lt;/code&gt; codes are executed. It is here that native platform APIs (e.g Camera) are accessed from and native platform UI elements (e.g &lt;a href="https://developer.android.com/reference/android/view/View"&gt;&lt;code&gt;View&lt;/code&gt;&lt;/a&gt; for Android and &lt;a href="https://developer.apple.com/documentation/uikit/uiview"&gt;&lt;code&gt;UIView&lt;/code&gt;&lt;/a&gt; for iOS) are rendered. It is from this thread that the other two threads are spawn.&lt;/p&gt;

&lt;p&gt;The communication between the three threads mentioned above are facilitated by the &lt;a href="https://dev.to/wjimmycook/how-the-react-native-bridge-works-and-how-it-will-change-in-the-near-future-4ekc"&gt;React Native Bridge&lt;/a&gt; or &lt;a href="https://reactnative.dev/docs/next/the-new-architecture/pillars-turbomodules"&gt;Turbo Native Modules&lt;/a&gt; which is the new approach.&lt;/p&gt;

&lt;h3&gt;
  
  
  In Prod / Release mode (when you compile for release to app stores)
&lt;/h3&gt;

&lt;p&gt;Everything is the same as in Dev/Debug mode except that the bundled JavaScript file is packaged together with your app (&lt;code&gt;apk&lt;/code&gt; or &lt;code&gt;ipa&lt;/code&gt;) as an asset when the app is being compiled, rather than being loaded from metro server.&lt;/p&gt;

&lt;p&gt;So when you open the compiled app, the JS bundle is just loaded to the JS thread from within the app's assets folder and is executed. That also means there's no need for Metro or Node.js from that point as everything the app needs to work is already precompiled into it.&lt;/p&gt;

&lt;p&gt;That's it,&lt;/p&gt;

&lt;p&gt;Hope this helped at least a bit ✌&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>javascript</category>
      <category>mobile</category>
      <category>programming</category>
    </item>
    <item>
      <title>Time Bending Technology: Orchestrating Perfection in a World of Milliseconds</title>
      <dc:creator>Stanley Ugwu </dc:creator>
      <pubDate>Tue, 16 May 2023 16:56:59 +0000</pubDate>
      <link>https://dev.to/stanleyugwu/time-bending-technology-orchestrating-perfection-in-a-world-of-milliseconds-3a0p</link>
      <guid>https://dev.to/stanleyugwu/time-bending-technology-orchestrating-perfection-in-a-world-of-milliseconds-3a0p</guid>
      <description>&lt;p&gt;Hello 👋🏽 guys, I learnt about real-time systems recently and felt like passing the knowledge on. I Hope you’ll learn too.&lt;/p&gt;

&lt;p&gt;Real time computer or systems are systems where tasks and operations are carried out within a guaranteed period of time called deadline. The main keyword there is &lt;strong&gt;"guaranteed"&lt;/strong&gt; because that’s one of the major things that differentiates regular computer systems from real-time systems.&lt;/p&gt;

&lt;p&gt;In a regular computer system, time is important but not as critical as in real-time systems. A regular computer system can prioritize tasks based on some other factors apart from time, such as overall system throughput, latency, complexity, user input, etc.&lt;/p&gt;

&lt;p&gt;In contrast, on a real-time system, tasks are prioritize based on their &lt;strong&gt;deadline&lt;/strong&gt; (maximum allowed time for execution) and failure of the system to complete a given task within its deadline can have various catastrophic consequences such as overall system failure, system inefficiency, loss of funds, and even loss of lives.&lt;/p&gt;

&lt;p&gt;Here are some classic examples of real-time systems:&lt;br&gt;
&lt;strong&gt;1. Aircraft control system&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;2. Automated assembly line&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;3. Industrial control system&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Above examples are all classified under &lt;strong&gt;hard real-time systems&lt;/strong&gt;, which are systems where deadline must be met or catastrophic consequences would occur. On the other hand, there are &lt;strong&gt;soft real-time systems&lt;/strong&gt; which have more flexibility in meeting their real-time constraints and may still function adequately even if some constraints are not met. An example of a soft real-time system is a video streaming application.&lt;/p&gt;

&lt;p&gt;To illustrate the criticality of time in hard real-time systems, consider an aircraft control system, timing is critical, and the system must be able to respond quickly and predictably to events. For example, if the plane encounters turbulence, the control system must be able to adjust the control surfaces to keep the plane stable within a very short period. Real-time systems in aircraft control are designed to respond within milliseconds or even microseconds.&lt;/p&gt;

&lt;p&gt;Because of this time importance, a real-time system is architected slightly differently with a variety of specialized components (hardware and software) and techniques to ensure that tasks are completed within their deadline.&lt;/p&gt;

&lt;p&gt;Some of these components and techniques that enable real-time systems to perform tasks real fast are:&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Real-time operating system
&lt;/h4&gt;

&lt;p&gt;A real-time operating system (RTOS) is a specialized operating system designed for real-time applications. RTOS provides services optimized for real-time performance, such as real-time scheduling, task management, inter-process communication, and memory management. An example of this is &lt;a href="https://en.m.wikipedia.org/wiki/RTLinux"&gt;RTLinux&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Real-time Scheduling
&lt;/h4&gt;

&lt;p&gt;Real-time scheduling is a technique used to schedule tasks in a real-time system to ensure that they are completed within their specified deadline. Real-time scheduling algorithms prioritize tasks based on their criticality and deadline, ensuring that the most important tasks are completed first.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Interrupt Handling
&lt;/h4&gt;

&lt;p&gt;Interrupts are signals that are generated by hardware devices to notify the system of an event. In a real-time system, interrupt handling is crucial to ensure that the system can respond quickly to events. Interrupt handlers are designed to run quickly and efficiently, and they may disable other interrupts during their execution to ensure that the critical task is completed.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Preemption
&lt;/h4&gt;

&lt;p&gt;Preemption is a technique used to interrupt a lower-priority task to allow a higher-priority task to execute. In a real-time system, preemption is crucial to ensure that the system can respond quickly to events.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Hardware Support
&lt;/h4&gt;

&lt;p&gt;Real-time systems may also use specialized hardware components, such as real-time clocks, timers, and dedicated processors for specific tasks. These hardware components are optimized for real-time performance and can handle tasks with strict timing requirements.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real-time Programming Languages
&lt;/h3&gt;

&lt;p&gt;Real-time programming languages are programming languages built to be used on real-time systems or to be used in developing apps and programs that run on real-time systems. These programming languages offer some special features to enable developers write predictable and efficient codes that meets the time constraints of the host real-time system.&lt;/p&gt;

&lt;p&gt;Some of these features are:&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Determinism
&lt;/h4&gt;

&lt;p&gt;These languages prioritize predictable and consistent execution of programs which is critical in a real-time environment&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Low-level access
&lt;/h4&gt;

&lt;p&gt;These languages provide access to the underlying system’s hardware, allowing developers to write codes that interact with the hardwares.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Memory management
&lt;/h4&gt;

&lt;p&gt;Real-time programming languages often provide memory management features that allow developers to manage memory more efficiently, reducing the risk of memory leaks and other memory-related issues.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Preemption and scheduling
&lt;/h4&gt;

&lt;p&gt;Real-time programming languages also provide features for scheduling and preempting tasks. This allows developers to prioritize tasks, and ensure more critical tasks takes precedence in execution.&lt;/p&gt;

&lt;p&gt;Some examples of real-time programming languages are: &lt;strong&gt;C/C++&lt;/strong&gt;, &lt;strong&gt;Ada&lt;/strong&gt;, and &lt;strong&gt;VHDL&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In summary, regular computer systems can handle tasks in a specific period of time, but they are not optimized for real-time performance. Real-time systems are designed to handle tasks with strict timing constraints and prioritize predictability and responsiveness over throughput. &lt;/p&gt;

&lt;p&gt;Programming on a real-time system should be done with much care, attention, and understanding as a single flaw can lead to a big loss. Thanks for reading ✌🏽✌🏽&lt;/p&gt;

</description>
      <category>realtime</category>
      <category>programming</category>
      <category>systems</category>
      <category>developer</category>
    </item>
    <item>
      <title>Deep linking 🔗 in React Native</title>
      <dc:creator>Stanley Ugwu </dc:creator>
      <pubDate>Mon, 19 Dec 2022 07:14:10 +0000</pubDate>
      <link>https://dev.to/stanleyugwu/deep-linking-in-react-native-4b95</link>
      <guid>https://dev.to/stanleyugwu/deep-linking-in-react-native-4b95</guid>
      <description>&lt;p&gt;Hello Dev 👋 trust you're hacking good. Let's talk about setting up deep linking for react native projects. Grab your laptop and let's grab some knowledge .&lt;/p&gt;

&lt;h3&gt;
  
  
  So what is deep linking?
&lt;/h3&gt;

&lt;p&gt;Deep linking is a way to move directly to a particular screen in a particular mobile app through URLs.&lt;/p&gt;

&lt;p&gt;You know the way you click a link for e.g dev.to/stanleyugwu and it takes you to a particular page within a website, with mobile deep linking, you'll be able to achieve the same result for mobile apps. In short you'll be able to navigate to a particular screen/view of a mobile app by clicking a link.&lt;/p&gt;

&lt;h3&gt;
  
  
  Without deep linking
&lt;/h3&gt;

&lt;p&gt;The traditional way of getting to where you want in any mobile app without deep linking is to launch the app, and then follow whichever route the app puts you through, till you get to where you want.&lt;/p&gt;

&lt;p&gt;Consider below diagram as the UI flow of an example mobile app. Each box represents a screen within the app.&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%2Fib6u2ncms77km04kk01a.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%2Fib6u2ncms77km04kk01a.png" alt="App UI flow" width="700" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Say you want to edit your profile from the &lt;strong&gt;Profile&lt;/strong&gt; screen, you have to move from &lt;strong&gt;Home&lt;/strong&gt; to &lt;strong&gt;Settings&lt;/strong&gt; then to &lt;strong&gt;Profile&lt;/strong&gt; screen.&lt;/p&gt;

&lt;h3&gt;
  
  
  With deep linking
&lt;/h3&gt;

&lt;p&gt;With deep linking setup for our example app, we'll be able to move directly to the &lt;strong&gt;Profile&lt;/strong&gt; screen without going through the intermediate screens (Home, Settings).&lt;br&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%2Fpv8rdihr807uj5ybhh0t.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%2Fpv8rdihr807uj5ybhh0t.png" alt="App UI flow" width="700" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A common use-case scenario of deep linking is when slack sends you an email with a magic link which you click on and it takes you to slack app if you have it installed. That's deep linking at work there 😎&lt;/p&gt;
&lt;h3&gt;
  
  
  Benefits of deep links
&lt;/h3&gt;

&lt;p&gt;There are numerous advantages of setting up deep links for your mobile app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Improves app discoverability&lt;/li&gt;
&lt;li&gt;Improves user engagement&lt;/li&gt;
&lt;li&gt;Enhances the user experience&lt;/li&gt;
&lt;li&gt;Re-Engages users to your app fast&lt;/li&gt;
&lt;li&gt;Campaign opportunity (campaign can be run for individual screen)&lt;/li&gt;
&lt;li&gt;e.t.c&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Configuring deep links
&lt;/h3&gt;

&lt;p&gt;Deep links are regular links, it's just the underlying operating system and the mobile app been deep-linked into that makes them powerful.&lt;/p&gt;

&lt;p&gt;Configuring your mobile app to support deep linking is just about informing the operating system that the app can handle certain URLs and/or URL schemes. So that when the user clicks on a URL matching the specifications, your app can take over, and handle the user's request.&lt;/p&gt;

&lt;p&gt;A typical URL has different parts or segments as denoted by the image below:&lt;br&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%2Frbdfjfjyk7s55jo7fry3.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%2Frbdfjfjyk7s55jo7fry3.png" alt="URL segments" width="700" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can configure your app to handle each segment or combination of segments. What that means is you can configure your app to handle URLs with certain &lt;strong&gt;scheme&lt;/strong&gt;, &lt;strong&gt;second-level domain&lt;/strong&gt;, &lt;strong&gt;top-level domain&lt;/strong&gt;, &lt;strong&gt;subdirectory&lt;/strong&gt;, or a combination of them.&lt;/p&gt;

&lt;p&gt;In this tutorial, we will be setting up our &lt;a href="https://reactnative.dev" rel="noopener noreferrer"&gt;React Native&lt;/a&gt; app to handle the scheme &lt;code&gt;myapp://&lt;/code&gt; so that URLs having &lt;code&gt;myapp://&lt;/code&gt; scheme would be handled by our app.&lt;/p&gt;

&lt;p&gt;I think I've said enough 🤐, let's get to work 💻.&lt;/p&gt;
&lt;h4&gt;
  
  
  1. Create a new React Native app (let's call it deepLinkApp 😉)
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;npx react-native init deepLinkApp
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Move into the app's directory&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;cd ./deepLinkApp
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Click &lt;a href="https://reactnative.dev/docs/environment-setup" rel="noopener noreferrer"&gt;here&lt;/a&gt; to learn how to setup your environment for React Native.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Configure deep links for android
&lt;/h4&gt;

&lt;p&gt;On Android, deep links works through intents. The Android OS broadcasts an intent when a link is clicked, and apps that can handle the intent and link shows up for user to choose. Now let's tell Android that our app can handle &lt;code&gt;myapp://&lt;/code&gt; scheme.&lt;br&gt;
The easiest way to do this is with the &lt;a href="https://www.npmjs.com/package/uri-scheme" rel="noopener noreferrer"&gt;&lt;code&gt;uri-scheme&lt;/code&gt;&lt;/a&gt; package:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;npx uri-scheme add myapp --android
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to set it up manually, open up &lt;code&gt;deepLinkApp/android/app/src/main/AndroidManifest.xml&lt;/code&gt;, and make the following adjustments:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Set &lt;code&gt;launchMode&lt;/code&gt; of &lt;code&gt;MainActivity&lt;/code&gt; to &lt;code&gt;singleTask&lt;/code&gt; in order to receive intent on existing &lt;code&gt;MainActivity&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a new &lt;code&gt;intent-filter&lt;/code&gt; inside the &lt;code&gt;MainActivity&lt;/code&gt; entry with a &lt;code&gt;VIEW&lt;/code&gt; type action&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Below is how your &lt;code&gt;.MainActivity&lt;/code&gt; activity tag should look like with the &lt;code&gt;intent-filter&lt;/code&gt; and &lt;code&gt;launchMode&lt;/code&gt; set, so you can just copy and paste it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;...
&lt;span class="nt"&gt;&amp;lt;activity&lt;/span&gt;
    &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;".MainActivity"&lt;/span&gt;
    &lt;span class="na"&gt;android:launchMode=&lt;/span&gt;&lt;span class="s"&gt;"singleTask"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;intent-filter&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;action&lt;/span&gt; &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;"android.intent.action.MAIN"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;category&lt;/span&gt; &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;"android.intent.category.LAUNCHER"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/intent-filter&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;intent-filter&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;action&lt;/span&gt; &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;"android.intent.action.VIEW"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;category&lt;/span&gt; &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;"android.intent.category.DEFAULT"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;category&lt;/span&gt; &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;"android.intent.category.BROWSABLE"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;data&lt;/span&gt; &lt;span class="na"&gt;android:scheme=&lt;/span&gt;&lt;span class="s"&gt;"myapp"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/intent-filter&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/activity&amp;gt;&lt;/span&gt;
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  3. Configure deep links for iOS
&lt;/h4&gt;

&lt;p&gt;Include the following lines in your project's &lt;code&gt;AppDelegate.m&lt;/code&gt; file in order to be able to listen to incoming app links:&lt;/p&gt;

&lt;p&gt;Copy/paste below code at the top of the file&lt;br&gt;
&lt;code&gt;#import &amp;lt;React/RCTLinkingManager.h&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Copy/paste below code inside &lt;code&gt;@implementation AppDelegate&lt;/code&gt; above &lt;code&gt;@end&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight objective_c"&gt;&lt;code&gt;&lt;span class="k"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="nf"&gt;application&lt;/span&gt;&lt;span class="p"&gt;:(&lt;/span&gt;&lt;span class="n"&gt;UIApplication&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="nv"&gt;application&lt;/span&gt;
   &lt;span class="nf"&gt;openURL&lt;/span&gt;&lt;span class="p"&gt;:(&lt;/span&gt;&lt;span class="n"&gt;NSURL&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="nv"&gt;url&lt;/span&gt;
   &lt;span class="nf"&gt;options&lt;/span&gt;&lt;span class="p"&gt;:(&lt;/span&gt;&lt;span class="n"&gt;NSDictionary&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;UIApplicationOpenURLOptionsKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="nv"&gt;options&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;RCTLinkingManager&lt;/span&gt; &lt;span class="nf"&gt;application&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;application&lt;/span&gt; &lt;span class="nf"&gt;openURL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now let's add the scheme to our iOS project configuration.&lt;br&gt;
The easiest way to do this is again with the &lt;code&gt;uri-scheme&lt;/code&gt; package. Run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;npx uri-scheme add myapp --ios
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Again, if you want to do it manually, open up the project &lt;code&gt;deepLinkApp/ios/deepLinkApp.xcworkspace&lt;/code&gt; in Xcode. Select the project in sidebar and navigate to the info tab. Scroll down to "URL Types" and add one. In the new URL type, set the identifier and the URL scheme to &lt;code&gt;myapp&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This is how it should look in Xcode:&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%2Ffqq0go1ls188lhgz9d72.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%2Ffqq0go1ls188lhgz9d72.png" alt="Xcode scheme configuration interface" width="800" height="376"&gt;&lt;/a&gt;&lt;br&gt;
Imge Source: &lt;a href="https://reactnavigation.org" rel="noopener noreferrer"&gt;react-navigation&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  4. Rebuild and install the app
&lt;/h4&gt;

&lt;p&gt;We have made changes on the native side of our app, so you need to rebuild and install the app in your emulator, simulator, or device.&lt;/p&gt;

&lt;p&gt;For iOS, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;npx react-native run-ios
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Android, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;npx react-native run-android
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  5. Test out the deep link (the moment of truth 😆)
&lt;/h4&gt;

&lt;p&gt;Now we're going to use our handy &lt;code&gt;uri-scheme&lt;/code&gt; command line package to test out the deep link we just set up for both Android and iOS.&lt;/p&gt;

&lt;p&gt;For iOS run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;npx uri-scheme open "myapp://any/host/and/path" --ios
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Android run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;npx uri-scheme open "myapp://any/host/and/path" --android
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Running above command will launch/start-up our app on the emulator/simulator/device if it's not already running, otherwise nothing really happens. Yes nothing 😎.&lt;br&gt;
The reason is because we didn't specify what happens next after our app is granted permission to handle the deep link.&lt;/p&gt;
&lt;h4&gt;
  
  
  6. Handle the deep link
&lt;/h4&gt;

&lt;p&gt;We need to handle the deep link on the Javascript side of our app so that we can specify what happens next after our app is launched or foregrounded as a result of running above command, or user clicking on URL with &lt;code&gt;myapp://&lt;/code&gt; scheme. Fortunately, React Native provides us with a &lt;code&gt;Linking&lt;/code&gt; module which we can call from JavaScript to handle deep linking easily 😇👌.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There are two ways to handle deep links that open your app:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;If the app is already open/launched, the app is foregrounded and a Linking 'url' event is fired&lt;br&gt;
You can handle these events with &lt;code&gt;Linking.addEventListener('url', callback)&lt;/code&gt; - it calls &lt;code&gt;callback({ url })&lt;/code&gt; with the URL which was used to open the app.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If the app is not already open/launched, it is opened and the url which was used to open the app is passed in as the &lt;code&gt;initialURL&lt;/code&gt;&lt;br&gt;
You can handle these events with &lt;code&gt;Linking.getInitialURL()&lt;/code&gt; - it returns a Promise that resolves to the URL, if there is one.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To handle these cases in our app, open up &lt;code&gt;App.js&lt;/code&gt; and add the following code to it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// handles deep link when app is already open&lt;/span&gt;
      &lt;span class="nx"&gt;Linking&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;url&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;evt&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;evt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;});&lt;/span&gt;

      &lt;span class="c1"&gt;// handles deep link when app is not already open&lt;/span&gt;
      &lt;span class="nx"&gt;Linking&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getInitialURL&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Initial URL:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;warn&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// clears listener when component unmounts&lt;/span&gt;
      &lt;span class="nx"&gt;Linking&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeAllListeners&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;url&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now lets' run the &lt;code&gt;uri-scheme&lt;/code&gt; test command one more time:&lt;/p&gt;

&lt;p&gt;For iOS run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;npx uri-scheme open "myapp://any/host/and/path" --ios
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Android run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;npx uri-scheme open "myapp://any/host/and/path" --android
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you should see your app opened, and "myapp://any/host/and/path" logged to the console. Bravo!! 💃🕺 your deep link setup is working.&lt;/p&gt;

&lt;p&gt;Note that we're just logging the URL (which opened our app) to the console, in real apps however, you might need to parse the URL and perform further operations such as navigating the user to the appropriate screen. Luckily if you use &lt;a href="https://www.npmjs.com/package/@react-navigation/native" rel="noopener noreferrer"&gt;&lt;code&gt;react-navigation&lt;/code&gt;&lt;/a&gt; package for your app navigation, there's an easy way to bind certain deep link URLs to certain screens in your app. You can read more on that &lt;a href="https://reactnavigation.org/docs/deep-linking/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Summary
&lt;/h4&gt;

&lt;p&gt;We've just learnt how to setup deep links for our React Native (Android and iOS) app. If you've not been doing this for your apps, you really need to consider it as it comes with so many benefits.&lt;/p&gt;

&lt;p&gt;The technicalities involved in setting up deep links are not really that much, the lengthiness of this article can be attributed to the stretch in explanations (I was more concerned with how it worked, sorry 😉).&lt;/p&gt;

&lt;p&gt;Phew! 😌 that was a long one 😅. I hope you learnt something?. happy hacking 💻 ✌🖖&lt;/p&gt;

</description>
      <category>career</category>
      <category>mentorship</category>
      <category>writing</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>NFTs and Crypto tokens in clear terms</title>
      <dc:creator>Stanley Ugwu </dc:creator>
      <pubDate>Wed, 27 Jul 2022 13:22:15 +0000</pubDate>
      <link>https://dev.to/stanleyugwu/nfts-and-crypto-tokens-in-clear-terms-1ac4</link>
      <guid>https://dev.to/stanleyugwu/nfts-and-crypto-tokens-in-clear-terms-1ac4</guid>
      <description>&lt;p&gt;Hello 👋 awesome person, in this post, I'll show you how to make $1,000,000 by mintin....No! this is not yet another NFT-is-the-new-heaven post to tell you how many millions of dollars an NFT was sold, how minting your soul as NFT could make you $$$, or how creating your own ERC20 token (without utility) will make you a boss.&lt;/p&gt;

&lt;p&gt;NFTs and crypto tokens generally are quite profitable and the idea, revolutionary. Just that the way it's been portrayed on the internet have made a lot of people tie the whole idea to JUST colorful pictures of apes and kitties, buying low and selling high and a lots of money.&lt;/p&gt;

&lt;p&gt;This post is my attempt to give more meanings to fungible tokens and NFTs (Non fungible tokens), I hope it sheds some light on  what is possible with these tokens apart from trading and minting them. Let's get into it already...😃&lt;/p&gt;

&lt;h3&gt;
  
  
  FIRST, WHAT IS AN ASSET
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;An asset is something that contains value.&lt;/strong&gt; An asset can exist physically or digitally, E.g money, skills, phone, car, buildings, lands, diamond, photos, audio, PDFs etc. &lt;/p&gt;

&lt;p&gt;An asset can benefit you in one way or the other that's why it's valuable. E.g your car can benefit you by serving as means of transportation, so you value it.&lt;/p&gt;

&lt;h3&gt;
  
  
  FUNGIBLE ASSETS
&lt;/h3&gt;

&lt;p&gt;Fungible means exchangeable.&lt;br&gt;
&lt;strong&gt;A fungible asset is an asset that can be exchanged with another asset of the same kind, with no change in value.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Dollar bill is an example of a fungible asset because it can be exchanged with another dollar bill and still have the same value. &lt;/p&gt;

&lt;p&gt;Five $1 dollar bills can be exchanged with one $5 bill and they'll still have the same value and offer the same benefits. &lt;/p&gt;

&lt;p&gt;A bottle of Pepsi is a fungible commodity because it can be exchanged with another bottle of Pepsi with no change in value.&lt;/p&gt;

&lt;h3&gt;
  
  
  NON FUNGIBLE ASSET
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Non fungible or non exchangeable assets are assets that cannot be exchanged with another of the same kind without value loss or gain because each of the asset, even though are of the same kind, has unique qualities that add or subtract value.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;An example of a non-fungible asset is a land. Even though you have two same-sized lands, they can never have the exact same qualities - one may be tougher or richer in soil than the other so lands are non-fungible.&lt;/p&gt;

&lt;p&gt;Another example is a diamond, you cannot have two diamonds that are same in all aspects. They must differ in either shape, size, weight, quality, etc.&lt;/p&gt;

&lt;p&gt;Another example is a piece of physical or digital art. Arts are very unique, two pieces of art can never have the same value. So are non fungible assets.&lt;/p&gt;

&lt;h3&gt;
  
  
  WHAT IS A TOKEN?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;A token is a representation of something which can be priced.&lt;/strong&gt; Put simply, the representation of an asset. &lt;/p&gt;

&lt;p&gt;A token and/or what it represents can be physical or digital, tangible or intangible, fungible or non-fungible. For example a tangible dollar bill represents an intangible currency. An intangible "thank you" message on Facebook can represent an intangible appreciation.&lt;/p&gt;

&lt;p&gt;For example, when you give someone flower as a token of appreciation, what you intend to give the person is appreciation, but it's intangible so you choose to represent it with a flower (tangible token) which should be valued also. You can represent that appreciation with something else like labor, hug, or treat.&lt;/p&gt;

&lt;p&gt;If a token represents an asset which is valuable, the token automatically becomes as valuable as the asset as soon as it can be verified and agreed that it actually represents the actual asset. Take fiat money for example, since it's generally accepted as money, it automatically gains as much value as the currency it represents.&lt;/p&gt;

&lt;h3&gt;
  
  
  WHAT ABOUT DIGITAL TOKENS?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;A digital token is a digital representation of an item.&lt;/strong&gt; A Digital token exists digitally in any digital format e.g symbol, codes, sound, cryptographic hash, fingerprint, etc but can represent something digital or physical, tangible or intangible, fungible or non-fungible.&lt;/p&gt;

&lt;p&gt;That means you can create a digital token to represent a fungible item like an event ticket, or a non-fungible item like a piece of artwork. Yes! they're just representatives.&lt;/p&gt;

&lt;p&gt;A digital token can represent anything like skills of a game character, lottery ticket, fiat currency, reputation points, an art, ...name it.&lt;/p&gt;

&lt;p&gt;Digitally Tokenizing (creating a digital token to represent) a fungible or non-fungible asset makes the asset easy to be bought, sold, and/or traded.&lt;/p&gt;

&lt;p&gt;For example if you tokenize an artwork, it'll be easier, more efficient and secured to buy or sell the artwork online since buying the token automatically grants you ownership of the artwork.&lt;/p&gt;

&lt;p&gt;In &lt;a href="https://ethereum.org/en/"&gt;Ethereum&lt;/a&gt;, which is the most popular development blockchain platform, these digital tokens are created as computer codes, and with the help of cryptography and are called &lt;a href="https://www.ibm.com/topics/smart-contracts"&gt;smart contracts&lt;/a&gt;. The smart contract facilitates the trading and ownership of the asset it represents. E.g. A smart contract which implements/is an NFT, facilitates the trading and ownership of the NFT and thus the asset it represents, all in a secured, trusted, decentralized and transparent way - because of the backing platform Ethereum blockchain.&lt;/p&gt;

&lt;h3&gt;
  
  
  FUNGIBLE CRYPTO TOKEN
&lt;/h3&gt;

&lt;p&gt;Fungible tokens are tokens which represents fungible assets like event tickets, currencies, subscription plan of an app, etc.&lt;/p&gt;

&lt;p&gt;You can create a fungible crypto token on the blockchain to represent anything fungible, but for the token to be valuable, it has to represent something that's valuable as well, like Drake's live event ticket 😉.&lt;/p&gt;

&lt;p&gt;Utility has to be given to a crypto token for it to gain value, otherwise people won't want to buy a token that won't benefit them in any way 🤷‍♀️. For example, the &lt;a href="https://en.wikipedia.org/wiki/Shiba_Inu_(cryptocurrency)"&gt;SHIB&lt;/a&gt; crypto token can be used to &lt;a href="https://cointelegraph.com/news/shiba-inu-has-a-new-use-case-buying-land-in-shib-the-metaverse"&gt;buy lands&lt;/a&gt; in SHIB metaverse.&lt;/p&gt;

&lt;h3&gt;
  
  
  NON-FUNGIBLE CRYPTO TOKENS
&lt;/h3&gt;

&lt;p&gt;Non-fungible tokens are crypto tokens which represents non-fungible assets like a pic of you and your cat in Hawaii 😋, audios, PDFs, digital artworks, real estate, physical artworks, physical lands, lands in the metaverse, etc. &lt;/p&gt;

&lt;p&gt;Because NFTs represent non-fungible items which are unique, they're also unique across the blockchain. So for example if you buy an NFT of a digital art, the ownership of the digital art is automatically transferred to you, and the token which you bought is uniquely identifiable across the blockchain. Then with ownership of the token, you can claim ownership of the underlying asset - the digital art.&lt;/p&gt;

&lt;p&gt;As an example, With the power of NFTs, &lt;a href="https://nextearth.io/"&gt;Next Earth&lt;/a&gt; is building a platform for users to purchase, develop, and sell virtual land mapped onto the Earth 😃.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;I crafted this post as a note while learning about &lt;a href="https://ethereum.org/en/developers/docs/standards/tokens/erc-721/"&gt;NFTs&lt;/a&gt; and &lt;a href="https://ethereum.org/en/developers/docs/standards/tokens/erc-20/"&gt;ERC20&lt;/a&gt; tokens. Again it's my attempt to shed more light on crypto tokens, NFTs, and their possibilities for anyone who might be confused by the hype, complexity, and/or big grammars.&lt;/p&gt;

&lt;p&gt;As usual, this post is open for discussions and correction. Thanks for stopping by ✌✌&lt;/p&gt;

</description>
      <category>nft</category>
      <category>blockchain</category>
      <category>web3</category>
      <category>smartcontracts</category>
    </item>
    <item>
      <title>This is all you'll need to develop web3 apps (dApps)</title>
      <dc:creator>Stanley Ugwu </dc:creator>
      <pubDate>Sat, 19 Feb 2022 00:12:50 +0000</pubDate>
      <link>https://dev.to/stanleyugwu/this-is-all-youll-need-to-develop-web3-apps-dapps-548b</link>
      <guid>https://dev.to/stanleyugwu/this-is-all-youll-need-to-develop-web3-apps-dapps-548b</guid>
      <description>&lt;p&gt;If you've been following the tech trends recently, you may now be just getting used to seeing and hearing these words - NFTs, blockchain, web3, cyberpunk, smart contracts, decentralisation, solidity, (add your own word).&lt;/p&gt;

&lt;p&gt;Posts housing these terms have been thrown all over the web, I even bet some people would be mentioning NFTs in their morning prayers 😅😄.&lt;/p&gt;

&lt;p&gt;However, there's still one term missing from the list that's now common especially among developers, the almighty "&lt;strong&gt;dapp&lt;/strong&gt;" or "&lt;strong&gt;decentralised app&lt;/strong&gt;".&lt;/p&gt;

&lt;p&gt;In this post I'll try to explain what it is and the technologies you'll need when developing one.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is WEB 3.0
&lt;/h3&gt;

&lt;p&gt;Web 3.0 is an idea for a new iteration of the world wide web based on blockchain technology.&lt;/p&gt;

&lt;p&gt;It's an idea for a new way of information communication on the web based on blockchain.&lt;/p&gt;

&lt;h3&gt;
  
  
  Web3 App (dApp)
&lt;/h3&gt;

&lt;p&gt;A web3 app or dapp(decentralised app) for short, is a software in the form of websites, desktop apps, mobile apps, etc that has its backend code running on a blockchain network.&lt;/p&gt;

&lt;p&gt;A web3 app has a backend that's deployed on a blockchain network from where it serves the frontend which can be written with any programming languge and deployed anywhere.&lt;/p&gt;

&lt;h3&gt;
  
  
  Web3 Developer stack
&lt;/h3&gt;

&lt;p&gt;A developer stack is a bag of technologies that a developer possesses. An example is MERN Stack which is short for MongoDB, Express, React, and Node. &lt;/p&gt;

&lt;p&gt;Similarly, web3 developer stack is a bag of web3 technologies that a web3 developer possesses. They are tools and technologies essential for web3 app development.&lt;/p&gt;

&lt;p&gt;The tech stack of a web3 developer are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Web3 libraries&lt;/li&gt;
&lt;li&gt;Smart contracts&lt;/li&gt;
&lt;li&gt;Nodes or Web3 providers&lt;/li&gt;
&lt;li&gt;Wallet&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  1. Web3 libraries
&lt;/h4&gt;

&lt;p&gt;Web3 libraries are packages that we would usually use on our frontend which helps us interact with our backend which is running on a blockchain network, through a node (computer) on the blockchain network.&lt;/p&gt;

&lt;p&gt;Web3 libraries are like regular web2 libraries like axios, react, graphql, etc; They are basically installed and used on the frontend side of our apps much like other libraries, except that web3 libraries help us interact with our backend servers which are made up of smart contracts deployed on blockchain network(s).&lt;/p&gt;

&lt;p&gt;Web3 libraries simply creates an interface between our frontend app hosted on a cloud service like aws, and our backend smart contracts hosted on a blockchain network like Ethereum blockchain network.&lt;/p&gt;

&lt;p&gt;Through this interface we can execute our contracts and make transactions on the blockchain network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The frontend of our apps or dApps can also be hosted on a blockchain network.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Smart contracts
&lt;/h4&gt;

&lt;p&gt;Smart contracts are pieces of codes or programs that reside on a blockchain network. They are like functions hosted and executed (on-call), on the blockchain. &lt;/p&gt;

&lt;p&gt;Smart contracts can be thought of as &lt;strong&gt;open APIs&lt;/strong&gt;; they are public on the blockchain and as such can be invoked from anywhere e.g from terminals, web apps, web browser consoles, mobile apps, desktop apps, even from other smart contracts on the same blockchain network; with the help of web3 libraries.&lt;/p&gt;

&lt;p&gt;Blockchain networks have specified programming languages which it's smart contracts should be written in. &lt;/p&gt;

&lt;p&gt;For example, if you want to write smart contracts that will run on Ethereum blockchain network, you have to write it in a programming language called &lt;a href="https://en.m.wikipedia.org/wiki/Solidity"&gt;&lt;strong&gt;Solidity&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Other blockchain networks have their own required programming languages and there are tools that will help you create and deploy the contracts from within one place e.g &lt;a href="https://remix.ethereum.org"&gt;Remix&lt;/a&gt; for Ethereum blockchain.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Nodes/Web3 Providers
&lt;/h4&gt;

&lt;p&gt;Smart contracts on blockchain networks are decentralised, which means every computer connected to the blockchain network as a participant, has a copy of every smart contract deployed on the blockchain.&lt;/p&gt;

&lt;p&gt;The computers on a blockchain network are also called "nodes" or "web3 providers", and it's in one of these nodes that the smart contract youdeploy to a blockchain network wll be executed when invoked. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Without a node there won't be any blockchain&lt;/strong&gt; because the nodes are the participants that form the blockchain network. Because of this, the only criteria for invoking a smart contract is that you must be connected to one of these nodes that houses and can execute it. &lt;/p&gt;

&lt;p&gt;You must connect to a node on a blockchain to be able to execute a smart contract deployed on that blockchain network.&lt;/p&gt;

&lt;p&gt;This connection is what web3 libraries help you to setup and without access to a node, it can't really do anything.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Digital Wallet
&lt;/h4&gt;

&lt;p&gt;Each transaction run on a blockchain is run by the nodes on the network, some examples of transactions are: Transferring 1 Ethereum crypto currency from Bob to Alice, deploying your smart contract to the network, invoking your smart contract, etc.&lt;/p&gt;

&lt;p&gt;Each of these transactions takes &lt;strong&gt;computing power&lt;/strong&gt; from the node that it will be run in, therefore you have to pay a fee to that node; these are called "gas fees", and they are basically paid in native cryptocurrencies of the blockchain e.g ETH for Ethereum blockchain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; For deploying contracts, the deployer has to pay. For executing contracts the user of the contract usually pays and the fee goes to the miner(node) that runs the transaction.&lt;/p&gt;

&lt;p&gt;A Digital wallet is much like a physical wallet used to store currencies, except that digital blockchain wallets are used to store cryptocurrencies instead of fiat currencies like dollars, etc.&lt;/p&gt;

&lt;p&gt;You will need a wallet for developing web3 apps because it is what will facilitate payments for the fees you have to pay for your transactions that will be run on the blockchain. Some example of crypto currency wallets are Metamask, Coinbase, etc.&lt;/p&gt;

&lt;h4&gt;
  
  
  That's all 🤷🤷...
&lt;/h4&gt;

&lt;p&gt;So that's it folks!!. Those are pretty much the technologies and tools you'll be needing when developing a dapp.&lt;/p&gt;

&lt;p&gt;Thanks for reading 🥕🥕... See you on the other side of the web 😅😅&lt;/p&gt;

</description>
      <category>web3</category>
      <category>blockchain</category>
      <category>dapp</category>
      <category>smartcontract</category>
    </item>
    <item>
      <title>Web 3.0 &amp; blockchain - how they work together</title>
      <dc:creator>Stanley Ugwu </dc:creator>
      <pubDate>Wed, 16 Feb 2022 15:34:57 +0000</pubDate>
      <link>https://dev.to/stanleyugwu/web-30-blockchain-how-they-work-together-1191</link>
      <guid>https://dev.to/stanleyugwu/web-30-blockchain-how-they-work-together-1191</guid>
      <description>&lt;p&gt;Hello guys! In this post we'll be looking into the web and internet, the problems of the current web, blockchains, web3, and how web3 and blockchains works together. &lt;/p&gt;

&lt;p&gt;Let's dive in!!.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is internet
&lt;/h3&gt;

&lt;p&gt;Internet is a decentralised network of computers interconnected together for different purposes.&lt;/p&gt;

&lt;p&gt;This purposes are defined by what we - the users of internet, use it for; example communication, providing services, watching videos, playing games, etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  Then what is Web/World Wide Web/W3
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;World Wide Web&lt;/strong&gt; or &lt;strong&gt;Web&lt;/strong&gt; or &lt;strong&gt;W3&lt;/strong&gt; was invented by &lt;a href="https://en.m.wikipedia.org/wiki/Tim_Berners-Lee"&gt;Sir Tim Berners-Lee&lt;/a&gt; in 1989 as a system of information communication built on top of the internet, where information is communicated through webpages made of &lt;a href="https://en.m.wikipedia.org/wiki/HTML"&gt;HTML&lt;/a&gt;(Hypertext Markup Language) and other web resources like images, documents, all delivered by a web server and rendered by the web browser, and interlink to one another via &lt;a href="https://en.m.wikipedia.org/wiki/Hyperlink"&gt;hyperlinks&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The Web is just one way of information communication that relies on the internet. Email is another way in which information meant for a specific user - identified by an email address, is sent to an email server which then relays the information to the identified user's email client.&lt;/p&gt;

&lt;p&gt;The internet and the web from their origins has been decentralised in nature.&lt;/p&gt;

&lt;p&gt;No one one entity controlled most of it. Anonymity and privacy was built into its nature, users would dial up to a specific server to get or share information and that's all - no data tracking, no data privacy violation, no data black markets.&lt;/p&gt;

&lt;p&gt;But as the web and internet evolved, innovations and improvements came in, some companies dominated the web space, and so did issues and problems. Let's talk about the problems a bit - &lt;strong&gt;Centralisation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Centralisation in itself is not a problems as it has its advantages. But it turns out the disadvantages are more critical.&lt;/p&gt;

&lt;p&gt;Because a handful of companies now own larger portions of the services that run on the internet, they have more control.&lt;/p&gt;

&lt;p&gt;Google for example has services that run on the internet and with very large user and data base, think Gmail, Google cloud, Google Search Engine, etc.&lt;/p&gt;

&lt;p&gt;Same is true for other companies like Facebook, think WhatsApp, Instagram, &lt;/p&gt;

&lt;p&gt;They've dominated almost the entire space and it's now almost impossible to compete with them as they consistently buy out or &lt;a href="https://www.wired.com/story/facebooks-aggressive-moves-on-startups-threaten-innovation/"&gt;copy features of other growing services&lt;/a&gt; which means more control and data.&lt;/p&gt;

&lt;p&gt;So what happens is that they're in control of most of the data people put out on the web and internet at large and as such, centralisation and it's disadvantages have come in picture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The following problems have emerged.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;They decide what to do with your data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They do what they like on the space as nothing can stop them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They control what you can do on the internet since they're the providers of most of the services you use.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They experience outages and downtimes in which case there's almost nothing else you can do except wait.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;As all the data is stored in one place, attacks are attracted, so your data may end up in the wrong hands.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can't really compete with them on the space as they have the resources to buy you out or copy you when you walk in their steps.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Because they run a centralised architecture, when they experience outages or server failures, all the websites and softwares that depends on their services stops working.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Solution
&lt;/h3&gt;

&lt;p&gt;With all the above problems, the solution to most of it would be to &lt;strong&gt;decentralise&lt;/strong&gt; the Web we have now, and that's what Web 3.0 or web3 has come to do and in a moment, we'll understand how.&lt;/p&gt;

&lt;p&gt;Based on the history of internet and how the Web has being used, the Web can be split into two generations or eras.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Web 1.0&lt;/strong&gt;&lt;br&gt;
This is the era of the beginning of internet, when the web mostly consisted of static webpages that the user just read information from. No interaction. Only the website owners created information and the web was decentralised at this time. It's also called reading era.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Web 2.0&lt;/strong&gt;&lt;br&gt;
This is the era we are in now. The era where interactivity has being incorporated into the web. Now users can read and as well as create contents on the web. It's the social interaction era. It's also called reading and writing era. It's in this era that all the above problems have emerged because of centralisation by the big players.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And now the third era Web 3.0 has kicked off.&lt;br&gt;
This is a new era of the web. This era is supposed to deliver the web from the shackles of the disadvantages of centralisation and solve alot of the problems web 2.0 is facing currently like ones mentioned above.&lt;/p&gt;

&lt;p&gt;Web 3.0 is an idea for a new iteration of the web based on blockchain technology.&lt;/p&gt;

&lt;p&gt;Because of how blockchain works, it'll be the backbone of web3; let's see how.&lt;/p&gt;

&lt;h3&gt;
  
  
  So what is Blockchain
&lt;/h3&gt;

&lt;p&gt;Blockchain is a network of peer-2-peer connected computers aka nodes, where each node maintains and updates a copy of a distributed ledger or record which is synced across the network. &lt;/p&gt;

&lt;p&gt;Blockchain is much like every other network that forms the internet, except that in this network, they share a record of data among the computers (nodes) on the network, and each node can update the record.&lt;/p&gt;

&lt;p&gt;When the record is updated by a node, the updated record is then shared across the other nodes; which means at each point, all the nodes has to have an up-to-date version of the record.&lt;/p&gt;

&lt;p&gt;Blockchain network is said to be decentralised because there's no central control of the network. If one node goes down, the other nodes will still be active. And other nodes can freely join the network.&lt;/p&gt;

&lt;p&gt;The record or ledger shared on the blockchain is also decentralised because there's no single source of truth. All the nodes are sources of truths. Each node has up-to-date version of the record.&lt;/p&gt;

&lt;p&gt;It's because of the decentralised nature of blockchain along with the features that decentralisation brings like transparency and security, that Web 3.0 would be based on it.&lt;/p&gt;

&lt;h3&gt;
  
  
  There's more...
&lt;/h3&gt;

&lt;p&gt;Adding to the decentralisation of blockchains, some blockchains also allow for running codes on the network.&lt;/p&gt;

&lt;p&gt;They allow computer codes to be added to the network's record, and those codes would be executed, on-call, inside one computer(node) on the network. &lt;/p&gt;

&lt;p&gt;These codes are called &lt;strong&gt;smart contracts&lt;/strong&gt; and amazingly, these smart contracts can read/write data to the shared record/ledger on that network. These are what makes web3 amazing.&lt;/p&gt;

&lt;p&gt;In web3, things still look same as in web2; web browsers would still be used to access apps on the web3, apps can still have backend and frontends, webpages will still be made up of HTML, you can still use regular frontend libraries and frameworks.&lt;/p&gt;

&lt;p&gt;But in web3 though, apps are now called dApps(decentralised apps), and their backend codes would be smart contracts which will run on the blockchain. This is why they're called dApps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;The fact that dApps have their backend codes running on a decentralised network (blockchain) paves the way for new ideas, opportunities, and innovations.&lt;/p&gt;

&lt;p&gt;Your dApp can leverage on that feat and shock the world....&lt;/p&gt;

&lt;p&gt;Thanks for reading and your corrections are welcomed...😃😃&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>web3</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>"Blockchain Developer", What does it mean?</title>
      <dc:creator>Stanley Ugwu </dc:creator>
      <pubDate>Wed, 09 Feb 2022 17:08:00 +0000</pubDate>
      <link>https://dev.to/stanleyugwu/blockchain-developer-what-does-it-mean-5fea</link>
      <guid>https://dev.to/stanleyugwu/blockchain-developer-what-does-it-mean-5fea</guid>
      <description>&lt;p&gt;Hi Guys! 👋, Today I will be attempting to give a straight-to-point explanation about Blockchain, Blockchain Developers and the types of developers in the blockchain space.&lt;/p&gt;

&lt;p&gt;Let's jump in!! 😉&lt;/p&gt;

&lt;h3&gt;
  
  
  WHAT IS BLOCKCHAIN
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Blockchain is a distributed database existing on multiple connected computers at the same time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Blockchain is an example of Distributed Ledger Technology (DLT), blockchain network is a network of peer-to-peer connected computers&lt;br&gt;
called nodes, and these nodes each have a record of the transactions that has being carried out in the chain. sort of like a database. (that's what makes it decentralized, each node has up-to-date records)&lt;/p&gt;

&lt;h3&gt;
  
  
  APPLICATIONS OF BLOCKCHAIN
&lt;/h3&gt;

&lt;p&gt;Cryptocurrencies, NFTs, and other buzz trends are all applications of blockchain technology. They're all possible&lt;br&gt;
because of how Blockchain works and it's decentralized nature. The nature of Blockchain has made way for so many&lt;br&gt;
applications and NFTs, Cryptocurrencies, are just few of the applications.&lt;/p&gt;

&lt;p&gt;These application is just a matter of writing&lt;br&gt;
programs that will run on the chain, and then that program will leverage the features of the blockchain (think decentralization), &lt;br&gt;
and do mind blowing things. You can build a simple todo-app that runs on the blockchain, that way you don't need a database&lt;br&gt;
to store the data as you have access to the blockchain which you can use as storage.&lt;/p&gt;

&lt;h3&gt;
  
  
  BLOCKCHAIN CLIENT
&lt;/h3&gt;

&lt;p&gt;Blockchain Client is what makes it possible for the nodes in a blockchain to be connected to each other. &lt;/p&gt;

&lt;p&gt;It is a software that runs on each of the nodes and is responsible for verifying and relaying the transactions and blocks&lt;br&gt;
to other nodes across the chain (network). Parity Ethereum and Geth are two examples of Blockchain clients for Ethereum&lt;br&gt;
blockchain.&lt;/p&gt;

&lt;h3&gt;
  
  
  TYPES OF BLOCKCHAIN DEVELOPERS
&lt;/h3&gt;

&lt;p&gt;There are two main types of developers in blockchain development:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Core Developer&lt;/li&gt;
&lt;li&gt;App/dApp Developer&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;1. Core Developers&lt;/strong&gt;&lt;br&gt;
Core Developers are the developers that does core development on the blockchain.&lt;br&gt;
They write codes for the Blockchain Client Software using low-level programming languages like C, C++, Rust, etc.&lt;/p&gt;

&lt;p&gt;Blockchain core development is not an easy task as you need to understand system architecture and low-level programming&lt;br&gt;
languages. Blockchain core developers are very rare and prefer to stay anonymous. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. App or dApp Developers&lt;/strong&gt;&lt;br&gt;
App or dApp(decentralized application) Development is what most blockchain developers do and what is commonly meant when &lt;br&gt;
"Blockchain Developer" is mentioned. It can also be called dApp development because of the fact that the app you deploy to a&lt;br&gt;
blockchain exists on all the nodes on the chain. &lt;/p&gt;

&lt;p&gt;Just like Web developers write codes that'll be executed in the web browser, Blockchain&lt;br&gt;
App Developers write codes that'll be executed in a Virtual Machine environment, and these VMs are created by the Blockchain&lt;br&gt;
Clients which reside in the nodes on the chain. With that for a fact, your app can read/write data from/to the blockchain.&lt;/p&gt;

&lt;p&gt;Wanting to be a blockchain developer is one thing, the second important thing is choosing a blockchain network to develop on.&lt;br&gt;
There are some important factors to consider such as Transaction fees, Privacy, scalability, etc.&lt;/p&gt;

&lt;p&gt;That's it guys!, I hope you got an idea of what blockchain and blockchain development is about. Good-luck on your journey to hacking in the blockchain space and I'll be making a future post on things to consider when choosing a blockchain network to develop on.&lt;/p&gt;

&lt;p&gt;Your appreciation and corrections are highly welcomed. Thanks for reading 🥕🥕.&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>web3</category>
      <category>dapp</category>
      <category>blockchaindeveloper</category>
    </item>
    <item>
      <title>Write javascript conditionals like a pro with Truthy and Falsy values.</title>
      <dc:creator>Stanley Ugwu </dc:creator>
      <pubDate>Wed, 29 Sep 2021 22:14:37 +0000</pubDate>
      <link>https://dev.to/stanleyugwu/write-javascript-conditionals-like-a-pro-with-truthy-and-falsy-values-4hgj</link>
      <guid>https://dev.to/stanleyugwu/write-javascript-conditionals-like-a-pro-with-truthy-and-falsy-values-4hgj</guid>
      <description>&lt;p&gt;Hi dev 😉, in this post I'll show you how to cut the length of your conditional statements by leveraging the power of javascript truthy and falsy values. Let's get this broken.&lt;/p&gt;

&lt;p&gt;Before discussing truthy and falsy values, let's dig in a bit on how javascript handles conditional statements.&lt;/p&gt;

&lt;p&gt;In javascript, the condition passed to any conditional statement is first &lt;strong&gt;coerced&lt;/strong&gt; (transformed) to it's &lt;strong&gt;Boolean&lt;/strong&gt; context.&lt;/p&gt;

&lt;p&gt;It's based on the result of this coercion/transformation that javascript knows if it should execute the statement's body or skip it.&lt;/p&gt;

&lt;p&gt;Take for example.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;passed&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;failed&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;when javascript encounters that conditional statement above, it first evaluates &lt;code&gt;1+1 == 2&lt;/code&gt; and the result of that evaluation can only be &lt;strong&gt;true&lt;/strong&gt; or &lt;strong&gt;false&lt;/strong&gt; because &lt;code&gt;1+1&lt;/code&gt; (which will result to &lt;strong&gt;2&lt;/strong&gt;) can only be equal to &lt;strong&gt;2&lt;/strong&gt; (&lt;strong&gt;true&lt;/strong&gt;), or not (&lt;strong&gt;false&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;The result of that evaluation is what determines whether javascript would execute &lt;code&gt;console.log('passed')&lt;/code&gt; &lt;br&gt;
or &lt;code&gt;console.log('failed')&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;And in our case it will end up logging "passed" to the console because the result of that evaluation will be &lt;strong&gt;true&lt;/strong&gt; (1+1 is 2).&lt;/p&gt;

&lt;p&gt;That is how javascript and pretty much other languages work. Just know that &lt;strong&gt;anything&lt;/strong&gt; passed into the condition block of a statement will be coerced to true or false by evaluating it. And here comes the interesting part, i said anything and I mean anything. Any valid expression.&lt;/p&gt;

&lt;p&gt;You can pass in function calls, and the return value of that function will be coerced.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;getName&lt;/span&gt;&lt;span class="p"&gt;()){&lt;/span&gt;
  &lt;span class="c1"&gt;// do something&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can pass in reference to variables, and the referred value will be coerced.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;todos&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
  &lt;span class="c1"&gt;// do something&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you may be wondering how data types like strings, arrays, objects, will be coerced. Now let's see how javascript decides what is true or false.&lt;/p&gt;

&lt;h2&gt;
  
  
  Truthy and Falsy Values
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;truthy&lt;/strong&gt; value is a value that is considered &lt;code&gt;true&lt;/code&gt; when encountered in a Boolean context.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;falsy&lt;/strong&gt; value is a value that is considered &lt;code&gt;false&lt;/code&gt; when encountered in a Boolean context.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Falsy values
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;false&lt;/code&gt;,  &lt;code&gt;0&lt;/code&gt;, &lt;code&gt;-0&lt;/code&gt;,  &lt;code&gt;0n&lt;/code&gt;, &lt;code&gt;""&lt;/code&gt;,  &lt;code&gt;null&lt;/code&gt;,  &lt;code&gt;undefined&lt;/code&gt;, &lt;br&gt;
 and  &lt;code&gt;NaN&lt;/code&gt;).&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Truthy values
&lt;/h3&gt;

&lt;p&gt;Every other thing not listed above is considered truthy. e.g &lt;code&gt;[]&lt;/code&gt;,  &lt;code&gt;{a:1}&lt;/code&gt;,  &lt;code&gt;1&lt;/code&gt;, etc.&lt;/p&gt;

&lt;p&gt;The beauty of this is that javascript would evaluate your expression before determining if it's Truthy or Falsy. So you can do something like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;([]){...}&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;){...}&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;}){...}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So that gives you a powerful shorthand to checking conditions. &lt;br&gt;
&lt;code&gt;if(3 &amp;gt; 2 == true)&lt;/code&gt; can be shortened to &lt;code&gt;if(3&amp;gt;2)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Here's a quick flow of how the execution will be performed for &lt;code&gt;if(3 &amp;gt; 2 == true)&lt;/code&gt;&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;having this knowledge gives you the power to write conditionals like a pro, it reduces your lines of codes and makes execution faster.&lt;/p&gt;

&lt;p&gt;I hope you learnt something, I would love to know your thoughts on this. Happy coding 💻.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>codelikeapro</category>
      <category>techingrace</category>
    </item>
    <item>
      <title>I Broke into Dev.to, and you should too.</title>
      <dc:creator>Stanley Ugwu </dc:creator>
      <pubDate>Tue, 28 Sep 2021 21:13:53 +0000</pubDate>
      <link>https://dev.to/stanleyugwu/i-broke-into-dev-to-and-you-should-too-5c2o</link>
      <guid>https://dev.to/stanleyugwu/i-broke-into-dev-to-and-you-should-too-5c2o</guid>
      <description>&lt;p&gt;Hi 👋, am glad you're here. This is my first post and am glad am making it. You might be here to know exactly what I mean by "broke into Dev.to", and that you'll know in a bit.&lt;/p&gt;

&lt;p&gt;This is my first post on dev.to but not my first blog post generally. I've written in some few blog platforms but i haven't been consistent in any.&lt;/p&gt;

&lt;p&gt;I would say part of the reason for the inconsistency in writing/blogging is due to the consistent hassles and struggles i/we face as a developer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I've learnt &lt;strong&gt;this&lt;/strong&gt; and &lt;strong&gt;that&lt;/strong&gt;, and there's still lot of things to learn; that new technology, this new trend, the new way to do that old thing, that new javascript framework/library, there's no time and (add your own worries).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Along the line of these are what runs through the minds of so many developers, including myself.&lt;/p&gt;

&lt;p&gt;While those statements are true, and you need to keep learning, there's one thing you should start doing (if you haven't) that'll help your career and others' in a big way. Start &lt;strong&gt;Writing/Blogging&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It may not be easy, but it's something that'll yield benefits to you,your future career, and others.&lt;/p&gt;

&lt;p&gt;Yes i know you want to be a better developer.&lt;br&gt;
You want to network, you want to engage yourself in the community, you want to follow discussions, you want to contribute to open source, you have to be well...a &lt;strong&gt;developer&lt;/strong&gt; 🤷.&lt;/p&gt;

&lt;p&gt;One way of actually getting engaged (i believe) is to start blogging your developer journey.&lt;/p&gt;

&lt;p&gt;With that said, one of the challenges of maintaining a blog is actually knowing what to write about, and here's what i have to tell you. &lt;strong&gt;Write whatever you feel is/will be useful to someone, and don't over-think it.&lt;/strong&gt; Grab a notepad and start writing.&lt;/p&gt;

&lt;p&gt;Did you just understand that concept? Tell others who may have not. Did you just realize a better way to go about that stuff? Tell the world. Did you finally fix that tough bug that left you hitting your head on the wall? Tell others how you did it (you might be saving someone's head 😆).&lt;/p&gt;

&lt;p&gt;Thanks to development, now you don't need to start building your own full-fledged blogging site to express yourself. Just hop on to &lt;a href="https://dev.to"&gt;Dev.to&lt;/a&gt; or any blogging platform of choice and &lt;strong&gt;let it go&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;This post is actually a letter to myself (advising myself as I wrote 🙈), but i feel it would be useful to someone else, somewhere.&lt;/p&gt;

&lt;p&gt;Even if you don't find blogging any useful to yourself as a developer, write for your future sons and daughters 🙂 and other persons whose day will be saved by your little sentences. Happy coding..🤟&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;happytobeindevto&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;gladtoengage&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;firstpost&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;grace&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>firstpost</category>
    </item>
  </channel>
</rss>
