Friday, December 18, 2009

TwittZure Showcased at Schematic.com


I'm very proud to announce that TwittZure is being showcased at Schematic.com web site.

TwittZure stated as my little pet project to explore and gain expertise working with Twitter REST APIs and integrating the REST web services with the Windows Azure cloud and a Silverlight 3 platforms. I submitted the project idea to Schematic R&D department and it was approved.

After that, with the help of a designer and an animator, we created a beautiful and engaging user interface and implemented an ASP.NET bridge to take advantages of the Windows Azure cloud server’s high availability and scalability. The application and the middle ASP.NET bridge are being hosted in Windows Azure. Additionally, the application provides in browser and out of browser experiences thanks to the Silverlight 3 out of browser capabilities.

The application is a work in progress and we will be enhancing the application by adding more Twitter features and taking advantages of new Silverlight and Windows Azure features as time allows.

Stay tuned for more news about TwittZure.

Cheers!
-arbbot

Thursday, December 10, 2009

Rock Tico Contra el Cancer Infantil



This saturday I'll be performing with my band "Tercer Mono". For anyone visiting or living in Costa Rica, come see us and enjoy some funky alternative music with us, this coming Saturday, 8:00pm !!

Cheers

Tuesday, November 17, 2009

Schematic Tech Summit 08 at Costa Rica

One more video from Schematic. This one is about the Schematic Tech Summit 08 at Costa Rica.

Schematic Costa Rica Office Inauguration

Check out this video from the Schematic Costa Rica Office official inauguration were I gave a speech for the President of Costa Rica, Costa Rica Government executives and Schematic folks.

Schematic Costa Rica Office Reel

Check out the Schematic Costa Rica Office Reel !!!!

Monday, November 16, 2009

Tech Camp Costa Rica


Today is the Tech Camp Costa Rica, which will be taking place at the "Universidad Latina". The event will be mainly focused on Web Development and Design with the latests y tools and frameworks.

There are a few colleagues of mine that will be presenting. Among them, Marvin Varela, Carlos Zumbado and Karolina Hidalgo will be presenting today. I know that Ricardo Jimenez from Microsoft Costa Rica will be also taling about Silverlight and the Expression Suit.

It seems that the event will be full and fun, and it's great to see people going beyond what the local market is doing and pushing professionals and students to learn new technologies and new techniques for next generation web applications.

Enjoy !!
-arbbot

Wednesday, November 11, 2009

Silverlight Physics Library

I was recently visiting Corey Schuman's blog since he has been focusing on Silverlight + Blend development for a while now. Among his posts I found his Blend section which contains information about behaviors and how to include a recommended Physics Library for Silverlight that allows you to create Physics behaviors by using mostly Blend.

I actually went ahead and watched the "Basics" video and I got so excited about how easy it seemed to play with it that I downloaded and installed the Physics Helper library and started to play with it right away. I can't tell how fun and easy is to start playing with it and actually create something. I'm sure that in order to build useful and more complex stuff you will need to dig deeper and get into the C# code, but I believe the library helps a lot and gives to many tools to start with.

In the CodePlex site for the Physics Helper library you will find information, installation instructions and a few videos that will help you to start playing and building things right away.

Thanks to Corey for the information and I hope you jump right away into Silverlight Physics behaviors after reading this.

Cheers!
-arbbot

VEVO Video Platform



Universal Music Group, in partnership with YouTube, was seeking a strategic partner who could design, execute, and deploy an interactive media platform for premium music video content online. This service, known as VEVO, would generate new revenue streams for content creators, and provide brand advertisers unprecedented access to a highly engaged audience.

UMG selected Possible Worldwide (formerly Schematic) based on the company experience in building best-in-class online video destinations, such as the site for the 2008 Beijing Olympics. Adopting an agile approach to the build, we put together a multi-disciplinary team of 35 people from our offices in New York, Los Angeles and Costa Rica to work with third-party vendors (including Baynote, FreeWheel, YouTube, Vivendi, Crowd Factory, and Parse3) to design, develop, and deploy VEVO in just over 5 months.

In its first three weeks, VEVO pulled in more than 35 million unique visitors, becoming the most visited music network in the US for that month. Blending UMG’s broad catalog of top artists and content with YouTube’s leading edge video technology and user community, it now does for music videos what Hulu has done for television and movie programming online. Sony has also recently signed on to the effort and will contribute music video content from its vast library.

