Fork 0

moved to zola

Ishan Jain 8 months ago
commit 90fa84f4b0
  1. 33
  2. 3
  3. 15
  4. 61
  5. 55
  6. 1

@ -0,0 +1,33 @@
base_url = "https://ishanjain.me"
compile_sass = true
title = "ishan jain's blog"
description = "ishan's blog"
build_search_index = true
theme = "after-dark"
generate_feed = true
taxonomies = [
{ name = "categories", feed = true },
{ name = "tags", feed = true },
highlight_code = true
external_links_target_blank = true
include_title = true
include_description = true
include_path = false
include_content = true
author = "Ishan Jain"
after_dark_menu = [
{ url = "$BASE_URL", name = "Home" },
{ url = "$BASE_URL/categories", name = "Categories" },
{ url = "$BASE_URL/tags", name = "Tags" },
{ url = "$BASE_URL/projects", name = "Projects" },
{ url = "$BASE_URL/about", name = "About" },
after_dark_title = "Ishan's blog"

@ -0,0 +1,3 @@
paginate_by = 5

@ -0,0 +1,15 @@
title = "About me"
weight = 9999
path = "about"
My name is **Ishan Jain**. I absolutely love building stuff. I did Front End Web Development for a short period of about a year but didn't liked it. So, I switched my focus and now I do _Backend_, _Infra_ at work.
I have also done small experiments with _Computer Graphics_, _interpreters_ _parsers_. I like to solve puzzles.
I also have a somewhat decent homelab and a decent home network that I'll hopefully write about at some point.
My go to languages are Rust or Go.
Have a nice day.

@ -0,0 +1,61 @@
date = 2018-10-02T22:55:05+05:30
title = "Projects"
path = "projects"
This is a (incomplete)collection of projects that I've worked on until now.
# Websites
**Wikipedia Viewer** - It is a Wikipedia wiki Viewer that I built when working on [freecodecamp.com](https://freecodecamp.com)'s Front end Coding Challenges.
[Demo](https://ishanjain28.github.io/wikipedia-viewer) and [Github](https://github.com/ishanjain28/wikipedia-viewer)
**Random Quote Machine** - This application shows Random Quotes from different categories. I built this when working on [freecodecamp.com](https://freecodecamp.com)'s Front end Coding Challenges.
[Demo](https://ishanjain28.github.io/random-quote-machine) and [Github](https://github.com/ishanjain28/random-quote-machine)
# Bots
**Burnbit[DEFUNCT]** - This is a Telegram bot that converts Direct Download Links to Torrents. It takes a valid HTTP url from user, Downloads the file and creates a .torrent file that can be used with a torrent client. It is not live but you can see the code on Github.
**Imgur Bot[DEFUNCT]** - This is a Telegram bot. You can login to your [imgur](https://imgur.com) account and then this bot will upload any image you send to it to any album of your choice.
[Demo](https://t.me/chinguimgurbot) and [Github](https://github.com/ishanjain28/imgur-bot)
**Cyanide & Happiness** - This is a Telegram bot. You can subscribe to receive the daily comics or you can send it a message with text "random" to receive a random comic.
[Demo](https://t.me/cyanidesub_bot) and [Github](https://github.com/ishanjain28/chbot)
**Instagram Profile Picture[DEFUNCT]** - This is a Telegram bot. You can subscribe to receive the daily comics or you can send it a message with text "random" to receive a random comic.
[Demo](https://t.me/instagram_profile_bot) and [Github](https://github.com/ishanjain28/instagram-bot)
# Games
**Breakout** - It is a HTML5 Game. Your objective is to break all the bricks by hitting them with the striker.
[Demo](https://ishanjain28.github.io/breakout-game) and [Github](https://github.com/ishanjain28/breakout-game)
**Conway's Game of Life** - This is an implementation of Conway's Game of Life in OpenGL + Golang.
# Microservices and APIs
**BSNL Balance API** - An API that can be used to fetch Account balance of any BSNL Prepaid user in India.
**FCC Headers Microservice** - A small service that can be used to fetch public IP address of a machine along with the details of Client which made the request.
[Demo](https://fcc-headers-ms.herokuapp.com/whoami) and [Github](https://github.com/ishanjain28/fcc-headers-ms)
**URL Shortner** - A URL Shortner Microservice that creates a short base62 encoded id for every url. It is written in Golang and uses SQLite to store urls.
[Demo](https://fcc-shorten-urls.herokuapp.com) and [Github](https://github.com/ishanjain28/url-shortner)
# Miscellaneous
**Perceptual hash** - A library to find the percent similarity between two images. It create a Difference Hash of both images and finds the hamming distance between those hashes to calculate the similarity percentage.
# Work in progress Experiments
**Neptune** - An Operating system written in Rust. The long term goals are to have it boot into 32 bit mode, develop a simple game engine for it and port DOOM to it. [Source Code](https://gitlab.com/ishanjain/neptune)
**Monkey Language Interpreter** - A Monkey language Interpreter written in Rust. [Source Code](https://gitlab.com/ishanjain/monkey-interpreter)
The `DEFUNCT` tag is for projects that used to work but don't work anymore either because I took them down and left the codebase on Github or the services that they were built around have changed over time or I don't care enough to go back and see if they are still working and/or fix whatever issues they have.

@ -0,0 +1,55 @@
date = 2022-03-24T01:45:50+05:30
title = "\"Walled Gardens\" in UPI"
slug = "walled-gardens-upi"
in_search_index = true
category = ["finance"]
tags = ["upi"]
# Intro
UPI is India's Domestic(for now) cross bank Payment solution. When registering on the platform, You can create some UPI IDs(or Virtual Private Addresses, VPA. I'll be calling this VPA from here on) which look like <name>@<handle>. Then, Anyone else on the platform can send you money using your VPA and nothing else. The payments are instant and there is no transaction fee for now.
## What changed?
When UPI was introduced, Most UPI Applications showed you the VPA somewhere in the UI and they did not make deliberate attempts to hide the VPA. From the user experience's side, This was maybe not _great_ because VPA was a new concept for a lot of people but the benefit of it was that once you have the VPA you can send money to it from any UPI Application.
Now, The situation has changed a lot.
Google Pay has changed this by,
1. Hiding the UPI ID from the Main/Home page.
2. It is not possible to see a payee/payer's VPA if they were also using Google Pay. In this case, Google will only show you their phone number. The only way to see VPA of this is by clicking on a transaction to see it's details.
I do not know if PayTM was always like this but they generate really obtuse looking VPAs that most people won't be able to remember anyway. (10-20 random characters for the <name> section of a VPA)
## What this has led to?
This has had some interesting effects. A good number of completely non-technical people I interacted with equate phone numbers as the VPA but unlike an actual VPA, Phone numbers are not interoperable across different applications. So, As an example, A user who has registered a VPA on Google pay using their phone number can not send money to a user on PhonePe/PayTM using their Phone number.
This creates bit of a walled garden because those users who don't _really_ understand VPA will ask you to pay using their phone number but you can't pay to their phone number if they are not using the same application as you!
This actually happened multiple times with me where I just couldn't pay to someone because I don't use the same application as them and they had absolutely no clue about VPA.
So an application which has the most number of users may continue to be a leader in this segment because their users only know about phone numbers and insist to people to pay using their phone number and it's annoying for me because I trust some app more than others and do not want to install the UPI Application they are using just to be able to pay them.
## Solutions to this problem
This has been in the back of my head for a while now and I was hoping that someone will bring attention to this problem to NPCI(The organization that made UPI) as it would've been a real shame to let these companies poison what is supposed to be an amazing cross bank payment solution and it turns out they did roll out new rules for this back in July 2021.
The link to these new rules is [here][1]
Under these new rules, They are introducing a new identity similar to a VPA and they are calling it, `UPI Number`.
1. This will be a number chosen by the user between 8-11 digits in length.
2. The phone numbers in India are 10 digits in length so if you pick a 10 digit number, It has to be your phone number.
3. An user can have multiple UPI Numbers
4. They'll have to select which UPI ID an UPI number should map to at the time of it's creation.
There are also some points to take in account stuff like Recycled numbers. These UPI numbers shall remain active 6 months from the last active transaction for a recycled number which seems _okay_ to me.
Overall, It looks like NPCI caught this issue at just the right time and rolled out new reasonable rules to tackle this problem.
[1]: https://www.npci.org.in/PDF/npci/upi/circular/2021/NPCI-UPI-OC-115-Rollout%20of-Numeric-UPI-ID-Mapper-to-enable-UPI-Number.pdf

@ -0,0 +1 @@
Subproject commit 8c4c185ac5c0cb1fa3a4b778f0ec6455dd6cf257