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 privateSonghay.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:
Some subtle points:
- The
Segment
type is used in two collections:presentations
andsegments
- The
segments
collection contains segments with child segments - The
presentations
collection containsSegment
records, embedding an array ofDocument
; theSegment.ParentSegment
refers to the lowestSegment
in thesegments
collection - The
images
collection containsImageCandidate
records, referencing one or more documents - The
keywords
collection containsIndexKeywordGroup
records, embedding an array ofIndexKeyword
, 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 toSonghay.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 🚀