Tuesday, December 30, 2025

Lesson from Russia Ukraine war - why Starlink possess a threat to national security because hundreds of Leo satellites may operate drones during war time...

The Russia-Ukraine war has fundamentally rewritten the rules of modern warfare, specifically through the "democratization" of satellite communications. While Starlink was initially hailed as a lifeline for Ukraine, it has evolved into a complex national security threat for several reasons.

The core of the threat lies in the fact that Low Earth Orbit (LEO) constellations like Starlink provide the high-bandwidth, low-latency connectivity required to operate sophisticated drones over vast distances—capabilities once reserved for superpower militaries.

1. Enabling Long-Range "Kill Webs"

Traditionally, drones were limited by line-of-sight radio links or expensive, laggy geostationary satellites. Starlink’s LEO satellites (hundreds of which are overhead at any given time) allow for:

Beyond Line of Sight (BLOS) Control: 

Operators can sit hundreds of miles away from the front lines and control FPV (First Person View) or strike drones via the satellite link.

Real-time Video Feedback: 

The low latency (under 50ms) allows for precise, real-time maneuvering of "kamikaze" drones, making them as accurate as guided missiles but at a fraction of the cost.

Autonomous Swarming: 

Thousands of satellites enable the coordination of drone "swarms," where multiple units communicate and strike simultaneously without relying on vulnerable ground-based towers.

2. The "Dual-Use" Dilemma & Adversary Adaptation

The war has proven that commercial technology is difficult to "gatekeep."

Russian Integration: 

Recent reports indicate Russian forces have begun integrating Starlink terminals directly into their own strike drones (e.g., the Molniya-2). By using black-market terminals, Russia can bypass its own lack of high-speed satellite infrastructure.

The Geofencing Problem: 

It is extremely difficult for SpaceX to disable Starlink for Russians without also disabling it for Ukrainians in contested "grey zones." This creates a scenario where a private company effectively dictates the "digital borders" of a war.

3. Resilience Against Electronic Warfare (EW)

LEO constellations are inherently harder to jam than traditional systems:

Narrow Beams: 

Starlink uses phased-array antennas that create very narrow, directed beams.7 To jam it, an enemy must be almost directly between the dish and the satellite.

Redundancy: 

Because there are thousands of satellites, if one is jammed or destroyed, the terminal simply "handshakes" with the next one in the mesh network. This makes "denial of service" nearly impossible through conventional means.

4. Sovereignty and the "Private Actor" Risk

A major national security concern is that a nation's military effectiveness now depends on a private corporation’s terms of service.

Unilateral Veto Power: 

We saw this when Elon Musk reportedly denied a request to activate Starlink near Crimea for a Ukrainian naval drone strike. This highlights a "threat" where a private individual can interfere with a nation's strategic military objectives based on personal or political views.

LEO Satellites vs. Traditional Military Comms

FeatureTraditional Military Satellite (GEO)Starlink LEO Constellation
LatencyHigh (600ms+); bad for drone pilotingLow (<50ms); enables real-time piloting
VisibilitySingle point of failure; easy to targetThousands of nodes; nearly impossible to "kill"
AccessibilityRestricted to high-budget militariesAvailable to anyone with $500 and a subscription
MobilityRequires large, static dishesPortable; can be strapped to the roof of a car or drone

Bottom Line:


The threat isn't just that the satellites "operate" the drones, but that they provide a ubiquitous, un-jammable internet layer that turns any cheap civilian drone into a precision-guided strategic weapon.

Sunday, December 28, 2025

Windows 11 Recall - the Windfall for Linux - Happy Birthday ... Linus Torvalds...

Happy birthday ... Linus Torvalds...



As we look forward to 2026, a massive change in the computer world is happening in front of our eyes. The Windows 11 Recall is working as the windfall for Linux. Although Linux may not replace Windows completely in the OS sector, but the usage of Linux amongst the techies and non-techies are gaining momentum - and 2026 will be remembered as the year when the shift from Windows to Linux as a viable option will become visible.

 With Windows 10 support ending and Windows 11 requiring a new hardware for its Recall to work, suddenly the Windows users have started looking for alternative and Linux is getting traction. Windows 11 recall has damaged the Trust system between the Users and their computers. Not only this, suddenly PC users are spreading the message that Linux is as user friendly as Windows - which is true but somehow was not visible because of the $soft's FUD system.

