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