I was co-leading the .NET backend development team in charge of implementing not only the user facing site but also the content administration tool. The work involved a deep level of architecture work to make sure the site was able to scale in time to support the vast amount of user traffic that was foreseen. 

Cheers!

SanDisk Sansa TakeTV + Fanfare Service Memorial


Lately I was going through many of the projects I have worked in the last couple of years. I already did a few posts about some of them (and of course, only the ones that went public and that I can talk about). I mentioned the massive Multi-Touch/Multi-User Schematic Touch Wall presented at the 2009 Cannes Advertisement Festival, and also the PlaySafe ActiveX control prototype that I developed for Sesame Street.

Now I wanted to mention a really cool project I worked on as the Platform Lead and .NET architect that unfortunately was shut down after a few months of being online. That's the TakeTv + Fanfare Content Service SanDisk multi-platform project.


The SanDisk Sansa TakeTV was a USB device that allowed users to download content to their PC, transfer the content to the USB device and then plug it into a dock that was connected to the TV. The device was made by SanDisk, and I worked on the implementation of the Fanfare Content Service, that was a Flex desktop application embedded into a .NET Windows application that connected to a .NET backend service and a content delivery network to retrieve and serve TV content to users.

It was a very cool and complex project, implementing a robust and secure .NET CMS (built in ASP.NET 3.5), a .NET Web Service layer (WCF) to serve the embedded Flex Application and several .NET back-end services that controlled, ingested and published the content online.
The project itself was interesting and innovating, although it wasn't as successful as expected and later it was shut down, it was a very cool prove of concept of SanDisk idea for making the integration between TV and the Web a little more seamless.

You can also check out a short description of the project in the Schematic web site.
Cheers!
-arbbot

Tuesday, November 10, 2009

Schematic Tech Summit

I was visiting one of my colleague’s blog, Pablo Viquez and I found a video about a Tech Summit that Schematic did some time ago. The video is a cool window on how we work and how we achieve compelling cutting edge interactive applications. I'm also on the video and I talk a little about how Schematic integrated and share knowledge among different teams, platforms and offices.

I wanted to post the video here and have it as a reference for the future and of course, share it with the people outside.



Check it out!
-arbbot

Schematic Touch Wall Video

Just wanted to post and share another video about the Schematic Touch Wall that was featured at the Cannes Festival this year. The Schematic Touch Wall is the biggest, most complete Out Of Home Digital Experience ever built, providing massive Multi-Touch Multi-User capabilities, and I'm very proud to have been on of the team members that made it a reality.

Check out the video !!

Behind the scenes of the Schematic multi-touch wall from Serge Jespers on Vimeo.



Cheers!
-arbbot

Schematic Touch Wall

Touchwall Demo from Joel on Vimeo.

This is a post that I should have published a while ago. The reason I'm doing it now is mostly to keep track of the project and the work I did on this amazing project.

The Schematic Touch Wall was actually the first time I worked on such a big "Out of Home" Multi-Touch digital experience. In the past I have worked with WPF, Surface and even Windows 7 Touch capabilities, but the Schematic Touch Wall was by far the most complex and complete Multi-Touch/Multi-User project in my years as a Software Architect.


I'm not going to repeat all the stuff the media has already said about it, so if you want to know more details about the Cannes Festival Touch Wall, the usage and opinion of the public about it, just check what the media has to say about it.


My colleague Marvin Varela was the .NET Platform Lead of the project and I worked with him building all the backend functionality that served the Flex/Flash Multi-Touch UI. Among my tasks, I was in charge of building the Touch Wall CMS for content administration, which I implemented using ASP.NET 3.5. I was also in charge of most of the backend architecture to serve the data (including the Data Access Layer implemented with LINQ, the Business Layer and the Communication Layer built with WCF to serve the Value Data Objects to the Flex/Flash UI). I was also responsible for building the WCF component in charge of synchronizing the Cannes Registration Delegate data with the Touch Wall database, so the Wall could actually display delegate information almost in real time for its users.

Let me say that the Flex/Flash integration was smooth and I learned much from it. Working with talented Flex/Flash developers is great, having all the ActionScript capabilities for the Front-end and the .NET robust back-end services produced a wonderful product.

So, without talking much about it, go ahead and search the web for the Schematic Touch Wall, there's plenty information and success stories around, and I hope to keep working and learning from Out of Home Digital Experiences like this one. Maybe the next one will be build using WPF for the user interface, you never know ;)!

Cheers!
-arbbot

Sesame Street PlaySafe Control