Windows 11 needs a new hardware system, and the Windows 10 users are suddenly finding themselves in a dock - but they have discovered that the same Windows 10 hardware can run Linux without any changes. I always say that adoption of tech in the society is only possible when it creates convenience. So far, Windows was dominant in the market because the hardware companies, the PC and laptop manufacturers supported only Windows. Not only this, most of the application software were written keeping Windows as their normal execution system. But that has changed. Now we can do almost everything on Linux that used to be done on top of Windows.

Beside Linux only PC manufacturers, big PC/laptop manufacturers like Dell, IBM have started offering pre-installed Linux based PCs and Laptops. The Steam Deck has proven to millions of gamers that Linux (SteamOS) is a viable, high-performance platform for AAA gaming, removing the biggest historical barrier to switching.

The "2026" Reality Check...

Windows "Push" FactorsLinux "Pull" Factors
Windows 10 Support Ends: Millions of PCs become "unsupported" in late 2025.Polished UX: Modern Linux (like Mint or Fedora) is now arguably as easy to use as Windows.
AI Intrusion: Features like Recall and mandatory Microsoft accounts.Software Parity: Web-based tools (Slack, Zoom, Discord) work identically on Linux.
Ads in Start Menu: Microsoft's increasing use of the OS as an ad platform.Gaming: Proton (Valve) now runs over 80% of the top Windows games.
2026 won't see a total collapse of Windows, but it will likely be the year Linux becomes a mainstream "Third Option." It is moving from being a "hobbyist project" to a saviour for professionals, gamers, and privacy-conscious users who feel alienated by Microsoft's AI direction.

Sunday, December 14, 2025

India’s Indigenous GPU, OpenGL & Vulkan - A note for Ridit, a school student building real expertise in Computer Graphics...

Dear son Ridit,

You already know C++, Java, Python, understand design patterns, work with 3D graphics, 3D modelling, and Blender. That puts you far ahead of most students your age.


Now let’s talk about something that directly affects your future as a Computer Graphics expert:

India building its own GPU stack

This is not just news. It’s a once-in-a-generation opportunity.

1. What does “India’s Indigenous GPU” actually mean?

A GPU is not just a chip. It is a complete ecosystem:

  • Hardware (shader cores, memory controllers, rasterizers)
  • Drivers
  • Graphics APIs (OpenGL, Vulkan)
  • Compilers (GLSL → SPIR-V → machine code)
  • Tools (debuggers, profilers)

Until now:

  • NVIDIA, AMD, Intel controlled this stack
  • India used GPUs, but did not control them

An indigenous GPU means:

  • India designs the hardware
  • India writes its drivers
  • India implements OpenGL & Vulkan
  • India controls optimization, security, and evolution

This is technological sovereignty, not just engineering.

2. Where do OpenGL and Vulkan fit in?

OpenGL

  • High-level, easier to learn
  • Abstracts many GPU details
  • Perfect for learning graphics fundamentals

You already use this thinking via:

  • Blender
  • 3D pipelines
  • Scene graphs
  • Shaders

Vulkan

  • Low-level, explicit, modern
  • You manage:
    • Memory
    • Synchronization
    • Command buffers
  • Extremely close to GPU hardware

When India builds GPUs, Vulkan becomes critical because:

  • It maps almost directly to GPU architecture
  • It exposes performance and control
  • It is used in:
    • Game engines
    • Simulators
    • Defence & space systems

📌 If you understand Vulkan, you understand GPUs.

3. What does this mean for you, Ridit?

This is the most important part.

You won’t just use GPUs — you can build them

Most graphics programmers:

  • Write shaders
  • Use engines
  • Optimize scenes

