RSSAmplifier

Blog

Yasoob Khalid

Recent content on Yasoob Khalid

yasoob.meRSS feed ↗191 posts

Latest posts

Debugging ETW Event Drops in High-Throughput Applications

I was working on a production application recently where we rely heavily on ETW (Event Tracing for Windows) to emit high-frequency events. We are talking about millions of events every few seconds. We started noticing gaps in our telemetry—we were running into event drops. This was a critical issue. If you are losing events, you are flying blind. I had to figure out which provider was producing…

Converting Sourcemaps to Original JavaScript/TypeScript Sourcecode

Introduction Hi everyone! This is going to be a short and quick tutorial on how to download sourcemap files and convert them into the original JavaScript source code. Here’s an example of minified code from a Next.js website: And here is the same code after the browser has done its magic and reconstructed the original code using sourcemaps: Take a look at the bottom toolbar — it shows whether the…

Salam - Privacy Policy

Effective Date: March 9, 2025 Salam (“we”, “our”, or “the app”) values your privacy and is committed to protecting your personal information. This Privacy Policy explains how we collect, use, and share information when you use the Salam app. By using the app, you agree to the collection and use of information as described in this policy. 1. Data Collection No…

Salam - Support Page

Welcome to the Salam app support page! Below you’ll find detailed information about how to get the most out of the Salam app and troubleshoot any issues you may encounter. If you need further assistance, don’t hesitate to reach out to our support team. Table of Contents Getting Started Prayer Times Widgets Qibla Direction Finder Quran Reading Audio Recitations Asma-ul-Husna…

Breaking Kakasoft USB Copy Protection

I recently got my hands on a USB drive with Kakasoft USB Copy Protection (DRM protection). This software promises to let you share data without the fear of it being copied by the end user. However, the pseudo-hacker in me couldn’t resist the challenge. After all, “If it can be read, it can be copied.” In this article, I’ll walk you through the entire process I used to crack this…

Running Go code from Elixir Using Web Assembly

I was working on an Elixir project recently and one particular open source package that I wanted to make use of was written in Go. I searched for different ways to interface with Go code from Elixir. I know that it is fairly trivial to interface Rust code from Elixir using a NIF but there isn’t anything similar for Go that I came across. Most of my research led me towards using Ports and I…

How to Use Apple Vision Framework via PyObjC for Text Recognition

Introduction This post has been sitting in my drafts folder for a long time. Sometime earlier this year I saw a job posting where someone wanted to use Apple’s vision framework to do text recognition. I wasn’t interested in the job but I was curious about the Vision framework as I had never used it before. In this article, I will take you through how I used PyObjC to interface with the…

How to Efficiently Reorder or Rerank Items in Database

I was once thinking about Trello and Jira and wondered how they implemented the sorting functionality in their drag & drop interface. You can have a million items/cards and both of these platforms will allow you to change the order in a simple drag and drop manner and efficiently update their position in the database. How could I implement such a system? It was hard to do research on this topic…

Project Write-up: Display Spotify lyrics on external display

Hi guys! 👋 It has been a while since I last posted anything. I have been busy but I am back with a fun article. I came across a job posting on Upwork where someone was looking for a software that plays the lyrics of a Spotify song on dual screens. One screen will display the English lyrics and the other one will display Hungarian lyrics. I was really intrigued so I decided to give it a go.

Setting Up Custom Root Domain using Webflow and Cloudflare

Hi everyone! 👋 I tried Webflow for the first time a few days ago and fell in love with it. I have been programming for a good number of years now and I am fairly comfortable with HTML and CSS but I can’t imagine building complex interactions without Webflow anymore. The grass is surprisingly mostly green on the other side 😆 Problem But you aren’t here to listen to my praise for…

Extracting WhatsApp messages from an iOS backup

Hi everyone! 👋 I was recently exploring how to get a local backup of WhatsApp messages from my iPhone. I switched from Android to iOS in the past and lost all of my WhatsApp messages. I wanted to make sure that if I switched again from iOS to Android I don’t lose any messages. I don’t really care if I can import the messages in WhatsApp. I just don’t want to lose all of the…

Web Automation With Selenium And Python

Hi everyone! 👋 I recently moved to Redmond, WA, and tried to get into some sports that could keep me active and moving. After looking around for a bit I realized that half the people here play badminton so it was an easy decision for me to sign up for a local badminton academy. However, after signing up I realized that most of the courts were already booked for prime-time (between 4-8 pm).

How to get a job in big-tech (Internships/New grads)?

Hi all! 👋 If you have been following me for a while then you might be aware that I work at Microsoft. Every so often I get asked by people about how to get a job in big tech. Some people have always dreamed about working for FAANG. Microsoft isn’t in FAANG but it comes as close as you can get. I will write down some of the common answers I have given to people over the last few months.

