Well I just hit a milestone, and figured now, before I have to head off to work in a few minutes would be a good time to make a post.
For Competition #14, I'm working on my book. I know I've said that before. I'm sure I'll say it again. I'd love to be working on a game right now, but VS 2019 just came out two days ago, and I was hoping to have the 4th edition of my book ready to go by about now.
To sort of catch everybody up on the starting situation, VS 2017/C# 7/The C# Player's Guide 3rd Edition all came out in… it might have been March of 2017. Microsoft has, since then, done several smaller updates to the language and to Visual Studio. 7.1, 7.2, and 7.3 have all come out, and I think VS is on like version 15.9 (VS 2017 is VS 15). The new functionality has been interesting, but it's hard to justify publishing a new version of the book for every minor revision. That, combined with the point releases for versions is a new thing, means I haven't updated the book for those point releases. C# 8 has significantly bigger features (as does VS 2019), and so this demands an update to the book.
So updating my book to C# 8/VS 2019 has been my top personal project this year. I made some progress in January. I went through all of the features for 7.1 through 7.3 and made notes on what they were and how they'd affect the book. I also did that with 8, but that was far less clear. In January, it was still fairly unclear what was going to ship and what was going to be rejected, and what was going to be pushed back for 8.1 or 9.0.
Then things got busy and I haven't made much more progress in February and March.
Now that Competition #14 is starting, I'm back working on the book again.
This morning (I've been trying to get 90 minutes of good, deep work in on my book before going off to work) I hit a significant milestone. I've updated the book to include everything in C# 7.1 through 7.3, with a couple of big exceptions (new chapters that need to be written). I haven't really touched C# 8 yet, and that will be a lot of work still.
I feel like I've identified two other chapters that need to be written in this process.
The first is that tuples have become an elegant and powerful tool in C#. With C# 7 and .NET 4.7, you had to add a reference to System.ValueTuple. You no longer need that. It makes me think that tuples might be a fantastic starting point, early on, after introducing all of the primitive types like int and double, for helping people understand how to build their own types out of existing building blocks. And I think this can and should go in conjunction with more info on arrays and other collection types.
The second is that while C# 7 had output parameters, the 7.1 through 8.0 has done a lot of work in the realm of passing things by reference. I think that basic concept of passing by reference using out, in, and ref is useful on its own, but there's so much more to discuss there now, that it also seems like it is deserving of its own whole chapter (perhaps with the recommendation that you only have to read the first section or two the first time through the book).
So there's sort of the three big other milestones that I know need to be done next: C# 8 features, tuples chapter, and pass-by-ref chapter. In no particular order.