<?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: Jeremy Ikwuje</title>
    <description>The latest articles on DEV Community by Jeremy Ikwuje (@ijsucceed).</description>
    <link>https://dev.to/ijsucceed</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%2F108078%2F4c50778e-7d9e-4084-ae5f-5cfb87a5ac66.jpg</url>
      <title>DEV Community: Jeremy Ikwuje</title>
      <link>https://dev.to/ijsucceed</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ijsucceed"/>
    <language>en</language>
    <item>
      <title>Low-maintenance Mercedes-Benz Cars for Tech Guys</title>
      <dc:creator>Jeremy Ikwuje</dc:creator>
      <pubDate>Tue, 11 Apr 2023 11:01:00 +0000</pubDate>
      <link>https://dev.to/ijsucceed/low-maintenance-mercedes-benz-cars-for-tech-guys-1o</link>
      <guid>https://dev.to/ijsucceed/low-maintenance-mercedes-benz-cars-for-tech-guys-1o</guid>
      <description>&lt;p&gt;&lt;strong&gt;One of the desire of most young people is to own a Mercedes-Benz car. But Mercedes-Benz cars aren’t cheap to maintain. For most people, they will never afford one in their lifetime. I love Mercedes cars, it’s one of my top favourite cars, I can spend the whole day driving around with one. If you work in tech and you will love to get one, here are some of the coolest Low-Maintenance Mercedes-Benz cars that won’t break your Bitcoin balance.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Tech Guys?
&lt;/h2&gt;

&lt;p&gt;The annual maintenance cost of driving the cars I shared on this post is $800 — $1200.&lt;/p&gt;

&lt;p&gt;Despite how relatively affordable they are compared to other luxury brands within their class, it will still be expensive for people who earn &amp;lt; $10,000 per annum. They will be better off driving a cheaper brand.&lt;/p&gt;

&lt;p&gt;But the average software engineers within my network with a full-time job earn $15,000 — $60,000 per annum. In the west,engineers earn much more than this.&lt;/p&gt;

&lt;h2&gt;
  
  
  List of Low Maintenance Mercedez-Benz Cars For Tech Guys
&lt;/h2&gt;

&lt;h3&gt;
  
  
  2014 Mercedes-Benz B-Class ~ $19,000
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xg5ixN4x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/0%2AhaHThvU9Tm3eiDmJ.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xg5ixN4x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/0%2AhaHThvU9Tm3eiDmJ.jpg" alt="2014 Mercedes-Benz B-Class" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2014 Mercedes-Benz B-Class&lt;/p&gt;

&lt;p&gt;If you are on a budget, yet you desire the class of driving a Benz, the 2014 Mercedes-Benz B-Class  is a good option. It is a compact luxury vehicle that provides a comfortable and refined driving experience. It has a sporty yet practical design, making it a suitable car for a techie who wants a balance between performance and functionality.&lt;/p&gt;

&lt;p&gt;In terms of sportiness, the B-Class has a powerful turbocharged engine that produces 208 horsepower, giving it plenty of acceleration and responsive handling. It also has a smooth-shifting transmission that provides a comfortable and refined driving experience.&lt;/p&gt;

&lt;p&gt;It consumes a gallon of fuel for 28 miles of city driving and a gallon of fuel for 36 miles of highway driving. This makes it an excellent option for those who want a luxury car that is also fuel-efficient.&lt;/p&gt;

&lt;p&gt;According to repairpal.com, the average maintenance cost for the 2014 Mercedes-Benz B-Class is around $983 per year — relatively affordable compared to other luxury vehicles. The average purchase cost is about $19,000, but you can get a fairly &lt;a href="https://jiji.ng/isolo/cars/mercedes-benz-b-class-2014-black-lfyBB3ew47fQKczaj0w4HMyr.html?page=1&amp;amp;pos=3&amp;amp;cur_pos=3&amp;amp;ads_per_page=4&amp;amp;ads_count=4&amp;amp;lid=vy31aC51SXceuG_K&amp;amp;indexPosition=2"&gt;used&lt;/a&gt; one for $12,000 (~ N9,000,000).&lt;/p&gt;

&lt;h3&gt;
  
  
  2015 Mercedes-Benz CLA-Class Black ~ $21,000
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E025M82l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/0%2AEAconFkSyQ2Zq2h9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E025M82l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/0%2AEAconFkSyQ2Zq2h9.jpg" alt="2015 Mercedes-Benz CLA-Class - The Car Connection" width="640" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2015 Mercedes-Benz CLA-Class — The Car Connection&lt;/p&gt;

&lt;p&gt;If you desire a Sedan body car with a luxury feel, the 2015 Mercedes-Benz CLA-Class  is a fine option. It is a sleek and sporty four-door coupe that delivers a blend of performance, luxury, and technology.&lt;/p&gt;

&lt;p&gt;It is powered by a turbocharged 2.0-liter four-cylinder engine that produces 208 horsepower and 258 pound-feet of torque, paired with a seven-speed dual-clutch automatic transmission. The car’s handling is agile and precise, with excellent steering and responsive brakes.&lt;/p&gt;

&lt;p&gt;It consumes a gallon of fuel for 26 miles of city driving and a gallon of fuel for 38 miles of highway driving making it relatively efficient for a luxury car.&lt;/p&gt;

&lt;p&gt;As for maintenance costs, according to RepairPal, the average annual cost of maintenance for a 2015 Mercedes-Benz CLA-Class is around $846. The average purchase cost is about $21,000, but you can get a fairly &lt;a href="https://jiji.ng/isolo/cars/mercedes-benz-b-class-2014-black-lfyBB3ew47fQKczaj0w4HMyr.html?page=1&amp;amp;pos=3&amp;amp;cur_pos=3&amp;amp;ads_per_page=4&amp;amp;ads_count=4&amp;amp;lid=vy31aC51SXceuG_K&amp;amp;indexPosition=2"&gt;used&lt;/a&gt; one for $15,000 (~ N12,000,000).&lt;/p&gt;

&lt;h3&gt;
  
  
  2016 Mercedes-Benz CLA 250 AWD ~ $25,000
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---HfE7Fpb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/1%2AisuYTtLHAC_yMytzL-RsEw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---HfE7Fpb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/1%2AisuYTtLHAC_yMytzL-RsEw.png" alt="2016 Mercedes-Benz CLA 250 AWD - Photo credit: CarsGuide" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2016 Mercedes-Benz CLA 250 AWD — Photo credit: CarsGuide&lt;/p&gt;

&lt;p&gt;If you want something small, yet with class, the 2016 Mercedes-Benz CLA 250 AWD is a good option. The Mercedes-Benz CLA-Class Base CLA 250 AWD 2016 is a compact luxury sedan that offers a good balance between sportiness, style, and luxury.&lt;/p&gt;

&lt;p&gt;The car has a turbocharged 2.0-litre engine, enabling it to produce 208 horsepower and 258 lb-ft of torque, making it quick and responsive on the road. This engine is mated to a seven-speed dual-clutch automatic transmission that delivers quick and smooth shifts. The car comes standard with an all-wheel-drive system that enhances its grip and handling on the road, making it a fun car to drive.&lt;/p&gt;

&lt;p&gt;It consumes a gallon of fuel for 24 miles of city driving and a gallon of fuel for 33 miles of highway driving. It has better fuel economy compared to other luxury vehicles in its class like Acura ILX, Audi A3, Lexus IS and BMW 2 Series.&lt;/p&gt;

&lt;p&gt;According to repairpal.com, the average maintenance cost for the Mercedes-Benz CLA-Class Base CLA 250 AWD 4MATIC 2016 is around $908 per year. The average purchase cost is about $25,000, but you can get a fairly &lt;a href="https://jiji.ng/surulere/cars/mercedes-benz-cla-class-base-cla-250-awd-4matic-2016-black-ikquxBzJYxdt1jtPldgSZk97.html?page=1&amp;amp;pos=10&amp;amp;cur_pos=10&amp;amp;ads_per_page=22&amp;amp;ads_count=3891&amp;amp;lid=vy31aC51SXceuG_K&amp;amp;indexPosition=9"&gt;used&lt;/a&gt; one for $17,500 (~ N14,500,000).&lt;/p&gt;

