<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://rohanharikumar.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://rohanharikumar.com/" rel="alternate" type="text/html" /><updated>2026-05-08T12:14:09+00:00</updated><id>https://rohanharikumar.com/feed.xml</id><title type="html">rohan&apos;s playground</title><entry><title type="html">Guitarists that bring me joy</title><link href="https://rohanharikumar.com/posts/guitarists-that-bring-me-joy" rel="alternate" type="text/html" title="Guitarists that bring me joy" /><published>2020-10-12T00:00:00+00:00</published><updated>2020-10-12T00:00:00+00:00</updated><id>https://rohanharikumar.com/posts/guitarists-that-bring-me-joy</id><content type="html" xml:base="https://rohanharikumar.com/posts/guitarists-that-bring-me-joy"><![CDATA[<p><br /></p>
<h5 id="buckethead">Buckethead</h5>

<p><img src="https://milwaukeerecord.com/wp-content/uploads/2018/03/bucketheadshank.jpg" alt="alt text" title="Buckethead" /></p>

<h5 id="shawn-lane">Shawn Lane</h5>

<p><img src="https://3.bp.blogspot.com/-n-3m5oucv0w/WBODDbmAnnI/AAAAAAAABLc/jO-yJkHleD0aekzZhT7_HXrxFZEXDcOMgCLcB/s1600/2016-10-28%2B%25281%2529.png" alt="alt text" title="Shawn Lane" /></p>

<h5 id="allan-holdsworth">Allan Holdsworth</h5>

<p><img src="https://unlocktheguitar.net/wp-content/uploads/2014/05/holdsworth-gp.jpg" alt="alt text" title="Allan Holdsworth" /></p>

<h5 id="paul-gilbert">Paul Gilbert</h5>

<p><img src="https://i.vimeocdn.com/video/329179330_640.jpg" alt="alt text" title="Paul Gilbert" /></p>

<h5 id="dimebag-darrell">Dimebag Darrell</h5>

<p><img src="https://i1.wp.com/bloody-disgusting.com/wp-content/uploads/2014/12/DimebagDarrell-1.jpg?fit=711%2C400&amp;ssl=1" alt="alt text" title="Dimebag Darrell" /></p>

<h5 id="adam-jones">Adam Jones</h5>

<p><img src="https://cdn.mos.cms.futurecdn.net/aVhv9CGxKdkvDtQE7Um5CQ.jpg" alt="alt text" title="Adam Jones" /></p>]]></content><author><name></name></author><category term="life" /><summary type="html"><![CDATA[Buckethead]]></summary></entry><entry><title type="html">Client side public key encryption with TweetNaCl</title><link href="https://rohanharikumar.com/posts/client-side-public-key-encryption" rel="alternate" type="text/html" title="Client side public key encryption with TweetNaCl" /><published>2020-10-05T00:00:00+00:00</published><updated>2020-10-05T00:00:00+00:00</updated><id>https://rohanharikumar.com/posts/client-side-public-key-encryption</id><content type="html" xml:base="https://rohanharikumar.com/posts/client-side-public-key-encryption"><![CDATA[<p><br />
Implementing a public key encryption/asymmetric encryption is pretty straight forward with TweetNacl.</p>

<p>You generate an ECC key pair that has a public key and a private key. You get the public key of someone who you want to message/exchange data with. You encrypt your message using their public key and send it across and only the recipient with the corresponding private key can decrypt it. TweetNaCl also handles the digital signature/verification to ensure that it was really you who send the message and prevents alteration of the data. This is done by including your private key in the encryption process.</p>

<p><br /></p>

<p><img src="https://twilio-cms-prod.s3.amazonaws.com/original_images/19DfiKodi3T25Xz7g9EDTyvF9di2SzvJo6JebRJaCN-1P_c1fMqGtrAyZzxGGucG0bcmR8UwNes-gS" /></p>
<h6>Source: Twilio</h6>

<p><br /></p>

<h5 id="here-is-how-you-can-implement-it-with-the-tweetnacl-library-a-port-of-tweetnaclnacl-authored-by-the-legendary-daniel-j-bernstein">Here is how you can implement it with the TweetNacl library, a port of TweetNaCl/NaCl authored by the legendary Daniel J. Bernstein.</h5>

