<?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: Asuzu Kosisochukwu</title>
    <description>The latest articles on DEV Community by Asuzu Kosisochukwu (@asuzukosi).</description>
    <link>https://dev.to/asuzukosi</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%2F823704%2F63ec0092-fffc-4eb5-979e-69b94cfd75ff.jpeg</url>
      <title>DEV Community: Asuzu Kosisochukwu</title>
      <link>https://dev.to/asuzukosi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/asuzukosi"/>
    <language>en</language>
    <item>
      <title>Operating System Development Series Part 1: Building a GCC cross compiler for i386 target on an M1 MacBook</title>
      <dc:creator>Asuzu Kosisochukwu</dc:creator>
      <pubDate>Wed, 21 Dec 2022 07:12:13 +0000</pubDate>
      <link>https://dev.to/asuzukosi/operating-system-development-series-part-1-building-a-gcc-cross-compiler-for-i386-target-on-an-m1-macbook-lb3</link>
      <guid>https://dev.to/asuzukosi/operating-system-development-series-part-1-building-a-gcc-cross-compiler-for-i386-target-on-an-m1-macbook-lb3</guid>
      <description>&lt;p&gt;A cross compiler is an important tool when building an operating system as it allows you to write code for a target system different from your host/development system. In this case I am building an operating system for an x86 architecture based device, particularly the i386 hardware which is an intel 8086 chip, from my host machine which is an M1 MacBook, the new M1 chips are ARM based which can introduce some challenges when building an operating system for a chip using a different architecture. This blog post highlights the steps I took to build the cross complier I will be using in developing the operating system.&lt;/p&gt;

&lt;p&gt;Compilers are used to convert high level code into executable binaries on your target operating system. The compiler loads header files and dependencies of the operating system it is being compiled on. This is an issue for operating system development because we don’t want to have dependencies of our development operating system when building our own operating system as this will lead to errors.&lt;/p&gt;

&lt;p&gt;Steps to building the cross compiler:&lt;/p&gt;

&lt;p&gt;Building a gcc cross compiler is actually quite simple, first you need to create a folder for handling your OS development. &lt;/p&gt;

&lt;p&gt;In this case lets name this file OSDev&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;OSDev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This folder is where we will be keeping or Operating system development related code and tools. This helps simply our development and avoids conflicts as the compilers and tools installed might conflict with your current development system.&lt;/p&gt;

&lt;p&gt;It is advisable to keep this OSDev folder where you keep your other software development tools, code or packages. In my case i kept it in my /Developer folder&lt;/p&gt;

&lt;p&gt;There are two main components we are install which are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;binutils&lt;/li&gt;
&lt;li&gt;gcc&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The binutils are used to store the utilities your program will be able to use when it is compiled from your cross compiler, since it will not have access to your OS platform libraries.&lt;/p&gt;

&lt;p&gt;GCC is the actual cross compiler that will be used for compiling your OS code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Move into the OSDev directory because this is where all your os development tools will be&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;OSDev

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

&lt;/div&gt;



&lt;p&gt;Next we will have to download the code for GCC and binutils. The easiest way to do this is by downloading the code through the mirrors of these projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GETTING READY&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before we start we have to ensure that some path parameters are exported to the shell so we can reuse it as we are building our compiler&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PREFIX&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/Developer/OSDev/opt/cross"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;TARGET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;i686-elf
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PREFIX&lt;/span&gt;&lt;span class="s2"&gt;/bin:&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The ‘PREFIX’ defines where we want our cross compiler and its dependencies to be located, while ‘TARGET’ defines what type of processor we are building for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BINUTILS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You will go to the mirrors of the projects and download the .tar.gz compressed files. It is advised to download the latest version available. The link to the mirror is &lt;/p&gt;

&lt;p&gt;&lt;a href="https://ftp.gnu.org/gnu/binutils/"&gt;Index of /gnu/binutils&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you download the compressed binutils code, extract it an move the code to the OSDev folder&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;OSDev
&lt;span class="nb"&gt;ls
&lt;/span&gt;binutils-2.39/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In my case the version of binutils is 2.39, this folder will be only folder in my OSDev folder at this point in time.  You can dispose the compressed file you extracted from if you wish.&lt;/p&gt;

