Andres Aguiar's Weblog

Just My Code
Client App Dev MVP for 2009!

I'll be an MVP for Client App Development for 2009!

I want to thank to all the people in Microsoft Uruguay and Latinoamerica that kept inviting me to talk in their events.

Here is my almost-empty MVP Profile. I'll complete it during the following days.

Thanks!

Posted: Jul 02 2009, 02:55 PM by aaguiar | with 1 comment(s)
Filed under:
Run09 @ Montevideo, Uruguay

I'll be presenting about UX Patterns and Quince @ the Microsoft Run 09 event in Montevideo.

The agenda looks quite interesting. You can check the agenda here and register here (both sites in Spanish).

 See you there!

 

Posted: May 27 2009, 07:35 PM by aaguiar | with no comments
Filed under:
Uruguay MS Community Meeting - May 20th - Silverlight & REST

I'll be presenting on Silverlight 2 and REST tomorrow at the monthly MS Uruguay Community Meeting. You can register here.

The topics I'll cover will be:

  • What is REST
  • Why could we want to use REST vs SOAP in SL apps
  • Caching
  • WCF REST Kit
  • REST support (or lack of...) in Silverlight 2.0
  • RIA Services and ADO.NET Data Services overview

See you there!

Posted: May 19 2009, 03:58 PM by aaguiar | with no comments
Filed under:
Lovin’ Windows 7

I’ve installed the RC in my home machine and in the VMs we use for development work.

There are a lot of things to like, and you probably read about them in several places already, but I'll just share some small details I noticed when using it. I wasn’t looking for new features, just trying to complete some tasks.

When starting to install software in my home machine, I had some .nfo files that I needed to open, which are just text files but Windows links them to the ‘System Information’ tool so if you double click them, you don’t get what you want which is opening the text file. So, I launch notepad and drag the files to it.

Then the next time I right click on the file I see ‘Notepad’ in the ‘Open With’ menu:

image

 

Another thing that I find myself doing a lot is right clicking on shortcuts, select “Properties” and then “Find Target”. Now all shortcuts have “Open File Location”:

image

I use Remote Desktop a lot, and always forget to save the “rdp” files with the settings to quickly access the frequent servers. Now Windows remembers the ‘Recent’ files for every application for showing a small arrow pointing right in the start menu:

image

 

Want to open a new web page in IE? Instead of selecting it and press Ctrl+T you can right click in the taskbar icon for IE and select New Tab:

image

Windows 7 apps can add custom commands there so I expect the new taskbar to become quite useful.

I have mixed feeling about the next one, because it was so badly executed in Vista that fixing it for Windows 7 was something Microsoft owed us. Instead of doing two thousand clicks to connect/disconnect to a VPN you can click in the network icon in the tray, select a connection and connect/disconnect from there:

image

 

Also, I love the colors. When I go back to my Mac I feel in like watching a black and white movie.

Windows 7 is another product that shows how today UX matters much more than features.

BTW, the startup memory consumption in the DEV VMs when from 850Mb in Vista to 600MB with Windows 7.

From Google Reader to Twitter

If you are a long-time Twitter user this post will sound obvious. I’m not, and even if I think this was probably said one thousand times I feel like saying it again.

I was one of those guys who had breakfast while Google-Readering. I started blogging in 2002, and since then reading feeds was the way I knew what happened yesterday.

However, when the number of feeds grew, it started to be difficult to keep up and to find what I was most interested in, so I quickly browse most of the feeds and have some of them with a lot of posts to read.

Following @shanselman’s suggestion I tried twitter and I realized it was not about saying what you are having for breakfast.

Now twitter is enough to keep me up to date. Even if I don’t follow a lot of people, I feel I know what’s happening out there. My twitter friends filter the news for me. Not following a lot of people keeps the signal/noise at a good level.

When we built Quince we exposed the changes as feeds, which was an obvious thing to do. Now that I don’t open Reader that much, I needed a new way to keep up with changes, so we made Quince tweet. Each community contribution is tweeted (using tweetsharp, which rocks).

The interesting thing happened yesterday. In Quince you can say that you ‘use a pattern’, like ‘voting’ for it, and those votes did not appear in the RSS feed so I did not want to tweet them. By mistake, Quince tweeted them. And when I was about to fix it, I realized I did not wanted to fix it. So, there was a piece of action in Quince that did not make sense to be in a RSS feed but did make sense to be tweeted.

