18/04/2008

Microsoft Zune Dev Platform coming soon???


I bought a Zune 2 80GB media player because I believed in Microsoft when they gave the Zune 2.0 software update to all the Zune 1 users.

In February, Microsoft stated (on their XNA Team blog) that Zune game development would be possible in XNA Studio 3.0.
"A preview release of XNA Game Studio 3.0 will be available in the Spring 2008 timeframe, with a final release scheduled for the holiday 2008 season."

Moreover, they went even further to suggest the following api functionalities:
"Keeping with Zune media experience, XNA Game Studio 3.0 integration includes discoverability and access to user’s music allowing the user to customize background soundtracks or create real-time visualizations. In addition, the XNA Community Games Platform team has announced the ability to have multiple Zunes wirelessly engage in an ad-hoc gaming experience."
I visited the XNA Creators Club site today and they are showcasing Zune development (picture above right). Does this mean the Game Studio release is right around the corner? Or have they not updated their site since February?

I have to say, I may be a minority, but I really like my Zune!

Over and Out

10/04/2008

Google Analytics Data Sharing and Benchmarking against Industry Verticals

I do not have much time for a blog today, but thought I'd share this new Google Analytics data sharing feature with you. I am a tiny bit hesitant to believe that it's a good thing Google is trying to take on this vertical - but heck - what can't they get into - Microsoft Max?? I feel this is just another attempt from the giant to capture more information from its users - especially more granular information - and I'm not going to participate. My second question is - they will do something drastic with this info - what is that, and what are these so called New Google Products and Services. Hmmm ...

The below is the announcement email the Google Analytics team sent out this morning, happy reading:
Dear Google Analytics users,

We are writing to let you know about a change in our service offerings. If you have logged into your account recently, you may have noticed that you can now choose to share your Google Analytics data. By providing data sharing options, we hope to provide you with transparency, control, and new services based on your preferences.

To learn more about data sharing settings, visit our FAQs: http://www.google.com/support/googleanalytics/bin/answer.py?answer=87515

We're also happy to announce industry benchmarking as the first new feature available to those who opt to share their data. Benchmarking lets you compare your metrics against industry verticals.

To enable this optional new feature, an administrator on your account will need to make the following selections on the Google Analytics data sharing settings page:

1. Log into your account. You'll see the yellow data sharing settings box on the Analytics Settings page.

2. Click the "More data sharing options" link within the yellow box.

3. Select the second checkbox to specify that you want to share your data "Anonymously with Google products and the benchmarking service". You can also choose to share your data "With Google products only" to take advantage of advanced Google advertising products and services as they become available.

The industry benchmarking feature is currently in beta. Once you have enabled benchmarking, it may take up to two weeks before the categorized, aggregated and anonymized benchmarking data shows up in your reports.

For more information on the benchmarking service, visit our FAQs: http://www.google.com/support/googleanalytics/bin/topic.py?topic=13909

In addition to the new benchmarking service, opting to share your data will also enable you to take advantage of new advanced Google products and services as they become available. We think these services will offer greater insight and sophistication to users who have opted to share their data. However, if you would prefer not to use these services, simply specify on the settings page that you don't want to share your data.


Sincerely,

The Google Analytics Team

09/04/2008

C#: Creating Tables in Open Office using C#.... Open Office Sucks and So Does Your Face

OK ... you're going to have to use your imagination a bit here because there is too much code to put everything in here ... the basic premise is as such:

// get the row counts out of my parameter => MyUserDefinedCustomTableObject is obviously a class in my app - and no, it is not a DataTable it is a Generic Matrix.
int RowCount = MyUserDefinedCustomTableObject.Rows.Count;

// get the col counts out of ma parameter
int ColCount = MyUserDefinedCustomTableObject.Rows[0].Cells.Count;

// create a context consisting of the oo bootstrap
unoidl.com.sun.star.uno.XComponentContext localContext = uno.util.Bootstrap.bootstrap();

// create a service factory to get shit from
unoidl.com.sun.star.lang.XMultiServiceFactory multiServiceFactory = (unoidl.com.sun.star.lang.XMultiServiceFactory )localContext.getServiceManager();

// create a component loader to get stuff from
XComponentLoader componentLoader = (XComponentLoader)multiServiceFactory.createInstance( "com.sun.star.frame.Desktop");

// create a frame which is basically the document reference
XFrame frame = ((unoidl.com.sun.star.text.XTextDocument)xComponent).getCurrentController().getFrame();

// the tricky part, create a dispatch helper - this is the work horse
XDispatchHelper xDispatchHelper = (XDispatchHelper )multiServiceFactory.createInstance( "com.sun.star.frame.DispatchHelper");

// this is only used if you want to set bookmark text within the table cells ... we use bookmarks as placeholders where there will be text in the future.
XNameAccess xna = ((XBookmarksSupplier)xComponent).getBookmarks();

// Create the property values - this uses a local function that I'm not nice enough to give you but on a primitive level it is propertyvalue.Name = first param, propertyvalue.value = 2nd param.
PropertyValue[] tableArgs = new unoidl.com.sun.star.beans.PropertyValue[4];
tableArgs[0] = CreateNewProperty("TableName", new uno.Any(MyUserDefinedCustomTableObject.TableName));
tableArgs[1] = CreateNewProperty("Columns", new uno.Any(ColCount));
tableArgs[2] = CreateNewProperty("Rows", new uno.Any(RowCount));

// check to determine if we should show borders
if (MyUserDefinedCustomTableObject.ShowBorders)
tableArgs[3] = CreateNewProperty("Flags", new uno.Any(9));
else
tableArgs[3] = CreateNewProperty("Flags", new uno.Any(8));

// dispatch the table creation event to the UI ...
xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertTable", "", 0, tableArgs);

// you have a table in your document, the cursor is usually in the first cell of the table so you can use this function to jump between cells and insert text / bookmarks.
xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:JumpToNextCell", "", 0, new unoidl.com.sun.star.beans.PropertyValue[0]);

// if you are in a table cell and want to set the text of that cell then you can use this
cellTextArgs[0] = CreateNewProperty("Text", new uno.Any("My lovely text i love you text"));
xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertText", "", 0, cellTextArgs);

// if you want to insert a bookmark into the cell you could try this (note you do not have to be in a table cell for this to insert a bookmark).
PropertyValue[] cellBkmkArgs = new unoidl.com.sun.star.beans.PropertyValue[1];
cellBkmkArgs[0] = CreateNewProperty("Bookmark", new uno.Any(cell.CellBookmark));
xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertBookmark", "", 0, cellBkmkArgs);

Over and Out