A funny story on how a Russian guy registered on LinkedIn

  • He was unable to pay with his bank cards so he used Bankoff (that stopped working within couple weeks after that) and transferred some USDT to it.
  • He bought USA Skype number, because only US Skype numbers able to receive SMS.
  • Created a USA clone of his London VPS Linux with installed Squid proxy service in a datacenter.
  • Updated A records of his domain with USA Linux IP address.
  • Opened LinkedIn in Ghrome browser using command chrome.exe --proxy-server=https://domain.com:3129
  • Used USA Skype phone number to register on LinkedIn.

Is not this a funny story?

Building QT 6.3.0 for Android on Windows with C++20

An example of how it can be configured:

set "CMAKE_ROOT=E:\PFiles\cmake-3.21.3-windows-x86_64\bin"
set "NINJA_ROOT=E:\PFiles\ninja-win"
set "JDK_ROOT=C:\Program Files\Java\jdk1.8.0_301\bin"
set "MINGW_ROOT=E:\PFiles\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin"
set "PERL_ROOT=E:\PFiles\Strawberry\perl\bin"
set PATH=E:\PFiles\Python35;%PATH%
rem Check if the tools are in PATH
where gcc
where mingw32-make.exe
where perl.exe
where javac.exe
where python.exe
where cmake.exe
where ninja.exe
set "ANDROID_SDK_ROOT=C:\Users\D-Ef\AppData\Local\Android\Sdk"
set "ANDROID_NDK_PATH=C:\Users\D-Ef\AppData\Local\Android\Sdk\ndk\24.0.8215888"
set "ANDROID_BUILD_ABI=x86_64"
rem set "ANDROID_BUILD_ABI=x86"
rem set "ANDROID_BUILD_ABI=arm64-v8a"
rem set "ANDROID_BUILD_ABI=armeabi-v7a"

set QT_HOST_PATH=E:/Qt/Qt6.3.0/windows
configure.bat -platform win32-msvc -xplatform android-clang -prefix %MY_INSTALL_PATH% -qt-host-path %QT_HOST_PATH% ^
  -c++std c++20 -no-openssl ^
  -DQT_NO_EXCEPTIONS=1 -release -force-debug-info -opensource -confirm-license ^
  -android-sdk %ANDROID_SDK_ROOT% -android-ndk %ANDROID_NDK_PATH% -android-ndk-platform android-23 -android-abis %ANDROID_BUILD_ABI% ^
  -skip qt3d -skip qt5compat -skip qtactiveqt -skip qtcharts -skip qtcoap -skip qtconnectivity ^
  -skip qtdatavis3d -skip qtdoc -skip qtlottie -skip qtmqtt -skip qtnetworkauth -skip qtopcua ^
  -skip qtserialport -skip qtpositioning -skip qtquicktimeline -skip qtquick3d -skip qtremoteobjects ^
  -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtvirtualkeyboard -skip qtwayland ^
  -skip qtwebchannel -skip qtwebengine -skip qtwebview

Building QT 6.3.0 for Windows with OpenSSL and C++20

Now QT doesn’t like backslashes in configure.bat parameters. Also I updated vcvarsall.bat path and added -c++std c++20: and tried static build with -static option:

CALL "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
set "CMAKE_ROOT=E:\PFiles\cmake-3.21.3-windows-x86_64\bin"
set "NINJA_ROOT=E:\PFiles\ninja-win"
set "PERL_ROOT=E:\PFiles\Strawberry\perl\bin"
set PATH=E:\PFiles\Python35;%PATH%
rem Check if the tools are in PATH
where perl.exe
where python.exe
where cmake.exe
where ninja.exe
set "MY_INSTALL_PATH=E:\Qt\Qt6.3.0\windows"
set CL=/MP
configure.bat -prefix %MY_INSTALL_PATH% -DQT_NO_EXCEPTIONS=1 -debug-and-release -force-debug-info -platform win32-msvc -opensource -confirm-license ^
-c++std c++20 -static -I "C:/Program Files/OpenSSL/include" -L "C:/Program Files/OpenSSL/lib"

Building OpenSSL 3.0.2 with MSVC 2022

Download OpenSSL sources and extract them with Bash:

tar -xvzf /c/Users/D-Ef/Downloads/openssl-3.0.2.tar.gz

