<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Ansaricodes on Medium]]></title>
        <description><![CDATA[Stories by Ansaricodes on Medium]]></description>
        <link>https://medium.com/@ansaricodes?source=rss-b56175230135------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/0*naYiPtd0ISogCWTX</url>
            <title>Stories by Ansaricodes on Medium</title>
            <link>https://medium.com/@ansaricodes?source=rss-b56175230135------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Mon, 08 Jun 2026 14:17:28 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@ansaricodes/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[ Exploring Global Website Traffic & Engagement in 2026]]></title>
            <link>https://medium.com/@ansaricodes/exploring-global-website-traffic-engagement-in-2026-3b0db1550153?source=rss-b56175230135------2</link>
            <guid isPermaLink="false">https://medium.com/p/3b0db1550153</guid>
            <category><![CDATA[website-traffic]]></category>
            <category><![CDATA[data-analysis]]></category>
            <category><![CDATA[notebook]]></category>
            <category><![CDATA[kaggle]]></category>
            <category><![CDATA[python]]></category>
            <dc:creator><![CDATA[Ansaricodes]]></dc:creator>
            <pubDate>Fri, 13 Feb 2026 16:43:17 GMT</pubDate>
            <atom:updated>2026-02-13T16:43:17.728Z</atom:updated>
            <content:encoded><![CDATA[<p>I just published a notebook analyzing <strong>1500 of the world’s top websites</strong> — looking at their <strong>categories, user behavior, and market reach</strong>. 📊 From correlations between <strong>bounce rate, session duration, and stickiness</strong> to insights on <strong>TLD usage and primary markets</strong>, this notebook uncovers patterns in the <strong>attention economy</strong>.</p><p>💡 Key takeaways:</p><ul><li>Big websites can have low engagement; smaller ones can have highly sticky users.</li><li>Bounce rate negatively impacts both session time and stickiness.</li><li>.com domains dominate the internet, with 72% usage.</li><li>User behavior patterns are surprisingly universal.</li></ul><p>Check it out and explore the data yourself! 🔗 <a href="https://www.kaggle.com/code/mabubakrsiddiq/global-website-traffic-engagement-analysis">https://www.kaggle.com/code/mabubakrsiddiq/global-website-traffic-engagement-analysis</a></p><p>If you find it useful, please <strong>upvote, share, and comment your thoughts!</strong> 🚀</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3b0db1550153" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Just released OCR dataset for ENGLISH and CHINESE (SIMPLIFIED)]]></title>
            <link>https://medium.com/@ansaricodes/just-released-ocr-dataset-for-english-and-chinese-simplified-cf3206caaab9?source=rss-b56175230135------2</link>
            <guid isPermaLink="false">https://medium.com/p/cf3206caaab9</guid>
            <category><![CDATA[data]]></category>
            <category><![CDATA[kaggle]]></category>
            <category><![CDATA[ocr]]></category>
            <dc:creator><![CDATA[Ansaricodes]]></dc:creator>
            <pubDate>Wed, 11 Feb 2026 14:21:44 GMT</pubDate>
            <atom:updated>2026-02-11T14:21:44.525Z</atom:updated>
            <content:encoded><![CDATA[<p><strong>🚀 I just released a Multi-Lingual OCR Dataset!</strong></p><p>Link: <a href="https://www.kaggle.com/datasets/mabubakrsiddiq/clear-bg-ocr-dataset-eng-and-zh-22k-images">https://www.kaggle.com/datasets/mabubakrsiddiq/clear-bg-ocr-dataset-eng-and-zh-22k-images</a></p><p>I’m excited to share a brand-new dataset I created that contains synthetic OCR images for both English and Chinese text 🖋️🇨🇳🇬🇧</p><p><strong>Each sample includes:</strong></p><p>✨ Clear backgrounds</p><p>✨ Random fonts &amp; font sizes</p><p>✨ Optional blur for realism</p><p>✨ Full metadata (font, size, blur, dimensions, etc.)</p><p>✨ Separate English &amp; Chinese folders</p><p><strong>This dataset is great for:</strong></p><p>🔹 OCR research</p><p>🔹 Deep learning text-recognition models</p><p>🔹 Font/style classification</p><p>🔹 Multi-lingual AI experiments</p><p>🔹 Language-learning tech</p><p>I built this using automated image generation with Python, making it fully scalable and customizable.</p><p>If you’re working with computer vision or OCR, feel free to explore, experiment, and use it in your projects! 🚀</p><p>Let me know your thoughts — feedback is always welcome!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cf3206caaab9" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[I am kaggle notebook expert now!]]></title>
            <link>https://medium.com/@ansaricodes/i-am-kaggle-notebook-expert-now-f6968c7c9cdd?source=rss-b56175230135------2</link>
            <guid isPermaLink="false">https://medium.com/p/f6968c7c9cdd</guid>
            <category><![CDATA[code]]></category>
            <category><![CDATA[dataset]]></category>
            <category><![CDATA[kaggle]]></category>
            <category><![CDATA[medals]]></category>
            <category><![CDATA[achievement]]></category>
            <dc:creator><![CDATA[Ansaricodes]]></dc:creator>
            <pubDate>Fri, 16 Jan 2026 17:45:02 GMT</pubDate>
            <atom:updated>2026-01-16T17:49:03.057Z</atom:updated>
            <content:encoded><![CDATA[<p>In this month (January, 2026), I was focusing on my kaggle profile. I became kaggle datasets expert (currently ranked 245 in ~8400) recently. Some days after that, today (16th Jan, 2026), I am officially kaggle notebook expert.<br>Visit my Profile: <a href="https://www.kaggle.com/mabubakrsiddiq">https://www.kaggle.com/mabubakrsiddiq</a><br>My datasets: <a href="https://www.kaggle.com/mabubakrsiddiq/datasets">https://www.kaggle.com/mabubakrsiddiq/datasets</a><br>My Notebooks: <a href="https://www.kaggle.com/mabubakrsiddiq/code">https://www.kaggle.com/mabubakrsiddiq/code</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f6968c7c9cdd" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ProgressivePy]]></title>
            <link>https://medium.com/@ansaricodes/progressivepy-c41cdf74b564?source=rss-b56175230135------2</link>
            <guid isPermaLink="false">https://medium.com/p/c41cdf74b564</guid>
            <category><![CDATA[progress-bar]]></category>
            <category><![CDATA[ui]]></category>
            <category><![CDATA[tqdm]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[progressivepy]]></category>
            <dc:creator><![CDATA[Ansaricodes]]></dc:creator>
            <pubDate>Sun, 10 Aug 2025 04:03:33 GMT</pubDate>
            <atom:updated>2025-08-10T04:03:33.416Z</atom:updated>
            <content:encoded><![CDATA[<blockquote>Elegant, customizable progress bars and spinners for Python — in both terminal and Jupyter notebook environments!</blockquote><blockquote><a href="https://github.com/Ansari-Codes/progressive_py"><strong>Github Repo</strong></a></blockquote><figure><img alt="." src="https://cdn-images-1.medium.com/max/940/1*z9pldwetJJTdp0_FApGsjg.png" /></figure><h3>Features</h3><p>- <strong>Highly customizable</strong>: Colors, styles, templates, and more.<br>- <strong>Terminal &amp; Notebook support</strong>: Works seamlessly in scripts, CLI, and Jupyter/IPython.<br>- <strong>Nested &amp; parallel bars</strong>: Track multiple tasks at once.<br>- <strong>Spinners</strong>: Animated indicators for indeterminate tasks.<br>- <strong>Low dependencies</strong>: Lightweight and easy to install.<br>- <strong>Thread management</strong>: Run multiple bars/spinners concurrently.</p><h3>Installation from Git</h3><blockquote>pip install git+<a href="https://github.com/Ansari-Codes/progressive_py.git">https://github.com/Ansari-Codes/progressive_py.git</a></blockquote><h3>Quick Start</h3><h4>Terminal Progress Bar</h4><pre>from progressive_py.progress_bar import simple, time<br>for i in simple(range(100), txt_lf=&quot;Processing {iters} &quot;):<br> time.sleep(0.1)</pre><h4>Styled Progress Bar</h4><pre>from progressive_py.manager import AssetsManager<br>from progressive_py.progress_bar import simple, time<br>mgr = AssetsManager()<br>theme = mgr.load(&#39;progress_bar&#39;, &#39;theme&#39;, &#39;neon_wave&#39;)<br>style = mgr.load(&#39;progress_bar&#39;, &#39;style&#39;, &#39;its_cool&#39;)<br>for i in simple(range(100),<br> dict( # pass theme seperatly as dict, its safer<br> **theme,<br> **style<br> ),<br> head = &#39;&gt;&#39;, # change parameters of passed dict before<br> txt_lf=&#39;You\&#39;re being hacked… {percent:.0f}% |&#39;,<br> txt_rt=&#39;| ETA: {eta} | Elapsed: {elapsed}&#39;<br> ):<br> time.sleep(0.05)</pre><p>Terminal Spinner</p><pre>from progressive_py import spinner<br>import time<br>from progressive_py.manager import AssetsManager<br>mgr = AssetsManager()<br>style = mgr.load(&#39;spinner&#39;, &#39;style&#39;, &#39;dots&#39;)<br>theme = mgr.load(&#39;spinner&#39;, &#39;theme&#39;, &#39;sunset&#39;)<br>spinner = spinner.Spinner(<br>            seq=style, spn_side=&#39;left&#39;, <br>            text=&#39; Loadings &#39;, **theme<br>            )<br>spinner.start()<br>time.sleep(2)<br>spinner.stop()</pre><p>Notebook Progress Bar</p><pre>from progressive_py.ntbk_progbar import NotebookProgressBar<br>from progressive_py.utils import gradient_colors<br>from progressive_py.manager import AssetsManager<br>import time<br>style = AssetsManager().load(&#39;progress_bar&#39;, &#39;style&#39;, &#39;its_cool&#39;)<br>pb = NotebookProgressBar({<br> **style,<br> &#39;txt_lf&#39;: &quot;I&#39;m Fast… [{percent:.0f}%] | &quot;,<br> &#39;txt_rt&#39;: &quot;| ETA {eta} | Elapsed {elapsed}&quot;,<br> &#39;colors&#39;: gradient_colors(&#39;#00ff00&#39;, &#39;#0000ff&#39;, 15),<br> &#39;paint&#39;: &#39;bar-by-bar&#39;,<br> &#39;text_color&#39;: [&#39;#efa&#39;, &#39;#afe&#39;],<br> &#39;length&#39;: 15,<br>})<br>total = 100<br>for i in range(total + 1):<br> pb.update(i/ total, i, total)<br> time.sleep(0.03)<br>print(&quot;Progress Complete!&quot;)</pre><h4>Notebook Spinner</h4><pre>from progressive_py.ntbk_spinner import NotebookDivSpinner<br>import time<br>spn = NotebookDivSpinner({&quot;text&quot;: &quot;Loading&quot;})<br>spn.start()<br>time.sleep(2)<br>spn.stop()</pre><h4>Style Spinner</h4><pre>from progressive_py.ntbk_spinner import NotebookDivSpinner<br>import time<br>spinner = NotebookDivSpinner(<br> text=&quot;Loading…&quot;,<br> final_text=&quot;Done!&quot;,<br> speed=1.2,<br> refresh=0.1,<br> fg_text=[&quot;#2afadf&quot;, &quot;#00c9ff&quot;, &quot;#ff0080&quot;, &quot;#7928ca&quot;],<br> bg_text=[&quot;#111111&quot;, &quot;#222222&quot;, &quot;#333333&quot;],<br> clr_interval=[0.4],<br> container_css={<br> &quot;box-shadow&quot;: &quot;0 4px 12px rgba(0, 0, 0, 0.25)&quot;,<br> &quot;background&quot;: &quot;#1a1a1a&quot;,<br> &quot;border-radius&quot;: &quot;10px&quot;,<br> &quot;padding&quot;: &quot;6px 14px&quot;,<br> &quot;gap&quot;: &quot;10px&quot;,<br> &quot;display&quot;: &quot;inline-flex&quot;,<br> &quot;align-items&quot;: &quot;center&quot;,<br> &quot;margin&quot;: &quot;0px&quot;, # No top margin<br> &quot;max-width&quot;: &quot;fit-content&quot;<br> },<br> spinner={<br> &quot;spinner_css&quot;: {<br> &quot;width&quot;: &quot;20px&quot;,<br> &quot;height&quot;: &quot;20px&quot;,<br> &quot;border&quot;: &quot;4px solid #333&quot;, # Full border<br> &quot;border-top&quot;: &quot;4px solid #0ff&quot;, # Spinner highlight<br> &quot;border-radius&quot;: &quot;50%&quot;,<br> &quot;animation&quot;: &quot;spin 1s linear infinite&quot;<br> },<br> &quot;text_css&quot;: {<br> &quot;font-size&quot;: &quot;15px&quot;,<br> &quot;font-weight&quot;: &quot;bold&quot;<br> }<br> },<br> animation={ # Keyframes!<br> &quot;spin 1s linear infinite&quot;:<br> &quot;0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); }&quot;<br> }<br>)<br>spinner.start()<br>for i in range(21):<br> spinner.set_text(f&quot;&lt;b&gt;Loading…&lt;/b&gt; {i*5}%&quot;)<br> time.sleep(0.5)<br>spinner.stop()</pre><h3>Advanced Usage</h3><h4>Nested Progress Bars</h4><pre>from progressive_py.progress_bar import nested_bar, ProgressBar<br>import time<br>def task1(bar):<br> for i in range(100):<br> time.sleep(0.01)<br> bar.update(i/99, i+1, 100)<br>def task2(bar):<br> for i in range(50):<br> time.sleep(0.01)<br> bar.update(i/49, i+1, 50)<br>main = ProgressBar({&#39;line&#39;:2})<br>childs = {<br> &quot;Task1&quot;: [task1, {&quot;txt_lf&quot;: &quot;Task1 {percent:.0f}%&quot;}],<br> &quot;Task2&quot;: [task2, {&quot;txt_lf&quot;: &quot;Task2 {percent:.0f}%&quot;}]<br>}<br>nested_bar(main, childs)</pre><h4>Threaded Bars</h4><pre>from progressive_py.progress_bar import ProgressBar<br>from progressive_py.utils import BarThreadManager<br>import time<br>def example_task(bar, pause_event, stop_check, cool_down=0.05):<br> total = 100<br> for i in range(total):<br> if stop_check():<br> break<br> pause_event.wait()<br> time.sleep(cool_down)<br> bar.update(i / (total - 1), i + 1, total)<br>bar1 = ProgressBar({&#39;txt_lf&#39;: &#39;Task 1 {percent:.0f}% {eta} {elapsed}&#39;, &#39;line&#39;: 1})<br>bar2 = ProgressBar({&#39;txt_lf&#39;: &#39;Task 2 {percent:.0f}% {eta} {elapsed}&#39;, &#39;line&#39;: 0})<br>tasks = {<br> &quot;task1&quot;: [bar1, example_task],<br> &quot;task2&quot;: [bar2, example_task],<br>}<br>manager = BarThreadManager(tasks)<br>manager.start_all(cool_down=0.02)<br>manager.wait_all()<br>print(&quot;\nAll tasks completed.&quot;)</pre><blockquote>See github docs/* documentation for more info</blockquote><h4>Customization</h4><p>- <strong>Text templates</strong>: Use `{percent}`, `{iters}`, `{eta}`, `{elapsed}`, `{speed}` in labels.<br>- <strong>Colors</strong>: Pass color names or hex codes (`’#ffaa00&#39;`) for bars, spinners, and text.<br>- <strong>CSS/HTML</strong>: In notebooks, customize with inline CSS and SVG for advanced visuals.<br>- <strong>Thread control</strong>: Pause, resume, stop, and restart bars/spinners with `BarThreadManager`.</p><h4>Modules Overview</h4><ul><li><strong>progress_bar.py</strong>: Terminal progress bars (single, nested, parallel).<br>- <strong>spinner.py</strong>: Terminal spinners with color and threading.<br>- <strong>ntbk_progbar.py</strong>: Notebook progress bars with HTML/CSS styling.<br>- <strong>ntbk_spinner.py</strong>: Notebook spinners with advanced animation.<br>- <strong>utils.py</strong>: Color handling, terminal control, thread management, error classes.<br>- <strong>manager.py</strong>: Assets manager for progressive_py</li></ul><blockquote><strong>“Please share this document to others, and leave a comment to tell me whether my effort was right or wrong! This is my first contribution in Python libraries! Also, suggest me more features to add or directly contribute! no licensing!”</strong></blockquote><blockquote>Created with <strong>❤</strong> by <strong>Muhammad Abubakar Siddique Ansari</strong> (Python programmer for 2.5 Years…)</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c41cdf74b564" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>