Category Archives: Articles

Problems of Software Testing

It always annoys me when I find an error in either an operating system or a user program. The more stupid a bug is, the more it seems incomprehensible how such bugs can remain in a product with today’s modern program development tools.

Perhaps the theory and practice of programming is not as advanced as we would like to believe? Perhaps haste and the rapid hunt for money explain the presence of primitive errors? Or is it something else entirely?

I started to think about this and imagine a testing system that could be used to filter out all programming and system errors. And I realized that such a system cannot be created, at least as far as one type of tests is concerned, the “black-box” (black-box, or external) testing.

This is a testing technique where the tester does not have the source program, only the final product. This is what you need to determine if it is flawless or not. Let’s say that you have the specification in your hands, you check the expectations contained in it one by one, if you have taken them all one by one and found no errors during the run, then the tested product can be considered flawless. Not at all. The specification may not include special cases. The disk runs out of space, the memory runs out, the network connection is interrupted, the user can give the program data that he could not give according to the specification, but the user is just like this, intentionally or accidentally, gives data that the specification makers didn’t think so.

But even if we have a complete specification that includes behavior descriptions for all edge cases and special situations, we cannot perform our testing task perfectly.

To understand this, let’s look at a very simple case, we get a max() function from somewhere (say, in a DLL), which expects two integers and returns the larger of the two. Can we black-box test this function in such a way that we can declare that the function is 100% error-free and will return the larger of the two received integer values under all circumstances?

Let’s write a test program, include the calls max(1, 2) and max(2 ,1), in both cases we should get 2 as a result. To be on the safe side, we call the function in the max(2, 2) way, so we should still get 2. Are we ready with the test? Is the code 100% error free?

In principle, yes. In practice, however, we have to consider the case of the malicious coder, this is a programmer who deliberately hides an error in the code, and can do this in very sophisticated ways. In principle, our 100% error-free code can actually contain a lot of errors.

Because what if there is a detail in the code that works depending on the received arguments, and if one of the arguments is, say, 1,000,000, it returns not the larger argument, but the smaller one. We can only test this and detect the error by calling the max() function in all kinds of combinations up to 1,000,000. And since we can’t know where the error is hidden, we have to try all combinations of calls not only up to 1,000,000, but up to the maximum integer that can be represented on the machine.

This test will take longer than the very first one, we will run it, and we will not find any errors. Can we now declare the function 100% flawless?

No not yet. Our programmer can be even more malicious than that and hide an error based on date and time. To find this, we need to set our machine’s clock to all possible dates and times and repeat the test for all possible integer combinations, since the programmer could have combined the date, time and argument tests in such a way that the function could conceivably will only give an incorrect answer to a single combination in one specific second of the next fifty years, otherwise it will be flawless. But a single error is enough to make the code not completely error-free.

I think we already see the hopeless future. In addition to the arguments and the system time, our malicious coder can take the size of the program, the size of the total and free memory, whether there is an even or odd number in a certain register, it can store how many times it has been called, and it works well or poorly depending on it. The possibilities are practically endless, and because of this it is completely impossible to finish in human time.

Of course, we can say that these examples assume rather absurd malice on the part of our coder, but we didn’t examine how viable this idea was, but we wanted to find out whether perfect black-box testing is possible in principle.

Based on what I have said so far, I see it as proven that external means cannot be used to determine whether a program or code is flawless or not. We can’t even give a percentage estimate, since we don’t know how many undetected errors there are for each detected error.

I don’t want to give the impression that all those who issue a wrong code deserve to be exempted. There’s no question about that. It is simply a fact that black-box testing cannot give us complete security.

So where do we look for complete security? First of all, we can trust our own code created for ourselves, since we know that it was not written by a malicious coder and not with the intention of causing harm. On the other hand, we can increasingly trust those open source codes, which in principle can be checked by many people, so it can be found out if there is possibly malicious code in it. Although, just because something is open source doesn’t mean it’s verified. In principle, every open source code should be accompanied by a checklist of who analyzed the code, when, what parts, and to what depth. Needless to say, such a thing does not exist nowadays, and it is hard to imagine how many man-years it would take to create a checklist for an open source program. And this list would only be reliable until the first modification, after which it would have to be revised after each modification.

