Trump was not right about Hydroxychloroquine!

Speech bubble containing the word “blah.”

Before you believe bold headlines such as the following, you need to consider the source.

The Media Sabotage of Hydroxychloroquine Use for COVID-19: Doctors Worldwide Protest the Disaster.

Media and Big Pharma are in lockstep to suppress a cheap, life-saving Covid-19 therapy in order to reap pandemic-sized profits

This drivel was published on https://www.globalresearch.ca/ which is “a Canadian conspiracy website” that was founded by Michel Chossudovsky who is currently the President of GlobalResearch and professor emeritus of economics at the University of Ottawa.

For more see Media Bias/Fact Check — Global Research and Centre for Research on Globalization.

On the existence of deities and the nature of religion.

Symbols from various world religions. Source: Wikipedia.
Symbols from various world religions. Source: Wikipedia.

I once believed that there are no deities. Then I finally discovered the shocking truth, every deity that has ever been the subject of worship actually exists.

A religion is nothing more or less than a collection of religious texts, a group of priests and priestesses, and a network of places of worship.

These items can be described in non religious terms.

  • The religious texts are works of philosophy that happen to include tales; some of these tales discuss the history of the philosophy, or at least they claim to discuss the history of the philosophy, and other tales enhance and build upon and explain the philosophy.
  • The priests and priestesses are teachers that teach the philosophy.
  • The places of worship are schools that teach the philosophy.

The deity is therefore nothing more or less than the core concept that lies at the heart of the religion.

A religion is not meant to be static. It is meant to be a living, breathing, ever changing organism. It is the duty of all true followers of a religion to try to improve the religion for the betterment of man.

This is what is wrong with Christianity. It is no longer a living, breathing, ever changing organism. It is a putrid corpse.

Debugging Tip: How to Set a Breakpoint In a Windows API Function

Introduction

This article is based on an EMail message I sent to the software development team at Vispero on August 26, 2008. I had just spent hours debugging an odd bug in JAWS®. When focus was in a particular window while JAWS was running I heard constant, rapid fire, beeping. I searched the JAWS source code for calls to the Beep and MessageBeep functions and was not able to determine the cause of the bug. I was at a loss. Then I asked the following question, is there a way I can just set breakpoints in the Beep and MessageBeep functions? This article discusses what I found during my quest for an answer to that question.

I am writing this article now because I encountered this issue again today and just spent five hours retracing my steps.

Note: After I wrote this article I learned that things are much easier in Visual Studio 2017 and Visual Studio 2019. In these versions of Visual Studio all that you need to do is open the “New Function Breakpoint” dialog box using the “Debug/New Breakpoint/Function Breakpoint…” menu item and enter the undecorated name of the function in the dialog box. If you are interested in learning how things used to be, follow me down the rabbit hole.

Falling down the rabbit hole

It turns out that it is possible to set a breakpoint in a Windows API function in Visual Studio. I do not know when this functionality was added to Visual Studio but I do know that it was available in Visual Studio 2005. The question is how.

The Set function breakpoints section of the Use breakpoints in the Visual Studio debugger page provides some relevant information; it provides very limited information on setting a breakpoint on a function with a known name. Simply use the “Debug/New Breakpoint/Function Breakpoint…” menu item to open the “New Function Breakpoint” dialog box and type a magical incantation in the “Function Name” edit.

Unfortunately, the information provided here is infuriating since it reveals that the feature is supported but it does not provide enough information to allow you to actually use the feature. In other words, it does not tell you what magical incantation to use.

Use the context operator in native C++.

{function, , [module]} [+]

Example: {MethodA, , App1.dll}+2

The article How Can I Debug Windows API Functions provides more information but it does not explain the context operator. It does reveal how to set a breakpoint in the MessageBeep function.

{,,USER32.DLL}_MessageBeep@4

This page mentions that you need to use the “decorated form of the function name” and suggests that you refer to the Viewing Decorated Names page for more information. The Viewing Decorated Names page in turn refers you to the Use a listing and Using DUMPBIN to View Decorated Names pages. Unfortunately, it turns out that neither of the techniques mentioned on the Viewing Decorated Names page will allow you to determine the decorated name for a function that is exported from a DLL. The DBH tool is supposed to be able to provide this information via the -d command-line option but in my tests using the following command it only provides undecorated names these days (bad Microsoft!).

