Be aware that not all the video container formats allow for streaming. Compared to the commonly used .mp4, effective streamable video container (muxer) names for use with FFmpeg are Matroska (.mkv), MPEG-TS (.m2ts preferred over .ts to be distinguished against TypeScript) and so on.
If the proper format option is missing, an error may occur from FFmpeg as:
1
Unable to choose an output format for 'pipe:'; use a standard extension for the filename or specify the format manually.
There appears to be lots of screen recordings that occupy gigabytes of storage space locally on an MBP, which need to be compressed. While the local tasks running on an MBP may cause the heat dissipating fan to roaring, making use of an idle desktop seems a viable solution to accelerate the workflow.
Considerations Before Starting
Q: Why not refer to powerful cloud-top computing resources such as those on AWS/GCP/Azure?
A: Extra costs will apply, yet the deploying, debugging and tuning operations can’t be skipped still. On the contrary, a personal desktop as the server host is likely more cost-effective and easily maintainable for personal use cases versus in production.
Q: Why not use a U-disk to transfer the files from the MBP to the desktop device?
A: The source files are gigabytes of videos that can’t fit into the U-disk given the capacity limit.
Q: Why not establish a simple web service on the host over HTTP for a user-friendly interface?
A: Those web UI features (see also Docker API documentation) are more than necessary to achieve the goal. In the meantime, exposing the port 2375 (reference) over HTTP is not secured, yet the HTTPS/TLS setup via port 2376 introduced lots of complexity even when following the Docker’s documentation.
Quick Start
Counter-intuitively, there’s actually no need to install or run Docker Desktop app on either the client or server side, as long as the Docker daemon is ready on the server host and Docker CLI is present on the client side, saving lots of confusion, time and effort on the unnecessary desktop app settings.
Either Docker daemon and Docker CLI can be installed on the common *nix OS or distros including MacOS. If on Windows, Windows Subsystem Linux (WSL) will be helpful to prepare the runtime environment without the need to reinstall the entire OS or run a virtual machine, by enabling the certain optional feature instead.
Even if Docker Desktop is installed on Windows, the runtime environment has to be held in WSL anyway.
Server-side setup in Linux/WSL distro of Ubuntu (as an example)
Package sources
Common practice to refresh the list of available packages and their versions:
1
sudo apt update
Additionally, set up Docker’s apt repository using Docker’s official GPG key and Apt sources (recommended; see also Install Docker Engine on Ubuntu).
Why does WSL end, and the established SSH connection get closed, after a while of being idle?
The cause lies in the WSL Idle Timeout setting. By default, WSL 2 goes into a suspended state (after a short period) once all open terminal windows and running processes have exited. The best way to prevent this is to configure the vmIdleTimeout setting in a Windows configuration file.
Navigate to the Windows user profile directory: %userprofile% (e.g., C:\Users\YourUsername). Create a file named .wslconfig if it doesn’t exist. Open the file and add the following lines:
1 2 3 4
[wsl2] ; Sets the time in seconds that a WSL 2 distro can be idle before it is terminated. ; To disable the timeout, set this to -1. vmIdleTimeout=-1
Known Issue of OpenSSH / Docker
docker stderr=ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or director
Ever since 2025, there has been an increasing number of in-depth problems involved in the seemingly resolvable coding interviews, which used to be very uncommon. It’s worthwhile noting that being unprepared for such topics but merely showing a problem-solving mindset may not always lead to a desirable passing-level result, given the extremely-competitive job market, while it’s also not recommended to learn by rote - memorizing the answer without thorough understanding could be easily recognized as imposter by the interviewers.
Essentially, merely +- arithmetic operations and parenthesis (nested possible) need to be supported.
Concise & efficient Solution after refactoring
Upon second thought, it appears that stack operations are need only when destructing parenthesis and processing the +- operators (see also other shared solutions on LeetCode).
Problem: on Hackerrank online IDE, given the function definitions, implement certain logic to obtain the expected output while ensuring the function calls running in parallel.
Note that (based on clarification made by the interviewer):
Only JS/TS allowed for this problem;
The function of getNameById is meant to simulate certain time consuming task; no change should be made other than under TODO inside asyncMap;
callback param passed into getNameById is not the same as that in asyncMap.
It’s sometimes possibly also needs to remove conflicting packages to proceed, rather than trying to install by force using the pacman options -d/-dd/-nodeps.
Issue of dependency conflict or failure to find the dependency that should be there:
sudo pacman -Syu –debug It triggers a prompt This also performs wide-range package upgrades.
Issue of CMake / makepkg -si:
1 2 3 4 5 6 7 8
==> Starting build()... CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool. CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage -- Configuring incomplete, errors occurred! ==> ERROR: A failure occurred in build(). Aborting...
For CPUs with AVX2 instruction set support, that is, CPU microarchitectures beyond Haswell (Intel, 2013) or Excavator (AMD, 2015), install python-pytorch-opt-rocm to benefit from performance optimizations. Otherwise install python-pytorch-rocm.
sudo pacman -S python-pytorch-opt-rocm
This may generate an installation as large as:
1 2 3 4
Total Download Size: 2654.00 MiB Total Installed Size: 29579.85 MiB
A ZFS pool should surely pre-exist there to allow for the operations introduced later.
Key point: Why not split, or shrink existing volumes for a Time Machine volume?
Not viable. A ZFS partition always tries to occupy as much space as possible, so does ZFS volumes under it, sharing the entire space of it. To reserving some space is exactly what the quota property is designed for.
In addition, you can use the reservation property to guarantee that a specified amount of disk space is available to a file system. Both properties apply to the dataset on which they are set and all descendents of that dataset.