How to web scrape on Schedule using Github Actions?

Hi everyone! 👋 It’s been a long time since I last posted on this blog. I was busy graduating from college and moving places and that didn’t leave enough time for fun new projects. I am still in the middle of it all but recently did a project that gave me a tutorial idea to write about. I was asked to create a web scraper that would scrape a certain website, filter the data and then…

Understanding and Generating a UPC-A barcode using Python

Hi everyone! 👋 I have always been fascinated by barcodes and QR codes. I have known for a long time about how they work in theory but I never did enough research on it. It seemed like I would learn a lot from diving deeper and implementing a barcode generator from scratch. There is no substitute for learning more about something by creating it from scratch so that is exactly what I did.

Setting up listmonk, an open-source newsletter & mailing list manager

Hi everyone! 👋 I have been using Mailchimp for my mailing list for a while and even though it is great, it is super expensive. I have 5000+ people in my list and that puts me in their $78 plan. I send the newsletter very rarely and don’t really earn anything from the mailing list so it was really hard for me to justify the $78. I had recently integrated Amazon SES with a project and found…

Making a Serverless eBook Stamping & Delivery Service

Hi everyone! 👋 I recently launched the release candidate of my Practical Python Projects book. There were a couple of unique issues I was facing and I decided to write about them and share how I got around most of them. This is not an end-to-end service implementation tutorial but rather a quick walk-through. I will show you most of the important bits and pieces of code for this service. If you…

How to Prerender React Apps Using Prerender

Hi everyone! 👋 I have been working on a sports analytics startup and the whole front-end is made using React. I haven’t had to work on such a big React project before this and so it brought along some unique challenges. In the past, SEO hasn’t been a big issue for the web projects I have worked on. I could always just add relevant data to the meta tags, define the navigation using…

Setting up & Deploying JWT based auth using Flask & React

Hi everyone! 👋 I was working on a React project these last couple of weeks and I had to implement login functionality. I searched around and most of the solutions I found relied on Redux or some other huge dependency that I wasn’t already using in my project. I didn’t want to introduce a big dependency so decided to continue looking. In the end, I found a wonderful library by Oleg…

Using Python to Post Stories on Instagram

Hi everyone! 👋 In my book (Practical Python Projects), I initially had a section showing the readers how to upload stories on Instagram in an automated fashion. I ended up removing the code from the last draft of the book for various reasons. During the span of a few months, the library I was using to post on Instagram was removed from GitHub. Just because this is not an officially supported…

How to Listen to Trunked Police Radio (Video 2020)

Hi everyone! 👋 Remember I wrote a post recently about how you can listen to your local police department using a Baofeng? As it turns out, most police and fire departments have moved to trunked radio. Trunked radio is just a fancy way of saying that these departments have gone digital. A Baofeng UV-5X3 or UV-5R radio can not decode this communication. You have two options. You will either have to…

Alpha Version of Practical Python Projects Book Released!

Hi everyone! 👋 I have big news! The alpha version of my Practical Python Projects book is out! It took me two years and countless hours to get to this stage and I am so proud of it. You can buy it now from here. The final version of the book will be more expensive than the alpha price of $29.99. Moreover, the first 25 people to use the code ppp-yasoob-blog will get the book at an extra 15% off.

Using BaoFeng UV-5X3 HT as Police Scanner

Hi lovely people! 👋 I am a huge radio enthusiast. So much so that I recently gave (and cleared) my Technician Ham license exam. I am now just waiting for my call sign to appear in the FCC database. While that is happening, I went ahead and bought a BaoFeng UV-5X3 radio. Note: If you ever decide to buy this radio look at the BaoFeng website first. You might be able to score a cheaper deal there.

Working With Messy Data Using Pandas in Python

Hi lovely people! 👋 I am working on a project and had to wrangle some messy data using Pandas. New project means new ideas for articles and so here I am with an article about how to work with messy data using Pandas in Python. I will be covering only some of the basics that you will need to know for most of your data analysis projects. So without wasting any time let’s begin!

5 Lessons From my Microsoft Internship

Hi lovely people! 👋 A week ago my internship at Microsoft ended. I am very fortunate to have been able to intern at all this summer, let alone at Microsoft. I learned quite a lot during the summer and was fortunate enough to be a part of an amazing team. I wanted to take a moment and share some important lessons I learned. Some of these are new and some were learned at my previous internship and…

Interview With Justin Duke

Hi everyone! 👋 I recently sat down with Justin Duke, an engineer at Stripe, and talked about tech, startups and time management. Along with a full-time job, Justin runs two startups (Buttondown, Spoonbill), manages two weekly newsletters, runs, and volunteers. Come learn about how he does it all! This is the trial run of a podcast idea I have had for a while. I might continue recording similar…

