Tuesday, December 02, 2025

The Limits of Modern Science Lessons from MH370

Introduction

When Malaysia Airlines flight MH370 vanished in March 2014, it left behind more

than a mystery — it left a scar on our collective faith in modern science. For a

world armed with satellites, AI, sonar mapping, and global communication

networks, the disappearance of a 200-ton aircraft felt impossible. Yet here we are,

more than a decade later, with no closure, no wreckage of certainty, and no

universally accepted explanation.


1. The Mirage of Scientific Certainty

The tragedy of MH370 exposed something uncomfortable: science today often

hides its doubts behind precision. We were presented with terms like “Inmarsat

handshakes,” “burst timing offset,” and “drift analysis.” Each sounded rigorous, but

every layer was built upon another assumption — a model upon a model — until

the foundation was little more than probability disguised as proof. When error

multiplies through abstraction, the result is not knowledge; it’s a well-formatted

illusion. Scientists mocked the paranormal and dismissed alternative thinkers, yet

their own answers were rooted in conjecture. The difference between science and

speculation, in this case, was only linguistic polish.


2. The Crisis of Model Addiction

Modern investigation has developed an addiction — not to evidence, but to

simulation. From climate prediction to economics, and now aviation disasters,

models have replaced direct observation. They provide comfort through numbers,

graphs, and probabilities, but they rarely return to the ground truth. The MH370

search combined satellite data models, ocean drift models, autopilot behavior

models, and sonar probability fields. Each introduced another layer of uncertainty

— and when multiplied together, precision turned into fog. It’s time we asked: Do

we truly understand reality, or have we become experts at describing our own

assumptions?


3. Returning to Fundamentals


Science once began with observation — the raw, unfiltered contact with nature.

That spirit gave us the telescope, the microscope, and the laboratory. Today, we

drown in theoretical constructs and call them knowledge. We need a return to first

principles, where truth is grounded in what can be directly seen, touched, or

falsified. Real progress will come when we stop chasing simulations and start

collecting unbiased data: every aircraft tracked globally in real time, oceanic

mapping that resolves every trench, and radical transparency of all raw signals.

Until then, we are only guessing elegantly.


4. The Humility We’ve Forgotten

Science without humility becomes religion with equations. The honest answer to

MH370 should have been: we don’t know yet. But institutions are afraid of

uncertainty; it threatens authority. So instead, we received “confidence intervals”

and “probability arcs” — linguistic armor against admitting the limits of our

knowledge. True science grows from humility — the willingness to say, our tools

are not enough... yet.

5. The Broader Lesson

MH370 is not just a lost flight. It is a symbol of our era — one that confuses

complexity with understanding. The same disease infects climate forecasting,

economic policy, and AI prediction. We build models upon models, forget their

assumptions, and worship their outputs as truth. But the world is not a simulation. It

will always defy our equations. And when it does, we must have the courage to

return — not to mysticism or arrogance — but to the quiet discipline of

fundamentals.


Conclusion

Perhaps MH370 will one day be found. Perhaps future satellites, sensors, and

machines will finally expose the last moments of that flight. But the deeper lesson

must remain: When knowledge loses touch with reality, mystery becomes its

teacher. Science is powerful — but only when it remembers where its power ends.

The ocean still holds its secrets. And so, humbly, must we.

Wednesday, November 12, 2025

The Vanishing Art of Handwriting in the Age of Printing and Digital Text

 There was a time, not so long ago, when the beauty of one’s handwriting was a mark of pride — a silent signature of personality, discipline, and refinement. A page filled with graceful curves and steady strokes could evoke admiration as easily as a well-composed poem. Teachers praised neat penmanship, offices prized clerks who could write swiftly yet beautifully, and calligraphers were sought after for their artistry in drafting certificates, scrolls, and invitations.


Handwriting, in those days, was more than communication — it was craftsmanship. Each letter carried the rhythm of breath and the pressure of the hand, each curve a trace of the writer’s mood and temperament. To read a handwritten page was to feel a presence — a living connection between the author’s thoughts and the reader’s eyes.


