Waking up — what I’ve been up to

I neglected this blog in the last couple of months, but … I am still up and about. Actually, I have been rather busy and the blog has not been on the top of my todo list to be rather honest.

However, this is going to change in the next couple of weeks as I am finally ready to blog about some interesting, new, innovative things that have come my way the last couple of weeks.

I think it is normal that from time after time you have to catch up with all the technologies that are out there and have to find your way and decide which path to take. In the last months rather than weeks, I have been reading up on software development in general, new programming languages and frameworks in these languages.

For example, I finally caught up with C# and all the new aspects of its new version that is being released with .NET 4 (or Visual Studio 2010 — not sure about the release cycle). The language becomes more and more handy and is filled with quite some magic to make the life of the programmer a lot easier. However, one thing that still is not solved, even in its 4th incarnation, is the missing separation of specification and implementation. Being used to Pascal or Delphi, it is really tough not having a class definition on top and the concrete implementation at the bottom. Also the possibility to define properties and fields “anywhere” in a class makes C# a bit harder to read at first. I am not going to dive into the ‘braces debate’ as I think that it is a bit too geeky and completely insignificant. I do not care if I use ‘begin’ or ‘{’. The readability, however, is important.

From C# I went over to frameworks that .NET offers these days. Be it ASP.NET, MVC, LINQ, Entity Framework, WCF, WPF — I looked at them all with different levels of granularity. WPF I only touched the shell, as my design skills are rather limited. I understand how everything fits together now, though, and I think that must suffice. One has to emphasize the great options the developers have to bind data to the graphical user interface using WPF.

WCF - knowing Indy due to Delphi quite well - is also something that triggered my interest. However, there is one component set available, for free no less, that I never saw the need to jump into it deeper than knowing what is available and how one specifies services etc. Thanks go to Hadi Hariri, for writing some great articles to get you started!

EF - probably the greatest disappointment for me. I did not have the nerves to look at the release candidates or Community Technology Previews that are available for the second installment. The first version did not perform to my liking. I will clearly state that it is mostly not the problem of the product, but I guess think differently and I was not able to transfer my ER-models from my head into the framework. Especially reflexive associations gave me headaches. I never got the result I was looking for.

EF not being what I hoped it was, I looked at Linq to SQL. This required me to learn Linq first as the specializations of Linq - obviously - require a deeper understanding of the base. So, I read into Linq and soon realized that LinqToXml would make my developer days so much more easier. LinqToXml quickly became THE toolset to read and write XML. I can say without hesitation that ever since reading and learning about LinqToXml, I use nothing else when XML is involved and I have the .NET framework available. Especially the performance on huge files of it is breathtaking. As I understood that I went over to LinqToSql. Definitely a tool one can use to write great database apps in .NET, however, spoiled developer-me, who was used to ECO, still was not satisfied. Oh, ECO, yes, I still use it and I will mention it later in this post. I want to point out though that I was able to realize a small project with LinqToSql, which I never was able to do with EF. Yes, I know, it must have been me — still, I prefer LinqToSql to EF 1.0.

I just realized I only mentioned LinqToXml. The simplest incarnation of Linq, which is LinqToObjects, is absolutely not missing in any of my projects. At this point I want to mention that I use Linq in C# and Delphi Prism all the same. Remember, .NET is language-agnostic. Thus, Delphi Prism or C#. Both are becoming a bliss to use with LinqToObjects as soon as lists or any other in-memory data structure is involved.

Good. That were the desktop app frameworks I looked at. I also looked at ASP.NET and its ’spin-off’ MVC, which stands for Model-View-Controller. I like the idea behind it. Actually, I like Ruby on Rails for the same reason. But, I miss the server-controls and I absolutely loathe scripting Java Script to do AJAX in web applications. Thus, MVC never grew on me. Even with all the frameworks that are available… I still never got the hang of it.

As I talked to a buddy from the Delphi Community, he told me he had absolutely no idea what to look at first and how to prioritize. Thus, here is my own list, how I would prioritize things. I assume that you did look at .NET in general already and thus do not need to get started with that, because that would be my number one priority right now. I still do native programming - which reminds me to ask: Why is one old-fashioned coding native? The whole iPhone SDK is a native framework… thus, it is still an up-to-date topic and not to be neglected….

Thus, here the priorities for the technologies mentioned above:

  1. Linq
    • Linq to Objects
    • Linq to XML
    • Linq to SQL
  2. WPF
  3. WCF
  4. EF with version 2 just being around the corner

This concludes the list of Microsoft technologies of the .NET framework I looked at. Did I stop there? No. If you had asked me three years ago, I never would have thought it possible, but I went over to a different platform. Yes, really.

Apple - or MacOS.

Ever since I held an iPod Touch in my hands it became very clear to me I wanted to be able to develop applications for these devices. But more about that and how I can connect the Objective-C applications with my .NET applications in the next blog post which will most likely not take as long to write as this one… almost a year… wow.