<p>You can install as a node module by doing</p>

<p><code class="language-plaintext highlighter-rouge">npm  i tweetnacl</code> or <code class="language-plaintext highlighter-rouge">yarn add tweetnacl</code></p>

<p>whichever package manager you prefer. You can also fetch it from a CDN, or use a local copy.</p>

<p>You also want to install <code class="language-plaintext highlighter-rouge">tweetnacl-util</code>. It has some nice encoding/decoding functions which we are going to need later.</p>

<p>To generate an ECC keypair,</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>const keys = nacl.box.keyPair();  

// Object {
	  publicKey: [object Uint8Array],
  	  secretKey: [object Uint8Array]
}
</code></pre></div></div>

<p>You can further store the public and private keys in different variable or use it directly like <code class="language-plaintext highlighter-rouge">keys.publicKey</code></p>

<p>I prefer to store in different variables for readability. Before encrypting a message, you need two more things: nonce and the recepient's public key.</p>

<p>Nonce is nothing but an added security measure, unique to this context that gets encrypted along with the key and data.</p>

<p>To generate a nonce,</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>const nonce = nacl.randomBytes(24);
</code></pre></div></div>

<p>Keep in mind that all these data generated are Uint8Arrays, so some type errors may occur if you are planning to send it across a network in JSON or other formats.</p>

<p>That is where the utility library <code class="language-plaintext highlighter-rouge">tweetnacl-util</code> comes in. Before proceeding to send messages across the network,
lets's frst encrypt the messages. Since the encrypt function is is expected the message/data in Uint8Array, you will need to encode the message/data.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>const data = "i know when elden ring is releasing";
const encData = naclUtil.decodeUTF8(data);

// Uint8Array {...}
</code></pre></div></div>

<p>The above only works with strings. If you are using objects/arrays, make sure to convert it to a string and then to Uint8array. You can use <code class="language-plaintext highlighter-rouge">JSON.stringify</code> when you are encrypting and <code class="language-plaintext highlighter-rouge">JSON.parse</code> in decryption.</p>

<p>Now we have the nonce and the recepient's public key with us, we can go-ahead and encrypt the actual message.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>const box = nacl.box(
encData,
nonce,
alicePublicKey,
bobPrivateKey);

// Uint8Array {...}
</code></pre></div></div>

<p>To decrypt this,</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>const data = nacl.box.open(box, nonce, bobPublicKey, alicePrivateKey)
// Uint8Array {...}

const decData = nacl.util.encodeUTF8(data);
// "i know when elden ring is releasing"
</code></pre></div></div>

<p>Now, there are a couple of things you should know about when sending the nonce, exchanging the public keys and data across a network.</p>

<p>Before sending and receiving, make sure to encode to Base64,</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>publicKey = naclUtil.encodeBase64(publicKey);

// FT5po+imGMSn13ClTwLc45GG1EUz90h7N8hPgf0UcXA=
</code></pre></div></div>
<p>Same for nonce, and the data.</p>

<p>On receiving these, you'll have to decode it back to Uint8Array before passing to</p>

<p><code class="language-plaintext highlighter-rouge">box.open</code> (the decryption function), or it will throw type errors.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>publicKey = naclUtil.encodeBase64(publicKey);

// Uint8Array {...}
</code></pre></div></div>

<p>For a working example, you can checkout <a href="https://github.com/rohanharikr/keychat.online">keychat.online</a> where I implemented TweetNaCl with Socket.io</p>]]></content><author><name></name></author><category term="javascript" /><summary type="html"><![CDATA[Implementing a public key encryption/asymmetric encryption is pretty straight forward with TweetNacl.]]></summary></entry><entry><title type="html">Bloodborne: Easily one of the best games of the generation</title><link href="https://rohanharikumar.com/posts/bloodborne" rel="alternate" type="text/html" title="Bloodborne: Easily one of the best games of the generation" /><published>2020-08-22T00:00:00+00:00</published><updated>2020-08-22T00:00:00+00:00</updated><id>https://rohanharikumar.com/posts/bloodborne</id><content type="html" xml:base="https://rohanharikumar.com/posts/bloodborne"><![CDATA[<p><img src="../../../assets/img/bloodbornebanner.png" alt="" /></p>