But India needs:

  • GPU driver developers
  • Vulkan backend engineers
  • Shader compiler developers
  • Graphics + systems programmers

With your background:

  • C++ ✔
  • Design patterns ✔
  • 3D math ✔
  • Blender pipeline knowledge ✔

You are already aligned.

Blender + Indigenous GPU = Strategic Skill

Blender is:

  • Open source
  • Uses OpenGL & Vulkan
  • Actively optimized for new GPUs

Imagine:

  • Optimizing Blender for an Indian GPU
  • Writing Vulkan backends
  • Improving shader compilation
  • Working on real rendering pipelines

That is world-class engineering, not school projects.

Defence, Space & Simulation will need you

Indigenous GPUs are not for gaming alone.

They are critical for:

  • Flight simulators
  • Missile & radar visualization
  • Satellite image processing
  • Scientific visualization
  • Digital twins

These systems:

  • Cannot depend on foreign GPUs
  • Need deep graphics + systems knowledge

That’s where graphics engineers become national assets.

How should you prepare from here?

You are already strong. Now focus deeper, not wider.

Step 1: Go lower-level

  • Learn modern OpenGL (core profile)
  • Then Vulkan (even if it feels hard)

Hard things = rare skills.

Step 2: Learn GPU thinking

  • What is a draw call?
  • What is a pipeline?
  • What happens between vertex & fragment shaders?
  • How does memory move on GPU?

Think like the GPU, not just the programmer.

Step 3: Study open-source graphics engines

  • Blender source (render pipeline)
  • Vulkan samples
  • Mesa (OpenGL drivers — advanced, but gold)

This is where real knowledge lives.

5. Why your generation matters

Ridit, India missed the CPU revolution.
India missed the early GPU revolution.

But now:

  • Open standards (Vulkan)
  • Open tools (Blender)
  • Indigenous hardware push
  • Strong software talent

This time, India can lead.

And people like you won’t just get jobs —
you will define how graphics works in this country.

Final thought

If someone asks you:

“Why study Computer Graphics so deeply?”

Your answer can be simple:

“Because the future GPUs of India will need people who understand both art and silicon.”

And you are already on that path.

Keep going.

Here's the tech blog of Ridit.


And here's another...



Enjoy...

Friday, October 17, 2025

Incremental Potential Contact (IPC): Revolutionizing Penetration-Free Physics Simulations...

Inspired by my son Ridit’s enthusiasm for computer graphic and being informed by him about Incremental Potential Contact (IPC), I’ve been diving into this cutting-edge technique that addresses a persistent challenge in physics simulations: preventing objects from penetrating each other. Introduced in a 2020 SIGGRAPH paper by Li et al., IPC has become a game-changer for achieving realistic, stable, and penetration-free simulations in computer graphics and beyond. In this blog post, I’ll explain what IPC is, how it tackles penetration, and why it’s a significant advancement for real-time applications like video games, animations, and virtual reality.The Penetration Problem in Physics SimulationsIn physics-based simulations, objects often need to collide, slide, or rest against each other realistically. Traditional methods, like those used in game engines (e.g., Bullet Physics in Blender) or finite element simulations, rely on discrete collision detection and penalty-based forces. These approaches check for overlaps at fixed time steps and apply repulsive forces to push objects apart. However, they have limitations:
  • Penetration Artifacts: Objects can pass through each other, especially at high velocities or with small time steps, leading to visual glitches (e.g., a character’s arm clipping through a wall).
  • Numerical Instability: Penalty methods can cause jittering or oscillations, particularly in stiff systems like cloth or stacked objects.
  • Complex Geometries: Deformable objects (e.g., soft bodies, hair) or thin surfaces often exacerbate penetration issues, requiring costly post-processing to fix.