Surfing the web, I visited the Sesame Street web site. A couple of years ago I worked with them on some prototypes for the new site. My job was to build an ActiveX control that could take over the user's browser in full screen mode to disable users from going out of the site. This control was the PlaySafe feature that is currently in place in the Sesame Street web site. The control gives parents the ability to fire up the Play Safe mode, so the kids can't get out of the site by the normal ways we know. The only way to get out is to hit a specific keyboard combination.

The PlaySafe control was probably enhanced afterwards and integrated with their new site, but it was fun to see that the control is currently in place, and I'm proud of saying I was the one who built it in the first place :)

Good memories from Sesame Street in fact, and good to see my control on their web site.

Cheers!
-arbbot

Cross Domain Issues Workaround


In a previous post I talked about a change that the Twitter folks did last week on their cross domain policy. The change restricted all external domains, leaving the access to their Search API open only from their own domains. The cross domain restriction meant that RIAs where no longer able to access the Twitter Search API directly without a proxy server.

Checking their cross domain policy file today, it seems that they changed back, since right now it appears to be allowing access from all external domains. Again, they made the change without letting people know. I don't know about you, but to me it seems that somebody made a mistake on their team, and they made the changes in low profile motion to avoid too many buzz about it or maybe they actually aknowledge the mistake and listened to people developing RIAs against their API and decided to keep allowing the direct access.

Anyway, just in case the keep changing things without letting us know, I wanted to share a work around for their cross domain policy restriction. This work around will work for any other cross domain restriction issues that you might have hitting other site’s APIs.

Application Background:


The application I'm working on is a Silverlight 3 application that is being hosted on an ASP.NET web project. This "first phase" is just a simple Twitter Search client where users can enter a search term and retrieve twitter posts containing the term entered by the user. The app will include much more functionality, but for this post, that's pretty much the background you need to understand what I'm trying to accomplish.


Alternative Approaches:

My first idea was to actually build a middle tier WCF service application that will take care of all the Twitter API communication and serve my Silverlight 3 app. This is still an approach I want to follow since is a lot more robust and can provide a lot more functionality, like data parsing, data storage, catching and a better fault control. It will also help me to make the Silverlight app smaller and thinner, which is always good for client side apps if you have a robust server than can handle the work load on the backend side. This is what you need to keep in mind, you need to have a server that can host your middle tier and handle the work load without issues, or your app is going to stop being responsive when having lots of users at the same time.

However, talking again with my colleagues Steve Rettinger, he suggested implementing a call forward to an ASP page, just as a prove of concept to make sure the work around actually worked.

The Workaround:

Ok, so let’s get into some code details. First of all I'm using a subject/subscriber pattern to be able to broadcast and subscribe to global events from any component or user control inside my Silverlight application (I’ll will write a post about it and how to implement it soon). This implementation allows me to fire a global event from a nested user control and subscribe to that event in the main page code behind (actually the pattern implementation let’s me fire and handle global events anywhere I want), handling the event and doing the logic needed.

private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
#region Global Event Subcriptions

CommandManager.Instance.Subscribe(
GlobalEventType.SearchRequest,
new GlobalEventDelegate(Search));

#endregion
}


That being said, when a user clicks on the "search" button of my app (which is inside a user control) after entering the search term, I fire a global event "SearchRequest" which I'm handling in my main page code behind (I’m subscribing to the “SearchRequest” global event in the main page code behind and assigning the handler of the event in the Loaded event handler of the main page).

The handler will then catch the event and redirect the call to a private method that uses the WebClient class to do the request to the Twitter Search API method asynchronously.

private void Search(Object data)
{
String searchTerm = data.ToString();
if (!string.IsNullOrEmpty(searchTerm))
{
WebClient wc = new WebClient();
wc.OpenReadCompleted +=
new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
wc.OpenReadAsync(
new Uri(HtmlPage.Document.DocumentUri,
string.Format(urlTemplate, HttpUtility.UrlEncode(searchTerm))));
}
}


The work around is that instead of calling the Twitter Search API directly, I'll be forwarding the call to an ASP.NET (ASMX) page (by specifying HtmlPage.Document.DocumentUri), which will in turn call the Twitter Search API method and return the xml result to my Silverlight application. The urlTemplate variable has the relative URL of my ASP.NET page.

urlTemplate value = "~/../TwitterProxy.aspx?q={0}"