<p>I finished my first walkthrough of Bloodborne. I know that I am late to the party. I recently got back into playing games after convincing myself that I didn't enjoy it as much as before; felt I grew out of that phase. The only kind of games I enjoyed playing then were strategy games. The reason being most of the games in the market were very shallow, linear story-driven. Whereas a game like Dota had infinite possibilities.</p>

<p>But thankfully, FromSoft revived my love for gaming. I started to give some of my time for Dark Souls 3 given all the hype and how it was difficult and so on. I was thrown a challenge in the very first minutes of the game. It took me several tries to even kill the "allegedly" tutorial boss. I was hooked and the rest is history.</p>

<p>FromSoft defined the benchmark for games. I am very confident to say there are only a handful of studios present now to utilize the medium to the fullest. Finishing Dark Souls, I wanted more of it. So I jumped to the obvious selection, Sekiro. Another amazing game. I cannot write about Sekiro or Dark Souls with the same emotion as Bloodborne because this is a game I finished just hours ago and I haven't stopped thinking about it although, most of the games share a similar FromSoft formula. You know you can expect good lore, characters, and mysteries.</p>

<p>Most of what I have to say about Bloodborne is emotions and it is very hard for me to put that into words.</p>

<p>Bloodborne is one of the best games I have ever played and my favorite FromSoft game. I understand why it has such an awesome fanbase. Let's talk about lore. The team created something surreal, simply epic. How everything is connected. Of course, not everything is engraved in stone and almost everything is open for interpretation. Note when I point out all FromSoft games, I mean the games after Demons' Souls; the game which put FromSoft as a unique and inspiring game studio. Thanks to Miyazaki, his vision and the team for defining a genre and a generation.</p>

<p>Bloodborne starts very vaguely just like most of all FromSoft games. I just started playing knowing that something greater was definitely in store. That's the From factor and From always delivers.</p>

<p>Bloodborne is one of a kind and I don't know where to start honestly. Everything about this game is creepy. I felt like a hunter. The world was so immersive and scary that I was cautious almost all the time. I knew there was a bird with a dog's head or a dog with a bird's head around the corner. Some parts were so creepy that I had to run to the next lamp. The serpent forest always gets me. I am pretty sure that there must be at least one aspect of Bloodborne which gives you the chills.</p>

<p>The gameplay mechanics and world design are spectacular and well-thought just like the other games. Everything felt like it had a purpose. The characters and RPG aspects were compelling. The cutscenes although very little were spot on and added to the creepiness of the gameplay. Really good game design and writing.</p>

<p>I felt a sense of duty and responsibility. Most of the conversations with my friends end with "I must save Yharnam now". That's how invested I was in this game. I love Micolash. His dialogues are super cool and creepy. I used to utter the cutscene dialogues just to weird out my parents. I was living and breathing this game for a while. It's true when people say games are an escape. You get to be someone you cannot. Only games can do that in its fullest sense.</p>

<p>After watching Vaati's videos, I was even more intrigued about all the stuff I missed and which made no sense at the time of playing. Everything was slowly coming together. I mean the people at FromSoft had to smoke some weird stuff to come up with this. It is that good. Bloodborne's details and lore is insane and beyond decipherable for a casual player like me. You have to go through wikis, speculations, and Vaati's video to get a sense of what is happening and why it is happening.</p>

<p>Games like these teach you to keep trying in life, no matter what and in the end, it would be well worth it. I also read a lot of articles on Sekiro and why it should have an easy mode / make it more accessible. This would go against the creator's vision and if something is easy, it would not be worth it. It's meant to be played the way it was made to be played. When I am talking about the way to be played, I am not talking about the gameplay or the routes they have to take but the vision on how the game should feel like. Only if these people who write these articles tried. Life is not easy. Nothing comes easy. You have to fight and earn.</p>

<p>When the First Hunter started playing, I was getting goosebumps. I really felt proud to be a hunter. Even if you haven't played, you can get a good sense of the whole picture just from this soundtrack; the raw emotion behind it.</p>

