Skip to main content

Blind Testing: A Technology Walkthrough

T'was more than a year ago when Golden Ears is released. Work on Blind Testing begun on the 8th of Aug, 2017.

Here are some rough stats as of 22nd July 2018.

Project Changes
Web App 2962 files changed, 138921 insertions(+), 14490 deletions(-)
REST 106 files changed, 5679 insertions(+), 3040 deletions(-)

Today the Snakeoil Squad released Blind Testing. So what's new in this release, now that we have an extra year of Angular experience under the belt?

There are a total of 63 issues in the Blind Testing road map, of which 31 are new features with the rest (32) bug fixes. You can look at the full list of changes here in the change log.

This is a short post highlighting some of the more exciting new changes in this release, plus the development tools  and technologies that powers it.

Visual Studio Code

Developers usually write code using a tool known as an integrated development environment (IDE).

For more than 20 years my IDE of choice is the powerful  text editor called VIM - and it was a tool that served me very well, until now.

I am happy to finally move on to something better - Visual Studio Code.

Code looks and behave just like any other visual IDE, the key difference is writing code with Visual Studio Code is as quick and responsive as VIM. This IDE really blows classic IDEs like Eclipse or Webstorm away and leave them for dead.

Visual Studio Code is doing everything I can do in VIM and more.

Code Linting

Linting is a process that checks the code for any potential issues, problems or syntax errors.

Badly written software can crash, or behave unpredictably in the worse case. Linting alleviates these problems by identifying bad code and alerting the developers to fix it.

Here is an example of the linter discovering an issue in the C++ code.

This warning tells there is a potential where a C++ class can be used in a wrong way. Fix that part of the code and the error goes away.

As I am currently the only developer working on this, I know for certain this issue is not really going to be a problem. However, if multiple developers are working on the same codebase, problems can occur as everybody have their unique coding style. By fixing this now it just means future developers are not going cause some unintentional bugs when modifying the existing code base.

Client/Server Music Player Selection Now Available In Free Edition

A lot of the experimental features of the Web App are locked in the free edition. There are several reasons for this:

  1. Encourage the community to support the Snakeoil OS project
  2. Experimental features are inherently unstable.

Like it or not, #1 is a given. The resources for development, web hosting and test equipment all require money. While the Snakeoil Squad is happy to do what they can, every bit from the community helps.

#2 is equally important as well. Making these experimental features unavailable to the majority of the public directly reduce the amount of support we need to handle. This gives the Snakeoil Squad more time to development, to further work on and improve these experimental features.

Ideally we would like to promote an experimental feature to the stable feature set for every new major release. In Blind Testing, that experimental feature is Client/Server selection for music.

Describing how this feature works is beyond the scope of this article. In essence this feature gives you the flexibility to utilise multiple PCs to do your music playback duties. You can refer to the manual for an example on how to set this up.

CORS Can Be An Overhead

The Snakeoil OS Web App is using responses from multiple web servers to give you the one single HTML experience. This can be dangerous! Imagine going to your Bank's website and be served data from a web server that's not owned by the banks! CORS is the technology that protects you against malicious websites.

CORS is short for Cross-origin resource sharing. Wikipedia can better explain how CORS works behind the scenes.

While CORS is well and good, consider how it was working in 1.0.0 (Golden Ears).

The browser is making two connections to two different resources on the Snakeoil computer. The two connections are extra overheads on both your client and the Snakeoil PCs. This can be simplified!

This is how it works now in Snakeoil OS 1.1.0 (Blind Testing). Your web browser now only talks to a single web server, and the web server in turn communicates with any other servers internally. In IT geek speak the web server now acts as a proxy to the REST server.

We can explain how this is better - for example:

  1. Communications between the web and REST server now  works on the much quicker 127.0.0.1 interface instead of the Ethernet card.
  2. A lot less port open/close operations compared to before (CPU intensive operations)

Mumbo jumbo aside, this optimisation subjectively yields a better sonic quality.

CPUSet

We are getting requests to do this since Snakeoil OS was released from day one. As there were so many things else to implement, this feature is pushed all the way down the list until now.

And I'd be honest here - the reason why this feature is so down the list is because I was convinced this is not going to do anything. At the time it seems better to dedicate the time on implementing the other 'more important' things first. With that mindset this feature was at the bottom of the to do list for a long long time, until now.

Eventually this feature is implemented in one of the Blind Testing betas. And I still remember my reaction then as I am writing this - there I was sitting on my chair, then I hit play. And I was utterly shocked.

Image removed.

Publicly I am kind of cool as a cucumber about it (Read my first posts here), privately I'm pretty shocked. This is big jump in sound quality, quite possibly the second best tweak ever tried. This combined with equipment isolation (ranked my #1 tweak at time of this writing) gives my system an incredible sense of speed and control when playing music - this is something my system never really had before.

Development on Snakeoil OS stopped for a few days as I spent all my available free time discovering new things in my reference track list. Till this day I still do not comprehend why this is good for audio, however knowing the variances everybody have with their ears and their setup - your mileage will always vary.

What works for me may or may not apply to you.

New MPD Client

Creating a all-in-one remote web client is always in the works. Unfortunately this is still a pipe dream for now. Until then we are relying on third party web clients, and while yMPD works well, there is one thing that stops me from using it - cover art.

Having covert arts makes it a lot easier, and more intuitive when selecting the music to play. Bomf from the forums suggest myMPD and it ticks all the boxes.

This is a great example on how the Snakeoil OS community can help improve Snakeoil OS. Please submit your suggestions here in the Feature Request forums, and we'd try to implement it!

Memory Testing

Some of the hardest computer problems to troubleshoot is caused by bad RAM sticks. Your computer can function perfectly 99% of the time and then malfunction and go crazy in that rare 1%. This nifty tool will help you identify bad memory modules.

Thanks to a silly mistake, this diagnostic utility may never work in previous ISO releases. But it is certainly working now! How to run this will be discussed in a separate blog some time down the road. For the self-intuitive, you can start memtest utility is available only when you boot the Live CD.

Final Notes

We need your help to publicise and promote Snakeoil OS. Tell all you audiophile friends about this project. Invite them to your house and let them experience the joy of listening to music played back from your Snakeoil OS computer. The more people who knows about Snakeoil OS, the better.

Snakeoil OS is also on Patreon now. If you like to help this project out financially, please consider becoming a patron of the Snakeoil Squad. Creating an account on Patreon is pretty easy. Right now we are offering two tiers of patronage - 'big fan' and 'AWS'.

We need to both grow the Snakeoil community and build up some funds. But at the end of the day, we need to enjoy listening to music.

What's Next?

And there you have it. This article of what's new is just the tip of a much bigger iceberg.

Download Blind Testing and enjoy the pure music now. Click on the following links:

This is the best release yet, and we hope you'd like it!

Add new comment

Restricted HTML

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.

Contents