Tuesday, October 25, 2016

Starting C++ weekly posts

I volunteered to make daily C++ tips for the people development program at my work. And I decided that if I'm going to make them anyway it will be even better if I wrap them in a weekly post.

Because even after all this years in C++ there is still much to learn ( I cant escape the feeling that I'm complete newbie ) the tips will be part what I currently read from the news feed, part of what I think is important and part something-I-just-discovered-that-I-must-have-known-years-ago.  My definition of tip is a small piece of knowledge that can be useful in day-to-day programming or it can broaden your perspective and give you directions to more bigger knowledge. That is why I'll try to keep the scope as broad as possible (and because I'm the encyclopedist type of person - my brain easily collects random pieces of knowledge but some times not the things I want or have to remember). Wish me luck and discipline to keep this going.

Full list of all C++ weekly tips posts:


C++ tips, 2017 Week 8 (20-Feb - 26-Feb-2017) - std::bitset, mutable, ranges

C++ tips, 2017 Week 7 (13-Feb - 19-Feb-2017) - Behavior, std::valarray, Explicit
C++ tips, 2017 Week 6 (6-Feb - 12-Feb-2017) - Trailing return type, Concepts, Reference collapsing
C++ tips, 2017 Week 5 (30-Jan - 5-Feb-2017) - std::size, data, empty; thread_local; std::array, Thanks, Jens!
C++ tips, 2017 Week 4 (23-Jan - 29-Jan-2017) - .front() and .back(), SIMD, std::string_view, deleting functions
C++ tips, 2017 Week 3 (16-Jan - 22-Jan-2017) - std::is_trivially_copyable, von Neumann bottleneck, std::filesystem, PFL Colony, Amortized analysis
C++ tips, 2017 Week 2 ( 9-Jan - 15-Jan-2017) -  std::forward, Two phase lookup, Boost.Circular Buffer, Compile time tetris. Tetris. At. Compile. Time.
C++ tips, 2017 Week 1 (2-Jan - 8-Jan-2016) - No raw loops, std::for_each vs for, Guaranteed copy elision, Extern template, boost::flat_(multi)map/set
C++ tips, 2016 Week 51 (19-Dec - 25-Dec-2016) - first rule about performance, std::optional, attributes, fluent interfaces, alignof/alignas
C++ tips, 2016 Week 50 (12-Dec - 18-Dec-2016) - inherited constructors, std::clamp, Moved-from state, Cache oblivious algorithms, boost::lexical_cast
C++ tips, 2016 Week 49 (5-Dec - 11-Dec-2016) - Capturing members by value, inline namespaces, if/switch with initializer, Generic lambdas, boost::flyweight
C++ tips, 2016 Week 48 (28-Nov - 4-Dec-2016) - std::ratio, splice, boost::join, Using IIFE for const variable initialization, Reference qualifiers for member function
C++ tips, 2016 Week 47 (21-Nov - 27-Nov-2016) - C++ is not going anywhere, noexcept move operations, boost::protect, std::addressof, Voldemort types
C++ tips, 2016 Week 46 (14-Nov - 20-Nov-2016) - Template normal programming, Currying, String literal to type sequence, decltype(auto), boost::container::small_vector
C++ tips, 2016 Week 45 (7-Nov - 13-Nov-2016) - Termination of a C++ program, Folding expressions, Sorting algorithms in STL, boost::hana
C++ tips, 2016 Week 44 (31-Oct - 6-Nov-2016) -  Locking the lambda type, Table of parallel algorithms in C++17, std::apply, Boost.MultiIndex, Compiler Explorer
C++ tips, 2016 Week 43 (24-Oct - 30-Oct-2016) - Operation Costs in CPU Clock Cycles, Metafunctions, Tag dispatching, Structured bindings, Features removed from C++17
C++ tips, 2016 Week 42 (17-Oct - 23-Oct-2016) - Using parameter pack to write one_of, Type-Safe Unions in C++, GotW #102: Exception-Safe Function Calls, Special Member Function, boost::intrusive_ptr

Edit: I will also blog here about doing this series


Creating a backlog was a huge progress. Currently the process of feeding the tip blog consists of two parallel processes:
  • Adding to the backlog
    • Reading main news feed and extracting tips from it. Problem is that often someone publishes an idea that is so cool that I want ot add it immiditely. When that happens I add the article to my backlog with a delay. I always pay credit to other people.
    • Reading books - good systematical packed knolwedge is excelent source.
    • Educational matherials - same as reading but more lightweight as written material is often more dense in knowledge
    • Podcasts
  • Extracting - I'm currently few days behind schedule probably because I have enough things in the backlog and there is no panic
    1. Determine next week posts
    2. Fill them day-by-day in my work knowledge base
    3. Make colegues do code review and fix remarks
    4. Put tips in the blog - reformat, add examples, add jokes (lol), add blog-specific text/comments
    5. Publish. 
This is the process for now. I'll edit it when refine it more. Thanks for reading.

I decided to change the process a little bit. Now I'm writing the tips on my blog and than publish them at my work's knowledge base. This gives me additional buffer and my current goal is to get ahead of the current time. At the moment I'm 4 tips behind and I intent to get at least 5 ahead. My backlog is full and I know what will be in the next few weeks but need to write it down.