Home servers based on WHS are starting to be announced. Velocity Micro have "accidentally" announced their latest product, which is a pretty darn nice WHS setup.

This little beauty is supposedly "tricked-out" with SATA II, gigabyte ethernet and eSATA. It's set to launch when WHS is released and it will be accompanied by a drive expansion box in Q1 next year.

I can't wait to see more units like this.

Check out engadget's post and the Velocity Micro blog for more info.

 

Technorati Tags: ,

Engadget - Miffed cell subscriber goes on tower-destroying rampage in APC

http://blogs.technet.com/homeserver/archive/2007/07/16/ship-it.aspx... Woohoo!!!

It would've been nice to have been told this via email from the team. Especially since I like many others have been beta testing it for the almost a year.

Oh well, looks like I’m going to be buying more hardware soon. :)

In response to a question asked by David on a previous post Using Weak References to Manage Forms in an MDI Workspace, I've decided to have put together a short write up on a way of implementing the same behavior for search forms.

The question asked by David was:

How would the window manager track a form that is not representing a business object?  For instance, the MDI application I am maintaining has search forms that shows grids of results, which may (or may not) still be opened, and if the user selects one of these same search forms from the menus/toolbars, that form should be activated.

Personally, I don't think the window manager would be the best solution to this problem. What David is trying to accomplish might be simpler to do by implementing the singleton pattern on the search forms he is developing.

The singleton pattern is one of the simplest and most used patterns today. It allows you to have only one instance of an object. Generally, a singleton is implemented by making the constructor a private method and exposing a method or property to get an instance of the object. An example of this can be seen in the window manager class:

public class WindowManager<T>
{
    private Dictionary<T, WeakReference> m_WindowList;
    private static WindowManager m_WindowManager;
 
    private WindowManager()
    {
        m_WindowList= new Dictionary<T, WeakReference>();
    }
 
    public static WindowManager Instance
    {
        get
        {
            if (m_WindowManager == null)
            {
                m_WindowManager = new WindowManager();
            }
            return m_WindowManager;
        }
    }
}

Put simply, the Instance property allows you to get an Instance of the object by instantiating a static instance of the class and holding a reference to that instance. The constructor is hidden to enforce its usage.

However, this can't exactly be done on a Windows forms because the constructor must be public in order for the designer to be able to paint the screen. You can of course implement the same pattern on a form, but leave the constructor as public. This means that the developers must be careful when they are creating the form, as instantiating a new form and showing it in the MDI container will not take any notice of the state of the internal reference.

So, how would this look...?

public class CustomerSearchForm : Form
{
    private static CustomerSearchForm m_CustomerSearchForm;
 
    public CustomerSearchForm()
    {
        InitializeComponent();
    }
 
    public static CustomerSearchForm SingletonInstance
    {
        get 
        {
            if (m_CustomerSearchForm == null)
            {
                m_CustomerSearchForm = new CustomerSearchForm();
            }
            return m_CustomerSearchForm;
        }
    }
}

And to call it from a shell form when a menu item is clicked would look something like this...

public class MainForm : Form
{
    ...
 
    private void mnuCustomerSearch_Click(object sender, EventArgs e)
    {
        CustomerSearchForm searchForm = CustomerSearchForm.SingletonInstance;
        if (!searchForm.Visible)
        {
            searchForm.MdiParent = this;
            searchForm.Show();
        }
        else
        {
            searchForm.Activate();
        }
    }
}

Another simpler way of achieving the same result would be to iterate through the MDI container's children until you find a Form of the same type as the form you want to open.

private void mnuCustomerSearch_Click(object sender, EventArgs e)
{
    CustomerSearchForm searchForm = null;
 
    foreach (Form childForm in this.MdiChildren)
    {
        searchForm = childForm as CustomerSearchForm;
        if (searchForm != null) break;
    }
 
    if (searchForm != null)
    {
        searchForm.Activate();
    }
    else
    {
        searchForm = new CustomerSearchForm();
        searchForm.MdiParent = this;
        searchForm.Show();
    }
}

This would achieve the same result and would probably be easier to for developers with less experience in design patterns.

Hope this helps you David. :)

Ok, so it looks like I've been tagged by Mitch (thanks alot! :)). So what have I decided to do over the next 6 months...?

Well, over the past few months I've been thinking quite hard about where I'm heading as a developer. I've always been quite a generalist in that I don't have one technology that I am particularly interest in specializing in, so my goals are always quite broad.

I have been a bit behind the pace recently though with .Net 3 technologies such as Cardspace and WPF, so my primary goal will be to push myself to get some experience using these. In particular, I am planning to start using WPF and Silverlight to the point where I don't need to touch another Winforms application again. :)

Another goal of mine is to upgrade my certification. At the moment I'm a Microsoft Certified Software Developer (MCSD). I've had this certification for about a year now and it's out of date! So, while I'm not bettering the world with XAML user interfaces, I'm going to be putting some time into completing two of the upgrade exams to become a Microsoft Certified Professional Developer (MCPD) in Web and Windows applications. I know I said I hope to never touch another Winforms app again, but I know it's just not going to happen...

Lastly, I'm really hoping to push myself into .Net 3.5 and Visual Studio 2008. As part of the work I'll be doing on WPF and Silverlight, I'm hoping to start using the Orcas dev environment more so I can get up to scratch and be ready for the February 2008 release.

Well, there's my next few months in a nutshell. So, who else do we want to hear from...? I'm going to tag Richard... enjoy!

Some clever Aussie scientist at UQ have thought up a new way to transport matter at the speed of light.

The theory involves super-cooling matter to almost absolute zero so that the atoms enter a state called Bose-Einstein condensate (BEC). In this state, all the atoms act the same way causing them to act as a macroscopic matterwave rather than individual particles.

So how do the atoms get from one place to another...?

Using two reserves of atoms already in BEC with a control laser beam passing through them, the matterwave is directed to the first reserve as a pulse. The first reserve absorbs a photon, which excites the atoms and causes a signal beam of photons to be emitted in the direction of the second reserve.

When the signal beam reaches the second reserve, the atoms absorb a photon from the beam and a pulse of atoms is emitted that resembles the initial matterwave.

So how long until we can tell the slightly overweight Scottish guy to beam us up...? Well, I wouldn't hold my breathe... :)

Check out ACQAO for more detailed information and a simulation. The original paper is also available, but I'd start with the UQ press release for a brief introduction to BEC and how this method differs to others.