So, it looks like the ‘real time’ sense of tweeting changes the kind information you want to consume/produce. This means I will keep thinking how every piece of software that I’m involved with can tweet. Everything looks like a nail now.

Client side change-tracking data structures in .NET

A couple of years ago I was involved in a couple of threads about doing change-tracking in client-side data structures to support multi-tier development, just like DataSets do, but with the Entity Framework.

Some time ago the EF team proposed a complex low-level solution for the problem, and now is proposing a simpler one based on code generation.

I wouldn´t have much to say about it, if it weren´t because that will be the third new technology that somehow tries to solve that multi-tier problem in the .NET Framework. We already have ADO.NET Data Services, which does not provide client-side change tracking, then we have the newly announced .NET RIA Services, which are supported for SL and AJAX and they´ll be supported for the full .NET Framework in the future, and now we have the EF solution, all of them working on top of EF models.

I´ve read somewhere that Microsoft is trying to align ADO.NET DataServices and RIA Services, but I also heard that the frst time I learned they were building 2 different O-R mapping technologies, and they ended up shipping both.

Can we please get one consistent solution? I guess ADO.NET DataServices´s commitment to ATOM could make it difficult to adopt for the EF and RIA Services but I don´t see a reason why we need the EF solution and the RIA services one.

Even if I see why ADO.NET DataServices could be slightly different, I feel there should be a way to come with one solution that covers all the scenarios. The end goal is not very different.

Thanks in advance.

Silverlight and OS/X

I’m happy I got a Mac to have around while developing Quince.

Even if Silverlight is supposed to isolate you from browser-specific issues, we found that it’s quite important to have all the platforms you need to support available for testing.

When doing Silverlight development you will surely need to have some kind of interaction with the browser hosting the plugin. For Quince, the main areas of interaction were:

  • the HTML Viewer control we use in the ‘View Pattern’ view
  • the interaction with the browser’s history to support back/forward. 
  • supporting the mouse wheel for scrolling and for zooming in the Explore by Tag Relations view.

All of those features needed tweaking for Safari in OS/X, and for every other browser. But that was kind of expected.

What surprised us most was that we found the Silverlight performance in OS/X to be worse than the performance in Windows. We did not measure it, but we did not need to. In particular, in early versions of Quince, we forgot to stop some animations and the CPU consumption in OS/X was around 50% in OS/X and 8% in Windows.

We also had crashes or errors that only happened in a specific browser, including Safari in OS/X. We got runtime exceptions that only happen in one browser. In particular, Firefox looks to be the worse in that regard.

So, if you are doing Silverlight development, with the current state of the technology, you still need to test in all the browsers, and if your audience includes OS/X users, you need to have an OS/X machine around (perhaps a hackintosh could be enough …?). Perhaps this is not true for applications with simpler UIs, but it is the case for Quince.

Of course, if you were doing web pages with AJAX this would be much worse… It wouldn’t had been possible to build Quince with HTML+AJAX technologies.

Posted: Feb 07 2009, 12:01 AM by aaguiar | with 2 comment(s)
Filed under:
MacBookPro for Windows Developers

When we started developing Quince I thought we’ll need a Mac to be able to test it in OS/X. I finally had a good excuse to get a Mac! It was a good decision, because it was useful while developing Quince (more about that here), but I´m not happy with it at all.

To make it short, it's pretty bad as a Windows machine. My main concerns:

- The amount of heat the Mac produces when running Windows is unbelievable. Is like using a laptop with a Pentium 4 before we got the 'Mobile' processors.
The same happens when you do any CPU-intensive task like watching a movie. If are using OS/X you can use FanControl to make the Fan work harder when it gets warmer, which makes it bearable. I did not find an alternative to use when booting Windows that runs as well.

- I use VMWare/Bootcamp. From times to times, when booting in Bootcamp, I lose the Windows activation and I need to activate it again. As I have a corporate Windows license that needs to be activated with a KMS, it's not a simple task. Actually, the way I usually do it does not work right now, so I cannot boot Bootcamp.

- The wireless connection drops. The way it ended up working for me is to hide the wireless status icon from the menu bar (!!!), but it still gets a worse signal than the rest of the laptops in the office. There are several threads about this in the support site at apple.com.

- In Windows you can tweak almost every setting using the UI and if not, you can probably fix it tweaking the registry. In OS/X you have much smaller number of settings in the UI. You can tweak it from the unix shell, but I'm not good enough with it to be able to do it.