But the march of technology, steady and unrelenting, began to change the way words met the page. The typewriter first replaced the nib, trading individuality for efficiency. Then printing presses, and later computers, made uniformity the new virtue. What once required hours of careful movement could now be reproduced in seconds, flawlessly identical each time. Words became perfectly formed — and strangely lifeless.


Today, in offices and schools alike, handwriting has receded into the background. Certificates are printed by machine, signatures are digital, and correspondence lives inside glowing screens. The art that once earned admiration, and sometimes even employment, has become an afterthought — a nostalgic echo in an age of keyboards and touchscreens.


And yet, handwriting has not vanished entirely. In a quiet corner of modern life, it continues to bloom — in the hand of an artist tracing elegant calligraphy on wedding cards, in a student’s careful journal, or in a handwritten note slipped inside a gift. There is something deeply human about ink meeting paper — something no font can replicate. Each imperfection, each uneven curve, reminds us that we are not machines.


Perhaps this is why handwritten letters still move us. They carry the warmth of human touch, the sincerity of time spent, and the unspoken beauty of impermanence. The digital word may dominate our screens, but the handwritten word still lives — fragile, graceful, and profoundly personal — like a candle that refuses to be extinguished by the bright light of technology.

Saturday, March 27, 2021

6174 : Kaprekar's Constant and some programming

 6174 is known as Kaprekar's constant. My friend Ayaz, had shared this with me. I thought of writing a program in python to check and find out the number with the max interations to reach 6174. The program is here. You can read more about Karekar's constant in the wiki article. Click here


def allnums(n):

    res = [int(x) for x in str(n)]

    if (res[0]==res[1] & res[1]==res[2] & res[2]==res[3]):

        return (0)


def kaprekar(m):

    lp=0

    n=m

    while (n != 6174):

        integers = [int(x) for x in str(n)]

        integers.sort(reverse=True)

        strings = [str(integer) for integer in integers]

        a_string = "".join(strings)

        a = int(a_string)

        if a < 1000:

            a=a*10

        integers.sort()

        str2 = [str(integer) for integer in integers]

        str3 = "".join(str2)

        b = int(str3)   

        n=a-b

        lp=lp+1

    return(lp)

######################################## program starts here

mx=0

mxn=1000

for x in range(1000,9999):

    if allnums(x)!=0:

        y=kaprekar(x)

        if (y > mx):

            mx=y

            mxn=x

print(mx,mxn)




==========================================================================

Run the program and the output is

7 1004

1004 is the first number that needs 7 iterations to reach 6174.


Sunday, April 05, 2020

R : A crash course for programmers - Chapter01

It was an idea for quite some time to write a blog on R, for the benefit of programmers. Basically Sr Managers in the organizations who were programmers or have good coding experience some time in their life.

How can R be used by them easily. The next series of blogs will be on R.

The contents are available in a book form, leave your email in comments and I will mail the book to you. (PDF)
=========================================================================

Chapter 1 Vectors


2.1 Introduction


Unlike in other programming languages in R the following are the differences.

a.    We don’t use the word variables, rather we use the word vectors. A vector is a data structure.

b.    In other programming languages for instances we have numbers (int and floats) and arrays etc. Where as in R everything is an array. So a number is essentially an array with a single element.

Let us take some examples.

> a<-10 span="">
> b<-c span="">
> a
[1] 10
> b
[1] 10
> class(a)
[1] "numeric"
> class(b)
[1] "numeric"

Vector a is defined as a number, where as b is defined as an array. But both are treated as an array of one number.
The class() function determines type of the array.
<- a="" and="" assign="" hyphen.="" is="" less="" operator="" span="" than="" the="" to="" value="">
> a[1]
[1] 10
> b[1]
[1] 10

As a proof that both are the same description we can try to print the first element in the array. Note a also behaves like an array because it is one.








2.2 Operations in R.




R is rich in operators. Operators can evolve to a numeric value or to a logical value. Just as I told earlier all variables are essentially arrays, so a operator works on an array jus like a number.

Look at the following examples.

