Microsoft DevDays 2008 - An overview

By mOrPhie on Monday 26 May 2008 20:49 - Comments (4)
Category: software engineering, Views: 11.435

As I mentioned in my blogpost about DevDays 2007, I was hoping to go to the next edition of the DevDays. Which is 2008. My current employer gave me the opportunity to go both days, because there were sessions on both days that I wanted to attend. And, as a bonus, those sessions were useful as well. A new part of the DevDays this year was the "Geek Night". No..... not a greek night. I heard that joke way to often the past days. So, that means no sitaki and throwing plates all over the place, but actually very interesting sessions and a bit of fun. The sessions were the "less serious" ones. Sessions about programming without an actual use, but because it's fun to do. Robots, games or rockets with telemetrics based on .NET for example. Next to the geek-sessions, there was a Guitar Hero competition. Which, of course, was a lot of fun and brought in a lot of "geek" in the "night".

http://tweakers.net/ext/f/sMnUlzBMToLmEygoZxhb4CFy/full.jpg
Guitar Hero Contest


In this post I want to summerize my two days on the DevDays. So, I cannot go into every session, but I will go briefly over the ones that I attented. Some of them interested me enough to discover the technology some more and for them I will write different blog posts. For now, just a few lines to illustrate the topic and my view on the session. Since this blog post will become a big one, I put a header above every session-description, so you can choose whether to read it. No problem, company service. ;)


Day 1 - Keynote "Why software sucks" - David Platt
I didn't know David Platt until I got the program for the DevDays, but he seems to be big in the usablity-world. Why is that? Because he wrote a book called "Why software sucks, and what you can do about it". The book argues that the difference between a good and a bad program is the user interface and that way too few actually think about the user interface as part of the design process.

To illustrate it, he used a number of bad user interface examples. One I particularly liked, was a backup application, which at first startup presents the user with a question whether he wants to use the "normal" or the "easy" layout. So the normal layout isn't easy? What are you trying to say to your users? The easy layout isn't normal? If 9 out of 10 people using your applications aren't computer-experts, then they probably want to use the easy layout. So, he argues, make easy the default and don't ask for it. In an options screen, add an option for advanced layout. Great talk, and a lot of truth in it.


Day 1 - Silverlight 2.0 - Daniel Moth
Daniel Moth is a personal favorite. I'm a reader of his blog and I've seen him last year. This year he did three sessions, but differently from last year, this year he had two sessions in the auditorium, which basically said: People liked your talks, go do it in a bigger room. Daniel Moth is currently a .NET evangelist based in the UK, but he will be joining the System.Threading team in Redmond in the near future.

His first session was about Silverlight 2.0. Silverlight is a flashlike web technology, which enables developers to write client applications with a web-context within the browser. A big difference with Flash is that you get .NET and a subset of the .NET Framework to write the code. For me, that is a big deal, because I'm not really into ActionScript and .NET is my primary development-environment for the past 7,5 years now. The session was about an overview of the possibilities, a quick look into writing code and the process of designing the user interface apart from the business logic. There is more on the website of Daniel Moth, which can be found on http://www.danielmoth.com/Blog.


Day 1 - Understanding the ADO.NET Entity Framework - Mike Taulty
Mike Taulty is also an evangelist (seems like a fun job actually). His primary focus is on .NET 3.5 data stuff like LINQ to XML or SQL and the ADO.NET Entity Framework. So, it is not a coincidence that he was the speaker for this session. The session illustrated the difference between the ADO.NET Entity Framework and LINQ to SQL, which, at first, seem to have copy-pasted some project goals from one and another. It also illustrated the components the ADO.NET Entity Framework consists of and where it can be used for.

http://tweakers.net/ext/f/DpJWIbmHwAyfHY7AL1rFTcmm/full.jpg
Mike Taulty Speaking


The framework is basically a abstraction on top of the data model. The data model can be anything. An XML file, a SQL Server database, an oracle database, a web service provider for amazon.com. You name it. The abstraction is called the "conceptual" model and looks like an ERD diagram. A database diagram in which many to many relationships or inheritence is possible. The objects, or "entities", in the model can be accessed directly. Instantiate, edit and saving to a database is like working with objects. It is, as you have guest, just another OR/Mapper. But, as Microsoft think themselfs, it has more to offer.

