Ordering an O2 Diamond Pro (aka HTC Touch Pro) one week ago, I was told that the delivery might take three to five weeks, as the device is not available yet. I was quite surprised as a parcel arrived this morning. What's inside? The brand new O2 Diamond Pro. The packaging is done a bit Apple-style, making unveiling the phone to some kind of experience.

Xda diamond pro packaging 

Opening the package will reveal the phone. In terms of style and experience, the O2 branding is quite nice, but at the end the content is more interesting.

O2 xda diamond pro revealed

For the impatient user there is a quick-manual for the phone and forth TouchFlo 3D user interface. Also you get ActiveSync 4.5 and a 60-day trial version of Microsoft Outlook on CD-ROM. For those with a lot of spare time you'll find a 350 pages manual. Nice through for the inexperienced user.

Xda doamond pro content

The included accessories are more or less surprising USB and TV cradle, USB handset, replacement pen. The most surprising one is the USB cradle. Standard USB to mini USB, which goes directly to the charging plug.  

Xda diamdon pro accessories

SIM, microSD and battery can be simply inserted by removing the back cover. There is no button to release the cover, so it works similar to the HTC TyTN II (aka HTC Kaiser).

After turning on the phone the first time, the O2 setup will take about 2 minutes  install the branding and setting up the phone. This might differ for each provider. Connecting to the Exchange server took only a few steps. And that's one of the coolest features when using a Exchange server at the back: getting all your contacts, appointments, tasks and mails to your new phone at once.

What is nice: Beside the replacement pen, you'll get a clear screen cover that can be placed on top of the touch screen, increasing its durability. I haven't realized any drawbacks using the touch screen with it.

What is disappointing: The case that comes in this package does not fit to the phone. It a leather-kind, slip-style case which is only half the size of the phone!?  To me it feels like this is the case for the Xda diamond (without keyboard).

What is also disappointing: With a regular price of 500 £, I would expect at least some kind of microSD card within the set. In contrast, the Nokia E71 came already equipped with a 2GB microSD card.

The keyboard feels quite solid and the slide functionality behaves a bit as the one of the HTC TyTN II and not as cheap as of the HTC TyTN. If you are used typing on the TyTN or TyTN II, you'll get used to the keyboard quite fast. The pen slides into the phone automatically as soon as you have inserted it more then 50%. That's no magic, but quite nice.

So far, the device and its accessories are quite satisfying. Let's see how it works during the next few days.

[Update]

As I experienced the first time with my O2 Xda, Windows Mobile Device Center displays a preview of your Xda.

Windows Mobile Device Center

Posted at Tuesday, September 09, 2008 11:32:36 AM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

Today, I run into a quite annoying error message while developing a application for Windows Mobile 6.1.

"An error message is available for this exception but cannot be displayed because these messages are optional and are not currently installed on this device. Please install ‘NETCFv35.Messages.EN.wm.cab’ for Windows Mobile 5.0 and above or  ‘NETCFv35.Messages.EN.cab’ for other platforms. Restart the application to see the message."

The required files are located at C:\Program Files (x86)\Microsoft.NET\SDK\CompactFramework\v3.5 \WindowsCE\Diagnostics, assuming you have installed the Windows Mobile SDK. I copied the file NETCFv35.Messages.EN.wm.cab to my device and run the installation. So far it worked fine, until the same exception popped up again.

Using the .NET CF Logger, from Power Toys for .NET Compact Framework 3.5, I was able to track it down to the following error:

"Failed to load [System.SR, Version=3.5.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC]"

To do so, you choose the device you want to log and select which logging options you want. The log files can be found then in your application folder on the mobile device.

.NET CF Logging Options

With this new input, I found Martijn Hoogendoorn's blog entry. He came across the same issue some time ago and provided a solution to this miracle. If you have a look inside the .cab file, check the _setup.xml file.

 NETCFv35.Messages.EN.wm.cab _setup.xml 

Extract and rename the file SYCCFA~1.001 to System.SR.dll and include it into your project. Rebuild, deploy and debug it - it should work fine.

 

 

Posted at Monday, September 08, 2008 2:49:47 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [3] #      | 

Today, I tried it the first time...

"Google Chrome is a browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier."

It looks very lightweight, though. Reminds me to the early beginnings of Netscape and Internet Explorer. It gives you the impression that it's quite fast. However, during rendering it looks a bit like Safari.

Google Chrome

For some pages that look quite nice in Firefox and Internet Explorer, rendering also behaves a bit odd. So, is this one more browser we have to test our Web application against?

Messed Up Rendering in Google Chrome

One feature provided is the creation of application shortcuts on your desktop that will open the Web site in its own, plain window. Very nice but failed several times when I tried. not sure if it's worth switching from Firefox or Internet Explorer.

Source: http://www.google.com/chrome

Posted at Tuesday, September 02, 2008 9:37:04 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

