by

Engineering tech update, September 2023

Made some time to work on this whilst I can – looking ahead at my calendar it’s getting busy with other (more important) things πŸƒπŸƒπŸΌπŸƒπŸΌ

I’ve realised that do I get easily distracted – some of the best engineering work requires adequate focus, as I’ve observed at work (day job). And it is easy to get discouraged, given how long I’ve had this project in WIP for. But it’s coming together – looking forwards to reaching a Minimal Viable Product (MVP) and getting some real testing in!

Update on recently completed work:

βœ… worker queue for loading images (bitmaps) on a separate thread.

  • improves playlist load performance. Rather than suddenly spamming the CPU will a bajillion bitmap load requests, which causes a noticable UI lag (for a few seconds), the ‘image loading work’ is now processed in a FIFO queue.
My attempt to improve my test methology with data. Turned out that `GC.Collect()` was actually (effectively) running the entire time throughout my differeny test scenarios, so not sure if my test results were accurate in terms of memory πŸ™

βœ… ui/ux: tabbed ‘library’ and ‘design’ panels, docked to the bottom

This design pattern was inspired by looking for examples out in the wild…

  • DJ software like Serato and Djay are interesting because the live realtime performance workflow of a DJ means that all UI elements must remain onscreen for quick access – there is no time for the user to fiddle around with resizing panels etc!
  • IDEs like IntelliJ, Visual Studio 2022, Visual Studio Code all have docked panels which can be resized. But also collapsed, and toggled to return to the last saved state.

βœ… ui/ux: lots of work across various screens and controls

βœ… code quality, cleanup & logging improvements

βœ… NDI for static slides

For the MVP I still need:

  • drag and drop implemented on at least the left-hand list item view
  • ‘section heading’ item type
  • implement any missing missing bindings with libMPV for basic video playback control (I switched from VLC)
  • finalize ‘Add item’ experience
  • basic library management: ‘smart’ folders, song library
  • demo playlist for onboarding new users
  • go through datatypes serialized to XML
  • song design templates saved to disk (if not already? lol don’t remember)
  • song template design margins, easy bg change
  • easy logo change ui
  • error handling (video file deleted, etc)
  • sync pptx on playlist load
  • ‘group items’ editor ui
  • record demo video for YouTube
  • BIG BUG BASH!

…that should be enough for now πŸ™‚

Moved to future release goalpost/s:

  • sermon recording
  • google slides integration
  • start screen
  • proper websocket events & web remote