Marlabs  
  >>
Passionate about your results
  About Us      Services      Products    Industries  Partners    Careers    Awards News Contact Us 29

Marlabs Blog


Stay connected with the
worldwide business
community
A Self Rating Map for .NET Developers Thursday, June 30, 2011

I have put together a simple self rating mechanism that will help developers (mainly .NET developers) rate themselves cross a set of competencies in multiple areas. I have called it  the “Worth as a Developer Score” and it is modeled around the following aspects:

• Familiarity in basic concepts, common frameworks, tools and programming languages.
• Cross skill quotient and ability to work between platforms (within .NET framework).

Now here is how to find your Worth as a Developer Score (WDS). Consider the chart below. You are allowed to replace a framework/tool/Lib in the below map with a similar framework/tool/lib that is not there in the map. For example, you can replace NInject with AutoFac or EF with Subsonic. But make sure that the number of items in a quadrant remains unchanged.

image_thumb[6]

Now calculating your WDS Score is pretty simple.

1. For each item in the ‘Basics’ quadrant (SOLID, TDD etc) rate yourself out of 40. Since there are ten items in this quadrant, the maximum score you can have is 400.
2. Now for *all* items in *all* the other quadrants other than the ‘Basic’ quadrant, rate yourself out of 10. There are a total of 60 Items across the remaining quadrants. So the maximum score you can have is 600.

Add  both scores (what you rated yourself out of 400 and what you what you rated yourself out of 600) and you have your final WDS score. :)

Posted by Anoop Madhusudanan | No Comments
What’s the deal with Javascript VMs? Monday, June 27, 2011

The ability to run C/C++, Python, and Haskell programs on a Javascript VM?

http://www.infoq.com/news/2010/12/languages-on-javascript

All of a sudden, Google Web Toolkit (GWT) is beginning to look rather tame.
Making possible all the above “magic” is LLVM.

http://www.llvm.org/devmtg/2010-11/

LLVM makes this happen by making Abstract Syntax Trees (ASTs) of each language to produce compatible binary code for another language.

LLVM is headed to be the compiler backend in a couple of years. It is already being used by Intel, AMD, Apple, and GNU GCC, and is as critical as Linux, if not more. VMKit (an LLVM project) will allow the creation of multi-language, multi-platform VMs with ease. Creating a JVM or .NET runtime could soon feature on a university course. Libraries from any language will be accessible to any other language e.g. call MFC API from Fortran, Swing API from C#, or WPF API from Java.

Posted by Srinivasan Balram | No Comments
Introducing ‘Vingy’ Add-in for Visual Studio 2010 — Search StackOverflow, CodeProject, DotNetKick etc from within Visual Studio Friday, June 24, 2011

For a while now, I have been thinking about developing a web search plug-in for Visual Studio that would allow one to search the web, mainly sites such as StackOverflow, CodeProject, MSDN, in a non intrusive way without having to leave the IDE.

Meet Vingy 1.0: A simple but effective add-in for Visual Studio 2010 that enables you to search the web in a non intrusive way, filtering results based on sources.


Installing Vingy


Vingy is free and you can install it from this direct link hosted at Visual Studio Extensions Gallery or via the Extensions Manager in Visual Studio 2010 (Search Vingy in the Online Gallery).

How to use Vingy


You can initiate Vingy either by clicking View->Other Windows –> Vingy Search Window from the Visual Studio IDE, or by just highlighting text in the document and then clicking Tools –> Search Selected Text (Ctrl + 1).

Searching with Vingy is pretty straightforward. You can initiate a search in two ways:

  • By typing the text in the Vingy search box and pressing ‘Enter’ or by clicking the ‘Go’ button
  • By highlighting text in the editor when you type in Visual Studio and then pressing Ctrl + 1 (See image below)