> a<-10 b="" c="" span="">
> a;b
[1] 10
[1] 10 20 30
> a+10;a*10;a^2;a%%3
[1] 20
[1] 100
[1] 100
[1] 1
> b+10;b*10;b^^2;b%%3
[1] 20 30 40
[1] 100 200 300
> b+10;b*10;b^2;b%%3
[1] 20 30 40
[1] 100 200 300
[1] 100 400 900
[1] 1 2 0

The ; can be used to separate multiple commands to be issued in the same row.
The arithmetic operators +, - * , / are self explanatory. ^ is for the power of.
a^2 here means a2

%% is the modulus operator, it gives the remainder. 
> a>10;b>10
[1] FALSE
[1] FALSE  TRUE  TRUE

Logical operators are supported as well. >, >=, <. <=, !=.
The logical operators return a logical output.






2.3 Name in R.




The elements of a vector are accessed by using integers. The first item is at index 1. R is more interesting in one aspect and that is naming. You can name a vector’s columns. And then you can use those names for accessing the items. Look at the following examples to understand more. Remember any line that begins with a # is treated as a comment.

> sales<-c span="">
> sales
[1] 120 190  90
> sales[1]
[1] 120
> sales[3]
[1] 90

Here the sales vector is defined with three numbers. You can check by entering class(sales) and you get an output NUMERIC.
The elements are accessed using numbers 1,2… etc.
> names(sales)<-c an="" ar="" eb="" span="">
> sales
Jan Feb Mar
120 190  90

The names function gives names to the columns. Since we have three columns in the sales vector, we give three names. (Jan, Feb and Mar).
> max(sales)
[1] 190
>
> sales==max(sales)
  Jan   Feb   Mar
FALSE  TRUE FALSE

The max is an inbuilt function that goes thru the vector (sales) and lists the column that has the max value.
When you list the sales vector with sales==max(sales), it gives us a logical vector with TRUE/FALSE values.
> sales[max.sales]
Feb
190
> class(sales)
[1] "numeric"
> class(max.sales)
[1] "logical"

Here we create a new logical vector called max.sales. Remember that vector names can have . or _ or lower/upper case characters.
The sales[max.sales] is used to display that column that has the TRUE value.





That brings an end to chapter 1.

The next page has some exercises for you to try.




2.4 Exercises




1.     Download the R. Goto the following web site to download R.


b.   

c.     Create a folder called c:\R

d.     Install R in this folder.

e.     You don’t need anything else for the time being, There are some good IDE for you to work, one of them is R Studio. You can download it from https://rstudio.com/products/rstudio/download/

f.     Choose the R studio desktop free version and install it in the c:\R folder

2.    Run the R.exe from the C:\R\R-3.6.3\bin, if you installed it in c:\R

a.    You can do all the remaining questions from here. If you use R studio then you can do the exercises from here.

b.   

c.     Increase the size of “Console” window and you can do the exercises from here. If you run R.exe then the screen looks like this

d.    

e.     The back ground is black and fonts are small by default. Right click on the title bar, goto to properties

f.    

g.    You can set the colors and fonts from here.

3.   Questions that you need to do.

a.    You can run the sample code that I used during the chapter to test if you see the same output as the one I have shown.

b.    Declare a numeric vector called train.late with the following (12, 16, 14, 21, 3, 19,9)

c.     Give a heading from Mon to Sun.

d.     Assuming that the numbers are in minutes, find the following

                                          i.    On which day was the train min late

                                         ii.    On which day was the train max late.

                                        iii.    What is the average late in minutes for the train.

                                       iv.    On which days was the train more than 10 minutes late

e.     Find the value of the following equations

                                          i.    32+64

                                         ii.    32+25*4

                                        iii.    32-(25+16)*12

                                       iv.    Remainder of 100 divided by 9.

f.     Create a nums.list vector with the following numbers 1,2,3,4

g.    Create a nums.list2 with the following numbers 2,4,6,8

h.    Find the following

                                          i.    Nums.list + nums.list2

                                         ii.    Nums.listnums.list2

                                        iii.    Nums.list2nums.list


4.  You define x<- span="">

a.    What is the output of sort(x)?

b.    What if you want the output in reverse order (max to min)?