first_page

studio status report: 2020-12

month 12 of 2020 was about the data behind the Index layout

I have always been fractal with the rabbit holes 🐇🕳 [🐇🕳 [🐇🕳]…] I may “break” things but I do not move “fast.” I got “lost” this month in formally thinking about the data I would be using to drive the display of the index layout work from last month.

I have written “Songhay Publications and the Concept of the Index” to really think about Index data. This discussion with myself produced these Studio novelties:

interface IndexEntry extends Partial<Segment> {
  segments?: IndexEntry[];
  documents?: Partial<Document>[];
}

interface SearchIndexEntry extends Partial<Document> {
  string extract;
}

I have an issue out for this.

the first dedicated Linux workstations in the Studio

For most of 2018 and almost all of 2019, I suffered with Hyper-V-related and VirtualBox-related crashes in Windows 10. I assume these crashes were largely related to my use of AMD-based hardware with Microsoft’s 21st-century virtual machine technology. Nevertheless, I took these rude interruptions as a prompt for me to move my Ubuntu-desktop-based workflows (featuring Visual Studio Code) to real hardware. I have been experimenting with Linux on Windows-hosted VMs since the early 2000s. The time to move on was long gone: I went with the ASUS PB50 Barebone MiniPC with AMD Ryzen 7 3750H [NewEgg, Amazon].

the ‘pressure’ is on to upgrade to .NET 5

This is a common occurrence in this Studio: Project A takes so long that Project B (which is queued behind A) must be done. For the “10x developer” that does almost nothing in their life but work on .NET, it should have been super-duper obvious to me that when .NET Core 2.2 went to end-of-life (announced this month last year) I should have upgraded everything to .NET 3.0.

In .NET Rocks! #1719, Scott Hunter is basically saying (towards the end of the episode) that, going forward from .NET 5.0, upgrades should be easy and expected. When a development team uses a LTS version of any software, updates are part of the deal. The practice of writing software and stuffing it away and never looking at it again is only something the people that sign the checks of developers can do and still regard themselves as professional. So I need to be more professional here.

The end-of-life announcement did not make me upgrade. What is pressuring me is the embarrassingly recent discovery (in 2020) that Visual Studio 2019 with .NET 5 should no longer need the x86 version of the .NET Core SDK to run tests in the IDE correctly. Finding documentation on this issue is challenging because “everyone” (myself included) is using Visual Studio Code more than Visual Studio. The one low-hanging hint out there is the fact that a version of the .NET 5 SDK ships with Visual Studio 2019.

day-job drama: needing to know what happened between .NET 4.5.x and 4.6.x

Unless I am deeply mistaken—and I can be deeply mistaken, having the latest version of Visual Studio (or the equivalent SDK) allows us to compile “down” any advanced syntax to earlier versions of .NET. The problem with day-job drama is not knowing whether everyone on the “team” is using the ‘right’ version of Visual Studio. This annoying concern has led me to carefully study “What’s new in .NET Framework” and “The history of C#” (with a little help from Wikipedia) to arrange an eye-opening table:

framework version release year framework summary C# summary
4.8 2019 Major work on the CLR, cryptography, WCF and WPF (High DPI) C# 8.0 [📖 docs]: null-coalescing assignment (??=) [📖 docs], ‘more’ pattern-matching [📖 docs], static local functions [📖 docs], enhancement to interpolated verbatim strings [📖 docs]
4.7.2 2018 Major work on cryptography, ASP.NET, SQLClient, WPF and ClickOnce C# 7.3 [📖 docs]
4.7.1 2017 Support added for .NET Standard 2.0; major work on the CLR and ASP.NET C# 7.0 [📖 docs, Visual Studio 2017], 7.1 [📖 docs], 7.2 [📖 docs]: tuples and deconstruction [📖 docs], discards, pattern matching [📖 docs], local functions [📖 docs], out variables [📖 docs], “more” expression-body members [📖 docs]
4.7 2017 Major work on ASP.NET (Object Cache Extensibility) WCF, Windows Forms (High DPI) and WPF (touch/stylus stack)
4.6.2 2016 Major work on ASP.NET, Unicode, cryptography, SqlClient, WCF, WPF, WF, ClickOnce and UWP
4.6.1 2015 Major work on cryptography, ADO.NET, WPF, WF (transactions) and profiling
4.6 2015 release of ASP.NET Core, .NET Native and IReadOnlyCollection<T>; major work on cryptography, GC, WCF WF and WPF C# 6.0 [📖 docs, Visual Studio 2015]: nameof(), $ string interpolation [📖 docs], expression-body members [📖 docs], auto-property initializers [📖 docs], , Null-conditional operators ?. (“Elvis” operator) and ?[] [📖 docs], when in a catch statement (exception filters) [[📖 docs], using static (static imports) [📖 docs]
4.5.2 2014 major work on ASP.NET
4.5.1 2013 tied to Visual Studio 2013 Update 2; announced “async-aware debugging” and “Edit and Continue for 64-bit apps”
4.5 2012 introduced background just-in-time (JIT) compilation and parallelism; major work on GC and MEF C# 5.0 [📖 docs, Visual Studio 2012]: async-await and caller attributes [📖 docs]

😲💡 It is clear to me now that .NET Framework 4.7.1 (and everyone on at least Visual Studio 2017) is the sweet spot for teams with heavy legacy load as they can iteratively move most library projects to .NET Core, targeting .NET Standard while still staying with the “old” .NET Framework.

BTW: since recruiters ask me this question too often, I need to recall that I probably started using the .NET Framework in 2003 when version 1.1 was released [Wikipedia].

sketching out a development schedule (revision 12)

The schedule of the month:

  • upgrade to .NET Core 3.0 5.0 📦↑
  • add Stills API to Songhay.Player (b-roll player) 🕸🌩
  • use @songhay/index as a side-car app for “Day Path” and “the rasx() context” 🚛📦
  • add proposed content Web component
  • use the learnings from existing npm packages to build @songhay/player-audio-??? 📦✨
  • modernize the kinté hits page into a progressive web app 💄✨
  • convert Day Path Blog and SonghaySystem.com to HTTPs by default 🔐
  • use the learnings of previous work to upgrade and re-release the kinté space 🚀

https://github.com/BryanWilhite/