<iframe width="100%" height="300" scrolling="no" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/197615323&amp;color=%23000000&amp;auto_play=true&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;show_teaser=true&amp;visual=true"></iframe>
<div style="font-size: 10px; color: #cccccc;line-break: anywhere;word-break: normal;overflow: hidden;white-space: nowrap;text-overflow: ellipsis; font-family: Interstate,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Garuda,Verdana,Tahoma,sans-serif;font-weight: 100;"><a href="https://soundcloud.com/phenix63" title="AtomicThunderbolt" target="_blank" style="color: #cccccc; text-decoration: none;">AtomicThunderbolt</a> · <a href="https://soundcloud.com/phenix63/bloodborne-ost-23-no-spoil-for-the-moment" title="Bloodborne  ~ The First Hunter" target="_blank" style="color: #cccccc; text-decoration: none;">Bloodborne  ~ The First Hunter</a></div>

<p>The bosses are amazing. The soundtracks are spot on. I took my time with this game realizing this was the only remaining FromSoftware game I wanted to play apart from Elden Ring, Demon's Souls Remake whose release date is still not officially announced (and also Dark Souls Remastered). Hoping Elden Ring to be showcased in Gamescon considering that Bandai Namco (Elden Rings publisher) is going to be there. Playing Bloodborne pushed me to start reading Lovecraft. It's amazing how people can even come up with stuff like this. This is way beyond something I can ever imagine. Thank you for the unforgettable experience.</p>

<p>So in short words, Bloodborne is a masterpiece.</p>

<p><img src="../../../assets/img/bloodborne2.jpeg" alt="" />
<img src="../../../assets/img/bloodborne1.jpeg" alt="" /></p>]]></content><author><name></name></author><category term="gamedev" /><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">Starting my game development journey</title><link href="https://rohanharikumar.com/posts/starting-my-game-dev-journey" rel="alternate" type="text/html" title="Starting my game development journey" /><published>2020-08-14T00:00:00+00:00</published><updated>2020-08-14T00:00:00+00:00</updated><id>https://rohanharikumar.com/posts/starting-my-game-dev-journey</id><content type="html" xml:base="https://rohanharikumar.com/posts/starting-my-game-dev-journey"><![CDATA[<h4 id="part-1-of-the-gamedev-series">Part #1 of the gamedev series</h4>

<p>Current Mood</p>
<iframe width="100%" height="300" scrolling="no" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/142107352&amp;color=%23000000&amp;auto_play=true&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;show_teaser=true&amp;visual=true"></iframe>
<div style="font-size: 10px; color: #cccccc;line-break: anywhere;word-break: normal;overflow: hidden;white-space: nowrap;text-overflow: ellipsis; font-family: Interstate,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Garuda,Verdana,Tahoma,sans-serif;font-weight: 100;"><a href="https://soundcloud.com/kit-valentine" title="Kit_1998" target="_blank" style="color: #cccccc; text-decoration: none;">Kit_1998</a> · <a href="https://soundcloud.com/kit-valentine/you-were-there-ico" title="You Were There (ICO)" target="_blank" style="color: #cccccc; text-decoration: none;">You Were There (ICO)</a></div>

<p>I have been in front of the computer playing computer games as long as I can remember. My early memories of playing videogames are on the GBA emulator exploring the epic worlds of Pokemon, Beyblade and, Dragon Ball Z. I have spent countless hours playing Wild Ambition on my neighbor's Playstation 1. After many fights and nirahara samarams (hunger strikes), my dad finally decided to buy us a Playstation 2 but we were a little late to the party cause we got our hands on the PS2 when the PS3 was released but that was okay. PS2 was still damn popular and one of the best consoles yet with an enormous collection of games.</p>