I'm very divided on this one. It think the technology is a very obvious thing to do, since OR/Mapping is here and has been here for many years now. Another obvious thing is to treat the model as objects. So inheritence and many to many relationships are possible. But also that, is already available through other OR/Mappers like LLBLGen. Very good talk nonetheless and I will be addressing the ADO.NET Entity Framework in a different blog post, because there is a lot to say about it. Until then, use Mike Taulty's blog as a reference.


Day 1 - Using WPF for good and not evil - David Platt
This was another talk about bad user interface design. It was an extension to the keynote talk. I got the idea that most of it, was already addressed in the keynote talk. I was hoping to see some more WPF stuff, instead of this talk. David Platt is a fun speaker and his book might be very useful, but I could've probably used my time better than on this session.


Day 1 - Five cool things to know for Smart Client Development - Daniel Moth
One reason I think Daniel Moth is a good speaker, is because his sessions are 1) organized, 2) useful and very practical and 3) you don't have to write down notes.... everything he says is or will become available on his blog. This concept is maximized in this session, since even the title tells something more about the contents. "5 cool things". The speaker chose 5 things, which in his opinion were cool things other developers should know about.

The five topics were: "WPF and WinForms interoperability", "using the Managed AddIn framework", "Client Application Services", "ADO.NET Sync Services" and "Office Integration withy VSTO for 2008". He argues that Smart Clients "use new visual techniques", "provide an addin framework", "add online services", "make data available if online services die" and "integrate with office, the second most sold application". I could have a discussion about the last one, but the first four are definitely important.


Day 2 - A tour of LINQ to XML - Mike Taulty
One of the first lines of his session were: "Do we really need another XML API? I think we do". It brought me high expectations. I recently did some playing around with the LINQ to XML API, but I haven't used it for real yet. The last time I needed to do XML, I automatically used the XmlDocument API, without even considering LINQ, because I'm so used to the "old" API.

He instantly proved his words with an example. Creating an XML document with some nodes and attributes in the old XML API with like... 40 lines of code. With LINQ to SQL, the same thing was 8 lines of code, were the first 6 lines, were actually one LINQ query. He went on with some examples including namespaces and validating of documents with DTD's or XSD's. He also mentioned that there will be an API for XSD with LINQ in the near future. Nice useful talk.


Day 2 - Is LINQ to SQL your Data Access Layer? - Anko Duizer
Anko Duizer is a trainer with Class-A in the Netherlands. Class-A is one of the best .NET training partners in the Netherlands. Anko have done talks for DevDays every year and every year Data Access was the topic. This year, he talks about LINQ to SQL being your DAL.

He had to examples: A two-tier application where LINQ is bounded directly to the controls in a WinForm. And another example where LINQ to SQL is used in a web service environment, where serialization of objects is needed, because of the use of SOAP. What the presentation lacked, was a "meet me in the middle" example. I've done some applications, where the architecture was three-tier, but the business layer was only in a different assembly and not on another server. The session therefor resulted in some assumptions around the use of LINQ to SQL in a three-tier, of which I think are incorrect.

For example: "LINQ to SQL is your DAL". I think LINQ to SQL is part Data Access and part Business Logic. Another one was "every new filter of a collection, results in a new method". I've included in my last business layer a function (for example) "LoadCustomersByExpression", which has a parameter of the type Expression<Func<Customer, bool>>. You can provide any lambda expression. Yes, this isn't possible in a SOAP environment, but it is possible to pass lambda expressions as strings. Leading to a way to filter your data.


Day 2 - Understanding ADO.NET Data Services - Mike Taulty
The ADO.NET Data Services are a new variant for the service layer some of us wrote or generated plumbing code for every time a SOA-application comes around. While it doesn't replace the Business Layer, it adds some manageability and extensibility to getting data services online.

