first_page

studio status report: 2021-03

month 03 of 2021 was about regrouping around Publications

The phrase ‘regrouping around Publications’ is a fluffy cloud of words 🌩 hovering over hard changes:

  • retiring the private Songhay.GenericWeb repo 🚜🔥 and building out the private Songhay.Publications.KinteSpace repo 🚜✨
  • enforcing a CQRS-ish principle in the b-roll repo 🔨 🚜🔥
  • addressing b-roll repo TODOs by releasing a new package for Songhay.Publications 📦🚀
  • enforcing the design choice that Activities must encapsulate as much logic as possible, starting with the b-roll repo 🚜🔥

retiring the private Songhay.GenericWeb repo 🚜🔥 and building out the private Songhay.Publications.KinteSpace repo 🚜✨

After over 20 years the terms gen-web and GenericWeb are no more! This change represents the move away from relational data support and repository-patterning as an ongoing study. Ironically, I am using an ER diagram to sketch out the document-database, no-SQL schema that should be the future of this Studio:

the document-database, no-SQL schema

Some subtle points:

  • The Segment type is used in two collections: presentations and segments
  • The segments collection contains segments with child segments
  • The presentations collection contains Segment records, embedding an array of Document; the Segment.ParentSegment refers to the lowest Segment in the segments collection
  • The images collection contains ImageCandidate records, referencing one or more documents
  • The keywords collection contains IndexKeywordGroup records, embedding an array of IndexKeyword, referencing one or more documents

Challenges in view:

  • The segments collection is a bunch of tree structures—how does one ensure an index for a tree structure?

My plan is to use LiteDB—a lightweight, embedded .NET document database—which should meet my apparently limited needs. The development schedule below has been revised to reflect this massive change.

enforcing a CQRS-ish principle in the b-roll repo 🔨 🚜🔥

My latest changes and re-factorings of the b-roll player is enforcing a deceptively simple rule that resembles compliance with CQRS but is more about making the code testable, maintainable and simple:

All get operations must be segregated from all update “commands.” I find it easier and safer to write many, many tests for get methods which whittle down the testing of command/update methods.

YouTube personality Hussein Nasser has a novel take on CQRS in “CQRS is probably the cause of the Microservices madness.”

addressing b-roll repo TODOs by releasing a new package for Songhay.Publications 📦🚀

The pressure washing of the b-roll repo and the LiteDB-centric push into Songhay.Publications.KinteSpace, has inspired significant improvements to the Publications core, Songhay.Publications [📦 NuGet].

Details on this work are filed under the 5.2.0 release GitHub project.

enforcing the design choice that Activities must encapsulate as much logic as possible, starting with the b-roll repo 🚜🔥

The controllers for the b-roll player were built to support a repository pattern I concocted for static JSON in Azure Storage containers. The interfaces representing these repositories were eagerly injected into the interfaces of the controllers as I was wrapt in the novelty of ASP.NET Core.

This eagerness and novelty for ASP.NET Core led me away from the Activities-centric Studio convention that would make ASP.NET controllers merely hosts for instances of IActivity [GitHub] and IActivityWithTasks [GitHub] interfaces.

the Songhay.Publications.KinteSpace repo ‘absorbed’ the Stills API

I am both quite relieved and embarrassed to admit that my months-long drama with the stills API under the b-roll player umbrella was misguided. The ‘subtle points’ I made above casually observe that ResponsiveImage is now under the the Songhay.Publications.KinteSpace umbrella.

The API has moved. 🚜

sketching out a development schedule (revision 15)

The schedule of the month:

  • add Stills API to Songhay.Player (b-roll player) 🕸🌩
  • incorporate LiteDB [🐙🐈 GitHub] into Songhay.Publications.KinteSpace
  • build Web components required for new version of SonghaySystem.com 🖼
  • upgrade songhay-ng-workspace to Angular latest 📦↑
  • complete project associated with new version of SonghaySystem.com ✅
  • 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/