Understanding and Decoding a JPEG Image using Python

Hi everyone! 👋 Today we are going to understand the JPEG compression algorithm. One thing a lot of people don’t know is that JPEG is not a format but rather an algorithm. The JPEG images you see are mostly in the JFIF format (JPEG File Interchange Format) that internally uses the JPEG compression algorithm. By the end of this article, you will have a much better understanding of how the…

Reverse Engineering Nike Run Club Android App Using Frida

Hi everyone! 👋 If you have been following my blog then you might have already read the article on reverse engineering an Android app by writing custom smali code. I am still very much a reverse engineering beginner so after that article, I got to learn about Frida. I was told that Frida is much faster and a lot easier for scenarios where I want to snoop on functions. Well, I am glad to report…

Let's Reverse Engineer an Android App!

I had always wanted to learn how to reverse engineer Android apps. There were people out there who knew how to navigate and modify the internals of an APK file and I wasn’t one of them. This had to be changed but it took a long time for that to happen. In this post, I will show you how I was able to reverse engineer an Android app, add some debug statements, and figure out how certain query…

Help! My browser isn't connecting to public WiFi!

Have you ever been to a coffee shop and tried connecting to the public WiFi only to find out that your browser isn’t automatically opening up the router login page? These situations suck and happen far too often with all of us. I recently got a new Linux based machine and Firefox wasn’t successfully detecting the hotspot access page. It was telling me that there was an SSL error but…

Privacy Preserving Google Analytics Alternatives

Hi everyone! 👋 Lately I have been restructuring my online presence and that included running this blog using a static site generator. During this process, I decided to also look for privacy-preserving Google Analytics alternatives. When concerned with website analytics, the default solution most people reach out to is Google Analytics but there are good reasons for not using GA. This post will…

9 Tips For Better Scripting Experience

During my day to day work, I have had to do a lot of scripting. This can range from running short tests in Docker containers to running super long processes in Azure Batch service. I have used Bash and Python for these purposes and learned quite a few useful techniques along the way. I am sharing them here in hopes that they might save you some time and you don’t have to learn them the…

How to Deploy old Django project using NGINX, Docker and UWSGI

Hi everyone! 👋 I maintain an old website for a client that was originally developed in 2015. It hasn’t been updated for the last 5 years and uses Django 1.7 and some Django extensions which haven’t been updated for Django 3. I recently decided to move the website to a new server and had to repackage the Django code in a Docker container. It took me some time to get it working…

Why I Moved Away From Wordpress.com

Hi everyone! 👋 Quite a few of you got redirected to this website from my old Python Tips blog. The old blog was based on Wordpress and I recently moved everything to Hugo. I am still in the process of figuring certain things out but so far the transition has been fairly smooth. I alluded to this post a while ago and told you all that I will write down my reasoning for why I moved away from…

Migrating from Wordpress.com to Hugo With Comments

Hi beautiful people! 👋 Recently I decided to go all-in on static site generator, Hugo, and move over my Python Tips blog from Wordpress to Hugo. I will share the exact steps I took during this migration. It was slightly more involved than I would have liked. I will not share the reasoning behind why I moved to Hugo in this post, but rather just the details of how the process went.

Docker attach vs exec & When to Use What

Hello lovely people! 👋 During my day to day work with SONiC I have to launch new Docker containers and run commands within those containers. I usually have an ENTRYPOINT or CMD defined in my Dockerfile which means that there is always a default process that starts when I run my Docker images. When I started working with Docker I would always use the attach command to connect to a running…

Account Hacked, Send $2000 in Bitcoin

Hi everyone! 👋 Someone I know recently got an email informing them that their account had been hacked. The subject of the email had their password and the email went like this: 𝙸𝚝 𝚜𝚎𝚎𝚖𝚜 𝚝𝚑𝚊𝚝, xxxxxxxx, 𝚒𝚜 𝚢𝚘𝚞𝚛 𝚙𝚊𝚜𝚜𝚠𝚘𝚛𝚍. 𝙸 𝚛𝚎𝚚𝚞𝚒𝚛𝚎 𝚢𝚘𝚞𝚛 𝚌𝚘𝚖𝚙𝚕𝚎𝚝𝚎 𝚊𝚝𝚝𝚎𝚗𝚝𝚒𝚘𝚗 𝚏𝚘𝚛 𝚝𝚑𝚎 𝚝𝚑𝚎 𝚗𝚎𝚡𝚝 𝟸𝟺 𝚑𝚘𝚞𝚛𝚜, 𝚘𝚛 𝙸 𝚠𝚒𝚕𝚕 𝚌𝚎𝚛𝚝𝚊𝚒𝚗𝚕𝚢 𝚖𝚊𝚔𝚎…

