Roslyn – The .NET Compiler platform

Roslyn is the .NET Compiler Platform which provides open-source C# and Visual Basic compilers with rich code analysis APIs. Roslyn exposes modules for syntactic analysis of code, semantic analysis, dynamic compilation to CIL, and code emission

I heard about Roslyn during one of the Hackathon events but didn’t get a chance to explore it till couple of days back. As part of the recent Hackathon, I got a chance to work on a project which needed Roslyn help to make my work quick and easy. I was amazed at the easy at which we can use the compiler service. This tutorial helped me to quickly get on track, thanks to the author – Learn Roslyn Now. The same author have a FAQ section which gave me a path to many of my requirements for the project like given a particular piece of code in a workspace how do I find all the references across the solution etc etc.

This Hackathon was a great learning and a great fun. The most memorable part being demoing this project to one of our CVPs :). I should be very thankful to one of my team mate for the idea!

Do read about Roslyn and get amazed 🙂

Advertisements

Getting started with TypeScript

I have been working on TypeScript for the last few months and would like to share a list of getting started pointers to quickly get a hang of the language.

If you are wondering what is TypeScript:

“TypeScript lets you write JavaScript the way you really want to.
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
Any browser. Any host. Any OS. Open Source.”

Start:

1. Introduction to TypeScript by Anders Hejlsberg, the man who developed this language. You should definitely read about his earlier works, pretty impressive 🙂

2. There is no better place to start than from the official TypeScript language page – TypeScriptLang (Yes the above definition is from this link)

– You have a nice playground to play around TypeScript right inside the browser under the Play tab

– Language spec, samples, Handbook, tutorials etc.

3. Recently I have noticed a good course on edx.org and found it good – Edx Introduction to TypeScript

– This has introductory talk from Anders Hejlsberg

– Exercises to work on.

4. The rise of TypeScript – Interesting reading

5. Channel9 do have many videos on TypeScript.

Hopefully the above reading should help you understand why should you use TypeScript when building heavy applications for web.

For those who are interested in exploring further – I found some real good discussion on Pros and Cons of using TypeScript which gives you a good food for thought. Do search on web and read those as well

As always please do share any interesting articles on TypeScript for other readers.

Getting started with Git (with Visual Studio)

What is Git?

Git is a free an open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. (Ref : git-scm.com)

I have been using Git in Visual Studio (my primary IDE for development) for the last couple of weeks and found it really amazing. I went through few tutorials on the web and created the below learning list which would pretty much get you started quickly and give a very good understanding of how git work. I felt Git is so amazing once you start using it you would probably wouldn’t want to go back to Centralized Version Control again 🙂

1. Use Visual Studio With Git – MSDN article on getting started with Git on VS

2. http://git-scm.com/ – Official Site

3. A good tutorial on Microsoft Virtual Academy – Using Git With VS – I really liked this tutorial. Probably takes 8 hours of your time.

4. Linus Torvalds Talk in Google

5. Git for Ugly and Stupid people

6. Git branch naming best practices

7. Git Tutorial on Atlassian

You can search for more in-depth articles on Git. But the above links should make you comfortable with Git.

Please do share other useful links on Git in the comments.

Writing WinForms code that scales to High DPI

In this post, I will try to collate different guidelines and pointers to readings that can help in building/fixing High DPI (HDPI) issues in WinForms

1. Automatic Scaling in Windows Forms

2. Creating a DPI aware application (MSDN documentation)

3. This post on SO has a documentation of some of the design guidelines – How to write WinForms code that auto-scales to system font and dpi settings? and this Creating a DPI-Aware Application

4. Take care of properly scaling Images – Make use of DpiHelper Class. For example, make use of LogicalToDeviceUnits to scale images properly for different DPIs

5. Try avoiding using the Designer. Use the built-in layout controls – specifically, the FlowLaypoutPanel and TableLayoutPanel

Most of the above points were helpful to me and should cover the most important things to keep in mind while working on HDPI. If you are starting fresh, you have various option like using WPF and building new Modern style UI on Windows 8 machines for which the framework handles the major things for you. 

Cloud load testing with Visual Studio Online