&lt;p&gt;Now lets build the bitutils for our target platform. First we will create a build-binutils folder which we will use for build the binaries. The build-binutils should be created in the OSDev directory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;OSDev
&lt;span class="nb"&gt;mkdir &lt;/span&gt;build-binutils
&lt;span class="nb"&gt;cd &lt;/span&gt;build-binutils

../binutils-2.39/configure &lt;span class="nt"&gt;--target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$TARGET&lt;/span&gt; &lt;span class="nt"&gt;--prefix&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PREFIX&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;--with-sysroot&lt;/span&gt; &lt;span class="nt"&gt;--disable-nls&lt;/span&gt; &lt;span class="nt"&gt;--disable-werror&lt;/span&gt;
make
make &lt;span class="nb"&gt;install&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will build the binutils for the target platform and store it in the folder you defined as your ‘PREFIX’.&lt;/p&gt;

&lt;p&gt;Running this commands will create an opt folder within your OSDev folder, and then a cross folder within opt&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;OSdev
&lt;span class="nb"&gt;ls
&lt;/span&gt;build-binutils/ binutils-2.39/ opt/
&lt;span class="nb"&gt;cd &lt;/span&gt;opt
&lt;span class="nb"&gt;ls
&lt;/span&gt;cross/
&lt;span class="nb"&gt;cd &lt;/span&gt;cross
&lt;span class="nb"&gt;ls
&lt;/span&gt;Lists a bunch of libraries and binaries that are now usable &lt;span class="k"&gt;in &lt;/span&gt;you cross compiler
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;GCC&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now we will download the source code of the gcc compiler just as we did with the binutils. We will download the compressed .tar.gz file and extract it into our OSDev folder. We will download this from the mirror which can be found here&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ftp.gnu.org/gnu/gcc/"&gt;https://ftp.gnu.org/gnu/gcc/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you download the compressed gcc file, extract it and move the resulting folder into your OSDev folder&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;OSDev
&lt;span class="nb"&gt;ls
&lt;/span&gt;build-binutils/ binutils-2.39/ opt/ gcc-12.2.0/
&lt;span class="nb"&gt;cd &lt;/span&gt;gcc-12.2.0

&lt;span class="c"&gt;# This will install all the required dependencies such as mpc, mpfr and gmp&lt;/span&gt;
./contrib/download_prerequisites
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this situation we are using the version 12.2.0 of the gcc compiler.&lt;/p&gt;

&lt;p&gt;Now lets build the gcc compiler the same way we built the binutils.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;OSDev

&lt;span class="c"&gt;# The $PREFIX/bin dir _must_ be in the PATH. We did that above.&lt;/span&gt;
which &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="nv"&gt;$TARGET&lt;/span&gt;&lt;span class="nt"&gt;-as&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$TARGET&lt;/span&gt;&lt;span class="nt"&gt;-as&lt;/span&gt; is not &lt;span class="k"&gt;in &lt;/span&gt;the PATH

&lt;span class="nb"&gt;mkdir &lt;/span&gt;build-gcc
&lt;span class="nb"&gt;cd &lt;/span&gt;build-gcc
../gcc-12.2.0/configure &lt;span class="nt"&gt;--target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$TARGET&lt;/span&gt; &lt;span class="nt"&gt;--prefix&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PREFIX&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;--disable-nls&lt;/span&gt; &lt;span class="nt"&gt;--enable-languages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;c,c++ &lt;span class="nt"&gt;--without-headers&lt;/span&gt;
make all-gcc
make all-target-libgcc
make install-gcc
make install-target-libgcc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Congratulations! we have successfully built our compiler. The compiler is located here&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;OSDev/opt/cross/bin/i686-elf-gcc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Test the cross compiler by checking the version&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;OSDev/opt/cross/bin/i686-elf-gcc &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now our cross compiler is functioning properly we want to export the path so we can call the compiler from anywhere in our terminal&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"full-path-to-folder/Developer/OSDev/opt/cross/bin:&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will enable us to call our compiler anywhere in our terminal as such&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;i686-elf-gcc &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is temporary and if we close the terminal we will not be able to do this unless we re export it. To permanently export the path we need to add the export command the .profile file for the terminal. In my case i use zsh, there for i will have to edit the .zshrc file as such&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano .zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then add this command to the end of the file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"full-path-to-folder/Developer/OSDev/opt/cross/bin:&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you have a cross compiler and can use it to build our kernel.&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>c</category>
      <category>systems</category>
    </item>
    <item>
      <title>Why I'm building an operating system</title>
      <dc:creator>Asuzu Kosisochukwu</dc:creator>
      <pubDate>Thu, 15 Dec 2022 08:00:26 +0000</pubDate>
      <link>https://dev.to/asuzukosi/why-im-building-an-operating-system-2l0o</link>
      <guid>https://dev.to/asuzukosi/why-im-building-an-operating-system-2l0o</guid>
      <description>&lt;h4&gt;
  
  
  &lt;strong&gt;Why I’m building an operating system&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Operating systems are a fundamental part of all computing systems. They enable us run our programs and manage the resources of the computer while the programs are running, they handle scheduling of tasks and memory allocation. Modern operating systems often provide a graphical user interface that allows non technical users to interact with the operating system through dynamic interactive graphical components. My reason for building an operating system is quite simple, there isn’t a more challenging technical project, understanding how operating systems are built will provide you with the knowledge to build more powerful and technically challenging application level programs because you’ll understand how everything works from the system level. Another reason I’ve decided to build an operating system is the journey and all the other concepts I will pick up along the way, building an operating systems involves a deep technical understanding of other concepts such as algorithms and data structures, networking, information theory, computer architecture and so on. For these reasons I believe building an operating systems would be both exciting and intellectually stimulating.&lt;/p&gt;

