Daniel Lemire https://lemire.me/en/
Experimental vs asymptotic software engineering, Ullman's essay
Denis' Book https://twitter.com/dendibakh/status/1328414554586443776 https://t.co/oTVC0C6tqW?amp=1
"Programming is social."
"Iteration over the internet ... combining ideas from different people over time"
Software conveys ideas.
Software allows independent peer review.
Create cost models in your mind's eye, then experiment. Measure constantly.
"People do not benchmark enough."
Benchmarking should become as common as unit tests.
Think in terms of possible data structures, rather than hyperfocus on the current data structure implemented.
Making software efficient is similar to making an engine efficient.
Profiling to tune lines can turn into headbanging. Benchmarking and trying new things allows for large gains.
Software co-evolves with hardware.
Open source is part of the college of software engineering.
Plotting performance over time, you can predict exponental growth in the near future.
We need better tools for performance engineering. Comparing performance between compilers is hard.
We need a tool for performance line by line mutation testing on complex codebases.
Benchmarking will happen more frequently if it runs fast.
Timing often has curves other than normal distributions.
We need tools that let people better understand what is going on.
Go benchmarking features.
C++ is gnarly. We need tools to know where there are copy constructors or bounds checking.
Programmers don't think enough about data layout and data flow.
Dislike for functional programming use of replacing simple loops with complex function composition.
Physical design of data layout should be first before programming.
Lex Friedman podcast - Jim Keller, Chris Lattner, David Patterson, Donald Knuth ...
Daniel's "Secret projects": Bloom filter, xor filter - better unicode validation
Marketing benefit of "secret" projects until they are ready for public showcase.
My personal musings.
- Need for Godbolt style reports on open source builds.
- Need llvm ir code coverage reports.
- Could modify C++ STL for dumb printf logging using pound defines. Could be annotated with code coverage?
- https://embed.cs.utah.edu/creduce/ + /usr/bin/time -v
The "Black Book" is also a fascinating read. Albeit a bit out of date in practical terms, many of the same principles still apply today:
https://github.com/jagregory/abrash-black-book