Winning against the Chinese. In China.
At the Asian Relay Championships.
Srabani, Sudeshna, Sneha & Tamanna in the 4x100 relay.
Power. Speed. Grace. Commitment.
But above all, teamwork.
This clip has it all.
I’m watching it on loop.
More of this please. 🇮🇳
3⃣2⃣1⃣ runs 👌
8⃣0⃣.2⃣5⃣ average 🫡
3⃣ fifties 🙌
Congratulations to @IamSanjuSamson on being named the ICC Men's Player of the Month for March 🏅 following his staggering show in #TeamIndia’s triumphant ICC Men’s T20 World Cup 2026 campaign 👏👏
“India was 40% of world’s GDP in the 17th century. Most skilled Doctors and professionals are Indians in the world, what India lacked was the platform.”
“We made the atom bomb ourselves, never stole it from anyone. Believe in India my fellow Indians.”
- Rakesh Jhunjhunwala. ‘
Hidden memory bugs? 🔎 Samuel Cherukutty from @Zoho shows how to find them in PostgreSQL using **Custom Memory Allocators**. Deep dive into internals! #PostgreSQL#Debugging#MemoryManagement
₹53,000 crore - whooping STT collected last year from markets
STT was meant to remove capital gains....but now it is double taxation....!!
This is unnecessary burden on investors...
Either remove LTCG or remove STT....can't have both..
Retweet if you agree..
#abolishSTT
Why Reliance Cancelled Plans to Produce Lithium-Ion Battery in India
1. Hithium is a tiny Chinese battery maker (1/200th in size of RIL)
2. This tiny firm refused to license its tech to India's most powerful group.
India’s Critical Import Dependence for Strategic Technologies:
Reliance Wants to Move from Fossil Fuels to Clean Tech, But Without Risk or Effort
a. Reliance (RIL) earns nearly $10 billion in annual net profits as a group. But due to a protectionist domestic market, it has no culture of investing in innovation and no motivation to compete globally.
b. RIL has not invested in R&D capabilities for cutting-edge lithium battery production or other clean technologies that are the future of the world.
c. It has no patents, design knowledge, product formulations, or manufacturing process knowhow to create next-generation competitive cell technology in-house.
d. A small, private company like Hithium (established in 2019) has been spending hundreds of millions of dollars every year in R&D to develop repeatable, high-yield processes that cannot be easily copied by others without deep expertise or investment.
e. It takes years of experimentation, trial production, pilot plants, safety labs, specialized R&D teams, advanced equipment, iterative optimization, and high failure rates to develop such technologies at scale.
f. RIL and other Indian companies are not interested as they have easier ways to dominate a protected domestic market. So, India remains heavily technology-dependent on the rest of the world.
g. Due to decades of R&D neglect by the Indian industry and faulty policies of successive administrations, India does not have the ecosystem required to innovate, build, scale production, and compete globally in even the most basic technologies.
h. In absence of a tech industry or ecosystem, India does not have the required elite pool of talent – research teams, battery scientists, process engineers, quality & reliability engineers, and equipment and automation specialists.
i. India does not have massively integrated supply chains like China, starting with advanced mining and refining capabilities (for critical battery raw materials), production of chemical precursors (cathode/anode), specialized manufacturing equipment, and R&D and testing infrastructure.
What is Required to Build a Vertically Integrated Materials-to-Cell Supply Chain for Lithium Battery and Other Cutting-edge Technologies in India
1. Long-horizon, patient capital in R&D.
2. Culture of innovation & failure-tolerance.
3. Celebrating technological wins instead of financial market wins (with globally incompetent promoters who are on the Forbes rich list due to a protectionist economy and an overvalued stock market.)
@arabicatrader
Read this absolute horror story:
In June 2017, a minor girl accused Unnao BJP MLA Kuldeep Singh Sengar of rape, but the police refused to register an FIR. After months of inaction, in April 2018, the girl attempted suicide by self-immolation outside the CM’s residence, which finally forced the authorities to file the FIR.
Meanwhile, her father was arrested on false charges and reportedly assaulted in police custody; he later died in hospital due to his injuries. Public outrage followed. Even before any proper investigation had begun, a key witness in this mysterious custodial death was also found dead.
The case was eventually transferred to the CBI. The CBI concluded that the girl’s father died due to injuries inflicted in custody and that the assault was connected to an attempt to pressure and intimidate the victim’s family.
In July 2019, while the victim was travelling to court with her two aunts and lawyer, their car was hit by a truck, killing both her aunts and leaving the victim and the lawyer critically injured, an incident later treated as a deliberate attempt to silence witnesses.
In December 2019, Sengar was convicted and sentenced to life imprisonment, but by then the victim’s family had already paid an irreparable price. The Unnao rape case had all the elements of an 80s–90s Bollywood villain plot: systemic intimidation, blatant abuse of power, and a trail of destruction that went far beyond the crime itself. But worse was still to come.
Yesterday, the Delhi High Court suspended the jail term and granted bail to Sengar. This is nothing but salt rubbed into the wounds of whatever little the victim’s family has left. An absolute disgrace. After everything they endured, this feels like the system mocking them. Shameful beyond words, and everyone should raise their voice against this.
I was watching this video by @RainmatterOrg about how Chhatrapati Sambhajinagar (Aurangabad) cleaned up the Kham river in 5 years. It had become a sewage drain, and they turned it back into a flowing river. Made me think about especially of Delhi's air quality problem.
They mapped 249 waste entry points with drones and installed traps. Rerouted sewage to treatment plants and built new ones. Set up a facility for textile waste from factories. Cleaned the river and discovered springs that were buried under debris. Fixed waste collection across the city, removed 170 dump sites. The municipal commissioner joined weekend cleanups himself. Citizens showed up every Saturday. The key was stopping waste from entering the river in the first place, not just cleaning it.
If a smaller city can pull this off in 5 years with the municipal corporation, NGOs, and citizens working together, I was wondering if governments, businesses, NGOs, and citizens actually collaborate, can't they make a difference in Delhi, Mumbai, Bengaluru, and many other cities where the Air quality is really bad.
Virtual memory in Linux is a comfortable lie.
When you mmap a file, Linux gives you memory addresses, but often doesn't load the data. It waits until you touch it.
That "wait" causes a page fault, pausing your app while the disk spins.
How do you avoid that pause?
mincore (#27 on x86_64). 🧵👇
Storing JSON in Postgres? You should change `default_toast_compression` to lz4 and save on CPU, memory and storage.
It is supported since pg14, has better cpu/compression tradeoff... and it will soon be the default by default.
Herb Sutter's talk on C++26 contracts was great. Go watch it.
My general strategy in programming is to avoid debugging. I hate debugging. It is time consuming. So I lean heavily on tests.
My objective is that if a bug is found, I know precisely where the faulty code is. And by adding a test or two, I can quickly narrow it down.
In the widely deployed software that I maintain, my general policy is to design my own assert/contract mechanism.
C++26 contracts might finally provide the kind of support I need from the language itself.
https://t.co/hDk0UZ7dTF
Databricks dropped a paper that basically says "Kafka sucks".
It's titled "Understanding the Limitations of Pubsub Systems" and was released this year in May. It argues that modern pub-sub systems:
❌ fail to achieve their goal of truly decoupling writes and readers
❌ violate the end to end principle
❌ expose an ad-hoc storage abstraction with a bespoke API and limited power
All of this traces back to their architectures. They bundle a storage abstraction and a messaging abstraction into one system.
This forces you to use their (limited) storage system in order to gain messaging.
The paper proposes unbundling these in order to fix these problems.
Before we focus on what they propose, let's quickly double click on the problems👇
🛑1. Silent Dropping of Messages
Messages can be deleted without any notification to the reader.
Kafka, for example, stores messages with a time-based retention SLA. Any message older than N hours/days is deleted.
Consumers literally have no idea that their unconsumed messages are gone.
This means large message backlogs are basically indistinguishable from silent outages. 🚨
If the backlog is too large, the messages are lost and that’s an outage - it's data loss from the PoV of the consumer
🛑2. Inefficient APIs
There's also no way to catch up to the latest data efficiently.
Even if you fix the silent deletion problem with infinite retention (e.g store it all in S3), the API to consume the log is inefficient. It can take hours/days to process.
You need something like snapshots to reprocess all that data efficiently.
Pub-sub systems do not give you that.
🛑3. Key-based Compaction is Broken (too)
While key-based compaction can reduce reprocessing times (there are less messages), it suffers from the same two problems.
• Duplicate key deletion (deduplication) is silent. The consumers may not see all updates and that can break some logic.
• The time-based retention SLA can still drop messages silently during large backlogs.
🛑4. Partitions Suck
This is a big one. Kafka couples consumer message assignment to its storage model.
In Kafka, you shard a topic by splitting it into partitions.
Messages are deterministically sent to the same partition based on their key. (the producer partitioner decides this)
This affinity mechanism doesn't allow independent and dynamic sharding of consumers. It's also too indirect.
If you want to change what consumer a certain key goes to, you by definition re-assign all the other keys in the partition.
Which keys are these? Idk. It's implicit. 🤷♂️
The paper proposes a system which explicitly (and dynamically) assigns based on a key range.
🛑5, 6, and 7
To keep this concise, I won't cover the other issues.
🛑 The End to End Principle is Violated
🛑 Race Conditions in Partition Assignments
🛑 Bespoke storage APIs
--
✨ THEIR SOLUTION ✨
The paper proposes unbundling pub-sub into two systems:
• a storage abstraction
• a Watch notification abstraction
The storage is exposed to producers and consumers.
Consumers only see a narrow, read-only view of the underlying storage.
The system works roughly like this:
1. The producers write to the data store
2. The data store syncs updates to the watch system
3. The watch system fans out these updates to the interested consumers
The watch does not hold state and is not a source of truth. It only caches data for efficiency.
The watch exposes three signals:
• ⚡️Change()
A regular message notification. It includes the key, the version and the mutated data.
• ⚡️Progress()
This signal lets consumers know their state is fully point-in-time consistent up to the given version.
• ⚡️Resync()
This solves the silent dropping of messages problem.
When consumers fall behind the retained data, the watch sends a Resync signal that notifies them to reload their state from the underlying data store directly and efficiently.
👉 Any storage system can be used with this architecture.
The watch can be written as a layer on top of anything.
This avoids lock-in to the particular pub-sub’s storage system. It also allows users to choose the data store that's the best fit for their use case.
In the paper, Databricks shared that they are building Snappy.
It's a watch and ingest service made to work with MySQL and TiDB.
(wen Postgres guys?)
Windows is silly.
Using the Windows API (WINAPI, historically called WIN32API, to distinguish it from the deprecated WIN16API) has some unusual things. For example, if you want to create a file using the Windows API you use CreateFile
However, if you lookup CreateFile on MSDN (Microsoft Development Network) you'll see there are two versions of CreateFile
- CreateFileA
- CreateFileW
When you code in C/C++ and type "CreateFile", depending on your compiler settings, it will default to either CreateFileA or CreateFileW
Why the FUCK does Windows have CreateFileA/W?
Because things are very silly. CreateFileA means ANSI. CreateFileW means WIDE (Wide character, Unicode support).
Way back in the day, in 16-bit Windows, Windows wanted to implement characters other than the English alphabet (such as Japanese, Mandarin, Russian, etc). They decided to make non-English alphabet stuff in equal size buffers (WIDE, UTF-16).
For backwards compatibility, however, Windows could not simply force UNICODE onto everything because it would break existing applications. Instead they opted to make 2 variants of every function which details with strings (A/W).
Interestingly, if you invoke CreateFileA under the hood Windows will transform the ANSI string into a UNICODE string. In other words, when you invoke CreateFileA the Windows OS turns the ANSI string into a UNICODE string then invokes CreateFileW. The OS then reverts the UNICODE string back to an ANSI string for your application which called CreateFileW
- CreateFileA(FilePath)
-- MultiByteToWideChar(FilePath to UNICODE)
--- CreateFileW(FilePath) (More internal stuff)
-- WideCharToMultiByte(FilePath back to ANSI)
- CreateFileA(FilePath)
Let's get even MORE silly. When dealing with strings on Windows you have
CHAR (ANSI)
WCHAR (UNICODE)
TCHAR (Ambiguous, Transitional CHAR)
When programming on Windows, and you're not sure what the compiler settings are (defaulting to ANSI or UNICODE) developers can use TCHAR. With TCHAR the compiler will resolve to the correct data type.
An example of this silliness can be seen in official Microsoft documentation. Windows has CreateProcessA and CreateProcessW (for reasons described above). In the examples from Microsoft they use LPTSTR (Long Pointer Transitional Character String) when using CreateProcess.
In the example, LPTSTR will resolve to either:
- CHAR* FilePath = 0;
or
- WCHAR* FilePath = 0;
Depending on compiler settings.
The horrific blast in Delhi last evening has deeply pained everyone. India stands with those who have suffered.
I assure everyone that the agencies will get to the bottom of the entire conspiracy.
All those involved will be brought to justice.
Stray dog menace: Supreme Court passes a slew of directions to Delhi-NCR states, MCD and NDMC to deal with the menace of stray dogs and orders creation of dog shelters across cities. Supreme Court orders authorities to pick up all stray dogs in Delhi-NCR from all localities within eight weeks and to put them in dog shelters, and no stray dog will be released back.
"Some women cried, said K*ll me too. But Terrorists said NO. Go Back & Tell.
~ We heard that. India decided that the color of the SINDOOR will match the color of the BLOOD of the Perpetrators."🥶
Shashi Tharoor on FIRE in Panama🔥
India completely decimated Pakistan and achieved its goal of eliminating most of the terror bases on its border.
Don't fall for the Islamist propaganda that India lost. You can read the facts by yourself.