<?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[Gilang Typings!]]></title><description><![CDATA[My personal blog for sharing about anything]]></description><link>https://blog.0wx.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1637613094494/cH58v4Hpr.png</url><title>Gilang Typings!</title><link>https://blog.0wx.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Sat, 16 May 2026 05:48:59 GMT</lastBuildDate><atom:link href="https://blog.0wx.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Creating chat interface without profile image like Twitch or Telegram in React!]]></title><description><![CDATA[Forcing your users to upload their Profile Image while sign up is bit annoying for the user's experience. Also have to save the user profile picture might cost you bit higher in your final cost.
Just by not asking users to upload their profile image ...]]></description><link>https://blog.0wx.dev/creating-chat-interface-without-profile-image-like-twitch-or-telegram-in-react</link><guid isPermaLink="true">https://blog.0wx.dev/creating-chat-interface-without-profile-image-like-twitch-or-telegram-in-react</guid><category><![CDATA[Chat]]></category><category><![CDATA[React]]></category><category><![CDATA[TypeScript]]></category><dc:creator><![CDATA[Gilang Ramadhan]]></dc:creator><pubDate>Mon, 29 Nov 2021 22:33:08 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1638216538612/U0DzPl0xc.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Forcing your users to upload their Profile Image while sign up is bit annoying for the user's experience. Also have to save the user profile picture might cost you bit higher in your final cost.</p>
<p>Just by not asking users to upload their profile image while sign up or give an option to skip profile image customization, you'll gain some benefit like:</p>
<ul>
<li>Better UX</li>
<li>Lower storage usage</li>
<li>Faster load time in the frontend</li>
</ul>
<p>But it's also will sacrifice the UI (User Interface) if we didn't do it correctly. Using  <a target="_blank" href="https://gravatar.com">Gravatar</a> might be a good option, but for me personally, it's way more annoying that I had the same face everywhere, and sometimes I don't wanna use my real face at all in some website or app.</p>
<p>I didn't say Gravatar is bad, but just imagine if I had LinkedIn and Myanimelist account and both are using Gravatar, it will be awkward in so many cases.</p>
<blockquote>
<p>Alternatively using <code>?d=identicon</code> in Gravatar is way better than using real face, but it's not the best looking things to be honest</p>
</blockquote>
<p>Profile picture can serve different purpose, like in Discord I want my profile picture to be funny and cheerful because it's the place where I do gaming and go along with my friends, and if it's LinkedIn I want my profile to look professional as possible without losing my character.</p>
<p>I love how some Job Finder website put a little tie in their users default profile image so it could give an impression of professionality as what the users supposed to have.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638218587914/2pgPFlO-7.jpeg" alt="silhouette-upper-body-businessman-wearing-260nw-1886571829.jpg" /></p>
<p>But the best approach I like is Telegram, they put user's first name and last name letter, and then combined, give a unique color, and you got a unique profile picture.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638219948693/6jBR-P2Uq.png" alt="image.png" />
By given unique color it's also applied at the name in the bubble chat too.</p>
<p>Unlike Telegram, Twitch only use unique color to identify each user instead profile picture, and it's really good both for user experience and performance so people will quickly identified based on the color. it's not the best looking things but it's really good for performance because Twitch chat can go really crazy especially for big stream with hundred of viewers.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638220729985/rlxj6yl58.png" alt="image.png" /></p>
<p>So, I think using unique color is a best approach to identify each user.</p>
<hr />
<p>Then how do we approach that?
The most obvious way is to generate random color and save it along with the user data. But, it will cost you a couple byte in your database that actually can be reduced.</p>
<p>There's a library called <a target="_blank" href="https://www.npmjs.com/package/seed-to-color"><code>seed-to-color</code></a> that I like to use in the scenario, it's a library I created to give random color base on the seed given in the parameter. Let's try to built one with it.</p>
<p>First add <code>seed-to-color</code> to your project</p>
<pre><code class="lang-sh">yarn add seed-to-color
</code></pre>
<p>or</p>
<pre><code class="lang-sh">npm i seed-to-color
</code></pre>
<p>Then import it in the project</p>
<pre><code class="lang-ts"><span class="hljs-keyword">import</span> { randomLightColor, randomDarkColor, randomColor } <span class="hljs-keyword">from</span> <span class="hljs-string">'seed-to-color'</span>
</code></pre>
<p>there's 3 option as you can see, you can use it depends on the chat bubble color, like if the chat bubble is dark use <code>randomLightColor</code>.</p>
<p>Ok, then let's imagine this is the chat</p>
<pre><code class="lang-ts"><span class="hljs-keyword">const</span> chats: Chat[] = [
  {
    _id: <span class="hljs-number">123123</span>,
    firstName: <span class="hljs-string">"Bambang"</span>,
    lastName: <span class="hljs-literal">null</span>,
    message: <span class="hljs-string">"Good morning guys!"</span>,
  },
  {
    _id: <span class="hljs-number">333333</span>,
    firstName: <span class="hljs-string">"Reza"</span>,
    lastName: <span class="hljs-string">"Aditya"</span>,
    message: <span class="hljs-string">"Morning!"</span>,
  },
  {
    _id: <span class="hljs-number">123123</span>,
    firstName: <span class="hljs-string">"Bambang"</span>,
    lastName: <span class="hljs-literal">null</span>,
    message: <span class="hljs-string">"Good morning Reza!"</span>,
  },
  {
    _id: <span class="hljs-number">777777</span>,
    firstName: <span class="hljs-string">"Andy"</span>,
    lastName: <span class="hljs-literal">null</span>,
    message: <span class="hljs-string">"gm!"</span>,
  },
  {
    _id: <span class="hljs-number">887667</span>,
    firstName: <span class="hljs-string">"Mery"</span>,
    lastName: <span class="hljs-literal">null</span>,
    message: <span class="hljs-string">"Ey good mroningggg!"</span>,
  },
  {
    _id: <span class="hljs-number">887667</span>,
    firstName: <span class="hljs-string">"Mery"</span>,
    lastName: <span class="hljs-literal">null</span>,
    message: <span class="hljs-string">"Morning*"</span>,
  },
  {
    _id: <span class="hljs-number">888888</span>,
    firstName: <span class="hljs-string">"Patrick"</span>,
    lastName: <span class="hljs-string">"Star"</span>,
    message: <span class="hljs-string">"morning guys!"</span>,
  },
  {
    _id: <span class="hljs-number">123123</span>,
    firstName: <span class="hljs-string">"Bambang"</span>,
    lastName: <span class="hljs-literal">null</span>,
    message: <span class="hljs-string">"Morning All!"</span>,
  },
]
</code></pre>
<p>By using the <code>_id</code> we already had the seed to get a unique identifier color, but what I like to do is combine both name and id to get more unique result.</p>
<p>here's the example:</p>
<pre><code class="lang-ts">      &lt;div className=<span class="hljs-string">"like twitch"</span>&gt;
        {chats &amp;&amp;
          chats.map(<span class="hljs-function">(<span class="hljs-params">value</span>) =&gt;</span> {
            <span class="hljs-keyword">const</span> { _id, firstName, lastName, message } = value
            <span class="hljs-keyword">const</span> fullName = <span class="hljs-string">`<span class="hljs-subst">${firstName}</span> <span class="hljs-subst">${lastName || <span class="hljs-string">""</span>}</span>`</span>.trim()

            <span class="hljs-comment">// because of the library return only hex color without the '#'</span>
            <span class="hljs-comment">// we have to add them manually</span>
            <span class="hljs-comment">// and I'm using randomLightColor for dark background</span>
            <span class="hljs-keyword">const</span> color = <span class="hljs-string">"#"</span> + randomLightColor(fullName + _id)
            <span class="hljs-keyword">return</span> (
              &lt;div key={nanoid()} className=<span class="hljs-string">"chat"</span>&gt;
                &lt;span style={{ color }}&gt;{fullName}&lt;/span&gt;: {message}
              &lt;/div&gt;
            )
          })}
      &lt;/div&gt;