&lt;h3&gt;
  
  
  2018 Mercedes-Benz C300 ~ $40,000
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4C64Q6FG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/0%2AzTbfHwK1nWbaXPZT.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4C64Q6FG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/0%2AzTbfHwK1nWbaXPZT.jpg" alt="2018 Mercedes-Benz C300" width="725" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2018 Mercedes-Benz C300&lt;/p&gt;

&lt;p&gt;According to repairpal.com, the average annual maintenance cost for a Mercedes-Benz C300 is around $908. The average purchase cost is about $40,000, but you can get a fairly &lt;a href="https://jiji.ng/ikeja/cars/mercedes-benz-c300-2018-gray-10p7VhNliFRQw5ZL3LTE5cNy.html?page=1&amp;amp;pos=3&amp;amp;cur_pos=3&amp;amp;ads_per_page=23&amp;amp;ads_count=3800&amp;amp;lid=vy31aC51SXceuG_K"&gt;used&lt;/a&gt; one for around $20,000 (~ N15,000,000) in Nigeria.&lt;/p&gt;

&lt;p&gt;It consumes a gallon of fuel for 24 miles of city driving and a gallon of fuel for 33 miles of highway driving. It has good fuel economy compared to other luxury vehicles in its class like Lexus IS, Audi A4, and BMW 3 Series.&lt;/p&gt;

&lt;p&gt;I love the car. It is a sweet car and looks recent. It is sporty and you feel good inside.&lt;/p&gt;

&lt;h3&gt;
  
  
  2018 Mercedes-Benz A 220 ~ $40,500
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---DKo-_jF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/0%2AD6uHswD8Go7BJBIw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---DKo-_jF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/0%2AD6uHswD8Go7BJBIw.jpg" alt="2018 Mercedes-Benz A 220" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2018 Mercedes-Benz A 220&lt;/p&gt;

&lt;p&gt;If you are looking for a car that balances sportiness, safety, and fuel efficiency, the 2018 Mercedes-Benz A 220  is a great option. It combines advanced technology with a sleek design, making it the perfect car for young technology enthusiasts.&lt;/p&gt;

&lt;p&gt;The A 220 has a 2.0L inline-4 engine that produces up to 188 horsepower, delivering impressive acceleration and speed while maintaining better-than-average fuel efficiency.&lt;/p&gt;

&lt;p&gt;It consumes a gallon of fuel for 28 miles of city driving and a gallon of fuel for 35 miles of highway driving making it an economical choice for those looking to save money on fuel on a luxury car.&lt;/p&gt;

&lt;p&gt;As for maintenance costs, according to RepairPal, the average annual cost of maintenance for a 2018 Mercedes-Benz A 220 is around $757. The average purchase cost is about $40,500, but you can get a fairly used one for $26,500.&lt;/p&gt;

&lt;h3&gt;
  
  
  2020 Mercedes-Benz GLA 250 ~ $31,500
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vOAmlNW4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/0%2AqaA9FV4HXBIDk2Ky" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vOAmlNW4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/0%2AqaA9FV4HXBIDk2Ky" alt="A Mercedes-Benz GLA 250 parked - CarAndDriver.com" width="640" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A Mercedes-Benz GLA 250 parked — CarAndDriver.com&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For the big boys&lt;/strong&gt; that like an SUV that is stylish, sporty, and compact, the 2020 Mercedes-Benz GLA 250 is a stylish and sporty compact SUV that delivers impressive performance while still being practical for everyday use.&lt;/p&gt;

&lt;p&gt;The car has a turbocharged 2.0-litre engine, enabling it to produce 221 horsepower and 258 lb-ft of torque, making it quick and responsive on the road. The car comes with an 8-speed automatic transmission and front-wheel drive as standard and also an all-wheel drive for better traction in slippery conditions.&lt;/p&gt;

&lt;p&gt;It consumes a gallon of fuel for 25 miles of city driving and a gallon of fuel for 34 miles of highway driving. It has good fuel economy compared to other luxury vehicles in its class like Lexus UX 250h, Volvo XC40 T5, Audi Q3 and BMW X1 sDrive28i.&lt;/p&gt;

&lt;p&gt;According to repairpal.com, the average annual maintenance cost for a GLA 250 is around $865, which is relatively low for a luxury vehicle. The average purchase cost &lt;a href="https://www.truecar.com/used-cars-for-sale/listings/mercedes-benz/gla/year-2020/"&gt;starts&lt;/a&gt; from $23,000 — $40,000 depending on the location and condition.&lt;/p&gt;

&lt;h3&gt;
  
  
  2020 Mercedes-Benz A250 ~ $40,000
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---HFAbAxv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/0%2ANH952l6p2ShmuGyd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---HFAbAxv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/0%2ANH952l6p2ShmuGyd.jpg" alt="2020 Mercedes-Benz A250 4MATIC. Photo credit: CareExpert" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2020 Mercedes-Benz A250 4MATIC. Photo credit: CareExpert&lt;/p&gt;

&lt;p&gt;This car fits really well for a techie in Nigeria where fuel scarcity is a major and reoccurring concern.&lt;/p&gt;

&lt;p&gt;The 2020 Mercedes-Benz A-Class has impressive fuel economy, with an EPA-estimated 28 mpg in the city and 35 mpg on the highway. Thanks to its turbocharged engine and 7-speed dual-clutch automatic transmission, which work together to optimize fuel efficiency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In terms of maintenance costs&lt;/strong&gt;, the A-Class is generally considered to be a reliable and durable car, with routine maintenance costs (~$885) that are on par with other luxury vehicles in its class.&lt;/p&gt;

&lt;p&gt;The car features a sleek and modern exterior, with a luxurious interior that includes high-quality materials and advanced technology.&lt;/p&gt;

&lt;p&gt;There are two A250 sedan variants available: the front-wheel-drive A250 from $40,000 and the all-wheel-drive A250 4Matic from $49,000.&lt;/p&gt;

&lt;h3&gt;
  
  
  Final consideration
&lt;/h3&gt;

&lt;p&gt;I could go on and share over a hundred Low-Maintenance Mercedes-Benz cars, but that won’t make any difference.&lt;/p&gt;

&lt;p&gt;The reason is, Mercedes-Benz cars are in classes, and you will find different models within a class. For instance, there are classes like the S series which are more expensive to afford and maintain and there are classes that are relatively economical to afford and maintain.&lt;/p&gt;

&lt;p&gt;If you are interested in getting a Benz car soon and you’re on a budget, look for the following series:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  C-Class (W204)&lt;/li&gt;
&lt;li&gt;  E-Class (W211)&lt;/li&gt;
&lt;li&gt;  CLK-Class (W209)&lt;/li&gt;
&lt;li&gt;  B-Class&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You will find multiple car models within a series and some with slightly affordable prices.&lt;/p&gt;

&lt;p&gt;Next is to consider getting an older model, btw 2010 — 2020. Because Mercedes-Benz cars are well-crafted, a car design will still look relevant in years to come. So you can drive a cheap 2014 model and still enjoy the same class as someone who drives a costly 2018 model.&lt;/p&gt;

&lt;p&gt;For example, the &lt;a href="https://www.autoblog.com/buy/2007-Mercedes_Benz-CLS_Class/"&gt;Mercedes CLA-Class 2007&lt;/a&gt; is still a pretty nice car and you can get a used one for &amp;lt; $5,000.&lt;/p&gt;

&lt;p&gt;However, it is important to mention that older models tend to have strange and terrible sounds that affect the coolness of the car.&lt;/p&gt;

&lt;h3&gt;
  
  
  Last warning!
&lt;/h3&gt;

&lt;p&gt;Whichever Mercedes you buy, don’t buy this one, Lol.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FyCTwYxi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/0%2AqtB0vlEp8KGwod5-.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FyCTwYxi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/800/0%2AqtB0vlEp8KGwod5-.jpg" alt="Base C 43 4dr Sedan - Autoblog" width="788" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Base C 43 4dr Sedan — Autoblog&lt;/p&gt;

&lt;p&gt;Just kidding!&lt;/p&gt;

&lt;p&gt;Well, if you love Benz cars so much, you can start with it.&lt;/p&gt;

&lt;p&gt;You can email me a photo of your Mercedes-Benz car(s) anytime to &lt;a href="mailto:jeremy@forward.africa"&gt;jeremy@forward.africa&lt;/a&gt;, I love to see them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Over to you
&lt;/h3&gt;