Now that we’ve seen how reliable black-box testing is, let’s see if we can improve its reliability. For this, we have to open the “black-box” to some extent, i.e. we have to look into the code as well. For this, we can use a tracker, a reverse translator, or an automatic analysis program. Thus, we have slightly more chances to find a strange constant or conditional jump instruction, which may indicate malicious code. For example, this may work for a max() function, but we can write a max() function ourselves instead of spending a lot of time analyzing it. However, the real codes are usually much, much more complicated than the max() function in our example.

Finding hidden code in a larger program by tracing or disassembling it without understanding the operation of the entire program is a very big task.

So it looks like we won’t be able to reach 100% certainty with the “open black-box” technique, or even with the analysis of the open source code.

To examine if we can go further with other tools, it is best to take a closer look at antivirus programs to see what level they have reached in the automatic detection of malicious codes. Unfortunately, we can say that there is a lot of uncertainty. When the heuristic analysis of an otherwise popular, widely used, purchased search engine has to be turned off because it deletes programs that we cannot work without (not one we wrote ourselves), then it seems that the analysis finds code that is not a virus, or it is too lenient or meek, thus making even truly viral code look harmless.

Perhaps expecting 100% performance from automatic code analysis is as impossible an expectation as trusting writing a program to tell any other program whether it will enter an infinite loop or stop at some point. We already know that this is impossible. Perhaps the 100% detection of malicious code and program errors by automatic analysis is an equally impossible task. Of course, I can’t prove this.

Now is the time for someone to make a list of open, yet to be solved computing problems, similar to David Hilbert’s 23-point list (which listed problems to be solved in mathematics), this list could include the question: “Is it possible to write a program that proves the correctness of a program, if not, why not?”. Perhaps we already see the answer to the question, probably the intractability of the stopping problem is the key here as well.

I know that if such a program were to be completed, it would first have to be verified that it is correct, and perhaps this is the reason why this program will never be completed either…

Nyíregyháza, September 27, 2018 – April 7, 2019

English translation: August 29, 2023

Cogito

There is no sentence in the history of philosophy and human thinking that is more influential and more quoted than Descartes’ statement “Cogito ergo sum”, “I think, therefore I am”.

I don’t consider myself a particularly good philosopher, but this sentence has always bothered me, and I’ve never understood why it’s considered a cornerstone of philosophy.

I think that this sentence does not assert anything, or yet it asserts something, but the conclusion “therefore I am” is completely unnecessary, because it adds nothing to the “I think” part of the statement.

The correct statement would be “I’m thinking.” In this statement, it is not only that the person making the statement engages in certain advanced brain activity, that he draws conclusions from his experiences, sets up theories, proves or disproves them, so the statement contains not only the fact of thinking, but also philosophy, human thinking, the greatest mystery of human existence, existence itself.

“I’m thinking” is expressed in the first person singular, so it includes the subjective experience of individual existence, the experience that we will never be able to share with other people, since the most important feature of our existence and self-awareness is subjectivity and uniqueness. No human being will ever experience or feel the same way I feel about my own existence, and I will never be able to put myself in the skin of another human being to feel their sense of self-awareness. Or, I feel exactly the same as everyone else, except that I feel it in my own body, in my own consciousness, while other people feel the same in their own body and consciousness. It’s the same feeling, but somewhere else, in a different body and in a different soul, we can’t exchange it. So the feeling is the same, but the perceiver is always different. At the same time, the perception of the perceiver is also the feeling itself, it is a self-referential perception that cannot be described more precisely for this reason alone.

This feeling is already there in “I’m thinking” and also perfectly expresses the statement that whoever thinks it, already exists, because non-existent cannot think. So “therefore I am” is already a completely unnecessary conclusion.

If I say “gravity is universal”, then it is a meaningful and true statement, the whole sentence is necessary, since the first half “gravity” only tells what I am going to say something about, while the second half “universal” also says what I claim about gravity.

While this statement is an objective statement about a phenomenon of nature, “I think” is a subjective statement that requires a subject. The trouble with this subject is that it cannot be derived from anything else for the moment and probably forever. The subject is either present or absent. We cannot and will not be able to generate a statement by any method that defines the subject using objective entities. Descartes tries to cheat, he pretends that the existence of the subject “therefore I am” follows from the first part of the statement “I think”, although this is simply a lie, the subject is already there in the first word, so Descartes did not manage to grasp anything of the nature of the subject, no matter how much he wanted it.

