• 0 Posts
  • 19 Comments
Joined 2 years ago
cake
Cake day: June 26th, 2023

help-circle

  • In fact, most manufacturers save money and don’t shield the cable, forcing half-speed USB 1.1, which is enough for all mice and keyboards - less than 50 kb/s of the available 6 Mb/s is required even for 240Hz polling. High-end mice might have USB 3.0 (9 pins instead of 4 in the plug) but there should be no practical difference between 3.0 and 2.0 speeds.

    When speed is enough, latency became an issue. Although with 8kHz poll rate (USB 2.0 half-speed and full-speed can only get 1kHz poll rate), the latency will be 125µs at least. But for USB 3.0, it gained two ways to improve latency: 1) it can send Bus Interval Adjustment Message to adjust latency to 13.333µs (around 75kHz); 2) it can switch to async mode. Host no longer poll the device, instead, the device notify host via ERDY.

    Of course, I don’t know how many devices utilized these features.



  • Package managers are complex tools that handle versioning, dependencies, updates, uninstalls and so on.

    No. The original package manager can only handle install, uninstall and update (even no update). Since 1995 CPAN was invented, the package manager start to add feature to handle download and dependency resolve.

    Actually you still can find this kind old school package manager: Slackware, its package manager can only handle install, uninstall and update. It won’t do any dependency check or version check. It’s package format also very simple: just a tarball, install is extract tarball to specific directory and execute doinst.sh in tarball. Uninstall is invert, remove all files in tarball and execute douninst.sh.

    If you package all files needed by install process into a tarball and place it in your repo, you will get a Slaceware package manager with download feature. (Slackware don’t have download feature, all official packages were included in install media and you must download third-party packages by yourself.)

    Package mangers are also distro specific.

    Package manager can be universal. But make it universal with cost: since it can’t depend on any distro-specific thing, it must include nearly everything of userspace.
    (NOTE: Your script repo is not universal since prebuilt binary downloaded from script usually depends on some distro-specific things, such as Glibc version. Glibc is backward compatible, but not forward compatible. So you can’t use these binary in the environment with lower version glibc than when it was built. So many projects will try to avoid these things, they use static-linked musl or don’t use libc at all (e.g. Golang). But it will bring maintenance pressure so most projects don’t do it unless there is an infrastructure to do it easily, such as Golang)
    Actually there is some package manager make themselves universal like Gentoo-prefix and Nix.

    Someone suggested brew. How do you install brew according to https://brew.sh/ ?
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    See the problem?

    That’s bootstrap problem. You always need a way to get the first package manager. I don’t know how Homebrew do. But you can use curl command to download static-linked version package manager to use it without any https://example.com/install.sh for most linux package manager (Except the one written by python. Actually you can do it as well, just download hundreds of files is annoying.).



    1. Thread and Zigbee use the same physical layer and MAC layer (IEEE 802.15.4), so in most case it can use the same hardware and just with different firmware (if manufacturer want).
      There is even a project to run both Zigbee coordinator and Thread border router on the same chip. It works! Although it causes some issue so Home Assistant no longer recommand this “multiprotocol” way, but this is a strong demonstration of the interchangeability between Zigbee and Thread.
    2. Thread Group members is almost the same companies who found Connectivity Standards Alliance (former Zigbee Alliance). When Connected Home over IP (CHIP) project was renamd to Matter at 2019, they create Thread Group to unify the home connectivity: Only use one network layer named IPv6 and one application layer named Matter. Zigbee can’t reach this target since it use its own network layer and application layer. So they invent Thread, which still based on IEEE 802.15.4, but with IPv6 as network layer and can transport Matter on it.


  • In anicent China, the writer and statesman Su Xun (蘇洵,苏洵) wrote a article named “On the Six Fallen States” (六國論, 六国论) about why the six states (韓、趙、魏、楚、燕、齊) were conquered by Qin (秦) during the Warring States period (戰國時代,战国时期)? The following is an excerpt from the relevant paragraph.

    今日割五城,明日割十城,然后得一夕安寝。
    One day five cities could be ceded, and on the next day, another ten cities could be surrendered just so that a certain person would have a single night of good sleep.
    起视四境,而秦兵又至矣。
    But in waking up and looking around, Qin troops again were approaching.
    然则诸侯之地有限,暴秦之欲无厌,奉之弥繁,侵之愈急。
    However, there was a limit to the available land of the lords and callous Qin’s avarice could never be satiated. The more there were giveaways, the more earnest Qin’s aggression would become.
    故不战而强弱胜负已判矣。
    So, even before going into battle, the odds-on-favorite and the most likely victor had already been decided.
    至于颠覆,理固宜然。
    As to the ultimate toppling, that was a forgone conclusion.
    古人云:“以地事秦,犹抱薪救火,薪不尽,火不灭。”
    Ancient people said: “Using land to serve Qin State would be like carrying firewood to put out fire. As long as there’s firewood left, the fire would not be extinguished.”

    In ancient, the six states use land to serve Qin state; in modern, the people use money to serve the companies provide subscription. The more people who pay for a subscription, the more power they have over price increases and control over your data.