Personal Essays

JavaScript

Using the comma operator to update two indices at once.

From Stack Overflow

function pushToHash(key, value) {
    for (var t = 0, x = 0; t < value.length; t++, x += 2) {
        MQHash[key[t]] = value.slice(0, lineLength[x]);
    }
}

The soul of a new machine: rethinking the computer

Talk by Bryan Cantrill

  • IBM 709 (1961)
    • First computer capable of time sharing
    • Vacuum tube
  • PDP 11 (1971)
  • Rise of server-side computing
    • Running tasks remotely
    • Heavy workload
    • Need to minimize down time
  • Sun (1999)
    • eBay
    • eCommerce beginnings
  • HP DL380 (2009)
    • x86
    • a personal computer used as a server
  • Google (2009)
    • Attempted to run custom, purpose-built computer rather than personal computers
    • Getting rid of components they didn’t need like cd drives, VGA ports
  • Facebook Tioga pass (2020)
    • compute sled
    • connects into a bus bar, so no power supply inside the compute sled
    • minimize power conversion
  • But outside Google and Facebook, everyone still uses PC servers
  • Today’s problems
    • There are reasons to not have cloud computing, but to own your own servers
      • mostly for economic reasons
    • the people making the hardware are not the same as the people making the software
      • this means that the hardware people are confined to certain components because customers are running Windows
  • Personal example
    • saw increasing number of DIMM failure, or memory failures
    • normally in ECC memory, you will see more and more correctable failures before seeing an uncorrectable error
    • however, the firmware was causing memory to be corrupted much faster
    • but can’t change the firmware
  • Solution
    • Use existing microprocessors. They are already reliable.
    • Create real root-of-trust with open firmware. Customers should be able to inspect the firmware for their computers
    • Increased security using purposed-built BMC (baseboard management controller) that only does very limited operations
    • Need firmware that only boots the operating system
    • Redesigning the physical cases to incorporate hardware (like network switches) and software as well as make dense form factors that are power efficient
    • You get better designs when the hardware and software are co-designed: hypervisor, control plane, storage, API endpoints
    • You shouldn’t want proprietary infrastructure software: it should be open source and attested.
    • Most of the solution is building very low-level software (root-of-trust, service processor, boot software)
    • A lot of the hardware is already out there
  • Is this solution achievable?
    • Many have accepted that the current state is good enough
    • We know how to solve all the problems, but the key is creating an integrated approach
    • Hyperscalers (Google, Facebook) do not support many OSes, only a few. By doing that, you can tight up your solution
  • Hardware trends
    • Industry recognizes the need for collaboration on hardware root-of-trust
      • Spectre and Meltdown vulnerabilities: using processor speculation to access memory you’re not supposed to.
      • Microsoft Cerberus, Google openTitan
      • Google Chromebook solves most of these problems, but for the PC
    • Open EDA makes FPGA design and implementation easier
      • Yosys, Chisel, SpinalHDL, Bluespec (a VHDL)
    • RISC-V instruction set
    • Open firmware is happening
      • Thanks to hyperscalers, Spectre, and Meltdown
      • Facebook’s Open Compute Project
  • Software trends
    • Infrastructure software is open source
      • Databases, consensus software (like Zookeeper)
    • Programming languages for systems programming
      • Garbage collected languages aren’t allowed because you need to be deterministic
      • Rust, a safer C
      • C doesn’t incorporate other libraries very well
      • Writing safe C is hard
  • Questions
    • Rust is excellent for embedded applications
      • Learn Rust the dangerous way