&lt;p&gt;I would be using the &lt;a href="https://wiki.osdev.org/Main_Page"&gt;OSDev wiki site&lt;/a&gt; as guide as I embark on this journey, here are some interesting concepts I have learnt already:&lt;/p&gt;

&lt;h3&gt;
  
  
  Kernel
&lt;/h3&gt;

&lt;p&gt;The Kernel is the heart of the operating system, It handles both hardware and software interrupts. It has abstractions for certain entities such as files, processes, memory, directories etc which are represented using an internal state in the kernel. Applications interact with these abstractions using system calls, system calls can be seen as functions used to interact with the data abstractions. System calls are not called directly by application programs, except maybe you are writing assembly code, system calls are made using c/c++ libraries which abstract the parameters required for making the system calls from the programmer. &lt;/p&gt;

&lt;h3&gt;
  
  
  Shell
&lt;/h3&gt;

&lt;p&gt;The shell is an application program that is usually distributed with the operating system, it is primarily used for providing an interface for users to start other application programs and explore other files and programs available on the file system, It is not part of the operating system or the kernel. The shell is an application level program, it executes on the user space and not the kernel space, it performs its operations by performing numerous system calls. The shell may also implement a scripting language that will enable users to write scripts that execute certain instructions on the shell.&lt;/p&gt;

&lt;h3&gt;
  
  
  GUI
&lt;/h3&gt;

&lt;p&gt;The graphical user interface is an application level program that is usually distributed with operating systems that use them. They are used for rendering and drawing on the the users screen, it is also responsible for handling input from the keyboard and mouse, and performing the appropriate required action, GUIs are not important for all operating systems, some are solely shell based, but the question is how do most modern operating systems use both shells and GUIs? Two essential subsystems are the widget manager and the the widget library.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Window Manager&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The window manager is used for positioning, shaping and sizing of windows on the user interface. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Widget Library&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a subsystem used for enabling applications to build user interfaces to be used on the graphical user interface.&lt;/p&gt;

&lt;p&gt;I'll be posting my progress, learnings and failures here to keep you guys on the know and keep myself accountable. If you're interested in joining me on this journey please reach out, it will be fun.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>systems</category>
      <category>cpp</category>
    </item>
    <item>
      <title>Web3 na scam?</title>
      <dc:creator>Asuzu Kosisochukwu</dc:creator>
      <pubDate>Wed, 02 Mar 2022 08:25:02 +0000</pubDate>
      <link>https://dev.to/asuzukosi/web3-na-scam-3le4</link>
      <guid>https://dev.to/asuzukosi/web3-na-scam-3le4</guid>
      <description>&lt;p&gt;Unless you've been living under a rock, you've probably heard the phrase 'web3', it has been hyped, used and discussed on various social media platforms, within developer communities, and now its gaining mainstream adoption. This term 'web3' is also very controversial, its supporters believe it is the technology that will save the world, end world hunger, cure cancer and might as well even be the greatest invention in human history since sliced bread. On the opposite side we have people who believe that web3 is just another internet fad, a get money quick scheme, and another internet hype train that will completely fade away with time without producing any real value. Both parties feel very passionate about their opinions and both sides have solid arguments to support their views, but i think the two views highlighted above are both wrong, let me explain...&lt;/p&gt;

