Saturday, March 19, 2011

MonoMac 1.0 Is Released

The guys behind Mono has relased the first version of MonoMac which gives us C# developers the great opportunity to develop native Mac OS X application using C# and .NET.

As you may know I have always wanted to bring Stoffi to the Mac and Linux platforms in the future. In order to use C# and .NET on platforms other than Windows you need to use Mono. I have two virtual machines running both Mac OS X Snow Leopard and the latest Ubuntu, waiting for me to get working on bringing the Stoffi love to both platforms.

That's why during the beta of Stoffi I started to extract a lot of the basic functionality of Stoffi and put that code inside a core. The plan is to make this core agnostic about the GUI, and only provide fundamental functionality such as playback, playlists management, upgrading Stoffi and managing the filesystem. All these features can be done using the core .NET libraries which means that it can be run on Mono.

In turn, the GUI will be discarded totally and a completely new GUI will be written for both Linux and Mac OS X. One of the heart goals of Stoffi has always been to look and behave really good. I want to think of our unofficial motto to be "By Default" which means that Stoffi should look and feel like it is the default application for playing music, on any platform.

That's why one of the priorities for the next release is to keep moving the GUI code out of the core and working on creating a clear separation. My hopes is that when we release the next upgrade to Stoffi stable the core will compile on both Linux and Mac OS X so that we can create the new GUIs for the third release which should be the one that includes support for more platforms than Windows 7.

I am not a Mac person so I am really interested in knowing what exactly are the most native things in your Macs? Stoffi for Windows have used Windows Explorer as a role-model since it certainly is the most native Windows application that I know of.

So for those of you using something other than Windows: bear with me, you will feel the love soon enough.


A visualizer problem and a solution to it

Hi, gang!

I've noticed that some of you guys may have gotten into a bit of trouble if you used the experimental visualizer feature. The latest upgrade seemed to have broken the Visualizers for some and for those people Stoffi have become unable to start. If this has happened to you then read on for a solution to how to fix it.

The Problem
This will only happen if you have gone to "Preferences" and clicked on "Enable Visualizer". This is an experimental and highly unstable feature. You did get a big, fat warning when you enabled it. If you don't know what I am talking about then this problem is not affecting you.

For those of you who took the risk and enabled the visualizers this latest upgrade may have been affected of an issue that make Stoffi crash with an error message when you try to start it.

The Reason
There's an explanation on the bug report which also contains a solution. If you want to know why this bug appeared you can jump over to the project site and read more about it. There's also a rough plan on how to fix this before stable.

The Solution
The solution to this issue is to manually go into the settings file and turn off the visualizer feature.

Start by pressing Win+E. This should open up the Windows Explorer window. Go to C: and you will see a folder named Users. In that folder you should see a folder with your login name. Open it.

Now click on the Organize button which is to the upper left. Then click on Folder and search options.

The Folder Options window

This will bring up the Folder Options window. Under the tab View there is an option named Show hidden files, folder and drives which you must enable.

Now close the window by clicking on OK and you will come back to the Windows Explorer window displaying your user folder. It have now appeared a folder named AppData which is partly transparent. Inside that folder there is another folder named Local which in turn will contain a folder named Brodd-Reijer. In it there will be a folder for Stoffi which starts with Stoffi.exe_Url_ and have a random string on the end. Inside that folder is a folder for a specific version of Stoffi. The latest release of Stoffi has version number You have now finally gotten into the absolute core of Stoffi. Inside that folder is the file where Stoffi keeps its internal settings.

Open the file named user.config in your favorite text editor. You can use notepad by right-clicking on user.config and select Open With. Select the application Notepad.

You are now looking at Stoffi's memory. It is a text file and in there you will find a line that says "EnableVisualizer".

Change the text True to False and Save the file.

Now Stoffi will start up as usual. If you enable Visualizers again and close Stoffi you will have to repeat this procedure again until I release a fix which I will do as soon as my last exam is over which is next Friday.

Good luck!

Tuesday, March 15, 2011

Upgrade for multiple users, scan indicator and GUI tweaks

Hi, gang!

I am proud to announce what may be the last beta release of Stoffi before we can officially, finally declare ourselves as stable. This release contains mostly small tweaks and fixes but there's a few surprises in there as well.

Keeping Settings For Multiple Users
When Stoffi was upgraded it would keep the settings and migrate them from the old version to the new one. The problem is that if there were any other users on the same system using Stoffi their settings would disappear. This has now been fixed and all users' settings will now be migrated during the upgrade process.

Scan Indicator
When Stoffi starts for the first time it does an initial scan. However, there's no way for the user to know this. Stoffi will also do a quick scan each time it's started just to check out if something has happened to the files when it was closed. Again, there was no way for the user to know this.
That's why I have added a small indicator in the top right corner which will show you when Stoffi is performing a scan and how it is going. Hopefully, this will explain to you why it takes a few seconds for the music to appears the first time Stoffi is started.

There's currently no way to turn this feature off. I figured that having a checkbox for this one might clutter the Preferences (remember, we need to be conservative since there's a lot of more settings that will appear in future versions of Stoffi, so we need the space). If you feel that you absolutely MUST turn this off I might consider adding a checkbox for it.

Other Tweaks
There's some other tweaks in there as well. Some alignment of text, some margins fixed, some text wrapping added, etcetera. There's a list of all issues that were fixed in this release here.