image_thumb[88

So, after installing Vingy, highlight text in your editor and press Ctrl + 1 to start searching.

You can use the Next and Previous buttons to browse through the results, and click on the title of a result or on the tiny ‘Open’ button to open the result in a full browser window. There is also a progress ‘busy’ indicator that tells you if Vingy is busy.

The Source Selector


You may also restrict your search to particular sources. For example, you may want to view results only from StackOverflow or MSDN and not from the entire Web. You can select the source via the Source selector combo box.

image_thumb[7]

Happy Coding!

Posted by Anoop Madhusudanan | No Comments
Category Theory Replaces Set Theory Thursday, June 23, 2011

Category theory is an area of study in mathematics that examines, in an abstract way, the properties of particular mathematical concepts, by formalizing them as collections of objects and arrows (also called morphisms, although this term also has a specific, non category-theoretical sense), where these collections satisfy certain basic conditions.

http://plato.stanford.edu/entries/category-theory/

The subject has been around for over 60 years. There is no need for any math beyond sets and functions. Conceptual Mathematics (2009) by Lawvere & Schanuel is a great book on the basics of category theory and is a must read.

For those short of time, here’s a quick summary:

http://blog.hiremebecauseimsmart.com/post/615614573/functor

You need to understand category theory to get a handle on this:

http://books.google.com/books?id=-0iKK6sD5QgC&pg=PA520&dq=category+theory+vs+set+theory&hl=en&ei=hXjPTKf6M8mr8AbskI3jBg&sa=X&oi=book_result&ct=result&resnum=10&ved=0CFYQ6AEwCQ#v=onepage&q=category%20theory%20vs%20set%20theory&f=false

Granular Computing = Uncertainty Theory + Knowledge Engineering + How-to-Compute

…and only then would this conference make sense

http://xanadu.cs.sjsu.edu/~grc/grc2010/

…and this link shows articles how Category Theory provides a foundation for functional programming.

http://blog.mestan.fr/2009/01/09/category-theory-functional-programming/

…so what is a rough set? :)

Posted by Srinivasan Balram | No Comments
Top Seven Coding Standards and Guideline Documents for C#/.NET Developers Wednesday, June 22, 2011

In my last post, I had collated a list of seven must read, free EBooks for .NET Developers, and a number of people found the list to be useful. Encouraged by this, I have put together a similar list of standard guidelines/checklists for .NET /C# developers.

While it may not be a huge stretch in coming up with such a document, the key lies in implementing these standards using internal trainings, peer reviews, check in policies, automated code review tools etc. You can take a look at FxCop and StyleCop for automating the review process, and you can customize the rules based on your requirements.

So here we go. The order is not significant.

1 – IDesign C# Coding Standards

IDesign C# coding standards is a pretty good and compact (27 pages!) coding standards document. It covers naming conventions, best practices, and framework specific guidelines.

Example:

image_thumb[8]

The document even has guidelines for project settings, build configuration, versioning etc.

Download IDesign C# Coding Standards

2 – Encodo C# Handbook

Encodo C# handbook is more recent and has 72 pages of guidelines on structure, formatting, and naming. It also has a ‘patterns and best practices’ section, which is a must read for any .NET/C# developer.

image_thumb[14]

You can download the handbook here:

Download Encodo C# Handbook

3 – Microsoft Framework Design Guidelines


MSDN has a section on guidelines for designing class libraries, which covers a set of best practices related to type design, member design etc. You can find it here:

Read the Design Guidelines for Developing Class Libraries

4 – Dennis’ C# Coding Standards Document

Dennis created an initial version of C# coding standards, which was published as the Philips Health Care C# coding standards document (~70 pages). The document categorizes guidelines for areas such as naming, exception handling, control flow etc.


  • Update: The Initial Version I have linked here has now been superseded by the Coding Guidelines for C# 3.0 and C# 4.0. Paul Jansen of Tiobe will update his site soon with the new version. In the meantime, you can download the guidelines and a few companion documents here:


http://csharpguidelines.codeplex.com/

5 – Microsoft’s All-In-One Code Framework Coding Guideline

Microsoft’s All In One Code framework has a coding style guideline document. The Microsoft All-In-One Code Framework is a free, centralized code sample library provided by the Microsoft community team. It has typical code samples for all Microsoft development technologies along with a guideline document on code styles.

Download All In One Code Framework Guideline Document

6 – Brad’s Quick Post on Microsoft Internal Coding Guidelines

Brad had a post on Microsoft Internal coding standards. It is a short post that delves into styling and naming conventions.