</code></pre>
<p>and it will look like this</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638224074380/CFT35o3bn.png" alt="image.png" /></p>
<p>Pretty simple right?</p>
<p>Now lets do it like telegram. First, I would like to create a functional component for both Profile and bubble</p>
<pre><code class="lang-ts"><span class="hljs-comment">// This component for Profile Image will take the initial name and the color</span>
<span class="hljs-keyword">const</span> IconName = <span class="hljs-function">(<span class="hljs-params">{ color, initial }: { color: <span class="hljs-built_in">string</span>; initial: <span class="hljs-built_in">string</span> }</span>) =&gt;</span> {
  <span class="hljs-keyword">return</span> (
    &lt;div
      style={{
        display: <span class="hljs-string">"flex"</span>,
        alignItems: <span class="hljs-string">"center"</span>,
        justifyContent: <span class="hljs-string">"center"</span>,
        borderRadius: <span class="hljs-string">"100%"</span>,
        width: <span class="hljs-string">"40px"</span>,
        height: <span class="hljs-string">"40px"</span>,
        backgroundColor: color,
        color: <span class="hljs-string">'#fff'</span>,
        fontWeight: <span class="hljs-string">'bold'</span>
      }}
    &gt;
      {initial}
    &lt;/div&gt;
  )
}
</code></pre>
<p>and now the bubble</p>
<pre><code class="lang-ts"><span class="hljs-keyword">const</span> BubbleMessage = <span class="hljs-function">(<span class="hljs-params">{
  color,
  fullName,
  message,
}: {
  color: <span class="hljs-built_in">string</span>
  fullName: <span class="hljs-built_in">string</span>
  message: <span class="hljs-built_in">string</span>
}</span>) =&gt;</span> {
  <span class="hljs-keyword">return</span> (
    &lt;div className=<span class="hljs-string">"bubble"</span>&gt;
      &lt;div style={{ color }}&gt;{fullName}&lt;/div&gt;
      &lt;div className=<span class="hljs-string">"message"</span>&gt;{message}&lt;/div&gt;
    &lt;/div&gt;
  )
}
</code></pre>
<p>And then we can use the component like this:</p>
<pre><code class="lang-ts">      &lt;div className=<span class="hljs-string">"like telegram"</span>&gt;
        {chats &amp;&amp;
          chats.map(<span class="hljs-function">(<span class="hljs-params">value</span>) =&gt;</span> {
            <span class="hljs-keyword">const</span> { _id, firstName, lastName, message } = value
            <span class="hljs-keyword">const</span> fullName = <span class="hljs-string">`<span class="hljs-subst">${firstName}</span> <span class="hljs-subst">${lastName || <span class="hljs-string">""</span>}</span>`</span>.trim()

            <span class="hljs-keyword">const</span> initialName = firstName[<span class="hljs-number">0</span>] + (lastName ? lastName[<span class="hljs-number">0</span>] : <span class="hljs-string">""</span>)

            <span class="hljs-keyword">const</span> baseColor = <span class="hljs-string">"#"</span> + randomLightColor(_id)
            <span class="hljs-keyword">return</span> (
              &lt;div key={nanoid()} className=<span class="hljs-string">"chat"</span>&gt;
                &lt;IconName color={baseColor} initial={initialName} /&gt;
                &lt;BubbleMessage
                  color={baseColor}
                  fullName={fullName}
                  message={message}
                /&gt;
              &lt;/div&gt;
            )
          })}
      &lt;/div&gt;