<p>At this point, I played games as just games without giving much thought into how it was made. It was around this time I came to know about the best game on the platform - Shadow of the Colossus, from the legendary game designer, Fumito Ueda. I did not get a chance to play this on the PS2 but got a chance to play and finish the remade version for the PS4. I was broken. The controls were buggy, the horse was unresponsive and lots of other issues. But in the end, the story slowly starts to come together and bam hits you in the face. The ending left me in tears. The music by Kow Otani, another legend composed a perfect soundtrack for the game. Come to think of it, Fumito intentionally decided to make agro (the horse) less responsive because if agro just responds to everything you do, then it would be just robotic. He was just trying to emulate the real world. Pets don't listen all the time. These minor details got me started about designing games. The art, music, code, story, gameplay which goes into these is insane.</p>

<p>I am also a big fan of Hidetaka-san and his work. The Soulsbourne series and Sekiro push the limitation of games. I find many games today not fully utilizing the medium. Videogames are the ultimate form of storytelling and very few designers have harnessed this. Just taking the world of Dark Souls as an example, the game itself offers very little direct storytelling. Everything about the world is immersive. Everything is up to the player, from figuring out the story and what's happening by observing the world and the mechanics. This opens to tons of interpretations too. Games like Ico, SotC, The Last Guardian, etc are benchmarks and push how we tell stories through games.</p>

<p>Another inspiration for me is ConcernedApe aka Eric Barone, Chris Sawyer for what they have achieved technically and artistically. Just to process the fact that Stardew Valley was written entirely by one person is just amazing and motivating.</p>

<p>All these inspired me to make games. But it's hard for me to even believe that a song inspired me to make the game that I am going to make. Its an album by Sigur Ros called Route One. It is instrumental and plays for 24hrs. There is something very mysterious, eerie about this album that got me to thinking how it would look like on screen. That's the beauty of art. One medium can inspire another. But then again, everything is art.</p>

<p>Buckethead is also a great inspiration. I love mysteries and decoding stuff without someone spoon-feeding me. Not only does this give the player more freedom, but also gives him/her a sense of achievement and satisfaction. Music by Buckethead teaches me to enjoy the little things in life. I started to see the world differently. It's beautiful how songs with no vocals can still have influence.</p>

<p>Coming back to the first line, I have been playing games for so long and now, I have decided to finally make one. I want to do everything by myself from writing the code, creating art and music. I have very little knowledge of all the aspects of making a game so this would also be a good way to improve.</p>

<p>To design a game, you have to be open-minded. I consider myself to be an asshole but every day I am trying to be better. I am. I have been so arrogant and ignorant that every time I think about something of the past (that I would never do now), I just want to drop dead. I always hated music other than the traditional stuff, for example, electronic and despised others who listen to stuff that I don't listen to. I have been such an ignoramus and feel sad and pity for my past self. Games like SDV have got me thinking about synth music and its beauty. Everything is beautiful. Everything is different and what makes us different make us beautiful. Some of my friends (I don't even know how or why they want to be friends with someone like me but I am glad that they are/were) ask me why I always disappear and I always give some lame reply. But the real reason is that I want to get away from my past self and whatever I did. It's hard to face that. I want to start fresh. I want to be a ghost.</p>

<p>I am not a good artist, heck not even an average one. I am choosing pixel art because the entry-level to that is low compared to high-quality 2d or 3d. I have played guitar for more than 7 years but I am ashamed to say that I don't know anything about it. I just play. Some people have the natural ability to understand and do. Understand why some things are the way they are. I am on the other end of the spectrum.</p>

<p>I am afraid that I won't be able to complete this project. This is a very ambitious one. I am just working on an idea. I have a vision on how the game should play, feel, and look like but do not know how to get there. There is no roadmap, no goals; just progressing step by step. Building as I go in the hope that it will all come together hopefully.</p>

<p>I am lazier than 99% of the people. I lose motivation very quickly. My attention span is scarily low. For the past couple of months, I have even lost the motivation to wake up. For someone with these traits, it's hard to create a game. Creating a game is insanely difficult. So, this would be a challenge for me. I quit easily. I do not want to. I am going to set a target and will achieve it even if at any point, I feel like what I am making is terrible and not even worth the time. I need to push myself.</p>

<p>I am starting this series to inspire me to keep making the game regardless of people reading it or not. The more I invest in something, the more it is harder to get out and that is exactly what I am intending to do. I want to put my life into this that it should feel like my life depends on it. I am not looking for any commercial success or fame. I am not doing this to prove anything.</p>