The ASMX page in question (TwitterProxy.asmx) is part of the same ASP.NET web project that hosts my Silverlight application, so all I had to do was to create a new ASP.NET page and include the call forwarding logic in the code behind. You can actually ignore the ASP markup code, cause the forward call is being handled and the result returned directly without actually loading the page itself.

public partial class TwitterProxy : System.Web.UI.Page
{
private const string urlTemplate = "http://search.twitter.com/search.atom?q={0}";

protected void Page_Load(object sender, EventArgs e)
{
HttpWebRequest request =
(HttpWebRequest)HttpWebRequest.Create(String.Format(urlTemplate,

HttpUtility.UrlEncode(Request.QueryString["q"])));
Stream stream = request.GetResponse().GetResponseStream();
StreamReader reader = new StreamReader(stream);
Response.Write(reader.ReadToEnd());
Response.End();
}
}


Finally when the search call is forwarded and processed, and the resulting xml obtained, the response will be passed back to the Silverlight app, and the wc_OpenReadCompleted event handler will bi fired. I'll set the data context here, after cheking for errors or null values.

private void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
if (e.Error == null && e.Result != null)
{
XmlReader xml = XmlReader.Create(e.Result);
this.PostsViewer.PostsItemsControl.ItemsSource =
TwitterSearchHelper.GetTwittsFromQuery(xml);
}
}


This was an easy way to work around the Twitter Search cross domain policy restriction and be able to test the call and continue working, especially since there's another guy in the team working on the UI and animations in Blend, so I really needed to make the app work and be able to return real data results so he could keep working. Meanwhile I can continue my work on the most robust and scalable WCF Middle Tier.

Hope this helps you a bit to overcome this kind of cross domain issues with Silverlight, and maybe help you understand a little bit more on how Silverlight and ASP.NET can communicate and offer you a few tips I learned from this myself.

Thanks to my colleague Marvin Varela for the implementation help and tips.

Cheers!
-aB

Monday, November 9, 2009

MSDev Training Portal

Finally, I found a very good Silverlight 3 Site that actually has good training videos and resources (thanks to my colleague Marvin Varela). Go ahead and check MSDev Portal site right now !!! You will find training resources for top cutting edge Microsoft technologies, and if you are into Silverlight, check the Silverlight 3 Series page.

I don't know about you, but since Silverlight 2 release I never found a good, consistent, and integral site for Silverlight training resources. Let's face it, the Silverlight Official site has been struggling to put decent training content on the site. Most of the tutorials and videos are boring, not cool and not very useful in practice. Also it lacked a lot of the Designer+Animator+Developer workflow that makes Silverlight a great developing experience.

Go ahead and check out the site, it will help you, no matter your experience level. It's always good to go back to basics.

Cheers
-arbbot

Win7 Silverlight App Phase 2

Check out the Windows 7 Silverlight Application on Microsoft Home Page. Is the same application launched on October 22nd, but it is displaying in phase 2 mode. The cool thing is that it is actually the same application, but just configured to display in the "small" mode.

The application has been running smootly without issues and has been seen for millions of people around the world. Is was great to be the Platform Lead of that project and see it live in one of the most visited sites on the Internet.

Love Silverlight, love Blend, love C# !!!

Cheers!
-arbbot

Friday, November 6, 2009

Twitter Search CrossDomain Policy Restricted

In the past few days I have been working on my Silverlight 3 skills, creating prove of concepts and playing with the new controls, techniques and of course, learning more about Expression Blend.

I have been putting together a Twitter Client built in Silverlight 3 app. I was using the System.Net.WebClient class to call the twitter search API method in an asynchronous fashion. It had worked perfectly until yesterday when I started to get a security exception that prevented the app from accessing the Twitter Search API.

I thought I was doing something wrong and I have been pulling my hair off trying to find a solution. I searched online for similar issues, all referring to cross domain issues. I thought that wasn't my case since the app behaved fine until yesterday. After talking about the issue with my colleague and friend Stephen Rettinger, he pointed out that actually, the problem was the cross domain policy file in the Twitter servers.

After taking a closer look he realized Twitter is blocking all external domains and pretty much only allowing access from their own domains. Steve found a couple of discussions about the topic (here and here) and confirmed that Twitter folks restricted in fact all external domains. Why? Supposedly they made the change because they want to enhance their security. The result? RIAs built in Flash/Flex/Silverlight are no longer able to access their API directly without using a proxy app.

