My attitude towards the flat Earth conspiracy theory

People who claim that the Earth is flat rather that spherical, and people that just are not sure whether Earth is flat or spherical, all they want is scientific proof in order to believe this or anything else for that matter.

And this is the mentality that science teaches us to have.

Richard Feynman said “Religion is a culture of faith. Science is a culture of doubt”. This means that in science, we welcome the doubters. Actually, we favor the doubters. Whenever something comes up from a person/scientist/whatever, the person invites universities, labs and everyone around the world to look into her findings and try to duplicate her experiment or validate her thinking to see if she was right. This is how science works.

So, if someone says to me that the Earth is flat or round, I should say, let me reproduce your claim. I should not say “all right”. I should say “fine, let me verify it.” This is how we teach Physics. We put students in the Lab. We do not say things to them and hope they remember them. We put them in the Lab. We give them microscopes, telescopes, timers, paper and blackboards to do calculations. All these in order for them to verify or dismiss theories.

So, if someone says to me the Earth is round and I take it for granted, then I am not a good scientist.

And if someone says to me the Earth is flat and I take it for granted, then I am not a good scientist.

Also, and this is very important, if someone says to me the Earth is flat and I laugh at her, then I am not a good scientist either. Good scientists do not mock others. Good scientists present their findings. Good scientists educate and inform others.

Mainstream scientists ask: “How can there be people who believe the Earth is flat after all the findings we present, like photo’s from outer space of the moon landing?”

Good question. I am not laughing at these mainstream scientists and I am not mocking them, even though I know the answer to their question.

The answer is that they have to be careful to understand what the flat-Earth-conspiracy-theorists are really saying.

What the flat-Earth-conspiracy-theorists are saying is: “Forget all the findings you presented. Forget them. I do not believe them. All these findings are conspiracy theories made exactly in order to fool us and to make us believe that the Earth is round.”

Mainstream scientists may ask: “Why would someone fabricate such a lie? Why would someone conspire to persuade others that the Earth is round?”

To the last question, the flat-Earth-conspiracy-theorists might provide very interesting and/or irrefutable answers, but our discussion is not about if and why they might be correct or incorrect in their suspicions.

Our discussion does not concern whether there is a conspiracy or not and why they would believe such a thing. Our discussion is not whether they are correct or incorrect that a conspiracy exists.

Our discussion has to do with what these people are saying. And these people are saying that the Earth is flat.

But mainstream scientists have to understand that the flat-Earth-conspiracy-theorists are basing their claim by disregarding all the facts that mainstream science presents as facts. And by doing this, they act as any real scientist would act.

So, I and anyone in the scientific community should welcome these people. Because they are not doing anything that science forbids us to do. Instead they are doing what science welcomes us to do: doubt.

So, these people doubt what we present as fact. And they say: “Forget about what they taught you. If you were to forget everything you were taught and start your reasoning from scratch, what would be your claims?”

So these people argue that if we observe and reason, we will come to the conclusion that the Earth is flat. But if we watch the news or get information from others, we will come to the conclusion that the Earth is round.

I know many of their arguments and observations and reasoning. And I know many of the arguments and observations and reasoning of mainstream science.

And I will tell you my opinion: the Earth is round, but it is extremely difficult, even for a Physicist, to prove it, when they are up against an informed and well educated flat-Earth-conspiracy-theory-supporter. (For example, one cannot say “here is photo from outer space”, because they will tell you that you did not personally take it, so it may as well be fabricated.)

Which makes these people worthy adversaries, people who deserve our respect and honor and whose claims are extremely difficult to falsify. But it can be done, flat-Earth-conspiracy-theory-supporters can be proven incorrect, and this is one of the reasons why we need to educate ourselves as much as possible in science.

In “The Art of War”, Sun Tzu writes about the mistake of underestimating your opponent.

I, for one, do not underestimate the flat-Earth-conspiracy-theory-supporters. Quite the opposite. But there are indeed some mainstream scientists that underestimate the flat-Earth-conspiracy-theory-supporters. I do not think highly of these mainstream scientists.

Posted in Science

Completely dynamic full screen overlay in JavaScript with div or canvas

In this blog post, I am going to show you how to create a full screen overlay.

