Friday, 20 April 2012

There is a new pattern in town!

Just read this MSDN article about how the LightSwitch team modified (or extended) the MVVM pattern. Hold your breath it is called - MVVMVMMD or MV3.

Interesting approach, but if we want to change the view let's say add color - do we go back and change the IPropertyViewModel interface?

Article here:
 http://msdn.microsoft.com/en-us/magazine/hh965661.aspx

Wednesday, 11 April 2012

Slow TFS Performance

Recently the build time of one of our core projects on CruiseControl build server increased substantially. It went from ~8 min to ~20 min.

Upon investigation we found that the "get latest" step by CruiseControl was the bottleneck. I was also facing this problem in Visual Studio 2008, the IDE would hang for about a minute or two when ever get latest was issued. I thought the problem is with VS - probably the general (bad) impression of VS led me to this conclusion. But it was wrong to assume, the problem was with the TFS and how we map the several projects to our local folder.

We removed all unnecessary workspace mappings and also the root mapping. Now there is no local folder mapped for $. And the results are too good. Accessing TFS has become faster and overall performance of Visual Studio 2008 has also improved a lot.

Links which helped:
http://zouak.com/2010/03/24/tfs-slow-in-source-control-operations-workspace-mapping-to-blame/
and the original source: http://blogs.msdn.com/b/granth/archive/2009/05/21/large-team-foundation-server-performance-characteristics.aspx


Saturday, 7 April 2012

Wednesday, 4 April 2012

What to focus on?

Today during the daily commute I was thinking about what technologies I should focus on. After thinking for a while I couldn't keep count of all things, so here it is in writing. :)

These are the areas I want to learn...but prioritization is needed otherwise I would end up learning nothing:

- WPF: In my day job most of the apps I develop are Windows (WPF) applications. So it makes sense for me to dig deeper into WPF. Going deeper into various MVVM frameworks is something I want to pursue.

- ASP.NET: We do have one BIG web application here. It's written nicely and architecture is quite cool. But it is still using WebForms approach, so I need get upto speed with ASP.NET MVC applications (also jQuery).

- .NET 4.0: Specifically parallel and async features - parallel LINQ, parallel task library, async/await. Dynamic feature.

- Unit Testing: especially Mocking tools

- Entity Framework: Although I am comfortable working with LinqToSql, EF is getting better with each new release. Need to get deeper into this (version 5.0 beta released last week.)

- Silverlight: No one is sure about its future, but in my view it is still a formidable option to consider in local-intranet scenarios

Performance / debugging: Go deeper into WinDbg, DebugDiag, performance issues (general and COM)

- iPhone/iPad dev using MonoTouch

- Windows 8 dev: Dip toes in the WinRT development using C# and build Metro applications (registered with a boot camp on May 10)

- Learn more about these concepts: Dependency inversion techniques, Test driven development, SOLID principle

- F#: In some scenarios F# fits very well. Need to at least have "intermediate" level of knowledge.

- Cloud computing, virtualization: This has gathered pace and it can longer be ignored as future of tech. This is in the 'now'. Plan to look into what other vendors offer. Application virtualization is also getting very interesting.

- Scripting: I like what I see in PowerShell, want to get started with it. Using it can be huge time saver in some scenarios.

- Kinect/XBox: Microsoft released Kinect for Windows SDK and the hardware will be launched in Singapore in June. Another exciting technology which can have a huge impact.

- Project management:  This is something big, but necessary. The target is not just to become a better programmer but a manager as well sometime in future.

- Architecture: TOGAF certification


Sunday, 1 April 2012

The cloud is here.

Just read an article about the jobs that will be eliminated because of companies moving to cloud. My initial guess before reading the article was correct - the IT infrastructure support ppl. like network admins, mail server maintenance would be affected first. In fact, the company where I consult recently migrated to Gmail from Outlook and I already see less calls being made to support guys.

So the support group will be affected first and then the "custom development" teams would be affected. Companies whose core function is not IT or where it is treated as a cost center would more readily use cloud.

So how does it affect Microsoft developers like us? We do not have many options. If we want to stick to Microsoft then the only option is to learn about Azure. But I think it is time for a MS developer to leave his comfort zone and start evaluating technologies from other vendors.

Once again 'change' is on horizon. I guess this is how C++/VB developers might have felt circa 2000 when world was changing with .NET release. .NET lasted for a decade and I suspect its time is up. With Windows 8 WinRT exposing its API to C#, bypassing .NET it is a hint of big changes to come. The tablet and mobile will perhaps kill .NET. .NET was built for PC and with PC fading away perhaps its time too has come to go.

I like the closing remarks of the article "Embrace the cloud, don't fight it".

C# Reactive Extensions - Buffer and Window

I was going through Buffer and Window in RX, thought a few examples would help clear the differences. First create a buffer of even numbe...