Wednesday, March 28, 2007

So, what is going on here?

I apologize for the silence of late.

But to give you all a bit of a recap on recent events. There are early versions of Aufero in circulation since two days but unless you signed up for testing a few weeks back there should be no way to get it.

That said, as the user-interface goes through polishing I will post some tidbits here and there up until the point where there is a public beta available for download.

Sunday, March 25, 2007

XP vs. Vista - revisited

After some months of writing Aufero (it's for Windows Vista only) I must say that I will not upgrade any desktop-machines at home to Vista. They will stay Windows XP. Luckily there is more to a machine than just on the desktop: Vista Media Center is great, the computer Aufero is running on will stay Vista. It will also stay hooked up to the television set in the living room.


Why not on the desktop?
Quite frankly, I have no real big beef with Vista except the teething problems of some software. There is just no reason for me to [up?]grade. Oh sure, it looks pretty and the architecture of the OS is steps in the right direction. But if I were to believe the ad-campaign of Vista: the biggest feature is ... wait for it ... a pseudo-3D task-switcher (?!)

I don't know, I guess that is just the thing... The whole Wow is a big pile of Meh. If I really want something, there is money for it. But Vista? I simply cannot afford it on the desktops.

There are a few annoyances in Vista Media Center as well, at least on my hardware. Whenever I change the volume it throws out some very disturbing noise through the speakers. The extra services that came in "more programs" at launch here in Netherlands are disappointing as hell, in fact it makes me hope that they had to pay very good money to be there. It really does not do Media Center justice. In my book they might as well have waited with releasing any of that crap to end-users. And another, probably hardware/configuration related issue: I seem to have lost an inch or two of my TV! There are a few things like that which I need to look into when I get time.

But Vista Media Center? To put it in the immortal words of online-gamers these days: GIEF.


On a different note
I am a switcher... I used Linux on my desktop for quite some time. At home, Linux just serves as a "Linux Home Server" at the moment and I must say I had a good chuckle when I bumped into Ian Dixon's blog the other day:

"My Windows Home Server is still going great, I haven't had a monitor plugged in to it for weeks and I haven't touched remote desktop either. The box just runs and I use the Windows Home Server Console to get at the features I need."

Maybe we really do need a Windows Home Server out there. Or just more awareness? Six months ago I had to put in a new power supply in My Linux Home Server, but since then it has been serving me with media, backup, source-code repository, mail, web-service, well, you name it. Without a monitor or a keyboard plugged in, no less! Six months uptime, that is. The reboot before that was probably two years ago.

I know that Ian probably meant well when writing that, but it says a lot about the state of things in the Microsoft world.

And alright, alright, my Linux Home Server is just a vanilla Debian box. But still!

Oh well. The Linux folks call me a Microsoftie. The Windows folks call me a Linux fanboi. It ain't easy.


The truth...
Earlier I said "I will not upgrade any desktop-machines at home to Vista". There will come software to Vista that is "Vista only" and I can probably live without that. But XP will inevitably be completely phased out and then I'll sit there as well. If it is the best desktop alternative.

But... I can tell you I won't switch to AppleTV in the livingroom.

Monday, March 12, 2007

I aten't dead

Less blog == more code.

[*]

Sunday, March 4, 2007

Meanwhile, back in the Source Code...

Aufero's WizardHandler and Dynamic Screens is one of the components in Aufero that is very much stand-alone so I decided that I'd slap an LGPL license on it and share it. Besides, I needed a break from Visual Studio.

For the uninitiated, LGPL is a license that permits you to use the 'library' as is, but if you modify the code to suit you you have to share it, and of course, you have to give credits where credits are due. In other words, a very fair license: You take some and give some.

I don't have a host where I can store these files, so you will have to use copy and paste from the link at the bottom. If you would like to host it, throw an email my way. And of course, suggestions and improvements (in source code or not) are most welcome (aufero.vmc@gmail.com).

And I can safely say that this was the last fucking time I post source code using Blogger. Goddamn. This was a painful experience.


This 'library'
The library comes in the shape of C# source-code and Media Center markup where the former is the model and latter is the view. It consists of four parts: Handler, Screen, Widgets and the related MCML. I will outline these in more detail below.

I wrote this initially to handle configuration and setup within Aufero, so it contains all the logic needed by a configuration handler. In fact, in Aufero's case it IS the configuration handler. Furthermore it will only use one "MCML screen" and "modify" it as it needs by doing some trickery. Perhaps not really trickery, but it's not pretty either (oh, it sure beats in-line code).

I have tried removing all references to Aufero components but some might have slipped through, in which case you will just have to weed that out or just put in your own replacement. Also, I have left the MCML widgets intentionally bland (or ugly if you wish), you will want your own unique look on those things anyway. If you create some nice looking widgets, please share them! We could all use it!


The class diagram
Before we continue I'll be rude and throw a class diagram at you so that you can see how it's all laid out, with a bit of luck you don't have to read further once you see it (!)


The WizardHandler
A WizardHandler is a container for a series of dynamic screens, it handles navigation within the set of screens. If you do not want a Wizard to show up in your standard Media Center navigation you will have to create your own Session to see to it that it doesn't put it in the History.

A simple implementation of your own WizardHandler could be:

public class AuferoSetupHandler : WizardHandler
{
  public AuferoSetupHandler(int startScreen)
    : base(startScreen)
  {
    NavigationEvent += new NavigationHandler(ButtonClicked);
    MCMLview = new Uri("resx://Aufero/Aufero.Resources/SetupScreens#Default");
    Screens.Add(new SetupScreen1(0, this));
  }
}

As you can see, it's a straightforward class that:
  1. Tells WizardHandler that it wants to receive navigation events.
  2. Tells WizardHandler where to find the MCML view we are based on.
  3. Adds a set of screens to a the set (only one in this case).
Generally I don't think they will get much more complicated than this, but your mileage may vary.


The Dynamic Screens (aka Screen)
Well, the comment in the source code says "A dynamic screen, inherit and use.". This pretty much sums it up. But to expand a bit on it: A screen is a container for a set of widgets (text, checkboxes, buttons...), it will help you with implementing scrollable areas for widgets and similar on the View side of things as well. A bit of footwork is done in MCML if you look at SetupScreens.mcml.


Your Customized Screens
They inherit Screen (see Dynamic Screens above), this is where you will do the work
on what should be presented on your screens. When passing screens to your UI's, you'll find the interface IScreen your best friend.

A simple customized screen could be:

public class SetupScreen1 : Screen
{
  public SetupScreen1(int sequenceId, WizardHandler handler)
    : base(sequenceId, handler)
  {
    TextArticle ta = new TextArticle();
    ta.Headline = "Welcome to Aufero!";
    ta.Body = "Aufero is a software package that helps " +
      "you set up, organize and get " +
      "more information about your media.\n";

    base.MainText = ta;
    Widgets.Add(new CheckboxWidget("mycheckbox", "Click me!"));
    base.NavigationButtons.Add("Cancel");
    base.NavigationButtons.Add("Next");
  }
}

The above snippet just adds a title, a body, a checkbox and two navigation buttons
to the screen. I use something similar as a first screen in Aufero's first-time
setup.


The Visual Elements (aka Widgets)
These are the key to the whole thing, a widget can be a textbox, checkbox, just a text element and similar. I have only included four different widgets in this example (read: I have only written four Wizard Widgets for Aufero so far). The widgets are contained by a Screen as was demonstrated earlier. They will be presented in the order they were inserted into the screen.


The View (aka MCML)
This is split up into two different files, one for the actual screen that is presented to the user and one file that contains all the helper UI's like widgets and similar for screens. I left them ugly because my design skills are less than good.


On The Ending Note
I had to hurry up a bit in the end here so perhaps I didn't elaborate enough on certain aspects, but ask away if something is not clear. For the code go to: http://aufero.informe.com/ then click on Source Code.

I'll let the Source Code say the rest. Have fun.

Spam anyone?

It's getting out of hand, this is from a screenshot of my personal gmail account...

Friday, March 2, 2007

Alpha Signups Closed!

I didn't expect the response I got (I mean, who the hell would want to mess around with alpha releases, right?), so I will unfortunately have to decline more signups to the first few releases. I'd like to keep the development until a "public beta" pretty streamlined for various reasons but also because it is in alpha stage and that means we're not only talking about teething problems here, we're talking about possible showstoppers. And the fewer people I scare away from that mess, the better. :-)

I'll let you all know once I'm ready for a real beta.

Feel free to drop by the forums anyway.

Thursday, March 1, 2007

Aufero: Alpha Testers Wanted!

This is only intended for users of Windows Vista Media Center, it will not run under Windows XP or any other platform.

For alpha sign-up go to: http://aufero.informe.com/index.php

It is a brand new forum that will be used for communication around the development of Aufero, so at the moment there are no posts at all but don't let that intimidate you. If you feel that you do not want to give out your email address publicly, just send me a PM over at the forums.

News and announcements will still be posted here at aufero.blogspot.com


Cheers.