&lt;p&gt;If you enjoy this article, you can do the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Subscribe to &lt;a href="https://forwardapps.substack.com"&gt;Forward Apps Roundup&lt;/a&gt; on Substack.&lt;/li&gt;
&lt;li&gt;  Share this post with your tech friends on WhatsApp or Twitter.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This will encourage me to keep writing.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>career</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>What is a Blockchain?</title>
      <dc:creator>Jeremy Ikwuje</dc:creator>
      <pubDate>Sun, 27 Nov 2022 02:40:07 +0000</pubDate>
      <link>https://dev.to/monierate/what-is-a-blockchain-11g0</link>
      <guid>https://dev.to/monierate/what-is-a-blockchain-11g0</guid>
      <description>&lt;p&gt;A blockchain is literally a chain of blocks.&lt;/p&gt;

&lt;p&gt;Think of it as blocks lined together piece by piece and each block is unique and a continuation of the previous.&lt;/p&gt;

&lt;p&gt;Now you might be wondering, what is inside these blocks? You can literally think of these blocks as storage units that stores data so we can store different kinds of things in these blocks.&lt;/p&gt;

&lt;p&gt;You may have heard of data storage in Computers, a data storage is just data held in a computer. &lt;strong&gt;A blockchain is an open and decentralized data storage&lt;/strong&gt;. Data in a blockchain are stored in chains of blocks spread across many computers network, instead of on a single computer. Because this data storage is open and decentralized, anyone can access, read, and store information in it at any time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Each blockchain has a consensus mechanism&lt;/strong&gt;, a way in which this distributed network agrees on what new information is written on that data storage, ensuring that the data is true and therefore trustworthy.&lt;/p&gt;

&lt;p&gt;It is stated in the bitcoin whitepaper, &lt;strong&gt;a double spend should never happen&lt;/strong&gt;. This is due to the bitcoin decentralized ledger, every node connected to the network ensures that no coins have been double spent.&lt;/p&gt;

&lt;p&gt;Unlike a normal data storage, data stored in a blockchain are immutable, so once a data get into one of these blocks, it can't be changed. Everyone(or majority) participating in the network gets a copy of these data, so if an individual try to change theirs, there will be a conflict with the rest(majority) and they may get kicked out of the network.&lt;/p&gt;

&lt;p&gt;In blockchain, a &lt;strong&gt;single point of failure is also not possible&lt;/strong&gt;. In the bitcoin blockchain for example, there are thousands of nodes(severs) connected to the network. If a particular node goes down, the network does not go down, other nodes will continue to run.&lt;/p&gt;

</description>
      <category>emptystring</category>
    </item>
    <item>
      <title>What is the Double Spend Problem?</title>
      <dc:creator>Jeremy Ikwuje</dc:creator>
      <pubDate>Thu, 24 Nov 2022 12:40:35 +0000</pubDate>
      <link>https://dev.to/monierate/what-is-the-double-spend-problem-cep</link>
      <guid>https://dev.to/monierate/what-is-the-double-spend-problem-cep</guid>
      <description>&lt;p&gt;If you are intending to start a career in blockchain/web3, one important concept to understand is the Double Spend Problem.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1595381737793675264-763" src="https://platform.twitter.com/embed/Tweet.html?id=1595381737793675264"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1595381737793675264-763');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1595381737793675264&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A double spend problem describe the potential of a single asset to be spent more than once.&lt;/li&gt;
&lt;li&gt;Trusted central financial entity (like a bank or PayPal) can help avoid double spend problem, but the costs are many.&lt;/li&gt;
&lt;li&gt;Bitcoin solves the double spend problem cheaply by using a &lt;a href="https://river.com/learn/terms/d/decentralized-ledger/"&gt;decentralized ledger&lt;/a&gt;, which the public can access. Because the public can examine the full history of transactions, everyone is sure that no coins have been double spent.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Double Spend Problem
&lt;/h2&gt;

&lt;p&gt;Digital files like text, audios, and video are easily duplicated. You can record a song on a computer, with the click of a button create multiple copy of that song, send those copies to more than one person while keeping the original copy. This is one of things that makes digital devices desiring and easy to use.&lt;/p&gt;

&lt;p&gt;But countless and easy duplication of money is a problem. A monetary system where anyone is allowed to duplicate the money they have is bad. In computer science, this problem is called the double spend problem, the potential of a single asset to be spent more than once.&lt;/p&gt;

&lt;h2&gt;
  
  
  Physical Money
&lt;/h2&gt;

&lt;p&gt;Let’s say I have 10 dollars in cash. I give you 5 dollars, leaving me with a balance of 5 dollar. I can’t physically spend my 10 dollars again because my balance is just 5 dollar. No double-spending.&lt;/p&gt;

&lt;p&gt;However, on the internet, the double spend problem can easily occur. I can just copy/paste the 10 dollars and send to you, leaving me with same 10 dollar in my wallet too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solutions
&lt;/h2&gt;

&lt;p&gt;Initially, to get around this issue of double spending money, we trusted a central financial entity (like a bank or PayPal) to verify transactions and dictate the balance of any given account. So no one can easily duplicate their money.&lt;/p&gt;

&lt;p&gt;However, the problems with trusting a financial entities are many. They are slow. Most of them charge fees and impose limits on the size, type, and number of transactions a user can execute. If you live in Europe and send 1000 dollars to your family in Africa, it may take up to 30 days for them to receive the money.&lt;/p&gt;

&lt;p&gt;In 2009, a revolution began with the arrival of Bitcoin blockchain. For the first time in history, rather than trusting on central entities to avoid the double spend problem, the public  could verify transactions of digital money without the need for that central entity. If I have 10 Bitcoin in my wallet, and I send you 5 of them, then we could trust technology and cryptography to update our wallet balances instead of trusting a bank.&lt;/p&gt;

&lt;p&gt;Bitcoin solves the double spend problem by using a &lt;a href="https://river.com/learn/terms/d/decentralized-ledger/"&gt;decentralized ledger&lt;/a&gt;, which the public can access. Because the public can examine the full history of transactions, everyone is sure that no coins have been double spent. Additionally, the transaction records in the network is immutable and not control by a single entity or individual.&lt;/p&gt;

&lt;p&gt;When I sends 5 bitcoin to you, the network destroy the 5 bitcoin I(the sender) own and create a new coin owned by you (the receiver). The destruction of my(the sender) 5 bitcoin  is recorded for all to see, so that I can never send it to someone else. And on average the transaction is confirmed and settle within an hour. There is no limit in the transaction one can make. And a single entity can't flag off the transaction.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Become a Web3/Blockchain Engineer with &lt;a href="https://school.forward.africa/"&gt;this&lt;/a&gt; 8-week program.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>web3</category>
      <category>webdev</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>What is Single Point of Failure?</title>
      <dc:creator>Jeremy Ikwuje</dc:creator>
      <pubDate>Thu, 24 Nov 2022 10:53:25 +0000</pubDate>
      <link>https://dev.to/monierate/what-is-single-point-of-failure-1pg4</link>
      <guid>https://dev.to/monierate/what-is-single-point-of-failure-1pg4</guid>
      <description>&lt;p&gt;If you are intending to start a career in blockchain/web3, one important concept to understand is the Single Point of Failure, also known as SPOF.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1516247207523008516-630" src="https://platform.twitter.com/embed/Tweet.html?id=1516247207523008516"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1516247207523008516-630');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1516247207523008516&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A single point of failure is any part of a system that, if it fails, will stop the entire system from working.&lt;/li&gt;
&lt;li&gt;The best way to avoid this is to reject depending on a single point entirely and has many distributed points.&lt;/li&gt;
&lt;li&gt;Bitcoin blockchain is a decentralized network where transactions are stored and distributed across multiple nodes(servers). If a single node fails, the network does not go down and transactions won't be lost.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Single Point of Failure
&lt;/h2&gt;

&lt;p&gt;A single point of failure is any part of a system that, if it fails, will stop the entire system from working.&lt;/p&gt;

&lt;p&gt;For example a business owner needs $2500 per month to keep her business running. But she only got one client that pay her $2500 per month for her service. If that client decide to stop doing business with her, the business dies.&lt;/p&gt;

&lt;p&gt;Another example is a football team that depends on only one star player to win matches; If that players gets an injury, the team stop winning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solutions
&lt;/h2&gt;