dbh -s:srv*C:\SymbolCache*http://msdl.microsoft.com/Download/Symbols -d C:\Windows\System32\User32.dll enum *CreateWindowExW*

This command provides the following output.

Symbol Search Path: srv*C:\SymbolCache*http://msdl.microsoft.com/Download/Symbols

 index            address     name
     1            1007760 :   CreateWindowExW

Note that this is not the decorated name of the function since there is no @ character.

Unfortunately, I do not know an easy way to determine the “decorated form of the function name” other than to figure it out yourself using the information provided at Using Win32 calling conventions. Most Windows API function use the __stdcall calling convention. The general syntax for the decorated name of a __stdcall function is as follows.

_[UndecoratedFunctionName]@[SizeOfParametersInBytes]

This provides enough information for you to write the part of the magical incantation that comes after the } character, but what about the beginning of the magical incantation? Based on the example provided for the MessageBeep function one could assume that it should simply be the name of the DLL that implements the Windows API function, but is more information available?

Fortunately, the Context Operator in the Visual Studio Debugger (C++) page does provide a more detailed explanation for the first part of the magical incantation. This page reveals part of the syntax for the Context Operator.

{,,[module]} expression

Of course, this very annoyingly leaves a question unanswered. Why does this text between the { character and the } character start with two commas? What are you leaving out?

I have not been able to find official Microsoft documentation that answers that question yet. However, I do have an answer for you from Breaking on System Functions with the Context Operator. This page reveals that the full syntax of the Context Operator is as follows.

{[function],,[module]} expression

In most cases you will not need to worry about [function] and , you will only need to worry about the module and the expression.

Thus, the syntax for the magical incantation you will need to set the breakpoint is as follows.

{,,[module]}_[UndecoratedFunctionName]@[SizeOfParametersInBytes]

Pulling everything together.

To set a breakpoint in any Windows API function, such as the CreateWindowExW function, do the following.

  1. Look up the Windows API function in the Microsoft documentation. In the Requirements section the DLL the function is implemented in is provided; in this case it is User32.dll.
  2. Determine the size of the function parameters in bytes, as follows.
ParameterSize in bits on a 32-bit systemSize in bytes on a 32-bit systemSize in bits on a 64-bit systemSize in bytes on a 64-bit system
DWORD dwExStyle324324
LPCWSTR lpClassName324648
LPCWSTR lpWindowName324648
DWORD dwStyle324324
int X324324
int Y324324
int nWidth324324
int nHeight324324
HWND hWndParent324648
HMENU hMenu324648
HINSTANCE hInstance324648
LPVOID lpParam324648
Totals4868
  1. Fill in the blanks.

If you are debugging a 32-bit application the magical incantation is as follows.

{,,User32.dll}_CreateWindowExW@48

If you are debugging a 64-bit application the magical incantation is as follows.

{,,User32.dll}_CreateWindowExW@68
  1. Enter the appropriate magical incantation in the “Function Name” edit of the “New Function Breakpoint” dialog box and press the OK button.

Note that in order for this to work you will need to set up Visual Studio to use the Microsoft symbol server. To do this select the “Debug/Options…” menu item to open the Debugging section of the “Options” dialog box. Then select “Debugging/Symbols” in the tree view. Next press tab to move focus to the “Symbol file (.pdb) locations” check list box and check the “Microsoft Symbol Servers” item. Then press the OK button.

References

Down the Rabbit Hole (CC BY-SA 2.0) by Valerie Hinojosa

Trump listened to “the experts” when deciding how to respond to COVID-19 — but only the experts who told him what he wanted to hear.

Today, the White House sent out an email claiming “President Trump listened to the experts—not the media” today. Evidence suggests that he listened to a single expert who told him exactly what he wanted to hear, that COVID-19 was a non-issue. Specifically he listened to Richard A. Epstein who wrote the paper “Coronavirus Perspective.”

