Friday, December 19, 2008

Using Windows Live Writer to Post !!!

This is my first test using Windows Live Writer. I know, it took me some time to get to this, but it was just a matter of time. So configuring Writer to hit my blog on Google’s BlogSpot was straight forward. The nice thing is that I can see how my post will look like while I’m writing it and I have all the editing tools I’m used too in the Writer UI, plus a lot more flexibility to format my text and media elements.

I like the experience of using Writer and I think I’ll continue to use it at least when I’m on one of my computers.

I’ll keep posting more on this while I discover more cool features of the tool.

Got to run now, so catch you later.


Friday, November 21, 2008

Validating URIs in C#

I wanted to share a quick tip on how to validate if a given URI is well formed. Normally this will work in the case you want to make sure the URI you are passing is well formed, although it won't validate if the URI is not broken. This is very useful for making URI validations, especially when you are working with Silverlight image controls when setting the sources by code.

Let's say we are receiving the uriString as a parameter and we want to assign that string URI to an image control's source property. What we need to use is the Uri.IsWellFormedUriString(string uriString, UriKind uriKind) which will check that the URI is well formed and that it doesn't required further scaping:

public void SetImageSource(String uriString)
if (Uri.IsWellFormedUriString(uriString, UriKind.Absolute))
this.Thumbnail.Source = new BitmapImage(new Uri(uriString));

Then you can use the "else" block to set the thubmnail image of our control to a default well formed URI.

Hope it is useful for you.

Thursday, November 20, 2008

Windows Communication Foundation Overview

I have been working with Windows Communication Foundation (WCF) for a while now, but I haven't published anything related to it on my blog recently. There are really cool and useful features in WCF 3.5 and I have been also researching about WCF duplex communication paradigm especially for Silverlight 2 applications. But before I get into advanced stuff, I think it would be good to write an overview of this Microsoft technology.

What is Windows Communication Foundation?
  • Windows Communication Foundation (WCF) is a secure, reliable, and scalable messaging platform for the .NET Framework 3.0.
  • WCF is an integrated Microsoft solution for the existing suite of .NET distributed technologies like .NET Remoting, ASP .NET Web Services, MSMQ, COM+ and WSE into a single programming model.
  • With WCF, SOAP messages can be transmitted over a variety of supported protocols including IPC (named pipes), TCP, HTTP and MSMQ.

What are the WCF Characteristics and Benefits?
  • Provides a single programming model (Service Model).
  • Provides a runtime for your services.
  • Service oriented solution for distributed systems.
  • Focused on interoperability.
  • Provides Isolation
  • Secure.
  • Reliable.
  • Simplified.
  • Flexible.
  • Extensible.

WCF requirements?
  • Requires .NET 2.0 Framework.
  • WCF is part of the .NET 3.0 Framework.
  • Visual Studio 2008
  • .NET Framework 3.5 for Silverlight and LINQ best support

WCF Main Components:
  1. Service Contract
  2. Data Contract
  3. Message Contract
  4. Endpoint

WCF Communication Workflow:

Services expose one or more endpoints where messages can be sent. Each endpoint consists of an address, a binding, and a contract. The address specifies where to send messages. The binding describes how to send messages. The contract describes what the messages contain.

Clients need to know this information before they can access a service. Services can package up endpoint descriptions to share with clients, typically by using Web Services Description Language (WSDL). Then clients can use the provided service description to generate code within their environment capable of sending and receiving the proper messages.

1. Service Contract: You model service contracts in .NET using traditional C# interface definitions. You can use any .NET interface as a starting point.To make this a WCF service contract, you must annotate the interface itself with [ServiceContract] and each operation you want to expose with [OperationContract]. These attributes influence the mapping between the worlds of .NET and SOAP. WCF uses the information found in the service contract to perform dispatching and serialization.

public interface IUserManager
bool AddUser (User user);

Dispatching is the process of deciding which method to call for an incoming SOAP message.
Serialization is the process of mapping between the data found in a SOAP message and the corresponding .NET objects used in the method invocation. This mapping is controlled by an operation's data contract.

WCF dispatches based on the message action. Each method in a service contract is automatically assigned an action value based on the service namespace and method name. You can customize the action value for each method using [OperationContract]. A value of * can be used for any action when a specific match doesn't exist.

2. Data Contract: The data contract is defined by the types used in the method signature. The way WCF serializes .NET classes depends on the serialization engine in use. The default serialization engine is known as DataContract, a simplified version of XmlSerializer, the default serialization engine used in ASMX today. DataContract defines attributes for annotating class definitions to influence the serialization process. With DataContract, only fields marked with DataMember will be serialized. And you can serialize private fields.

public class User
string username;
string password;

You can control the name of each element, the order, and whether a particular element is required, but that's about it. If you need to do anything more sophisticated, WCF lets you fall back to using XmlSerializer. You indicate your desire to use XmlSerializer by annotating the interface with [XmlSerializerFormat]

WCF also supports serializing types marked with [Serializable], which allows .NET remoting types to work with WCF without change. WCF provides an implicit mapping for [Serializable] types where all public/private fields are automatically serialized.

3. Message Contract:If you need to support headers, you can write another class that models the structure of the entire SOAP envelope for the particular operation, specifying which fields map to headers versus the body.You define this mapping with the [MessageContract] attributes [MessageHeader] and [MessageBody]

Using MessageContract is a more advanced technique that is only necessary when you need direct control over the SOAP contract. In normal cases you shouldn't have to touch the messages. But in some cases it becomes necessary. For example, assuming that your service will provide a File Upload operation. Unfortunetly, when using Streams, our operation can not take other parameters. So we cannot tell the fileName to our operation when uploading a file. You may always create two operations, one for setting the fileName, and the other one for uploading the file, but this is not a good solution. In order to solve this problem we will need to create a new message.

public class FileMessage
public string fileName;

public Stream stream;

Our message class needs to have the MessageContract attribute. Since WCF only allows the Stream in message body, we are keeping the fileName in message headers. To keep a data in message header we are using the MessageHeader attribute, and to keep a data in message body we are using the MessageBody attribute.

4. Endpoint: The ServiceHost class gives you direct control over the WCF hosting infrastructure. You instantiate ServiceHost based on a particular service type. In addition to specifying the service type, you also specify the base addresses for the different transports you plan to use. This will be used as the base for any relative HTTP addresses I might specify when adding endpoints. The base HTTP address is also used as the default for retrieving the service description.

You then add the service endpoints. Again, a service may have one or more endpoints and each endpoint consists of an address, a binding, and a contract. You provide this information to your ServiceHost by calling AddServiceEndpoint. This is where you specify the service contract you defined.

For the binding, you typically choose from one of the many predefined bindings that ship with WCF and an appropriate address given the binding's transport.

<endpoint address = "xml"
= "xmlBehavior"
= "webHttpBinding"
= "WCFMSDemo.IPeopleManager" />