These challenges degrade the realism of simulations, frustrate developers, and break immersion in games and VR. Enter IPC, a method designed to eliminate penetration while maintaining stability and performance.What is Incremental Potential Contact?IPC is a physics simulation framework that ensures intersection- and inversion-free dynamics by using a continuous barrier potential and incremental constraint solving. Unlike traditional methods that react to collisions after they occur, IPC proactively prevents penetration by modeling contact as a smooth, energy-based process. It’s particularly effective for complex systems involving rigid bodies, deformable objects, and thin structures like cloth or hair.
Key features of IPC include:
  • Barrier Potential: A mathematical function that increases as objects approach, preventing them from getting closer than a minimum distance.
  • Incremental Solving: Contact constraints are solved iteratively in small steps, ensuring stability even for large time steps or complex scenes.
  • Friction and Elasticity: IPC naturally incorporates friction and material properties, enabling realistic sliding and bouncing.
How IPC Prevents PenetrationIPC’s core innovation lies in its use of a barrier potential to enforce a minimum separation distance d_min between objects. Here’s how it works:
  1. Contact Detection: IPC identifies potential contact points (e.g., vertex-vertex, vertex-edge, or edge-edge pairs) using proximity queries on a collision mesh. This is done continuously, not just at discrete time steps.
  2. Barrier Potential: For each potential contact, IPC defines a barrier energy ( B(d) ), typically a logarithmic or polynomial function that grows as the distance ( d ) between objects approaches zero. For example:
    B(d) = -\kappa \log(d), for d > 0
    Here,
    \kappa
    is a stiffness parameter, and the energy becomes infinite as
    d tends to 0
    , ensuring no penetration occurs.
  3. Incremental Optimization: IPC minimizes the total system energy (including kinetic, elastic, and barrier energies) subject to contact constraints. It uses an iterative solver (e.g., Newton’s method or projected gradient descent) to adjust object positions and velocities incrementally, resolving contacts step-by-step.
  4. Time Integration: IPC employs implicit time integration to handle stiff systems, allowing larger time steps without sacrificing stability. This is crucial for real-time applications where performance is paramount.
The result is a simulation where objects never penetrate, even under extreme conditions like high-speed impacts or thin, deformable surfaces.Why IPC is a BreakthroughCompared to traditional methods, IPC offers several advantages:
  • Guaranteed Non-Penetration: The barrier potential ensures objects maintain a minimum separation, eliminating clipping artifacts.
  • Stability: Incremental solving and implicit integration handle stiff systems (e.g., rigid bodies or thin cloth) without jittering or divergence.
  • Versatility: IPC excels with complex geometries, including deformable objects, thin shells, and codimensional structures (e.g., hair or ropes).
  • Real-Time Potential: Optimized implementations, like the IPC Toolkit, leverage GPU parallelization, making IPC viable for games and VR.
Practical Example: Simulating Two ParticlesTo illustrate IPC, consider a simple Python script using the IPC Toolkit (ipctk). Two particles are positioned 0.005 m apart, with a minimum distance
d_min = 0.01
m and stiffness
kappa = 10^5
N/m. The script computes the barrier energy and contact forces to prevent penetration:

  • Distance Calculation: The distance between particles is 0.005 m, violating
    d_min
    .
  • Barrier Energy: A quadratic barrier yields E = 0.5 * kappa (d_min - d)^2 = 1.25 J
  • Contact Force: The force
    F = kappa (d_min} - d) * {p_1 -p_0} / d pushes the particles apart with 500 N.
This ensures the particles never overlap, and the forces are visualized as arrows in a 3D Matplotlib plot, showing a clear, penetration-free interaction.Applications in Computer GraphicsIPC’s ability to prevent penetration makes it invaluable for:
  • Video Games: Ensuring characters and objects collide realistically without clipping (e.g., in God of War or Cyberpunk 2077).
  • Animation and VFX: Simulating cloth, hair, or soft bodies in films like Spider-Man: Into the Spider-Verse, where penetration-free dynamics are critical.
  • Virtual Reality: Maintaining immersion by avoiding visual artifacts that could cause motion sickness.
  • Robotics: Guiding robots or drones through cluttered environments with precise collision avoidance.