<p>I am doing this for myself. To tell myself 20 years from now that I have made something, achieved something in life. Something worthy to even mention because sadly, I don't have anything right now.</p>

<p>“We have two lives, and the second begins when we realize we only have one.”</p>

<p>― Confucius</p>

<p>My only dream before I die is to be genuinely proud of something I create and if it brings happiness to others too, I will be thrilled. I also want to make my parents proud who have been supporting me regardless of my ups and downs. I also want it to do it for them.</p>

<p>I will be documenting my work once in a while. I have set up the environment. As of now, using Lua and the love2d framework because I found it fairly straightforward. Tried multiple game engines, frameworks but love2d with Lua scored the goal for me. The gameplay style I am going for would be closer to Miyazaki-sans works.</p>]]></content><author><name></name></author><category term="gamedev" /><summary type="html"><![CDATA[Part #1 of the gamedev series]]></summary></entry><entry><title type="html">Ban on TikTok and the other Chinese apps</title><link href="https://rohanharikumar.com/posts/ban-on-tiktok-and-the-other-chinese-apps" rel="alternate" type="text/html" title="Ban on TikTok and the other Chinese apps" /><published>2020-07-28T00:00:00+00:00</published><updated>2020-07-28T00:00:00+00:00</updated><id>https://rohanharikumar.com/posts/ban-on-tiktok-and-the-other-chinese-apps</id><content type="html" xml:base="https://rohanharikumar.com/posts/ban-on-tiktok-and-the-other-chinese-apps"><![CDATA[<p>Before starting, I would like to point that I am not a BJP supporter or any other political party for that matter. I only care about stuff that benefits the interest of India.</p>

<p><strong>tl;dr: I fully support the government's decision of the ban on Chinese apps.</strong></p>

<p><strong>Why the ban?</strong></p>

<p>All apps on the list are all accused of collecting unauthorized user data (like clipboard and whatnot) and this is not something new.</p>

<p><a href="https://www.forbes.com/sites/zakdoffman/2020/06/26/warning-apple-suddenly-catches-tiktok-secretly-spying-on-millions-of-iphone-users/#6f048e5b34ef">Source 1</a>
• <a href="https://www.businesstoday.in/technology/news/tiktok-secretly-accesses-users-data-apple-catches-it-red-handed/story/408359.html">Source 2</a></p>

<p>What we don't know for a fact is whether they are doing this for the interest of a 3rd party, be it any government or corporation but what we do know is that if the government wanted to access this data; by law, they can. Failing to comply with the government puts these companies in trouble because of espionage and national security laws in the country.</p>

<p><em>"The 2017 National Intelligence Law and the 2014 Counter-Espionage Law. Article 7 of the first law states that “any organization or citizen shall support, assist and cooperate with the state intelligence work in accordance with the law."</em></p>

<p>This ban was proposed/supported/consulted by/with the Cyber Security Team of India (Ministry of Information Technology, Indian Cyber Crime Coordination Centre, Computer Emergency Response Team).</p>

<p><strong>People oppossing / ridiculing the ban.</strong></p>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Intellectuals opposed Aarogya Setu app, citing &quot;privacy concerns&quot;<br /><br />Its source code is open for everyone to download, examine, redistribute, improve if they want<br /><br />But intellectuals are now opposing TikTok ban despite knowing that recently Apple caught TikTok spying on iPhone users</p>&mdash; Anshul Saxena (@AskAnshul) <a href="https://twitter.com/AskAnshul/status/1277871856666636288?ref_src=twsrc%5Etfw">June 30, 2020</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p><strong>Why now?</strong></p>

<p>Why invite unnecessary attention and issues? Well, no country would do that specifically against a county under normal circumstances.</p>

<p>But in my personal opinion, apps like these which pose a threat should be banned regardless of what the situation of the country is, even if its going to attract unwanted attention.</p>

<p><strong>Response.</strong></p>

<p><img src="../../../assets/img/186abd5b5784ccce53367bc3ae165c60-1.png" alt="" /></p>

<p>This tweet was deleted later. <a href="https://twitter.com/shen_shiwei/status/1277631424934240256">Source</a></p>

<p>Should we tell him about the Great Firewall? How can he make such a statement when his own country has one of the world's most aggressive censorship systems in place, admittedly for one of the reasons as ours.</p>

<p><a href="https://en.wikipedia.org/wiki/List_of_websites_blocked_in_mainland_China">Source</a></p>

<p>Oh wait, forgot that even Wikipedia is blocked. If China ever decides to relieve its censorships, the aforementioned is something you might want to consider reading.</p>]]></content><author><name></name></author><category term="india" /><summary type="html"><![CDATA[Before starting, I would like to point that I am not a BJP supporter or any other political party for that matter. I only care about stuff that benefits the interest of India.]]></summary></entry><entry><title type="html">Pocket money</title><link href="https://rohanharikumar.com/posts/pocket-money" rel="alternate" type="text/html" title="Pocket money" /><published>2020-07-14T00:00:00+00:00</published><updated>2020-07-14T00:00:00+00:00</updated><id>https://rohanharikumar.com/posts/pocket-money</id><content type="html" xml:base="https://rohanharikumar.com/posts/pocket-money"><![CDATA[<p>This first thing that comes to my mind when I think about pocket money is Vishu which is a festival we celebrate in Kerala. On this day, there is a tradition of giving young people money. Although Vishu marks the first day of Medam, the ninth month in the Malayalam calendar (yes, I googled this), I believe this day also signifies the rotation of wealth.</p>