Hardcoding endpoint information into the host application is not ideal since endpoint details may change over time. WCF automatically provides this functionality through the predefined configuration section. This increases deployment flexibility since the communication details are completely factored out of the compiled code. You can also configure bindings within . You can even define new custom bindings from scratch using the element, which would be equivalent to deriving a new class from Binding. When it comes to configuring endpoints, bindings, and even behaviors, anything you can do in code, you can also do through configuration

Hardcoding endpoint information into client code is also less than ideal.
So WCF provides a similar configuration mechanism for specifying client endpoints within . The application configuration file specifies the same client endpoint details used in the code.

Now when you want to create a ChannelFactory for the TCP endpoint, you can simply change the configuration name to tcpEndpoint. You can also configure bindings in the client configuration file just like is done in the service configuration file.

If you add this configuration file to the client console application, comment out the code to create the ServiceEndpoint objects, and specify the endpoint names when constructing each ChannelFactory, the result will be the same.

Hope this gives you a nice overview about WCF, what it is, what are its characteristics and benefits and what are the main components and what are their purpose. I hope to be posting more advanced stuff about it soon. Let me know if you have any questions about this and I'll do my best to help you.

Happy WCF!

Visual Studio Code Metrics Overview

As a developer I have always care about the quality of the code I write. But generally the quality of your code you think you are implementing will depend on the level of expertise you have and how important are best practices, standards and naming conventions. When you work with other experienced developers you will always find that code varies from developer to developer, and although the code can be different and use different coding practices it doesn't necessarily means that the code quality is better or worst.

In Visual Studio Team System 2008 you have a great tool for analyzing your own code or even the other developer's code in an objective way. This tool is called Code Metrics and is pretty easy to use and understand.

First of all, let's understand the different metrics the tool uses:

  • Maintainability Index: Calculates an index value between 0 and 100 that represents the relative ease of maintaining the code. A high value means better maintainability. The calculation is based on the Halstead Volume, Cyclomatic Complexity and Lines of Code. Color coded ratings can be used to quickly identify trouble spots in your code. A green rating is between 20 and 100 and indicates that the code has good maintainability. A yellow rating is between 10 and 19 and indicates that the code is moderately maintainable. A red rating is a rating between 0 and 9 and indicates low maintainability.
  • Cyclomatic Complexity: Measures the structural complexity of the code. It is created by calculating the number of different code paths in the flow of the program such as if blocks, switch cases, and do, while, foreach and for loops then adding 1 to the total. A program that has complex control flow will require more unit tests to achieve good code coverage and will be less maintainable.
  • Depth of Inheritance: Indicates the number of class definitions that extend to the root of the class hierarchy. The deeper the hierarchy the more difficult it might be to understand where particular methods and fields are defined or/and redefined. At the class level the number is created by calculating the number of types that are above the type in the inheritance tree starting from 0 and excludes interfaces. At the namespace and project level the calculation consists of the highest Depth of Inheritance calculation of all of the types within the namespace or project.
  • Class Coupling: Measures the coupling to unique classes through parameters, local variables, return types, method calls, generic or template instantiations, base classes, interface implementations, fields that are defined on external types, and attribute decoration. The calculation excludes primitive and built-in types such as int32, string and object. Good software design dictates that types and methods should have high cohesion and low coupling. High coupling indicates a design that is difficult to reuse and maintain because of its many interdependencies on other types.
  • Lines of Code: Indicates the approximate number of lines in the code. The count is based on the IL code and is therefore not the exact number of lines in the source code file. The calculation excludes white space, comments, braces and the declarations of members, types and namespaces. A very high count might indicate that a type or method is trying to do too much work and should be split up. It might also indicate that the type or method might be difficult to maintain.
Once you are clear of what each metric means and how it is measured you can run and use code metrics to see how healthy is your project code.
To get started with code metrics, you'll need to have either Visual Studio 2008 Team System Development Edition or Team Suite.

Open Visual Studio, and then open the project you want to calculate code metrics against. After you open the project, in Solution Explorer, right-click on the project or solution, and select Calculate Code Metrics. The time it takes to calculate the metrics will depend on the size of your project. Once it's done, it will open the Code Metrics Results window. The window is pretty straight forward on showing you the analysis results for each metric used. It also gives you a quick reference on how healthy your application code is. With this tool you can filter the results by max and min values, add, remove or rearrange columns in the results window, copy results to the clipboard, export results to excel or create work items based on the results.
For this post I calculated the code metrics of a trading small applications I have using WCF duplex communication. The window looks like the following:
As you can see the application code looks healthy. When you perform your tests make sure everything looks right, since letting pass bad code metrics will result in a very expensive maintainability process.

Hope this is useful information for the readers.


Wednesday, November 19, 2008

DevConnections 08 Day 2

1. Introduction to the ASP.NET MVC Framework – Markus Egger, EPS Software Corporation

Not a very high level talk but good enough to reinforce the basics about the MVC framework. Along with Hanselman’s talk, they emphasized a lot about ASP.NET being greater than WebForms and not synonymous, as many people thought in the past. So ASP.NET contains WebForms and MVC and they can even be mixed together. Egger presented a few examples of when you should use MVC, and that WebForms isn’t going anyware and that it’s going to keep growing. He also implemented a couple of code samples and showed how the calls where routed to the controllers and how to modify them.

2. Language Integrated Query (LINQ) – Dave Sussman, IPONA LTD

I was expecting this presentation to have a higher level and learn some deep stuff about LINQ, but it was pretty much covering the basics behind how LINQ works and how to take advantage of its features. Sussman talked about how to use SQL not only for SQL, but for objects and XML. He covered a little about query expressions, lambda expressions, type inference, anonymous types and object initializers. He also talked about extension methods with LINQ and its benefits.

3. User Controls and Custom Controls in WPF – Dino Esposito, IDESIGN, INC.

Very basic talk about WPF controls and how user controls differentiate from custom controls. Again, disappointing because after having WPF around for a couple of years and having many development being done already, I was hoping to see advanced stuff about it, but instead it was the most basic overview about the different types of controls (containers, lists, text controls) and how to modify themes and templates to create custom controls. Honestly, I was hoping this was way over, and that people were already more familiar with WPF. I guess that since the conference was more focused on enterprise business solutions, the crowd was less familiar with “new” technologies. Dino also talked about the XAML and controls differences between Silverlight and WPF.

Anyway, here are some of my notes about what he presented:
Content Controls: constrained to contain a single item, although that item can be a full hierarchy of controls (Tab Control).
Item Controls: contain a collection of arbitrary controls.
Range Controls: numeric value in a range that doesn’t support arbitrary content (slider, progress bar).
Text Controls: interactive controls for text (like the SpeelCheckEnabled property of text controls)

Regarding styles and templates he talked about the two types of templates: Control Templates and Data Templates. About the last ones he remarked that they change the rendering of non UI elements. They are defined in the resources and also to use content presenter to bind properties. (Nothing we didn’t knew already).