Is IPC in Blender?As of October 17, 2025, Blender does not use IPC in its source code. Blender relies on Bullet Physics for rigid body dynamics and custom solvers for cloth and soft bodies. While Bullet handles contact well, it doesn’t employ IPC’s barrier-based approach. Developers interested in IPC can integrate it into Blender via Python scripting with libraries like ipctk.Challenges and Future DirectionsDespite its strengths, IPC has challenges:
  • Computational Cost: Solving barrier constraints iteratively can be expensive, though GPU acceleration mitigates this.
  • Parameter Tuning: Choosing appropriate
    d_min
    and
    kappa
    requires care to balance realism and performance.
  • Adoption: While libraries like IPC Toolkit exist, integration into mainstream engines like Unity or Unreal is still emerging.
Looking ahead, advancements in machine learning could optimize contact detection, and tighter integration with rendering pipelines could make IPC a standard in real-time graphics.ConclusionIncremental Potential Contact is a transformative solution for penetration-free physics simulations. By using barrier potentials and incremental solving, it ensures objects interact realistically without clipping, even in complex scenarios. For software engineers like me, it’s a fascinating blend of math and code that powers immersive digital worlds. And for Ridit, it’s the tech that makes his game characters move without glitching through walls—a small but mighty detail in the magic of computer graphics.
Here's my experimentation of IPC in Python
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# Import ipctk (IPC Toolkit)
try:
import ipctk as ipc
except ImportError:
print("ERROR: 'ipctk' module not found. Install via 'pip install ipctk'.")
exit(1)

# --- 1. Define Particles and Setup ---
V = np.array([
[0.0, 0.0, 0.0], # Particle 1 (index 0)
[0.005, 0.0, 0.0] # Particle 2 (index 1)
], dtype=np.float64)

# Scale to millimeters (or micrometers)
V_mm = V * 1000 # Meters to mm
# V_mm = V * 1e6 # Uncomment to try micrometers
d_min = 0.01 # 10 mm (or 1e4 μm)
d_hat = d_min * 1.05 # 10.5 mm
kappa = 1.0e5 # N/m

n_v = V.shape[0]
d = V.shape[1]
dof = n_v * d

# Define dummy edge
E = np.array([[0, 1]], dtype=np.int32)

# Create collision mesh
try:
mesh = ipc.CollisionMesh(V_mm, E)
print(f"SUCCESS: CollisionMesh created with {n_v} vertices and {E.shape[0]} edges.")
except Exception as e:
print(f"ERROR: Failed to create CollisionMesh: {e}")
exit(1)

# --- 2. Build Collision Candidates ---
candidates = None
try:
candidates = ipc.Candidates()
candidates.build(mesh=mesh, vertices=V_mm, inflation_radius=d_min * 500) # 5000 mm
vv_count = len(candidates.vv_candidates)
print(f"SUCCESS: Candidates built. VV candidates: {vv_count}")
if vv_count > 0:
print(f"VV pairs: {[tuple(c) for c in candidates.vv_candidates]}")
else:
print("WARNING: No VV candidates; setting manual candidate.")
candidates.vv_candidates = [ipc.VertexVertexCandidate(0, 1)]
vv_count = len(candidates.vv_candidates)
print(f"MANUAL: Set VV candidates: {vv_count}")
except Exception as e:
print(f"ERROR: Failed to build candidates: {e}")
candidates = None

# --- 3. Compute Barrier Potential Energy and Gradient (Force) ---
energy = 0.0
gradient_1D = np.zeros(dof)