</code></pre>
<p>Add some css</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.chat</span> {
  <span class="hljs-attribute">margin-top</span>: <span class="hljs-number">20px</span>;
  <span class="hljs-attribute">display</span>: flex;
  <span class="hljs-attribute">flex-direction</span>: row;
  <span class="hljs-attribute">align-items</span>: flex-end;
}

<span class="hljs-selector-class">.bubble</span> {
  <span class="hljs-attribute">margin-left</span>: <span class="hljs-number">12px</span>;
  <span class="hljs-attribute">background-color</span>: <span class="hljs-number">#103b5c</span>;
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">10px</span> <span class="hljs-number">15px</span>;
  <span class="hljs-attribute">border-top-left-radius</span>: <span class="hljs-number">10px</span>;
  <span class="hljs-attribute">border-top-right-radius</span>: <span class="hljs-number">10px</span>;
  <span class="hljs-attribute">border-bottom-right-radius</span>: <span class="hljs-number">10px</span>;

  <span class="hljs-attribute">position</span>: relative;
}

<span class="hljs-selector-class">.message</span> {
  <span class="hljs-attribute">margin-top</span>: <span class="hljs-number">5px</span>;
}
<span class="hljs-selector-class">.bubble</span><span class="hljs-selector-pseudo">::before</span> {
  <span class="hljs-attribute">content</span>: <span class="hljs-string">""</span>;
  <span class="hljs-attribute">position</span>: absolute;

  <span class="hljs-attribute">height</span>: <span class="hljs-number">10px</span>;
  <span class="hljs-attribute">width</span>: <span class="hljs-number">20px</span>;

  <span class="hljs-attribute">bottom</span>: <span class="hljs-number">0</span>;
  <span class="hljs-attribute">left</span>: -<span class="hljs-number">20px</span>;

  <span class="hljs-attribute">border-radius</span>: <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">10px</span> <span class="hljs-number">0</span>;
  <span class="hljs-attribute">-moz-border-radius</span>: <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">10px</span> <span class="hljs-number">0</span>;
  <span class="hljs-attribute">-webkit-border-radius</span>: <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">10px</span> <span class="hljs-number">0</span>;

  <span class="hljs-attribute">-webkit-box-shadow</span>: <span class="hljs-number">10px</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">#103b5c</span>;
  <span class="hljs-attribute">box-shadow</span>: <span class="hljs-number">10px</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">#103b5c</span>;
}
</code></pre>
<p>and you got this look:
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1638224817095/1KVXPNnRQ.png" alt="image.png" /></p>
<p>Pretty similar right? </p>
<p>You can play along with this using  <a target="_blank" href="https://codesandbox.io/s/example-chat-interface-whuu2">codesandbox</a></p>
<p>Or fork from the source code on <a target="_blank" href="https://github.com/0wx/example-chat-interface">github</a> </p>
<hr />
<p>Hopefully what I'm writing here is useful for you, subs to my mailing list if you want get notified if I post stuff like this again, Thanks!</p>
]]></content:encoded></item><item><title><![CDATA[Pentingnya Sebuah Desain Sebelum Memulai Mengetik Program]]></title><description><![CDATA[Sebagai seorang yang masih belajar dalam pemrograman khususnya Website, saya ingin berbagi sedikit pengalaman dimana saya mampu meningkatkan produktifitas dengan hal yang sederhana.
Kesalahan
Kesalahan fatal dari kebanyakan Programmer yang juga saya ...]]></description><link>https://blog.0wx.dev/pentingnya-sebuah-desain-sebelum-memulai-mengetik-program</link><guid isPermaLink="true">https://blog.0wx.dev/pentingnya-sebuah-desain-sebelum-memulai-mengetik-program</guid><dc:creator><![CDATA[Gilang Ramadhan]]></dc:creator><pubDate>Fri, 25 Jun 2021 02:51:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1637611444764/3PWBjsuXM.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Sebagai seorang yang masih belajar dalam pemrograman khususnya Website, saya ingin berbagi sedikit pengalaman dimana saya mampu meningkatkan produktifitas dengan hal yang sederhana.</p>
<h2 id="heading-kesalahan">Kesalahan</h2>
<p>Kesalahan fatal dari kebanyakan Programmer yang juga saya alami adalah mulai mengetik tanpa menggambarkan apa yang dia ingin capai, hanya memikirkan rancangan yang kemungkinan besar akan terlupakan detailnya dalam 1-2 jam kedepan akhirnya bergelut dengan berbagai macam ketidak-konsistensi-an dalam programnya.</p>
<p>Hindari mengetik program tanpa menjabarkan rancangan awal, buatlah sebuah <em>flowchart</em> apa yang ingin dicapai dan bagaimana cara mencapainya, meskipun hanya sebuah program sederhana yang bahkan hanya untuk mengisi waktu luang. Kebiasaan untuk menggambarkan sebuah <em>flowchart</em> sangat bagus agar terbiasa mempunyai rancangan yang konsisten kedepannya.</p>
<h2 id="heading-flowchart">Flowchart</h2>
<p>Untuk membuat sebuah <em>Flowchart</em> pun tidak lah rumit, cukup dengan dasar di bawah ini sudah men-<em>cover</em> ±70% <em>(berdasarkan pengalaman pribadi)</em> dari <em>Flowchart</em> yang akan kalian buat di kemudian hari
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637611441129/KgpFlfDob.png" alt="Simbol dasar dalam Flowchart" /></p>
<h2 id="heading-alat">Alat</h2>
<p>Ada 2 macam alat yang biasa saya pakai:</p>
<h4 id="heading-1-buku-kecil-dan-pensil">1. Buku kecil dan Pensil</h4>
<p>Buku kecil dan Pensil yang paling sering saya pakai untuk mengurangi <em>screen time</em> saya, pensil pun wajib yang ada penghapusnya 😂, apalagi saya juga sering touring di hari sabtu dan minggu, sangat cocok saat nongkrong tiba-tiba muncul ide baru langsung saya tulis. Juga berlaku saat ngopi-ngopi bareng teman. Baru setelah udah di depan layar dibikin ulang pakai tools ke dua.</p>
<h4 id="heading-2-flowchart-dari-httpsappdiagramsnet">2. Flowchart dari https://app.diagrams.net/</h4>
<p>Aplikasi https://app.diagrams.net merupakan aplikasi online yang dapat membantu kita membuat flowchart dengan mudah, didalam aplikasinya sudah disediakan banyak template dan icon yang sangat sesuai dengan kebutuhan kita.
Beberapa keunggulan yang saya suka:</p>
<ol>
<li>Dark Theme <em>(WAJIB)</em></li>
<li>Tidak Perlu login</li>
<li>Aplikasi web yang sangat ringan</li>
</ol>
<h2 id="heading-kesimpulan-dan-saran">Kesimpulan dan saran</h2>
<p>Menggambarkan rancangan program yang akan kita buat sangat membantu meningkatkan konsistensi dan mempercepat waktu produksi, luangkan waktu setidaknya 15-30 menit setelah <em>Flowchart</em> anda selesai untuk memikirkan kembali apakah semua sudah sesuai atau belum, dan kerjakan tiap bagian sesuai arah panah.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1637611443009/75ZQaNpYO.png" alt="Api -&gt; FE" />
 Misal contoh di atas, berarti kerjakan API terlebih dahulu, dan jika sudah selesai bisa dicoba memberikan warna sesuai selera, seperti contoh di atas (hijau: selesai, merah: belum).</p>
