Thursday, June 28, 2007
Himalia on Acropolis
Some people believe Himalia and Acropolis may overlap in some zones. And they are right! Himalia and Acropolis overlap in the zones where Himalia doesn't want to be... Yes, some time ago we had to build our own service schema and now we were thinking about a composite strategy for large teams... but it isn't our real focus. We just want to have more time to show you how we can build semantic user interface in minutes... this is our mission!!! (BTW, we will need this services schema anyway for the other platforms: asp.net and .net 2.0. Keep in mind that Acropolis requires .net 3.0)
Now that the first Acropolis CTP is public, our composite strategy will be far easier: we should put just on top of Acropolis.
So, I spent a couple of hours trying my first approach... (there are other two methods we are discussing right now and will attack in the near future).
**** Disclaimer: This code doesn't work with the public version available from December. ****
1. Create a Part Library, and name it Himalia.Acropolis
2. Add a new Part (HimaliaPart) and a new PartView (HimaliaPartView)
3. Add a new connection point to the Himalia Part: RootElement
<AcropolisComponent.ConnectionPoints>
<ComponentProperty Name="RootElement" />
</AcropolisComponent.ConnectionPoints>
4. Override the OnFactoryCreationComplete method on the HimaliaPart
protected override void OnFactoryCreationComplete()
{
base.OnFactoryCreationComplete();
// Creates the Himalia Session in the WPF Runtime
WinFxUISession session = new WinFxUISession(this.Name);
session.StandAlone = false;
this.Title = session.Title;
// Set the root element to the connection component property
this.RootElement.Value = session.Start<FrameworkElement>();
}
5. Override the OnPartAttachedmethod on the HimaliaPartView
protected override void OnPartAttached()
{
base.OnPartAttached();
// Add the root element to the control
this.Children.Clear();
this.Children.Add(this.Part.RootElement.Value as UIElement);
}
6. Now, in your Acropolis application, you can use HimaliaPart's, like this
<AcropolisApplication.ChildParts>
<Him:HimaliaPart Name="C:\\PetShop.hui" />
<Him:HimaliaPart Name="C:\\Invoices.hui" />
</AcropolisApplication.ChildParts>
7. Replace the OnActivated method of the Application (it throws a null exception because the MainWindow is bad set, I don't know why)
protected override void OnActivated(EventArgs e)
{
foreach (Window w in this.Windows)
{
if (w is Window1)
{
base.MainWindow = w;
break;
}
}
base.OnActivated(e);
}
8. This is how it should looks like:
Conclusion
You can integrate Himalia and Acropolis points of view nicely. In one side, Acropolis allow you to better segment the desktop application in divisible parts. On the other side, Himalia allow you to better create each part, focusing in the most important things for your users. Remember, Himalia focuses on usability and is a modeling tool. Acropolis focuses on composability and extensibility and isn't a modeling tool.
But soon, you will see how these developer-side separated user interfaces could be user-side integrated again... just give us some time.
Labels: Acropolis, Himalia, WPF
Wednesday, June 20, 2007
Multi Touch User Interfaces
I found this "open source multi touch" group (http://nuigroup.com/) and the free C++ library (TouchLib) including the Visual Studio solution.
I would like to have enough time to give it a try!!!
Labels: Table computing
Saturday, June 16, 2007
Google Analytics - Usability problems
I think the Google Analytics Team did a very good work with the new version of their toy. However, I have a list of 6 usability problems I have found:
- Like most of the ajax applications out there, the back button doesn't work consistently. For example, it never remember if you have changed the graphic kind. For instance: change the graphic from visits to pageviews, drill down in any other information, go back, the graphic is again set in visits.
- The date-range is consistently being lost. When you define a data-range it is lost while you navigate through the different reports. I can't remember a path to reproduce it, but it has probably to do with the ajax stuff too.
- Google commonly doesn't add scrollbars to their applications and uses just the browser ones. This is right in many situations, but when you are watching a lot of data in a grid, you need to fix the titles. You can't guess the columns titles at the bottom of the list. To solve this, they would need to add scrollbars to the grid at the content level.
- Most of the graphics looks pretty well, but some of them make no sense. For example, in the content by title section, why are they showing me the total visits in a timeline? What do I need to see there? I don't know, but something showing me content by title isn't a bad idea. The same happens in languages, etc. They just inserted the same graphic all over the website, without caring about if it makes sense or not in each specific context.
- You can not set the time frame in reverse way. This was the first issue I found. I usually know the last day I want to see and then I start going back in my mind to estimate the starting date: so, I put the last day first. But then, when you click a the new starting date, the final date is removed and you have to start again. It could make sense, but I have still an apply button. So? Why don't they put the validation there? Came on!
- Pie charts are very informative and they use them to show you referral sources, for example. One thing I don't understand is why are they highlighting the pie chart sections if nothing happens when you click them... This is like "deceptive feedback". What I want? To navigate, and view in detail that specific pie chart section.
Do you have your owns?
Thursday, June 14, 2007
Microsoft Surface for Software Developers Teams
What do you see when you see Microsoft Surface? I tried to imagine me using it, in my daily tasks and not trying to create new activities... and I really think this new technology can help "software developers teams". I will write down the first two scenarios that came to my mind when I first saw this futuristic table.
DISCLAIMER: I will need this technology in table-format but in "picture-format" too (to put in a wall).
#1. Discuss diagrams
I am a visual-man. I like to see diagrams and discuss about them. I prefer to "see" ideas. I see things clearer in models than in other ways. So, I would want to see diagrams in the surface to discuss it with the team. That includes: class diagrams, database diagrams, navigation models, user interface prototypes, etc.With this new approach you can move the boxes around the table, zoom-in/out to focus in a particular part, change some thing while everyone is seeing it... but you can also make changes and it is reflected automatically in your software-modeling tool. You won't need to write the paper on the wall with a pencil and then change it again in the modeling tool, or re-printing it to keep it updated from time to time.
#2. Card lists
If you are using an agile process, you may be using Post-it! notes in a public wall. Despite the fact they are very useful behaving as Information Radiators, they have a very important problem: if you are also tracking your tasks (or user stories or whatever) in a management tool you will need to enter each task twice (as a PostIt! note, and as a new task in your tracking software). And you can't avoid it, at least you want to lose all your project information with the first strong wind.
But what about putting the tasks in your wall-surface? You could move your virtual notes in the wall by hand to the next iteration (and constrain the movement in the reverse way ;)). But the good thing is that you can share it with your PMO in the other part of the world. And also, you don't need to see all the day long the same thing, it can show semaphores, team productivity, etc.
In the meanwhile, we could show Mingle in a big TV. When will Mingle support touch?
A collateral effect is that we can save paper (and so, help to avoid the pulp mills ;))
Finally, if Microsoft want to achieve success with this new technology, they have to keep the developers of their side. Yes, you are right, I am asking Bill Gates to gift me this toy ;)
What do you think about it? Do you see it useful? Do you see any other use for software developers?
Labels: Developers, Table computing, UX, WPF