Software Engineering Within SpaceX

Hi everyone! 👋 I am sure quite a few of you must have seen the SpaceX launch this past Saturday. It was an amazing and historic event. Millions of people were watching it live on YouTube and elsewhere. With each passing day, we are getting closer to commercial space flights and I have to agree I am excited. In addition to fueling my excitement about space travel, this launch also made me curious…

Setting Up Passwordless SSH and Alias For Remote Login

Hi lovely people! 👋 Long time! If you guys are wondering what I have been up-to, don’t worry. I am doing well and currently in the process of writing a life update post. Till then enjoy this short tutorial. By the end of this tutorial you will be able to ssh into a remote machine without typing in its IP or the password in your terminal. This is extremely helpful when you are working with…

Benedict Cumberbatch Digital Portrait (Procreate)

Hi everyone! 👋 It’s a tough time for everyone and we are all doing what we can to stay sane. I haven’t written on the blog in a long time and now I feel like I have all the time in the world to do it. I have started focusing more on my art and just made this portrait of Benedict Cumberbatch. This piece was done in Procreate on an iPad.

Making Generative Portraits Using Processing

Hi everyone! 👋 Haven’t talked to you guys for a while. Hope things are going well on your end. Last semester I was studying abroad in Budapest but now I am back at Colgate. I had the time of my life traveling all over Europe and meeting/staying with interesting people. I will try to write an article about that soon. Till then sit tight and enjoy this article about generative art.

First Step into the World of Generative Art

Hi people! 👋 Hope everything is going well with you all. I recently started exploring graphics and processing. Processing is a wonderful software which allows you to program graphics very easily. You can get some amazing results with only a few lines of code. I have produced some basic sketches so far. I am going to link them below. Hope you like (at least some) them 😁 If you want to learn how…

Filtering & Closing Pull Requests on GitHub using the API

Hi everyone! 👋 In this post, I am going to show you how you can use the GitHub API to query Pull Requests, check the content of a PR and close it. The motivation for this project came from my personal website. I introduced static comments on the website using Staticman and only after a day or two, got bombarded with spam. I hadn’t enabled Akismet or any honey pot field so it was kinda expected.

Looking for an internship for Summer 2020

Update: Thank you so much! I got an amazing opportunity with Azure Cloud Networking team at Microsoft 🙂 Hi lovely people! 👋 Hope everything is going well on your end. I asked you guys last year for helping me find a kick-ass internship and you all came through. I ended up working at ASAPP over the summer and had an awesome time. I wrote an article about what I learned during my internship.

Project Greenhouse Using Arduino, Raspberry Pi & Sensors

Hi lovely people! 👋 A couple of months ago I wrote a couple of articles on how to connect different sensors and an LCD to an Arduino. However, I didn’t write one final article about how these things all fit together to form a greenhouse monitoring system. I don’t think I will be able to get to it anytime soon (lack of time for a detailed tutorial). Therefore, I decided to just write…

My Internship Experience at ASAPP

Hi everyone! 👋 This past summer I interned at ASAPP. I had an amazing time and learned quite a lot. I worked with Docker, Kubernetes, Kafka, Redis, Rabbit MQ, Golang, react and typescript. I was a part of the “routing team” and spent most of my time on implementing new features. This often meant writing the backend code in go and then (sometimes) writing the front-end code in…

Python mind-teaser: Make the function return True

Hi everyone! 👋 I was browsing /r/python and came across this post: The challenge was easy. Provide such an input that if 1 is added to it, it is the instance of the same object but if 2 is added it is not. Solution 1: Custom class The way I personally thought to solve this challenge was this: def check(x): if x+1 is 1+x: return False if x+2 is not 2+x: return False return True class Test(int):…

Staticman Comment Notifications Setup Using Mailgun

Hi people! 👋 This post is about how to set up email notifications for new comments on your blog using staticman. This way if someone posts a comment on an article can automatically get updated in case someone else makes a new comment on the same article. It took me a while to figure out how to do it properly. I will take you through each step so that you don’t have to bang your head against…

Running Staticman on Hugo Blog With Nested Comments

Hi everyone! 👋 After transitioning to a static blog/website, I had one problem. My blog no longer had comments functionality. Yes, I could have used Disqus but I personally hate it. It is bloated with a lot of unwanted code. I did some search a while ago but couldn’t find anything. I did a more serious search a couple of weeks ago and stumbled upon staticman and holy moly it is the best…

Setting up dev environment for SciPy

Hi everyone! 👋 I got an email from someone pretty recently who wanted to setup a dev environment for SciPy. He had made changes to the source code of SciPy and now wanted to test if his changes were working or not. He had gotten so far without actually testing the code. In this post I will share details on how to setup a dev environment the right way. I will focus mainly on Mac OS.