I did a third Synth, this time I got it 100% synthy. In this try, I used about 30 images of Karlsruhe, I did during a night session. I also used a panorama, I created out of a few of this images. This seems to be a quite good approach to help Photosynth to create the good Synth.

 

I've also used the first time the map feature you can find at your Synth's page.

Map

You simply select the place, where your Synth belongs to and save it along with it.

Location of Synth

Posted at Saturday, August 30, 2008 1:39:28 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 
What Is IronRuby?
Posted in .NET | Coding

If you are interested, go to Manning Publications Co. and get an (almost) free White (green) paper about IronRuby. It will cost you only your e-Mail address and clicking the opt-out link as soon as you received the first newsletter.

"IronRuby is an implementation of the Ruby language on the .NET Framework. That means when it’s complete it will have the same language features as Matz’s Ruby Implementation (MRI) 1.8.6 but backed up by the intrinsic power that the .NET Framework harnesses."

What is IronRuby - Green Paper

Source: http://manning.com/free/green_carrero.html

Posted at Thursday, August 28, 2008 2:12:28 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

Dana Coffey created a list of 25 tools you might also helpful. Nice list, though.

"With traveling and use of many different computers, many geeks (and geek girls) often find a need to have a uniform set of tools handy wherever we may be. I've put together a list of 25 invaluable portable apps that can be installed on an Ipod or Thumb Drive. These are really cool!"

Posted at Tuesday, August 26, 2008 5:57:53 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

Since Photosynth was announced the very first time, I was keen to try out this technology. Finally, Photosynth became public and you can create your own synths.

After installing the Browser plug-in you select "Create your Synth" on the Photosynth Web site.

Microsoft Live Labs - Photosynth

To sign in you'll need a Windows Live account - probably you have a messenger account. You'll start a synth by selecting a set of photos.

Photosynth - Start new synth dialog

The dialog is quite self-evident. Don't forget to select the license you want to use for the synth. That's quite important as each and every synth is public available.

Photosynth - Create synth dialog

Select "Synth" and then just wait... 

Photosynth - Generating synth dialog

You'll probably get a good "synthy" rate.

Photosynth - Synth completed dialog

And that's what you finally get:

Source: http://www.photosynth.net/

Posted at Monday, August 25, 2008 12:52:41 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

If you are not sure if a DGS instance provides a certain extension, just have a look at the metadata of the service, e.g. http://www.restful.ws/datagridservice/meta. You will find the all the available extensions with the predicate http://www.webcomposition.net/2008"02/dgs/meta/extension (we say "has extension"). In the example below we find the SA-REST extension I have introduced yesterday.

  1: <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  2:          xmlns:ns="http://purl.org/dc/elements/1.1/" 
  3:          xmlns:crud="http://www.webcomposition.net/2008/02/dgs/crud#" 
  4:          xmlns:meta="http://www.webcomposition.net/2008/02/dgs/meta/" 
  5:          xmlns:sarest="http://lsdis.cs.uga.edu/SAREST#">
  6:   <rdf:Description rdf:about="http://www.restful.ws/DataGridService">
  7:     <!-- ... -->
  8:       <meta:extension>WebComposition.Dgs.Extensions.SaRest.SaRestHandler</meta:extension>
  9:     <!-- ... -->
 10:   </rdf:Description>
 11: <rdf:RDF>
Posted at Wednesday, August 20, 2008 10:05:31 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

[vsr]The last few evenings I spend writing an extension concept for the WebComposition/DGS approach. Initially, I was looking for a semantic description for the RESTful interface of the DGS. There are plenty approaches and a lot of research is going on for extending the WSDL interfaces with semantics. OWL-S and WSMO might be the most important examples within this field. However, it appears to be a bit more tricky for REST-driven approaches. For the DGS, I decided to try the SA-REST approach of the Kno.e.sis Services Science Lab of the Wright State University, Ohio.

However, I did not want to make this as a internal component of the DGS as is a research project, and no recommendation or standard is out there yet. So I came along with the extension concept of the DGS that allows dynamically loading of additional extensions in addition to the core components of the DGS.

The IExtension interface provides hotspots were own code can be executed right before and after one of the CRUD (Create, Read, Update, Delete) events.

  1: namespace WebComposition.Dgs.Extension
  2: {
  3:     public interface IExtension
  4:     {
  5:         bool CreateStartUp(ref ExecutionContext context);
  6:         bool CreateTearDown(ref ExecutionContext context);
  7:         bool ReadStartUp(ref ExecutionContext context);
  8:         //...
  9:     }
 10: }

The ExecutionContext contains the request URI, the corresponding data adapter and (if already available)  the current content to be returned with the response.

The extension can modify or create the content to be returned. In this case the return value must be set to false. Returning this dirty flag the DGS knows that the extension provided a new content to be returned. Any further internal functionality by the DGS is thus skipped and the newly provided content from the extension is returned.