&lt;p&gt;Two types of solutions to the Single Point of Failure:&lt;/p&gt;

&lt;p&gt;The first is to minimize the chance of the single point failing. For you the business owner, this means, you make sure the client sign a lifetime contract with you. For the football team, they ensure the star player is always fit. &lt;/p&gt;

&lt;p&gt;The second rejects depending on a single point entirely and has many distributed points.  For the business owner, this means, she has many clients that pay her $2500 per month, so if one decides not to pay her any particular month, her business keeps going.&lt;/p&gt;

&lt;h2&gt;
  
  
  A decentralized network
&lt;/h2&gt;

&lt;p&gt;The second solution is the optimal solution. Since no matter what happen to any single client, the business keep running smoothly. The business is never going to depend or rely on any single client.&lt;/p&gt;

&lt;p&gt;This is the idea of the Bitcoin blockchain - a decentralized and trustless network where transaction data are stored and distributed across multiple nodes(servers). If a single node fails, the network does not go down and original data won't be lost.&lt;/p&gt;

&lt;p&gt;Become a Web3/Blockchain Engineer in &lt;a href="https://school.forward.africa"&gt;this&lt;/a&gt; 8-week program.&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>bitcoin</category>
      <category>computerscience</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to declare an array in Solidity</title>
      <dc:creator>Jeremy Ikwuje</dc:creator>
      <pubDate>Sat, 19 Nov 2022 00:47:55 +0000</pubDate>
      <link>https://dev.to/monierate/how-declare-an-array-in-solidity-1ppg</link>
      <guid>https://dev.to/monierate/how-declare-an-array-in-solidity-1ppg</guid>
      <description>&lt;p&gt;You can declare an array in Solidity.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;type[length] name = [ ... ];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Arrays in Solidity are fixed collections of elements with the same data type values. Each element has an index(position) within the array. An array is useful for holding fixed or unknown collections of values without having to create a different variable for each value.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let's say you have vote counts from five polling units. Instead of creating five variables to hold each of these votes count, you create a single array to hold them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;uint[5] votes = [10, 20, 8, 88, 14];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An array starts with the &lt;strong&gt;type&lt;/strong&gt;, &lt;strong&gt;length&lt;/strong&gt;, identifier, and values.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt; is the data type of the array. In the above example, we specify this array should contain only unsigned integers. Solidity support multiple &lt;a href="https://www.geeksforgeeks.org/solidity-types/?ref=lbp" rel="noopener noreferrer"&gt;types&lt;/a&gt; e.g string.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Length&lt;/strong&gt; of the array specifies the total values that the array can hold. Our example we set the array to hold only five values. If your array may contain unknown or infinite values, then you can just leave the length empty &lt;code&gt;uint[]&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Identifier&lt;/strong&gt; is the name of the array. Just give it any name that makes sense.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Values&lt;/strong&gt; are the values in the array.&lt;/p&gt;

&lt;p&gt;Hope that helps!&lt;/p&gt;

&lt;p&gt;Recommended: &lt;a href="https://dev.to/forwardschool/how-to-get-array-length-in-solidity-335a"&gt;How to get the length of an array in Solidity&lt;/a&gt;&lt;/p&gt;

</description>
      <category>api</category>
    </item>
    <item>
      <title>How to get array length in Solidity</title>
      <dc:creator>Jeremy Ikwuje</dc:creator>
      <pubDate>Sat, 19 Nov 2022 00:11:30 +0000</pubDate>
      <link>https://dev.to/monierate/how-to-get-array-length-in-solidity-335a</link>
      <guid>https://dev.to/monierate/how-to-get-array-length-in-solidity-335a</guid>
      <description>&lt;p&gt;Solidity has a special array property called &lt;code&gt;.length&lt;/code&gt; that returns the Length of an Array.&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;The length of an Array is the total number of indexes, positions, or values in that array.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let's say you have an array called &lt;code&gt;values&lt;/code&gt; containing integers as below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;int[] values = [15, 10, 14, 45]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To get the length of &lt;code&gt;values&lt;/code&gt;, you can write:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;The variable &lt;code&gt;len&lt;/code&gt; is now the length of &lt;code&gt;values&lt;/code&gt; in this case 4 (an unsigned integer). &lt;/p&gt;

&lt;p&gt;Hope that helps.&lt;/p&gt;

</description>
      <category>api</category>
    </item>
    <item>
      <title>Fix: ethers.getContract is not a function Hardhat Solidity</title>
      <dc:creator>Jeremy Ikwuje</dc:creator>
      <pubDate>Thu, 17 Nov 2022 13:30:45 +0000</pubDate>
      <link>https://dev.to/monierate/fix-ethersgetcontract-is-not-a-function-hardhat-solidity-243b</link>
      <guid>https://dev.to/monierate/fix-ethersgetcontract-is-not-a-function-hardhat-solidity-243b</guid>
      <description>&lt;p&gt;When you are trying to run a Solidity contract with &lt;code&gt;hardhat run scripts/deploy.js&lt;/code&gt; you may experience getting the error &lt;strong&gt;"ethers.getContract is not a function"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;To fix the error &lt;strong&gt;"ethers.getContract is not a function&lt;/strong&gt;, ensure you install the package by running &lt;code&gt;yarn add --dev hardhat @nomiclabs/hardhat-ethers@npm:hardhat-deploy-ethers ethers&lt;/code&gt; on your project terminal.&lt;/p&gt;