The nice thing about it, is that everyting is RESTful and it implements most .NET 3.5 technologies to get integration. For example. I can have a database. Create a service for it. Then in my business logic I create a proxy for this service. The proxy implements IQuerable. Which means that I can do LINQ queries against it. The proxy translates the query into a REST-request (GET, POST, PUT, DELETE) and the service handles the request server side. No need for serialization of the service layer objects. All this is done within ADO.NET Data service using contracts.

It was a nice talk, but I should take some more time to understand the ins and outs about this one. For example: integration with biztalk. I will look into this, but don't expect a blog post about it very soon.


Day 2 - Parallel Extensions to the .NET Framework - Daniel Moth
Not many developers are aware enough of the next big thing. The next big thing is parallel processing. Nowadays almost all computers sold have a dual or even quad core processor in it. Within 10 years, the amount of cores is expected to be around 80. That is a lot of cores. The problem is that current .NET application mostly don't scale with the number of processors. That means that most applications only use one core at a time. Pitty, if the number of cores is 4.

The Parallel Extensions are extensions to make life easier for those who want core-scalable applications. The performance win is drastic in some scenarios, so I think that winthin 5 years, all applications use the cores, no matter what. Becoming familiar with parallel programming now gives you a head start, so now is the time to invest some time in it. The talk from Daniel Moth was an introduction to this framework, which is in CTP-state right now. It will most likely come out somewhere in 2009.

http://tweakers.net/ext/f/tcmMdQkLgEA11dULnizTTkTV/full.jpg
Daniel Moth Speaking


Interesting part of the Parallel Extensions is that it gets coordination based on the same routines as the Concurrency and Coordination Runtime (CCR), which is used in the Microsoft Robotics Developers Studio. The team worked closely with the CCR team, to learn from their research. I wrote an article (dutch) in the .NET Magazine (pdf, #19, dec 2007) addressing the CCR. I will be watching the Parallel Extensions very closely and I'll probably will write a different blog post for it.


Day 2 - Leveraging C# 3.0 and LINQ - Krishnan Subramanian
Krishnan Subramanian is a technical consultant for Microsoft Netherlands. I didn't like his talk. It was unstructured and he made some assumptions I didn't agree with.

The talk was about the new language enhancements in C# 3.0 and LINQ and how you can use those technologies for faster and better development. I was already pretty familiar with C# 3.0, so there wasn't anything new in it. He discussed type inference, anonymous types, lambda expressions, extension methods and such.

One "funny" thing was that he mentioned "anonymous types". He asked if someone used them. I raised my hand. I think about 10 other people (of 600 attendees) did too. He asked if someone found them useless. I raised my hand. I was about the only one I think to raise my hand. Then he went on saying if "we knew that anonymous types are bindable" and he showed an example of one-one-way-binding of an anonymous type in a datagrid. He didn't show us two-way-binding and didn't address the other issues I mention in my blog about anonymous types. Since I respect every speaker, I kept my mouth shut, but I still think anonymous types are only really useful for method-local logic or demo-purposes.


Some final words
I wanted to attend some more sessions, but I'm human, so I cannot divide myself in two. For me, DevDays 2008 was a success and gives me a lot to think about and play with in the coming weeks. Not to mention playing with all those goodies I got. A USB keyboard vacuum cleaner. 5 t-shirts. A lot of mints. Stress balls. And some more.

I also attended the Geek Night, but I didn't address any of the sessions. This is because of the fact that they were fun, but less interesting to blog about. The most fun presentation came from Rob Miles. His talk was hilarious and fun. He has this great website called Verry Silly Games. You should visit it sometimes. (Don't thank me Rob, just sent me one of your t-shirts)

http://tweakers.net/ext/f/zV0ioZyifV39JUcCnauDm90i/full.jpg
Geek Night pass


Looking forward to next year.

If you attended some other sessions, please use the comment section to add an overview of those sessions if you want to. I (and other readers) could be interested in a brief view on more topics. :)

Volgende: C# 4.0 - A peek into the future 07-'08 C# 4.0 - A peek into the future
Volgende: Anonymous types? A good thing? 04-'08 Anonymous types? A good thing?