Statistics
Visits: 105083
Page Visits: 139165
Active visitors (monthly): 5364
Feed Count: 45
Most visited page: Adding value as a technical analyst
Archive : Nov 2010

Adding value as a technical analyst

There are some market analyst predicting a double-dip recession. So, 2011/12 may be a year of recession. Recession is the time when the tough survive. Here are some tips on how you can improve your technical skills:

Know all the features of the product / framework that you are using. Understand the implications of using a specific feature. For eg, are you aware of web parts framework in asp.net. Are you aware that it can be personalized and it uses the aspnet db. Unless you know the features and limitations, you will not be able to convince the business that something like iGoogle can be done with a few hours of effort in asp.net

Ability to compare different frameworks and the equivalent of one feature in another framework. In Asp.net, there are two frameworks - WebForms, MVC. What is the MVC equivalent of a user control in WebForms. What is the difference between using RenderPartial() and RenderAction() in MVC?

Ability to suggest multiple alternatives of doing the same thing. If you want to implement Tabs extensively, is AjaxControlToolkit the best choice? Or can JQuery Tabs be used as an alternative? Or is it better to go for a well designed custom control. If it is a custom control, will you go for a plain server control or an Microsoft AJAX library based server control.

Getting things done in time is a great asset that business loves. Troubleshooting and debugging can help you get things done. An extremely good debugger can get anything done in the world.

In the words of Martin fowler, "Any fool can write code that computer understands. A good programmer writes code that humans can understand". Today, the most important aspect of software programming is maintainability. Can you write code that can be maintained with the least cost? If so, do it and highlight to the business the maintenance cost that is involved to maintain your code.

Follow good design practices and patterns. Are you aware of Dependency injection pattern - programming to interfaces. Why is MVC considered a novel way of improving the presentation layer? The best book available for understanding .Net patterns is - Dino esposito's Architecting applications for the enterprise.

One of NRN's favorite quotes is: "Love your job but don't love your company because you never know when it will stop loving you". In times of upcoming recession, it is good to love the work and add value to the business, but you may still get fired.

Permalink | No Comments | Leave your comment
 

A few tips for niche companies

I like to see more technology based niche companies in India. There are many areas like consulting, support for open source software, or a specific technology area like MVC or Azure where niche companies can operate.

The key to building niche companies is getting business. To get business, a domain expert is required, who has got great knowledge about the product or domain. Domain experts speak the language of the customer. They understand the requirements much better. They can prepare requirements document and test the final deliverable.

Aligning the business to a specific industry and specific geography can help. Common industries that are willing to spend a lot of money are banking, insurance, retail, pharma. Trendy industries are social networking and mobile apps.

Mini-products or solutions is a good way to show-case capability. Mini-products are highly customizable and extensible products that contain the base framework and allow a high degree of customization for individual customers.

Have light-weight process adherence and highlight it. Check agile in wiki for a list of agile methodologies. Pick one, prepare templates for it, and stick to it. CMMI is a good organization process framework whereas any agile methodology is a good engineering process framework.

Permalink | 1 Comment | Leave your comment
 
Commented by DDR at 11-Jan-2011 12:00 AM

From beginning to end you nailed this post to the wall! Great Job!

New features added to the blog

A lot of new features are added to the blog:

  1. Scheduled publishing
  2. Ability to add code in the blog from the editor
  3. Syntax Highlighter to highlight the code
  4. Enhanced XML Profile Provider to delete inactive user profiles
  5. A better compose page

A few technical enhancements have been made:

  1. Usage of FckEditor as the compose tool
  2. Extensive use of AjaxControlToolkit
  3. Good reusable code in the business/data layer
  4. DIV based styling of UI

I hope the new release is much more useful than the previous one.

Permalink | No Comments | Leave your comment
 

LiteBlog Beta is released in CodePlex

This blog runs using a custom blog engine developed over a period of time. I have published the blogengine in CodePlex as LiteBlog. If you are interested to explore, you can check this out. It is light and integrates well with your app with a few changes.

Permalink | No Comments | Leave your comment
 

Notes on Asp.Net MVC

Here are some notes about Asp.Net MVC:

Asp.Net MVC is modelled around Model2 (Struts-like) framework based on the original MVC. The controller processes the HTTP requests, finds a View and passes the ViewModel to the View. The View updates itself with the ViewModel.

In Webforms, the Page class is the HTTP Handler. MVC requests are handled by MVC Handler. MVC Handler examines the URL to identify the right controller factory and the right controller. The controller has an execute method that does most of the processing. Internally the controller uses ActionInvoker to identify the action and invoke the action. Action selectors are attributes that can help identify the right action to select for a request. Action filters operate before and after the method call and does things like authorization, exception handling, etc. The result of the action method call is wrapped into an ActionResult object. The ActionResult has an ExecuteResult method that provides the final response to the browser. ActionResult can be ViewResult, JSONResult, FileResult, EmptyResult etc. It is upto the View engine to process the ActionResult to produce meaningful HTML / Javascript to the browser.

All aspects of MVC is customizable - ControllerFactory, Controller, ActionInvoker, ActionFilter, ActionSelector, ViewEngine, ViewResult, ModelBinder. 

The default View engine in MVC is the WebformsViewEngine. This means that master pages, content pages, user controls, themes, will work well in MVC. Because MVC does not have a page postback lifecycle, events on controls will not be triggered. Server controls are generally not recommended in MVC. Server controls generate ViewState which is of no use in the MVC world. MVC uses Helper classes to generate HTML. Helpers exist for both HTML, AJAX. However, I would recommend using JQuery extensively in MVC apps instead of the helper classes.
 

Till Microsoft supports MVC with a MVCViewEngine with a set of server controls suited for MVC, the adoption of MVC will be slow. SparkViewEngine has a set of HTML tags that can fill this void, for the time being. Maybe MVC 3 will have more UI features like Intellisense for controllers, actions etc. R# (Resharp) is a third-party plug-in that provides similar features.

Update: Razor in MVC 3 seems to be what we need in a ViewEngine. Will be checking, if I can migrate this blog to use MVC with Razor.
 

Permalink | No Comments | Leave your comment
 

Auto-save draft documents

While composing large documents, an auto-save feature can be provided. The document can be saved from a RichEdit control on to the backend cache using the AJAX timer control.

<edit:ComposeEditor ID="PostEditor" runat="server" Width="700" Height="500" AutoFocus="true">
<asp:UpdatePanel ID="TimerPanel" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
    <asp:Label ID="TimerLbl" runat="server" ForeColor="Blue"></asp:Label>
    <asp:Timer ID="EditorTimer" runat="server" Interval="10000" OnTick="EditorTimer_Tick">
    </asp:Timer>
    </ContentTemplate>
</asp:UpdatePanel>

This method can be used with big forms as well. As the UpdatePanel automatically posts the entire viewstate, the state of other controls is available in the postback. The timer event handler that does the saving is shown below:

protected void EditorTimer_Tick(object sender, EventArgs e)
{
    post.Contents = PostEditor.Content;
     // Save the contents of the editor
    TimerLbl.Text = String.Format("Draft autosaved at {0}", ISTime.Now.ToLongTimeString());
}
Permalink | No Comments | Leave your comment