Regarding User Controls he said that the need for a custom control should be based on the API you want and not on the appearance, because you already have styles and templates for that. You should also have present that they will have limited need for reuse, styling and theming.

4. Data Access with Silverlight 2 – John Papa, ASPSOFT

This presentation was one of the best ones in the conference. Papa is a really smart guy with a lot of experience with ASP.NET, WPF and Silverlight, so his presentation was on a good level, organized and well oriented. He talked about the different ways to retrieve data in Silverlight using bindings and presented a lot of running examples about it. At the end of the presentation I went to meet him (very cool guy) and he talked about having several silverlight controls on the same ASP.NET vs having a single control in ASP.NET. He was more inclined for the second option. Make sure to check out his site.

He started talking a little about when to use LINQ: To objects, to JSon, to XML, to SQL and to entities, and then talked about manual binding vs. declarative binding and how the latest can save you lots of work and be less prone to error.

He defined two rules for XAML binding:

• #1: the target of data binding must be a framework element (most of the cases)

• #2: the target property of the data binding must be a dependency property (dependency properties keep popping out everywhere).

On the demos he was showing he was demonstrating how to set the data context at the container control level and then how easy it was to just specify the properties in the child control bindings and how this helps on the designer-developer workflow since a Blend designer can receive the list of properties from the developer, bind them to the controls without having the actual object in place.

He talked about the different binding types: OneTime, OneWay and TwoWay binding depending on the functionality you want for your application. He remarked that objects must implement the INotificable interface in order to be able to receive notifications when the property changes. I know this is now new, but the way he explained with code samples was simple and concrete. He also mentioned the INotifyCollectionChanged which notifies when a list of content information changes. He also said that ObservableCollection generic can be used.

We now jumped on how to consume data services. You know have REST, SOAP/WS, RSS/ATOM JSON and POX. He remarked how easy and robust was to build data services with WCF using the Silverlight Enabled WCF template. He explained the two types of cross domain files that you can find: ClientAccessPolicy.xml which is the one for Silverlight, and the CrossDomain.xml which is the one that you will find in most cases. If the SL app cannot find the first one, it will look for the second one.

DevConnections 08 Day 1

1. KeyNote – Scott Guthrie, Microsoft
Scott Gu’s keynote wasn’t exactly impressive, since there weren’t surprising release news or anything like that (all that happened during PDC2008 a couple of weeks ago) but it was good to see him and get to meet him too.

During his presentation he talked a lot about ASP.NET MVC Framework and its enhancements for Visual Studio regarding the project templates. Unit Testing improvements, ASP.NET enhancements, CSS2 support, Master Pages optimizations were some of the topics he touched. He also remarked on the future capabilities of VS2010 for working with ASP.NET (WebForms and MVC). He also talked a little about Silverlight and presented six successful applications, and two of them were Schematic projects: NBCOlympics08 and Library of Congress, so that was pretty cool.

After the presentation I went to meet him and talk a little. He said that next version of Blend is going to support TFS connectivity and that the workflow between Blend and Visual Studio is going to be improved on the next versions. Visual Studio 2010 will have many improvements on the visual designer for XAML pages, so that’s great. He also said they were working very hard on making the integration between Silverlight and MVC as seamless as possible.

2. Visual Studio Team System: Soup to Nuts – Doug Seven, Microsoft
This presentation was pretty much covering the features of Visual Studio Team System and the differences with other Visual Studio versions. He covered Work Items, Documents, Reports and builds but he hadn’t enough time to present advanced techniques of higher level tools. He remarked the traceability enhancements that VSTS offers for large development teams with the source control and work items features. He said that they know that PM’s and people outside the .NET development teams have a hard time getting used to VS, so that in the future we could expect lots of improvements for Team Access and on the Team Project site that VSTS generates when creating a new team project. He mentioned also more integration between VSTS and Office applications like excel, which is already there but it is going to be enhanced. He also mentioned new enhancements for Agile Development templates, although he didn’t went into details. Regarding VSTS 2010 he showed a nice tool for previewing refactoring changes, so you can know exactly how the changes are going to look and what files and classes are going to be affected.

After that he went into details regarding the Data Base features showing how to make schema comparison between local and remote database versions, and that we will be able to use Unit Testing for the data base. One of the features he remarked was the data generation tools for testing with “almost real” data. At the end he pointed out that the next VSTS version will have heavy enhancements for testers.

3.Silverlight Controls, From Soup to Nuts – Jesse Liberty, Microsoft
This one was a disappointing one. I knew that Jesse Liberty is not that good just by looking at his tutorials on the Silverlight web site, but I was hoping to see something cool or learn a couple of tricks. The truth is that we are beyond the level of this conference, and what he exposed was very basic, pretty much how to use silverlight controls and change their styles and templates, something that I believe we all know how to do, and do it better than it was demonstrated.

4. ASP.NET MVC: So what? – Scott Hanselman, Microsoft
This one was a great presentation. He clarified a lot of confusing points about ASP.NET MVC framework and he is also a great speaker so this one was fun and interesting. The most important thing to remember about this one is that he made a lot of emphasis about ASP.NET being greater than WebForms or MVC, so they are all part and contained by ASP.NET. The key is to learn and to think about how to mix things like this inside ASP.NET. For example you could have ASP.NET applications that combine WebForms, MVC and Silverlight. He also mentioned that ASP.NET MVC will have full support for JQuery since Microsoft if fully supporting it.

Hanselman showed a couple of demos showing how MVC routes the requests hiding the URL details of each call, so the URLs remain friendly. MVC is contained in the System.Web.MVC namespace, so we know for sure that this thing is going to last since it has been included in the System.Web namespace.

There were three main concepts remarked about MVC: it is flexible, since you can rewrite or swap any part you want (like writing your own controllers). It promotes dry code (not having redundancy and duplication of code) and it uses HTTP handlers (he did a demonstration following the call stack to show how the calls are being made) meaning that MVC is playing by the rules, no magic behind the scenes.

Regarding MVC views he showed a couple of code samples on how you can chose to not specify a view and how it is going to try to return the view with the same name of the method, not caring or getting confused by extensions. On the other side, you can specify the exact view you want returned no matter the method’s name. I really think that the more we get familiar with MVC the better since Microsoft is putting so much attention on this.

5. Rest in WCF 3.5 – Rob Bagby, Microsoft
This was a good presentation too, and I was really interested since I have been researching a lot about WCF and more recently the WCF 3.5 capabilities for implementing RESTfull applications. This is his site.

He first talked about the Content Driven Web Architecture that has been the one followed in the past, where you had the browser, the URI’s, HTML, Hyperlinks and HTTP GET basically. He remarked that today’s web is equal to content plus capabilities. Then he switched to what he believes is the today’s web architecture: Capability-Enabled Web Architecture where you have rich browser clients, HTTP, domain neutral data oriented formats like JSon and ATOM, and presentation formats (HTML, CSS, XML).

