Saturday, July 31, 2010

High Speed Internet


The first time I connected to internet was some 9 years back, I got my own internet connection around 8 years back, and at that point of time I used to get 56 Kbps speed, and today I have a 512 Kbps line.

Is this speed enough for me? Hell no.. why not? because even today I can’t watch my videos directly off the web. Although I can watch low quality videos online, but now I want HD quality. I wonder if I will ever be satisfied with my connection.

Sunday, July 18, 2010

WPF Converter values


I posted this at stackoverflow : http://stackoverflow.com/questions/3204422/wpf-corelating-multibindings-and-converters-values

The problem was how do you handle indexes when your converter value array is of large size. I thought over it and come up with this:

https://www.assembla.com/code/TechnologyAndMe/subversion/nodes/ConverterValues
(Download complete source using a SVN client from http://subversion.assembla.com/svn/TechnologyAndMe/ConverterValues/)

So now all you have to do is :









Here Prop1,Prop2,Prop3 are the actual values that you want to pass to the converter, Value1, Value2, Value3 are just ids for Properties below them. Now in the converter, just use my BoundValues class and accessing the properties become as easy as saying :

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
var boundValues = new BoundValues(values);

return string.Format("{0} {1} {2}",
boundValues["Value1"], boundValues["Value2"], boundValues["Value3"]);
}

Where BoundValues["Value1"] returns value of Prop1, so now I no longer have to worry about managing the sequence of bindings in my XAML.

Thursday, May 27, 2010

Generic Singleton

****

What was I thinking, if I use any regular class here, it will not be singleton as you could always new() up an instance.

****
Once and for all, I am going to settle with this implementation of singleton.

https://www.assembla.com/code/TechnologyAndMe/subversion/nodes/Singleton
(Download complete source using a SVN client from http://subversion.assembla.com/svn/TechnologyAndMe/Singleton )

Singleton is now as easy as:
var instance = Singleton<SomeOtherClass>.Instance;

Tuesday, May 18, 2010

Agile Estimation

I have created this document describing how to estimate for agile projects :
http://docs.google.com/View?id=dm24bwn_37hkjw97ff

Please provide your feedback and you are more than welcome to contribute your ideas/experiences.

Sunday, May 16, 2010

Downside of LINQ

 

  1. Operators like Orderby are greedy, when used execution is no longer lazy.
  2. You have to pay more attention to LINQ queries for remote data
  3. If you use Count on LINQ query and also use the same query in foreach, then you end up iterating over the dataset twice.
  4. no edit and continue support

Wednesday, May 05, 2010

Why should you use LINQ


What are the benefits of using LINQ?

  • Lazy evaluation
  • Parallel execution using PLINQ
  • Abstraction – declarative – only tells what is required, not how to get it
  • Because of extension methods – you can apply LINQ on anything
  • Works with any LINQ provider

Saturday, May 01, 2010

REST vs SOAP

 

REST

SOAP

Simple HTTP next DCOM
not transport neutral transport neutral
  message based security
only CRUD operations CRUD + more
can scale ?
broader reach and interoperability ?
std format using GET,PUT,POST,DELETE format is SOAP envelope,header,body
no need for WSDL  
data format can be JSON or XML  
easy to version and evolve ?
bookmarking and caching can be done cannot be done
Cloud computing people are using REST ?

SOAP is typically used in enterprise scenarios as middleware and most of the operations are pretty much CRUD operations.

Why REST :

  • if you only do HTTP
  • if you don’t need WS* and web Security(SSL) is good enough
  • Simpler than SOAP , uniform, comparable

Why SOAP :

  • if you need message based security – banks
  • your services are middle ware rather than public web services(web facing)
  • your services are local to enterprise

My post here tells you what REST is, however that is the most common understanding of REST, the definition goes beyond it, ex.

  • that resources be self-describing
  • complete object should be provided to POST/PUT instead of key value pairs of updates
  • collection of resources should be resource that represents a collection of other resources

World wide web is a RESTful system. Does your browser (the client) know whether it’s displaying a banking website or a casual game? Nope, it just utilizes standard media types (HTML, CSS, Javascript) to compose and represent the data. You don’t have to know the specific URL you’re looking for on a website so long as you know the “starting place” (usually the domain name) and can navigate there.

So REST is an ingenious and flexible way to allow for the consumption and traversal of network-available information. What it’s not, however, is a very good roadmap toward building APIs for web applications.