Known Bugs
So here we go, there's two known bugs that will get into the stable release. First of all there's the problem with global shortcuts. I have done an attempt to fix this but I haven't found a way to get rid of it. I have managed to narrow it down but it will not be fixed soon. However, it will only occur if you press a global shortcut or a media key a repeated number of times successively. When you do that there's a high risk that the media keys and any global shortcuts will stop working but it can be fixed by just restarting Stoffi.

The next issue is one that has to do with how Stoffi watches the filesystem for changes. It seems that .NET is not giving me all the changes I need in order to keep your music in sync. Right now Stoffi will only detect changes inside the folders that you have added. So if you would rename a parent folder or move it then Stoffi would not detect that and your music would be out of sync (read: you won't be able to play those tracks anymore). However, if you restart Stoffi than it will remove all tracks from the library (since it can't find them any more) and you'll have to add them again manually. The good news is that there is a plan on how to fix this issue but it will require a lot of work which means that it will take some time to fix and it will need to be tested since it may introduce some new, smaller bugs.

Stable Release
Unless there's any bug that's big enough in this release then I will soon release stable. This release will be rolled out through our automatic upgrade system. There's a small fix in the upgrade manager which is required prior to this release but you should have the newest Stoffi available in just two restarts.

Try it out, check to see if everything is alright with it. If I don't hear any screams in the next week or so I will start preparing for a stable release of Stoffi.

Have fun!

Friday, March 11, 2011

Dealing with complexity in UI design

An article on popped up in my RSS reader which caught my attention. It deals with how to design user interfaces and the balance between feature richness and a usable interface. Since this is the main focus of Stoffi I thought I should add my own thoughts to the author's article and relate that to how Stoffi works.

Complex versus Complicated
First of all the author Julian Fietkau talks about the words "complex" and "complicated". These two words are different in the sense that the former is objective while the latter is subjective. A complex system does not have to be complicated. Complexity is just a measurement of how something is structured, while whether a system is complicated or not lies within the perception of the individual. I think that this very much true and that's why it is possible to add features without adding bloat, if you do it right.

One example of such a feature that I at first considered to not add to Stoffi was the ability to manually check for upgrades. The Google Chrome web browser which has the ability to upgrade itself in the background does not let you control when the upgrade checks will be made or when they will be installed. At first I was going for the same but after a feature request I decided that I could add this feature without making Stoffi more complex.

The secret is in default behavior and adaptive interface settings. Stoffi will, by default, check for upgrades and install the automatically. But by just changing a single setting in a drop down box you will get access to more control over how Stoffi behaves.

When you change from "Upgrade automatically" to "Let me check for upgrades" Stoffi will add a button where you can check for upgrades, and when it does a progress bar will appear. This means that the interface changes depending on the user. It is simple by default, but can become powerful if you need it to.

Fietkau continues with touching on the issue of having to relearn different aspects of certain actions. He metions the book Don't Make Me Think which makes a great point about how users want their software to behave. An example of this is how Firefox added the ability to import your bookmarks and other data from Internet Explorer. This makes it more easy and attractive to switch to Firefox.

I am aiming at something similar with Stoffi. The first step was to add different shortcut profiles where you can select the one that you are most comfortable with, be it iTunes, Winamp or even Banshee or Rythmbox. You can use the same shortcuts for the actions that you are used to. But I have more plans to enhance this further. I want Stoffi to when it is first run, detect which players you already have installed and give you the ability to import all music and all playlists from that application while at the same time setting the keyboard shortcuts automatically. This will let you convert from your favorite player to Stoffi with one click and keep as much of your data and settings as possible, minimizing the work for you.

Stoffi also uses the familiarity with the Explorer interface and to some degree the same concept that iTunes, Banshee and many others use, namely to have a navigation pane to the left and content to the right. This makes you recognize the interface and the concepts of how the interface is structured. Stoffi want to be as you guess it is. We want your guesses to be correct as much as possible, which means that we must do our best to behave as you expect us to.

But if we for some reason do not behave as the user expects we need to make it clear why and how it is done instead.

Follow Up
I suggest that you go and read Fietkau's article, it is very good and has some nice points. Interface design is becoming more and more important in the software industry and it is necessary to discuss the various aspects of it.

He will write a follow up so keep an eye out. Maybe I will do another post then as well.

Thursday, March 3, 2011

Faster installation and more bugfixes


I have just released a bunch of new bugfixes to the Stoffi Beta. There's a few big onces, mostly smaller fixes and some fine adjustments.

For example a crash when cycling through all tracks has been fixed. The Equalizer will now keep its position and size and not revert back to default whenever you open it. The performance has also been fixed and Stoffi will not stutter anymore when settings are changed.

Another neat fix can be found in the installer of Stoffi. Previously you would be shown the unpacker which will unpack some installation files into the current directory and then start the installations. This will now be totally automatic and use a temporary folder instead of the current folder to unpack the installer. This means that when you double-click "Stoffi Installer.exe" you will get directly to the Stoffi installer. That's two less clicks in the installation procedure! :D

As usual, if you can't find any more bugs in Stoffi this will be the last beta release before we go stable. I sure hope this is the last one, but you guys always manage to find even the weirdest and most hidden flaws, and we need to find them all before we can declare Stoffi as stable. So keep hunting those bugs!

Good luck!