They can have their reasons, but they made the change without telling anybody. Without notifying users or developers the result is that there are a lot of people complaining about it and they have a reason for it. In my opinion their change was crappy and the lack of notifications and acknowledgement on their site is far from desirable. If you put effort and time building applications against a service, is not right to change the rules without letting people know. I guess many people will stop working with their services.

I hope this helps people having the same issue to acknowledge the cause without losing time wondering what they are doing wrong, since it is because Twitter folks made the change on their cross domain policy.

I'm working on a solution for this, probably implementing a WCF middle tier to serve the SL app. More about it comming soon...

Thanks Twitter....
-arbbot

Thursday, October 22, 2009

Windows 7 Launch


Today is a big day for Microsoft and Windows since they just released the new Windows 7 OS version. Along with all the events around the world and the buzz in different media, Microsoft launched a Windows 7 aggressive campaign on several Microsoft and Windows sites.

Included in this campaign is a Silverlight application that was launched today at Microsoft Home Page, and I’m very proud about it since I was part of the development team who made it possible.

The application was built using Silverlight 2 to provide a consistent experience for SL2 and SL3 users and it promotes a clean and engaging interactive design where users can read quotes about Windows 7 reviews from users around the world, Windows 7 product information, Windows 7 PC offers and a very nice video section with 7 second demos about Windows 7 promoting the top notch OS features.

Being part of this huge campaign and the development team of the Silverlight application was a great experience. The level, quality and expectations are really high among this type of development, especially if the application is going to be placed in the Microsoft Home Page. I won’t go into too many details about the application implementation, but we used top best coding practices and industry proven solutions to accomplish an engaging but simple interactive application that not only looks cool, but actually is useful for users to take a quick dive into Windows 7.

One of the challenges we had was to make the application really light, weighing no more than 300kb!!! If you take into account external data sources, video playback functionality, smooth animations and transitions, user interactions, analytics, embedded fonts and all the server side stuff going on at the same time, that number is quite impressive.

As a high level technical approach, we implemented a subject/subscription pattern to broadcast and handle events across the different application components and modules, a loosely-coupled tier architecture for the different server side functionality and Model-View-ViewModel approach for the front-end controls which allowed an extensive use of bindings using the application data context.

We also implemented the application in a way that it allows the layout to accommodate to different sizes and distribution just by modifying some configuration parameters, that you can check visiting the Home Page and the Download Center Page.

One of the things I love about Silverlight is the wonderful/painless workflow between designers and developers thanks to the interactive animators working on the project. The use of Visual Studio and Expression Blend gives you so much power to create engaging and rich interactive web applications that I can’t think of a better way to do something like this without them. I must say that I’m in love with these two products and how well they work together, especially if you have experienced people both on the animation and development worlds. Expression Blend is a great product that even Adobe hasn't been able to match for the Flash/Flex development. I truly believe in the separation of logic and UI having C# code behing files and XAML markup files that Microsoft achieved with Windows Presentation Foundation and Silverlight.

I’m very excited with the upcoming release of Visual Studio 2010 and the .NET Framework 4.0!!!

Make sure to check Microsoft Home Page for the full version of the application and the Microsoft Download Center for the small version of the application.

Cheers Windows 7!!!

Monday, June 22, 2009

Long Time No Post

It has been very long since my last post...it's always bad when you stop writing in your blog, but to be honest, sometimes the free time makes you good. I spent some time in the beautiful beaches of Costa Rica and had some quality time with the family.

After that, I must say I have been really...but really busy...which is good since all the layoffs and stuff, so happy to be working a lot in very cool and big projects. What I have been working with? Well a lot of LINQ for sure, which every day I like more. Also a lot of Enterprise Level, highly scalable, robust and highly available C#3.0 .NET practices for multi user applications and big web sites. One of the latest acquisitions on my repertoire has been ASP.NET MVC 1.0 which I LOVE!!! I read the ASP.NET MVC 1.0 newly released book from theGu and Hanselman, which is a good book. Practical, straight to the action and with nice working examples, but like most books it felt short when trying to apply the same patters to big enterprise solutions. To help a little, I'll be writing a series of posts of how to use ASP.NET MVC 1.0 in more enterprise level scenarios and how to accommodate the MVC pattern to layered architecture...I think the approach is very cool and interesting and I hope people find it useful.

Anyway, now I'm in New York working a lot so I'll probably start writing and get back on track as soon as I can. I have lot of news, lots of new cool stuff to share.

Keep an eye on the blog, and please, leave a comment or send me an email if you want to share something.