If he had made a statement like, “gravity is universal, therefore I am” then I too would have bowed to his genius, since the first part is a statement about the object, the second part, the conclusion, is already about the subject, it’s a shame that the whole statement is of course not true. But the statement should be something like this, which could rightly win the recognition of all thinking beings.

The only problem is that no one can make such a claim. The subject, the self-consciousness, will always remain an unsolvable mystery. Forever.

In fact, if we want to get close to the subject, we don’t even need to say “I think” or “I am”. We really don’t have to say anything. The subject, the self-consciousness, does not need the help of speech, in order to manifest itself, no activity is actually necessary. Or, the only such activity is existence itself. But since our existence is involuntary and a continuous activity, we do not particularly need to force it to exist. Anyone who has ever meditated and emptied their mind to the point where they didn’t think about anything (it’s quite difficult to achieve this state, but it is possible), has already felt the state without words, thoughts and feelings, which nevertheless includes only one feeling, the sense of existence.

Self-consciousness, the subject, cannot therefore be approached with words, there is only one method for examining it, meditation. However, even with this method, we cannot achieve more than feeling our own existence. However, we cannot feel anything else – any object, color or taste – more directly than this. The most special thing about subjective self-consciousness is that it is the only rock-hard perception of which we cannot doubt its reality. Our eyes, ears, nervous system and brain can trick us. We can doubt everything, and we should doubt it to some extent, but we can be sure of one thing without any doubt: the person who perceives his own consciousness as the only thing that exists even in the emptiness of meditation, exists.

Our only real and direct perception is the perception of the existence of our own self-consciousness.

All philosophy must start from here.

April 1, 2012

English translation: August 28, 2023

Delphi Is 25 Years Old

I was with him from the beginning. I have been working with Borland Pascal since it was released after 7.0 as Delphi 1.0. Our highlights: Delphi 1.0, Delphi 5.0, 6.0, 7.0, Delphi 2007, Delphi XE4, XE7, Delphi 10.1 Tokyo, 10.2 Rio. The numbering scheme has changed several times, as has the owner, first Borland Delphi, then Codegear Delphi, and now Embarcadero. But the most important features have remained: the fastest translator, an easy-to-learn language that is constantly evolving, adding new language elements, and a great, intelligent, easy-to-use IDE. An excellent code editor with a screen designer. The designer and VCL were a very important step forward after Borland’s Pascal Object Windows Library.

Pascal was the first serious programming language I learned, and it remains my favorite programming language to this day. Native string type, which makes text handling easy, overflow checks protect against the security risks that so many C-C++ programs still struggle with today, lots of error possibilities, which cause a lot of headaches for users. Delphi’s rich set of types and components makes it suitable for all kinds of development. The “class” type facilitates object-oriented programming, which is much more convenient and faster than with the old “object” type. VCL components are easy to use, their logical field and method sets, field and method names all help to make programming as simple as possible. An active user community contributes to the expansion of the component set, often with free and open source solutions.

For me, Delphi 2007 was the best release, I love it and I still develop with it to this day. Delphi 6 was also a very successful version, I worked with it at my office for almost a decade. However, I think there are a lot of organizations, including the one where I worked, who got stuck in Delphi 6 development, did not move on to more modern versions in time, and now it is impossible for them to switch. It’s kind of like COBOL, there’s still a huge amount of COBOL code in the world, simply because they can’t rewrite the codebase.

Codegear Delphi 2007

From the XE series, I liked the XE7 the most. It was a very good step to launch the Starter Edition and then make it free, which gave students, those familiar with programming, and small businesses an excellent development tool. I have a 10.1 Starter Edition, it has the nice feature that it remains free and does not expire like the Community Edition that replaces Starter. This edition is also a good tool for the little ones, but the introduction of the time limit is a step back from the Starter Edition.