Download NASM, open x64 Native Tools Command Prompt for VS 2022 and run the following commands:

set PATH=%PATH%;E:\PFiles\nasm-2.15.05
where nasm
set PATH=%PATH%;E:\PFiles\Strawberry\perl\bin
where perl
set MY_INSTALL_DIR=E:\libs\OpenSSL
perl Configure VC-WIN64A --prefix="%MY_INSTALL_DIR%" --openssldir="%MY_INSTALL_DIR%"

Dramatically annoying crash at std::thread and std::mutex destructors on Android

It is a long story that started here about 2 years ago. My first understanding was that it is a QT bug that was not fixed within this 2 years, of course (as a rule or usually), but a couple weeks ago I noticed that a similar crash happens on Samsung Galaxy devices:

#00  pc 000000000005fcb2  /apex/com.android.runtime/lib/bionic/libc.so (abort+166)
#00  pc 00000000000a9393  /apex/com.android.runtime/lib/bionic/libc.so (__fortify_fatal(char const*, ...)+26)
#00  pc 00000000000a8b9d  /apex/com.android.runtime/lib/bionic/libc.so (HandleUsingDestroyedMutex(pthread_mutex_t*, char const*)+20)
#00  pc 00000000000a8a89  /apex/com.android.runtime/lib/bionic/libc.so (pthread_mutex_lock+132)
#00  pc 00000000000a7879  /apex/com.android.runtime/lib/bionic/libc.so (pthread_cond_wait+40)
#00  pc 000000000004de2d  /system/lib/libc++.so (std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)+8)
#00  pc 000000000038a7f1  /system/lib/libhwui.so (android::uirenderer::CommonPool::workerLoop()+60)
#00  pc 000000000038a73f  /system/lib/libhwui.so (void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, android::uirenderer::CommonPool::CommonPool()::$_0> >(void*)+94)
#00  pc 00000000000a8147  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+20)
#00  pc 0000000000061467  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30)

Bold font in VS2022 C++ code editor

Visual Studio 2022 uses Cascadia Mono font by default:

They probably think that we all are infected by something and need to be vaccinated.


Waitable QTimer with C++20 coroutines

Found an example of overriding co_await operator and was able to implement my own version:

#include <chrono>
#include <coroutine>

//QTimer::singleShot accepts only milliseconds and a template version of the operator does not compile.
auto operator co_await(std::chrono::milliseconds d)
    class awaiter
        std::chrono::milliseconds m_d;


        explicit awaiter(std::chrono::milliseconds d) : m_d(d) {}

        bool await_ready() const noexcept
            return m_d <= std::chrono::milliseconds(0);

        void await_suspend(std::coroutine_handle<> h) const noexcept
            QTimer::singleShot(m_d, [h]() -> void

        void await_resume() const noexcept {}

    return awaiter { d };

For those who did not work with QT, QTimer::singleShot simply calls the lambda on the current thread after a given interval.


Ethereum Classic (ETC) stopped mining on GeForce GTX 3GB cards

Today I noticed that ETC does not mine anymore on my HiveOS farm with GeForce GTX 3GB cards:


Binance looses its orders

When I query KAVAUSDT order #561657676 with /api/v3/order?symbol=KAVAUSDT&orderId=561657676&timestamp={{timestamp}}&signature={{signature}} that normally should return

    "symbol": "KAVAUSDT",
    "orderId": 561657676,
    "orderListId": -1,
    "clientOrderId": "ce86e0a9-85a8-4d9b-99b1-b08e227e2464",
    "price": "4.80700000",
    "origQty": "10.00000000",
    "executedQty": "0.00000000",
    "cummulativeQuoteQty": "0.00000000",
    "status": "CANCELED",
    "timeInForce": "GTC",
    "type": "LIMIT",
    "side": "BUY",
    "stopPrice": "0.00000000",
    "icebergQty": "0.00000000",
    "time": 1632183933417,
    "updateTime": 1632184233620,
    "isWorking": true,
    "origQuoteOrderQty": "0.00000000"

I periodically get

    "code": -2013,
    "msg": "Order does not exist."

see a video on YouTube that demonstrates this effect.


An example of real-time TableView in QML

Looks like CheckBox-es respond to clicks and work correctly even if they are in a TableView that is updated once a second: