... all I'm offering is the truth. Nothing more. RSS 2.0
# Wednesday, September 10, 2008

So I saw the updates from Apple, and I must say I am very impressed with the new iTouch, which appears to be a full fledged gaming system now. I am also loving the look of the Genius play list concept. My only issue with the iTouch as a gaming platform is the lack of buttons. I no it has an accelerometer but I am doubting I want to complete a game with a Touch screen.

The following video shows how you are provided with a list a new songs (not necessarily a play list) that you may find interesting based on your listening habits and some fuzzy logic found in the cloud.


Also the other big Zune update is the ability to search for songs wireless directly from the Zune Media Player, all you need is a WiFi hot spot and you can search and purchase songs from the Zune Marketplace. My only concern here is whether they make it obvious that the song you are purchasing is DRM free. Obviously this point is moot if you are Zune Pass subscriber.

 

Related Links:

Technorati tags:
Wednesday, September 10, 2008 12:10:56 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] - Trackback
Zune
# Tuesday, September 09, 2008

This Microsoft Zune announcement yesterday was IMHO a preemptive strike on the upcoming Apple announcement due today. I must say I am very impressed with the line up of changes.

In short they have a couple of new devices Zune 16 and Zune 120 (they are deprecating the Zune 4, and Zune 80) and they are really taking advantage of, what up until today remain, the key differences between Zune and Apple Music devices, vis-a-vis, Radio and Wi-Fi support.

Wireless Connections

... Zune is taking advantage of the wireless connection and the built-in FM tuner to deliver a new feature called Buy from FM, which lets customers tag and purchase songs they hear on FM radio stations directly from the Zune device. When the customer is in a Wi-Fi hot spot, the song can be immediately downloaded to the Zune device. If Wi-Fi is not available, the device will have a queue of songs ready to download when connected to a home computer or in a hot spot. Buy from FM uses Radio Data System and RT+ data feeds within the FM broadcast frequencies that identify song and artist data and enable the Zune service to identify and deliver the track to the customer.

In addition to WiFi downloads I am really interested in the games available from the Marketplace. I have meant to develop a basic game of some description since pulling down the XNA development SDK for Visual Studio. I am wondering if I will be able to make the games available on the Marketplace in the same that your podcast's are available maybe even generate additional income ;)

 

I must admit the whole Zune Social has got me hooked (I just realized that I am involved in two social networks), I am discovering new music from people on my friends list and really pushing the envelope of what I currently listen to.

Mixview. Customers can select an artist, album or Zune Card to activate a dynamic, visual mosaic of related music and listeners. With each click users can take the view in a new direction, creating a fun, graphical way to discover new music. Mixview works with users’ current collection of music, in addition to tracks and albums from across the Zune Marketplace.

I cannot wait to see what Apple is going to announce.

 

 

Links:

Technorati tags:
Tuesday, September 09, 2008 12:25:31 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] - Trackback
Zune
# Friday, September 05, 2008

This week I was asked a question regarding the singleton pattern and I went blank, it has been a while since I have even thought about the concept, this was extremely embarrassing considering how fundamental the pattern is for computer science. So as always this blog serves as a public way of reminding myself that there is always something to learn and even more to remember.

So the concept of a singleton revolves around the idea that you want to ensure that an object should be restricted to one instance of itself . This may be because you are trying to create an object that manages other objects on a global basis within your project.

There a two main principles that go into the singleton. First, we need some mechanism by which we ensure that there is a single object created. Secondly, you have to control the constructor (using private/protected keywords) so at no point after the initial creation of the object can someone perform a create new instances of your class.

The following is the most rudimentary form of the singleton pattern that I could come up with, the 'public static readonly' keywords ensure that when we create an object the uno member is only created once (readonly). While this solves the problem, there are those engineers among us who would complain that the design of the class forces the immediate creation of a static MySingleton object because the 'new' function is not restricted to a method call or the constructor.

    public class MySingleton
    {
        public static readonly MySingleton uno = new MySingleton();

        private MySingleton()
        {

        }
    }

The following example builds upon the weakness of the first in that the instantiation of the object does not occur until requested in the Instance method, as a result the public static singleton object has become private. The Instance method now verifies if uno is null and returns it accordingly.

    public class My2ndSingleton
    {
        private static My2ndSingleton uno;

        private My2ndSingleton()
        {

        }

        public My2ndSingleton Instance()
        {
            if (uno == null)
                uno = new My2ndSingleton();

            return uno; 
        }
    }

The final Singleton scenario accounts for multithreaded applications and provides a standard lock() with a double check to create a critical section around the uno instance. We actually have two verifications (double check) for uno being null, the first check ensures that we do not use the lock unnecessarily , the  second check is conducted after the lock is created to ensure that no other thread snuck in just before the lock.

    public class My3rdSingleton
    {
        private static My3rdSingleton uno;
        private static object sync = new object();

        private My3rdSingleton() { }

        public My3rdSingleton Instance()
        {
            if (uno == null)
            {
                lock (sync)
                {
                    if (uno == null)
                    {
                        uno = new My3rdSingleton();
                    }
                }
            }

            return uno;
        }
    }

May I never forget this again...

Technorati tags: ,
Friday, September 05, 2008 6:42:44 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] - Trackback
C#
# Wednesday, August 27, 2008

IE 8 beta

Dare I ...

I have been reviewing some of the enhancements and the idea of a Compatibility View concept just makes me cringe. This concept basically lets you view the current site as if your browser were IE 7. Apparently the IE 8 team made a choice that would effectively break some sites, Joel Spolsky goes into some great details about the issue (somewhat verbose but very important for web developers).

I do like the the InPrivate browsing, the idea of not having to necessarily delete my cookies and offline content after purchasing and browsing the web is appealing. Key loggers aside this does make it much safer for people who use public PCs in public locations.

With that said, I am not sure if I really have a choice about downloading this, it will be my professional problem soon enough.

Technorati tags:
Wednesday, August 27, 2008 4:24:58 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [1] - Trackback
IE
# Sunday, August 24, 2008
total-sync-graph.png


I love the HTC Touch, an easy to use cost appropriate smart phone that makes pretty good use of Windows Mobile 6. Unfortunately there are two really big problems with my particular version of HTC Touch. First there is no WM 6.1 upgrade for the Alltel version of the Touch. So my browsing experience, by all accounts, is not what it should be.

One of the things that really turned me on the Touch was its integration with the Windows Live Service cloud. My contacts and emails are made readily available on my phone, but there is simply no calendar synchronization with Windows Live Services, this is not even available with the WM 6.1 upgrade. I think it is misguided attempt to get me to purchase more Office software
(Outlook), but that is not going to happen.

NuevaSync is a a third party applications that I found that reports to provide calendar synchronization with Google Calendar, I would prefer to stick with the Windows Live services but I will do what is easy and appropriate.

 

 

 

Sunday, August 24, 2008 4:18:45 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] - Trackback
Windows
# Tuesday, August 12, 2008

I am really starting to grok the whole Silverlight experience. My desire to get involved in this was inspired by my initial push to develop a killer app for Windows Mobile 6, however, I am not sure if I have the time and patience ... we shall see.

Anyway, I wanted to start this whole journey off by getting familiar with Silverlight markup, so that encouraged me to start looking at tools that encourage you to manipulate the tags directly. I am not quite hardcore enough to use notepad but I did not want the dumb down experience provided by Visual Studio (drag and drop). So I came across Kaxaml which provides intellisense and a quick view pane and some choice samples. This allowed me to feel a little closer to the underbelly of the Silverlight markup.

So you are presented with the following blank slate to begin with which helps you define the overall parameters of the page.

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Grid>  
  
  </Grid>
</Page>

You can define some basic shapes these include the ellipse, rectangle, and a Line. As I show in the following example each object can have a variety of properties which I could not possibly list here. The following examples are represented in the images below.

<Ellipse
    x:Name="e6" <!-- object name -->
    Width="150"
    Height="150"
    Opacity="0.8"
    Stroke="#80FFFF00"
    StrokeThickness="15">
    <Ellipse.Fill>
        <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
            <GradientStop Offset="0" Color="Gold"/>
            <GradientStop Offset="1" Color="DarkOrange"/>
        </LinearGradientBrush>
    </Ellipse.Fill>
</Ellipse>

<Image
    x:Name="i1" <!-- object name -->
    Width="300"
    Height="300"
    Source=".\My Pictures\BancroftCeiling.gif"
    Visibility="Visible">
    <Image.RenderTransform>
        <RotateTransform>
        </RotateTransform>
    </Image.RenderTransform>
</Image>

The most compelling part of Silverlight came when I looked into the animation (remember I have not touched any C# code yet), you can define animation purely within the markup. Animation is defined based on Timelines i.e. I can define what happens from point zero in a timeline, to the end of that timeline.

So in the following example I have a time line that goes on forever and I have defined within that timeline an animation to be performed between 0 to 8 seconds based on one of the objects that I have already created. Effectively the 'Left' property of the image is moved between 0 and 600 on the canvas. It is  very simple to setup and you you can have quite graceful effects by animating several properties over various timelines. In my full example I chose to animate things like Opacity, Angle, Width and Height on a couple of objects.

<Storyboard BeginTime="0" Duration="Forever">
    <DoubleAnimation
        AutoReverse="true" 
        BeginTime="0:0:0" <!-- time to start animation -->
        Duration="0:0:8" <!-- time to end animation -->
        From="0"
        RepeatBehavior="Forever" 
        Storyboard.TargetName="i1" <!-- The name of the object as defined above -->
        Storyboard.TargetProperty="(Canvas.Left)" <!-- TARGET PROPERTY -->
        To="600"/> <!-- value applied to the target property -->
</Storyboard>

Here a couple of snapshots of what happens in my window. If you download the code ensure to replace the image file with a valid gif you have on your PC. During one of my tests I animated as many as 10 objects and my CPU did not seem to mind much, let me know if you see any performance issues.

image image image

Hopefully for the next couple of projects I can look at Visual Studio and take advantage of the event driven model that we all love. I am thinking along the lines of user interaction or maybe even collisions between objects.

Technorati tags: ,
Tuesday, August 12, 2008 8:46:37 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] - Trackback
Silverlight
Blogroll
Statistics
Total Posts: 330
This Year: 18
This Month: 2
This Week: 0
Comments: 30
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2010
Mark Downie
Sign In
All Content © 2010, Mark Downie
DasBlog theme 'Business' created by Christoph De Baene (delarou)