Tip of the Week articles at FlashArray [Follow-up]
This article is a follow-up to the last article about Tip of the Weeks at FlashArray. We are now publishing these tips for more than a year. As part of our regular Engineering Productivity survey, we also got positive feedback. Topics TotW/27: Error handling at FA. We do not use exceptions. This article gives tips about how to raise errors, handle errors, and propagate errors. TotW/28: Discusses different ways to asynchronously wait for events. It was the part of a bi-weekly series on concurrency that starts with TotW/22. TotW/29: Discusses how to use C++ namespaces at FA TotW/30: Discusses our multi-producer, single-consumer notification API. TotW/31: An article about the explicit bool conversion operator in C++. Initially, we assumed that most articles would be about core C++. To our surprise, these articles were the minority, with most articles focussing on our custom libraries. This is the first core C++ article since TotW/20. TotW/32: Discussed our multi-producer, multi-consumer notification API. TotW/33: Gives tips about marking tests as expected to fail in the pytest test framework. TotW/34: Discusses how to adjust the log levels of our logging API at runtime. TotW/35: Discusses a hybrid data structure instead of a std::vector if only a few elements are expected. Hybrid data structure here means data structures that are optimized for a few elements (to avoid memory allocators and be cache-friendly), but allow growing to large number of elements seamlessly. To learn more about these data structures, I can recommend this talk from Cppcon 2016. TotW/36: Discusses std::tie to write comparison operators in a less error-prone way. TotW/37: Discusses how to write hash functions. TotW/38: discusses a tip on how to write good log messages. TotW/39: Discussed lambda captures in C++. TotW/40: Discusses how to specify which of our memory allocators to use for a specific, important class. TotW/41: Discusses the override specifier in C++. The publishing of this tip was synchronized with enabling the modernize-use-override clang-tidy check. TotW/42: This was quite a basic tip about what constructors are and when to use them as well as what do not do in them. TotW/43: Discusses how to “death tests” in our unit test framework. TotW/44: Discusses how to use type hints in Python 3. TotW/45: Discusses East Const style and West Const style in C++. Our C++ guidelines prefer East Const style. TotW/46: Discusses how to register a class for automatic formatting in log messages. TotW/47: A tip about how to use subprocess in Python. TotW/48: A tip on how to remove tuples from our database. As discussed in this research paper from SIGMOD 2015, our database uses elide functions for tuple removal. TotW/49: What happens if you call std::move. IMHO one of the most used and least understood operations in Modern C++. TotW/50: Explains our ordered, concurrent map data structure we are using. TotW/51: Discusses a specific aspect on how to write to our database. TotW/52: Discusses our in-memory interval set class, which we intensively use. TotW/53: TotW/12 discussed parameterized test. This tip discussed how to write tests parameterized on types using a system based on C++14’s generic lambdas. TotW/54: Discusses an aspect of our smart pointer classes. TotW/55: Discusses our different forms of assertions. TotW/56: Highlights a different way to define a C++ unit tests which makes it easier to test asynchronous code. TotW/57: Python fstrings. TotW/58: Rate-limited in our logging infrastructure. TotW/59: Python raw strings. TotW/60: Enumerations and why enumerations should be preferred to bool parameters TotW/61: A catch-all article about reasons to prefer Modern C++ to what I called C-style C++. My goal was to reduce the number of articles that I wrote in the second half of the first year of TotW. And I did not fully succeed, as I still contributed most articles. However, four authors are now contributing articles and one co-author is stepping up and reviewing almost every article and taking over the main authorship on half a dozen. ...