In the first version of this document he claimed that there would be 500 deaths due to COVID-19. A few days later he revised the document saying that he made a mistake and there would be 5,000 deaths. He later revised it again by saying there would be 50,000 deaths.

As of today there have been 80,820 deaths in the United States according to the CDC.


All hail Donald Trump; a.k.a. Donald Drumpf, a.k.a. Lord Dampnut, a.k.a. Dumbnut, a.k.a. Donnie Trumpelstiltskin, a.k.a. Donald tRUMP; our most, or perhaps least, honored (not my) POTUS and our great Bloviator in Chief!

More on the incompetence of the Trump administration’s response to COVID-19.

Reminder.

In February Donald Trump made the following comments about COVID-19.

  • “Looks like by April, you know, in theory, when it gets a little warmer, it miraculously goes away.” (Feb. 10)
  • “The Coronavirus is very much under control in the USA. … Stock Market starting to look very good to me!” (Feb. 24)
  • “It’s going to disappear. One day, it’s like a miracle, it will disappear.” (Feb. 27)

At this time the Trump administration and various Republicans were relying on an article titled “Coronavirus Perspective” by Richard A. Epstein. In the first version of this document he claimed that there would be 500 deaths due to COVID-19. A few days later he revised the document saying that he made a mistake and there would be 5,000 deaths. He later revised it again by saying there would be 50,000 deaths.

As of today, there have been 67,456 deaths due to COVID-19 in the United States.

Sources


All hail Donald Trump; a.k.a. Donald Drumpf, a.k.a. Lord Dampnut, a.k.a. Dumbnut, a.k.a. Donnie Trumpelstiltskin, a.k.a. Donald tRUMP; our most, or perhaps least, honored (not my) POTUS and our great Bloviator in Chief!

The incompetence of the Trump administration is the gift that keeps on giving.

Ignorance and Incompetence:

White House insists US has ‘sufficient’ testing capacity to reopen amid widespread criticism
Mike Pence says US has enough tests for ‘phase one’ of process but taskforce experts acknowledge uncertainty

The Truth:


All hail Donald Trump; a.k.a. Donald Drumpf, a.k.a. Lord Dampnut, a.k.a. Dumbnut, a.k.a. Donnie Trumpelstiltskin, a.k.a. Donald tRUMP; our most, or perhaps least, honored (not my) POTUS and our great Bloviator in Chief!

On writing code with debugging in mind

/*************************************************
*                                                *
* .=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-. *
* |                   ______                   | *
* |                .-"      "-.                | *
* |               /            \               | *
* |   _          |              |          _   | *
* |  ( \         |,  .-.  .-.  ,|         / )  | *
* |   > "=._     | )(__/  \__)( |     _.=" <   | *
* |  (_/"=._"=._ |/     /\     \| _.="_.="\_)  | *
* |         "=._"(_     ^^     _)"_.="         | *
* |             "=\__|IIIIII|__/="             | *
* |            _.="| \IIIIII/ |"=._            | *
* |  _     _.="_.="\          /"=._"=._     _  | *
* | ( \_.="_.="     `--------`     "=._"=._/ ) | *
* |  > _.="                            "=._ <  | *
* | (_/                                    \_) | *
* |                                            | *
* '-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=' *
*                                                *
*    ABANDON ALL HOPE, ALL YE WHO ENTER HERE     *
*************************************************/
ASCII art image of a skull and crossbones with the text “abandon all hope, all ye who enter here” displayed below the skull and crossbones.

One factor of code quality that does not get enough attention is how easy is it to debug the code. No matter how skilled the team that writes the software, there will be bugs. When these bugs are found some poor soul will need to debug the code to determine the cause of the bug. Unfortunately this can quickly turn into a nightmare because many functions are not debuggable. Sometimes even well designed code is so difficult to debug that it causes the poor soul who has to debug it to abandon all hope.

Non-Debuggable Function

The following function is very simple. At first glance it seems to be a concise and well designed function. However, it is a major contributor to the debugging this application is a nightmare problem.


inline bool CCoolAppDocument::IsValidStartOffset(long nOffset) const
{
    return nOffset >=0 && nOffset < GetLength();
}