To keep the WebComposition/DGS approach as flexible as possible, extensions can be deployed at runtime. The DGS is instructed to use extension by specifying them within the web.config file.

  1: <webComposition>
  2:     <dataGridService>
  3:     <extensions>          
  4:         <extension type="WebComposition.Dgs.Extensions.SaRest.SaRestHandler, 
  5:                    WebComposition.Dgs.Extensions.SaRest, 
  6:                    Version=1.0.0.0, 
  7:                    Culture=neutral, 
  8:                    PublicKeyToken=null" />            
  9:       </extensions> 
 10:       ...
 11:     </dataGridService>
 12: </webComposition>

Based in this extension mechanism I created my very first extension to provide SA-REST support. If you have a closer look to SA-REST you might realize a drawback of the approach (one that is directly related to the REST principles). When using RDFa or any other microformat in HTML/XHTML the description of the service is rather static. The DGS on the other hand provides a highly flexible solution. Here, the full power of the DGS turn up. Analyzing the SA-REST annotation you will realize that you have RDF triples, e.g. metadata. This metadata can be stored within the DGS of course.

If we have a closer look on this metadata we can add this metadata by performing an updated on your service's meta URI. In my case it is http://localhost/datagridservice/DataGridService/meta.  Below we use some RDF based on the originally SA-REST example.

  1: <rdf:Description rdf:about="http://localhost/datagridservice/DataGridService">
  2:     <SAREST:input rdf:resource="http://lsdis.cs.uga.edu/ont.owl#Location_Query" />
  3:     <SAREST:output rdf:resource="http://lsdis.cs.uga.edu/ont.owl#Location" />
  4:     <SAREST:action>HTTP GET</SAREST:action>
  5:     <SAREST:lifting rdf:resource="http://www.restful.ws/lifting.xsl" />
  6:     <SAREST:lowering rdf:resource="http://www.restful.ws/lowering.xsl" />
  7:     <SAREST:operation rdf:resource="http://lsdis.cs.uga.edu/ont.owl#Location_Search" />
  8: </rdf:Description>

The SA-REST extension now extends the URI scope of the DGS - which is actually a very cool feature. Once deployed, the /meta scope is extended with /meta/sarest. If you now perform a GET request to http://localhost/datagridservice/DataGridService/meta/sarest. The extension will return the corresponding SA-REST metadata we used above.

To round up this exercise I've also created a set of XSL transformations that create XHTML to be used within any Web page. E.g. the SA-REST annotation mixed with the content, again based on the original SA-REST example, would look like below. Keep in mind, the XHTML snippet you see here was dynamically created by the DGS itself using a transformation.

  1: <p about="http://localhost/datagridservice/DataGridService" xmlns="http://www.w3.org/1999/xhtml" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sarest="http://lsdis.cs.uga.edu/SAREST#">
  2:     The logical input of this service is an
  3:     <span property="sarest:input">http://lsdis.cs.uga.edu/ont.owl#Location_Query</span>
  4:     object. The logical output of this service is a list of
  5:     <span property="sarest:output">http://lsdis.cs.uga.edu/ont.owl#Location</span>
  6:     objects. This service should be invoked using an
  7:     <span property="sarest:action">HTTP GET</span>
  8:     request.
  9:     <meta property="sarest:lifting" content="http://www.restful.ws/lifting.xsl" />
 10:     <meta property="sarest:lowering" content="http://www.restful.ws/lowering.xsl" />
 11:     <meta property="sarest:operation" content="http://lsdis.cs.uga.edu/ont.owl#Location_Search" />
 12: </p>

The extension concept allows to add new custom components and to customize the DGS even more while the SA-REST extension provides a very first capability to describe the DGS' RESTful interface in a semantic way.

I am going to do a second proof of concept using another approach describing RESTful services soon to show the flexibility of the extension concept.

Posted at Tuesday, August 19, 2008 9:51:05 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

Amer Gerzic created a great plug-in to format source code while writing a post in Windows  Live Writer.

Insert Source Code...

You simply paste the code into the plug-in Window, specify the appearance of the code snippet.

Source Code Formatter 

He supports a wide range of languages within this plug-in which makes it so interesting. Currently supported languages are ASPX, C, C#, C++, COBOL, Cold Fusion, CSS, Eiffel, Fortran, Haskell, Java, JavaScript, JScript, Mercury, MSIL, Pascal, Perl, PHP, Python, Ruby, SQL, Visual Basic, Visual Basic Script, XML.

Posted at Sunday, August 17, 2008 1:25:12 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 
Copyright © 1995-2009 by Andreas Heil. aheil is a registered trademark of Andreas Heil. All rights reserved.
The opinions expressed herein are my own personal opinions and do not represent my employers' views in any way. Content and thoughts expressed on these pages and the weblog are subject to be changed. Out of date posts should not be considererd as my current thoughts and opinions.