And now about the negatives. Each version brought new features, but also bugs, the only version I was completely satisfied with was Codegear Delphi 2007, and so far I haven’t encountered any bugs in this version. Currently, for example, direct variable declaration in function blocks generates an error signal on the IDE interface, but at the same time the code can be compiled flawlessly. And this error now occurs in two versions in a row! Has no one tested this feature at all and the bug has survived two releases? In previous versions, it also happened that the IDE translator and the compiler did not work in sync and did not show the same errors, which is of course quite annoying. And what I really miss is the stack log display and the quick help of Borland times (now even the Delphi help is full of C++ stuff, which nobody cares about, since I work in Delphi!), the help is unbelievably slow for the previous chm version, in comparison, I just pressed F1, and lo and behold, the help text appeared immediately, along with lot of examples! And the biggest problem is the lack of efficient automatic memory management, currently the developer is fighting a ceaseless and hopeless battle with memory leaks and rolling up security bugs. To this day, this is Delphi’s weakest point. Delphi also lacks a source documentation tool similar to JavaDoc, which could be used to generate html and chm help from comments in the source code, in such a way that the IDE can also use this help. That is, we can get quick information about our own codes while writing programs in the same way as about the contents of Delphi units.

But anyway, for me it’s the best programming language and development tool I know, and of course I’m really looking forward to the next release, 10.4, which will probably bring new things in the field of memory management. And, of course, I wish Delphi a similarly successful next 25 years! Together, on!

Nyíregyháza, February 15, 2020 – March 22, 2020

English translation: August 30, 2023

Third Day

I have come across this statement many times, recently, for example, Discovery World gave a program about the Shroud of Turin, where it was again said that Jesus was among the dead for three days, that is he was dead and was in the rock tomb for three days.

This is simply not true, which is why I would like to clear up this misunderstanding, which is based on the unfortunate confusion of “three days” and “third day”.

Let’s look at the facts: Jesus was crucified on a Friday and taken down at the end of the day on Friday and taken to the rock tomb. It is very important to know that this happened before the evening had set in, because the Jews considered the evening to be the beginning of the next day, and since the next day was Saturday, then they could not do any work, including burials, or any activity related to the dead. Jesus Christ therefore went to the rock tomb at the end of Friday, according to our convention, in the hours before the evening of Friday. The Sabbath day passed, which according to our calculation lasted until Saturday evening, when Sunday began. But since it was already dark at that time, the faithful could not visit the grave, only at dawn, which for us is still the beginning of Sunday, but for the Jews, this was already well within Sunday.

Let’s calculate the time in the way we are used to: Jesus could therefore have been in the tomb from Friday evening to Sunday morning, but this was not three whole days, but only one whole day, a period from evening to midnight, and a period from midnight to dawn, which in total does not reach even two days.

So Jesus was not in the tomb for three days.

Where does the misunderstanding come from? From the fact that Jesus repeatedly told his followers that he would die but rise again on the third day. However, he never mentioned a three-day period, he always speaks of the third day.

What is this third day exactly?

In everyday language, this means the third day, the day after tomorrow. And then why is Sunday the third day? Because the first day is that day, Friday, the second day is Saturday, and the third day, that is Sunday.

It is quite clear that Sunday dawn is therefore not three days from the death on the cross, but a third day, that is a little more than one day.

The definition “third day” occurs very often in the Bible, if you have a Bible in txt or html or even pdf format, you can easily find the word, it can be found in many verses of the Old Testament, but it is just as common in the New Testament. An interesting occurrence can be found in the only report about Jesus’ childhood, when his parents take the 12-year-old Jesus to Jerusalem, only to realize that he is not with them on the way home. They go back to Jerusalem, where they find Jesus among the scribes whom he teaches, even though he is still a child. And he answers his parents when they question him, that he is acting in the Father’s affairs and that his parents need not fear him. The child Jesus was found by his parents on the third day.

A shockingly interesting parallel that I just noticed. The Father loses his son on Friday, who dies, perhaps we can say that with his death he acts in the affairs of the people, since he dies for the people. On the third day he rises, using the analogy, the Father finds him again.

Thus, the “third day” connects the 12-year-old Jesus with the 33-year-old Jesus, moreover, both stories take place in Jerusalem, so the location and duration are the same, in both cases loss and finding, death and resurrection, parent and child. It is surprising how interesting parallels and connections can be found even among distant parts of the Bible, if one reads carefully.