Read Microsoft Internal Coding Guidelines Post

7 – Mike’s C# Coding Style Guide

Mike Kruger (Sharpdevelop) has published a 13 page C# Coding Style guide. Again, the focus is on casing, naming conventions, declaration style etc.

Download C# Coding Style Guide

Tags: , , , ,
Posted by Anoop Madhusudanan | No Comments
Seven Freely Available E-Books/Guides for .NET Programmers and Architects Friday, June 17, 2011

I have compiled a list of useful free e-books for .NET programmers and budding architects. Many of us start our programming careers as ‘casual’ programmers. My definition of a ‘casual’ programmer is someone who can write code, but is not overly focused on the aesthetics, efficiency, extensibility, and readability of the code created.

These e- books will help readers to develop coding skills and thought processes for building better solutions. Hope you find this list useful, here we go:

Foundations of Programming

The Foundation of Programming e-book series by Karl Seguin is one of my favorites as it is short, simple, and sweet. It allows ‘casual’ programmers to better their thought processes, enabling them to code better. The book covers the ALT.NET philosophy, domain driven development concepts, DI, and TDD etc. This book is close to my heart!

Download From Here

Microsoft Application Architecture Guide, 2nd Edition

Published by Microsoft, this is an essential read for any aspiring Microsoft.NET developer or architect. It explains the underlying architecture and design principles and patterns for developing successful solutions on the Microsoft platform and .NET framework. This guide covers popular architectural patterns, best practices, and common challenges faced you need to get a handle on for developing .NET applications.

Download From Here

Rob Miles C# Yellow Book 2010

This is a nice action-packed book that takes you through C# and .NET concepts. It explains the C# language and .NET library in general with a clear focus on implementation thought processes and best practices.

Download From Here

Threading in C#

This is a short, neatly written book from Joe Albahari about threading in C#. It is a must read for any .NET programmer who wants to learn all about threading in general: thread pooling, synchronization, non blocking synchronization, etc. In this book, Joe also covers parallel framework extensions and parallel programming in .NET.

Download From Here

Improving .NET Application Performance and Scalability

This guide is again from Microsoft. It focuses on designing applications with performance and scalability in mind. It has sections relevant to architects, developers, testers, and administrators. Following the checklists and guidance in this book will help one eliminate ‘unpleasant’ surprises at the end. Read this guide if you are someone who develops enterprise applications in .NET.

Download From Here

Applying Design Patterns

This is a quick introduction to applying design patterns. The objective of the book is to introduce design patterns in a simple way, so that developers can understand some common patterns and how to apply them.

And the author is yours truly Yours :)

Download From Here

RefCardz from DZone

DZone has a number of brilliant Ref Cardz (Quick reference sheets) on multiple technologies. You can go to DZone –> RefCardz to browse and download them (after getting a free DZone Id). Here are some of my recent favorites :

 


Also, make sure you read 4 .NET 4.0 libraries you should know better and 6 Visual Studio 2010 Tips to boost your productivity

Tags: , , , , , ,
Posted by Anoop Madhusudanan | No Comments
An RSS Reader for All Screens – Sharing your View Model and Code between Windows Phone 7, Silverlight, WPF, and Surface Thursday, June 16, 2011

Microsoft’s unified client application development stack is indeed remarkable. If you can develop client applications leveraging XAML and MVVM, you should be able to build applications for multiple devices, including Windows Phone 7, Silverlight, WPF, and Microsoft Surface. And to a large extent, you can reuse code across these devices as well.

A Quick Introduction

Let us take a look at how we can reuse most portions of the source code (including the View Model) across WP7, Silverlight, WPF, and Surface, to build a simple RSS Reader. I have developed a screen cast about building an RSS reader by sharing code across WP7, Silverlight, WPF, and Surface. The video also explains basics of XAML, MVVM etc.

Click Here to Download Screen Cast

What are we building?

I am using Microsoft Visual Studio 2010 with Silverlight developer tools, Windows Phone 7 tools, and Microsoft Surface SDK for touch devices installed. We will be building an RSS reader for all the above devices: here are the screen shots of the final applications.

In Surface Simulator:

In Surface Simulator:

