Feeling great :) November 12, 2010
Posted by Jose Luis Latorre Millas in Uncategorized.1 comment so far
After giving my 1st Tech-Ed session ever!! so… I just can say this has been a dream for me over the last years as one of my personal & professional goals was to become a speaker of enough quality to talk into Tech-Ed.
This has become a reality this week and I have so many people to thank that I don’t know where to start… I guess I can start with my friends at the INETA Board, great hard working people, Starting with Damir Tomicic, Tomislav Bronzin, Sander Gerz, Dobrisa Adamec, Miguel Lopez, Christian Nagel, André Obelink, All.
Also many thanks to those that believed and proposed (and allowed) me to talk at their events, Bernardin Katric (Kulen Dayz) with a session regarding Silverlight 3, Andrej Radinjer at Mobility Days where I had the honor of giving two sessions on WP7 development that were originally assigned to Andy Wigley – wow! also to Ankesh Mehta who invited me to talk at his User Group – thanks!
I could not keep on without thanking those that helped me getting started, concretly I am talking of such amazing people from Microsoft Spain’s team which first I can mention Alfonso Rodriguez (you rock!), José Murillo, Elisa, Isabel, Ethel, and of course two great persons & even better speakers, David Carmona & David Salgado!!! Of course thanks a lot to my MVP Lead, Cristina – for your continuous support & believing so much (sometimes more than me), thanks too to Antonio Gomez & Enrique Fernandez Laguilhoat - I know that I have probably left many more people that I know so – thanks everybody that has helped & supported me with even some kind words!!
Can’t keep on without thanking too to Paco Marin, Netalia chief editor & Aula Vulcan partner – and also a good friend, to Marino Posadas, David Nudelman, both good friends & also to everybody that supported me in one way or other.
And there is even more – I joined in September a local Toastmasters association, Bcn-toastmasters with great people that have helped me grow by quite a lot during a very short time!! for those of you that don’t know, Toastmasters is an interantional organization with the goal of helping Speakers to become even better Speakers so it’s highly recommended!! check www.toastmasters.org if you’re interested!! I just can say it’s awesome
So, thanks a lot to MA Garcias, FAbulous speaker who dedicated me some time to help me prepare, Pilar de Obeso, Joan Fabregat, Cormac Walsh, … All Toastmaster’s Barcelona, thank you!! with special mention to my actual mentor, Celine Quissac who also helped & supported in an incredible way in the short time she was my mentor -only one week before TechEd… if she did this in one week I can’t imagine what will happen next – I’m looking forward to that!!
Also thanks to the delegates that came to my session and for the nice comments -best one is that he learned a lot in just 40′…
– feeling great!
Slides & demos posted :) November 11, 2010
Posted by Jose Luis Latorre Millas in Uncategorized.3 comments
Thanks everybody that attended my session at TechEd Europe 2010 and thanks again for the feedback. Much appreciated!!
Silverlight’s 3D True power – from 0 to hero in 40 min. November 10, 2010
Posted by Jose Luis Latorre Millas in 3D, TechEd.Tags: 3d, interaction design patterns, Silverlight, teched, ui, ux
2 comments
Today, Wednesday, I’ll be talking at TechEd Europe 2010 about Silverlight 3D Actual capabilities and how to use them with the session named “Silverlight’s 3D true power – from 0 to 100 in a practical way”, the time is 1:20pm and it will be at Hall 7.1c, Paris 1.
Why 3D? Because it is important for all of us, first we are made to interact with our environment in 3D, our interfaces have 3D tactile capabilities, our vision is 3D and 3D is natural to us (even we have been educated for some years to use 2D interfaces). But.. this is changing, all the industry is switching to 3D, starting by the gaming industry that started with the Wii and now is taking a new step with Kinect as a full body 3D scanner that allows us to interact with our full body with the Xbox interface & games, The Movie industry is also moving to 3D and the display & TV industry is doing so as well… so, it is clear that 3D is important and also the point is that any User interface technology must support this evolution & provide 3D capabilities, for creating 3D interfaces and hopefully in short time, to interact in 3D with them without any device. (So.. when a Kinect for Pc, Microsoft? J – I`m already on the Queue…)
On the session that I am proposing you, we will see the actual status of Silverlight regarding 3D, I’ll show you the basics & ABC of Silverlight 3D capabilities, we will see how do their PlaneProjection properties get along & implement some simple effects and see how we can improve them with Blend so they can shine.
Next, we will get into implementing an intermediate Interaction Design pattern that I love, the Carousel – I’ll show you how to do it from scratch and in full 3D and provide a basic animation so it can spin. Next we will improve its interaction providing it mouse interaction so it spins quicker or slower depending on how far is the mouse cursor from the center. Also we will add some control for when the mouse gets out of the interaction area, so it does not start spinning like crazy (I can bet you have seen more than one of these in production websites…).
Regarding the Carousel, you curious people can read more about it here: http://developer.yahoo.com/ypatterns/selection/carousel.html, here: http://ui-patterns.com/patterns/Carousel and here: http://www.welie.com/patterns/showPattern.php?patternID=carrousel and some more… http://wiki.forum.nokia.com/index.php/Mobile_Design_Pattern:_Carousel , http://www.uipattern.com/carousel-design-examples.
Basically allows a user to select one item between a collection of items. This is good because it represents visualy the item (with picture, text & other iconic information) providing accurate understanding of the items to select & also a quick selection of them. This can be done in multiple ways, being one of the most famous the horizontal 2D carousel, the growing one that some OS have for its main function selection, the circular elliptic carousel is also very famous, but who does not know the “CoverFlow”? it is indeed a 3D representation of an horizontal Carousel – by the way, have you checked the Silverlight Booth Demo launcher? It is a nice implementation of this Interaction design Pattern, too! – you can see it at the Silverlight Booth or here: http://www.brainsiders.com//TEE2010/SLShowcase/default.html (note: it is meant to be run in full screen mode). I also implemented there an “auto” mode so I am happy with that, it is simple and efficient. Oh, and the full source code is here: http://showcaselauncher.codeplex.com/
Note that it uses some code from the Bouncing Plane Demo (Henry Han, Tim Heuer, see: http://blogs.msdn.com/b/henryh/archive/2009/03/20/mix09-the-gratuitous-graphics-demo.aspx ) and the for the Horizontal Carousel I’ve used the Flow Layouts Library, see http://slflow.codeplex.com/ from Simon Ferquel, awesome work both of them!!
Oops, almost forgot, For the circular animation I have used the smart technique conceived by John Bruin – http://www.johnbruin.net/index.php/category/silverlight/ – Thanks John!
Also, there’s still more, we will see what do we have apart from the core framework, showcasing two amazing components for providing full 3D, the first being Balder a pretty nice Open Source engine friendly with Blend & XAML based and the second, Silvermotion, a commercial component with awesome power, performance & ease of use.
And yes, all this in 40 minutes.
Sounds good? J
Session Code: WEB202-LNC
Session room: Hall 7.1c Paris 1
When: Today, 1:20pm
Don’t miss it!! If you are interested in 3D, Silverlight and in learning how to implement 3D Interaction design patterns.. we will dedicate a whole 40 minutes to this!!
Speaking! MobilityDays!! TechEd Europe 2010!!! September 21, 2010
Posted by Jose Luis Latorre Millas in 3D, INETA, INETA Europe, Silverlight.Tags: event, WP7
2 comments
Well this is one of the moments that one of you that loves to code, design, speak & share enjoys the most, when other fellows ask you to help them share knowledge
First of all, thanks to the magnificient team of professionals that is managing both events and I’m extremely glad to have been chosen as speaker for “first time” at these great events. My thanks!
First things first, MobilityDays is happening the Day after tomorrow.. on 23th of September, in Zagreb, Croatia, to the East of Europe. But do not worry, you can assist without having to book a flight! Sesssions will be broadcasted through live meeting
.
There, I’ll be speaking on two sessions : “Developing Windows Phone applications with Silverlight” and “Building games forWindows Phone with Silverlight”. Sessions will be in english.
So, what are you waiting for, go and register : www.mobilitydays.com (update: it’s free for MVP’s and INETA User Group Leaders) and well, there are a lot of very good speakers there – apart from me, the “newbie” I mean
- Joking!! I expect to make a pretty entertaining and insightful sessions and I hope you enjoy them
.
Also, I’ve been selected to speak at TechEd Europe 2010 conference, so can’t be happier.
I know this deserves a “post apart” and it will have it definitely – let me finish this week and I’ll be back with more details regarding the session that, for starters, will focus on the 3D (2.5D & 3D) capabilities of Silverlight, on a very intense practical session, going from the basis to creating awesome – and I mean that – 3D interactive interfaces in Silverlight. More about this later…
By now, if you haven’t registered, don’t think more, go to http://europe.msteched.com/registration and register before tickets run out!!
Have fun!
Silverlight DataGrid – Issues solved!! September 2, 2010
Posted by Jose Luis Latorre Millas in Business Applications, DataGrid, Silverlight, Uncategorized.1 comment so far
Today is a happy day….
I am actually battling with a Silverlight business application with some interesting design & behavior – in fact it is a migration from a VB6.0 App.. but the design of the screens is not bad and it’s pretty useful to the task they are designed for.
One of the most costly things I’ve suffered is that I had to show off some information grouped and totalized (nothing strange here, you just have to search a bit and you know the how-to) and also each group of information could have different format on the same column…. and oh my, this has been a real killer…
I tried to change it programmatically but the Binding is bound to the column… so I tried to change the binding, first through the StringFormat but… hey! it is not bindable! Bummer… then I tried to use a custom Converter and bind the ConverterParameter but it also happened not to be bindable – or I did not find how to implement it. I tried also to implement a custom Converter deriving from FrameworkElement and IConverter so I could create a bindable property for using it instead of the ConverterParameter…. but that didn’t work out properly…
Until I found a gem, the “Silverlight MultiBinding” solution that a smart guy, Colin Eberhardt conceived & developed to implement a similar binding model to that of WPF, with more funcitons and to be clear, more mature. Silverlight team, we need that on SL ASAP if we are to build serious SL business apps… if not some developers can get near to crazy to solve some “customer needs”… like I have
.
Regarding the MultiBinding, you can read from Colin on his blog here: http://www.scottlogic.co.uk/blog/colin/2010/08/silverlight-multibinding-updated-adding-support-for-elementname-and-twoway-binding/
Gladly I’m not alone as “Full Databinding Support” is the top requested feature on the Silverlight Feature Suggestions forum here: http://dotnet.uservoice.com/forums/4325-silverlight-feature-suggestions, with over three thousand points, it’s the Nº1!!.
Wich includes requests for fabulous features like:
+ ValueConverter ConvertParameter binding.
+ StringFormat binding.
+ Strongly typed DataBinding support (intellisense).
+ Conditional Binding.
+ Binding to dynamic objects .
+ More extensibility.
+ Etc..
Regarding to my solution I implemented it on the DataGridTemplateColumn for each column I needed to format conditionally, considering also that some columns will need to be editable, so I had to use the usual binding for the editable template even that the TwoWay binding works on the Multibinding implementation but I found no way to keep the format from being reset (by now the TwoWay multibinding requires that all the properties are TwoWay). You can see the XAML code next:
<data:DataGridTemplateColumn Header=”Budget” >
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock TextAlignment=”Right” >
<multibinding:BindingUtil.MultiBindings>
<multibinding:MultiBindings>
<multibinding:MultiBinding TargetProperty=”Text” Converter=”{StaticResource MultiBindingGenericConverter}” >
<multibinding:MultiBinding.Bindings>
<multibinding:BindingCollection>
<Binding Path=”Budget” />
<Binding Path=”Budget_Format” />
</multibinding:BindingCollection>
</multibinding:MultiBinding.Bindings>
</multibinding:MultiBinding>
</multibinding:MultiBindings>
</multibinding:BindingUtil.MultiBindings>
</TextBlock>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
<data:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox TextAlignment=”Right” Text=”{Binding Budget, Converter={StaticResource RoundedConverter}, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}” >
</TextBox>
</DataTemplate>
</data:DataGridTemplateColumn.CellEditingTemplate></data:DataGridTemplateColumn>
So if you have a similar scenario, I’d recommend Colin’s solution.
Other issue I had with the DataGrid was with the Virtualization – it’s virtually impossible to deactivate. Also the search for a solution on this was” a bit chaotic… “
I was lucky to find out this gem here http://forums.silverlight.net/forums/t/101075.aspx on which Xusan is telling us not to deactivate it but to change its structure and take out the component that provides the virtualization, changing its ControlTemplate.
That saved my day as the DataGrid really is not “Recycling” but “Reusing”, which I think should be changed or made optional. As this can be Ok for performance reasons but on others you can end up coding a huge clean-up function that will kill the performance of the virtualization… if there is a quick way of “cleaning” a row or cell, it would be great this was as fast as possible…
Well, will keep on finishing my DataGrid based project management Silverlight Bizz app
Have fun!
Simple trick for getting right the DataGrid’s SelectedItem July 28, 2010
Posted by Jose Luis Latorre Millas in Business Applications, DataGrid, Silverlight, Uncategorized.3 comments
I have been developing a Silverlight business application and one of the problems I have found is the “inconsistency” of the DataGrid… at least of some of its behaviors, when I click on a row, I expect that the SelectedItem (the clicked one) is set on the corresponding DataGrid property.
But it does not. at least not “always”, lets be clear maybe I’m doing something wrong but this randomness on this behavior is driving me crazy, if I click on a Grid row, it should select it and mark the SelectedItem on the corresponding property, right?
I have been doing so in the MouseLeftButtonUp of the DataGrid, so that’s what I expected but… sometimes it had it, sometimes not… bummer!
So I have been trying to detect why is this happening but could not discover it… maybe I’m wrong in any of the assumptins but meanwhile, I got a workaround that does really work
.
The following code explains it all…
void datagrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) {
}
}
Basically I check first If I have the SelectedItem set, sometimes it is, so then I avoid doing the following trick.
The “trick” mainly gets the originalsource that is launching the event, that is the control inside the cell of the grid, most of times it will be a TextBox. Second I get the Parent, with this I am getting to the Cell.
Note that if you have a complex structure you should set up a recursive function to go “up” until you get a reference for the cell.
From the cell you have the datacontext which is the item whe should have got from the SelectedItem property. you should cast it to the inherent type and get any value you need from it.
Also, please note that the DataContext could be caught from the first element (OriginalSource) but it’s more ellegant to get it from the Cell, and if it is a complex custom cell this also asures that it gets the DataContext properly.
And yes, it works 100%
Happy coding!
PS: If somebody knows what I have done wrong or why the DataGrid.SelectedItem Property does not return the clicked item, I would be happy to hear.
Trick for solving WCF RIA Services issue.. July 23, 2010
Posted by Jose Luis Latorre Millas in Business Applications, Silverlight, WCF RIA Services.3 comments
I am having the following issue: Sometimes, when I am issuing a DomainService call using WCF RIA Services, I got the callback right but the loadoperation I have assigned has no results, meaning no entities are returned and the “IsComplete” property is false.
The following code resumes what I am doing, including the LoadOperation definition, the calling function and the callback function:
LoadOperation lo;
private void CallDomainService(){
DomainContext dc = new DomainContext();
lo = dc.Load(dc.GetDataQuery());
lo.Completed += new EventHandler(lo_Completed);
}
And it executes well and calls properly lo_completed…
void lo_Completed(object sender, EventArgs e){
}
}
The issue is that I am getting properly the details of the load Operation, but some random times, it does not return the object properly, it is not null but its .IsComplete property is False and the Entities collection is empty, though that it has had been processed properly by the server.
The trick or workaround here is to get, in this exact case, the loadoperation from the server, which is a reference to the right load operation. The code should be like this:
LoadOperation<EntityType> lo2 = (LoadOperation<EntityType>)sender;
}
And with this, problem solved.
Are you having this random issue or others? anybody found why this is happening?
Windows phone performance trick July 22, 2010
Posted by Jose Luis Latorre Millas in Uncategorized.add a comment
The WP7 emulator can be painfully slow if you don’t check two simple things,
1. One, is check the DDI version and the driver model, for doing this you should go to Windows button and on the search/execute area type dxdiag & pulse return. There should appear the DirectX diagnostic tool, once there click one of the Display tabs and on the controllers, validate the DDI version. It should be 10 or better. Also check the Dirver model, should be WDDM 1.1 or better – if it appears, as it does on one of my laptops but on my desktop it does not – note that I have a three monitor display working with two GPU, so I guess that’s why…
2. Second, enable the BIOS virtualization support, as this is set to disabled on most motherboards. This can significantly increase the emulator speed as it will run directly on the CPU which is better than a layer of software – as a “man in the middle” which is logically slower.. this will mean getting into your BIOS and rebooting your system.
For more insight on WP7 performance, this talk is a must : http://live.visitmix.com/MIX10/Sessions/CL60
Have fun!
3D (2.5D) Interaction Experimental site July 15, 2010
Posted by Jose Luis Latorre Millas in 3D, behavior, INETA, INETA Europe, Silverlight.add a comment
If you have followed me on my latest posts you should have seen some of my Behavior experiments for 3D interaction, trying to emulate already existing Real world & 2D interaction design patterns as MouseOver, Click, etc… in 3D (or Silverlight’s actual 2.5D, for Desktop & Windows Phone).
I have put the site www.bcndev.net as a sample or playground thinking on nothing but on providing a 3D interactive experience, with the points that I am not being paid for (it’s a volunteer work for promoting the Barcelona Developers User’s group event) and I have thought on nothing (I repeat myself but I want this clear) apart from the experience, so do not expect a great degree of indexability, accessibility, usability or even performance… the Matrix background effect is a killer of CPU resources …
Disclaimers: If I had the time, hopefully I will do it “when I can” I will implement a “effect adjuster” for adapting it to reduce depth layers & elements on each layer and, maybe, even the falling speed… to adapt it to get a decent framerate… I’ve got on mind other optimizations but sadly not the time, so sorry in advance if this is going too slow for you to appreciate the 3D interactions.
I have added GPU acceleration & left all the debugging on for you to be able to see the performance. It should not go very bad if you have a decent GPU so please leave me a message if it does not, and include the FPS. Thanks!!!
This site is using the 3D behaviors I have published at the Expression Gallery and some others that I have yet to polish before publishing, some of the new ones are part of an experiment of providing 3D effects to 2D elements (usercontrols in fact) and allowing them to nest their DataContexts and thus providing an interesting way of navigating the information. This has yet to be polished but you can see it working when you press the “+ Info” button and then the “Ver Detalles” button…” then just also press over a session or speaker…
As for the behaviors, you can see & get them here:
• http://gallery.expression.microsoft.com/en-us/Project3DToMouse
• http://gallery.expression.microsoft.com/en-us/Slide3DToMouse
• http://gallery.expression.microsoft.com/en-us/MouseOver3D
• http://gallery.expression.microsoft.com/en-us/Loop3d
• http://gallery.expression.microsoft.com/en-us/Animate3D
I would greatly appreciate any feedback you can provide, thanks!!
And, as always, have fun!
Note: The matrix effect is an evolved version of the original code from Terence Tsang, http://www.shinedraw.com – thanks Terence for all those great samples
.