He mentioned that web developers should retake the HTTP status codes (200, 201, 500, 404, etc) which are the simplest and most known error handling codes. This is something that REST architecture concepts also emphasize on. He pointed out that REST is an architecture or style of development and that this means that there’s always to be a debate around it.

Regarding code demonstrations, he showed how to create a RESTful applications with WCF 3.5 using Low Rest concepts, meaning that he was specifying a lot by code using attributes to set base addresses and names for the methods to call throw HTTP, and also using the application configuration file to define the services endpoints. Then he showed a similar demo using High REST concepts, which included the use of the REST STARTER KIT which gives you some factory namespaces for this type of applications. If you use the factory then the configuration happen behind the scenes and the configuration file endpoint sections are no longer needed unless you need to specify different bindings for the same service.

DevConnections 08

Last week I was in Las Vegas attending to the DevConnections 08 conference at the Mandalay Bay Hotel. I must say that I was expecting more cutting edge presentations and crowd, but instead people where more from the enterprise business solutions industry. However I got to see some really interesting presentations, specially John Papa's Data Access with Silverlight 2 presentation and also Scott Guthrie's keynote where he mentioned six successful Silverlight 2 projects and two of them were made by Schematic, so that was really cool. The Gu is a really nice person and I got to meet him and talk to him about the future enhancements of the Blend/VS workflow and VS2010.

I remained manly on the VisualStudio&Architects and the ASP.NET tracks, although there where tracks for SQL, SharePoint, Exchange and Windows. In my case, the VS and ASP tracks where the more compelling to me.

There were a lot of remarks about the new ASP.NET MVC framework and how to integrate it with other ASP.NET components and technologies and also with WFC and Silverlight 2. There was also a few presentations talking and demonstrating how to build RESTful services with WCF and Silverlight 2, so there's a lot of interesting things coming and it seems that integration of the Microsoft technologies is a big deal this days.

Anyway, this post is just introductory, I'm going to do a couple of posts with the summaries of the two days I was at the conference.


Presenting at the Microsoft eXpert RoadShow ‘08

Microsoft Multi Americas invited me to present at their eXpert RoadShow 08 this year. The event happens in different countries all around Latin América, although I'll be presenting only in Costa Rica.

I will be talking about the most recent cool technologies for the Next Generation Technologies session. This year's conference will be focused on building solutions for a case study, so people will get a more real sense on how this technologies can be applied.

If you are in Costa Rica, go ahead and register yourself. This event will be a good one and there will be many experts from different countries and industries.

Here is the schedule for the Costa Rica presentations:

San Carlos

Where Auditorio TEC, San Carlos
WhenDec 3rd, 2pm
WhateXperts Roadshow


WherePlaza Bratsi, Heredia, 200 norte del Paseo de la Flores, Contiguo a la Universal
WhenDec 4th, 2pm
WhateXperts Roadshow


WhereUniversidad de Costa Rica, Sede Puntarenas
WhenDec 5th, 2pm
WhateXperts Roadshow

Hope you can join us!

TIC-LatinFest 2008 Conference

I'm writing this post a little bit late since I have been really busy working on the latest WPF projects. I also went to the DevConnections conference last week in Las Vegas, so I have been quite busy for writing on the blog.

However I didn't want to miss the change to mention that I was invited to speak at the TIC-LatinFest 2008 Conference and Job Fair at the Universidad Latina de Costa Rica. The Fair was well organized having companies like Intel, Dell, and ManPower over there.

I gave a presentation on Wednesday, November 5 for this event. I talked about how to build scalable, flexible, reliable and perdurable .NET N-Tier applications applying the layer separation concepts and design and architecture best practices. I also presented several demos showing how to code less, reuse more and make your applications flexible enough that changing the presentation layer can be done with very little effort.

I showed a WCF sample and how to deliver the information in different ways without having to modify the service code just by adding [WebGet] attributes and configuring the service endpoints.

I also explained how to use the Microsoft DeepZoom Composer to create a Silverlight 2 photo viewer using the plug-in, Visual Studio 2008 and Expression Blend 2.

The other demo I showed was a WPF one, showing the water year's consumption by month expressed on a graphic 3D interface. Very nice because of the advantages of how to present the information and the interactivity it had with the user.

It was really nice to speak at this event. I got several people in the presentation from the financial industry to the university students.


Monday, October 27, 2008

C# quick overview

I wanted to write down a quick overview about C# with hot facts, so people who are wondering if they should learn or continue learning C# can find some quick and important facts about this language. I took information from some blog post and some other sites listed at the end of the post.

Where did it originate? - A little history

C# development was led by Anders Hejlsberg, one of the architects of Visual J++, Borland Delphi and Turbo Pascal. The primary architects of C# were Peter Golde, Eric Gunnerson, Anders Hejlsberg, Peter Sollichy, and Scott Wiltamuth. Of these, the principal designer of the the C# language was Anders Hejlsberg, a lead architect at Microsoft. Previously, he was a framework designer with experience with Visual J++ (Microsoft's old version of the Java language), Delphi, and Turbo Pascal.

Although Microsoft and its partners set the direction for C#, the standard is maintained by ECMA, the European Computer Manufacturers Association, which also looks after the standards for JScript and JavaScript. Microsoft's partners in submitting the original specification were Hewlett-Packard and Intel. Participants in later versions include IBM, Sun and Novell.

C# debuted in the year 2000 at the Professional Developers Conference (PDC) where Microsoft founder Bill Gates was the keynote speaker. At the same time, Visual Studio .NET was announced.

C# is also an ISO standard language, like Cobol. Both C# and the Common Language Infrastructure (CLI) have been submitted to international standards organizations European Computer Manufacturers Association (ECMA) and International Organization for Standardization (ISO) / International Electrotechnical Commission (IEC).

What's it for?

Microsoft launched C# as "a modern, object-oriented programming language built from the ground up to exploit the power of XML-based web services on the .net platform." As well as suitability for developing software components in distributed environments, C# is "intended to be suitable for writing applications for both hosted and embedded systems, ranging from the very large that use sophisticated operating systems, down to the very small having dedicated functions".

What makes it special?

ECMA's involvement guarantees the continued independence of the language from Microsoft's proprietary control. However, not all features supported by the .net common language infrastructure (CLI) will necessarily be available, as the ECMA C# specification explains: "Although Microsoft's implementation of C# relies on CLI for library and runtime support, other implementations of C# need not, provided they support an alternate way of getting at the minimum CLI features required by this C# standard."

What's coming up?

C# 3.0 was released late in 2007 along with .net 3.5.

Current direction