But I would like to touch on one more thing about the resurrection of Jesus, because no one has ever dealt with it in any meaningful way, and I would like to draw attention to this fact as well, because that is the only way we can see it really clearly. In the prophecies of Jesus about his own death and resurrection, the time designation “third day” is included, but this must be understood from our point of view, and this does not necessarily mean that Jesus was in the tomb from Friday night to Sunday morning, more precisely, it does not mean that Jesus rose at dawn on Sunday.

Why am I saying this? Simply because no one but Jesus was in the rock tomb, let alone, because it was a large stone and Roman soldiers guarded the entrance. So we cannot know anything about when he actually rose. For sure, on Sunday morning, the witnesses no longer found him in the grave, so the resurrection took place sometime between Friday night and Sunday morning, but in principle it could have happened at any time during this period. Since we cannot know anything about the exact time in the absence of eyewitnesses, we therefore accept that the resurrection took place at dawn on Sunday. But I say again, if we act with strict logical correctness, then we cannot declare this. In a court, for example, we could only say with certainty that this event happened sometime between Friday night and Sunday morning.

Obviously, Jesus knew that no one would come to the tomb until Sunday morning, since the Jews were not allowed to do such a thing on Saturday, so he could not formulate it with mathematical precision and say exactly when the resurrection would take place. It only made sense if his prediction marked the time when his followers would learn about it, and this time marking was precisely the “third day”.

And speaking of the events of Sunday morning, it is very interesting to note that the disciples were not the first at the tomb. Despite the fact that Jesus repeatedly and emphatically told them that he would rise on the third day after his death, not one of his disciples thought of being at the tomb in the morning. Peter’s behavior is understandable, he was still struggling with the shame of the three-time refusal, and he probably would have even hid underground from his own conscience and the accusing eyes of the others. But there is John, who saw the crucifixion and was a dear disciple of Jesus, and Jesus even entrusted his mother to him before the death on the cross, if anyone should have been there, John was it. Yet he was not the first, but Mary Magdalene, a woman, and not a disciple, at least not among the apostles. And she probably didn’t go there because of the prophecy either, but because she wanted to clean Jesus’ body as soon as possible and prepare it for burial. After all, it is very important for us to know that Jesus was hurriedly placed in the tomb on Friday night, since the Sabbath was already very close, they just wrapped him in the shroud and placed him in the tomb, but they could not even wash the blood from the body. This is probably why Mary hurried to the tomb, to take care of Jesus’ body in a dignified way and to make up for everything that was missed due to Friday’s haste.

Thus, in the end, she was the one who brought the news of the resurrection to the disciples, and in the end it was John who, seeing the shroud without the body, “saw and believed.”

Think about it, if the body of Jesus was not taken down on Friday night and there was time to wash it, then the Shroud of Turin would not preserve traces of blood with anatomical accuracy to this day. Timing is therefore incredibly important for the Shroud. If it were any other way, the Shroud would not preserve such a quantity and such an important, and especially such a precise trace of the crucifixion.

The “third day” was the most important event in human history. That is why we need to know exactly what this means, and we must not formulate it superficially or imprecisely, because a very important teaching can be lost as a result of one bad translation or one bad interpretation.

May 18, 2013

English translation: August 25, 2023

The Final Questions

If someone, like me, sets out to face the currently unsolved questions of physics, it is good to prepare in advance that the struggle will not be easy. The greatest scientists have wrestled with these problems for many centuries, mostly with little success. Still, the thing is, we can’t help but keep trying, more and more persistently and more and more creatively.

Many people may say that without an experimental basis, we have little chance to reach any conclusions about the most important problems, and nowadays, when billions (in dollars and euros) are spent on the LHC and other similar projects without achieving any serious success, it may seem foolish the cultivation of domestic physics.

The truth is, however, that the philosophical approach can work very well in the case of fundamental questions without any experiment, and the Greek philosophers have provided the most surprising and best examples of this. Zeno’s paradoxes are alive and well to this day, although there are proposals for solutions on the stage, but we cannot rest completely on this front. The Greek philosophers used their common sense alone to create a picture of the world consisting of atoms, realized that the Earth is spherical, and made incredible statements about, for example, infinite time. They constructed the beautiful science of geometry and also achieved fundamental results about numbers. All this without having built anything for it. And although Greek science obviously could not be successful in everything, they formulated the basic problems, the ones we still struggle with today.