This post has been long delayed from me. I have been working on Cloud Load Testing (CLT) with Visual Studio Online (VSO) for close to an year and half and it has been a great learning curve. Got an opportunity to work on various areas like Scalability, building frameworks to understand the service usage, integrating with other VSO services, building service dashboard and making my hands dirty building UI. A fun ride. A really proud thing is that this product is completely built ground up in Microsoft IDC, Hyderabad.

Cloud Load Testing Service in short:

The service will greatly reduce the amount of work required in setting up the infra-structure for load testing an application, configuring it with right settings and maintaining the environment.With CLT in place, the service will take care of setting up the agents, deploying your tests, and running your tests automatically, so you can just focus on what matters the most – finding and fixing performance and scale related problems in your application.

I am going to point to a series of good links to explore about CLT

1. Super Simple Load Test Trial Experience announced by Brian Harry – With this announcement customers can do a Load Test from Visual Studio Online (visualstudio.com).This experience is visible as of today to only users with MSDN Ultimate License. In case you don’t have an Ultimate license you still get a view of the experience from this Channel 9 Video demo’d by Chuck – Load Testing Made Easier

2. Brian Harry announcing about CLT – We all watched this demo with lot of excitement 🙂

3. Load Test your App – MSDN Article

4. CLT General Availability note 🙂

– This link has various links to getting started docs

– With the release of GA, customers can monitoring metrics from their Applications under test using Application Insights and quickly troubleshoot any performance issues.

5. Link to a good video

You get 15000 VUser minutes if you have an account on VSO. Do try out and share your feedback.

Note: All the text in this blog is written by me and my employer holds no responsibility 😛

Getting started with WPF

I have started working on WPF (Windows Presentation Foundation) since a couple of weeks and been going through some learning. WPF has been around for a long time (probably since .NET 3.0 time frame). What I am trying to post in this blog post is a list of readings which are recommended by my colleagues and the one which I found through reading on-line.

Suggestions and on-line readings:

1. A good blog from John Smith about WPF and MVVM

2. Keep UI layer as thin as possible. No data manipulation in xaml.cs(as much as can be avoided). UI layer should be dumb. Move all complex data logic to view model.

3. Try to use data binding in xaml file as much as possible. Avoid adding code in xaml.cs file(C# layer for the UI should be thin). Instead add those UI logic in xaml file itself.

4. Use data converters

5. Keep the styles and data templates separate from the layout as much as possible. Then use those as StaticResource / DynamicResource wherever applicable. This ensures better reusability.

6. Define custom controls whenever necessary. Default controls may not always be perf-efficient.

7. WPF can cause memory issues if we are not careful. Detach any event handlers that we may have attached during UI loading / initialization. Dispose any IDisposable objects. Ref1 Ref2

8. One can find good tutorials on PluralSight.com

9. WPF Interview Question – This has real good questions which gives you an overview of various high level topics in WPF

10. XAML Guidelines

11. XAML Guidelines and Best Practices – This link has points to channel9 videos on XAML Guidelines

Once you get a good hang of these concepts, you would have real fun working on some good UI.

As a request always. Please do share links to interesting WPF UI examples/samples/blogs/new-concepts etc which you came across.

Good luck

Getting started with Big Data

Recently I have developed a lot of interest in learning Big Data and started exploring different learnings. I will provide links to some of the good resources I came across here, so that this would be a good starting point. I would request readers to suggest any additional readings in the comments.

1. Getting Started with Microsoft Big Data – From Microsoft Virtual Academy. This training has good introduction to using Windows Azure HDInsight. The sessions walk you through running MapReduce Jobs, Hive etc. These sessions a little out dated but you will get an Idea

2. Getting started with Windows Azure HDInsight : This has the latest documentation with up to date information on HDInsight.

The above two links are from Microsoft Technologies.

3. Yahoo! Hadoop Tutorial : This has a very good description of Hadoop Architecture

4. Apart from these, there are good courses on Coursera (Data Science, this is a very good course to get an idea of various Big Data solutions), Cloudera Training

5. Introduction to Hadoop and MapReduce: This is a course on Udacity. Very quick to finish. Really nice one.

6. Map Reduce – A really simple Introduction – here

Please do suggest any good references that would help me and other readers.