GeistHaus
log in · sign up

Kanishk Singh

Part of Kanishk Singh

Recent content on Kanishk Singh

stories primary
About Me
I’m a Software Engineer, working remotely from Pune, India. I love building solutions to real life problems with code. I currently work in the SPM team at Netskope where I help build solutions for Cloud & SaaS Security Posture Management. If you’d like to chat, you can reach out to me at hey@kanishk.io You can see my resume here. Projects diomedes Get an email as soon as a movie starts ticket sales on BookMyShow in a theater near you
https://kanishk.io/about/
On Writing Well
Very often at work, my writing receives praise from fellow engineers, managers, and non-technical folks alike. I wanted to write down a few pointers on my approach as a means of sharing what I’ve learned over the years. Some guiding principles Good writing is an exercise in organising your thoughts. Good writing is honest, and doesn’t let you escape your blindspots. As such, good writing helps you be more honest with yourself.
https://kanishk.io/posts/on-writing-well/
Expensor - Design Decisions
I’ve been wanting to automate my expense tracking for some time now. Back in mid-2024 I started on expensor for this. This is a small entry describing my use case, initial design decisions, and preferences for what I need in a expense tracker. This used to live in the project README but I figured it’s better out here. While I didn’t spend much time on the project in the following 1.
https://kanishk.io/posts/expensor/
Fixing the switch on Logitech MX Master 3S
Note: I will be going on a rant about this mouse and Logitech’s repairability programs, so if you want to skip it and go straight to the part where I discuss the fix, click here. Like any respectable craftsman, I take pride in owning and using the best tools for my trade. So, in addition to using some fancy mechanical keyboards, I also use a fancy mouse, a Logitech MX Master 3S.
https://kanishk.io/posts/fixing-lmb-on-logitech-mx-master-3s/
Paper Notes: Understanding Real-World Concurrency Bugs in Go
TL;DR This is a paper from 2019 titled “Understanding Real-World Concurrency Bugs in Go” which studies 171 concurrency bugs in popular open-source projects written in Go. The bug categorization is done along two axes: Behavior and Cause. Behavior: whether the bug results in blocking or non-blocking bugs. Cause: whether the bug results from the use of shared memory primitives (Mutex/RWMutex/Cond/atomic/etc.) or using the message passing primitives (channels) offered in Go.
https://kanishk.io/posts/understanding-real-world-concurrency-bugs-in-go/
CPU throttling for containerized Go applications explained
EDIT: As of go1.25, the go runtime is now container-aware so you ideally shouldn’t see too much throttling due to the root cause described here if your service is using go1.25 or above and you’re not modifying GOMAXPROCS environment variable yourself. It’s been a long time since I wrote something here. Past few years I’ve been busy at work which is where most of my writing is done these days. This particular entry comes as an offshoot of a production disaster I saw and then took the opportunity to dive deep and learn more.
https://kanishk.io/posts/cpu-throttling-in-containerized-go-apps/
Watching Spider-Man with Golang and AWS Lambda
I promise there are no spoilers in this blog, it’s perfectly safe to read if you’ve not seen the movie yet. Last weekend I saw the new Spider-Man (respect the hyphen) movie No Way Home. Given that MCU movies are a big phenomenon, if you want to watch them opening weekend or the very first show, you need to book seats as early as possible or you can end up having to settle for uncomfortable seats, or worse, all shows sell out and you need to be careful avoiding spoilers on the internet.
https://kanishk.io/posts/spider-man-with-golang-and-aws-lambda/
Using GitHub Personal Access Tokens with Git CLI on WSL
I’ve been using my GitHub username-password for authenticating with GitHub through Git CLI for a long time now. GitHub announced in July last year that they’ll be moving to using token-based authentication for all authenticated Git operations (cloning private repos, pushing, etc.) Beginning from Aug 13, 2021, any authenticated operation will require token based auth (personal access tokens, OAuth, etc.). To this end, GitHub has been emailing their users every time they carry out an authenticated Git operation using passwords (once per day).
https://kanishk.io/posts/using-github-personal-access-tokens-git-cli-wsl/
A brief history of my Python setup
Note: This isn’t meant to be a comprehensive article comparing the pros and cons of each tool used here. It’s a simple log of my experience with these tools. I talk about what worked, what didn’t, and why I moved away from certain tools. Some background I started out using python for writing small automation scripts. Then I spent a lot of my time in college writing and maintaining a Telegram bot for my college’s web portal.
https://kanishk.io/posts/brief-history-of-my-python-setup/
Creating AWS Lambda Layers for ELF Binaries
Last week a friend told me about a new app he was writing and it involved use of an application which was quite CPU heavy, and we wondered if we could save CPU costs by offloading that workload to an AWS Lambda function. I had never touched AWS Lambda prior to this, and I had a vague overview of what serverless applications were from a presentation I did for a college course, but I was very bored in lockdown and the prospect seemed fun, so I took it upon myself to make this happen.
https://kanishk.io/posts/lambda/
Python dependency management with requirements.txt
This article is a follow up to my previous article on using virtual environments in python3. This may become a series of articles for getting familiar with python developement for beginners. In this one we’ll be talking about a file called requirements.txt. If you’ve looked at open source python projects on GitHub or anywhere else, chances are you have come across this file. If you haven’t, you have all the more reason to read this blog.
https://kanishk.io/posts/python-dependency-management/
Using virtual environments in Python 3
I’m writing this short post on the use of virtual environments after I’ve seen a lot of my classmates at college blindly pip install every python package under the sun in their system python installation, pollute their entire python installation and then wonder why their code won’t run. What are virtual environments? As the name suggests, a virtual environment (venv for short), is an isolated environment which mimics the same behaviour as your system Python installation (global Python installation).
https://kanishk.io/posts/using-virtual-environments-in-py3/
Building a Push Notification service for Telegram Bots (PART 2)
In the previous post, we came up with a multi-threaded asynchronous way to send push notifications to more than 300 users as quickly as possible. Since the last article, I’ve gone from 300+ users to ~700 users, and the solution is still standing. In this blogpost, we’ll discuss how to record all push notifications you send to our users into a database and how it can help you in learning how many users we’re actually reaching, and reason out why some messages didn’t reach our users.
https://kanishk.io/posts/telegram-push-notification-part-deux/
Building a Push Notification service for Telegram Bots (PART 1)
So this winter break, I decided to create a push notification feature for my MIS-Bot, which you can checkout here. A little preface - The MIS-Bot is a telegram bot which pulls my attendance and other records from my college website, and sends a screenshot which is easier to assess for me. Apart from that, I’ve built some nifty functions which allow me to calculate how many classes I must attend to build up my attendance to a particular point, as well as how much attendance I could lose if I choose to bunk/skip certain classes.
https://kanishk.io/posts/telegram-push-notification-service/