PageSourceSearch

https://yasoob.me/

html yasoob.me collected 2026-10-03 21:37:26 UTC 16,575 bytes, 256 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-us">
3<head>
4
5
6  <meta charset="utf-8">
7  <meta name="author" content="Muhammad Yasoob Ullah Khalid">
8  <meta name="keywords" content="Yasoob, Yasoob Khalid, Python Tips, Intermediate Python, Pakistan, Programmer, Blogger, Muhammad Yasoob Ullah Khalid, Software Engineer">
9  
10    <meta property="og:image" content="https://yasoob.me/images/profile.jpg">
11  
12  <meta property="og:url" content="https://yasoob.me/">
13  <meta property="og:title" content="Yasoob Khalid">
14  <meta property="og:type" content="profile">
15  
16  <meta name="description" content="Yasoob Khalid is the author of Intermediate Python and the Practical Python Projects books. Millions of people have read his work. He helps programmers level up by writing blog posts, giving talks, and leading workshops.">
17  <meta property="og:description" content="Yasoob Khalid is the author of Intermediate Python and the Practical Python Projects books. Millions of people have read his work. He helps programmers level up by writing blog posts, giving talks, and leading workshops.">
18  <meta name="twitter:description" content="Yasoob Khalid is the author of Intermediate Python and the Practical Python Projects books. Millions of people have read his work. He helps programmers level up by writing blog posts, giving talks, and leading workshops.">
19  
20  <meta name="twitter:site" content="@yasoobkhalid">
21  <meta name="twitter:title" content="Yasoob Khalid">
22  <meta name="twitter:card" content="summary">
23  <meta property="profile:first_name" content="Muhammad Yasoob Ullah">
24  <meta property="profile:last_name" content="Khalid">
25  <meta property="profile:gender" content="male">
26  <meta name="google-site-verification" content="h-RrQYj6aNBgcXU7M49xoUoksuI0WuJnbcJbFPJMqc4">
27  
28  
29  <link rel="icon" type="image/png" href="/images/logo.png">
30
31
32  <meta charset="utf-8">
33  <meta name="generator" content="Hugo 0.88.1" />
34  <meta name="viewport" content="width=device-width, initial-scale=1.0">
35  <link href="//fonts.googleapis.com/css?family=Roboto:400,700" rel="stylesheet" type="text/css">
36  <link id="light" rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/10.0.0/styles/github.min.css">
37  <link id="dark" rel="alternate stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/10.0.0/styles/dracula.min.css">
38  <link rel="stylesheet" href="/css/normalize.css">
39  <link rel="stylesheet" href="/css/skeleton.css">
40  <link rel="stylesheet" href="/css/custom.css">
41  <link rel="alternate" href="/index.xml" type="application/rss+xml" title="Yasoob Khalid">
42  <link rel="webmention" href="https://webmention.io/yasoob.me/webmention" />
43  <link rel="pingback" href="https://webmention.io/yasoob.me/xmlrpc" />
44  <title>Yasoob Khalid</title>
45</head>
46<body>
47<div class="announcement">
48  <p>Practical Python Projects book is <a href="https://practicalpython.yasoob.me/">now available!</a> Learn how to implement 12 end-to-end projects to enhance your Python knowledge.</p>
49</div>
50<div class="container">
51  <header onclick="nav_display()" id="nav" class="hide-nav" role="banner">
52    <div class="header-logo">
53      <a href="/"><img alt="website logo" src="/images/profile.jpg" width="60" height="60" alt="Yasoob Khalid"></a>
54    </div>
55    <h1 class="site-title"><a href="/"><img alt="website logo" src="/images/logo.png" /></a>Yasoob Khalid<span class="toggle"></span></h1>
56    <p class="tag-line">Author, Blogger &amp; artist who can&#39;t make up his mind.</p>
57    <div class="nav-links">
58      <nav>
59        <ul>
60          <li><a href="/">Home</a></li>
61          <li><a href="/arts">Art Projects</a></li>
62          <li><a href="https://yasoob.github.io/learn-git" target="_blank">Learn Git</a></li>
63          <li><a href="/about">About</a></li>
64          <li>
65            <a id="darkModeToggle">🌓</a>
66            <a href="/index.xml"><img alt="rss" class="rss" src="/images/rss.ico"></a>
67          </li>
68        </ul>
69      </nav>
70      
70<script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?serve=CE7IP53Y&placement=yasoobme" id="_carbonads_js"></script>
70
71      <h3 class="book-header">My Books</h3>
72      <div class="book-promo">
73        <a href="https://practicalpython.yasoob.me/"><img src="/images/practical-python.png"/></a>
74        <h4><a href="https://practicalpython.yasoob.me/">Practical Python Projects</a></h4>
75        <p>In 325+ pages I will help you implement 12 end-to-end projects to enhance your Python knowledge.</p>
76      </div>
77      <div class="book-promo">
78        <a href="https://book.pythontips.com/"><img src="/images/intermediate-python.png"/></a>
79        <h4><a href="https://book.pythontips.com/">Intermediate Python</a></h4>
80        <p>In this free, open-source, and widely-read book, you will learn some intermediate Python concepts.</p>
81      </div>
82    </div>
83  </header>
84
85
86	<main class="homepage" role="main">
87		<span class="git-source">
88			<a target="_blank" href="https://github.com/yasoob/personal_blog/tree/master/content/">Source</a>
89		</span>
90		<div>
91			<h1><span class="emoji">👋</span> Hi everyone!</h1>
92			<p>I am <b>Yasoob</b>! You might know me from <a href="https://practicalpython.yasoob.me">Practical Python Projects</a> or the <a href="https://book.pythontips.com">Intermediate Python</a> book.
93			   Welcome to my personal blog which is going to be the new home for all of my old and new articles. You can turn on "dark mode" by clicking on the moon (right before the RSS icon) in the side-bar. I hope you enjoy your stay 😊
94			</p>
95		</div>
96	</main>
97	<div class="homepage_signup">
98		<div id="mc_embed_signup">
99    <form action="https://wordpress.us3.list-manage.com/subscribe/post?u=20b1036063aec6dbf068cc8c0&amp;id=b8eab6bd54"
100        method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank"
101        novalidate>
102        <div id="mc_embed_signup_scroll">
103            <h2>Newsletter</h2><span id="close-btn">×</span>
104            <p>If you liked what you read then I am sure you will enjoy a newsletter of the
105                content I create. I send it out every other month. It contains new stuff that I make, links
106                I find interesting on the web, and occasional discount coupons for my book. 
107                Join the 5000+ other people who receive my newsletter:</p>
108            <div class="mc-field-group">
109                <input placeholder="Your Email" type="email" value="" name="EMAIL" class="required email"
110                    id="mce-EMAIL">
111            </div>
112            <div id="mce-responses" class="clear">
113                <div class="response" id="mce-error-response" style="display:none"></div>
114                <div class="response" id="mce-success-response" style="display:none"></div>
115            </div>
116            
117            <div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text"
118                    name="b_20b1036063aec6dbf068cc8c0_f6ee678b65" tabindex="-1" value=""></div>
119            <div class="clear"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe"
120                    class="button"></div>
121            <p class="subtext">I send out the newsletter once every other month. No spam, I promise + you can unsubscribe at anytime</p>
122        </div>
123    </form>
124</div>
125	</div>
126	<div class="homepage-articles" role="main">
127		<h1><span class="emoji">✍️</span> Latest Articles</h1>
128		
129			<article itemscope itemtype="http://schema.org/Blog">
130				<span class="entry-meta"><time itemprop="datePublished" datetime="2025-12-27">Dec 27, 2025</time></span>
131				<h2 class="entry-title" itemprop="headline"><a href="/posts/recording-raw-etw-events/">Debugging ETW Event Drops in High-Throughput Applications</a></h2>
132				
133					<p class="teaser">We were losing millions of diagnostic events in production, but I couldn&#39;t touch the active monitoring agent. How do you fix a system you can&#39;t pause? In this post, I share a technique for running parallel ETW sessions to &#34;spy&#34; on your application&#39;s telemetry and diagnose high-frequency event drops without breaking the existing pipeline.</p>
134				
135				<p class="wordcount">(1189 words)</p>
136			</article>
137		
138			<article itemscope itemtype="http://schema.org/Blog">
139				<span class="entry-meta"><time itemprop="datePublished" datetime="2025-06-22">Jun 22, 2025</time></span>
140				<h2 class="entry-title" itemprop="headline"><a href="/posts/converting-sourcemap-to-original-sourcecode/">Converting Sourcemaps to Original JavaScript/TypeScript Sourcecode</a></h2>
141				
142					<p class="teaser">In this tutorial, you will learn how to convert the sourcemap files to original JavaScript/TypeScript sourcecode using open source tools. You will use mitmproxy and Sourcemapper to achieve this goal.</p>
143				
144				<p class="wordcount">(751 words)</p>
145			</article>
146		
147			<article itemscope itemtype="http://schema.org/Blog">
148				<span class="entry-meta"><time itemprop="datePublished" datetime="2024-08-05">Aug 05, 2024</time></span>
149				<h2 class="entry-title" itemprop="headline"><a href="/posts/breaking-kakasoft-usb-copy-protection/">Breaking Kakasoft USB Copy Protection</a></h2>
150				
151					<p class="teaser">I stumbled upon a USB drive locked down with Kakasoft&#39;s USB Copy Protection software. Challenge accepted! I decided to crack this DRM protection wide open. In this article, I&#39;ll take you through every step of the process, sharing my strategies and thought process so you can break free from such flimsy defenses too.</p>
152				
153				<p class="wordcount">(611 words)</p>
154			</article>
155		
156			<article itemscope itemtype="http://schema.org/Blog">
157				<span class="entry-meta"><time itemprop="datePublished" datetime="2024-02-23">Feb 23, 2024</time></span>
158				<h2 class="entry-title" itemprop="headline"><a href="/posts/running-go-web-assembly-from-elixir/">Running Go code from Elixir Using Web Assembly</a></h2>
159				
160					<p class="teaser">In this article, I will show you how to compile Go code to target WAS
160I and run it from an Elixir host. You will also learn how to pass data to Go and get a response back using pipes.</p>
161				
162				<p class="wordcount">(1025 words)</p>
163			</article>
164		
165			<article itemscope itemtype="http://schema.org/Blog">
166				<span class="entry-meta"><time itemprop="datePublished" datetime="2023-08-26">Aug 26, 2023</time></span>
167				<h2 class="entry-title" itemprop="headline"><a href="/posts/how-to-use-vision-framework-via-pyobjc/">How to Use Apple Vision Framework via PyObjC for Text Recognition</a></h2>
168				
169					<p class="teaser">Let&#39;s learn how to make use of Apple&#39;s Vision Framework from Python (via PyObjC) to detect and recognize text in images. Along the way, you will learn quite a bit about how to use PyObjC to interface with different Objective C classes, functions and methods.</p>
170				
171				<p class="wordcount">(2378 words)</p>
172			</article>
173		
174			<article itemscope itemtype="http://schema.org/Blog">
175				<span class="entry-meta"><time itemprop="datePublished" datetime="2023-02-12">Feb 12, 2023</time></span>
176				<h2 class="entry-title" itemprop="headline"><a href="/posts/how-to-efficiently-reorder-or-rerank-items-in-database/">How to Efficiently Reorder or Rerank Items in Database</a></h2>
177				
178					<p class="teaser">Ever wondered how Jira and Trello store the order of tasks or issues? How they can effortlessly reorder items in the database even when there are a million items? In this article, you will gain an understanding of reordering and reranking techniques and how to store order information in the database to facilitate efficient reordering.</p>
179				
180				<p class="wordcount">(1718 words)</p>
181			</article>
182		
183			<article itemscope itemtype="http://schema.org/Blog">
184				<span class="entry-meta"><time itemprop="datePublished" datetime="2022-08-11">Aug 11, 2022</time></span>
185				<h2 class="entry-title" itemprop="headline"><a href="/posts/spotify-synced-and-translated-lyrics-display/">Project Write-up: Display Spotify lyrics on external display</a></h2>
186				
187					<p class="teaser">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. I was really intrigued so I decided to give it a go. In this article I am going to talk about the whole thought process I went through while trying to figure out a solution as I think that part is often missing from programming tutorials.</p>
188				
189				<p class="wordcount">(1564 words)</p>
190			</article>
191		
192			<article itemscope itemtype="http://schema.org/Blog">
193				<span class="entry-meta"><time itemprop="datePublished" datetime="2022-04-28">Apr 28, 2022</time></span>
194				<h2 class="entry-title" itemprop="headline"><a href="/posts/setting-up-custom-root-domain-webflow-cloudflare/">Setting Up Custom Root Domain using Webflow and Cloudflare</a></h2>
195				
196					<p class="teaser">Are you trying to set up a custom root domain with Webflow &amp; Cloudflare but it is not working? I recently did the same and faced some issues. Let me save you some time and show you how to set it up. By the end, you will have working redirection from www subdomain to your root domain.</p>
197				
198				<p class="wordcount">(1014 words)</p>
199			</article>
200		
201			<article itemscope itemtype="http://schema.org/Blog">
202				<span class="entry-meta"><time itemprop="datePublished" datetime="2022-04-24">Apr 24, 2022</time></span>
203				<h2 class="entry-title" itemprop="headline"><a href="/posts/extracting-whatsapp-messages-from-ios-backup/">Extracting WhatsApp messages from an iOS backup</a></h2>
204				
205					<p class="teaser">Have you ever been interested in how Apple saves the iOS backup files and how you can extract particular files from a backup? In this article, I will show you the different encryptions involved in creating an iOS backup, how to decrypt the data, and how to extract WhatsApp chats from an iOS backup.</p>
206				
207				<p class="wordcount">(2185 words)</p>
208			</article>
209		
210			<article itemscope itemtype="http://schema.org/Blog">
211				<span class="entry-meta"><time itemprop="datePublished" datetime="2022-04-23">Apr 23, 2022</time></span>
212				<h2 class="entry-title" itemprop="headline"><a href="/posts/web-automation-with-selenium/">Web Automation With Selenium And Python</a></h2>
213				
214					<p class="teaser">In this article we will take a look at how we can automate basic web interactions using Selenium. By the end of this article you will have an automated booking bot that can reserve court space for you automatically. You will also learn about XPath and how to traverse an HTML document using Python, LXML and XPath.</p>
215				
216				<p class="wordcount">(2578 words)</p>
217			</article>
218		
219		<a href="/posts" class="button all-articles">All articles</a>
220	</div>
221
222
223    <footer role="contentinfo">
224        <div class="hr"></div>
225        <div class="footer-link">
226            <a href="mailto:[email protected]" rel="me" target="_blank">Email</a>
227            <a href="https://twitter.com/yasoobkhalid" rel="me" target="_blank">Twitter</a>
228            
229            <a href="https://www.linkedin.com/in/yasoob/" rel="me" target="_blank">LinkedIn</a>
230            <a href="https://github.com/yasoob" rel="me" target="_blank">GitHub</a>
231            
232        </div>
233        <div class="copyright">
234            <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">
235                <img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png">
236              </a>
237        </div>
238    </footer>
239
240</div>
241
242<script>
vendor: 348 bytes, lines 242-247
242
243    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
244    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
245    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
246    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
247    ga('create', '
247UA-97849776-1
vendor: 40 bytes, lines 247-248
247', 'auto');
248    ga('send', 'pageview');
249</script>
249
250
251<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/highlight.min.js"></script>
vendor: 1 bytes, line 251
251
252<script type='text/javascript' src='//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js'></script>
252<script type='text/javascript'>(function($) {window.fnames = new Array(); window.ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';fnames[3]='ADDRESS';ftypes[3]='address';fnames[4]='PHONE';ftypes[4]='phone';}(jQuery));var $mcj = jQuery.noConflict(true);</script>
vendor: 1 bytes, line 252
252
253<script src="/js/main.js"></script>
253
254</body>
255</html>
256

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.