<?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"><channel><title><![CDATA[Teknorama]]></title><description><![CDATA[Teknorama]]></description><link>https://blog.indieland.tv</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Apr 2026 19:36:58 GMT</lastBuildDate><atom:link href="https://blog.indieland.tv/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Domain Sharding. The hell is it?]]></title><description><![CDATA[Everyone nowadays accesses the web via their respective “Web Browsers”. Web browsers limit the number of active connections for each domain. When the number of resources to download exceeds that limit, users experience slow page load times as downloa...]]></description><link>https://blog.indieland.tv/domain-sharding</link><guid isPermaLink="true">https://blog.indieland.tv/domain-sharding</guid><category><![CDATA[webdev]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Hareem Ul Haque]]></dc:creator><pubDate>Thu, 06 Jan 2022 03:34:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1641439722761/Sv2-dT-ek.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Everyone nowadays accesses the web via their respective <strong>“Web Browsers”</strong>. Web browsers limit the number of active connections for each domain. When the number of resources to download exceeds that limit, users experience slow page load times as downloads are queued.</p>
<p>Developers may split content across multiple subdomains. Since browsers reset the connection limit for each domain, each additional domain allows an additional number of active connections. This lets the user retrieve files from the same source with greater throughput.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1641439825418/LpFjy3m4P.jpeg" alt="domainsharding.jpg" /></p>
<h3 id="heading-what-is-it-anyway">What is it anyway?</h3>
<p>Upon connecting to a webpage, the user's browser will go through the HTML page and download all required page resources. Typically, these resources are supplied by a single domain. With domain sharding, the user’s browser connects to two or more different domains to simultaneously download the resources needed to render the web page.</p>
<h3 id="heading-the-magic-number">The Magic Number?</h3>
<p>Today’s web browsers are capable of supporting 6 concurrent downloads per domain. This number is divided across the total number of resources to give the total number of requests. For example, a website with 30 resources has to do 6 sequential requests for a single user. The <strong>“MAGIC NUMBER”</strong> would be 4 domains.</p>
<h3 id="heading-real-world-example">Real World Example?</h3>
<p>YouTube splits images and script resources across two domains: i.ytimg.com and s.ytimg.com. i.ytimg.com contains icons, logos, thumbnails, avatars, and other visual elements while s.ytimg.com contains JavaScript, CSS, favicons, sprite sheets, and objects related to website optimization and analytics. Users visiting youtube.com will simultaneously download the scripts and media needed to render the page. Because browsers distinguish domains by name rather than by IP address, domain sharding can be performed by a single web server. As long as the server has the bandwidth to support multiple concurrent connections, it can take advantage of domain sharding to quickly distribute content to visitors.</p>
]]></content:encoded></item><item><title><![CDATA[GraphQL API - Perfect for your backed]]></title><description><![CDATA[With the ever-changing technology landscape, you might have doubts about adopting GraphQL API for your backend and be unsure how it can improve your current data needs. However, regardless of what language or architecture you are using, GraphQL API c...]]></description><link>https://blog.indieland.tv/graphql</link><guid isPermaLink="true">https://blog.indieland.tv/graphql</guid><category><![CDATA[GraphQL]]></category><category><![CDATA[technology]]></category><category><![CDATA[coding]]></category><dc:creator><![CDATA[Hareem Ul Haque]]></dc:creator><pubDate>Tue, 14 Dec 2021 21:17:40 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1639515353172/2Ospmg4lB.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>With the ever-changing technology landscape, you might have doubts about adopting GraphQL API for your backend and be unsure how it can improve your current data needs. However, regardless of what language or architecture you are using, GraphQL API can help simplify data access, supercharge the product development process, improve application performance, and handle complex backend data scenarios.</p>
<p><strong>1. One endpoint for your backed:</strong></p>
<p>One advantage of GraphQL API is that it provides a single unified endpoint for your backend to meet both client and general API use cases. A single GraphQL API can handle all the client’s requests and forward them to the correct backend service.</p>
<p>As companies and their products scale, REST endpoints can become large and incredibly hard to manage. One of the main problems in REST is the N+1 problem, where the client calls the server N+1 times to get N number of resources, mainly because a single REST resource does not provide enough information for the client to operate with.</p>
<p>GraphQL API hides the complexity of the underlying backend system by aggregating the required data from different sources and providing a simple interface that clients can communicate with through a single resource.</p>
<p><strong>2. Improved Performace:</strong></p>
<p>GraphQL API improves application performance by reducing JSON payload size and network overhead from multiple API calls. By allowing the client to specify its data requirements, GraphQL APIs eliminate the need for unnecessary generic data being passed from the backend and minimize the number of roundtrips required to retrieve backend data.</p>
<p>As companies scale and iterate their products, the data required by different clients and pages changes. In REST API design, when new requirements arise, developers must decide whether to create a new endpoint and have clients make a new request for that data or add more data to an existing endpoint. The first option leads to more server roundtrips, and the second option increases payload size, both of which can hinder app performance.</p>
<blockquote>
<p>Companies like Netflix have reported faster page load times and overall app performance after switching to GraphQL APIs.</p>
</blockquote>
<p><strong>3. Improved Reliability:</strong></p>
<p>GraphQL API improves system reliability by ensuring that client queries are valid and in sync with the GraphQL schema specification before query execution. GraphQL uses a type system that describes what type of data can be queried from the backend server and in what form it exists. A strongly-typed schema offers enhanced security over REST APIs by preventing breaches like SQL injection and unintentional data leaks, resulting in a more secure and reliable application.
Type-safety ensures that any breaking changes by the backend server would be caught by clients consuming the data, resulting in less downtime. With GraphQL APIs, you can modify and deprecate API fields while still maintaining backward compatibility. It is easier to know which fields in the API are being used by what clients and which ones are not. With GraphQL, API developers can confidently make changes to the existing APIs without breaking the existing functionality.</p>
<blockquote>
<p>Ultimately, GraphQL ensures API consistency, reliability, and security, which results in better system performance.</p>
</blockquote>
<p><strong>4. Better Experience:</strong></p>
<p>Adopting GraphQL APIs improves the developer experience for both frontend and backend developers. Backend developers want to build APIs that are intuitive and easy to explore and navigate. GraphQL helps with that by reducing the time spent documenting APIs.</p>
<p>GraphQL APIs allow clients to query the schema and discover the resources available on it. With excellent tools and libraries like the GraphiQL IDE, the interactivity for GraphQL API endpoints is much more intuitive for the developer.</p>
<p>API consumers want APIs that are flexible, easy to integrate and support a variety of client use cases (Web, iOS, and Android). Because of REST's inflexibility, it is challenging to create a single endpoint that can meet all of the client’s data requirements. Often the same client has to call multiple APIs to get the data it needs from the backend. Additionally, with REST APIs, frontend developers have to rely on the backend for API specifications before building product features, leading to slower development time.</p>
<blockquote>
<p>GraphQL API hides the complexity of the underlying backend system by aggregating the required data from different sources and providing a simple interface that clients can communicate with through a single resource.</p>
</blockquote>
<p><strong>Links:</strong></p>
<p> <a target="_blank" href="https://hasura.io/">Hasura- gives you instant GraphQL &amp; REST APIs on new &amp; existing data sources</a> 
<a target="_blank" href="https://hasura.io/learn/graphql/hasura/introduction/">Hasura -- Introduction</a></p>
]]></content:encoded></item><item><title><![CDATA[GunDB -- gun.js Decentralized database]]></title><description><![CDATA[1. Gundb decentralized database:
The way the internet works today is dependent on large corporations, which store their data on their own servers. However, this has caused some discomfort for millions of people around the world, with the suspicion th...]]></description><link>https://blog.indieland.tv/gunjs</link><guid isPermaLink="true">https://blog.indieland.tv/gunjs</guid><category><![CDATA[Databases]]></category><category><![CDATA[webdev]]></category><category><![CDATA[data]]></category><category><![CDATA[Decentralised Identity]]></category><dc:creator><![CDATA[Hareem Ul Haque]]></dc:creator><pubDate>Fri, 03 Dec 2021 16:17:08 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1638547476640/awz0oXxak.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4 id="heading-1-gundb-decentralized-database"><strong>1. Gundb decentralized database:</strong></h4>
<p>The way the internet works today is dependent on large corporations, which store their data on their own servers. However, this has caused some discomfort for millions of people around the world, with the suspicion that these large corporations are using data and personal information for marketing and choosing what people see on the internet.</p>
<h4 id="heading-2-decentralized-web"><strong>2. Decentralized Web:</strong></h4>
<p>The Idea behind Gun.js is that the internet is formed by a concept of community. Soon the information would be stored through the devices of all users of the system. Each one storing a bit of information along with the free servers provided by Gun.js itself</p>
<p>This makes the internet not only freer but also cheaper for programmers and consequently for end users. Since large companies today are responsible for taking a large part of the money that goes into the system and also able to freely access a large part of the data without having to know for sure whether we are providing data to be spied on or not.</p>
<h4 id="heading-3-gunjs"><strong>3. Gun.js:</strong></h4>
<p>GUN is an ecosystem of tools that allows you to create encrypted applications that run thanks to a community.</p>
<p>With it were created versions of youtube and other social networks</p>
<p>The database is formed by the user's information stored on his own machine, on other users' machines and on larger servers in the system, which allows the information to remain reliable and prevents loss of information if a user's device is lost. Besides, it's an amazing concept to think you're part of a giant database.</p>
]]></content:encoded></item><item><title><![CDATA[Bitcoin Mining For Normal Folks]]></title><description><![CDATA[Before the advent of bitcoin, the word mining was not very common. But with the advent of bitcoin, many people wanted to make money from this lucrative network. Apart from buying and selling digital currencies, it is the miners who play a very import...]]></description><link>https://blog.indieland.tv/bitcoin-mining-for-normal-folks</link><guid isPermaLink="true">https://blog.indieland.tv/bitcoin-mining-for-normal-folks</guid><category><![CDATA[Bitcoin]]></category><category><![CDATA[Cryptocurrency]]></category><category><![CDATA[crypto]]></category><dc:creator><![CDATA[Hareem Ul Haque]]></dc:creator><pubDate>Fri, 19 Nov 2021 14:57:28 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1637332195972/3R6oiNVJX.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote>
<p>Before the advent of bitcoin, the word mining was not very common. But with the advent of bitcoin, many people wanted to make money from this lucrative network. Apart from buying and selling digital currencies, it is the miners who play a very important role in the survival of the network.</p>
</blockquote>
<h3 id="heading-what-is-bitcoin-mining">What is Bitcoin Mining?</h3>
<p>Bitcoin is a decentralized currency token. Currency cryptocurrency means that the Bitcoin network uses cryptography to exchange information. On the other hand, being decentralized also means that no particular person or group controls the Bitcoin network. In other words, all members of the network have an equal right to decide on the survival of the network. The trust of people within the network and their cooperation with each other ensure the survival of the network. </p>
<h4 id="heading-what-about-the-miners"><strong>What About The Miners?</strong></h4>
<p>Because this network is decentralized, people must be present and verify the accuracy of the transaction. But who should pay the miners' salaries or, in other words, their daily wages? In response, we must say that the structure of the Bitcoin network is designed in such a way that after each transfer, a certain amount is given to the miner as a reward.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637332831677/4ikY8aEYO.jpeg" alt="miners.jpeg" /></p>
<h4 id="heading-role-of-the-miners"><strong>Role Of The Miners?</strong></h4>
<p>The price of bitcoin digital currency depends on the supply and demand in the network. On the other hand, financial transactions within a network dependent on solving mathematical equations are very complex. These mathematical equations are cryptographic and simply cannot be solved. In fact, miners compete with each other to solve them. Anyone who can find the answer sooner will be rewarded. Solving these equations is done by very powerful computers.</p>
<p> Miners, hardworking users of the world of cryptocurrencies
We said that bitcoin mining requires powerful devices and high power consumption. Bitcoin Network To maintain the stability of the network and prevent the rapid extraction of bitcoins, there is a measure called the difficulty of extraction. Bitcoin blocks are generated every 10 minutes. If the extraction speed drops below ten minutes, the difficulty of bitcoin mining will increase. If the extraction difficulty reaches such a level that the production time of a bitcoin block is more than 10 minutes, the bitcoin extraction difficulty will be reduced. The network also automatically halves the number of bitcoins generated every four years during a process called hawing. Also, the total number of mined bitcoins is limited to 21 million units.</p>
<h4 id="heading-benefits-of-btc-mining"><strong>Benefits of BTC Mining</strong></h4>
<p>Calculating the profitability of mining is highly dependent on the three factors of device price, suitable electricity, and extraction difficulty. The use of industrial electricity or expensive low-power devices is only costly and will cause problems for miners in the long run. Therefore, before buying the device, we must calculate all these items in profitability many times and then enter the mining industry.</p>
<h4 id="heading-bitcoing-mining"><strong>Bitcoing Mining?</strong></h4>
<p>After buying the BTC mining device and choosing the wallet, we must enter the pool of miners. A mining pool is a virtual place where miners gather the processing power of their devices. This makes the process of solving the mathematical equations of the blocks faster. After solving a bitcoin block, the amount of reward is divided among the miners according to the power of the devices. Without joining a mining pool, the possibility of bitcoin mining is very low. There are only large mining farms that can extract bitcoins on their own.</p>
<h4 id="heading-cloud-mining"><strong> Cloud Mining</strong></h4>
<p>Cloud mining is another way to extract bitcoins without equipment. In this way, you pay the large mining companies to buy the processing power of their devices. In this case, the mining process can be done by another company without the need for electricity or the internet. This method, although very attractive at first, is also dangerous. Many cloud mining companies are just looking to empty users' pockets. They have no transparent mining process. On the other hand, due to international sanctions, the possibility of losing an account and blocking it in this process is high.</p>
<h4 id="heading-trouble-in-paradise-risk"><strong>Trouble In Paradise (Risk)</strong></h4>
<p>The import and purchase of BTC mining equipment also require a legal license. Apart from legal restrictions, the mining industry, despite all its charms, has its own risks. Without proper equipment and cheap electricity, entering this industry would mean losing capital. Finally, we suggest that you visit the Nobitex home page to buy and sell digital currency. To be honest it's not worth getting into BTC mining.</p>
]]></content:encoded></item><item><title><![CDATA[Pakistani Developer Level Up (Soft Skills)]]></title><description><![CDATA[This post is for my Pakistani developers (newbies & experts)

Soft skills are key to level up — and they're often overlooked.

A list of Soft Skills that will get you leveled up fast
1. Kindness:
The tech world is full of strong opinions. You may per...]]></description><link>https://blog.indieland.tv/pakistani-developer-level-up-soft-skills</link><guid isPermaLink="true">https://blog.indieland.tv/pakistani-developer-level-up-soft-skills</guid><dc:creator><![CDATA[Hareem Ul Haque]]></dc:creator><pubDate>Wed, 10 Nov 2021 19:09:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1636569937886/7fxjYVF2k.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="this-post-is-for-my-pakistani-developers-newbies-and-experts">This post is for my Pakistani developers (newbies &amp; experts)</h2>
<blockquote>
<p>Soft skills are key to level up — and they're often overlooked.</p>
</blockquote>
<h4 id="a-list-of-soft-skills-that-will-get-you-leveled-up-fast">A list of Soft Skills that will get you leveled up fast</h4>
<p><strong>1. Kindness:</strong></p>
<p>The tech world is full of strong opinions. You may perceive people as mean. They’re not. They just want the best outcome.</p>
<p>Resist the temptation to become an unpleasant person. Radiate kindness while holding a high standard. You’ll go far.</p>
<p><strong>2. Yes there are stupid questions:</strong></p>
<p>With the zillions of tech(stack etc) out in the world. You are not expected to be a jack of all trades. People won't judge if you are unfamiliar with a few. Yes, your clients will bombard you with stupid questions. Best to remain calm.</p>
<p><strong>3. Kill Your EGO:</strong></p>
<blockquote>
<p>Pakistani's and their EGO... OMG!... Get rid of it fast</p>
</blockquote>
<p>Listen empathically with an open mind. Listen to other people even when they are wrong, try to understand their perspective and why they have it. Be sure to leverage other people's insight to improve the quality of your own work.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1636571127200/JAwuMxD__.jpeg" alt="albert.jpeg" /></p>
<p><strong>4. Do the right thing, with intent:</strong></p>
<p>Avoid sunk cost fallacy. It doesn’t matter if you spent 4 hours coding a solution. If it's a flawed approach that won't work, trash it.</p>
<p>Make sure there’s a purpose, intent, and clarity behind every line of code you send for review.</p>
<p><strong>5. Become a Professional:</strong></p>
<p>Every task is an opportunity to produce beautiful, elegant code. Coding is a craft; you're the artist.</p>
<p>Learn programming principles. Become a software craftsperson and take pride in your work. Don’t just make it work — make it right.</p>
<p><strong>6. Promote Yourself:</strong></p>
<p>Don't get caught up in the day-to-day minutiae, where you end up forgetting to grow your career.</p>
<p>Start each day with a high-impact task that'll inch you towards a promotion. Whether that's signing up to interview, performing code reviews, or adding to your brag document.</p>
<p>You'll be glad you did so</p>
<p><strong>7. Jump Into The Fire:</strong></p>
<p>You'll never be “ready” to work on big features, execute production deployments or go on call.</p>
<p>The best way to get ready for them is… to do them. This will expand your comfort zone and accelerate your growth.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1636571178401/XJUr1oVrG.jpeg" alt="fin.jpeg" /></p>
]]></content:encoded></item><item><title><![CDATA[Short-URL's using Caddy Server]]></title><description><![CDATA[Use Caddy server to shorten custom URL's
Vision:

resolve only my custom short links (No need to tech junk)
not a public, internet-facing service (No overkill)
The most minimal setup I could think off

Requirements:

A domain name that will be the ro...]]></description><link>https://blog.indieland.tv/caddyserver</link><guid isPermaLink="true">https://blog.indieland.tv/caddyserver</guid><category><![CDATA[server]]></category><category><![CDATA[linux-basics]]></category><dc:creator><![CDATA[Hareem Ul Haque]]></dc:creator><pubDate>Wed, 10 Nov 2021 18:14:34 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1636564365719/2kBakrfxC.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="use-caddy-server-to-shorten-custom-urls">Use Caddy server to shorten custom URL's</h2>
<h4 id="vision">Vision:</h4>
<ol>
<li>resolve only my custom short links (No need to tech junk)</li>
<li>not a public, internet-facing service (No overkill)</li>
<li>The most minimal setup I could think off</li>
</ol>
<h4 id="requirements">Requirements:</h4>
<ol>
<li>A domain name that will be the root for a subdomain i.e url.domain.org/*</li>
<li>A webserver with a public-facing IPV4 address</li>
<li>A wee bit of Linux knowledge</li>
<li>Install caddy server on your web server (I use Ubuntu 20.04)</li>
<li>Point the IP address of the webserver to your subdomain</li>
</ol>
<h4 id="caddyfile-config">Caddyfile config</h4>
<pre><code><span class="hljs-comment"># /etc/caddy/Caddyfile</span>

 url.domain.org {   <span class="hljs-comment"># replace it your subdomain</span>

    map {path} {redirect-uri} {
        <span class="hljs-regexp">/deals     https:/</span>/www.govdeals.ca
        <span class="hljs-regexp">/voice     https:/</span>/www.voiceflow.com

        <span class="hljs-regexp">/killer    https:/</span>/www.youtube.com/watch?v=_6ZGgdeWfSM

        <span class="hljs-comment"># will add new ones here like the above</span>
        <span class="hljs-comment"># ...</span>
    }

    <span class="hljs-comment"># this below code is required to actually make the above `map` work</span>

    @hasRedir expression `<span class="javascript">{redirect-uri} != <span class="hljs-string">""</span></span>`
    redir @hasRedir {redirect-uri}

    <span class="hljs-comment"># code below is to set the default response if the requested URL isn't here</span>
    respond <span class="hljs-string">"Error: unknown short URL ... :("</span>
</code></pre><p><strong>Note:</strong>
Please remember to restart the Caddy server every time you update the site list</p>
<h4 id="le-fin">Le Fin</h4>
<p>That's all folks. I hope you enjoyed this blog post</p>
]]></content:encoded></item></channel></rss>