<p>Writing this stuff brings back so many memories. The day starts by our mom (we are 2 siblings) waking us up early in the morning and telling us to keep our eyes closed as she takes us to show us the statue of a Hindu deity decorated with flowers and other beautiful articles. Then she hands each of us a rupee note (of 100/500 denomination). That’s how the day starts!</p>

<p>We were a tightly packed society meaning all my friends were in the same neighborhood. So after receiving these “vishumoney” (this is what we used to call it) from our dad and grandparents we would run off to our friends’ house.</p>

<p>P.S (but not really) grandparents used to give us the largest amount.</p>

<p>You can think of it like Halloween but instead of candies, its money and exclusive to Kerala. At the end of the day, me and and brother would add our “collections” and make a list on what to spend it on. If we were unable to spend it on anything, we would just return it to our parents i.e after Vishu of course!</p>

<p>I didn’t require any “pocket money” in my childhood as everything was available and provided at home only.</p>

<p>In the old days, elder people used to only give coins to younger folk but you know these days, because of inflation and all… (͡ ° ͜ʖ ͡ °)</p>]]></content><author><name></name></author><category term="life" /><summary type="html"><![CDATA[This first thing that comes to my mind when I think about pocket money is Vishu which is a festival we celebrate in Kerala. On this day, there is a tradition of giving young people money. Although Vishu marks the first day of Medam, the ninth month in the Malayalam calendar (yes, I googled this), I believe this day also signifies the rotation of wealth.]]></summary></entry><entry><title type="html">Show latest commit on Svelte</title><link href="https://rohanharikumar.com/posts/show-latest-commit-svelte" rel="alternate" type="text/html" title="Show latest commit on Svelte" /><published>2020-06-11T00:00:00+00:00</published><updated>2020-06-11T00:00:00+00:00</updated><id>https://rohanharikumar.com/posts/show-latest-commit-svelte</id><content type="html" xml:base="https://rohanharikumar.com/posts/show-latest-commit-svelte"><![CDATA[<h4 id="scroll-down-for-full-code"><a href="#full-code">Scroll down for full code</a></h4>

<h4 id="output">Output</h4>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>commit 72ea82s
</code></pre></div></div>

<h4 id="import-onmount-from-svelte">Import onMount from Svelte</h4>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>import { onMount } from 'svelte'
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">onMount</code> runs immediately after the component is rendered to the DOM.</p>

<h4 id="write-a-simple-fetch-function-to-fetch-from-the-github-api">Write a simple fetch function to fetch from the Github API</h4>