With the release of Vista, there are important changes to acknowledge. Microsoft modified its path to provide a better separation of the presentation and the backend/logic layers giving designers to focus on the look & feel of the application interface while the developers concentrate on functionality. Microsoft also released the Expression Studio suit providing powerful (although not yet mature) design tools to create interfaces in a similar way than Adobe tools, but producing XAML code behind the scenes so developers don't need to translate or create their own version of the interfaces.

Current technologies following this trend: Windows Presentation Foundation, Silverlight 2, Media Center Applications and Surface.

With this technologies I expect C# skills to become more appreciated in the market since all your current C# skills will be needed for these next generation technologies.

Sources and Must-Check references:

Nick Langley Post
C# Programmers Overview
C# Quick Overview
MSDN Getting Started Site

Happy C#!

Wednesday, October 22, 2008

Google Android Available

I just found out that Android, Goggle's mobile open source platform has been released. You can go to the Android site and check it out over there !!

Ok so first things first: What is Android? Android is the first free, open source, and fully customizable mobile platform (remember, Open Source !!). But Android is not a single piece of hardware; it's a complete, end-to-end software platform that can be adapted to work on any number of hardware configurations. Everything is there, from the bootloader all the way up to the applications. And with an Android device already on the market, it has proven that it has what it takes to truly compete in the mobile arena. Android offers a full stack: an operating system, middleware, and key mobile applications. It also contains a rich set of APIs that allows third-party developers to develop great applications.

So...which is the first Android mobile device? The T-Mobile G1 phone. Check out the T-Mobile page about this phone and play with it a little so you can see what the Android Platform is capable of. And let me share this article from Ars Technica giving you a quick overview about the phone and the platform.

By the way, Android is an effort of Goggle and the Open Handset Alliance !!

So, go ahead, check out the sites and read a little about the phone. In my opinion, since Android is an Open Source project that allows developers to contribute to the source code and give a lot of feedback, I truly believe is going to have a fast growth. Also, having one real mobile device already available in the market will make Android to win (or lose? we will see in the upcoming months) trust very quickly.

Here are some useful sites for you:

Android Home Page
Android Open Source Project
Android Developers Site

Mobile application market is going to grow in the upcoming years. Whether you chose Android, Windows Mobile or Objective-C for IPhone development we will have a lot of room to develop applications in the mobile market.


Tuesday, October 14, 2008

Silverlight 2.0 Released

Hi everybody !!!

As many of you probably already know, Microsoft released today Silverlight 2. This is the final public release version(RTM) and after many months of playing with betas and updates to those betas, finally we have a public RTM version. I believe that Sivlerlight is going to become a great platform for developing next generation RIA applications, and since I'm a .NET architect and developer, Silverlight is a dream technology to start playing with design and interface elements that can make our applications to look cool and actually attract web users all around the world !!! That's right, forget about ugly standard winforms, webforms or awful controls !!!!

Anyway, I know that a few guys have already started to blog about this release and the new cool features and plans for Silverlight, including some good news that are going to be unveiled to the public during PDC 2008, but I still think it is a good idea to do my own contribution and put together some interesting articles and news about this release that will help you to get up to speed on this new final version.

First of all, be sure to visit the MS Silverlight site to get the most recent tools for developing Silverlight 2 applications. You will need the Visual Studio 2008 SP1 and also the Blend 2 SP1 (it seems like MS is getting rid of the dot versioning !! - Blend 2 SP1 instead of Blend 2.5). You will get the service packs for VS and Blend, the new Silverlight 2 templates for Visual Studio and the updated Silverlight 2 SDK. Check out any tutorial or video that might interest you on their site.

Next, check out this cool blog posts regarding new features like the Unit Testing framework which for all top developers, is a great tool to make sure we can test our applications before releasing them into production environments. Here's a short post from Shawn Burke which will serve you as an introduction. You can also check this post from Jeff Wilcox with more detailed info. Make sure to take notes about it and get your hands wet with this framework. You can also find more information at the MSDN site.

Finally, keep track of Scott Guthrie's blog, since you will find the most recent news about Silverlight and many other products and technologies and you will be able to get more info and help from this blog on how to architect and develop your Silverlight 2 applications. This is the specific post regarding Silverlight 2 release.

Another great step on the Silverlight 2 road map is that it seems that there's is a new extended group in Microsoft that will be focusing on creating and delivering Silverlight controls (part of the "Silverlight Control Pack" announced today). There is the rumor of a first round of controls being released during PDC 2008. A list of possible controls is:

* DockPanel
* WrapPanel
* ViewBox
* Label
* HeaderedContentControl
* Expander
* TreeView
* NumericUpDown
* AutoComplete
* Accordion

This is great news !!! This will make our life so much easier. I have been working on an emulation of a TreeView like control (post to come on that) although, if a real TreeView control is going to be released shortly you might prefer to wait for it than take a look at my code :-)

Ok, so be sure to keep track of all the latest news regarding Silverlight and keep track of the post to come on my blog.

Happy Silverlight !!!

Thursday, October 2, 2008

Microsoft Conferences - TEC

Tomorrow I'll be speaking at the ITCR (TEC) which is probably the best tech university in Costa Rica, and one of the best of Latin America.

I'll be focusing on Windows Communication Foundation, which is the integrated communication solution for developing Microsoft service oriented applications following the connectedness universal principle.

The presentation will have an intermediate level, covering all the components of WCF communication workflow and also focusing a bit on duplex communication code samples.

I hope to have many students from the TEC over there, and probable some of my colleagues.

What: Microsoft Conferences 2008
Topic: Cool WCF features for SOA applications
When: Friday, October 3rd, 2008
Time: 4:00 pm (GMT-06:00)
Where: ITCR (TEC), Cartago, Costa Rica


Tuesday, September 23, 2008

Speaking at the MSDN Tour 2008 in Costa Rica

I'm very please to say that I'll be speaking today (September 23rd) at the MSDN Tour 2008 in Costa Rica. The MSDN Tour 2008 in Costa Rica as part of a series of events going on across Latin America this week about all the new and cool Microsoft applications.

I will be presenting about Silverlight 2.0, Windows Presentation Foundation and Live Services and talking about how Microsoft is trying to integrate live and work tech experiences in a seamless way. This is part of the the future of the new Services Platform that Microsoft is empowering as well as their S+S plans based on Mesh and the Live Platform.

I will be exposing some really nice and cool demos I prepared for Silverlight, and also a couple of demos about WPF and Live services prepared by some colleagues of Latinamerica.

To summarize:

When: September 23rd
Where: Microsoft Offices
Time: 2pm - 5pm
Address: Oficentro Plazaa Roble Edificio El Patio 2do Piso Escazú, San José

Hope to see you all over there. Keep smiling, keep coding !

Monday, July 14, 2008

Cool solution for posting source code in your blog

Ok, so I have been looking for a tool or a way of posting source code in my blog without breaking the whole page or making the source code lines a whole mess. There are some possible solutions tweaking the blog HTML and adding CSS, but the solution I liked the most comes from this link. Check it out and hope it solves your source coding blogging problems at least while somebody comes up with a better way or until blogger puts some effort in making the blogging tool better.