In order to ask questions and outline problems, mere reason is sufficient, and of course the perceptions that can be called everyday. The best ideas come from observations that are so simple that you’re surprised no one else thought of it much earlier. The best example of this is the case of Olbers, who looked up at the stars as a doctor and realized that the assumption of a static universe infinite in time and space conflicts with our everyday experience that the night sky is dark.

In order to formulate the final questions, we do not need anything other than observation and thinking. The situation is different with drawing conclusions and theorizing. Since these are not simple problems – that’s why we called them final questions – so that the research work for answers does not feel unnecessary, even if we do not get anywhere in the world, we are forced to outline a pessimistic scenario as a first step. This is not an escape, but rather a kind of protection against failure. Perhaps the problem with today’s physics is that it is not prepared for failure. If the theory does not find experimental confirmation, then the theory is modified in such a way that the ability to prove or disprove it exceeds the technical possibilities. Thus, there is always the excuse that the theory was not verified only because of the limited experimental possibilities. For this, it is usually sufficient to set a few freely selectable constants, or even to use some mathematical trick in order to save the faulty theory.

It would be very, very important that the creators of unsuccessful theories do not have to fear the collapse of their professional careers, because in order to protect their jobs, they are thus forced to endlessly divulge even otherwise indefensible ideas. If physics is full of physicists who consider their university position and professional prestige more important than honesty, not many breakthroughs can be expected in the future either.

We have to face the possibility that we have limitations. The limit can be mathematics itself, it can be the human thinking itself, and it can also be a complexity limit to our understanding. Experiments can also have absolute physical limits, for example we cannot conduct experiments at the absolute zero degree temperature, because it is impossible to reach it. We cannot perform experiments outside the Universe either, so for example we cannot measure from the outside whether the Universe is rotating or not. Of course, these are obvious limitations, but there are also less obvious ones. For example, we cannot have knowledge of the “true” reality, we have to accept that reality is what we believe it to be. We cannot know about the subjective experiences of other people, only indirectly, never directly. In addition to these, there can be many limitations, the formulation of which can be a limitation, for example, it is very difficult to understand and explain self-referencing systems, and the final questions are actually about self-referencing systems.

So, without thinking about anything for now, let’s formulate the pessimistic principle: the ultimate questions can never be answered, due to our physical, mathematical, logical and thinking limitations. No matter how much we try, no matter how long and no matter what, the final theory will never be complete and without contradictions (as Gödel already proved about mathematics). There will always be an inexplicable and incomprehensible phenomenon, a perception that will escape even the most cunning theory.

So our first step should be this, let’s accept that we are doomed from the start. This is not so difficult, although at first it may seem extremely strange to many, I would prefer to say that it is just an honest acceptance of the fact that we are human. Omnipotence and perfect wisdom are not in our possession, nor will it be. So we must stand on this ground, and looking the world from here, we must construct it in our own consciousness.

Could even the dear Reader say this, “Why don’t we stop here and be satisfied with this much?”. The suggestion is completely justified. The truth is that human life can actually be lived risk-free, relaxed, and even completely happy without dealing with any of these problems, even for a minute. A musician, a painter, a farmer, even a writer, but even a soldier or a steel caster can live a full, balanced, perfectly happy life without even the tangential proximity of philosophy or physics. This is very important, and I would like my statement to be really emphasized, that only those who feel that this is an indispensable part of their life should deal with this type of problem. For example, when I was in the seventh grade of primary school, I had thoughts like that maybe evolution could also work during the struggle of the Universes, or that time actually originates from the fact that we all move at the speed of light in a spatial dimension, and even then I felt incredible excitement thinking about such things during. Today I know that for me scientific thinking and philosophy cause more pleasure than alcohol or the use of mind-altering drugs for others. Maybe that’s why I don’t drink alcohol, and I’m not addicted to any other passion either, for me, chewing on the things of the world ensures a perfect full life.

Thus, I declare that those who find joy in it, should boldly open the book of Nature and research it, even if, as we know, we may be doomed from the start. Just as a mole cannot deal with the colorful world above the surface (I also wrote a short story about this), our fate may be the same, and time, for example, will forever remain indecipherable and incomprehensible to us. But the fact that we are thinking people – and may even be the only conscious species in the Universe – obligates us to try the impossible and face the difficult questions. In case we have a helper (another short story was written about this: during the destruction of a planet, chance writes the much-sought-after secret of existence, which of course no one reads). After this, I think we are ready to formulate the four biggest questions of humanity:

