Introducing AfsaneDB (Beta) – Now Available on Play Store!
Dive into the world of classic literature with AfsaneDB. Explore timeless masterpieces in an elegant and user-friendly app, designed for book lovers like you.
Ffmpeg is a gigantic library with
customizations that makes people like me happy. I'm a man of 'give me life
customization' kind, so it's a treat for me.
I do the same when I build my own software and apps - most people don't even
realize what I keep hidden in my apps, because layman don't need them or don't
want to go into complexities of learning them. But for power users it's a
blessing.
Ffmpeg is backbone of every
video/audio/downloader tool out there. Every app that you see for YouTube
download, Audio or Video manipulation online, be it web app, android app, iOS
app or desktop app, it's all based on ffmpeg more or less.
Anyway, over the years I have accumulated quite a lot of ffmpeg commands that
I use, and when I make something work/tweak perfectly according to my liking,
it goes into number of note taking apps that I have (scattered
everywhere).
This blog post is to keep a track of all
those commands so that I can come back here and pick those instead of going
through my stuff looking for 'that perfect command' again.
Mp4 to Mp3 (or any other format)
Simple and useful, one format to another.
ffmpeg -i input.mp4 -vn output.wav
The vn flag is optional - it's to say `video no` meaning drop the video. Of
course you can convert video to another video format, or audio to another
audio format or any permutation that you like.
Slow down the video/audio
I have experimented quite a lot of things, stretching the time and the pitch
shift etc. What gives us exact speed control is knowing your source, which is
usually 41 or 48 kHz.
Here's the command for an audio file that goes kaboom.
Flac is considered a lossless quality format by the way. So if you want exact
copy of audio from a video, use video to audio conversion and choose flac as
the output format.
Remove Silences from Video with Audio
So, you have a video that you just want to roughly chop up without doing any
actual editing. This is where auto-editor comes in. It's an
open-source
CLI for automatic video editing.
One caveat:
-35dB may be too aggressive or too lenient depending on your
recording. You may need to adjust the threshold depending on how much
background noise is present and how quiet the speech gets.
YouTube video
There's another lib made on top of ffmpeg, for everything YouTube or any
online video grabbing. You'll see a port of it in every language. It's called
`yt-dl` or another famous fork of it, `yt-dlp`.
You can get the whole video or a part of it. Example:
All those who are impressive orators imo, have this one thing in common: they
have normal SPEAKING tone while they speak in public. Not that painfully
formal and obviously fake one.
Be it Muzaffar Master or Imteyaz bhai in Kamptee markaz, or internationally
recognised like Nouman Ali Khan, Qasim Ali Shah, Mufti Tariq Masood and Dr.
Israr Ahmad.
Remember: it doesn't necessarily mean they use very simple words either. Dr.
Israr for example.
Tags: Public Speaking
#LearnedToday 22 by shakeeb.in
Bookmarks in browsers are not just bookmarks.🎉😄
Ever copied from Wikipedia? Those references are annoying, aren't they?
I used to remove them using regular expressions, which I'm not an expert
at, but manage to do stuff I want with Google's help.
The other day, I randomly checked it on SuperUser and found that you can use a
browser's bookmark to run JavaScript code.
Tada. I have a bookmark now, and when I click it, it removes all references
from Wikipedia text. Will write a short blog post and teach you guys how to
use it.
Tags: Technical
#LearnedToday 23 by shakeeb.in
Tags: GK
Soaps are considered as self-cleaning. So if you were not sharing it with
anyone because of your hygiene, well, don't be a douche bag and let them use
it.
You don't even have to wash it before use. Gross? I know, but that's how it
is.
Even if some bacteria stays on the soap, it is still soap. And you're are
going to use water eventually, so don't worry.
#LearnedToday 24 by shakeeb.in
Tags: Philosophy, Life
Fish-love vs True-love
To sum up, he says that it's not actually love when we love something/someone
because it pleases us. Love teaches you to be selfless.
“Now that part of me has become in you, there's part of me in you that I
love.” - Abraham Twerski
Ref: True love explained by Abraham Twerski [YouTube]
#LearnedToday 25 by shakeeb.in
(AsIs)
Tags: Life, Philosophy
Is having a complex vocabulary a sign of superior intelligence?
There is a correlation, but having a complex vocabulary won't make you more
intelligent. Intelligent people are viewed as intelligent because they can
communicate their ideas effectively, which requires a complex vocabulary.
Intelligent thought in itself has no value, unless it can be communicated in
an idea or manifested into action.
Having a complex vocabulary also shows that you're probably well-read and you
have a wide range of knowledge, which are signs of an intelligent person.
So, intelligent people aren't intelligent because they have large
vocabularies, they have large vocabularies because they are intelligent.
Ref: r/insightfulquestions, Michael Eric Dyson and Jordan Peterson Debate on
YT
#LearnedToday 26 by shakeeb.in
Tag: Psychology
Expertise Bias
All sorts of specialized knowledge can make experts see everybody around them
as morons.
You might think what you're explaining is obvious, or the work you told them
to do is easy; but it is 'obvious' and 'easy' for YOU, not for them. Be
patient.
If you're the expert on something, try to recognize that other people aren't
experts and cut them some slack. And if you know an expert who gets frustrated
when they have to field the same basic requests or questions again and again,
cut them some slack, too.
Ref: Psychology Today
#LearnedToday 27 by shakeeb.in
Tag: Biology
What is exactly is the "lump" in throat before you start to cry?
Your throat, which starts as a single tube eventually splits into two tubes:
one going to your lungs and the other going to your GI tract.
"The expansion of the glottis in and of itself does not create a lumpy
feeling, until we try to swallow. Since swallowing involves closing the
glottis, this works against the muscles that open the glottis in response to
crying. We experience the resulting muscle tension as a lump in the
throat."
Basically the glottis is the vocal chords and their opening.
Ref: eli5 Reddit
#LearnedToday 28 by shakeeb.in
Tag: Philosophy
Islam promotes the idea that the materialistic world is just not worth the
attention we give to it. So the pain we get isn't that big of a deal
tbh.
“Stoicism” has the same ideology - the fortune of pain and pleasure. And most
of the world out there is basically leveraging on it to fight anxiety, stress,
low self-esteem and the likes.
How much do you care about the world and people around you? All the time. And
how often do you try to make yourself happy? Answer yourself.
I disagree with a few points in Stoicism, however. But that's just because we
associate religion with what happens, which Stoicism doesn't require.
Ref: Wiki, YT
#LearnedToday 29 by shakeeb.in
Tag: Language, Linguistics
Had always wondered why isn't there a proper representation of letters in
latin alphabets. The charts before dictionaries used to confuse me.
For example, why do they assume that "a p sound already has an h attached to
it" etc.
Phew. Apparently there IS a standard. Maybe will help me someday in some
project.
Quote from wiki:
"The International Phonetic Alphabet (IPA) is an alphabetic system of phonetic
notation based primarily on the Latin alphabet. It was devised by the
International Phonetic Association in the late 19th century as a standardized
representation of the sounds of spoken language." Unquote.
P.s: Came across this going through some farsi stuff.
Ref: Wikipedia
#LearnedToday 30 by shakeeb.in
Tag: Language, Linguistics
The letter "w" is pronounced "double u" because back in the days, they
literally used to write two u's in its place.
Later, they replaced uu by w. Invention of typewriter promoted it even more.
I come bearing good news today. By now you have already guessed it from the title, and I strongly suspect some of you have been waiting impatiently for the day a proper Rekhta tool with an actual user interface would finally arrive.
What can I say? The things we like for ourselves, we like for our friends as well. And I like sharing.
So, without further ceremony, here it is:
Rekhta Reader & Downloader
A complete tool that allows you to read and download books from Rekhta.org on both desktop and mobile devices.
Let us take a quick tour of the tool.
As soon as you open the application, you will be greeted with an interface similar to this:
Requirements
Before using this tool, you must install a CORS bypass extension in your browser.
Download the extension
here.
I have included the complete usage instructions again near the end of this article, so if anything feels unclear, you will find a detailed guide there as well.
You can also see the complete workflow in the diagram below.
(
Full-size image
)
Extension page for reference:
When the extension is active, its logo appears in color. If it turns black, the extension is disabled.
Back to the tool itself.
Paste the URL of a book into the first field and click GO. The book pages will immediately open inside the reader for browsing and reading.
Search Books Directly — No Need to Visit Rekhta Separately
You can search Rekhta's book collection directly from within the application.
As you can see, the search results appear right inside the tool. Simply click the book you want to open and close the dialog window afterwards.
Click on any page image and start reading. This lets you browse a book before committing to downloading the whole thing — which may save some of us from downloading a dozen books simply because they looked interesting.
Clicking the PDF button downloads the entire book.
I will repeat the usage instructions again near the end of this article, though the screenshots above should already make things fairly self-explanatory.
Before that, however, it might be worth explaining how this tool came into existence in the first place.
The Story Behind This Tool (and a Few Dry Technical Details)
A while back, inspired by the work that Falsafi Bhai and Muhammad Umar Bhai had done on Urdu Mehfil, I put together a Node.js (JavaScript) version of the tool. It worked, and I used it regularly, but it came with three rather annoying problems:
It still had to be run from the command line. There was a graphical interface at one point, but it never really worked properly.
It only worked on a computer. So whenever a book was needed, the routine was always the same: open the laptop first, then download the book.
There was no reading facility. One had to download books blindly. And before downloading a dozen books out of sheer curiosity, it is usually nice to know whether a book is actually worth reading in the first place.
The original plan was to package the entire JavaScript library as an NPM package. Partly because it would be useful, and partly because it seemed like a good opportunity to gain some experience in that area as well.
Then, as often happens with side projects, life intervened and the idea quietly slipped out of mind.
I remember mentioning it to Umar Bhai during a private conversation on Mehfil. A few months later the idea resurfaced, so naturally I opened Mehfil again and started digging through the old discussion threads to refresh my memory and reconstruct the project's history.
Eventually I landed on Muhammad Umar Bhai's GitHub profile and discovered that he had already published a JavaScript version of the tool.
Suffice it to say, I sat there feeling slightly defeated.
(For the record, the Windows version of this tool still exists and continues to work perfectly well. The only catch is that it has no graphical user interface. Think of it as a traditional command-line application that you run through Command Prompt. Not particularly difficult, but an interface certainly makes life easier.)
Then fate decided to intervene.
Looking back at that old codebase sparked a new idea: why not port the entire thing to the frontend and make it work directly as a web application? If successful, everything could happen inside the browser without requiring users to install or run anything complicated.
There was, however, one obstacle.
Browser security policies generally do not allow one website to freely interact with another website's resources. In technical terms, the browser gets quite protective and starts throwing what developers lovingly call CORS errors.
To work around that limitation, I considered two possible solutions and built support for both into the web application.
Proxy Backend
The first approach was to use a proxy backend.
In simple terms, a backend service fetches the data on your behalf and returns the response to the application. Since the browser sees the request as originating from your own backend, it usually has no reason to object.
In theory, this should solve the problem quite neatly.
For the sake of accuracy, I should mention that I never fully tested this route in production. My expectation is that it should work, but because the real challenge involves loading images rather than ordinary API responses, there is always the possibility of running into the same CORS restrictions further down the chain.
Which brings us to the second and far simpler workaround...
CORS Bypass Extension
This is by far the easiest solution.
Browser extensions exist specifically for bypassing CORS restrictions, and several of them are freely available. Install one, enable it when needed, and the application can access the resources it requires.
The extension linked in this article is the one I have been using myself.
As inelegant as browser workarounds sometimes feel, they have one undeniable advantage: they save everyone from setting up servers, configuring proxies, maintaining infrastructure, and generally turning a simple reading tool into a full-time engineering project.
In the end, the goal was not to build a monument to software architecture. The goal was much simpler:
Open a book.
Read a book.
Download a book if you want.
Preferably from a phone while lying comfortably on a sofa.
How to Use the Tool
To use the tool, simply follow the steps below in order.
If you intend to use the tool on Android, make sure you are using a browser that supports extensions. One such browser is Kiwi Browser.
Kiwi Browser for Android
You can download the APK from the Assets section of the release page, or obtain it from any other trusted source you prefer.
Enable the extension and start using the web application.
If you run into any issues, feel free to leave a comment below. Suggestions and feedback are equally welcome.
These days I find myself reading most books directly inside the tool, and rarely need to download them anymore. On mobile, however, I still download books occasionally simply because the reading experience is sometimes more comfortable that way.
What Comes Next?
This is not my first Rekhta-related project.
Some time ago I released another tool for Rekhta content in the form of a script and an Android application.
og title:
Rekhta Reader & Downloader (Web App) – Read and Download Thousands of Urdu Books on Mobile and Desktop
og description:
Rekhta Reader & Downloader is a simple web application that lets you read Urdu books online and download them for offline use. Works on both mobile phones and desktop computers, with built-in book search and a clean reading experience.
The Quran Hifz Helper app, which has been in development for over 6 years, is now complete. Alhamdulillah, we are releasing it this Ramadan. May Allah make it beneficial for everyone! Insha’Allah.
- Shakeeb Ahmad
Quran Hifz Helper
The ultimate Quran app — read, memorize, explore translations, and view scanned mushafs. A full digital experience, just like a real mushaf.
Automating repetitive tasks like extracting text from images can save valuable time (unless you don't value it, in that case it will save some worthless time). This process, known as Optical Character Recognition (OCR), is a powerful tool for converting text in images into editable formats. Here, I’ll walk you through setting up custom OCR solutions for both Windows (that we all have) and Linux (mostly used in offices) systems, complete with keyboard shortcuts for seamless integration.
I primarily use OCR for Urdu in my personal work, but professionally it is also required for English. Using Google Lens is a fine option, except if you dislike repeating those clicks and key presses just to copy text from an image. And to be honest - I kind of feel bad even for giant corps like Google when I unnecessarily utilize their 'precious' resources.
Why not use a browser extension you ask? Well, because it's limited to browser - and we do need text from other apps as well. You can argue that one can take a screenshot of that app and then go to browser and run OCR, but if you have opened a browser and afford to take a screenshot just for that, why not run Google Lens instead of an extension. You get the point.
Background
OCR technology is invaluable for tasks such as digitizing printed documents, extracting text from screenshots, or processing scanned images. By automating OCR, you can:
Instantly access extracted text.
Improve productivity.
Simplify your workflow.
This guide provides a step-by-step walkthrough for setting up OCR on Windows and Linux, ensuring a smooth and user-friendly experience.
Introduction
Why Automate OCR?
Manual text extraction is time-consuming and error-prone. Automating the process ensures:
Faster access to text data.
Minimal effort for repetitive tasks.
A consistent and reliable workflow.
How It Works
We’ll create scripts for Windows and Linux that:
Capture an image or utilize an existing one.
Perform OCR using Tesseract (an open-source OCR engine).
Copy the extracted text directly to the clipboard.
Setup
Prerequisites
Before getting started, ensure you have the following:
Install necessary language packs (e.g., -l eng for English, -l ara+eng for Arabic and English).
Clipboard Utilities
Windows: Use nircmd for clipboard operations.
Linux: Install xclip for clipboard management.
Screenshot Tools
Windows: Use built-in snipping tools or third-party software.
Linux: Install flameshot for advanced screenshot functionality.
Procedure
For Windows
1. Create the OCR Script
Create a batch file named sstoocr.bat and save it in a convenient location:
@echo off
:: Save clipboard to image
start nircmd/nircmd.exe clipboard saveimage screenshot.png
:: Run Tesseract OCR on the image
tesseract screenshot.png output -l ara+eng
:: Copy extracted text to clipboard
type output.txt | clip
:: Optionally, clean up
:: del screenshot.png
:: del output.txt
2. Assign a Shortcut
Place the script on your desktop.
Right-click the script and select Create Shortcut.
Right-click the shortcut, go to Properties, and under the Shortcut tab, assign Ctrl + Alt + O as the shortcut key.
3. Use the Script
Copy an image to the clipboard or take a screenshot.
Press Ctrl + Alt + O.
The extracted text will automatically be copied to your clipboard.
Open your desktop environment’s keyboard settings.
Add a custom shortcut:
Command:/path/to/flameshot_ocr.sh
Shortcut:Ctrl + Shift + O
3. Use the Script
Press Ctrl + Shift + O to open the Flameshot GUI.
Select the area to capture.
The text will be extracted and copied to your clipboard.
Conclusion
By following this guide, you can set up a streamlined OCR solution for both Windows and Linux. With a simple keyboard shortcut, you’ll have quick access to extracted text directly on your clipboard, saving time and effort.
Feel free to customize these scripts to better suit your needs. Happy automating, and may your workflows become ever more efficient!
I get these constant reminders about the life and how fast it's passing and how much less time I've in my hand. How people achieved great things by the half my age and here I'm still wondering whether I'd ever be able to achieve something written on my virtual and mental todo lists.
I am tired of not doing anything. Doing a lot but ultimately achieving nothing in the end. It seems I've never focused on one thing completely. I've spent countless hours on the things that we still not out for the world to see. They're all there in my harddrives or countless other places that I put my notes on - the notes app, todo manager, email draft, at least 6 different places in my telegram account, then WhatsApp self notes, Google docs, one drive backup files. Even hand written notes and mind maps.
I see people wrote books, read hundreds of pages a day, did preaching, tought and prayed, played and indulged in poetry. All with some sign of productivity.
For me, this productivity is zero. Or so does it seem. My sleepless mind is just wandering around at this moment of the night I know, but still I am awake at least as much to know how irresponsible, unproductive and knowingly lazy I am.
I took deliberate steps to write everyday, made new year resolutions and prayed. Not sure why it's not working. No wait - I know why. It's all a buzz of distraction for me. People get on a track and keep repeating things manually. And me , first thing I do is to try and automate stuff that I've to do.
I often recall Zack's comment on somebody who irritating-ly commented to a project where people had started to shout for Nastaleeq clothing for the UI, he said "koi achhal Kam shuru hota ni aur log Nastaleeq ki rat laga dete hain."
And that "Blog doesn't have a single post but font should be Nastaleeq".
Gyaan_vaapi mosque verdict and other ongoing problems triggered today's sleepless night. I had been thinking of doing some actual dawa work since the beginning of the ruling party but hah to me and double hah to these precious 10 years that I did nothing. Nada.
I still have those notes from the Dawah camp of 2010. I vividly remember M. Kaleem Siddiqui arrival in Ismailpura mosque and the tashkeel where people passionately pledged for Dawah to their friends, colleagues and neighbours. I didn't have friends then, but I had a clear idea of what I'd do the day I'll have some.
Now I do have friends and colleagues but they're just the observers. I've been the passive daaii, that I'll give to myself. But what I thought I should have been isn't a finished business. It is not. The interview I thought I would conduct, they're still in pending list. The phone calls I thought I'd make someday to remember my old days , they're not longer available as their numbers are lost to the time. Maybe tracing back on Facebook groups or LinkedIn will lead me to them someday and I'll get my chance.
I'm thinking I should just add all my todos and make them a public record. Maybe I won't be there long enough to cover this list. Not that I haven't already added them, the resolutions are the prime examples. But still if I have an extensive list at one place then it's probably help me focus on a few things every now and then, instead of wandering about in the pool of my own thoughts procrastinating endlessly.
I need to arrange the notes on mobile, clean it up and then add them all to one todo list. The master one. Clearing clutter from everywhere and then try to close on the things that are about ready for release.
Hah! I just remember that I've done this planning countless times and now the only difference is I'm documenting it right now.
There's one more fear - losing everything of I keep it at one place. I had writer-monkey for this exact reason.