&lt;p&gt;The word 'web3' suggests some kind of numerical increase, So it implies there was a web1 and a web2. Web3 is not a new term, it has existed for quite some time, but its definition has changed with the rise of cryptocurrencies and blockchain technology. So what are the differences between these various versions of the web? Lets find out!&lt;/p&gt;

&lt;p&gt;So what is web1? Web1 is defined as the initial version of the internet in the 80s, during the time of wikipedia and the rest. This version of the internet allowed us to share data across the world seamlessly in a matter of seconds, anyone with a computer could set up and application called a server and connect to this magical thing called the internet and share whatever information they wanted. We will call web1 the internet of data, web1 allowed us to share data with each other, but the data that was shared could not be modified by the viewer, it was read only. The data could only be modified by the person who created the website.&lt;/p&gt;

&lt;p&gt;Now Web2, this is where things get very interesting, and this is where most of the web3 believers begin their argument. Web2 is version of the internet that not only allowed us to view data, but also modify the data and collaborate with each other using digital platforms. We will call web2 the internet of data and collaboration. The problem with web2 is that the data gotten from users while using the internet belongs to the platform where the data was shared. This is a problem to a lot of people because they do not own their data, meaning the platform can choose to do whatever they want with that data both good and bad. Recently these problem has been aggravated because of platforms like facebook who sell this data to advertisers and remove content created by their users.&lt;/p&gt;

&lt;p&gt;Then there is Web3, now this is where things get funny. Web3 was initially called the semantic web, this is a term proposed by Tim Berners Lee who is called the father of the internet. The idea of the semantic web was adding intelligence to the internet, as web2 made the internet dynamic web3 was meant to make the internet intelligent. Currently that is no longer the definition or goal of web3. Web3 is currently defined as the 'decentralized' internet, where the data belongs to the user that created it and not the platform it was created on. The data is no longer stored on the database of the platform it was created rather it is stored on the blockchain, which is decentralized, read and append only, trustless database. We will call web3 the internet of data, collaboration and value, since the database is not owned by a single entity various parties can agree on the state of the data on the blockchain as being true.&lt;/p&gt;

&lt;p&gt;So what is the fight about? Well, the problem actually starts from how web3 even started. Web3 is the built on the blockchain. Blockchain technology is not new, but in 2008 an anonymous individual or group under the alias of Satoshi Nakamoto created a new usecase for blockchains called crypto-currencies. Since the state of the blockchain could not be changed by external factors data on the blockchain can be viewed as valid and true, this means if the blockchain says i have x amount of something, then that becomes indisputably true. This allows us to create something called cryptocurrencies, which keep record of the amount of a digital token someone has. This token or currency is what we now call bitcoin.&lt;/p&gt;

&lt;p&gt;Most of the hype for web3 comes for its native support for cryptocurrencies. These cryptocurrencies are usually very volatile and usually drastically increase in value most times instantaneously. This is where the argument against web3 begins, most believers of web3 are not in it for the technology, they are interested in crypto and making money quick from it. The 2 main breakout use cases of web3 are DeFi and NFTs. I wont go into details explaining them but they are mostly used as a means to get quick money easily, with no real benefits. It seems that the builders and users of web3 are mostly concerned with getting rich quick and an intoxicating amount of FOMO. &lt;/p&gt;

&lt;p&gt;While there are other use cases of web3 with real world benefits such as DAOs(Decentralised Autonomous Organisations) they barely get as much attention as the others because they inherently do not have any get money quick mechanism....yet.&lt;/p&gt;

&lt;p&gt;I still choose to keep an open mind, i believe there is a strong potential in blockchains, the idea of a shared database that multiple applications can use without needing to cooperate with each other. So that is why i have decided to participate in the &lt;a href="https://blockgames.gg/"&gt;blockgames&lt;/a&gt; organised by the &lt;a href="https://zuri.team/"&gt;Zuri Team&lt;/a&gt; and &lt;a href="https://nestcoin.com/"&gt;NestCoin&lt;/a&gt;, the program aims to train the African blockchain developer market through an intensive 8 week program. By the end of this program i would have sufficient knowledge about blockchains and web3 to determine if web3 is the revolutionary technology, or its just another internet scam that will fade away with billions of dollars in lost value.&lt;/p&gt;

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