In Browser (Silverlight):

In Browser (Silverlight):

In Desktop (WPF):

In Desktop (WPF):

In Windows Phone 7:

In Windows Phone 7:

As you may have noticed, almost 80 percent of code is shared via multi targeting. Classes shared include:

•    RssReaderViewModel – This is our actual view model.
•    RssEntry – The model element that actually holds an element.
•    RssReader – Contains methods for fetching the RSS feed from a remote server.
•    AsyncDelegateCommand – My own asynchronous version of the delegate command.

In all the projects, you may see a ‘Shared’ folder that has links to shared files in the RssReader.Common project.  The views are different for each device but the view model and feed fetching logic etc remain the same. See the Solution Explorer.

image[45]

The Source Code

Explore the source code here in Codeplex. It is a quick demo that I have put together. You will probably need to add elements such as proxy support for the web client if you plan to test this behind a proxy.

Tags: , , , , , ,
Posted by Anoop Madhusudanan | No Comments
Understanding Computer Security with Marlabs Monday, June 13, 2011

Programming Code picture



Despite the fact that computers are ubiquitous, many people remain relatively uninformed about computer security. To make matters worse, in many instances, little is done to fully secure a computer system or network until a breach has already occurred. Quite a few organizations still hold onto the belief that they will never be hacked. The fact of the matter is that it’s unrealistic to think that any enterprise is immune to computer security breaches. If data systems of major corporations such as Google, Sony, and Lockheed Martin can be compromised then clearly any enterprise is at risk. The objective of this article is to try to demystify many of the issues surrounding computer security.

Online applications are typically more vulnerable to security breaches. In the rush to establish an online presence many organizations rush to develop web applications without subjecting them to the sort of rigorous testing that is standard for normal commercial applications. As a result many web applications launch with security flaws in their design, which are often exploited by hackers.

Source Code Vulnerabilities

Flaws in a program’s source code can range from simple mistakes to even intentional errors coded by disgruntled employees. Hackers and other groups can exploit these source code flaws and compromise the affected application. Thorough security audits in addition to source code testing can help mitigate risk.

Internal and External Computer Security Concerns

One step that can go a long way to improving both internal and external security is a good password policy. Far too many organizations continue to use simple or default passwords and fail to implement proper access control. Default passwords for new users like “admin” should always be changed to something more secure as soon as possible. One of the first things a hacker will do when trying to gain access to a system is try common and default passwords and phrases. It is also essential to quickly revoke former employees’ access to systems. All the security in the world won’t help if they essentially have the keys. To that end, passwords should also be changed enterprise-wide at regular intervals.

In an effort to create stronger passwords for users many sites and services today prompt users to select passwords with special characters such as a dollar sign ($) or ampersand (&) among others; making them harder to crack. Of special note are programs run through all of the words in the dictionary (dictionary attacks), so it is a good idea to avoid including any actual words in your passwords. With dictionary attacks hackers can crack a password in seconds.

However, the more complex the password the harder it is to crack, even with most advanced password breaking methods. Most people are stunned to hear how much a password’s strength, which indicates how long it would take to crack, increases just adding a few characters or symbols. For instance, based on theoretical data, a password comprised of ten numbers 0-9 can actually take less than one second to crack but by adding a capital letter such as “A” to the password, the time it takes to crack it increases to over 10 seconds. An increase to over 10 seconds might seem insignificant, but in reality that is tenfold increase in time. Furthermore, by adding a lower case letter and two special characters such as exclamation point “!” and a tilde “~” to the password the time it takes to crack it increases to over a year, theoretically. A general rule is that while added symbols to a password make it more complex the real increase in the time it takes to crack a password comes from its length. The longer a password is the better regardless of its complexity.

As long as there is data worth protecting there will be people determined to gain unauthorized access to it, but the important thing to remember is don’t be afraid — be prepared.

via McAfee

Photo by Marcus

Tags: , , ,
Posted by Vivek Ramegowda | No Comments
 
  Blogger Profiles
 
 
 
 
  Linked in
 
 
 
 
  Marlabs on
Facebook
 
 
 
 
  Follow us
on Twitter
 
 
 
 
  Read our Feed