1. What is the time? This question is different from the next three, which have in common that all three are examples of a consequence without antecedent. Time, on the other hand, is the framework of all things, and at the same time, it is the most cunning, most elusive concept that only humans can encounter.

2. How did the Universe originate?

3. How did life originate?

4. How did we gain consciousness?

So the program was put together. What can we do with it? Well, according to the pessimistic principle, maybe nothing. But during the search, we can still feel good about it, and we can even find treasures…

October 22, 2012.

English translation: August 23, 2023.

Safe Programming Language

My current post on LinkedIn:

Safe language features:


– range check
– arithmetic overflow check
– stack overflow check
– strict typing
– if it also uses dynamic typed variables then a safe runtime type check mechanism
– if a variable goes out of scope, its resources must be freed
– if an object has a live reference it should not be freed
– You should be never allowed to free a resource twice or more
– nil pointer check, or completely avoid pointers (Java!)
– no nil value allowed to assign to any variable (it’s insane that in Java a String could be nil, it should be empty string instead of nil)
– no object should have a nil value, they should be empty object instead.
– no access across freed or otherwise invalid pointer
– code analyzer to detect (if possible) infinite loops
– exception handling, do not allow empty catch blocks or any swallowing of an exception
– detailed stack trace and memory allocation map

…and that’s it for now…

The Birth of Christianity

The birth of Christianity is a long process that has not really ended today. Faith, religion is forming, believers are changing, and there is only one which is not changing, the Holy Scripture. And yet for me the birth of Christianity can be linked to a single well-defined moment, at that moment all decided, faith was born, that is the faith in the resurrection of the Savior, which is the basis of the Christian faith, religion, without which there is no Christian man. He or she, who does not believe that Jesus really died for our sins and then was resurrected, is not a Christian. One may accept the teachings in many things and may even live by them, but if he lacks faith in the resurrection, he or she may be excellent, very good man but not a Christian.

Continue reading The Birth of Christianity

25th Brithday of Delphi

I was with Delphi. Since it appeared after Borland Pascal 7.0 as Delphi 1.0, I have been working with it. Our great moments were: Delphi 1.0, Delphi 5.0, 6.0, 7.0, Delphi 2007, Delphi XE4, XE7, Delphi 10.1 Tokyo, 10.2 Rio. The numbering scheme changed a few times, first it was Borland Delphi, then Codegear Delphi, then Embarcadero. But the most important features remained the same: fastest compiler, easy to learn language with continuous development, new language elements and a great, intelligent, easy to use IDE. A great source editor with a screen designer. The designer and the VCL was a huge advantage after Borland Pascal’s Object Windows Library.

Pascal was the first programming language I learned and it remained my favourite one. Native string type unburdens text processing, overflow checks eliminate the security holes which are in so many C-C++ programs even today, causing a lof of bugs and headaches for the users. Rich type selection. The “class” type makes easy the object oriented programming, easier than it was with the old “object” type. VCL components are very handful, and an active user community continuously expands the component supply.

I think, Delphi 2007 was the best of all, I love it and I work with it since we met. Delphi 6 was also a very successful one, I worked with it for a decade. But I think there could be many companies, like the one I worked for, which sticked to Delphi 6 and if they did not stepped in time, now they are not able to shift to more modern versions. The same effect as with COBOL. From the XE series I liked the XE7. Then it was a very good step for students and for little companies to make free the Starter Edition, I have a 10.1 Starter Edition, the good point is that it remains free, and not limited as the Community Editions. They are also good tools for the little ones, but their time limit is a little bit backstep compared to the Starter Edition.

And now for the negatives. Each version brings much news, and a few bugs, I was only satisfied completely with the 2007 edition, I did not encounter any bug in it. Now, for example, the inline var declaration causes error warnings in the IDE, but the code can be compiled. This bug presents already in two versions! Was it not tested and lives already in two versions? Also a few versions had the error that the IDE syntax check and the compiler syntax check was not synchronous. And I miss so much the stacktrace log, a quick help of the Borland time (now even the Delphi help is full of C++ stuff, who cares about C++, I’m in Delphi!), help is enormously slow compared to earlier chm help, I just pressed F1, and look, the help appeared at once! And the most I miss, a decent memory handling, now it is a neverending fight with memory leaks and access violations. Up to now it is the weakest side of Delphi. Absolutely missing is a JavaDoc-like tool which could create html and chm help from the comments written into the sources. These generated helps should be used by the IDE also, so one can get help from his or her own sources as from Delphi units.

