Sprint 2 – Week 18

The past week we have been working hard on the following topics:

  • Improved the album handling during adding operations. More smart logic has been applied to detect albums better as well as adding support for pictures. Pictures can be identified from tags (optional) or from folders involved in the add process. We have verified that the adding of files is fully compatible with Helium’s data model by running it on a new database from the new application and then by opening it in Helium 11. Many unit tests have been created to ensure that the album and picture handling will remain stable and easy to refact and improve.
  • UI dialogs. We have created some specific controls to form Helium’s nice graphical look which can be seen in the most dialogs in Helium 11. The new look will support variable DPI font-sizes as well as vector graphics to be smoothly scalable.
  • File properties. As a “test” for the new UI dialog components we have implemented a first look of the File Properties tool (far from complete though) to test off that the UI behaves well.
  • Various async components so that several “heavy” operations can be used from background theads without locking the main UI. All async components should generally be cancellable.
  • Basic crash reporting system. A first version of an automated crash reporting system has been implemented. This system is implemented in the main application as well as in the Tag test tool (read more below).
  • Some preparations/proof-of-concept tests for the upcoming Music Explorer view.

Apart from the main changes above, we have also released a first version of our tag tester tool to a couple of selected testers.

This tool will scan a selected folder recursively and identify all audio files with the folder and it’s subfolders. After that each file found will be loaded with our new tag engine (running in the background with a cancellable progress dialog of course). After the scanning is  completed, a selection of the tag and file properties will be show for the end-user in a list and a list of “problematic” files is also show (if any).

The intial tests has been very successful, the most seems to run very stable and quick and problems identified as been able to be fixed quickly thanks to the crash reporting service.

If you are interesting in testing our tag test tool, please contact us at dev@imploded.com.


4 thoughts on “Sprint 2 – Week 18

  1. Concerning picture support:
    I would like to see extended coverart support: not only front cover, but also Back, CD, Inlay, Inlet, Booklet

    Concerning music explorer view (most neglected part of Helium until now):

    There is a no longer developed program called mexp (=music explorer) – which is a database plugin for winamp (http://www.mexp.dk). The program has some amazing features, that I’m missing in helium. Those features are mainly revolved around the search functions.
    – multiple databases (in Helium the Collections/Volume features are deprecated and no other solution is available
    – immediate kontext-sensitive search
    Here is an older demo video (from a guy, who already switched to mediamonkey):


  2. I read that you’re putting a lot of effort of decoupling the main UI thread from worker threads. In my career of software development I worked on a Faxing server software package. In a server, handling all the communication of all clients in conjunction with direct hardware access is subject of thread hangs if things are not programmed that well.
    We’ve created a thread manager that spawns (=creates) the threads, monitors them on activity (threads tell the thread manager they are still alive in their ‘forever run method’). The thread managers looks for threads being not responsive for a while. The thread manager can then kill these threads, eventually with some recovery options.
    This way, not the main GUI thread is responsible for all the worker threads but a dedicated thread that monitors the conditions of all worker threads.

    What do you think about this idea?

    Liked by 1 person

    1. Oh, and I forgot, a screen can display all worker threads (for debugging purposes), because you can simply ask for them in the thread managerthread.


  3. Thanks for your suggestion cheaternl.
    At the moment we are using .NET’s async/await handling in combination with TPL’s/TAP’s to do this so nothing special should need to be done as long as tasks and synchronization contexts are properly handled.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s