<p>Semoga dengan artikel ini bisa membantu anda yang baru memulai perjalanan sebagai Developer atau yang masih sering mengetik program tanpa membuat <em>Flowchart</em> bisa mulai meningkatkan efesiensi dan konsistensi dalam mengetik program. Terima kasih dan Selamat menggambar! 🎉✍</p>
<p><a target="_blank" href="https://0wx.dev">0wx.dev</a></p>
]]></content:encoded></item><item><title><![CDATA[3 hari semenjak Pasar Crypto Crash, apa yang akan terjadi dan apa yg sudah terjadi?]]></title><description><![CDATA[Seperti kita tau pemerintah Cina membuat keputusan menyatakan bahwa aktifitas jual-beli dan Mining Cryptocurrency akan dilarang sepenuhnya. Dampaknya kebanyakan investor mata uang Kripto pun merugi sekitar 50%–60% dalam kurung waktu 48 jam saja. Jadi...]]></description><link>https://blog.0wx.dev/3-hari-semenjak-pasar-crypto-crash-apa-yang-akan-terjadi-dan-apa-yg-sudah-terjadi-3a2a27e32ea5</link><guid isPermaLink="true">https://blog.0wx.dev/3-hari-semenjak-pasar-crypto-crash-apa-yang-akan-terjadi-dan-apa-yg-sudah-terjadi-3a2a27e32ea5</guid><dc:creator><![CDATA[Gilang Ramadhan]]></dc:creator><pubDate>Tue, 25 May 2021 02:55:47 GMT</pubDate><content:encoded><![CDATA[<p>Seperti kita tau pemerintah Cina membuat keputusan menyatakan bahwa aktifitas jual-beli dan <em>Mining</em> Cryptocurrency akan dilarang sepenuhnya. Dampaknya kebanyakan investor mata uang Kripto pun merugi sekitar 50%–60% dalam kurung waktu 48 jam saja. Jadi apa yang akan terjadi setelahnya dan apa yang sudah terjadi?</p>
<p>Mengutip dari Mustafa Yilham, founder Bixin Wallet:</p>
<ol>
<li>Untuk pertama kalinya kalangan atas China menyatakan sebuah “tindakan keras terhadap <em>trading</em> dan <em>mining</em> Bitcoin”</li>
<li>Biasanya, itu berarti akan ada tindakan penanganan dalam beberapa minggu. Tidak ada yang tahu seberapa besar tindakan yang akan diambil sekarang. Yang sepertinya menciptakan sentiment buruk di kalangan <em>miner</em> China.</li>
<li>Dalam 48 jam terakhir, <em>miner</em> di China mempercepat proses berpindah ke negara lain. Dan akan ada jumlah besar mesin <em>mining</em> yang dijual.</li>
<li>Apakah <em>miner</em> menjual Bitcoin mereka? Beberapa melakukan <em>Panic Sold,</em> sementara yang lain tidak punya pilihan. Tidak semua orang memiliki akses ke tempat di <em>barat</em>. Ada juga tambahan tingkat ketidakpastian pada saluran perdagangan OTC RMB saat ini. Untuk menutup biaya operasionalnya pun juga membutuhkan mata uang <em>fiat.</em></li>
<li>Semua yang kita percaya tentang Kripto dan Bitcoin tetap tidak berubah. Semua fundamental menjadi lebih kuat dari sebelumnya. Teman-teman semua, ini bukan saatnya untuk mengecilkan hati. Ini saatnya untuk bekerja bersama, dan menemukan jalan yang benar, karna perubahan besar akan datang. <em>(Mengutip dari Balajis: Tesis jangka panjang dari Kripto tetap tidak berubah. Inflasi, Desentralisasi, Privasi, Dapat terprogram, Tahan banting, dan Tahan Sensorsip… itu semua adalah penggeraknya.)</em></li>
<li>Disaat krisis ini, terdapat banyak kesempatan — redistribusi Bitcoin mining di seluruh dunia. Kita harus memastikan: sebagian besar mesin mining tidak hanya berpusat di satu negara. Ini merupakan contohnya desentralisasi yang bisa diwujudkan.</li>
<li>Kita juga harus bekerjasama dan memastikan gelombang baru dari operator mesin mining di luar China untuk menggunakan energi yang bisa di perbarui sebanyak mungkin.</li>
<li>Kita sudah memulai melakukan ini dengan teman dan partner kita di seluruh dunia. Ini akan sangat menyakitkan melihat harga jangka-pendek dan <em>hashrate</em> yang terpengaruhi kejadian ini, tappi kita akan menjadi lebih kuat lagi.</li>
</ol>
<p><a target="_blank" href="https://twitter.com/MustafaYilham/status/1396574185598590979">Mustafa Yilham</a></p>
]]></content:encoded></item></channel></rss>