You may be wondering, how can this innocent, one-line function cause someone to abandon all hope?

When the function works as expected (meaning it returns the value you expect) it cannot. However, when the function returns false when you think it should return true the nightmare begins. The most critical piece of information that might explain why this function is not returning the expected value, the document length, is hidden away within a function call. As a result, there is no way you can look at parameter and variable values in the debugger watch window and know why the function is behaving in the way that it is.

Debuggable Function

The following function does exactly the same thing but it can be debugged in a microsecond.


inline bool CCoolAppDocument::IsValidStartOffset(long nOffset) const
{
    const auto documentLength = GetLength();
    return (nOffset >=0 && nOffset < documentLength);
}

All you have to do to debug this function is look at the value of the nOffset parameter and the documentLength variable in the watch window and then the reason for the unexpected behavior is immediately obvious.

In the case of today’s nightmare that inspired this article, the problem was that both the nOffset parameter and the documentLength variable happened to be equal to 296.

Additional Comments

I know that some of you are wondering whether I am aware that some debuggers will provide the return value of a function that was just called. The answer is of course I am aware of that. However, as far as I know not all debuggers support this functionality. In addition, this functionality is not as easy to use or as intuitive as the watch variable feature.

To me it just makes sense to make a very small change to make it possible to diagnose problems with the more intuitive and easier to use watch variable feature of the debugger.

Is the Novel coronavirus (COVID-19) contained in the United States?

Meme showing a dog sitting at a table. The room is on fire. The dog says 'This is fine'.
This is fine.

On March 6, 2020, President Donald Trump’s top economic adviser, Larry Kudlow, claimed that the coronavirus “is contained” in the United States. There were only 75 confirmed cases in the United States at that time.

Today there are 1,629 confirmed cases.

Now that is what I call contained! The Trump administration is obviously doing an excellent job. We should be grateful that we have such a diligent and hard working POTUS!

Sources

All hail Donald Trump; a.k.a. Donald Drumpf, a.k.a. Lord Dampnut, a.k.a. Dumbnut, a.k.a. Donnie Trumpelstiltskin, a.k.a. Donald tRUMP; our most, or perhaps least, honored (not my) POTUS and our great Bloviator in Chief!

The Trump Blue-Collar Boom — Damned Lies and the Truth

Damned Lies

President Trump hosted a group of America’s governors for a policy discussion at the White House yesterday, and the blue-collar economic boom was top on the agenda.

Source: https://www.whitehouse.gov/1600daily/ on February 11, 2020

Truth


All hail Donald Trump; a.k.a. Donald Drumpf, a.k.a. Lord Dampnut, a.k.a. Dumbnut, a.k.a. Donnie Trumpelstiltskin, a.k.a. Donald tRUMP; our most, or perhaps least, honored (not my) POTUS and our great Bloviator in Chief!

On Sondland’s impeachment testimony

How to interpret Sondland’s impeachment testimony. Hint, it is very bad news for the Republicans and Trump.

“I know that members of this committee have frequently framed these complicated issues in the form of a simple question: Was there a ‘quid pro quo?’  With regard to the requested White House call and White House meeting, the answer is yes.”

Ambassador Gordon Sondland

Translation: Yes. Trump did in fact try to commit Extortion, Bribery, and Blackmail.

Thank you Sondland.

Sonland said he acted “at the express direction of the president of the United States.”

Translation: Trump was directly involved and was calling the shots.

Again, thank you Sondland.

Sondland then said “there was no secret” and “Everyone was in the loop.”

This is completely irrelevant. If everyone involved including the POTUS, ambassadors, Sondland, and Giuliani knew that Trump was guilty of Extortion, Bribery, and Blackmail that does not make it right. He was still guilty of Extortion, Bribery, and Blackmail!

Again, thank you Sondland.

Today was a very good day, but not for Trump and his supporters.

See Also


All hail Donald Trump; a.k.a. Donald Drumpf, a.k.a. Lord Dampnut, a.k.a. Dumbnut, a.k.a. Donnie Trumpelstiltskin, a.k.a. Donald tRUMP; our most, or perhaps least, honored (not my) POTUS and our great Bloviator in Chief!