WindowsCE works out iPhone sales

It's kind of ironic, but it makes sense. Apple stores needed a robust Point of Sales(POS) solution for their massive sales, including the iPhone sales volume with the new released version. It turns out that the POS machines Apple stores use, which are made by Symbol, use WindowsCE. Funny thast after all, is Microsoft who is running the iPhone sales !!!

From: JKOnTheRun

Read the comments of that post, they are quite interesting !!!


Gamers, be prepared !!!

Microsoft will unveil the new mayor update for DirectX, which is DirectX 11 at the annual XNA Gamefest 2008 conference (which unfourtunately I won't be able to attend). The conference will take place on July 22 and July 23 in Seattle. Check out the XNA conference site and stay tuned with the XNA development!!!


New XBox 360 Editon

I just found out in the Microsoft XBox Site that a new edition of the XBox 360 is going to be available in early August. The Premium XBox 360 Elite will have a 60Gb hard drive for the same price of $449(U.S.).

Now I'm considering to buy it, since with more Gigabytes for storage it makes more sense, although I might wait to see if Microsoft resolves to include a Blue ray DVD on the console. Chek it out !!!

Happy Gamming!!!


Saturday, July 12, 2008

Silverlight 2.0 Controls Bubbling Issues

Recently I was working on some Silverlight 2.0 code examples following the “Controls” tutorial from the silverlight site. First of all, the tutorial was really messy, finding a lot of copy-paste code and a lot of differences between the text and the code that what was actually showed on the tutorial. However those are minor mistakes and the tutorial was easy to follow. The tutorial was about Silverlight 2.0 controls. I was coding using Visual Studio 2008 with the Silverlight 2.0 Beta 2 tools.

Silverlight 2.0 extends the CLR event handling mechanism with RoutedEvents. The defining characteristic of Routed Events is that each event is passed up the Interface Tree in a process known as bubbling (the events are like tiny bubbles rising up from the bottom). However when using Silverlight 2.0 controls, the event is "handled" at the control level and then the bubbling stops. This presents a problem when you have complex UI elements for a control (for example a custom control with different visual behavior, meaning that you have canvas, borders and other UI elements and a Silverlight 2.0 button inside) and you want to capture the “MouseLeftButtonDown” event at the higher level to implement different behaviors, since this event will always be trapped by the button control itself. Let me show you an example (Note: I’m not going to enter into details on the code structure of the example since you can follow the tutorial by yourself and do all the steps and understand how to implement each peace).

Let’s say that we want to have a dragable button on our application. We are going to use a Silverlight 2.0 common button inside a canvas:

In order to attach the event handlers we need to make that button dragable, we need to create and attach the event handlers for the “MouseLeftButtonDown”, “MouseLeftButtonUp” and “MouseMove” in the code behind of our XAML, as follows:

compositeButton.MouseLeftButtonDown += new MouseButtonEventHandler(CompositeButton_MouseLeftButtonDown);
compositeButton.MouseLeftButtonUp += new MouseButtonEventHandler(CompositeButton_MouseLeftButtonUp);
compositeButton.MouseMove += new MouseEventHandler(CompositeButton_MouseMove);

Now that we have our events attached to the canvas UI element (“CompositeButton”), we can implement the drag and drop functionality on those event handlers as follows:

void CompositeButton_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
beginX = e.GetPosition(null).X;
beginY = e.GetPosition(null).Y;
trackingMouseMove = true;
FrameworkElement fe = sender as FrameworkElement;
if (fe != null)

void CompositeButton_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
FrameworkElement fe = sender as FrameworkElement;
if (fe != null)
trackingMouseMove = false;

void CompositeButton_MouseMove(object sender, MouseEventArgs e)
if (trackingMouseMove)
double currentX = e.GetPosition(null).X;
double currentY = e.GetPosition(null).Y;
FrameworkElement fe = sender as FrameworkElement;
if (fe != null)
double canvLeft = Convert.ToDouble(fe.GetValue(Canvas.LeftProperty));
double canvTop = Convert.ToDouble(fe.GetValue(Canvas.TopProperty));

double newLeft = canvLeft + currentX - beginX;
double newTop = canvTop + currentY - beginY;

fe.SetValue(Canvas.LeftProperty, newLeft);
fe.SetValue(Canvas.TopProperty, newTop);

beginX = currentX;
beginY = currentY;

If you run this example, you will notice that the button is not dragable. In fact you will see the button “MouseOver” state and the “MousePressed” state, but it won’t be dragable. The problem is not on the code behind, the issue is that the button is capturing the mouse events and handling them by itself stopping the mouse events to bubble to the canvas element that contains it (the “CompositeButton” canvas element). The solution I was able to find is to place a transparent canvas on top of the button, with the same size, so that when you click the button you are actually clicking the canvas that is on top. Let me show you how the XAML looks like:

As you can see I have declared a canvas after the button with the same width and height and same position as the button itself, but with a transparent background so is not noticeable. When you click on the button, you are actually clicking the canvas, and that’s why now the mouse events are bubbled to the containing canvas (“CompositeButton”). Now the button is dragable!!

This might seem very simple, but the technique can be applied to complex code and UI elements to make sure you are capturing the events and being able to do whatever you need to do without having issues because of the controls blocking or hiding the events from you, even if you are using the Silverlight 2.0 controls.

Happy Silver-coding!!!


Friday, July 11, 2008

PDF is Now ISO Standard

I just found out that the International Organization of Standarization (ISO) has approved the PDF as a standard format for electronic files. PDF stands for Portable Document Format. Adobe submitted the format to ISO for standarization in February 2007. You can read more from the article on the Redmond Developer News web site (article here).

The important thing about this is that from now on there will be more development of PDF readers and more integration with different tools. Adobe Acrobat Reader has been one of the most used PDF readers, which is totally normal since Adobe created the PDF digital document format back in 1993. If you want to learn a little about the ADOBE PDF format check out Wikipedia (article hre).

There are many PDF tools out there that allow you to create, convert or simply view PDF files. Some of them are Sumatra (Windows), Zamzar (Web Based), Skim (MAC) and Foxit Reader (Multi-Platform). If you want to have more references to this tools, check out this wiki page.
I’m sure we will see a lot of improvements and new tools coming out soon, so stay tune !!!


Wednesday, July 9, 2008

Make your ASP.NET web site to serve .MCML pages

When you are working in Windows Media Center Web Hosted application projects you are going to have the need to generate dynamic MCML pages to serve your MCE client applications. MCE web hosted applications retrieve all the MCML pages and the data from the server, rendering all the markup code before displaying it to the user. When you need to serve dynamic generated data, you need to dynamicaly create .mcml pages in the server with the data and make the web site serve those pages to the client.

The problem is that an ASP.NET web server does not serve MCML (.mcml) pages by default. In order to deliver the .mcml pages to the client you need to make the ASP.NET web server to serve the .mcml pages as XML pages (.mcml pages are xml based markup code). The cool thing is that you can extend this approach to make the web server to serve any kind of files you want. For example, for a project we worked on we also needed to serve our custom dynamic data xml pages (.dax) which are xml pages containing dynamicly generated xml data.

To make the ASP.NET web site to serve this new file types, you have to include those file extensions in the web site MIME types.

To add new MIME types on IIS 7 (Vista Machine) follow this steps:

1. Click on the start button, type IIS in the search box. The first result should be the Internet Information Services (IIS) Manager, open it, and the IIS 7 Manager console will appear. Note: if it doesn’t you might need to install the IIS windows features from the control panel (I’ll post how to do it separately).

2. Expand the server tree to web sites and click on your web site from the tree view of the websites, and its options will appear in the center of the window. From the Home options select MIME Types.

3. In the actions pane right click on add.

4. In the File Name Extension field type the name of the file extension (i.e.: “.mcml”) and in the MIME Type field type “text/xml”. This will make the web server to serve the new types as if they were xml files.

5. Done.

To add new MIME types on IIS 6 (Windows Server 2003 Machine) follow this steps:

1. First, to enable Framework Extensions, go to IIS Manager, you can find it in the Start menu, under the Administrative Tools menu, and open it. The IIS 6 manager console will appear. Note: if it doesn’t you might need to install the IIS windows features from the control panel(I’ll post how to do it separately).

2. Browse in the tree view to find the Web Service Extensions.

3. Select .Net Framework 2.0 Extensions and allow those.

4. Now, you need to add the new MIME types to your web site. Expand the contents of your website in the IIS Manager. Find the web folder from where the pages will be served, right click it and go to options.

5. In the Directory tab under Application Settings press the create button that will enable all the files inside to serve as application files, and change the Execute permissions drop down to Scripts Only.

6. After that the configuration button will enable, click it and the application configuration window will appear.

7. Add a new application extension for .mcml using the following values.
• In executable use the following address: \%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
• For Extension: .mcml
• Verbs - use limit to: GET,HEAD,POST,DEBUG
• Script Engine: Checked
• Verify that file exists: Unchecked

8. Press ok to create the Extension then OK again to exit the Application Settings, and finally OK to the UI properties.

9. Add a new application extension for .dax using the following values:
• In executable use the following address: \%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
• For Extension: .dax
• Verbs - use limit to: GET,HEAD,POST,DEBUG
• Script Engine: Checked
• Verify that file exists: Unchecked

10. Press ok to create the Extension then OK again to exit the Application Settings, and finally OK to the UI properties.

11. Open the web.config file of your web site and make sure you specify the handlers for the new MIME types. The “httpHandlers” should be included in the section of the web.config file. Here is an example of the handler for .mcml files: .

12. Done.


Tuesday, July 8, 2008

ASP.NET Simple Cache Implementation

I was working on a Windows Media Center Web Hosted project a few days ago. For this project we were working on, we had the need to save some objects on the server side cache for retrieving them later from the client (Windows Media Center application). Since we needed to save only a couple of objects on the server side cache it didn’t make much sense to implement the whole server side caching structure for caching several pages and information. We needed a quick way to save a couple of objects with the information retrieved from the xml services in the server, avoiding the need to parse the whole xml again each time the client requested the information. The solution was to implement the out of the box ASP.NET native server side cache.

To implement the native ASP.NET cache is really simple (at least for what we needed). We use the Cache.Insert() method to insert the object in the ASP.NET Cache instance. We implemented it using this constructor:

Cache.Insert(String key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration);

As follows:

Cache.Insert("mykeyName", object, null,DateTime.Now.AddMinutes(Double.Parse(System.Configuration.ConfigurationManager.AppSettings["cacheExpirationTime"])), TimeSpan.Zero);

Our object is a list of MyClass instances containing the information we needed to save. Doing this inserts our object in the server side ASP.NET cache for the time we configured in the web.config file.
Now for retrieving the cache object when we needed we followed this implementation:

// Verifying if the object is on cache
List cacheItem = Cache[("mykeyName"] as List;
if (cacheItem != null)
this.myObjectList = cacheItem;

Notice that we are doing a cast to List when we are retrieving the object, so we have the desirable object with the corresponding type it is supposed to be. After that we can check if it is null and perform the tasks we want to.
This is a very out of the box basic implementation, but it solved our needs and might help you on your projects too.

The very cool thing about it is that you can save any object in the ASP.NET cache instance, set the expiration time from the web.config file and retrieved any time you want. The Cache ASP.NET instance has other methods and properties so be sure to check them out.


Thursday, July 3, 2008

I'm Back

Long time without writing!!! I know, this shouldn't be happening, but lately I have been very busy with my projects at Schematic and at other personal projects. I moved in to a new place, I'm working very hard with my music project (expect more news on this) and I have been working in some really cool projects.

I'm currently working on migrating my Silverlight 2.0 projects from Beta 1 to Beta 2. Also researching and working a lot on interactive multi-tier applications improving my skills and knowledge about .NET Architecture and how to optimize integration points with other platforms and technologies.

I have also been playing with LINQ, which I really like and makes my life easier. Windows Media Center and MCML have been on my agenda too, getting to know the technology and markup better and improving my skills with some nice and cool MCML advance coding practices.

I hope I'll be able to post some interesting stuff, articles and code about what I have been working on.

Stay tuned!!!

Thursday, March 13, 2008

Deep Zoom Composer

I have been experimenting a little with a new power toy called Deep Zoom Composer, released by the Microsoft Expression and Design Team. This simple but powerful tool lets you import large scale images, make compositions with them and then exported to a collection of images that you can integrate in your Silverlight 2.0 applications to implement the Deep Zoom technology, which I think is great.

The Deep Zoom Composer tool is super easy to use. It comes with a small user guide with all the information you need to get started. Basically, when you run the tool and create a new project, you have three steps to go through (with some images from the process using the Deep Zoom power toy):

1 - Import: import your images (high resolution and very large images gives you better results)

2 - Compose: make the composition with your imported images. You can make compositions of one or several images.

3 - Export: export the composition to an output directory, so you can then import it to your Silverlight 2.0 Applications. You can export the final output as either a Deep Zoom Image or Collection that can be fed into Silverlight's MutliScaleImage control, which is the one you have to use to implement the deep zoom technology into your app.

I'll make more post regarding the Silverlight 2.0 MultiScaleImage component and the use of Visual Studio 2008 and Expression Blend.

You can also check out the Expression Blend and Design Team Blog at:


Heroes Happen {Here} Microsoft 2008 Conference

Hi all,

The conference went pretty well. We got invited to present our Silverlight 2.0 Beta 1 demo at a press conference with all the Microsoft Latin America Executives and the Costa Rica press. The demo was super simple but with a very nice look and feel. The press was impressed, but I would say that the most excited were the executives.

After the press conference we went to the Web Application Development track were we were going to present. We were the last ones to speak, and although it was getting late and everybody was a little tired, all the people stayed until the last minute.

We spoke about the migration of the desktop experiences to the web through ASP.NET, AJAX, JavaScript and now Silverlight, and the extension to smart and portable devices. I presented the benefits of multi-platform and multi-technology integration with WCF and then my colleague Jose Madriz spoke about a designer-developer workflow approach and the figure of the dev-igner. At the end, Jonathan Ramirez, who works with me too, presented the Silverlight Demo.

I must say that we run a lot with the demo, because on Wednesday, March 5 (the day before) Microsoft announced the release of Silverlight 2.0 Beta 1 at MIX, so we decided to migrate the demo to the released version.

Well I'm glad to have participated at the Heroes Happen {Here} event, which is the biggest and most important Microsoft Event in Costa Rica.

Now we are preparing to give some presentations at the national best universities under the Microsoft Educational Program.

Thanks to Ricardo Jimenez and Alfredo Prahl for their support and for inviting us to participate in this events.

I'll post some of my experience with Silverlight 2.0 Beta very soon.


Tuesday, March 4, 2008

Heroes Happen {Here} Microsoft 2008 Event

I have been invited to speak at the Heroes Happen {Here} Microsoft 2008 Product Launch event in Costa Rica, which will take place on March 6. I'm super happy about it since is my first big Microsoft conference.

I'm going to be presenting several topics about Rich Web Applications, talking about WCF, WPF, Silverlight and several new and cool features of Visual Studio 2008. I'll be presenting with a couple of colleagues: Jose Madriz (Interface Developer) and Jonathan Ramírez (Motion Designer). We will be focusing on the integration possibilities of multiple technologies and platform integration with WCF services, and also remarking the designer-animator-developer workflow approach with the Microsoft Expression tools and Visual Studio 2008.

Hope to see a lot of familiar faces over there, and of course, meet new people and give some of my knowledge to the .NET community in Costa Rica.

Cheers !

Thursday, February 14, 2008

Android SDK Update Released by Google

Google released yesterday the updated Android Software Development Kit (SDK). The version is being called "m5-rc14" according to the Hello Android Blog.

For those of you unfamiliar with Android, here's an extract from Google:

"Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language."

So basically, a platform, Google branded, that allows you to develop mobile applications and services using Java.

The Hello Android Blog highlighted some of the new Android SDK features:

New user interface: As I mentioned when we introduced the m3 version of the Android SDK, we're continuing to refine the UI that's available for Android. m5-rc14 replaces the previous placeholder with a new UI, but as before, work on it is still in-progress.

Layout animations: Developers can now create layout animations for their applications using the capabilities introduced in the android.view.animation package. Check out the LayoutAnimation*.java files in the APIDemos sample code for examples of how this works.

Geo-coding: android.location.Geocoder enables developers to forward and reverse geo-code (i.e. translate an address into a coordinate and vice-versa), and also search for businesses.

New media codecs: The MediaPlayer class has added support for the OGG Vorbis, MIDI, XMF, iMelody, RTTL/RTX, and OTA audio file formats.

Updated Eclipse plug-in: A new version of ADT is available and provides improvements to the Android developer experience. In particular, check out the new Android Manifest editor.

I'm not a great Java programmer, but I must say that Android seems to be a great development platform in the mobile industry, so pull out your dusty Java books, and jump into it. You might even make something really cool, that will end up in a new cell phone :P


Google Android Page
Hello Android Blog
News Blog

Tuesday, February 12, 2008

Yahoo! says No-HOO!

Well, it appears that $45 billion offer is not enough to buy Yahoo!, although Yahoo! has suffered eight consecutive quarters of profit decline. There is a lot of speculation over this company and the possibility of being swallowed by Microsoft in his attempt to regain some of the market that Google, it's online advertisement rival, has being gaining over the last years. It appears that Jerry Yang, co-founder of Yahoo!, and the Yahoo! board will do whatever is possible to remain independent, even if that means to merge with a partner.

We will see what happens in the next months :P


Saturday, February 9, 2008

Google Apps Team Edition Released

I just found that Google Apps Team Edition was released. I haven't use Google Apps a lot, but they have some cool integration between their services. With Google Apps Team Edition you have the same services than before: document, spreadsheet, instant messaging and calendaring, but what this version gives you is an easier way to share the functionality between your organization. You can find a very nice Google Apps Team Edition video at TechChurch.



Friday, February 8, 2008

Yahoo Live Takes First Breath

Lately we have been hearing a lot about Yahoo! And one of the main reasons for Yahoo having so much attention lately is because one of the big elephants made a huge bid to buy it. By now you should be aware that Microsoft wants to buy Yahoo, and is not some little speculated offer at all!!! Microsoft offered $44.6 billion to acquire them. Although many of the Yahoo user groups like in Flicker, do a lot of noise, posts and comments to express their opinion against the transaction, that’s not an offer to refuse without studding it.

Anyways, related to this matter, today I realized that Yahoo launched Yahoo Live, with a set of services and even public APIs for a live streaming video platform. Although this is not the first live streaming video service (you have also services like Stickam,, ustream and blogtv), Yahoo Live has a lot of functionality that may catch your attention.

With Yahoo! Live, all you need to do is create a channel, authorize your webcam and start broadcasting to the public. Other people can drop by and watch, or choose to participate via video, sound or text chat. You can also set up your profile and track how many people have watched them stream live, how many broadcasts they have made, and how long total they’ve been on the air, which is a nice feature for following your channel web traffic and see how many viewers you have. It appears that the platform is not very stable for now, so we will have to wait a little for it to be as reliable as we would like. One annoying experience I had was going to Yahoo Live and check out some of the available broadcasts. I stopped at one that was broadcasting a DJ, but when I got tired of it and I closed the window, the sound of that broadcast remained for a long time (did close the window, but not the explorer). Maybe it is some bug with IE (I was using IE7) or maybe it is because the platform is not that stable right now, but I’m sure they will fix the bugs with some time and get to a stable point where we can take the most of it.

Well hope you check it out, it could be your last time to see Yahoo products (MicroHOO?).


Yahoo Live
TechChurch Article
Flicker Groups Article

Tuesday, January 22, 2008

How to Update to VS2008

I know some of us have been playing with VS2008 Beta2. Now that VS2008 final release is available, you might be considering to update. I found this article that could help you to properly uninstall the Beta and install the final release. Check it out:

It took me quite some time to have the uninstall process done. VS2008 Beta takes a long time to uninstall. Be sure to follow the uninstall process order, or you might end up having a mess or having problems during the VS2008 installation.

The article also show you some cool new features of VS2008, some of them will definitely help you with your coding experience.

Happy coding