Anyway, it is the best developer tool and language I know, I am waiting for the upcoming 10.4 edition. And of course I wish Delphi another very happy and successful 25 years! Let’s go together!

Nyíregyháza, February 15, 2020. – March 22, 2020

COBE – Our Place in the Universe

NASA launched the COBE satellite on 18th of November, 1989. The main purpose of the mission was the examination of the thermal spectrum and the flatness of the cosmic microwave background radiation.

Flatness is important in terms of the emergence of cosmic structures. If the background did not show any “grain”, then we could not know the origin of those material centers, which later the galaxies and galaxy clusters would develop from. COBE found those “ripples” of the cosmic background, which could start the build of these cosmic structures. This is therefore a clear success, confirming the currently most popular theory of birth of the Universe, the theory of Bing Bang.

Another confirming of the theory is also the result of the COBE mission. It turned out that the spectrum of the cosmic background radiation nearly perfectly matches the spectrum of the absolute black body radiation. That means that the Universe was in a thermal balance in that time. This of course raises more questions, in particular, in relation to the second law of thermodynamics: if the total energy was in the radiation field in thermal equilibrium with maximum entropy, than the heat death of Universe, – which was so often cited by the physicists of the 19th century, as the threat of future – will not come in the future, but already has occurred in the past.

There is a more interesting result of the COBE mission. A Doppler-effect is detectable in the frequency of cosmic background radiation. The radiation frequency shifts towards blue in one direction of space, and shifts towards red in the opposite direction. It is calculated from the amount of shifting, that the detector, which is Earth itself, moves in space with a velocity of 600 km/s.

And it raises very interesting questions. For we know – since Galilei and Einstein -, that absolute velocity has no meaning, if we speak about the speed of something, we should always point to the reference body, we mean the speed to. Now, however, here is a speed, which we measured without telling the reference point we used.

So is this an absolute velocity? In contrast with all we learned about the principle of relativity of Galilei and Einstein in the school?

The majority of the scientists reply to this, that it is compared to the speed of the background radiation, so there is no any absolute in it.

But the truth is not that simple. For what is that background radiation? This is an electromagnetic space of radiation, which fills the whole Universe. So this is not a reference point, or body, or any rigid object in the classical sense. This radiation space is absolute in the sense that it is accessible to all the observers of the Universe. All of them can measure their velocity referenced to the background, they can count the velocity referenced to each other from this, so an absolute frame of reference could be built with the help of this. In addition to, the temperature of the background decreases by the age of the Universe, so an absolute time scale is also can be constructed.

Though, there is a little problem with this absolute scale. Namely, that the local velocity of expanding could not be detected, but this could be expected from an absolute frame of reference. Now let’s take an object, which is – according to its distance and the Hubble constant – moving away from us with half speed of light because of the expansion of the Universe. If there is a true absolute frame of reference, then he can measure it referenced to the background radiation. This would result so drastic blue-, and red shift, that the cosmic background would seem radically different to him, than to us. But the background should be nearly the same for every explorer in the Universe, for if it were not, there would be a respected explorer in the Universe, and this would be a harder return of the geocentric view of world.

Let’s note that the absolute frame of reference is not the same as the respected explorer. The former is an electromagnetic background, the latter a material explorer, who would be selected as some kind of center of the expanding Universe.

The key question is that: when we can measure our velocity to the background radiation, so why are we unable to measure our speed which comes from the expansion of the Universe?

Michelson and Morley at the end of the 19th century did their famous experiment precisely because they wanted to show the movement of the Earth in relation to the hypothetical ether. The null effect led to the special theory of relativity. The COBE showed the movement of the Earth a century later, though not relatively to the ether, but to something very similar to it. If Michelson and Morley had executed the COBE measurements, would there be a theory of special relativity?

I think, not…

March 1, 2014.