git: link vs junction


Sometimes I want to use a single repo to track part of multiple projects. For example, on NTFS:
\BigProjectA is too big, and I only track subfolder \BigProjectA\source, with \Git under git control
At end, I have \Git\sourceA to track \BigProjectA\source

I could have \BigProjectA\source as a symbolic link linking to \Git\sourceA, but some application, like IIS , have trouble handling links.
Therefore, I turn it around, \Git\sourceA as link linking to \BigProjectA\source as created by:
mklink /s \Git\sourceA \BigProjectA\source
This didn’t work because git cannot follow symbolic links.
However, git does follow junctions, as created by:
mklink /j \Git\sourceA \BigProjectA\source
The root difference between NTFS Junction and Symbolic Link remains vague, in the context of directories in the same file system.

5G FAQ


How fast is 5G?
At least 10 times faster than 4G, about 2Gbps.
Why is 5G so fast?
High frequency, over 30GHz, higher than 5GHz 802.11ac wifi, therefore more channels
Why is 5G hard to build?
Requires 100 times more base stations than 4G
4G tower covers 2km, while 5G tower cover 200 meters.
Other benefit of 5G:
smaller antenna, shorter than 1 cm,
Antenna size is proportional to wave length, and 5G is mm wave.

WSL1 API


Unlike WSL2, WSL1 does syscall emulation.
lxss.sys forwards to NT kernel when possible, e.g. getdents, or implements in place otherwise, e.g. fork.
Both write and syscall run well on WSL1 on binary level:

		const char * sLibc = "This message is printed by libc write()\n";
		const char * sKernel = "This message is printed by syscall\n";
		write(1, sLibc, strlen(sLibc));
		syscall(SYS_write, 1, sKernel, strlen(sKernel));

 

WSL1 shell


Windows Subsystem for Linux, beta came out in 2016
Why I like it:
Run most native Linux ELF binaries. Cygwin cannot.
Replace cmd with bash: .bat is too weak to do anything.

Comparing to virtual machine such as VirtualBox:
WSL access and run all Windows files directly, while VirtualBox doesn’t
To launch WSL:
C:\Windows\System32\bash.exe
or c:\Windows\System32\wsl.exe
To run a tiny demo executable file dbg/elf, which is compiled on AWS Ubuntu ec2:
From WSL:
cd /mnt/s/rio/proj/Console/linux
$dbg/elf
or from Cmd:
C:\Windows\System32\bash.exe -c /mnt/s/rio/proj/Console/linux/dbg/elf
or C:\Windows\System32\wsl.exe /mnt/s/rio/proj/Console/linux/dbg/elf
scr1