- Even if you can emulate most of the Windows keys, it´s not the same as having a Windows keyboard. For example, if you are not using an external mouse, one way to right-click is doing ctrl+click, which on a PC I always used to open a link in a new tab. Also, there's no 'delete' key, there's one called 'delete' that is actually backspace. You can emulate it with Fn+Delete. I also make mistakes during Cut and Paste, as in OS/X is Command+C/P and in Window Ctrl+C/P.

- AFAIK, OS/X does not have concept of 'Uninstall'. Some applications do provide a way to do it, but others don't. I had an issue with a driver for a 3G Modem and I could not uninstall it until I found a thread that described how to do it by manually deleting/editing some files.

- AFAIK there's no IM client that supports video/voice chats with MSN Messenger users. The Microsoft version only supports text.  I did not get good Video/Voice quality while using Messenger inside the VM. This means I'm only using Skype lately, which has a good OS/X client.

- Mac Office is not as good as Windows Office. Entourage in particular is much worse. I also miss the Ribbon when working in Word/Excel. I find myself using Office in the Windows VM most of the time.

On the other hand, when running OS/X for internet surfing and digital media managing, I got a nice experience, probably better than Windows'. But that's not what I need to get my work done.

So, if you are a Windows developer feeling tempted to switch to a Mac, my advice is to not to do it. On the other hand, I love my iPhone and I strongly recommend it to everyone.

Building Infragistics Quince – UX Patterns Explorer

On Monday we shipped Quince. I was part of the team that build it, and we are very happy with the results. You can read the official announcement and description here.

Building Quince was a lot of fun.

We had a UX team and a Visual Design team working with us from the start so we could focus in the code without worrying what the textblocks’ captions should be or which color should we use. For me, choosing the right words for the captions is always a pain so this was relieving. Our main UX designer loves words so we had that covered.

We used the latest Microsoft technologies to build it (Entity Framework, WCF REST, WCF REST Starting Kit, Visual Studio for Database Professionals, Team Foundation Server), a set of great open source tools (AutoFac for both the Silverlight client and the backend, Log4Net in the server and CLog in the client, Moq for mocking both in Silverlight and the backend), some not-as-fun technology as Sharepoint and the Open XML toolkit (the patterns are Word documents stored in a sharepoint library that we parse, reshape, and convert to HTML).

The team did not have much Silverlight experience, so we all learned a lot during the process, and we are learning a lot about how real-world Silverlight applications behave in production. More posts about that later.

The Silverlight app was built using Model-View-ViewModel with the same approach described by Julan Dominguez here. We also used the Prism EventAggregator. We did not have Prism for Silverlight at that time so we did not evaluate using it.

The Silverlight client has a lot of cool functionality. My favorites ones are:

  • Support for back/forward button and deep linking, which is tricky do to in a way that works in all browsers. It’s very browser specific. It also implies architecting the application in a way it can restore its state based on the URL values, which in our case implied encoding all the application state in the URL. We did not have a lot of state so it wasn’t a bad solution.
  • The ‘Explore By Tag’ graph visualizer. I actually like the way it bounces so much that I asked the guy who did it to provide me a way to make it bounce whenever I want. Our UX designer decided that we needed to ‘shake’ it to make that happen, and that meant you need to click your mouse, shake it 3 times, and release it. I’m still not proficient in shaking but I’m getting better.

Quince generated a lot of buzz. It was fun to start monitoring Google on Monday and searching for ‘infragistics quince’ and not finding any link, and trying an hour later and start to see what people were saying. There was a lot of action happening in Twitter too. We even got to be second in delicious ‘most popular bookmarks now’, which was amazing (I have a screenshot to prove it ;) ).

PDC Recap in Montevideo

The CumUY .NET community is hosting a 'PDC Recap' event in Microsoft's offices in Montevideo next Thursday (Nov 13th) at 5 pm.

There will be 3 presentations:

  • New Products and Services announced at PDC, Pablo Garcia, Microsoft
  • Oslo : How to build applications heavily based in metadata, Andres Aguiar & Nicolas Castagnet, Infragistics
  • Visual Studio 10: What's new for Developers, Testers and Architects, Pablo Peralta,
    Infocorp

We'll be giving away some books (including the Oslo one), and an Oslo T-Shirt.

You can register here.

More Posts Next page »