&lt;p&gt;Open your terminal and run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add --dev hardhat @nomiclabs/hardhat-ethers@npm:hardhat-deploy-ethers ethers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;If the &lt;strong&gt;"ethers.getContract is not a function"&lt;/strong&gt; error is not resolved, or a new error emerges, try updating your &lt;code&gt;scripts/deploy.js&lt;/code&gt; to the latest codes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Assuming I have the following &lt;code&gt;MyName.sol&lt;/code&gt; contract:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract MyName {
    function name() public pure returns(string memory) {
        return "Jeremy Ikwuje";
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;My deploy scripts will look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight solidity"&gt;&lt;code&gt;&lt;span class="n"&gt;const&lt;/span&gt; &lt;span class="n"&gt;hre&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"hardhat"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="n"&gt;async&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;const&lt;/span&gt; &lt;span class="n"&gt;MyName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;await&lt;/span&gt; &lt;span class="n"&gt;hre&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ethers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getContractFactory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"MyName"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;const&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;await&lt;/span&gt; &lt;span class="n"&gt;MyName&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deploy&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="n"&gt;await&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deployed&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="n"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;await&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// We recommend this pattern to be able to use async/await everywhere
// and properly handle errors.
&lt;/span&gt;&lt;span class="n"&gt;main&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="n"&gt;error&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="n"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exitCode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&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;Saving this script as &lt;code&gt;scripts/deploy-name.js&lt;/code&gt;, I will then go ahead and run the command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; npx hardhat run scripts/deploy-name.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That should work!&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;When trying to run a Solidity contract with &lt;code&gt;hardhat run scripts/deploy.js&lt;/code&gt; you may experience getting the error &lt;strong&gt;"ethers.getContract is not a function"&lt;/strong&gt;. To fix the error, ensure you install the package by running &lt;code&gt;yarn add --dev hardhat @nomiclabs/hardhat-ethers@npm:hardhat-deploy-ethers ethers&lt;/code&gt; on your project terminal. If a new error emerges, try updating your &lt;code&gt;scripts/deploy.js&lt;/code&gt; to the latest codes on the documentation.&lt;/p&gt;

</description>
      <category>web3</category>
      <category>testing</category>
      <category>solidity</category>
    </item>
    <item>
      <title>Fix: Cannot find module '@nomicfoundation/hardhat-toolbox' Solidity</title>
      <dc:creator>Jeremy Ikwuje</dc:creator>
      <pubDate>Thu, 17 Nov 2022 11:34:48 +0000</pubDate>
      <link>https://dev.to/monierate/fix-cannot-find-module-nomicfoundationhardhat-toolbox-solidity-1mf6</link>
      <guid>https://dev.to/monierate/fix-cannot-find-module-nomicfoundationhardhat-toolbox-solidity-1mf6</guid>
      <description>&lt;p&gt;When you are trying to compile a Solidity contract with &lt;code&gt;npx hardhat compile&lt;/code&gt; you may experience getting the error &lt;strong&gt;Cannot find module '@nomicfoundation/hardhat-toolbox'&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;To fix the error &lt;strong&gt;"Cannot find module '@nomicfoundation/hardhat-toolbox'"&lt;/strong&gt;, ensure you install the package by running &lt;code&gt;npm install --save-dev @nomicfoundation/hardhat-toolbox&lt;/code&gt; on your project terminal. If an error persist (probably due to dependencies) then install all packages required by the plugin. You can also use &lt;strong&gt;yarn&lt;/strong&gt; to install it.&lt;/p&gt;

&lt;p&gt;Open your terminal and install &lt;strong&gt;Hardhat Toolbox&lt;/strong&gt; by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save-dev @nomicfoundation/hardhat-toolbox
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;If the &lt;strong&gt;"Cannot find module '@nomicfoundation/hardhat-toolbox"&lt;/strong&gt; error is not resolved, try installing all dependencies.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Run the following command to install all dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save-dev @nomicfoundation/hardhat-toolbox @nomicfoundation/hardhat-network-helpers @nomicfoundation/hardhat-chai-matchers @nomiclabs/hardhat-ethers @nomiclabs/hardhat-etherscan chai ethers hardhat-gas-reporter solidity-coverage @typechain/hardhat typechain @typechain/ethers-v5 @ethersproject/abi @ethersproject/providers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you prefer to use &lt;strong&gt;yarn&lt;/strong&gt;, the following command will also install all dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add --dev @nomicfoundation/hardhat-toolbox @nomicfoundation/hardhat-network-helpers @nomicfoundation/hardhat-chai-matchers @nomiclabs/hardhat-ethers @nomiclabs/hardhat-etherscan chai ethers hardhat-gas-reporter solidity-coverage @typechain/hardhat typechain @typechain/ethers-v5 @ethersproject/abi @ethersproject/providers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can then go ahead compiling your Solidity smart contract.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;As explained above, to fix the error &lt;strong&gt;"Cannot find module '@nomicfoundation/hardhat-toolbox'"&lt;/strong&gt;, ensure you install the package by running &lt;code&gt;npm install --save-dev @nomicfoundation/hardhat-toolbox&lt;/code&gt; on your project terminal. If it still throws an error (probably due to dependencies) then install all packages required by the plugin. You can also use yarn to install all the dependencies.&lt;/p&gt;

</description>
      <category>testing</category>
      <category>web3</category>
      <category>hardhat</category>
      <category>solidity</category>
    </item>
    <item>
      <title>yarn: command not found on Windows 10</title>
      <dc:creator>Jeremy Ikwuje</dc:creator>
      <pubDate>Thu, 17 Nov 2022 09:12:33 +0000</pubDate>
      <link>https://dev.to/monierate/yarn-command-not-found-on-windows-10-36pe</link>
      <guid>https://dev.to/monierate/yarn-command-not-found-on-windows-10-36pe</guid>
      <description>&lt;p&gt;&lt;strong&gt;I recently got this error after installing yarn on my Windows 10 PC. The reason is that the yarn installation PATH wasn't added to my system environmental variables.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To solve this error, I simply added the &lt;strong&gt;yarn&lt;/strong&gt; PATH to my system environmental variables.&lt;/p&gt;

&lt;p&gt;Here is how you can solve it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Ensure yarn is installed globally
&lt;/h2&gt;

&lt;p&gt;Run the following command to installed yarn globally.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install -g yarn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will download and install &lt;strong&gt;yarn&lt;/strong&gt; globally (remember you will need to have Node.js installed).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Confirm the installation.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;If the command above returns the &lt;strong&gt;yarn&lt;/strong&gt; version, then you are good to go. No need to proceed to the next step.&lt;/p&gt;

&lt;p&gt;However, if you get the error &lt;strong&gt;"yarn: command not found"&lt;/strong&gt;, you will need to add the correct PATH to your system environmental variables.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Add yarn to your path
&lt;/h2&gt;

&lt;p&gt;Open your terminal and run the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm config get prefix
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command output the path where &lt;strong&gt;npm&lt;/strong&gt; puts your globally installed packages. The path will look something like &lt;code&gt;C:\Users\Your_User_Name\AppData\Roaming\npm&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Copy this path from your terminal and add it to your system environment variables.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After adding the path to your system environments, you will have to restart the terminal for the changes to take effect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Run the following command to confirm yarn is working fine.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;To solve the error &lt;strong&gt;"yarn: command not found"&lt;/strong&gt; on windows 10, install the &lt;strong&gt;yarn&lt;/strong&gt; package globally by running &lt;code&gt;npm install -g yarn&lt;/code&gt; and restarting your terminal. Confirm the command &lt;code&gt;yarn -v&lt;/code&gt;. If the command fails, make sure the correct PATH is set in your system's environment variable.&lt;/p&gt;

</description>
      <category>yarn</category>
      <category>git</category>
      <category>testing</category>
    </item>
    <item>
      <title>How to Explain Web3 to your Grandmother</title>
      <dc:creator>Jeremy Ikwuje</dc:creator>
      <pubDate>Mon, 07 Nov 2022 10:44:04 +0000</pubDate>
      <link>https://dev.to/ijsucceed/i-work-in-web3-and-here-is-how-i-explain-it-to-my-mum-11op</link>
      <guid>https://dev.to/ijsucceed/i-work-in-web3-and-here-is-how-i-explain-it-to-my-mum-11op</guid>
      <description>&lt;p&gt;If you are entirely new to crypto or if you work in crypto and need a way to explain to your friends and family what exactly it is that you do, you have come to the right place. This article was inspired by Andres Galente who works at Hiro on how he &lt;a href="https://www.hiro.so/blog/crypto-stx-and-hiro-how-i-explain-them-to-my-grandmother"&gt;explained&lt;/a&gt; what he does for a living to his 93-year-old grandmother.&lt;/p&gt;

&lt;p&gt;I’m a Founder at Forward School. Forward School is a company that helps anyone start a career in Web3, and Web3 is a vision for a user-owned internet using blockchain. But I’m getting ahead of myself.&lt;/p&gt;

&lt;p&gt;Before talking about &lt;a href="https://school.forward.africa/"&gt;Forward School&lt;/a&gt;, we have to cover a few things first:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What a blockchain is&lt;/li&gt;
&lt;li&gt;What a blockchain application is&lt;/li&gt;
&lt;li&gt;What Web3 is&lt;/li&gt;
&lt;li&gt;What role Forward School plays in this story&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let’s start from the beginning.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Double Spend Problem
&lt;/h2&gt;

&lt;p&gt;Hassan, Dayo, Chidi, and John started a savings club. The group trusted John to manage the money, so each time they make a deposit or withdrawal, John informed everyone about the transaction. And also, every month, he sends everyone a receipt of their balances for transparency. Later on, John withdraw some of his savings but didn’t notify anyone about it and also his balance remain the same in the monthly receipts he sent out. John just double spend. John can continue withdrawing from his savings without updating his balance as long as there are enough deposits to handle withdrawals from members.&lt;/p&gt;

&lt;p&gt;But let’s say I have 10 dollars in cash. I give you 5 dollars, leaving me with a balance of 5 dollars. I can’t physically spend my 10 dollars again because my balance is just 5 dollars. No double-spending.&lt;/p&gt;

&lt;p&gt;John could do that in the group savings because he alone has access to everyone’s money and determines the receipt of transactions and the balance every member receives.&lt;/p&gt;

&lt;p&gt;In computer science, this problem is called “double-spending,” which describes the potential of a single digital money to be spent more than once. Digital money consists of a digital file that can be duplicated. Maybe I just copy/pasted that 5 dollars and sent you a duplicate, leaving me with that same dollar in my wallet too (allowing me to double spend it). An internet version of what John did is to display the balances and transactions of everyone on a portal but only he updates these balances and controls what transactions get displayed.&lt;/p&gt;

&lt;p&gt;To get around that issue, we trusted a better central entity (like a bank or PayPal) to verify transactions and dictate the balance of any given account instead of John. But there’s still a problem, we have to hope that the central entity database doesn’t get compromised and they are honest.&lt;/p&gt;

&lt;p&gt;A revolutionary solution is when the public could verify transactions of digital money without the need for that central entity (like John, Bank, or Paypal). A trustless solution. A blockchain.&lt;/p&gt;

&lt;p&gt;The big blockchain revolution came in 2009 with the arrival of Bitcoin. Bitcoin was the first implementation of a blockchain where, for the first time, the public could verify transactions of digital cash without the need for that central entity. If I have 5 Bitcoin in my wallet, and I send you 2 of them, then we could trust technology and cryptography to update our wallet balances instead of trusting a bank.&lt;/p&gt;

&lt;p&gt;An explanation of how Bitcoin works is beyond this article’s scope, but I’ll go through the bare minimum so you can follow along with the rest of the story.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is a Blockchain?
&lt;/h2&gt;

&lt;p&gt;A blockchain is literally a chain of blocks. Think of it as blocks lined together piece by piece and each block is unique and a continuation of the previous. Now you might be wondering, what is inside these blocks? You can literally think of these blocks as storage units that stores data so we can store different kinds of things in these blocks.&lt;/p&gt;

&lt;p&gt;You may have heard of data storage in Computers, a data storage is just data held in a computer. A blockchain is an open and decentralized data storage. Data in a blockchain are stored in chains of blocks spread across multiple computers network, instead of on a single computer. Because this data storage is open and decentralized, anyone can access, read, and store information in it at any time.&lt;/p&gt;

&lt;p&gt;Each blockchain has a consensus mechanism, a way in which this distributed network agrees on what new information is written on that data storage, ensuring that the data is true and therefore trustworthy.&lt;/p&gt;

&lt;p&gt;In the group savings, we talked about earlier, using blockchain technology will mean everyone has access to the savings and can view, deposit, and withdraw from it anytime. But because each blockchain has a consensus mechanism, everyone in the group agrees on a set of rules to protect their finances. Everyone has to verify any transaction. If John withdraws from his savings before he gets the money, everyone has to digitally sign it and his balance will be updated and everyone gets a copy of all balances. This way no one can be able to double spend without involving everyone.&lt;/p&gt;

&lt;p&gt;Bitcoin as a blockchain has a consensus mechanism called Proof of Work (PoW).&lt;/p&gt;

&lt;p&gt;In a PoW network, the people verifying transactions (the new information is written to the data storage) are called miners. These miners compete with each other by expending effort to solve an arbitrary mathematical puzzle. Since solving this puzzle is very hard, miners invest in fast computers and electricity, and as a reward for their actions, the network pays them Bitcoins.&lt;/p&gt;

&lt;p&gt;So, a Bitcoin is a reward that the network gives to miners to thank them for verifying transactions. These transactions are verified in batches or blocks. These blocks are mined periodically and strung together as if they were a chain. Hence: blockchain!&lt;/p&gt;

&lt;p&gt;This isn’t easy to grasp, and it’s ok if you don’t get it. At this point, you just need to understand that blockchain technology allows doing trustless and decentralized transactions. We trust technology and a network of miners instead of a single entity like a bank, Paypal guys, or John.&lt;/p&gt;

&lt;p&gt;If you want to learn more about blockchains, I highly recommend this &lt;a href="https://www.youtube.com/watch?v=Vw3OdmQ1OLY&amp;amp;t=287s"&gt;video&lt;/a&gt;that explains how blockchain works in 9 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Web3?
&lt;/h2&gt;

&lt;p&gt;Bitcoin as a blockchain is, by design, very limited. Bitcoin is a ledger, and you can only read transactions between accounts in the Bitcoin data storage. For example, Account A sent this amount to Account B, Account B sent this amount to Account C, and so on.&lt;/p&gt;

&lt;p&gt;In 2009, a Russian-born Canadian developer by the name of Vitalik Buterin was deeply involved in the Bitcoin community and thinking about ways to expand the functionalities of Bitcoin. How could Bitcoin be more than just a store of value? Since Bitcoin is limited by design to just be a ledger, he couldn’t. So he created a new blockchain called Ethereum, which introduced the concept of smart contracts for the first time.&lt;/p&gt;

&lt;p&gt;A smart contract is a computer program that runs on a blockchain. Just the way we have apps that run on Android or Windows, a smart contract is literally an app that runs on a blockchain. This ability makes a blockchain programmable, and it opened the doors to what we call today “Web3.”&lt;/p&gt;

&lt;p&gt;Web3, also known as a user-owned internet, is an internet where users own all of their information. Today it manifests in two forms: DeFi, or decentralized finance, and Dapps, or decentralized applications.&lt;/p&gt;

&lt;p&gt;DeFi aims to remove third parties and centralized institutions from financial transactions where we can replicate any financial instrument that exists “in real life” in the blockchain. Think about stablecoins, lending platforms, swappers exchanges, yield farming, etc.&lt;/p&gt;

&lt;p&gt;Dapps are applications built on a decentralized network that combines a smart contract and a front-end user interface. Similar to a regular Web2 application, but with a dapp, the data and user information belongs to the user, not to the app.&lt;/p&gt;

&lt;p&gt;That’s the vision of Web3: we can create a user-owned internet where the financial information and data of users belong to those individual users.&lt;/p&gt;

&lt;p&gt;Now that we covered, at a very high level, what blockchain and Web3 are, let’s talk specifically about how Forward School plays a role.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Forward School?
&lt;/h2&gt;

&lt;p&gt;Forward School, the company I founded and work at, is an educational company that trains anyone to create Web3 and blockchain applications.&lt;/p&gt;

&lt;p&gt;Think about it this way: if the vision of Web3 is a user-owned internet, where users have ownership of their data, both financial and personal, then Forward School’s mission is to create the best educational programs and content to allow anyone to learn to create this user-owned internet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sound Interesting?
&lt;/h2&gt;

&lt;p&gt;If you’re interested in blockchain, crypto, and web3 and you like to build a user-owned internet, apply for a &lt;a href="https://school.forward.africa/"&gt;NodeDegree program&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>web3</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>career</category>
    </item>
    <item>
      <title>Integrating Paystack with PHP</title>
      <dc:creator>Jeremy Ikwuje</dc:creator>
      <pubDate>Fri, 23 Sep 2022 19:54:18 +0000</pubDate>
      <link>https://dev.to/ijsucceed/integrating-paystack-with-php-453f</link>
      <guid>https://dev.to/ijsucceed/integrating-paystack-with-php-453f</guid>
      <description>&lt;p&gt;In this guide, you'll learn how to integrate Paystack payment system on your website.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Highlight&lt;/strong&gt;: I built a better alternative to AbokiFX, you can check it out &lt;a href="https://monierate.com" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This guide is a new and updated version of the previous &lt;a href="https://dev.to/ijsucceed/how-to-integrate-paystack-payment-system-with-php-5a8m"&gt;post&lt;/a&gt; which has been read more than 25,000 times. There is now a &lt;a href="https://replit.com/@ijsucceed/paystack-integeration-php?v=1" rel="noopener noreferrer"&gt;code repl&lt;/a&gt; where you can see all code samples for you to fork and play with.&lt;/p&gt;

&lt;p&gt;Paystack is a Modern online and offline payments for Africa.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Before you can start integrating Paystack, you will need a &lt;a href="https://dashboard.paystack.co/#/signup" rel="noopener noreferrer"&gt;Paystack account&lt;/a&gt;. Create a &lt;a href="https://dashboard.paystack.co/#/signup" rel="noopener noreferrer"&gt;free account&lt;/a&gt; now if you haven't already done so.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://paystack.com/docs/payments" rel="noopener noreferrer"&gt;Paystack API&lt;/a&gt; gives you access to pretty much all the features you can use on your account dashboard and lets you extend them for use in your application. It strives to be RESTful and is organized around the main resources you would be interacting with - with a few notable exceptions.&lt;/p&gt;

&lt;p&gt;After creating an account, the next thing is to sign in to your new Paystack account. On your dashboard, you will find your &lt;strong&gt;&lt;em&gt;public&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;secret&lt;/em&gt;&lt;/strong&gt; key. We'll make use of the &lt;strong&gt;&lt;em&gt;public&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;secret&lt;/em&gt;&lt;/strong&gt; key for this guide.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let Dive In
&lt;/h2&gt;

&lt;p&gt;Paystack has two major steps to successfully integrate their API and collect payments on your website: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Initialize a Transaction&lt;/li&gt;
&lt;li&gt;Verify a Transaction&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Successfuly implementing both steps is all you need to move money from your customer to your Paystack account (an eventually to your bank account).&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a id="initialize"&gt;&lt;/a&gt; Step 1: Initialize a transaction
&lt;/h2&gt;

&lt;p&gt;Each time your users needs to pay, you'll need to first initialize a transaction. To do this, you either use the Paystack Popup or Paystack Redirect.&lt;/p&gt;

&lt;p&gt;Let's initialize a payment with Paystack Popup. Paystack Popup provides a simple and convinient payment flow by displaying a Checkout right on your website; your user make payment without leaving your website - no redirects.&lt;/p&gt;

&lt;p&gt;Now, the code below displays a Paystack pay button:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://js.paystack.co/v1/inline.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt; &lt;span class="na"&gt;onclick=&lt;/span&gt;&lt;span class="s"&gt;"payWithPaystack()"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; Pay &lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt; 


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

&lt;/div&gt;

&lt;p&gt;The pay button is yet to do what you expect. So if you click on it, nothing will happen. For it to work you need to add the &lt;code&gt;payWithPaystack()&lt;/code&gt; Javascript function below the button.&lt;/p&gt;

&lt;p&gt;Here is the &lt;code&gt;payWithPaystack()&lt;/code&gt; function provided by Paystack:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;payWithPaystack&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;handler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;PaystackPop&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;paste your key here&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;customer@email.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;1000000000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="c1"&gt;// generates a pseudo-unique reference. Please replace with a reference you generated. Or remove the line entirely so our API will generate one for you&lt;/span&gt;
      &lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="na"&gt;custom_fields&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="na"&gt;display_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Mobile Number&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="na"&gt;variable_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mobile_number&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;+2348012345678&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="na"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
          &lt;span class="nf"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;success. transaction ref is &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reference&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;onClose&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
          &lt;span class="nf"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;window closed&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="nx"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;openIframe&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;

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

&lt;/div&gt;

&lt;p&gt;You need to replace the &lt;strong&gt;key: value 'paste your key here'&lt;/strong&gt; with the &lt;strong&gt;&lt;em&gt;public key&lt;/em&gt;&lt;/strong&gt; on your &lt;a href="https://dashboard.paystack.com/#/settings/developer" rel="noopener noreferrer"&gt;Paystack account settings&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Please note that the key to use with Paystack Popup is the &lt;strong&gt;&lt;em&gt;public key&lt;/em&gt;&lt;/strong&gt; and not the &lt;strong&gt;secret key&lt;/strong&gt;. You will need the &lt;strong&gt;&lt;em&gt;secret key&lt;/em&gt;&lt;/strong&gt; for verification in step 2.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you did it correctly and preview your code, on the click of the pay button, a nice looking Paystack Checkout will pop out.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs----xMo72e--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fijsucceed.com%2Fuploads%2Fpaystack_ui.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs----xMo72e--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fijsucceed.com%2Fuploads%2Fpaystack_ui.png" alt="Paystack Checkout"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since you're testing the payment API, you should use a test card. For test cards to work, you use a &lt;strong&gt;&lt;em&gt;test public key&lt;/em&gt;&lt;/strong&gt; instead. And don't forget to replace the test public key with the &lt;strong&gt;&lt;em&gt;live public key&lt;/em&gt;&lt;/strong&gt; on a live website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--YREm20aX--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fijsucceed.com%2Fuploads%2Fpaystack_integration_ui_testcard.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--YREm20aX--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fijsucceed.com%2Fuploads%2Fpaystack_integration_ui_testcard.png" alt="Paystack Test Card in Checkout"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the payment is successful, your browser will show an alert, indicating a successful transaction, with a reference key.&lt;/p&gt;

&lt;p&gt;This leads us to the next step.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a id="verify"&gt;&lt;/a&gt; Step 2: Verifying a transaction
&lt;/h2&gt;

&lt;p&gt;Unless you are not giving any sort of value to a customer, you will have to verify that the transaction is from a real user and not a fraud (or duplicates) before giving value.&lt;/p&gt;

&lt;p&gt;In the &lt;code&gt;payWithPaystack()&lt;/code&gt; function notice the &lt;code&gt;callback&lt;/code&gt; and &lt;code&gt;onClose&lt;/code&gt; object key. The &lt;code&gt;callback&lt;/code&gt; is where you control the user experience if the payment is successful e.g Crediting their balance, redirecting to a success page, etc.&lt;/p&gt;

&lt;p&gt;The right thing do within the &lt;code&gt;callback&lt;/code&gt; method is verify the transaction to confirm the &lt;em&gt;status&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;To do this, you have to set up a route or page on your server that you pass the transaction reference to. Then from your server, you call the Paystack verify endpoint to confirm the status of the transaction, and then return the response to your frontend.&lt;/p&gt;

&lt;p&gt;There are 2 ways you can handle the verification from the callback function:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Make an AJAX request
&lt;/h3&gt;

&lt;p&gt;This way you make an Ajax request in the &lt;code&gt;callback&lt;/code&gt; to the endpoint on your backend that handles the transaction verification:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;success. ref is &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reference&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;reference&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reference&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ijsucceed.replit.com/paystack-integeration/verify-response.php&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="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
        &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&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;res&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Request complete! response:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nf"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Payment complete!&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The above sends a POST request with &lt;code&gt;reference&lt;/code&gt; in JSON to a verification endpoint. &lt;/p&gt;

&lt;p&gt;We get the &lt;code&gt;reference&lt;/code&gt; and make a call to the Paystack Verify Transaction Endpoint to get the status of the transaction. A response is then returned to the frontend: if successful, an alert is fired notifying the user the payment is complete.&lt;/p&gt;

&lt;p&gt;You can see the backend verification code for the ajax call on the &lt;a href="https://replit.com/@ijsucceed/paystack-integeration-php?v=1#verify-redirect.php" rel="noopener noreferrer"&gt;code repl&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  2. Redirect to a server page
&lt;/h3&gt;

&lt;p&gt;This way you redirect the user by setting a &lt;code&gt;window.location&lt;/code&gt; in the &lt;code&gt;callback&lt;/code&gt; to the URL where you verify the transaction from Paystack and probably display a success message if the transaction was successful.&lt;/p&gt;

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

callback: function(response) {
  window.location = "https://ijsucceed.replit.com/paystack-integeration-php/verify-redirect.php?reference=" + response.reference;
},


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

&lt;/div&gt;

&lt;p&gt;You can see the verification code for the redirects on the &lt;a href="https://replit.com/@ijsucceed/paystack-integeration-php?v=1#verify-redirect.php" rel="noopener noreferrer"&gt;code repl&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Using any of the two ways to verify a transaction depends on how your website is structure or how you want to handle the user experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Handling Webhook
&lt;/h2&gt;

&lt;p&gt;Something may happen during the verification process and your user may not get value (like their balance not updating). This may be their device shutting down or internet failing to connect. Handling Webhook ensure you are still able to provide value to your user irrespective of what happen on the user end.&lt;/p&gt;

&lt;p&gt;In some APIs, to manage issues like this, you have to setup a polling system that keeps making request to the Resource server to see if the transaction was successful or not. But polling system has scaling issues and require extra development. &lt;/p&gt;

&lt;p&gt;However, you can fully rely on Paystack Webhook. Just after a transaction is made Paystack sends updates to your server when the status of your request changes. You'll only have to listen to these updates on your backend.&lt;/p&gt;

&lt;p&gt;To do this you have create a POST route or page on your backend that recieve the event payload, verify the event is from Paystack, and verify the transaction.&lt;/p&gt;

&lt;p&gt;You can find a webhook code on the &lt;a href="https://replit.com/@ijsucceed/paystack-integeration-php?v=1#webhook.php" rel="noopener noreferrer"&gt;project repls&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Finally, you'll then need to add your Webhook URL on your &lt;a href="https://dashboard.paystack.com/#/settings/developer" rel="noopener noreferrer"&gt;Paystack dashboard&lt;/a&gt;. If you are using &lt;code&gt;.htaccess&lt;/code&gt; on your server, kindly remember to add the trailing &lt;code&gt;/&lt;/code&gt; to the URL.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hints
&lt;/h2&gt;

&lt;p&gt;Go to dashboard &amp;gt; settings &amp;gt; webhook/keys to get your public and secret key for both the live and test.&lt;/p&gt;

&lt;p&gt;The live keys are used for production purpose. While the public is for testing purpose.&lt;/p&gt;

&lt;p&gt;To enable live mode on paystack, you'll need activate your Paystack account by submiting your business details.&lt;/p&gt;

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

&lt;p&gt;If you follow the steps, then Congratulation, you just integrated paystack into your website.&lt;/p&gt;

&lt;p&gt;Paystack is great payment system with rich set of APIs. I have been integrating Paystack in multiple projects since 2018. In 2020, total combined known value my clients and previous company processed with Paystack is &amp;gt; $2M. &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>api</category>
      <category>php</category>
      <category>paystack</category>
    </item>
    <item>
      <title>3 Reasons PHP Future "Dead"</title>
      <dc:creator>Jeremy Ikwuje</dc:creator>
      <pubDate>Tue, 13 Sep 2022 13:35:39 +0000</pubDate>
      <link>https://dev.to/ijsucceed/3-reasons-php-future-dead-4a6b</link>
      <guid>https://dev.to/ijsucceed/3-reasons-php-future-dead-4a6b</guid>
      <description>&lt;p&gt;This article was originally published on &lt;a href="https://jeremyikwuje.hashnode.dev/3-reasons-php-is-future-dead"&gt;Hashnode&lt;/a&gt; for the &lt;a href="https://townhall.hashnode.com/4-articles-in-4-weeks-hashnode-writeathon?source=hashnode_countdown"&gt;4 Articles in 4 Weeks - Hashnode Writeathon&lt;/a&gt;.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
      &lt;div class="c-embed__cover"&gt;
        &lt;a href="https://jeremyikwuje.hashnode.dev/3-reasons-php-is-future-dead" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;
          &lt;img alt="" src="https://res.cloudinary.com/practicaldev/image/fetch/s--UEHMr3M8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://hashnode.com/utility/r%3Furl%3Dhttps%253A%252F%252Fcdn.hashnode.com%252Fres%252Fhashnode%252Fimage%252Funsplash%252F2Rd-hwT2xQ0%252Fupload%252Fv1662994703116%252FvnPkjMqGsf.jpeg%253Fw%253D1200%2526h%253D630%2526fit%253Dcrop%2526crop%253Dentropy%2526auto%253Dcompress%252Cformat%2526format%253Dwebp%2526fm%253Dpng" height="" class="m-0" width=""&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://jeremyikwuje.hashnode.dev/3-reasons-php-is-future-dead" rel="noopener noreferrer" class="c-link"&gt;
          3 Reasons PHP is Future "Dead"
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;p class="truncate-at-3"&gt;
          If much of PHP boasting continues to rely on the legacy platforms and not on wider use cases outside the web server (FTP), plus fewer and fewer talents...
        &lt;/p&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
          &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://res.cloudinary.com/practicaldev/image/fetch/s--eOZpeFpx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1611242173172/AOX1gE2jc.png" width="32" height="32"&gt;
        jeremyikwuje.hashnode.dev
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;It is no doubt that PHP is the most &lt;a href="https://kinsta.com/php-market-share/"&gt;dominant programming language&lt;/a&gt; for building websites. In fact over a decade now PHP is powering over 60% of the entire web. PHP is a big name. Facebook, Yahoo, Wikipedia and several top websites are mostly written in PHP.&lt;/p&gt;

&lt;p&gt;However, in this article, I will explain three major issues I have with PHP. And why critics who are saying PHP is dead may be right. These reasons have nothing to do with performance, learning curve, or security.&lt;/p&gt;

&lt;p&gt;I like to mention that I have spent 6 years writing PHP; it was my first programming language. PHP was easy to learn and I built a WordPress clone within two weeks of reading a book. I love PHP, even now.  But, the coding in 2022 is vastly different from 2012.  It is hard for me to see PHP in the future or as a language that I will advise anybody to learn today.&lt;/p&gt;

&lt;p&gt;Let's get to it. &lt;/p&gt;

&lt;h3&gt;
  
  
  1. Legacy Codes
&lt;/h3&gt;

&lt;p&gt;From 2008 - 2012, it was easy to find developers building the next WordPress, Facebook, or eBay using PHP. But not in 2022; as you won't find anyone building the next WordPress in PHP.&lt;/p&gt;

&lt;p&gt;The next WordPress won't be written in PHP.&lt;/p&gt;

&lt;p&gt;So what technology are people building with? Mostly Jamstack/Web3 technologies.&lt;/p&gt;

&lt;p&gt;Much of PHP control is on legacy platforms like WordPress, and Drupal; also Laravel, many devs today are using PHP today because of Laravel.  But, the problem with PHP power depending on these legacy platforms is that these technologies can decide to transition into another language. &lt;/p&gt;

&lt;p&gt;Hard, but gradually possible as we are already seeing with WordPress.&lt;/p&gt;

&lt;p&gt;If you are very active in the WordPress Development space, it should have occurred to you (without watching this &lt;a href="https://youtu.be/baZVmW_F8C8?t=593"&gt;video&lt;/a&gt;) that WordPress may be transitioning into a Javascript platform.&lt;/p&gt;

&lt;p&gt;Larevel seems to be the only hope for PHP to maintain relevance, but that is only if it creates more use cases for PHP; *&lt;em&gt;because the &lt;a href="https://www.samymedia.com/insights/jamstack-the-future-of-web-development#:~:text=Some%20believe%20that%20the%20JAMstack,performance%2C%20scalability%2C%20and%20security."&gt;future of the web&lt;/a&gt; is Jamstack/Web3 and PHP is weak here. *&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Limited Use Case
&lt;/h3&gt;

&lt;p&gt;PHP is limited to the web. You can't use it for any other thing than building server-side apps. And the majority of these apps have CRUD functionality, nothing new or interesting.&lt;/p&gt;

&lt;p&gt;We are seeing new tech spaces like web3, machine learning, NLP, IoT and spaces where other languages are quickly adapting, but PHP is yet to have any serious development in these spaces.&lt;/p&gt;

&lt;p&gt;Remember, web 2.0 was a new development and there was a strong need to create dynamic sites and PHP was improved for this. The languages that didn't improve for web 2.0 lost relevance.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If developments for new tech spaces don't happen in PHP, then the number of PHP developers will keep declining as it has been since &lt;a href="https://jaxenter.com/pypl-index-2019-julia-python-155769.html"&gt;2016&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Decline of New Talents
&lt;/h3&gt;

&lt;p&gt;If you learned web development in 2012 (online or offline) chances are your curriculum is HTML/CSS/PHP/MYSQL. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MsbN7dn1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1662987040911/XQbJw-FsL.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MsbN7dn1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1662987040911/XQbJw-FsL.png" alt="image.png" width="259" height="194"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I recall when I decided to learn to code, nearly every coding school is teaching PHP in their main curriculum. However, according to &lt;a href="https://www.codecademy.com/resources/blog/most-popular-programming-languages-2022-stack-overflow/"&gt;Codecademy&lt;/a&gt; 2022, PHP is the 10th most popular programming language among people who are learning to code. If you are learning to code today, chances are you're learning Javascript or Python. &lt;/p&gt;

&lt;p&gt;Go to FreeCodeCamp, Codecademy, and Treehouse, and see the courses they are promoting; they are mostly none PHP courses. The numbers speak for themselves, there is a Python &lt;a href="https://www.youtube.com/watch?v=rfscVS0vtbw&amp;amp;t=607s"&gt;video&lt;/a&gt; on FreeCodeCamp Youtube with over 35 million views. Jeez, is Python an entertainment? well even paid JS/Python courses on Udemy record more students than PHP courses.&lt;/p&gt;

&lt;p&gt;Most new talents are not learning PHP today.&lt;/p&gt;

&lt;p&gt;You don't have to look far to confirm this, just browse through Hashnode and dev.to, and you will find more content on Javascript and Python. Not because there are more JS/Python developers, but because that's what new developers are reading.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A shortage of new talents is a bad thing for the future of any language.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;If much of PHP boasting continues to rely on the legacy platforms and not on wider use cases outside the web server (FTP), plus fewer and fewer talents learning PHP; then PHP can be said to be default-dead as the future may not be bright for the Elephant in the room.&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>webdev</category>
      <category>php</category>
    </item>
  </channel>
</rss>