Say you want to create a full screen popup when you click at a particular web page element, or at any other event you wish. And you wish for the popup to appear and to cover the browser’s full client area. And you also wish for the popup to disappear when you click anywhere on it.

Fear no more, your old pal Dimitrios (Actually, were we ever pals? Really, I mean, have I even met you?) is here to help you.

I will show you how to create a full screen overlay in JavaScript and I will give you the full html code for the whole html page. And I will show you how to do it by including support of the browser’s resize event. And I will show you how to do it using two methods.

The first method will be by dynamically creating a div. The second method will be by dynamically creating a canvas. The dynamic div or canvas will have some text and an image displayed on them, to enhancd the educational value of this post and to better showcase the value of these methods.

But which of these two methods should you use? Well, it depends. If you want to include html elements in the popup, then you should definitely use the dynamic div. This is because the hmtl canvas cannot display html elements. You have to draw everything yourself. You have to reinvent the wheel, so to speak. But if you do want to draw everything yourself, then you may use the dynamic canvas method.

Here are both methods, in all their glory, again, by your friend (Honestly, have we ever even just met?) Dimitrios:

Creation of a fully dynamic full screen overlay using an html div element

Creation of a fully dynamic full screen overlay using an html canvas element

Actually, when I began creating these methods, I would use a naive implementation where I did not account for the browser’s resize event. So I had all the code in one function. Thankfully, the implementations I gave above, account for the browser’s resize and scroll events.

I would also use an empty static element (div or canvas) with zero width. But the browsers would account for it ever so slighlty, even if it was empty and of zero length. This had as consequence that the underlying page would be slightly different when the popup disappeared than it was before its apperance. So, I decided to make everything completely dynamic. And, this way, I achieved perfect results.

Another point I would like to draw attention to is the use of  “return false;” in the click event in the undelying page. At first I did not include “return false;” and I could not get the popup to appear for more than what it seemed to me like a millisecond or so. Thus, without the “return false;” the popup would appear and disappear immediately. It would not stay at its place and it certainly would not wait for you to click in order for it to disappear. After a lot of thought, I realized that it was because I was directed to a new page (the same underlying page, that was actually reloaded) and to stop this from happening I had to include “return false;” to stop the redirection from happening. “return false;” lets us stay in the same page and it does not reload the page.

The last point I would like to make is for you to notice that I use canvas.width and canvas.height, whereas I use* and* for everything else, where “*” in this sentence means “any attribute”. But and are invalid ways to address these attributes (the width and the height of the canvas). At first, I made this mistake and, again, the canvas would disappear immediately. This time, it was not because the page was reloading, like it happened with the click event. This time, the script would encounter this error and would stop executing.

So, there you have it. I hope we are friends now!

Posted in Web design

About computer languages, IDEs, and human rights

I do not find tasteful or nice to have to use needy IDEs like Visual Studio. I like to use Notepad for programming.

Visual Studio is very demanding when it comes to resources like CPU, Memory, Hard Disk, Operating System version. You need to have the best and latest hardware and Windows version. I cannot keep up. I can never keep up. And even if I could, I feel that using such an IDE deprives me of functioning as a programmer. Whereas Notepad is the exact opposite.

I know it may sound crazy, but here is how I see it:

When AIDS first reared its ugly head, the news started advising everyone to use a condom during sex. All over the news and anyone you would talk to, would advise you to use a condom during sex. Of course, this is excellent advice that saves lifes.

At one point, CNN showed a discussion about this very matter. An expert was advising a group of men to use condoms during sex. At one point, one of the men said the following:

“We feel we are not functioning as men, if there is something in between.”

This is why I love CNN. They are the only ones that always show both sides of an argument. No one else had ever or ever again raised an argument against protection during sex.

Although I would urge everyone to use protection during sex, I will paraphrase the words of that man. And I will say:

I feel I am not functioning as a programmer if there is something (like an IDE) in between.

I want to have control over the code I write.

To me, my idea of programming is using Notepad.

To me, my idea of programming is to take a binary editor and construct the executable byte by byte.

Actually, I want to make choosing the programming language and the IDE one uses a human right.

Of course, a company would be correct to insist that all employees use a particular programming language and IDE or a particular set of them. But an individual should always have to right to resign because she feels she would like to use another programming language or IDE.

Again, the choice of programming language and way of programming should be a human right.

