Tuesday, December 7, 2010

HTC 7 Surround

Yup, I finally decided to get my hands on a Windows Phone 7 device. The reasons why I chose the HTC Surround 7 are pretty simple. I already had a contract with Telus and right now they only offer this one and the LG Optimus 7, secondly, the Surround as the alarm clock feature that the Optimus doesn't have and finally, the three main buttons, at the bottom of the screen are "touch" instead of actual buttons as the Optimus provides. I know that there are other Windows Phone 7 HTC devices, but the Surround is the only one available here for now so I didn't really had the choice, I don't think I will actually use the huge Yamaha speaker unless maybe for the alarm clock.

I'm not here to talk about the phone though, the real subject of this post is the Operating System, Windows Phone 7. After a couple of days using it and configuring it I thought I could let you all now about the small thing that annoyed me. Let me be clear though, all these little complications have nothing to ruin my experience with this OS. After only a couple of days, I'm already addicted.

Mac Address
There is actually no way, from the device itself, to find the Mac Address. So if your WiFi network uses Mac Address filtering, you'll have to disable it, connect the device to your network, use your router to find the newly connected device's address and then re-enable the filtering.

SSID Broadcasting
Windows Phone 7 is actually unable to connect to any WiFi network that does not broadcast its SSID

Tethering
For now you can't share your mobile internet connection with another device. I do hope this feature will be implemented in Windows Phone 7 and that carriers won't have the option to disable it.

Live ID
When you first use your Phone 7 device, you will provide your Live ID, this Email is used for importing contacts and information from your Xbox Live account. Make sure you enter the right one because the only way to change it is to reset your device, thus losing all your settings and anything you already installed or transfered.

Storage
The device can't be used as a simple storage device. To transfer any content you need to use the Zune software, so you can only manage videos, pictures, music and apps.

Edit : My bad, I CAN actually edit a linked contact without unlinking it.
Linked Contacts
When the same contact can be found more than one time, let's say in your Hotmail contacts and Facebook contacts, they are automatically linked, which is not a problem, BUT, if you want to add , let's say a new phone number, to one of those "linked" contact, you have to "unlink" it first. This is a behavior that I simply don't understand. I really hope this to change in a future update.


Importing contacts
Facebook contacts and Window Live contacts or imported to the device automatically. You can set an option in the setting to make sure that your Facebook contacts are not imported automatically but make sure to do it before you set your Facebook account. Also, If you delete a Windows Live contact from the phone, it gets deleted from your Windows Live contacts. I'd like to have more options.

Well that may seem like a lot, but I still think its pretty good for a new mobile OS. One last thing, to sync with an exchange account make sure that ActiveSync is enabled on your account, once it is everything should work fine. I actually have a total of 5 Email accounts and they all work fine on Windows Phone 7.

Thursday, December 2, 2010

Using the ThreadPool - An example as simple as possible

I just posted a code sample using the ThreadPool on a forum so I thought I could also post it here. Who knows, it might prove usefull to someone someday. Basically it simply demonstrate how to create and start new threads with the ThreadPool and how to use delegates with parameters. Here it is :
Imports System.Threading

Public Class Form1

    Delegate Sub UpdateItemValueDelegate(ByVal index As Integer, ByVal value As Integer)
    Public UpdateListItem As UpdateItemValueDelegate = AddressOf UdateItemValue

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Add some values to the listbox for the example
        For i As Integer = 0 To 10
            ListBox1.Items.Add(i.ToString())
        Next
    End Sub

    Private Sub UdateItemValue(ByVal index As Integer, ByVal value As Integer)
        'Set the new item's value
        ListBox1.Items(index) = value
    End Sub

    Private Sub CalculateNewValue(ByVal itemIndex As Integer)
        'Calculate a new value for the given item and call the delegate to set the new item's value
        Dim value As Integer
        value = ListBox1.Items(itemIndex) * 5
        If ListBox1.InvokeRequired Then
            Me.Invoke(UpdateListItem, {itemIndex, value})
        End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Run a thread for each item in the list
        For i As Integer = 0 To ListBox1.Items.Count - 1
            ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf CalculateNewValue), i)
        Next
    End Sub
End Class

Microsoft Press Books

For those interested in Microsoft Visual Studio 2010 MCTS or MCPD, the following MCTS book is suppose to be available december 16th :
MCTS Self-Paced Training Kit (Exam 70-515): Web Applications Development with Microsoft .NET Framework 4