You can have debug symbols even in release builds. With gcc, `-ggdb` for debug symbols and `-O2` for optimization can be selected in dependently of each other. Optimized binaries are a bit harder to debug, but locating the source of this crash should be easy even in optimized versions.
As additional complication, debug symbols are often removed from the binary post-build to reduce binary size. The `strip` utility either discards debug symbols entirely, or it puts them in a separate folder as .dbgsym filses. See the gdb `debug-file-directory` option and the `add-symbol-file` command.
Development feedback—intended to help team members learn and improve—needs an environment where the recipient can absorb information. This requires psychological safety: no blame, no pressure, no personal attacks, no consequences, no reason to get defensive.
Performance evaluation—informing employees how happy the company is with their output—is a high-stakes and high-stress situation that precludes learning.
The author speaks with an authoritative voice and presents the content as facts. Sadly, the article also contains factual errors. For example:
> This capacity could also be served by a fleet of just 40 737s [...], of which Boeing makes more than 500 per year. Bought new, this fleet would cost $3.6b, and with a lead time of, at most, a few months.
Boeing has a backlog of 4000 planes.[1] Current delivery lead times are 5-10 years, so getting 40 planes within months is ludicrous. Aircraft might be available on shorter timelines from aircraft lenders, but probably not in that timeframe either. It's also not what the article argues.
This puts a question mark over the content: which parts are actually correct and which are merely presented as fact without any checking?
As of January 2021, SHA256 repositories are supported, but experimental. They can be created with `git init --object-format sha256`. If I understand correctly, they don't mix at all with SHA1 repositories (i.e. you can't pull/push from/to between SHA1 and SHA256 repos).
Organic synthesis is about making new molecules that haven't existed before. That's important for developing new drugs, improved batteries, better plastics, etc.
Organic molecules are networks of atoms, with both a distinct connectivity pattern, and a specific 3D orientation [1] of the atoms to each other. See e.g. the Wikipedia page of Lipitor[2] a picture of the connectivity pattern.
We build these molecules through chemical reactions. Over time, we have become pretty good at creating the connectivity patterns we want. However, achieving the correct 3D arrangement is still challenging.
List and MacMillan developed new chemical reactions that enable us to get both the connectivity, and the 3D aspect right. Such new methods are frequent Nobel contenders, and won e.g. in 2001 with Knowles/Noyori/Sharpless.
As for how these reactions work: it is true that they are catalyst-based and that catalysts speed up reactions, but that perspective is a bit misleading. The key point is that without catalysts, these reactions would not happen at all. So the catalysts List&MacMillan found accelerate some desirable reactions so much that they turn from "practically doesn't happen at all" to "done in an hour".
Congratulations to the outstanding work, and to the Nobel price!
A ZigZag structure is an undirected graph. Nodes are arranged in an n-dimensional space. For each coordinate axis, every node can only have one edge in the plus-1-along-coordinate direction, and one edge in the minus-1-along-the-coordinate. I.e. no diagonal connections, and max one connection in each "cardinal direction" (+ and - in n dimensions = 2n directions).
In its simplest form, a ZigZag structure can be an n-dimensional grid, where each node is connected to its direct neighbors in the grid. In 2D, that would give you a spreadsheet. However, ZigZag can do more: you can have loops along any axis, e.g. a spreadsheet where the columns "wrap around". Furthermore, ZigZag supports looping the columns of only one particular row: a normal 2D spreadsheet, except that row 13 only has 4 columns, and those columns are wrapped up in a loop. You could also have sparse grids - where nodes are missing, and the edges skip over the missing node.
The idea is to have something that locally, if you look only at the surrounding nodes, always looks like a neat n-dimensional grid. But the global topology can be totally whacky.
I have no idea what you would use such a thing for.
As additional complication, debug symbols are often removed from the binary post-build to reduce binary size. The `strip` utility either discards debug symbols entirely, or it puts them in a separate folder as .dbgsym filses. See the gdb `debug-file-directory` option and the `add-symbol-file` command.