Posted in Development

Google doodle programming for kids solutions

Today (2017-12-04) Google published a doodle that has to do with programming for kids.

Although this is the way kids should learn how to program, the doodle is incredibly difficult and should address only seasoned programmers.

The way kids should learn how to program is exactly like that, though. You can create a floor with square tiles and stand in one. Then let the kids give you orders to guide you where they want you to go.

But Google should have never produced such a difficult puzzle meant for kids programming. This puzzle should have been addressed to adults.

Anyway, here are the questions:

Question 1:

Question 2:

Question 3:

Question 4:

Question 5:

Question 6:

And here are the answers:

Answer 1:

Answer 2:

Answer 3:

Answer 4:

Answer 5:

Answer 6:


By the way, the answer for question 5 can also be used to solve question 4.

Additional information:

Obviously, the goal is for the bunny to eat all the carrots.

The puzzle does not make it clear what considers as optimal solutions. From the image below, we can understand that optimal solutions are those which use the least amount of components. The number in each question denotes the minimum mumber of components needed to solve it.


Of course, since question number 4 can also be solved using the solution from question 5, one could argue that question 4 should have the number 6 (instead of 7) for denoting the components needed. But using the solution from question 5 to solve question 4 is far fetched, so I believe that denoting 7 as the compenent number for question 4 is better as it stands.