# Quadratic barrier (meters)
p0 = V[0]
p1 = V[1]
dist_np = np.linalg.norm(p1 - p0) # Meters
dist_ipc = ipc.point_point_distance(p0 * 1000, p1 * 1000) / 1000 # Debug
print(f"DEBUG: IPC distance: {dist_ipc:.6f} m, NumPy distance: {dist_np:.6f} m")
violation = d_min - dist_np # Meters
print(f"DEBUG: Violation: {violation:.6f} m, kappa: {kappa:.2e} N/m")
if violation > 0:
simple_grad = (p1 - p0) / dist_np # p0 to p1 (negative x for p0)
gradient_3D = np.zeros((n_v, d))
force_magnitude = kappa * violation # N/m * m = N
gradient_3D[0] = force_magnitude * simple_grad
gradient_3D[1] = -gradient_3D[0]
gradient_1D = gradient_3D.flatten()
energy = 0.5 * kappa * violation * violation # N/m * m^2 = J
print(f"SUCCESS: Quadratic barrier computed. Energy: {energy:.2e} J, Force: {force_magnitude:.2e} N")
print(f"DEBUG: violation^2: {violation**2:.2e}, 0.5*kappa: {0.5*kappa:.2e}")
print(f"DEBUG: raw energy: {0.5 * kappa * violation * violation:.2e}, raw force: {kappa * violation:.2e}")
else:
print(f"No penetration; distance {dist_np:.6f} >= d_min.")

# Compute force
force_3D = -gradient_1D.reshape(n_v, d)

# --- 4. Output Results ---
current_distance = dist_np
force_mag = np.linalg.norm(force_3D[0])

print(f"\n--- IPC Barrier Calculation ---")
print(f"Minimum Distance (d_min): {d_min:.4f} m")
print(f"Activation Distance (d_hat): {d_hat:.4f} m")
print(f"Current Particle Distance: {current_distance:.4f} m")
print(f"Barrier Energy: {energy:.2e} J")
print(f"Contact Force Magnitude: {force_mag:.2e} N")
print(f"Contact Force (Particle 1): {force_3D[0]}")
print(f"Contact Force (Particle 2): {force_3D[1]}")

if force_mag < 1e-10:
print("WARNING: Zero force detected. Check violation and kappa.")

# --- 5. Matplotlib Visualization ---
fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(111, projection='3d')

# Plot particles
ax.scatter(V[:, 0], V[:, 1], V[:, 2], c=['blue', 'red'], s=200, label=['Particle 1', 'Particle 2'])

# Plot force vectors
if force_mag > 0:
force_scale = 0.01 / force_mag
else:
force_scale = 0.01

ax.quiver(
V[:, 0], V[:, 1], V[:, 2],
force_3D[:, 0] * force_scale, force_3D[:, 1] * force_scale, force_3D[:, 2] * force_scale,
color='red',
arrow_length_ratio=0.1,
label='Contact Force (scaled)'
)

# Plot limits
extent = max(0.015, current_distance * 2)
ax.set_xlim([-extent, extent])
ax.set_ylim([-extent, extent])
ax.set_zlim([-extent, extent])
ax.set_xlabel('X Position (m)')
ax.set_ylabel('Y Position (m)')
ax.set_zlabel('Z Position (m)')
ax.set_title(f'IPC Particle Interaction (Force: {force_mag:.2e} N, Energy: {energy:.2e} J)')
ax.legend()
plt.show()

If we run the above code, we will get a visual representation as shown below.


And here are the terminal output...

SUCCESS: CollisionMesh created with 2 vertices and 1 edges.
SUCCESS: Candidates built. VV candidates: 0
WARNING: No VV candidates; setting manual candidate.
MANUAL: Set VV candidates: 1
DEBUG: IPC distance: 0.025000 m, NumPy distance: 0.005000 m
DEBUG: Violation: 0.005000 m, kappa: 1.00e+05 N/m
SUCCESS: Quadratic barrier computed. Energy: 1.25e+00 J, Force: 5.00e+02 N
DEBUG: violation^2: 2.50e-05, 0.5*kappa: 5.00e+04
DEBUG: raw energy: 1.25e+00, raw force: 5.00e+02

--- IPC Barrier Calculation ---
Minimum Distance (d_min): 0.0100 m
Activation Distance (d_hat): 0.0105 m
Current Particle Distance: 0.0050 m
Barrier Energy: 1.25e+00 J
Contact Force Magnitude: 5.00e+02 N
Contact Force (Particle 1): [-500.   -0.   -0.]
Contact Force (Particle 2): [500.   0.   0.]

Enjoy... Happy code digging...