<p>So here we are telling Svelte to fetch some data from this API when the component is first rendered. Note that the functions inside the <code class="language-plaintext highlighter-rouge">onMount</code> is only triggered when it enters the DOM.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>onMount(async () =&gt; {
  await fetch('https://api.github.com/repos/${userName}/${repoName}/commits')
    .then((response) =&gt; response.json())
    .then((data) =&gt; {
      id = data[0].sha.slice(0, 7)
    })
})
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>await fetch('https://api.github.com/repos/${userName}/${repoName}/commits')
</code></pre></div></div>
<p>Performs a fetch request to the Github API's. Replace this <code class="language-plaintext highlighter-rouge">userName</code> and <code class="language-plaintext highlighter-rouge">repoName</code> with yours.</p>

<p><code class="language-plaintext highlighter-rouge">.then((response) =&gt; response.json())</code><br />
Converts the response to <code class="language-plaintext highlighter-rouge">.json</code> objects.</p>

<p><code class="language-plaintext highlighter-rouge">.then((data) =&gt; {id = data[0].sha.slice(0, 7)})</code><br />
Assigning only the first index <code class="language-plaintext highlighter-rouge">data[0]</code> <code class="language-plaintext highlighter-rouge">sha</code> key (where our commit id is) to a variable <code class="language-plaintext highlighter-rouge">id</code> since our request returned an array of objects with all the commits and info.</p>

<p><code class="language-plaintext highlighter-rouge">slice(0,7)</code><br />
Takes only the first 7 digits since it is the Git default for a short SHA</p>

<h4 id="full-code"><a name="full-code">Full Code</a></h4>

<script src="https://gist.github.com/rohanharikr/aef6d401adc26f403efe98d6238602d4.js"></script>]]></content><author><name></name></author><category term="svelte" /><summary type="html"><![CDATA[Scroll down for full code]]></summary></entry><entry><title type="html">See who liked you without Tinder Gold</title><link href="https://rohanharikumar.com/posts/see-who-liked-you-without-tinder-gold" rel="alternate" type="text/html" title="See who liked you without Tinder Gold" /><published>2019-04-05T00:00:00+00:00</published><updated>2019-04-05T00:00:00+00:00</updated><id>https://rohanharikumar.com/posts/see-who-liked-you-without-tinder-gold</id><content type="html" xml:base="https://rohanharikumar.com/posts/see-who-liked-you-without-tinder-gold"><![CDATA[<h4 id="result">Result</h4>
<p>Images of people who liked you at 640x800, 320x400, 172x216 without Tinder Gold.</p>

<p><img src="../../../assets/img/result.png" alt="" /></p>

<p><br /></p>

<h4 id="so">So</h4>
<p>Tinder likes without Gold comes up like this, a blur effect on the photo(s).</p>

<p><img src="../../../assets/img/tindergold.png" alt="" />  	
Initially, I thought that the blurred images were sent from their servers itself.
A simple inspection on the code</p>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>-webkit-filter: blur(8px)
filter: blur(8px)
</code></pre></div></div>
<p>Okay, so they are applying a blur effect with CSS. Disabling this would give me a raw image of 172x216 dimension. Exploring media items, the recently liked (only one) would be of 320x400 dimension.</p>

<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://preview.gotinder.com/18d6e533-c874-48ad-ac66-ae6b63aa77fb/172x216_c77f0e5c-40b4-4af4-9b68-5f0ff26ead90.jpg
</code></pre></div></div>
<p>The 172x216 in the URL is the dimensions. Changing it to 320x400, would give me an image of that dimension. 
All the images were coming from the same endpoint. So, I tried changing it to random dimensions with the same aspect ratio which like I guessed didn't work because they were not storing (x dimension) in their server.</p>

<p><img src="../../../assets/img/error.png" alt="" /></p>

<p>Also, noticed that my profile picture was of better quality.</p>

<p><img src="../../../assets/img/profile.png" alt="" /></p>

<p>To my surprise, that too was coming from the same endpoint. So, now I know that Tinder stores images in 640x800 also.</p>

<p>So, that's that.</p>]]></content><author><name></name></author><category term="tinder" /><summary type="html"><![CDATA[Result Images of people who liked you at 640x800, 320x400, 172x216 without Tinder Gold.]]></summary></entry></feed>