It is interesting to see what the optimal solution for question 6 is, if we consider as optimal solutions not those with the least number of components but those with the least number of bunny steps.
Then the answer to question 6 could be the following:
– – ) [ – ) – ( – ) – ]
where – means move one step, ) means turn clockwise, ( means turn counter-clockwise, and [ ] means repeat 4 times what is inside the square brackets. I depict this answer below, using two images, since it does not fit in one.



Final note:

Of course, the algorithms that the puzzle expects as optimal are unacceptable to me. If I would see someone creating these algorithms, I would tell them that they are far from safe.

You should be able to look at an algorithm and immediatelly deduce its validity, correctness, function, purpose, etc. You should be able to look at an algorithm and immediately understand what its results will be.

Programming is not about which programmer is more clever than the other. It is not an exercise in obfuscation. It is, or it should be, an exercise in clarity.

Posted in Development

What is is a website that features an online code editor with which you can create, host and deploy Node.js applications and static websites.

You write the code online and that’s it! The deployment is instantaneous!

And yes, you can also use Express (the famous Node.js web application framework).

In the free tier, your code is public, so you can use this tier for open source projects and as a learning tool.

With, you do not have to install Node.js on your computer to serve a Node.js application. You only need your web browser to go to, write code and view the results.‘s landing page has a lot of great ideas and examples for Node.js applications you can create and host on pricing is at the following link:

A great article that uses to host and run the article’s featured code is the following: How to set up a database if you’re a front-end developer.

Posted in Web design

About racism

People call me racist. That may or may not be beside the point of this blog post.

We, humans, are designed to be racist. I do not like this, though, and this is one of the reasons that made me reach the conclusion that the human kind should not exist anymore. I do not think racism, discrimination, differentiation are just or moral. I want all people to be equal. All people are different, but that should not stop them from being equal.

I find it absurd to judge someone based on their skin color, sexual orientation, beauty, health, age, and so on.

But, as I previously wrote, we are designed to be racist. That is how we evolve. Again, I do not like it. But our designer is to blame, not us. What a bad, unjust, racist creation did she make: us. Yes, we should vanish from the face of the Universe.

I walk on the street and I see cafés. This is what I ALWAYS observe concerning cafés: If a woman is young and/or beautiful, she will be a waitress. If she is old and/or ugly, she will be a cleaning lady. ALWAYS. Let me make a mental experiment: Suppose I go to a café owner and confront her about this discrimination. Do you know what she will say? Well, let me guess. She will probably say that if she did otherwise, hiring the beautiful as cleaning persons and the ugly as waitresses, customers would not prefer going to this café. She would lose customers and end up going out of business.

And I am the racist.

Our creator programmed us to seek our sexual partner, our spouse, our companion, our friends, based on discrimination. As far as our spouse is concerned, we are programmed to pick and choose. If not for that, the human race would degenerate, instead of evolve. We choose good looking sexual partners to produce healthy children. This is our genetic predisposition. This is how humanity is programmed. Actually, this is how all species are programmed. And this is how nature works. Survival of the fittest and all that. Totally immoral.

Change is the only constant, as a wise man once said. And I take it from there: Those who adapt, survive. Those who do not, perish.

And I am the racist.

Anyone who ever had a friend, a spouse, a sexual partner is a racist. If you are married or have fallen in love, you are being racist. Only monks cannot be considered to be racist. All others pick and choose, discriminating people based on their looks, height, age, wealth and so on, in order to mate with them.

And I am the racist.

Or not. The point of this blog post is to prove that all of us are racists. Except monks. And monks are the only humans I respect.

Posted in Science

How to install Lands of Lore Guardians of Destiny

Lands of Lore Guardians of Destiny is a PC game from Westwood Studios, Inc. that was released in 1997 for DOS and Windows 95. I purchased a copy in 1998, if I remember the year correctly. It contained  4 CD-ROMs.

As far as I know, you should buy a copy of the game in order to play it. It is not free. The following assumes that you own a copy of the game.

If you want to learn more about the game and you want to download it for various reasons (for example any one of the CD-ROMs is scratched and no longer working), you can visit any of the following two links.

If you download the game from any one of the two links above, I will show you what to do next in order to install it in a modern version of Windows.

Any of the two links above will allow you to download the following two files:

  • Lands_of_Lore_II-THEiSOZONE.7z.001
  • Lands_of_Lore_II-THEiSOZONE.7z.002

These are zipped files in the 7z (7-Zip) format and you should already have a file archiver utility in your PC (like 7-Zip or WinRAR) in order to unzip them. Right-click on the first file, choose the file archiver utility you want from the context menu and it will unzip both files, on after the other, without you having to point the second file to it.

After unzipping the two files, a folder structure will emerge, comprised of the following folders:

  • CD1
  • CD2
  • CD3
  • CD4
  • Manual
  • Patch
  • Scans

Each of the first four folders contains one of the CD-ROMs of the game, in an mdf/mds format. This format is used in order to contain the content of one CD-ROM disc. The .mdf file has a large size and the .mds file has a small size.

You can use a utility like Alcohol 52%, Alcohol 120%, or PowerISO (or any other utility like them) to create virtual drive letters and drives, then mount these .mdf/.mds files and then install and run the game from the virtual drives.

In a modern Windows OS, the game may have trouble running, becuse it was developed for older Windows OS’s. To overcome any problems and to be able to run it on newer Windows OS’s, I recommend downloading an installing DOSBox, which is an x86 emulator with DOS. I recommend installing the game in DOSBox and running it from there. Not only that, but I also recommend to extract the content of the CD-ROMs (using Alcohol or PowerISO by mounting them first or simply extracting the contents, depending on the utility) and then use DOSBox’s ability to mount them as virtual drives.

In the rest of this blog post, I will show you how you can use DOSBox as a utility, like Alcohol or PowerISO, in order to mount a folder hierarchy as a virtual drive and then install and run the program contained in the folder/virtual drive. And, of course, you may mount more than one folder/virtual drive at once. In our case, since we have four CD-ROMs, we will want to mount all of them at the same time, so as not to be bothered with mounting and unmounting CD-ROMs during our game play.

Actually, this is a good practice, when you have to use applications that need one or more CD-ROMs or DVD-ROMs. Suppose you need to install and use many applications and each one of those needs from 1 to 15 CD-ROMs in order to function. What would you do? Well, I will provide a method in the appendix at the end of this blog post, but you will understand the concepts and one way of proceeding just below.

The way of proceeding I am referring to is the use of DOSBox. Well, this method is valid only if we have DOS applications, whereas the methods I will show you in the appendix cover Windows applications. Since Lands of Lore Guardians of Destiny can run in DOS, we can use the DOSBox method I will now describe. DOSBox is not only an emulator that you can use to run DOS applications, but it also provides you with the ability to create virtual drives, just as Alcohol or PowerISO do. Thus, not only will we be able to run the game in a modern version of Windows (but inside DOSBox), but DOSBox will also allow us to mount the CD-ROMs of the game. So, we have a double win.

But, as far as I know, DOSBox does not support .mdf or .mds fiels, whereas it supports mounting folders with regular files. So, before mounting the CD-ROMs, we first have to extract each CD-ROM’s content to a different folder, using Alcohol or PowerISO (or any other similar utility).

Please note that we can skip this step and use Alcohol or PowerISO to mount the virtual drives. This way, DOSBox will reference these drives and we will only use DOSBox to install and run the game. We will not use DOSBox’s ability to mount the drives, since this function will be provided by Alcohol or PowerISO. But I find that it is better to avoid having yet another utility running and serving the CD-ROM content to DOSBox, when DOSBox is perfectly capable of doing this on its own.

So, let us begin.

Install Alcohol or PowerISO and extract the contents of each CD, either by mounting it and then copying it the contents, or just by extracting the contents from the .mdf of .mds file, depending on the utility you are using. Please note the volume label, because some games may check for it to find if it is available on the virtual volume you will create. The volume labels are LOLG_CD1, LOLG_CD2, LOLG_CD3, LOLG_CD4 fro the four CD_ROMs respectively. So, let us keep use these names to create four folders in the root of drive C: (bad practice by the way, since we are “polluting” the root namespace) and let us put in each folder the contents of the respective CD-ROM.

So we now have the following four folders, containing the contents of the four CD-ROMs:

  • C:\LOLG_CD1
  • C:\LOLG_CD2
  • C:\LOLG_CD3
  • C:\LOLG_CD4

We may now download and install DOSBox. The current version as of now is 0.74.

There are three main folders pertaining to DOSBox installation. First, we have the folder DOSBox-0.74 where the program is installed in the Program Files folder. Then we have the folder C:\dosbox\ which the program creates and considers its root, file system wise. When the program (DOSBox) starts, it sets the current directory there and you cannot go higher by “CD ..”. Lastly, there is the folder DOSBox in your user profile folder and under AppData\Local\. This folder is important because inside it you will find the dosbox-0.74.conf file, which stores the settings for the DOSBox configuration. Actually, you may need to change the following settings and set them as follows, in order for the game to function properly:

fullresolution=1920 X 1080

Please note that the fullresolution value is provided an example (and is the resolution of the screen that I am currently using). Please substitute the value “1920 X 1080” with the resolution of your screen.

The file dosbox-0.74.conf  has a section at the end where you can put DOS and DOSBox commands and they will be executed each time DOSBox starts. We will not need to put any commands there. Whatever commands we may need, we will put them in batch files and execute them (by typing the name of each batch file) after DOSBox starts. To create  mount the necessary drives and to run the gane, we will need only one batch file.

Let us create the following batch file, named LOLG.BAT, in the C:\dosbox folder:




Please note that the batch file and I assume that the drive letters from D onwards are available.

We can run this batch file by typing its name in the DOSBox console. This batch files loads all four CD-ROMs. Actually, to install the game, we only needed to mount only the first CD-ROM. We can change the current drive to D and run setup.exe from there:


SETUP will create a folder named WESTWOOD in C:\DOSBOX\ (our root) and it will then install the game there.

Let me explain the commands in LOLG.BAT.

ECHO ON is for displaying the command that is executed.

UMOUNT is for unmounting the drive letter that follows the command. When you first run the batch file, after each time DOSBox starts, there is no need to run UMOUNT, because no drive letters will be mounted, (other than C:\DOSBOX as C:). But it is a good practice to unmount any drive letters that you are planning to mount, in case you may need to run the batch file more than once in a session, especially if there has been some other drive mounting in between.

MOUNT is for mounting the drive letter that follows the command. The contents of the folder that follows are the contents of the drive. -T specifies the mode that will be emulated. -LABEL specifies the volume label that will assigned to the drive volume. Please note that although DOSBox considers the file system root to be at C:\DOSBox, the DOSBox MOUNT command sees all your PC’s file system and disks, so the C:\DOSBox root does not apply to the MOUNT command.

After installation of the game is complete, you can change the LOLG.BAT as follows, in order to run the game:





So, by typing LOLG (you can always omit the .BAT extension for batch files) in the root of the DOSBox console, the game will run, having all CD-ROMs fully loaded – no need to change CD-ROMs during game play.

Please note that you can change DOSBox and the application that it runs from full screen to a window and vice versa by simultaneously pressing ALT and ENTER (holding ALT and pressing ENTER).


So you have seen how you can install and run a DOS application that uses one or more CD-ROMs. DOSBox is a great solution, because it is not only an emulator, but it also provides virtual drive creation and mounting capability.

So, if you have one or more DOS applications that you need to run, you can create a batch file for each of these applications. Each batch file will unmount the drive letters it needs to use for the application and then mount them using the folders that contain the contents of the respective CD-ROMs for the application.

Let us suppose that we have one DOS application that needs four drive letters, and another that needs six drive letters. To run any application, only one at a time, in any order, each batch file only needs to unmount and mount the drive letters the application needs. Say for example that we run the application that needs six drive letters. Its batch file will unmount and then mount the drive letters D, E, F, G, H, I. We exit this application and then we run the application that needs four drive letters. If its batch file unmounts all six drive letters and then mounts the four drive letters that it needs, then this is excellent. But even idf its batch file unmounts only the four drive letters that the applications needs, it is fine. The drive letters H, I will remain mounted in the other applications contents, but they will be ignored by the current application.

Actually, the perfect way to do this is to create a file with the drive letters that you want to have available for mounting and unmounting. Then each batch file will read this file and unmount each and every one of these drive letters, before mounting any drive letters that the respective application needs. This way, you can adjust the available drive letters from time to time and from PC to PC. But you do not have to go to such extremes, since I already explained that it is perfectly file for each batch file to unmount and mount only the amount of drive letters that the application needs, leaving any (higher) drive letters as they were from any previous use of other applications that needed more drive letters. Another idea. is to create a batch file that only unmounts all drive letters you may want. You may run it whenever you want and each application batch file can call it at its beginning.

What you cannot do with this method, is run both applications simultaneously. Actually, if you need to run two or more such applications simultaneously, you should create a batch files that loads all CD-ROMs for these applications. There is a limit to this practice, thought, since only 26 drive letters can exist (the English alphabet has this limit) and also, some of these drive letters are used, like C: for the actual hard disk of the PC.

DOSBox can be used for DOS applications. What can we do if we want to accomplish the same results for Windows applications? What can we do if we want to run lots of applications, one at a time (that is the restriction), when each application needs one or more CD-ROMs or DVD-ROMs to be mounted?

In this case, we will again use batch files to unmount and mount the contents of the respective CR-ROMs or DVD-ROMs, but we will not use DOSBox, since DOSBox can only run DOS applications.

One method we can use is the command line SUBST command. Just like DOSBox’s MOUNT command, SUBST mounts a drive letter with the contents of the folder you specify. And this command line command comes with the operating system – no need to install anything extra. The following batch file prepares the PC to run RIVEN, using the drive letters P through T, after I copied the contents of the five RIVEN CD-ROMs in five respective folders:



Another method is to use Alcohol to create .mdf/.mds files from the contents of your CD-ROMs. Then specify how many virtual drives you want to have. Lastly, you can use batch files to unmount and mount these files, using Alcohol’s command line program AxCmd, that Alcohol provides exactly for this kind of automation.

The following batch file assumes that I used Alcohol 52% to specify that my PC will have (at least) 5 virtual drives. The 5 .mds files that correspond to the 5 RIVEN CD-ROMs are in the folder C:\Games\Alcohol\. The batch file will prepare the PC to run RIVEN and will load the five .mds files, each one at the next available virtual drive.


CD "C:\Program Files\Alcohol Soft\Alcohol 52"

AxCmd 1: /U
AxCmd 2: /U
AxCmd 3: /U
AxCmd 4: /U
AxCmd 5: /U

AxCmd 1: /M:C:\Games\Alcohol\Riven1.mds
AxCmd 2: /M:C:\Games\Alcohol\Riven2.mds
AxCmd 3: /M:C:\Games\Alcohol\Riven3.mds
AxCmd 4: /M:C:\Games\Alcohol\Riven4.mds
AxCmd 5: /M:C:\Games\Alcohol\Riven5.mds

Thus, in this blog post you learnt what to do if you have lots of applications that each requires lots of CD-ROMs or DVD-ROMs and you want to run each application, (one application at a time), without having to physically insert and remove disks. The obvious downside is that you need an amount of disk space roughly equal to the size of the contents of all the disks of all the applications.

Posted in Administration