<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Kyle Leon Jordaan on Medium]]></title>
        <description><![CDATA[Stories by Kyle Leon Jordaan on Medium]]></description>
        <link>https://medium.com/@jordaan0?source=rss-4219353a9cc7------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*WB7jJPcrnt6TolTOXiU1KQ.jpeg</url>
            <title>Stories by Kyle Leon Jordaan on Medium</title>
            <link>https://medium.com/@jordaan0?source=rss-4219353a9cc7------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 15 May 2026 16:10:31 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@jordaan0/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[How We’re Prepping Eco Eats for Launch — SEO, Business Listings, and Local Love]]></title>
            <link>https://medium.com/@jordaan0/how-were-prepping-eco-eats-for-launch-seo-business-listings-and-local-love-304d66587c9f?source=rss-4219353a9cc7------2</link>
            <guid isPermaLink="false">https://medium.com/p/304d66587c9f</guid>
            <category><![CDATA[startup]]></category>
            <category><![CDATA[promotion]]></category>
            <category><![CDATA[advice-and-opinion]]></category>
            <category><![CDATA[seo]]></category>
            <category><![CDATA[advice]]></category>
            <dc:creator><![CDATA[Kyle Leon Jordaan]]></dc:creator>
            <pubDate>Sun, 04 May 2025 08:59:04 GMT</pubDate>
            <atom:updated>2025-05-11T04:53:19.215Z</atom:updated>
            <content:encoded><![CDATA[<h3>How We’re Prepping Eco Eats for Launch — SEO, Business Listings, and Local Love</h3><p>We’re getting really close to launching <a href="http://ecoeats.co.za">Eco Eats </a>— a surplus food marketplace that helps South Africans buy great food at a discount while reducing food waste. It’s been a whirlwind building this from scratch, and I wanted to share a quick behind-the-scenes look at one of the less flashy but super important parts of our launch prep: getting found.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*bdu5BoFiNbskNy3o" /><figcaption>Photo by <a href="https://unsplash.com/@hostreviews?utm_source=medium&amp;utm_medium=referral">Stephen Phillips - Hostreviews.co.uk</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h3>Learning SEO the hands-on way</h3><p>Like most small startups, we’re wearing every hat right now. I’ve been deep in the weeds of SEO — figuring out how to make sure people searching for things like:</p><ul><li>Eco Eats</li><li>Surplus food deals near me</li><li>Discount food South Africa</li><li>E-commerce food savings</li><li>Good food for less</li></ul><p>…actually find us.</p><p>It’s a learning curve. I’ve been setting up meta tags, crafting SEO titles and descriptions for our static pages, building a sitemap, writing structured content, and making sure pages like our <a href="https://ecoeats.co.za/faq">FAQ</a> and <a href="https://ecoeats.co.za/about">About</a> pages are keyword-rich but still natural. It’s made me appreciate how much invisible work goes into discoverability.</p><p>I’ve also started dabbling in Google Search Console and indexing. Still learning — still lots to tweak.</p><h3>Setting up business listings in SA</h3><p>Besides SEO, I’ve been working on our local presence. That means setting up a Google Business Profile, making sure we’re listed on Bing Places, and trying to figure out what other platforms and directories in South Africa we should be on.</p><p>I’m sure there are some hidden gems out there — local food directories, sustainability sites, forums, or SA-specific search platforms. If you know of any, I’d genuinely appreciate a tip.</p><h3>Why this matters</h3><p>At Eco Eats, we’re trying to build something that solves a real problem — good food going to waste, while many people can’t afford a decent meal. It’s a mission we care about deeply, and part of that is making sure the people who’d benefit most from it can actually find us.</p><p>So while it’s not the most glamorous part of launching a start up, the SEO and local business listing work is actually one of the most critical.</p><h3>Over to you</h3><p>If you’ve been through a launch in South Africa — or just have thoughts — I’d love to hear from you.</p><ul><li>What websites or directories should new businesses in SA be listed on?</li><li>What’s worked for you to get found locally?</li><li>Anything I might be missing?</li></ul><p>We’re learning as we go, and your input could really help us (and others reading this too). Thanks for being part of the journey 🙏</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=304d66587c9f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Fighting Food Waste in South Africa — One Local Meal at a Time]]></title>
            <link>https://medium.com/@jordaan0/fighting-food-waste-in-south-africa-one-local-meal-at-a-time-883888f4f54d?source=rss-4219353a9cc7------2</link>
            <guid isPermaLink="false">https://medium.com/p/883888f4f54d</guid>
            <category><![CDATA[food-waste]]></category>
            <category><![CDATA[startup]]></category>
            <category><![CDATA[south-africa]]></category>
            <category><![CDATA[save-money]]></category>
            <category><![CDATA[small-business]]></category>
            <dc:creator><![CDATA[Kyle Leon Jordaan]]></dc:creator>
            <pubDate>Thu, 01 May 2025 07:06:50 GMT</pubDate>
            <atom:updated>2025-05-01T07:06:50.580Z</atom:updated>
            <content:encoded><![CDATA[<h3>Fighting Food Waste in South Africa — One Local Meal at a Time</h3><p>Every year, South Africa discards an estimated <strong>10 million tonnes of food</strong> — while millions go hungry. <em>(Source: </em><a href="https://www.wwf.org.za/?21641%2FFood-Loss-and-Waste-Facts-and-Futures-Report)"><em>https://www.wwf.org.za/?21641%2FFood-Loss-and-Waste-Facts-and-Futures-Report)</em></a></p><p>We’re launching <a href="https://ecoeats.co.za"><strong>EcoEats.co.za</strong></a> to help fix this broken cycle — by connecting local restaurants with customers in a way that reduces waste, supports small businesses, and offers affordable meals for everyday South Africans.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*lAccj8Zilxu8G0cH" /><figcaption>Photo by <a href="https://unsplash.com/@artek123?utm_source=medium&amp;utm_medium=referral">Arturrro</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h3>🍲 The Problem: Food Waste Is Everywhere</h3><p>Food waste isn’t just a household issue. Across the entire supply chain — from farms and wholesalers to local restaurant kitchens — <strong>one third of all food produced is never consumed</strong>. <em>(Source: </em><a href="https://www.statssa.gov.za/?p=16831)"><em>https://www.statssa.gov.za/?p=16831)</em></a></p><ul><li><strong>70%</strong> of that waste comes from fruits, vegetables, and cereals.(<em>Source: </em><a href="https://www.greentrust.org.za/2021/09/27/ten-million-tons-of-wasted-food-can-feed-our-people/"><em>https://www.greentrust.org.za/2021/09/27/ten-million-tons-of-wasted-food-can-feed-our-people/</em></a>)</li><li><strong>44%</strong> of wasted food is fresh produce alone. <em>(Source: </em><a href="https://www.averda.com/rsa/news/south-africa-wastes-10-million-tonnes-of-food-every-year)"><em>https://www.averda.com/rsa/news/south-africa-wastes-10-million-tonnes-of-food-every-year)</em></a></li><li>Households contribute an estimated <strong>18%</strong> of waste during consumption. <em>(Source: </em><a href="https://www.wwf.org.za/our_news/our_blog/five_food_waste_facts_that_are_hard_to_swallow)"><em>https://www.wwf.org.za/our_news/our_blog/five_food_waste_facts_that_are_hard_to_swallow)</em></a></li></ul><p>Meanwhile, <strong>15% of South African households</strong> did not have sufficient food in 2021. <em>(Source: </em><a href="https://ewt.org.za/reducing-food-waste-sustainable-agriculture-hunger-solutions/)"><em>https://ewt.org.za/reducing-food-waste-sustainable-agriculture-hunger-solutions/)</em></a></p><h3>🌍 Our Mission: Make Every Meal Matter</h3><p>Eco Eats is a simple web platform that helps local restaurants <strong>sell meals directly to nearby customers</strong>, especially items that would otherwise go to waste.</p><p>We aim to:</p><ul><li>✅ <strong>Reduce food waste</strong> by giving restaurants a way to sell surplus or excess food instead of discarding it.</li><li>✅ <strong>Support small businesses</strong> by giving them visibility and tools to reach local customers online.</li><li>✅ <strong>Make food more affordable</strong>, with meals often listed at a discount — great for students, families, or anyone on a budget.</li></ul><h3>🛒 How It Works</h3><ol><li><strong>Restaurants</strong> list meals they have ready — whether surplus curry, extra pies, or end-of-day specials.</li><li><strong>Customers nearby</strong> browse and buy meals online — no hidden fees, no waste.</li><li><strong>Pickup in‐store</strong>, keeping logistics simple.</li></ol><p>No waste. No middlemen. Just fresh local food.</p><h3>🚀 Launching Soon</h3><p>We go live <strong>next week</strong> in Cape Town. If you care about <strong>sustainability</strong>, <strong>supporting local</strong> businesses, or simply want <strong>affordable, delicious meals</strong>, join us at <a href="https://ecoeats.co.za"><strong>ecoeats.co.za</strong></a>.</p><p>If you have a restaurant and want to become a merchant, contact us at <a href="mailto:ecoeatsrsa@gmail.com">ecoeatsrsa@gmail.com</a> or sign up at <a href="https://ecoeats.co.za"><strong>ecoeats.co.za</strong></a><strong> </strong>and list your bussiness today.</p><p>Every meal saved is a step toward a more sustainable, food‐secure South Africa. 🍽️✨</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=883888f4f54d" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How Firestore Powers Eco Eats — Our Mission-Driven Food Platform Launching Next Week]]></title>
            <link>https://medium.com/@jordaan0/how-firestore-powers-eco-eats-our-mission-driven-food-platform-launching-next-week-a2dfb80a4c6b?source=rss-4219353a9cc7------2</link>
            <guid isPermaLink="false">https://medium.com/p/a2dfb80a4c6b</guid>
            <category><![CDATA[startup]]></category>
            <category><![CDATA[firestore]]></category>
            <category><![CDATA[sustainable-food]]></category>
            <category><![CDATA[firebase]]></category>
            <category><![CDATA[local-business]]></category>
            <dc:creator><![CDATA[Kyle Leon Jordaan]]></dc:creator>
            <pubDate>Thu, 01 May 2025 06:34:27 GMT</pubDate>
            <atom:updated>2025-05-01T06:38:12.714Z</atom:updated>
            <content:encoded><![CDATA[<h3>How Firestore Powers Eco Eats — Our Mission-Driven Food Platform Launching Next Week</h3><p>Over the past 6 months, my cofounders and I have been building a platform called <a href="https://ecoeats.co.za/"><strong>Eco Eats</strong></a> — a website where local restaurants can list meals for sale, and customers can browse, reserve, and collect them nearby. Think of it as a smarter way to support local food spots, reduce waste, and enjoy fresh meals affordably.</p><p>We’re officially launching <strong>next week</strong>, and I wanted to share a quick behind-the-scenes look at how we built Eco Eats using <strong>Firestore</strong>, Firebase’s real-time database.</p><h3>Why We Chose Firestore</h3><p>When building Eco Eats, we needed a backend that was:</p><ul><li>Scalable without much infrastructure</li><li>Real-time (for things like cart updates and stock changes)</li><li>Secure, especially since customers and restaurant owners interact with the same system</li><li>Fast to develop with a small team</li></ul><p>Firestore gave us all that out of the box. It’s been a huge accelerator.</p><h3>Real-Time Ordering and Inventory</h3><p>One of the most important features is live inventory tracking. Some meals are in limited supply — like surplus food restaurants want to sell quickly. With Firestore, when one customer adds an item to their cart, it’s instantly updated for everyone else on the site. No page reloads, no polling loops. Just fast, responsive data.</p><h3>Flexible Role-Based Access</h3><p>Firestore also works tightly with Firebase Auth. That lets us give restaurant owners different permissions from customers — all enforced through Firestore’s security rules. We didn’t have to spin up a custom backend just to handle roles, which saved weeks of work.</p><h3>We’re Going Live Next Week 🚀</h3><p>Eco Eats is launching next week, starting in Cape Town South Africa. If you’re looking for a more sustainable way to eat while supporting local restaurants, visit us at <a href="https://ecoeats.co.za/">https://ecoeats.co.za</a>. We’d love to have you try it out.</p><p>Thanks for reading — and if you’re curious about Firebase, Firestore, or building fast with a lean stack, drop a comment or reach out!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a2dfb80a4c6b" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Setting Up Your Own Self-Hosted Torrent Search Engine]]></title>
            <link>https://faun.pub/setting-up-your-own-self-hosted-torrent-search-engine-303ff670b7f3?source=rss-4219353a9cc7------2</link>
            <guid isPermaLink="false">https://medium.com/p/303ff670b7f3</guid>
            <category><![CDATA[self-hosting]]></category>
            <category><![CDATA[docker]]></category>
            <category><![CDATA[bitmagnet]]></category>
            <category><![CDATA[docker-compose]]></category>
            <category><![CDATA[bittorrent]]></category>
            <dc:creator><![CDATA[Kyle Leon Jordaan]]></dc:creator>
            <pubDate>Mon, 18 Mar 2024 16:29:14 GMT</pubDate>
            <atom:updated>2024-03-18T16:29:14.846Z</atom:updated>
            <content:encoded><![CDATA[<p>Ever found yourself frustrated by the limitations or blocks on popular torrent search engines like The Pirate Bay? Ever wished for your own local, unblockable copy? Enter <a href="https://bitmagnet.io/">bitmagnet.io </a>— your solution to personalized torrent searches that can’t be taken down.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*TgZF5UIXs5aXfVAx.png" /></figure><p>The BitTorrent protocol revolutionized file-sharing by allowing users to distribute large data files over the internet efficiently. Developed by Bram Cohen in 2001, it facilitates peer-to-peer (P2P) sharing of files like software, movies, and music on a global scale.</p><p>BitTorrent’s Distributed Hash Table (DHT) protocol extends its capabilities by enabling decentralized peer discovery. This means peers can connect directly without relying on a central tracker, making it resilient to blocks or outages. Moreover, DHT can store and retrieve key-value pairs, facilitating decentralized storage systems.</p><p>Enter <a href="https://bitmagnet.io/">BitMagnet-io</a>. It harnesses the power of BitTorrent’s DHT by crawling and indexing every document it discovers. This indexed database is accessible through a user-friendly web interface, allowing users to search for files effortlessly. Additionally, BitMagnet-io offers file categorization, enabling users to easily find specific formats, and enhances the experience by providing additional metadata, such as movie details from <a href="https://www.themoviedb.org/?language=en-GB">the movie database</a>.</p><h4>Requirements</h4><ul><li>Docker</li></ul><p>That&#39;s right, the only tool we will use is docker, as Bitmagnet provides a very nice <a href="https://bitmagnet.io/setup/installation.html#docker">docker-compose</a> script that sets up everything that you need.</p><h4>Step 1</h4><p>All that you need to do is create a file docker-compose.yml with contents.</p><pre>services:<br>  bitmagnet:<br>    image: ghcr.io/bitmagnet-io/bitmagnet:latest<br>    container_name: bitmagnet<br>    ports:<br>      # API and WebUI port:<br>      - &quot;3333:3333&quot;<br>      # BitTorrent ports:<br>      - &quot;3334:3334/tcp&quot;<br>      - &quot;3334:3334/udp&quot;<br>    restart: unless-stopped<br>    environment:<br>      - POSTGRES_HOST=postgres<br>      - POSTGRES_PASSWORD=postgres<br>    #      - TMDB_API_KEY=your_api_key<br>    command:<br>      - worker<br>      - run<br>      - --keys=http_server<br>      - --keys=queue_server<br>      # disable the next line to run without DHT crawler<br>      - --keys=dht_crawler<br>    depends_on:<br>      postgres:<br>        condition: service_healthy<br><br>  postgres:<br>    image: postgres:16-alpine<br>    container_name: bitmagnet-postgres<br>    volumes:<br>      - ./data/postgres:/var/lib/postgresql/data<br>    #    ports:<br>    #      - &quot;5432:5432&quot; Expose this port if you&#39;d like to dig around in the database<br>    restart: unless-stopped<br>    environment:<br>      - POSTGRES_PASSWORD=postgres<br>      - POSTGRES_DB=bitmagnet<br>      - PGUSER=postgres<br>    shm_size: 1g<br>    healthcheck:<br>      test:<br>        - CMD-SHELL<br>        - pg_isready<br>      start_period: 20s<br>      interval: 10s</pre><h4>Step 2</h4><p>Now we are all set, it is time to start the BitMagenet-io service and open it in a web browser.</p><p>Simply run:</p><pre>$ docker compose up -d</pre><p>This will start <a href="https://bitmagnet.io/">BitMagnet-io</a> as a service, once complete you will be able to navigate to <a href="http://HTTP://localhost:3333">localhost:3333</a> to begin searching your new self-hosted torrent search engine.</p><h4>Last Notes</h4><p>Please note that it will take a few minutes for BitMagnet-io to begin populating its database with torrents for you to search.</p><p>If you want to end the service simply run:</p><pre>$ docker compose down</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*MH9zkzmUcb8sv8aa.png" /></figure><h4>👋 If you find this helpful, please click the clap 👏 button below a few times to show your support for the author 👇</h4><h4>🚀<a href="http://from.faun.to/r/8zxxd">Join FAUN Developer Community &amp; Get Similar Stories in your Inbox Each Week</a></h4><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=303ff670b7f3" width="1" height="1" alt=""><hr><p><a href="https://faun.pub/setting-up-your-own-self-hosted-torrent-search-engine-303ff670b7f3">Setting Up Your Own Self-Hosted Torrent Search Engine</a> was originally published in <a href="https://faun.pub">FAUN.dev() 🐾</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Slas your app deployment time with backend-driven design.]]></title>
            <link>https://faun.pub/slas-your-app-deployment-time-with-backend-driven-design-b8e191d98f78?source=rss-4219353a9cc7------2</link>
            <guid isPermaLink="false">https://medium.com/p/b8e191d98f78</guid>
            <category><![CDATA[software-architecture]]></category>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[backend-development]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[software]]></category>
            <dc:creator><![CDATA[Kyle Leon Jordaan]]></dc:creator>
            <pubDate>Thu, 23 Feb 2023 09:02:23 GMT</pubDate>
            <atom:updated>2023-02-23T09:02:23.495Z</atom:updated>
            <content:encoded><![CDATA[<h3>Slash your app deployment time with backend-driven design.</h3><p>I have recently been working on an app that I have decided to use a new Software Engineering pattern, Backend-Driven Development, and you just need to know about it.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*6ijhZaPwJM53i4tA" /><figcaption>Photo by <a href="https://unsplash.com/pt-br/@abillion?utm_source=medium&amp;utm_medium=referral">abillion</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p><em>I know a lot of the time I tend to write from a very technical perspective, today I want to take a step back and simply talk about this new engineering philosophy.</em></p><h3>Some Background On The Modern App UI</h3><p>As you may know, the user interface (UI) of an app refers to the way it looks. A UI designer is concerned with the individual components which are shown to their customers at any given time.</p><p>The UI of a website is Defined in 3 languages (HTML, CSS, and JS) sure there are frameworks that make working with these languages easier, but the end product that customers interact with is only ever the 3 languages above.</p><p>These 3 languages are then interpreted by a web browser directly from the service hosting the website. This allows for deployments to be quick, with little to no approvals needed (outside of what you set for yourself).</p><p>However, on the other side of the aisle, we have mobile app developers. Here the deployment cycle is more complex. Developers deploying to the Google Play Store or the Apple App Store must undergo a review process before their change is available in their respective stores. Lastly, you will need to ensure that your customers will update their app to the latest version before they see your changes.</p><p>This means that any change to the UI of a mobile app will take anywhere between several days to several weeks before customers will see your change. This is especially bad when you consider the case of code defects. Every day that a customer experiences a problem with your app their trust in your product is eroded.</p><h3>Client-Driven Design</h3><p>Traditional app development makes use of client-driven design. A mobile app will be written in some language, and be given all of the components configured in a certain way so that the views a customer will experience are fixed. Think of a profile page, there will be a purpose-built profile page view with a fixed set of child components that will construct the various fields that a customer will be able to configure. Then it will construct an object of a fixed shape that will be sent to your backend.</p><p>This rigidity has advantages as it will ensure consistency, you will never need to worry about a missing field as if it&#39;s available once it will always be available. But what happens when you need a new field, such as if you wanted to request a customer&#39;s phone number, you will need to make the change to the client code and go through the deployment process discussed above.</p><h3>Backend-Driven Design</h3><p>Using the backend-driven design philosophy the profile page view on the client will have a set of containers and components. The client will call your backend and in the response, the backend will tell your front end which specific container to use, and the particular set of components which will need to be shown within that container, in its particular order, and for extra points, it should also tell your front end what to do with that data it collects.</p><p>In this case, if you ever wanted to add a new field such as a phone number, assuming that component is available on your client, you will simply need to add that field to the response from your backend and the new field will immediately be available to your customers.</p><h3>Advantages Of Backend-Driven Design</h3><p>The end product of a backend-driven UI and a client-driven UI is identical. So what are the advantages that Backend-Driven Design offers?</p><h4><strong>Fast updates</strong></h4><p>Backend-Driven Design ensures that your developers are able to quickly deliver changes to customers. It can reduce front-end deployment time from weeks to seconds.</p><h4>Easier testing</h4><p>Because all of the components being shown on the front end already exist and have been tested, adding them to a new page should be trivial. Essentially your end-to-end testing should consist of, does this new component behave in the way I expect? But no changes to unit tests are required.</p><h4>Simpler implementation</h4><p>If a developer is adding a component that already exists inside of the client app, the only change needed will be in the backend and will most likely consist of several orders of magnitude less code.</p><h4>Full-stack teams</h4><p>Development teams are often split into specific categories. You will have the front-end developers building the mobile app, and the back-end team, building the servers that control the content of an app. This is great and allows developers to become experts in their specific fields.</p><p>However, this does cause integration issues where the client of the backend may not expect the same request-response structures for a given feature. It also makes the end-to-end ownership of entire features difficult, as teams will only own a part of the customer experience.</p><p>Backend-Driven Design thrives in full-stack teams, where developers can both add new components to front ends, but also control those components from the backend, this makes ownership of features a much easier sell to specific teams.</p><h3>Disadvantages Of Backend-Driven Design</h3><p>Although the backend-driven design appears to be a straightforward concept. The scope of the idea expands along with the complexity of the application, and business logic, these are a few of the main disadvantages of using backend-driven rendering.</p><h4>Difficulty root-causing issues</h4><p>When you have a rigid structure for your UI views, it is very easy to find where exceptions are thrown. However, with a backend-driven design, you build a front-end framework that will vend different UI components based on the response from your server. This means that if one of the child components throws an exception, it tends to be more difficult on the front end to discern which it was.</p><h4>Longer load times</h4><p>For an app using a backend-driven design, it goes without saying that every page will require a network call. This means that pages which usually do not require a network call for content will now have increased latency.</p><h4>More expensive (maybe)</h4><p>You will need to host your server somewhere. If you already have a server, and will just be repurposing some calls this won&#39;t be a problem. But for smaller businesses expecting to exceed the free tier of their server hosting providers, backend-driven design may be a difficult sell.</p><h4>App versioning</h4><p>As we discussed earlier deploying new components on client devices can be a several-week-long process, however, server deployment can take mere seconds. This disparity causes a race condition where it is possible your backend references components which may not be available on a specific version of your app that a customer may be using. Therefore your backend will need to take into consideration the exact components available on any version of your frontend client, to prevent an impact on your customer experience.</p><h3>Conclusion</h3><p>The final question that you need to ask yourself when considering using backend-driven design depends on the functionality of your app. If you are building a dynamic application with many UI components and reuse them frequently then a backend-driven design may be perfect for you.</p><p>However, if you plan on building a mostly static app experience, then using a simpler client-side design may be the better option.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*XC6gJ9HR_xbxqqSp.png" /></figure><h4>👋 If you find this helpful, please click the clap 👏 button below a few times to show your support for the author 👇</h4><h4>🚀<a href="http://from.faun.to/r/8zxxd">Join FAUN Developer Community &amp; Get Similar Stories in your Inbox Each Week</a></h4><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b8e191d98f78" width="1" height="1" alt=""><hr><p><a href="https://faun.pub/slas-your-app-deployment-time-with-backend-driven-design-b8e191d98f78">Slas your app deployment time with backend-driven design.</a> was originally published in <a href="https://faun.pub">FAUN.dev() 🐾</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Put VSCode on your Android smartphone]]></title>
            <link>https://faun.pub/put-vscode-on-your-android-smartphone-f55484c8b162?source=rss-4219353a9cc7------2</link>
            <guid isPermaLink="false">https://medium.com/p/f55484c8b162</guid>
            <category><![CDATA[android]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[vscode]]></category>
            <category><![CDATA[linux]]></category>
            <category><![CDATA[code]]></category>
            <dc:creator><![CDATA[Kyle Leon Jordaan]]></dc:creator>
            <pubDate>Thu, 15 Dec 2022 14:15:35 GMT</pubDate>
            <atom:updated>2022-12-15T14:15:35.940Z</atom:updated>
            <content:encoded><![CDATA[<p>I recently started using termux on my android smartphone and wanted to test its limits. I started googling and found out about anlinux. I immediately thought to myself. If I can get something close to Ubuntu on my phone, why can’t I program on it? This is the beginning of my journey down what I am finding to be a rabbit hole.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*AnNdtg_Mm3i5dLodGX-BTA.png" /><figcaption>Yes I had to use DALL-E 2 on this page.</figcaption></figure><p>So let’s get started. I have found some similar tutorials online to use VSCode on Android. But none of them were as straightforward as adding AnLinux to the mix.</p><h3>Requirements</h3><p>Let’s start off with some basic apps. You will need 2 things and that’s it, no root, no special phone just:</p><ol><li><a href="https://play.google.com/store/apps/details?id=com.termux&amp;hl=en_ZA&amp;gl=US">Termux</a></li><li><a href="https://play.google.com/store/apps/details?id=exa.lnx.a&amp;hl=en_ZA&amp;gl=US">AnLinux</a></li></ol><blockquote>PS: I will not run through the install process of AnLinux, the app itself does a great job in giving you the tools you need to get set up the way you want.</blockquote><h3><strong>Installation</strong></h3><p>Once inside of your distro of choice (mine is ubuntu) simply run these commands.</p><p><strong>Add a user account (optional):</strong></p><blockquote>This step is optional but I do like to keep a seperate account from root because I have noticed that some programs become problematic when they think they have root permissions</blockquote><pre>$adduser {type_your_username}<br>   and follow the prompts<br>$su {type_your_username}</pre><p><strong>Install VSCode</strong></p><p>For this next part I simply follow the steps outlined in the guide VSCode put out for linux: <a href="https://code.visualstudio.com/blogs/2022/07/07/vscode-server">https://code.visualstudio.com/blogs/2022/07/07/vscode-server</a></p><pre>$wget -O- https://aka.ms/install-vscode-server/setup.sh | sh<br>  #Well at this point vscode is installed, but lets keep going to show <br>  #vscode in all of its android glory<br><br>$code-server<br>  #Then follow the prompts<br><br>$code-server serve-local</pre><p>At this point wait for termux to print a line similar to <a href="http://localhost:8000/?tkn=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"><em>http://localhost:8000/?tkn=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</em></a> simply copy that link into your favorite web browser and go to town coding to your heart’s content.</p><p>Now This is full VSCode in your browser so you can get plugins, browse your file system, and even get a terminal session to your android device all through a browser. And what’s also cool is that you can access this very session via a computer with a web browser (But more on that later).</p><p>For now this is all, If you found this helpful please hit the follow button. It really does help me out a bunch, and you will be the first to know about all my future uploads.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*CGU7_afkPSs0m7y6.png" /></figure><h4>👋 If you find this helpful, please click the clap 👏 button below a few times to show your support for the author 👇</h4><h4>🚀<a href="http://from.faun.to/r/8zxxd">Join FAUN Developer Community &amp; Get Similar Stories in your Inbox Each Week</a></h4><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f55484c8b162" width="1" height="1" alt=""><hr><p><a href="https://faun.pub/put-vscode-on-your-android-smartphone-f55484c8b162">Put VSCode on your Android smartphone</a> was originally published in <a href="https://faun.pub">FAUN.dev() 🐾</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[A quick look at ChatGPT and its role in content creation]]></title>
            <link>https://medium.com/@jordaan0/a-quick-look-at-chatgpt-and-its-role-in-content-creation-770528d2de33?source=rss-4219353a9cc7------2</link>
            <guid isPermaLink="false">https://medium.com/p/770528d2de33</guid>
            <category><![CDATA[openai]]></category>
            <category><![CDATA[future]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[chatgpt]]></category>
            <dc:creator><![CDATA[Kyle Leon Jordaan]]></dc:creator>
            <pubDate>Sat, 10 Dec 2022 09:29:21 GMT</pubDate>
            <atom:updated>2022-12-12T10:00:10.506Z</atom:updated>
            <content:encoded><![CDATA[<p>At this point, I’m sure we’re all familiar with the buzz around the new AI tools from OpenAI, specifically DALL-E 2 and ChatGPT. These tools give us the unique opportunity to not only create content, but also augment our own.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*oxDDucSWsuQS3qWknSA1GQ.png" /><figcaption>DALL-E 2 “a robot writing on a typewriter”</figcaption></figure><h3>The potential impact of AI on our work</h3><p>OpenAI is a leading research institute focused on developing artificial intelligence technology in a safe and responsible manner. Their goal is to advance and promote AI research that benefits humanity as a whole, while also working to ensure that AI technology is not used in harmful or destructive ways. OpenAI’s research covers a wide range of areas, including machine learning, computer vision, natural language processing, and robotics, with the aim of developing AI systems that can perform a wide range of tasks, from simple to complex, with human-like intelligence. They are committed to making AI technology accessible to everyone and promoting the responsible development and use of AI.</p><p>GPT-3 and DALL-E are large language models developed by OpenAI that have the ability to generate text and images, respectively. These tools can be useful for content creators in a variety of ways. For example, GPT-3 can be used to generate ideas for articles or stories, or to help with the writing process by suggesting sentences or paragraphs based on a given prompt. DALL-E can be used to generate original images or manipulate existing images in creative ways. These tools can help content creators save time and generate unique, high-quality content for their audience.</p><p>The last two paragraphs were written by ChatGPT, a smaller version of GPT-3. In fact, I even got it to write an entire Medium article for me, titled “Introducing Termux: The Android Terminal Emulator that Boosts Your Productivity.” While it does read like a press release, it’s still impressive how well generative language models can perform these days. It’s important to note that these are still early days, and even more impressive technology is yet to come.</p><p>This raises the question: if these AI systems can or will outperform humans in almost any task, how can we ensure that OpenAI’s goal of ensuring this technology benefits humanity and is in no way harmful or destructive? The obvious answers that come to mind are:</p><h3>AI does the tasks we don’t want to do.</h3><p>There are many tasks that we as humans need to do but don’t necessarily want to do, such as fact checking, report writing, and driving. However, this can quickly become a slippery slope, where we go from not driving to not cooking, and eventually reach a point where we use AI to free up so much of our time that we are no longer needed. We could reach a point where everything is done by machines and AI, and we lose our purpose.</p><p>This opens the door to more philosophical discussions around what humanity will do when we no longer need to struggle for survival. Will we search for our passions, will we travel to find ourselves, or will we simply fall into a boredom-induced depression?</p><h3>AI augments our tasks.</h3><p>As mentioned above, I am not a fan of the “let AI do our jobs for us” school of thought. Instead, I think we should use AI as we have used any other tool created by humanity. We should use AI systems like DALL-E/Stable Diffusion to improve our artwork, and ChatGPT to proofread our stories and give us pointers on how we could make them better.</p><p>AI can be used to augment our abilities and make us more efficient and effective in our work. For example, a writer could use ChatGPT to generate ideas for articles or stories, and then use the suggestions provided by the tool to develop those ideas further. An artist could use DALL-E to generate original images or manipulate existing ones in creative ways, adding a unique touch to their work.</p><p>Additionally, AI can be used to assist in tasks that are tedious or time-consuming, such as data entry or analysis. This can free up our time and allow us to focus on more important or creative tasks. However, it’s important to use these tools responsibly and not rely on them completely, as we still need to maintain our own skills and abilities. By using AI as a tool to augment our own abilities, we can enhance our work and achieve even greater success.</p><h3>How we can use AI today.</h3><p>Content creators will be among the first to see the advantages and disadvantages of these new creative AI tools. As mentioned earlier, I used ChatGPT to write an entire Medium article, and even used DALL-E to generate artwork for it. Aside from some light formatting and touch-ups, I felt that it was a great piece of writing.</p><p>To test the limits of these tools, I also had ChatGPT proofread the article. It provided useful suggestions and corrections, which I then incorporated into the final version. It’s amazing how well these tools can perform, even in their current form.</p><p>In conclusion, the rise of AI tools like DALL-E and ChatGPT provides us with exciting opportunities for content creation and augmentation. While there are valid concerns about the potential negative impacts of AI, we can use these tools in a responsible manner to enhance our own abilities and produce unique, high-quality content. As we continue to develop and refine these technologies, the possibilities are endless.</p><p>However, it’s important to remember that these tools are still in their early stages, and there is much more to come. As AI technology continues to advance, we will see even more impressive and useful tools that can help us in our work. It’s an exciting time for content creators and other professionals, as we have the opportunity to use AI to augment our abilities and improve the quality and efficiency of our work.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=770528d2de33" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Introducing Termux: The Android Terminal Emulator that Boosts Your Productivity]]></title>
            <link>https://medium.com/@jordaan0/introducing-termux-the-android-terminal-emulator-that-boosts-your-productivity-2e930defb06b?source=rss-4219353a9cc7------2</link>
            <guid isPermaLink="false">https://medium.com/p/2e930defb06b</guid>
            <category><![CDATA[chatgpt]]></category>
            <category><![CDATA[android]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[linux]]></category>
            <dc:creator><![CDATA[Kyle Leon Jordaan]]></dc:creator>
            <pubDate>Fri, 09 Dec 2022 19:25:03 GMT</pubDate>
            <atom:updated>2022-12-09T19:25:03.576Z</atom:updated>
            <content:encoded><![CDATA[<p>Are you an Android user looking to boost your productivity on the go? Look no further than Termux, the powerful terminal emulator that allows you to run Linux commands on your Android device.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*imfrHuk5CBnKng9X_Z39Rw.png" /><figcaption>The software engineer on the go</figcaption></figure><h3>Termux the productivity swiss army knife</h3><p>Termux is an open-source project that provides users with a terminal emulator and Linux environment for Android. This means that you can use Termux to access a wide range of Linux command line tools directly from your Android device, including tools for development, networking, and security.</p><p>One of the major benefits of using Termux is that it allows you to use your Android device as a full-fledged Linux development environment. With Termux, you can install and use a wide range of programming languages, including Python, Ruby, and Node.js, as well as popular Linux tools like Git and Nano. This makes it easy to write and run code directly from your Android device, whether you’re on the go or at home.</p><p>Another great feature of Termux is that it comes with its own package manager, which allows you to easily install and update the tools and packages that you need. This makes it easy to customize your Termux environment and add new tools and features as needed.</p><h3>Digging a bit deeper</h3><p>So, now that you know a bit about Termux, let’s take a look at how you can use it to write a simple “Hello World” Python script on your Android device.</p><p>First, you’ll need to install Termux on your Android device. You can do this by searching for “Termux” in the Google Play Store and installing the app. Once you have Termux installed, you can open the app and you’ll be presented with a terminal prompt.</p><p>Next, you’ll need to install the Python programming language on your Termux environment. You can do this by running the following command:</p><pre>pkg install python</pre><p>This will install the latest version of Python on your Termux environment. Once the installation is complete, you can verify that Python is installed by running the following command:</p><pre>python -version</pre><p>This should print the version of Python that is installed on your device.</p><p>Now that you have Python installed, you’re ready to write your “Hello World” script. To do this, you can use the Nano text editor, which is included in Termux. You can launch Nano by running the following command:</p><pre>nano hello.py</pre><p>This will open the Nano editor, where you can write your Python script. In the editor, type the following code:</p><pre>print(&quot;Hello, World!&quot;)</pre><p>Once you’ve entered the code, you can save the file by pressing “Ctrl+X” and then pressing “Y” to confirm the save. This will save the file as “hello.py” in your current directory.</p><p>To run the script, you can use the following command:</p><pre>python hello.py</pre><p>This will run your Python script and print “Hello, World!” to the terminal.</p><p>And that’s it! With just a few simple steps, you’ve written and run your first Python script on your Android device using Termux. Give it a try and see how Termux can boost your productivity on the go.</p><blockquote>PS: This entire article was produced by ChatGPT. Here is the prompt if your interested.</blockquote><blockquote>write a medium blog post that will get a lot of views, that explains termux, its benefits, and finally show me how you could write a hello world python script in nano and run it on your android device</blockquote><p>If you found this interesting follow me while I delve deeper into the worlds of AI, blockchain and Productivity on the go.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2e930defb06b" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[2023 Changes to the 401(k)]]></title>
            <link>https://medium.com/@jordaan0/2023-changes-to-the-401-k-24bc3a525830?source=rss-4219353a9cc7------2</link>
            <guid isPermaLink="false">https://medium.com/p/24bc3a525830</guid>
            <category><![CDATA[401k]]></category>
            <category><![CDATA[403b]]></category>
            <category><![CDATA[retirement]]></category>
            <category><![CDATA[investment]]></category>
            <category><![CDATA[pensions]]></category>
            <dc:creator><![CDATA[Kyle Leon Jordaan]]></dc:creator>
            <pubDate>Wed, 26 Oct 2022 07:06:58 GMT</pubDate>
            <atom:updated>2022-10-26T07:06:58.991Z</atom:updated>
            <content:encoded><![CDATA[<p>The amount of pre-tax money you can contribute to your retirement plan is changing next year. This is among the adjustments the federal reserve is making amid the cost-of-living crisis with inflation soaring to a four-decade high.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*ts_wmqZX1f6lJhyU" /><figcaption>Photo by <a href="https://unsplash.com/@towfiqu999999?utm_source=medium&amp;utm_medium=referral">Towfiqu barbhuiya</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>In 2023 the amount of money an individual will be able to contribute to their 401(k), and 403(b) plans will increase to a total of $22,500 for the year. this is up from $20,500 in 2022. Employees 50 and older who participate in the plans will see their catchup contribution amounts increase to $7,500 up from $6,500 in 2022.</p><blockquote>This means that employees 50 and older will be able o contribute a total of $30,000 for the year.</blockquote><p>According to the Investment Company Institute, an association of regulated investment funds, about 60 million people in the U.S. are active participants in 401(k) plans. Data released last month by the Bureau of Labor Statistics show that 52% of all private industry workers participate in their employer&#39;s defined contribution retirement plans. (<a href="https://www.nbcnews.com/business/consumer/401k-contribution-limits-2023-retirement-accounts-irs-taxes-rcna53696">source</a>)</p><p>Saving for retirement is vital, however not enough of us do. these contribution updates will allow more people to save for the future and build a better future for themselves and their families.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=24bc3a525830" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How flashloan arbitrage works on UniswapV2]]></title>
            <link>https://blog.blockmagnates.com/how-flashloan-arbitrage-works-on-uniswapv2-bcde6de5312d?source=rss-4219353a9cc7------2</link>
            <guid isPermaLink="false">https://medium.com/p/bcde6de5312d</guid>
            <category><![CDATA[solidity-development]]></category>
            <category><![CDATA[arbitrage]]></category>
            <category><![CDATA[flash-loan]]></category>
            <category><![CDATA[uniswap-v2]]></category>
            <category><![CDATA[cryptocurrency]]></category>
            <dc:creator><![CDATA[Kyle Leon Jordaan]]></dc:creator>
            <pubDate>Thu, 22 Sep 2022 07:55:57 GMT</pubDate>
            <atom:updated>2022-09-26T12:10:35.223Z</atom:updated>
            <content:encoded><![CDATA[<p>If you are reading this article I&#39;m sure you know what flash loans are. Over the past few years, flash loans have been on the minds of almost all crypto investors. So what exactly is it?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*iXh2ueT9apujhPEc7cp3EQ.png" /><figcaption>Flashloan: Lending tokens, executing arbitrage, and paying back a loan in a single transaction</figcaption></figure><p>Well, flash loans have no real-world counterpart, making them not very intuitive, but they are still a powerful tool if you have the technical know-how to use them. Flashloans are a feature designed for developers to borrow any amount of money while supplying no collatoral. Required that it is paid back within the same transaction. You heard that right, flash loans are sort of like the infinite money glitch.</p><p>Now what about that last part though, it needs to be paid back within the same transaction. This means that we need to create a smart contract that will use the flash loan, and also pay it back once complete. All that we need to do is find a way to extract a profit between those steps. This is where arbitrage comes in.</p><p>We will be executing our flashloans against UniswapV2. I know that there are purpose-built flashloan services such as AAVE, however as I will be trading the loaned coins immediately. It does not make sense for me to pay fees to both an exchange, and a flashloan provider.</p><p>If you have ever created a smart contract to trade Uniswap or a fork. Then you will surely be familiar with the method swapExactTokensForTokens .</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/cbd8a48e8e44b739e534efe8230523e8/href">https://medium.com/media/cbd8a48e8e44b739e534efe8230523e8/href</a></iframe><p>This method is very convenient and wraps the trade operation into a neat little call. But did you know that if you call swap on the UniswapV2Pair directly that it does not check If you had paid amountIn to it until the end of its operation? It also supplies you with a callback that allows you to execute a method in your own smart contract.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/d581efeae2fad62d6d0fcb0718a2f842/href">https://medium.com/media/d581efeae2fad62d6d0fcb0718a2f842/href</a></iframe><p>As you can see on line 16, if you supply any data as a method parameter, then it will execute a method uniswapV2Call on the contract requesting this swap. It then conveniently only checks if the tokens amountInhave been to it at line 26. This is the mechanism that enables flashloans in UniswapV2. It is so simple yet so powerful.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/7d78eb7aa4b3d20d623ea80c125a383e/href">https://medium.com/media/7d78eb7aa4b3d20d623ea80c125a383e/href</a></iframe><p>I will not go too into the implementation weeds here, (I might save that for a future article) but if you want to take advantage of flashloans in your own smart contracts, all that you need to do is implement the interface <a href="https://github.com/Uniswap/v2-core/blob/master/contracts/interfaces/IUniswapV2Callee.sol">IUniswapV2Callee.sol</a> and override the method uniswapV2Call and in it simply execute the remainder of your arbitrage steps, then finally pay back the tokens to the UniswapV2Pair above.</p><blockquote>PS: Different uniswap forks use different names for the callback method. For example pancakeswap uses the method pancakeCall from the interface <a href="https://github.com/pancakeswap/pancake-swap-core/blob/master/contracts/interfaces/IPancakeCallee.sol">IPancakeCallee.sol</a></blockquote><p>Now that is all that is needed to execute a flash loan, however just because you have unlocked the ability to trade any amount of money you want, does not mean that you should. I will be covering the Optimal Trade Amount for arbitrage in a future post, so definitely follow me to keep up to date with all the latest Automated Cryptocurrency Trading methods.</p><p>Also, be sure to follow me on Twitter <a href="https://twitter.com/Kyle_Jordaan3">@Kyle_Jordaan3</a> I am way more active there than I am here.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bcde6de5312d" width="1" height="1" alt=""><hr><p><a href="https://blog.blockmagnates.com/how-flashloan-arbitrage-works-on-uniswapv2-bcde6de5312d">How flashloan arbitrage works on UniswapV2</a> was originally published in <a href="https://blog.blockmagnates.com">Block Magnates</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>