<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" gd:etag="W/&quot;CU4HSXszeyp7ImA9WhdXFUs.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959</id><updated>2011-08-28T13:38:58.583-07:00</updated><category term="Infinity Loop" /><category term="TAPI vs. TSAPI UCID" /><category term="customer satisfaction" /><category term="design patterns" /><category term="AES" /><category term="PBX" /><category term="Interop forms" /><category term="Pivot Table" /><category term="Extension Methods in VS 2008" /><category term="SP" /><category term="interop toolkit 2.0" /><category term="C jam" /><category term="CM" /><category term="What's new in VS 2008?" /><category term="satmap" /><category term="SQL Problem" /><category term="web applications" /><category term="map" /><category term="SP_Columns" /><category term="fault tolerance" /><category term="What is NHibernate?" /><category term="Avaya" /><category term="Pivot Operator" /><category term="XAML" /><category term="Windows Presentation Foundation" /><category term="Deadlock" /><category term="C# extension methods" /><category term="sql server 2008" /><category term="psychographic attributes" /><category term="Table Value Parameters" /><category term="Call Events" /><category term="Avaya Node ID" /><category term="tips" /><category term="Tricky" /><category term="TAPI vs. TSAPI" /><category term="crack the code" /><category term="Static function for Extension" /><category term="interop forms vb" /><category term="performance" /><category term="whats new in sql server 2008" /><category term="filtered indexes" /><category term="call center" /><category term="call routing" /><category term="TRG TECH Mind Games" /><category term=".net framework" /><category term="Rotating a table" /><category term="user experience" /><category term="intelligent routing" /><category term="scalability" /><category term="robotics" /><category term="Loop" /><category term="UCID" /><category term=".Net Remoting" /><category term="demographic attributes" /><category term="Sql server 2005 functions" /><category term="interoperability" /><category term="sat" /><category term="philosophy" /><category term="Intro to NHibernate" /><category term="web service vs remoting" /><category term="getting started" /><category term="satisfaction" /><category term="TRG" /><category term="Avaya UCID" /><category term="load balancing" /><category term="UCID Format" /><category term="TAPI" /><category term="WCF" /><category term="SQL Query" /><category term="TSAPI" /><category term=".net stock trader" /><category term="neural network" /><category term="how to sql server 2008" /><category term="contact center" /><category term="code jam" /><category term="asp.net" /><category term="quince" /><category term="information_schema" /><category term="WPF" /><category term="http compression" /><category term="Sql server 2008 intro" /><title>the official trg tech blog</title><subtitle type="html">insights from trg techies into our technology and culture</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/trgtech" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="trgtech" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;C0UERX45eSp7ImA9Wx9TEkk.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-3660742687806188302</id><published>2010-11-20T00:17:00.000-08:00</published><updated>2010-11-20T00:20:04.021-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-20T00:20:04.021-08:00</app:edited><title>WCF</title><content type="html">&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-3660742687806188302?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/3660742687806188302/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=3660742687806188302&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/3660742687806188302?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/3660742687806188302?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2010/11/release-of-pray-for-pakistan-dj-z-chaos.html" title="WCF" /><author><name>Kashif</name><uri>http://www.blogger.com/profile/15818606513942209913</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkABQX0_fCp7ImA9Wx5UFUs.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-926639961730602220</id><published>2010-10-19T04:20:00.000-07:00</published><updated>2010-10-20T00:45:50.344-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-20T00:45:50.344-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="intelligent routing" /><category scheme="http://www.blogger.com/atom/ns#" term="map" /><category scheme="http://www.blogger.com/atom/ns#" term="sat" /><category scheme="http://www.blogger.com/atom/ns#" term="demographic attributes" /><category scheme="http://www.blogger.com/atom/ns#" term="call routing" /><category scheme="http://www.blogger.com/atom/ns#" term="psychographic attributes" /><category scheme="http://www.blogger.com/atom/ns#" term="call center" /><category scheme="http://www.blogger.com/atom/ns#" term="neural network" /><category scheme="http://www.blogger.com/atom/ns#" term="satisfaction" /><category scheme="http://www.blogger.com/atom/ns#" term="satmap" /><category scheme="http://www.blogger.com/atom/ns#" term="contact center" /><category scheme="http://www.blogger.com/atom/ns#" term="TRG" /><category scheme="http://www.blogger.com/atom/ns#" term="customer satisfaction" /><title>SATMAP</title><content type="html">&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;SATMAP, an acronym for SATisfaction MAPping, is an artificial intelligence application for matching callers to agents in a contact center, based on a real-time analysis of diverse personality attributes. It is a neural-network based call-mapping engine that connects customers to the contact center agents by taking into account key psychographic and demographic factors. SATMAP is the first ever intelligent call routing system available for contact centers that significantly and quantitatively improves customer satisfaction, reduces average call handle time and increases sales. It is a registered trademark owned by The Resource Group (TRG).&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;History&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;SATMAP was founded in 2004 as a wholly owned subsidiary of The Resource Group, a global business process outsourcing and technology company. After providing audited performance improvements to the global operations of TRG, SATMAP has increasingly provided technology solutions to the broader contact center industry since 2007. With SATMAP, the calls no longer need to be routed to the best performing or the longest waiting agent. Instead they can now be routed to the agent that has the best personality match for each caller. Skill Based Routing (SBR), a traditional call routing methodology, has been implemented extensively in the contact center industry. Over the years, skill based routing has proved to be a widely implemented solution for contact centers. Some of the global telecommunication companies following the SBR call routing methodology include Avaya, Nortel, and Cisco etc. SATMAP strives to add intelligence to the existing call routing systems by selecting the best agent from the agent pool based on the demographic and psychographic attributes of both the caller and contact center agents. SATMAP makes the ultimate decision as to which individual agent is assigned to a particular caller, based on complex but highly intuitive personality fits.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;SATMAP Solutions&lt;/strong&gt;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;SATMAP has numerous call routing solutions which are based on different optimization metrics, as discussed below:&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;SATMAP Enterprise (SME)&lt;/strong&gt; customers are given up to eight different optimization metrics, including the traditional metrics of revenue optimization, cost reduction, and customer satisfaction. With five additional slots, SME customers can optimize diverse metrics including insurance claims pay put, customer collections, medical diagnosis accuracy, and other industry-specific metrics.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;Performa&lt;/strong&gt; enables a proactive approach to contact center management by facilitating dynamic control of operations based on rapidly changing calling conditions. Performa is an entry-level system that is upgradable to SATMAP Enterprise.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;TS&lt;/strong&gt; is a neural-networks- based call routing system tuned specifically to optimize technical support functions at contact centers. TS customers are given options to customize their optimization metrics including those that are critical to determining the success of technical support objectives: truck rolls, equipment replacements and call escalations.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;Revmax&lt;/strong&gt; is used purely as a revenue-enhancement application for contact center environments. It analyzes detailed caller and agent attributes in real-time to determine which caller-agent combination will result in the highest likelihood of a revenue outcome.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;L2&lt;/strong&gt; is configured to dynamically manage contact center call queues in order to optimize the result of every customer-agent interaction. L2 tracks every call's unique characteristics and detailed caller attributes to create a holistic view of incoming calls. A neural-network algorithm is used to match these incoming calls with relevant agents, based on performance and personality fit ensuring that agents are connected to the calls they can most likely resolve successfully.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:130%;color:#000000;"&gt;&lt;strong&gt;SATMAP Features&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;Connecting caller with the right agent&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;In contact center environments, purchase behavior is driven by the degree to which agents build empathy and rapport with a caller. This, in turn, is a direct function of the degree to which the personality of agents and callers fit together. By connecting the caller with the right agent, SATMAP caters three different attributes related to client’s business preferences. These goals which are concentrated upon by the SATMAP team are:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;Customer Satisfaction&lt;/strong&gt;&lt;br /&gt;In a competitive marketplace where businesses compete for customers, customer satisfaction is seen as a key differentiator and has increasingly become a key element of business strategy. SATMAP reaches the customer satisfaction level by connecting a caller to an agent who has the potential of handling the call in an effective manner that leaves the caller satisfied. It also maintains data on satisfaction score of the agent by getting a feedback from the customers. So in this case the factor that is taken into consideration for the decision making is the Historical Satisfaction Score of the Agent.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;Revenue&lt;/strong&gt;&lt;br /&gt;A company’s performance is measured by the extent to which its revenues compare with its expenses, thereby making revenue boost a critical business objective. Revenue can be optimized with more n` more calls resulting in sales i.e. a customer ends up buying a product as a result of successful communication with the agent. Keeping this concept in mind SATMAP considers the following factors when creating agent and caller mapping: historical agent data, background of the agent, customer’s buying propensity, agent mood.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;Cost&lt;/strong&gt;&lt;br /&gt;Cost can be reduced by connecting an incoming call to an agent that takes less time in handling the call; ultimately saving agent’s time as well as the cost incurred on the call. Apart from the ability to handle calls in lesser time, an agent who shares a similar background with the customer in terms of language, ethnicity or same age group stands a better chance of conveying the right message in short time. SATMAP mainly focuses on the historical handle time of the agent and agent’s background for cost reduction.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;Support for customized algorithm implementation&lt;/strong&gt; &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;SATMAP can customize the algorithms that help in decision making based on client’s requirements and preferences. The changes in the algorithm also vary due to the SATMAP solution used to optimize the caller-agent pairings. Thus the algorithms used by SATMAP for the purpose of decision making can easily adapt to the particular choices laid out by the client.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;Self–learning Capability&lt;/strong&gt; &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;SATMAP is capable of updating and refining itself based on the machine learning algorithm selected for a certain client. This is performed through an integral component which keeps on executing updating cycles after regular intervals. During the course of an update cycle, the performance of an implemented algorithm is analyzed and based on the results, the algorithm can be replaced if required. This self-learning capability serves as a means of better optimization of the overall working of the system.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;Support for multifarious switches and related software products&lt;/strong&gt; &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;SATMAP works natively with most commercial skill based routing and cloud-routing systems and integrates seamlessly with most major third party technology platforms. SATMAP functions on many different platforms which include switches and other related products.&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;Aspect Call Center ACD &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;Aspect Rockwell Spectrum&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;Asterisk&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;Avaya&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;Cisco UCCE&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;Genesys&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;Interactive Intelligence&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;Nortel &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;Stratadial&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;Sytel Softdial Contact Center &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;TeleDirect Liberation 6000 Dialer&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;trg Dialer&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;Seamless integration of SATMAP in a contact center&lt;/strong&gt; &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;SATMAP integration is a low-impact process and does not require changes to recruitment, training, compensation or other existing business processes of the contact center. SATMAP only utilizes the existing resources that the client has invested in the contact center.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;SATMAP failsafe feature&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;In case SATMAP is unable to cater the call route request, the call continues the normal course which results in the call being sent to a skill queue and assigned to an agent by the PBX. In this way SATMAP executes a failsafe approach for handling calls and ensures that the caller receives the same treatment when waiting for an agent, regardless whether SATMAP is running or not.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:130%;color:#000000;"&gt;&lt;strong&gt;SATMAP Architecture&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;SATMAP interfaces with multiple modern and legacy PBX switches. The communication between switch and SATMAP is managed through a switch interface, responsible for providing a translation between the switch and internal SATMAP events. The data for decision making is continuously refined by SATMAP through the use of several algorithms which assist in filtering calls and agents for SATMAP’s decision making. Some additional information in the form of customer and agent demographic as well as psychographic attributes aids this decision making process. The output i.e. the optimal caller-agent pair is sent back to the switch interface which in turn sends it to PBX for routing. In order to perform its integral functionalities, SATMAP interacts with a number of external systems that support the overall operations of the application. These external systems include:&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;Agent Information Management System (AIMS)&lt;/strong&gt; &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;The data pertaining to the agents is managed by the Agent Information Management System. AIMS is a key component of SATMAP deployment as it maintains the agent survey application which the agents fill out at the onset of their employment in a SATMAP-enabled contact center. This survey becomes the source of the agent’s demographic and psychographic information which is then used to generate optimal caller-agent mappings. Demographic data are the characteristics of a population, like sex, race, age, income, location, disabilities, mobility, educational attainment, home ownership, employment status. Psychographic data, on the other hand, encompass attributes pertaining to lifestyle, attitudes, beliefs, values and personality. The contact center agent enters the data into AIMS by completing a survey consisting of approximately 150 questions. To ensure the accuracy of the data, every 30 days the agent is asked to complete a refresh survey. Both the initial survey and the refresh survey can be customized for specific applications.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;SATMAP Portal&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;The SATMAP Portal is a web based application which provides comprehensive turnkey reporting and allows the management to monitor the real-time performance of a campaign. Reports are available on: &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;Agent and customer demographics&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;Agent performance&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;Call center and campaign performance &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;Call History Server&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;The Call History Server is a logical server used to collect and collate call history from one or more sources. To collect the historical call data, the Call History Server uses different data access methods.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;Acxiom&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;Acxiom, a global interactive marketing services company, provides information on the caller demographics and psychographics.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/_KrWGd4q-K8w/TL6YSYl7YTI/AAAAAAAAAF0/JmcWMraVzos/s1600/High+level+view.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 262px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5530024834064146738" border="0" alt="" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/TL6YSYl7YTI/AAAAAAAAAF0/JmcWMraVzos/s320/High+level+view.png" /&gt;&lt;/a&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;strong&gt;Science Behind SATMAP&lt;/strong&gt;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;A typical contact center consists of a number of human agents, each assigned to a telecommunication device, such as a phone or a computer for conducting email or Internet chat sessions, that is in turn connected to a central switch. Using these devices, the agents are generally used to provide sales, customer service, or technical support to the customers or prospective customers of a contact center or a contact center's clients. Industry research consistently shows that the central driver of customer satisfaction is the degree to which agent and client established a rapport over the course of their interaction. In turn what drives rapport and engagement is the degree to which agent and customer personalities coincide. Through SATMAP intelligent call routing system; this concept is incorporated to deliver best services to the valued customers. SATMAP optimizes the routing of callers to agents in a contact center. In general, contact routings are optimized by routing contacts such that callers are matched with and connected to particular agents in a manner that increases the chances of an optimal interaction that is deemed beneficial to a contact center. This optimal interaction is improved by grading agents and matching a graded agent with a caller. SATMAP increases the chance of an optimal interaction by matching a caller to an agent using a computer model derived from data describing demographic, psychographic, past purchase behavior, or other business-relevant information about a caller, together with data describing demographic, psychographic, or historical performance about an agent. Agent and caller demographic data can comprise any of: gender, race, age, education, accent, income, nationality, ethnicity, area code, zip code, marital status, job status, and credit score. Caller demographic and psychographic data can be retrieved from available databases by using the caller's contact information as an index. Available databases include, but are not limited to, those that are publicly available, or those that are commercially available, or those created by a contact center or a contact center client. Once agent data and caller data have been collected, this data is passed to a computational system. The computational system then, in turn, uses this data in a pattern matching algorithm to create a computer model that matches each agent with each caller and estimates the probable outcome of each matching along a number of optimal interactions, such as the generation of a sale, the duration of contact, or the likelihood of generating an interaction that a customer finds satisfying. The pattern matching algorithm can comprise any correlation algorithm, such as a neural network algorithm or a genetic algorithm. To generally train or otherwise refine the algorithm, actual contact results (as measured for an optimal interaction) are compared against the actual agent and caller data for each contact that occurred. The pattern matching algorithm can then learn, or improve its learning of, how matching certain callers with certain agents will change the chance of an optimal interaction. In this manner, the pattern matching algorithm can then be used to predict the chance of an optimal interaction in the context of matching a caller with a particular set of caller data, with an agent of a particular set of agent data.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:trebuchet ms;color:#000000;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://4.bp.blogspot.com/_KrWGd4q-K8w/TL6ZSTpSfVI/AAAAAAAAAF8/c4cZifRN-Vs/s1600/Inbound-Call+flow.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 215px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5530025932247694674" border="0" alt="" src="http://4.bp.blogspot.com/_KrWGd4q-K8w/TL6ZSTpSfVI/AAAAAAAAAF8/c4cZifRN-Vs/s320/Inbound-Call+flow.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-926639961730602220?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/926639961730602220/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=926639961730602220&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/926639961730602220?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/926639961730602220?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2010/10/satmap.html" title="SATMAP" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_KrWGd4q-K8w/TL6YSYl7YTI/AAAAAAAAAF0/JmcWMraVzos/s72-c/High+level+view.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0IEQXs4eyp7ImA9Wx5VFUs.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-9180007619366183752</id><published>2010-10-08T12:16:00.000-07:00</published><updated>2010-10-08T12:18:20.533-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-08T12:18:20.533-07:00</app:edited><title /><content type="html">&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-9180007619366183752?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/9180007619366183752/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=9180007619366183752&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/9180007619366183752?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/9180007619366183752?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2010/10/release-of-pray-for-pakistan-dj-z-chaos.html" title="" /><author><name>Kashif</name><uri>http://www.blogger.com/profile/15818606513942209913</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUUMRH45eSp7ImA9WxFVFU0.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-4609945890108921271</id><published>2010-06-14T01:10:00.000-07:00</published><updated>2010-06-14T01:14:45.021-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-14T01:14:45.021-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="UCID Format" /><category scheme="http://www.blogger.com/atom/ns#" term="TAPI vs. TSAPI UCID" /><category scheme="http://www.blogger.com/atom/ns#" term="CM" /><category scheme="http://www.blogger.com/atom/ns#" term="Avaya Node ID" /><category scheme="http://www.blogger.com/atom/ns#" term="UCID" /><category scheme="http://www.blogger.com/atom/ns#" term="Avaya" /><category scheme="http://www.blogger.com/atom/ns#" term="Avaya UCID" /><title>Avaya UCID - Demystified</title><content type="html">&lt;div&gt;Avaya UCID consists of three parts:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) Node ID &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;(N)&lt;/div&gt;&lt;div&gt;2) UCID - Sequence number (S)&lt;/div&gt;&lt;div&gt;3) Timestamp (T)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Node ID (N)&lt;/b&gt;: A number between 1 and 32767. It is a unique number to identify the switch in the network that generated the call.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;UCID - Sequence number (S)&lt;/b&gt;: A number between 1 and 65535. This number uniquely identifies the call in a given node.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Timestamp (T)&lt;/b&gt;: This time is the number of seconds since epoch (midnight 1 Jan, 1970) at the time of call origination.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;UCID Format&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Format of UCID is : NNNNNSSSSSTTTTTTTTTT&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Where N stands for Node ID, S for UCID-Sequence  number and T for timestamp.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;CM generated UCID for all calls originating at the switch. If UCID exists for an incoming call, CM stores the UCID without any modification. For incoming calls without UCID, the switch generate a UCID for the call. For calls spanning multiple switches, the UCID is sent along with call information during call setup scross the network (which would imply PRI with QSIG).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;Example&lt;/b&gt;: Assume a call has the following information stored in its call record&lt;/div&gt;&lt;div&gt;Node ID: 21; UCID - Sequence Number: 5; Timestamp: 946085673&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The generated UCID in ASCII format will be: 00021000050946085673&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-4609945890108921271?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/4609945890108921271/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=4609945890108921271&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/4609945890108921271?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/4609945890108921271?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2010/06/avaya-ucid-demystified.html" title="Avaya UCID - Demystified" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkYGRXwyeip7ImA9WxFVEkg.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-8214423295130793128</id><published>2010-06-11T05:07:00.000-07:00</published><updated>2010-06-11T05:08:44.292-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-11T05:08:44.292-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TAPI vs. TSAPI" /><category scheme="http://www.blogger.com/atom/ns#" term="Call Events" /><category scheme="http://www.blogger.com/atom/ns#" term="TAPI" /><category scheme="http://www.blogger.com/atom/ns#" term="AES" /><category scheme="http://www.blogger.com/atom/ns#" term="TSAPI" /><category scheme="http://www.blogger.com/atom/ns#" term="Avaya" /><category scheme="http://www.blogger.com/atom/ns#" term="PBX" /><title>TAPI vs. TSAPI</title><content type="html">&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms', verdana, arial, sans-serif; font-size: 13px; border-collapse: collapse; color: rgb(51, 51, 51); line-height: 18px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;TAPI is a telephony API developed by Microsoft, TSAPI is a telephony API developed by the company that eventually became Avaya (AT&amp;amp;T -&gt; Lucent -&gt; Avaya). TAPI's design was oriented torward first party call control (i.e. phones), while TSAPI was oriented torward third party call call control (i.e. PBXes and central office switches). TAPI does have some limited support for dealing with the call audio, TSAPI has none. I'd be very surprised if you could find a TAPI TSP for Avaya AES, and you won't be getting it from Avaya if you do.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms', verdana, arial, sans-serif; font-size: 13px; border-collapse: collapse; color: rgb(51, 51, 51); line-height: 18px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms', verdana, arial, sans-serif; font-size: 13px; border-collapse: collapse; color: rgb(51, 51, 51); line-height: 18px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;If all you're interested in is call events, then you can do the same things with both APIs, but the code will be totally different. Most companies that have products that have to talk to both Avaya AES and Cisco Call Manager have created an generic CTI interface for their product and then write code modules (aka drivers) that translate the TSAPI and TAPI call events to their generic event format. In your case, depending on your OS, you can move your TAPI code into a separate DLL/shared library, then create a separate DLL/shared library that implements the same functions but using TSAPI instead of TAPI.Frotunately, a lot of the smaller PBX manufacturers use either TAPI or TSAPI based APIs for their CTI interfaces, so if you have to connect to a third PBX, chances are good that you can reuse one of the two modules.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-8214423295130793128?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/8214423295130793128/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=8214423295130793128&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/8214423295130793128?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/8214423295130793128?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2010/06/tapi-vs-tsapi_11.html" title="TAPI vs. TSAPI" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEUDR3k5fCp7ImA9WxFWEkQ.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-4958798110330883750</id><published>2010-05-31T01:52:00.000-07:00</published><updated>2010-05-31T01:57:56.724-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-31T01:57:56.724-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="robotics" /><category scheme="http://www.blogger.com/atom/ns#" term="philosophy" /><title>The 3 Laws of Robotics</title><content type="html">&lt;span style="font-family:trebuchet ms;"&gt;When I think of robots or androids, only one stands out in my mind; Data from Star trek Next Generation. Data exhibited humane behavior and, as per Asimov’s definition, was a ‘positronic’ robot. He latently followed the three laws of robotics, penned by Asimov many decades ago. These laws were,&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;1. A robot may not injure a human being or, through inaction, allow a human being to come to harm.&lt;br /&gt;2. A robot must obey any orders given to it by human beings, with the exception of orders conflicting with the First Law.&lt;br /&gt;3. A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Most people are familiar with these laws but what many do not know is that, in Asimov’s own words these laws were analogous to the design of any valuable tool. He postulated,&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;1. A tool must be safe to use.&lt;br /&gt;2. A tool must perform its function efficiently unless this would harm the user.&lt;br /&gt;3. A tool must remain intact during its use unless its destruction is required for its use or for safety.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;In one of his short stories (Evidence), Asimov explained the moral grounding behind these laws. He stated that human beings are generally expected to refrain from harming other human beings (except in times of extreme duress; like war, or to save a greater number). This is equivalent to a robot's First Law. Likewise, society expects individuals to obey instructions from recognized authorities (such as doctors), which equals the Second Law. Finally, humans are generally expected to avoid harming themselves, which is the Third Law.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;In the recent decade, technology has come a long way and scientists are in the process of actually setting forth a Robot Ethics Charter. This document would be heavily influenced by the three laws but there is sufficient criticism for them out there to think twice.&lt;br /&gt;Modern experts tend to agree that the Laws are perfect for a good story line but present practical problems. According to them the first law is flawed as it states that a robot cannot 'through inaction, allow a human to come to harm'; it should be noted that a robot has finite knowledge and if anything which harms a human is not in its data bank it will invariably end up harming a human. Further when humans harm humans (e.g. in case of war or accidents); the laws would imply that robots end up taking charge of humanity, in an effort to prevent humanity from harming itself.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;The above criticisms aside, robots are a very distinct possibility of the future and there are those who feel some ground rules should be set. In the July/August 2009 issue of IEEE Intelligent Systems, Robin Murphy and David D. Woods proposed "The Three Laws of Responsible Robotics":&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;1. A human may not deploy a robot without the human-robot work system meeting the highest legal and professional standards of safety and ethics.&lt;br /&gt;2. A robot must respond to humans as appropriate for their roles.&lt;br /&gt;3. A robot must be endowed with sufficient situated autonomy to protect its own existence as long as such protection provides smooth transfer of control, which does not conflict with the First and Second Laws.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;The above three laws are also suggestions. No matter what ground rules are set, they will have to be updated and improved constantly as technology progresses. Some day we may have creations which follow the idealistic 3 Laws of Robotics, but for now we will have to contend with the practicalities of the philosophy and the limitations of our technology.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-4958798110330883750?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/4958798110330883750/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=4958798110330883750&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/4958798110330883750?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/4958798110330883750?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2010/05/3-laws-of-robotics.html" title="The 3 Laws of Robotics" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkcNRng_eCp7ImA9WxVQGUQ.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-1479660354817299528</id><published>2009-02-06T23:54:00.000-08:00</published><updated>2009-02-07T00:08:17.640-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-07T00:08:17.640-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="user experience" /><category scheme="http://www.blogger.com/atom/ns#" term="design patterns" /><category scheme="http://www.blogger.com/atom/ns#" term="quince" /><title>User Experience Design Patterns</title><content type="html">User Experience has a lot of impact in the overall usage and eventually the success of any software but practically it is one of the most ignored components in any software development activity. The software engineers out there tend to engineer very sophisticated but complex interfaces without keeping in view the overall usage of it. They tend to come up with a geeky look which the end users don’t really understand.&lt;br /&gt;&lt;br /&gt;So considering this importance and need, there have been quite a few efforts to establish Design Patterns related with user experience, but the latest one initiated by Infragistics folks outstands all. Infragistics has launched a User Experience Explorer in the name of &lt;a href="http://quince.infragistics.com/" target="_blank"&gt;Quince&lt;/a&gt;. It’s a Silverlight based web application (you need Silverlight plug-in for your web browser and its around 4.5 MB installation package). It provides a very interactive environment to explore the different design patterns related to user experience. You can browse them via tags, user actions, free text search etc. Each of these design patterns is elaborated with text and pictorial examples and that too in an interactive way.&lt;br /&gt;&lt;br /&gt;Moreover, you can contribute to all this by sharing more examples for an existing pattern or you can even propose a new design pattern that hasn’t already been listed there.&lt;br /&gt;&lt;br /&gt;It’s a must see web app; have a look at it in your free time to get some inspirations and food for thought!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EuhYJ6HjTPA/SY1BPqawOmI/AAAAAAAADmE/ui3CPhyuBio/s1600-h/Quince+UX+Design+Patterns.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 190px;" src="http://2.bp.blogspot.com/_EuhYJ6HjTPA/SY1BPqawOmI/AAAAAAAADmE/ui3CPhyuBio/s400/Quince+UX+Design+Patterns.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5299964073825286754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-1479660354817299528?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/1479660354817299528/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=1479660354817299528&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/1479660354817299528?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/1479660354817299528?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2009/02/user-experience-design-patterns.html" title="User Experience Design Patterns" /><author><name>Zeeshan Qadir</name><uri>http://www.blogger.com/profile/13626420580359067972</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://4.bp.blogspot.com/_EuhYJ6HjTPA/S1M1w9uvMBI/AAAAAAAAE14/67nPrsCqqRA/S220/zq20100106.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_EuhYJ6HjTPA/SY1BPqawOmI/AAAAAAAADmE/ui3CPhyuBio/s72-c/Quince+UX+Design+Patterns.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkMERnY_eip7ImA9WxRVEks.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-5457383769954029131</id><published>2008-11-09T12:49:00.000-08:00</published><updated>2008-11-09T13:00:07.842-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-09T13:00:07.842-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="performance" /><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><category scheme="http://www.blogger.com/atom/ns#" term="fault tolerance" /><category scheme="http://www.blogger.com/atom/ns#" term=".net stock trader" /><category scheme="http://www.blogger.com/atom/ns#" term="interoperability" /><category scheme="http://www.blogger.com/atom/ns#" term="asp.net" /><category scheme="http://www.blogger.com/atom/ns#" term="load balancing" /><category scheme="http://www.blogger.com/atom/ns#" term="getting started" /><category scheme="http://www.blogger.com/atom/ns#" term="scalability" /><category scheme="http://www.blogger.com/atom/ns#" term=".net framework" /><category scheme="http://www.blogger.com/atom/ns#" term="WCF" /><title>Engineering Enterprise Level Applications using Microsoft .NET Framework</title><content type="html">If you have been into engineering medium sized business applications using Microsoft .NET Framework (or even any other framework/language), you must be familiar with ‘n-tier application’ and ‘service oriented architecture’ but the terms ‘dynamic clustering’, ‘horizontal scaling’, ‘fail over clusters’ and ‘interoperability’ might sound a bit fishy. These are the technologies and techniques involved in the engineering of fairly sophisticated, enterprise level, high performance, fault tolerant and horizontally scalable applications.&lt;br /&gt;&lt;br /&gt;Tech geeks at Microsoft .NET Framework Developer Center have come up with a great end-to-end sample application in the name of &lt;a href="http://msdn.microsoft.com/stocktrader" target="_blank"&gt;‘.NET StockTrader’&lt;/a&gt; in order to demonstrate how to engineer enterprise level applications using Microsoft .NET Framework. Some of the distinguishing features of this sample application include&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Load Balancing and Failover clustering&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Centralized configuration management of clustered service nodes &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Horizontally scalable via dynamic clustering &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Interoperability with Java and PHP services &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Service host failure detection and automatic restarts &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Full interoperability with J2EE and IBM WebSphere's Trade 6.1 &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The ‘.NET StockTrader’ sample application has two parts; the core ‘.NET StockTrader’ application and the ‘Configuration Service’ implemented by the ‘.NET StockTrader’ components (web app; business services, and order processing service). The ‘Configuration Service’ is engineered to provide dynamic clustering of service nodes, fail over and load balancing, replication of updates in configuration to allow adding new service nodes on the fly as well as providing the centralized management of configuration data through a single web based interface for the core ‘.NET Stock Trader’ application.&lt;br /&gt;&lt;br /&gt;You can download the complete sample application with source code and technical documentation from the official website of &lt;a href="http://msdn.microsoft.com/stocktrader" target="_blank"&gt;‘.NET Stock Trader’ Sample Application&lt;/a&gt;. Although it’s a fairly complex application and does need quite some time to completely absorb and understand it but it’s a great learning experience. I would highly recommend you to start experimenting with it and read and learn more and more about it in order to broaden your tech vision and have insight into engineering sophisticated applications using .NET Framework.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-5457383769954029131?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/5457383769954029131/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=5457383769954029131&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/5457383769954029131?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/5457383769954029131?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2008/11/engineering-enterprise-level.html" title="Engineering Enterprise Level Applications using Microsoft .NET Framework" /><author><name>Zeeshan Qadir</name><uri>http://www.blogger.com/profile/13626420580359067972</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://4.bp.blogspot.com/_EuhYJ6HjTPA/S1M1w9uvMBI/AAAAAAAAE14/67nPrsCqqRA/S220/zq20100106.JPG" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEQMQ345eSp7ImA9WxRWEU4.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-5906105964093530124</id><published>2008-10-23T09:56:00.000-07:00</published><updated>2008-10-27T12:39:42.021-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-27T12:39:42.021-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="performance" /><category scheme="http://www.blogger.com/atom/ns#" term="user experience" /><category scheme="http://www.blogger.com/atom/ns#" term="http compression" /><category scheme="http://www.blogger.com/atom/ns#" term="asp.net" /><category scheme="http://www.blogger.com/atom/ns#" term="tips" /><category scheme="http://www.blogger.com/atom/ns#" term="web applications" /><title>HTTP Compression?</title><content type="html">&lt;div&gt;Almost every reader of this blog must be familiar with the term ‘Compression’, but the term ‘HTTP Compression’, might sound a bit strange for quite a few of you.&lt;br /&gt;&lt;br /&gt;Today, with the ever increasing tendency of companies providing more and more services over the web; the page load time and the overall responsiveness of the web application, are becoming more and more critical in the adaptability of that web application.&lt;br /&gt;&lt;br /&gt;All the web engineers out there must have wondered that despite of their strive to improve the response time of their web application, using techniques like data caching, output caching, minimizing number of web requests, moving JavaScript and CSS in external files, placing JavaScript at bottom and CSS at top and what not; but still there is some thing missing and that’s hindering the overall load time of their web application and affecting the end user’s experience.&lt;br /&gt;&lt;br /&gt;Why your web application’s load time is not comparable to the load time of Yahoo and MSN home pages, even though their home pages are showing a lot of dynamic contents? It’s true that their solution is exploiting the full capabilities of hardware too, along with the software but still, there is some thing which even you can configure at the software level to improve the overall page load time of your application in order to improve not only the performance of your web application but to have an improved end user’s experience as well. That software level tweak is called the ‘HTTP Compression’; something similar to zip or rar, but for HTTP responses.&lt;br /&gt;&lt;br /&gt;‘HTTP Compression’ is a web standard in which GZip (GNU Zip) or Deflate encoding is applied to the overall payload of the HTTP response by the web server, and at the client end i.e. web browser, the HTTP response is decompressed and rendered to the end user. This result in a significant decrease in the overall network traffic and improves the over all load time of your web application to a very significant extent, with an additional advantage of saving the costs associated with the network bandwidth consumption.&lt;br /&gt;&lt;br /&gt;‘HTTP Compression’ is supported by all the modern web browsers and web servers. You can not only compress the static contents (css, js …) but the dynamic contents (.aspx, .asp, .php …) as well. Here is a walkthrough on &lt;a href="http://www.dotnetjunkies.com/Article/16267D49-4C6E-4063-AB12-853761D31E66.dcik" target="_blank"&gt;How to enable HTTP Compression on IIS 6.0&lt;/a&gt; for ASP.NET based web applications. You can definitely Google for enabling this very feature on other web servers as well.&lt;br /&gt;&lt;br /&gt;Here are links to the analysis reports, showing the percentage decrease in payload and the improvements in the overall load time for &lt;a href="http://www.port80software.com/tools/compresscheck.asp?url=http%3A%2F%2Fwww.msn.com" target="_blank"&gt;MSN&lt;/a&gt;, &lt;a href="http://www.port80software.com/tools/compresscheck.asp?url=http%3A%2F%2Fwww.yahoo.com" target="_blank"&gt;Yahoo&lt;/a&gt;, &lt;a href="http://www.port80software.com/tools/compresscheck.asp?url=http%3A%2F%2Fwww.facebook.com" target="_blank"&gt;Facebook&lt;/a&gt; and &lt;a href="http://www.port80software.com/tools/compresscheck.asp?url=http%3A%2F%2Ftrgtech.blogspot.com" target="_blank"&gt;trg tech @ blogspot&lt;/a&gt;. Do have a look at these in order to actually appreciate the overall performance gain achieved because of ‘HTTP Compression’ by these web giants. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-5906105964093530124?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/5906105964093530124/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=5906105964093530124&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/5906105964093530124?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/5906105964093530124?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2008/10/http-compression-sounds-strange.html" title="HTTP Compression?" /><author><name>Zeeshan Qadir</name><uri>http://www.blogger.com/profile/13626420580359067972</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://4.bp.blogspot.com/_EuhYJ6HjTPA/S1M1w9uvMBI/AAAAAAAAE14/67nPrsCqqRA/S220/zq20100106.JPG" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkUHRno_fCp7ImA9WxdUEUo.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-5474435628117657331</id><published>2008-07-27T08:43:00.000-07:00</published><updated>2008-07-27T08:57:17.444-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-27T08:57:17.444-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Interop forms" /><category scheme="http://www.blogger.com/atom/ns#" term="interop forms vb" /><category scheme="http://www.blogger.com/atom/ns#" term="interop toolkit 2.0" /><title>Interop Forms 2.0</title><content type="html">Did you know that Microsoft released the Interop Forms Toolkit 2.0.  This toolkit allows developers to create Activex controls that can be hosted in VB as well as forms that can be called from VB.  But this toolkit is not limited to VB alone.  It can easily be used to create Forms and controls for use in VFP&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;To download the kit, please visit: &lt;a href = "http://msdn.microsoft.com/en-us/vbasic/bb419144.aspx"&gt;Microsoft Interop Forms Toolkit 2.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For a walkthrough of using Interop 2.0 with VFP9, please visit: &lt;a href = "http://weblogs.foxite.com/bernardbout/archive/2007/06/20/4126.aspx"&gt;Using the Interop Forms Toolkit 2.0 in VFP9 - A Walkthrough &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Submitted by &lt;span style="color: rgb(255, 0, 0);"&gt;K&lt;/span&gt;ashif &lt;span style="color: rgb(255, 0, 0);"&gt;P&lt;/span&gt;ervaiz&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:&amp;quot;;font-size:12;"  &gt;&lt;a href="http://msdn.microsoft.com/en-us/vbasic/bb419144.aspx"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-5474435628117657331?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/5474435628117657331/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=5474435628117657331&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/5474435628117657331?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/5474435628117657331?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2008/07/interop-forms-20.html" title="Interop Forms 2.0" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Dk4CSXwzfSp7ImA9WxRXGUo.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-4432358224734373380</id><published>2008-07-24T02:40:00.000-07:00</published><updated>2008-10-25T15:49:28.285-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-25T15:49:28.285-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Extension Methods in VS 2008" /><category scheme="http://www.blogger.com/atom/ns#" term="What's new in VS 2008?" /><category scheme="http://www.blogger.com/atom/ns#" term="C# extension methods" /><category scheme="http://www.blogger.com/atom/ns#" term="Static function for Extension" /><title>Extension Methods in VS 2008 (C#)</title><content type="html">Extension methods allow adding new methods to the public contract of an existing CLR type, without having to sub-class it or recompiling the original type.  VB also supports extension methods.&lt;br /&gt;&lt;br /&gt;A simple example would be to check for valid email address.  We would probably create a static function and pass the input string&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:78%;"&gt;&lt;span style="font-family:verdana;"&gt;using System.Text.RegularExpressions;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;namespace Master&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;public class GenericFunctions&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;public static boolean IsValidEmail(string strIn)&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;return Regex.IsMatch(strIn, "^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;}&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;//Add the reference&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;using Master.GenericFunctions;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;...&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;string strEmail = Request.QueryString[“email”];&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;if (!GenericFunctions.IsValidEmail(strEmail))&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;MessageBox.Show(“Invalid Email Address”)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now with the help of extension methods, we can do this…&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:78%;"&gt;&lt;span style="font-family:verdana;"&gt;string strEmail = Request.QueryString[“email”];&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;if (strEmail.IsValidEmail())&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    MessageBox.Show(“Invalid Email Address”)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;By make the following changes in the GenericFunctions class&lt;br /&gt;&lt;br /&gt;&lt;span style=" color: rgb(0, 0, 153);font-family:verdana;font-size:78%;"&gt;using System.Text.RegularExpressions;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;public static class GenericFunctions&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;public static boolean IsValidEmail(this string strIn)&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;   return Regex.IsMatch(strIn, "^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The static method has a "this" keyword before the first parameter argument of type string.  This tells the compiler that this particular Extension Method should be added to objects of type "string".  Within the IsValidEmail () method, we can access all of the public properties/methods/events of the actual string instance that the method is being called on, and return true/false depending on whether it is a valid email or not.  Next time we would explore extension methods provided within the System.Linq namespace.  Happy journey!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Submitted by &lt;span style="color: rgb(255, 0, 0);"&gt;K&lt;/span&gt;ashif &lt;span style="color: rgb(255, 0, 0);"&gt;P&lt;/span&gt;ervaiz&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-4432358224734373380?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/4432358224734373380/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=4432358224734373380&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/4432358224734373380?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/4432358224734373380?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2008/07/extension-methods-in-vs-2008-c.html" title="Extension Methods in VS 2008 (C#)" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkANRns-fSp7ImA9WxdVF0g.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-741257722159504900</id><published>2008-07-22T13:28:00.000-07:00</published><updated>2008-07-22T13:33:17.555-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-22T13:33:17.555-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Presentation Foundation" /><category scheme="http://www.blogger.com/atom/ns#" term="XAML" /><title>Meet Windows Presentation Foundation (WPF)</title><content type="html">&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;"A new and elegant look for the applications."&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Formerly known as &lt;span style="font-weight: bold; font-style: italic;"&gt;Avalon&lt;/span&gt;, Windows Presentation Foundation (WPF) is the new graphical subsystem in Windows Vista that provides a holistic means for combining user interface, 2D and 3D graphics, documents, and digital media. Built on the .NET Framework, WPF provides a managed environment for development with the Windows operating system. This takes advantage of the existing investment made by Microsoft in the .NET Framework, and allows developers familiar with .NET technologies to rapidly begin developing applications that leverage WPF.&lt;br /&gt;&lt;br /&gt;WPF introduces a new XML-based language to represent UI and user interaction, known as XAML (eXtensible Application Markup Language—pronounced “&lt;span style="font-style: italic; font-weight: bold;"&gt;zammel&lt;/span&gt;”). Similar to Macromedia’s MXML specification, within XAML elements from the UI are represented as XML tags. Thus, XAML allows applications to dynamically parse and manipulate UI elements at either compile-time or runtime, providing a flexible model for UI composition.&lt;br /&gt;&lt;br /&gt;WPF applications can be deployed as standalone applications or as web-based applications hosted in Internet Explorer. As with smart client applications, web-based WPF applications operate in a partial trust sandbox, which protects the client computer against applications with malicious purpose.&lt;br /&gt;Furthermore, WPF applications hosted in Internet Explorer can exploit the capabilities of local client hardware, providing a rich web experience with 3D, digital media, and more, which is the best argument for web-based applications available today.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;Submitted by &lt;span style="color: rgb(255, 0, 0);"&gt;M&lt;/span&gt;ohammed &lt;span style="color: rgb(255, 0, 0);"&gt;A&lt;/span&gt;tif&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-741257722159504900?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/741257722159504900/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=741257722159504900&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/741257722159504900?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/741257722159504900?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2008/07/meet-windows-presentation-foundation.html" title="Meet Windows Presentation Foundation (WPF)" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DU4HR3g-fCp7ImA9WxdWFU8.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-7958101733654940296</id><published>2008-07-08T07:24:00.000-07:00</published><updated>2008-07-08T07:38:56.654-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-08T07:38:56.654-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Intro to NHibernate" /><category scheme="http://www.blogger.com/atom/ns#" term="What is NHibernate?" /><title>Have you heard about 'NHibernate'?</title><content type="html">&lt;span style="color:#ff0000;"&gt;NHibernate&lt;/span&gt; is an Object-relational mapping (ORM) solution for the Microsoft .NET platform: it provides an easy to use framework for mapping an object-oriented domain model to a traditional relational database. Its purpose is to relieve the developer from a significant amount of relational data persistence-related programming tasks.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#666666;"&gt;NHibernate's&lt;/span&gt; primary feature is mapping from .NET &lt;em&gt;classes&lt;/em&gt; to database &lt;em&gt;tables&lt;/em&gt; (and from CLR data types to SQL data types). &lt;span style="color:#666666;"&gt;NHibernate&lt;/span&gt; also provides data query and retrieval facilities. &lt;span style="color:#666666;"&gt;NHibernate&lt;/span&gt; generates the SQL commands and relieves the developer from manual data set handling and object conversion, keeping the application portable to most SQL databases, with database portability delivered at very little performance overhead.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#666666;"&gt;NHibernate&lt;/span&gt; provides transparent persistence for Plain Old CLR Objects (POCOs). The only strict requirement for a persistent class is a no-argument constructor, which does not have to be public. (Proper behavior in some applications also requires special attention to the Equals() and GetHashCode() methods.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#666666;"&gt;NHibernate&lt;/span&gt; is free as &lt;em&gt;open source software&lt;/em&gt; that is distributed under the GNU Lesser General Public License.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-7958101733654940296?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/7958101733654940296/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=7958101733654940296&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/7958101733654940296?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/7958101733654940296?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2008/07/have-you-heard-about-nhibernate.html" title="Have you heard about 'NHibernate'?" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUcBQH85fCp7ImA9WxdWFU8.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-5290888088253177029</id><published>2008-07-08T07:10:00.000-07:00</published><updated>2008-07-08T07:24:11.124-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-08T07:24:11.124-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="whats new in sql server 2008" /><category scheme="http://www.blogger.com/atom/ns#" term="Table Value Parameters" /><category scheme="http://www.blogger.com/atom/ns#" term="sql server 2008" /><title>What's new in Sql Server 2008 (A string of articles by Irfan AQ)</title><content type="html">Table Value Parameters&lt;br /&gt;&lt;br /&gt;Another exciting feature of Sql Server 2008 is passing a parameter of table type to a stored procedure or function. Note that it’s parameter of table type, which means that first you have to create the table type and then pass it to the Sproc or function.&lt;br /&gt;&lt;br /&gt;Below is a simple example which will create a table type for dventureWorks.HumanResources.Department, and we will create a Sproc which accepts only one parameter of table type and then execute it by passing a variable of new table type:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#006600;"&gt;/* Creating reusable table type */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;CREATE TYPE&lt;/span&gt; DepartmentType &lt;span style="color:#3333ff;"&gt;AS TABLE&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Name &lt;span style="color:#3333ff;"&gt;VARCHAR&lt;/span&gt; (50) &lt;span style="color:#c0c0c0;"&gt;NOT NULL&lt;/span&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;GroupName &lt;span style="color:#3333ff;"&gt;VARCHAR&lt;/span&gt; (50) &lt;span style="color:#c0c0c0;"&gt;NOT NULL&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#3333ff;"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#006600;"&gt;/* Creating s Sproc to accept table valued parameter. This will print all the data in the parameter table, but many other operations can also be performed. However, do note that the parameter table cannot be modified */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;CREATE PROCEDURE&lt;/span&gt; usp_TestTableType&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;@TableType DepartmentType &lt;span style="color:#3333ff;"&gt;READONLY&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#3333ff;"&gt;AS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#3333ff;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;SELECT&lt;/span&gt; * FROM @TableType;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#3333ff;"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#3333ff;"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#006600;"&gt;/* Creating a table variable and inserting four records in it */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;DECLARE&lt;/span&gt; @TableVariable &lt;span style="color:#3333ff;"&gt;AS&lt;/span&gt; DepartmentType&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;INSERT INTO&lt;/span&gt; @TableVariable (Name, GroupName)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#3333ff;"&gt;VALUES&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#999999;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;'Dept1'&lt;/span&gt;&lt;span style="color:#999999;"&gt;,&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'Group ABC'&lt;/span&gt;&lt;span style="color:#999999;"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#999999;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;'Dept2'&lt;/span&gt;&lt;span style="color:#999999;"&gt;, &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;'Group ABC'&lt;/span&gt;&lt;span style="color:#999999;"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#999999;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;'Dept3'&lt;/span&gt;&lt;span style="color:#999999;"&gt;,&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'Group XYZ'&lt;/span&gt;&lt;span style="color:#999999;"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#999999;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;'Dept4'&lt;/span&gt;&lt;span style="color:#999999;"&gt;,&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; 'Group ABC'&lt;/span&gt;&lt;span style="color:#999999;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#006600;"&gt;/* Executing stored procedure */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;EXEC&lt;/span&gt; usp_TestTableType @TableVariable&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#006600;"&gt;/* Droping the newly created objects */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;DROP PROC&lt;/span&gt; usp_TestTableType&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;DROP TYPE&lt;/span&gt; departmenttype&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note that in this Sproc, there are some limitations; first we cannot modify the data in the parameter table henceforth it has to be created as READONLY every time. Secondly, table valued parameters cannot be of output type. Also, these table valued parameters are destroyed as soon as the flow goes out of current scope, therefore, all the insertion or updates on table-valued parameters have to be made in a single batch before passing it to the stored procedure or function.&lt;br /&gt;A good thing is that these table types parameters are not handled in memory. Rather, these are created (materialized) in TEMPDB. This enables us to pass large amount of data as table valued parameters.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-5290888088253177029?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/5290888088253177029/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=5290888088253177029&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/5290888088253177029?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/5290888088253177029?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2008/07/whats-new-in-sql-server-2008-string-of.html" title="What's new in Sql Server 2008 (A string of articles by Irfan AQ)" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUAARHc9cSp7ImA9WxRWEU4.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-737302531213283592</id><published>2008-06-09T04:35:00.000-07:00</published><updated>2008-10-27T13:02:25.969-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-27T13:02:25.969-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="whats new in sql server 2008" /><category scheme="http://www.blogger.com/atom/ns#" term="Sql server 2008 intro" /><category scheme="http://www.blogger.com/atom/ns#" term="sql server 2008" /><title>What's new in Sql Server 2008 (A string of articles by Irfan AQ)</title><content type="html">&lt;strong&gt;Declaring and Initializing Multiple Variables&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;Initializing a variable at declaration time was not possible in SQL 2k5. But this functionality is now available in Sql Server 2k8. We can declare and initialize variables with any constant value or with any expression;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;DECLARE&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;        @a &lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; = 777,&lt;br /&gt;      @b &lt;span style="color: rgb(51, 51, 255);"&gt;bit&lt;/span&gt; = 0,&lt;br /&gt;      @c &lt;span style="color: rgb(51, 51, 255);"&gt;VARCHAR&lt;/span&gt; (10) =&lt;span style="color: rgb(255, 0, 0);"&gt; 'trg tech'&lt;/span&gt;,&lt;br /&gt;      @d &lt;span style="color: rgb(51, 51, 255);"&gt;CHAR &lt;/span&gt;(3) = &lt;span style="color: rgb(204, 51, 204);"&gt;Substring&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'trg tech'&lt;/span&gt;, 1, 3)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;PRINT&lt;/span&gt; @a&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;PRINT&lt;/span&gt; @b&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;PRINT&lt;/span&gt; @c&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;PRINT&lt;/span&gt; @d&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;They indeed are making our lives easy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-737302531213283592?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/737302531213283592/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=737302531213283592&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/737302531213283592?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/737302531213283592?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2008/06/whats-new-in-sql-server-2008-string-of_09.html" title="What's new in Sql Server 2008 (A string of articles by Irfan AQ)" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D04DSXc8cSp7ImA9WxdRGEU.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-8876557656960766232</id><published>2008-06-07T17:29:00.000-07:00</published><updated>2008-06-07T17:46:18.979-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-07T17:46:18.979-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".Net Remoting" /><category scheme="http://www.blogger.com/atom/ns#" term="web service vs remoting" /><category scheme="http://www.blogger.com/atom/ns#" term=".net framework" /><title>Web service VS Remoting</title><content type="html">A Web service is equivalent to a static function library. If a client creates an instance of Web service and a member variable of the object with one method call, then attempts to read the value from another method call, the value will be the default value for the variable, not the new value. That's because a Web service doesn't maintain session state without considerable hacking outside the "SOAP" standard.&lt;br /&gt;&lt;br /&gt;Remoting feature of .&lt;span style="color:#ff0000;"&gt;N&lt;/span&gt;et however, works with remote &lt;em&gt;objects&lt;/em&gt;. If you need the ability to use the remote &lt;em&gt;objects&lt;/em&gt; rather than just remote &lt;em&gt;methods&lt;/em&gt;, Remoting is the way to go!&lt;br /&gt;&lt;br /&gt;Can you identify a &lt;em&gt;&lt;span style="color:#000099;"&gt;pro&lt;/span&gt;&lt;/em&gt; for Web service when measured against .Net remoting?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-8876557656960766232?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/8876557656960766232/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=8876557656960766232&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/8876557656960766232?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/8876557656960766232?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2008/06/web-service-vs-remoting.html" title="Web service VS Remoting" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Dk4MQXc-eCp7ImA9WxdRGEU.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-3824934929677149898</id><published>2008-06-07T17:26:00.000-07:00</published><updated>2008-06-07T17:29:40.950-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-07T17:29:40.950-07:00</app:edited><title>Re: What are we aiming to accomplish with this code?</title><content type="html">&lt;span style="color:#ff0000;"&gt;Usama&lt;/span&gt; did it guys! We indeed are removing duplicate entries from a sorted array of integers!&lt;br /&gt;&lt;br /&gt;Well done Monsiuer :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-3824934929677149898?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/3824934929677149898/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=3824934929677149898&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/3824934929677149898?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/3824934929677149898?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2008/06/re-what-are-we-aiming-to-accomplish_07.html" title="Re: What are we aiming to accomplish with this code?" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkAFR3gzcCp7ImA9WxdRGEU.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-8602731501035700038</id><published>2008-06-06T07:12:00.000-07:00</published><updated>2008-06-07T17:25:16.688-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-07T17:25:16.688-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Rotating a table" /><category scheme="http://www.blogger.com/atom/ns#" term="Pivot Operator" /><category scheme="http://www.blogger.com/atom/ns#" term="Pivot Table" /><title>Pivot Table</title><content type="html">This seems to be a popular question and quite a few chaps have recently asked me about this.&lt;br /&gt;&lt;br /&gt;A Pivot Table can automatically sort, count, and total the data stored in one table or spreadsheet and create a second table displaying the summarized data. The PIVOT operator turns the values of a specified column into column names, effectively rotating a table. Here is an example;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000099;"&gt;USE&lt;/span&gt; AdventureWorks&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000099;"&gt;SELECT&lt;/span&gt; [CA], [AZ], [TX] &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000099;"&gt;FROM &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;( &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000099;"&gt;SELECT&lt;/span&gt; sp.StateProvinceCode &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;FROM Person.Address a &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#666666;"&gt;INNER JOIN&lt;/span&gt; Person.StateProvince sp &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000099;"&gt;ON&lt;/span&gt; a.StateProvinceID = sp.StateProvinceID &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;) p &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;PIVOT &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#cc33cc;"&gt;COUNT&lt;/span&gt; (StateProvinceCode) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000099;"&gt;FOR&lt;/span&gt; StateProvinceCode &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000099;"&gt;IN&lt;/span&gt; ([CA], [AZ], [TX]) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;) &lt;span style="color:#000099;"&gt;AS&lt;/span&gt; Pvt&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-8602731501035700038?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/8602731501035700038/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=8602731501035700038&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/8602731501035700038?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/8602731501035700038?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2008/06/pivot-table.html" title="Pivot Table" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DE4DRno_eCp7ImA9WxdRFkU.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-2476676648321550884</id><published>2008-06-05T10:10:00.000-07:00</published><updated>2008-06-05T10:29:37.440-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-05T10:29:37.440-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="whats new in sql server 2008" /><category scheme="http://www.blogger.com/atom/ns#" term="Sql server 2008 intro" /><category scheme="http://www.blogger.com/atom/ns#" term="sql server 2008" /><category scheme="http://www.blogger.com/atom/ns#" term="filtered indexes" /><title>What's new in Sql Server 2008? (A string of articles by Irfan AQ)</title><content type="html">&lt;span style="font-weight: bold;"&gt;Filtered Indexes (My Favourite!)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;  &lt;p class="MsoNormal"&gt;As the name shows, filtered indexes are criteria-based indexes. We specify the criteria as a WHERE clause similar to the WHERE clause in a simple SELECT statement. In fact a filtered index is an optimized non-clustered index. Also, clustered indexes cannot have a filter. If properly designed, filtered indexes enhance query performance to great extent. Randy Dyess (&lt;a href="http://blogs.solidq.com/EN/rdyess/Lists/Posts/Post.aspx?ID=22"&gt;Introducing Filtered Indexes&lt;/a&gt;) has some interesting demonstration on how filtered indexes can make database developer’s life easy. I was reading another article on filtered indexes in which author was saying that with filtered indexes, days of over-indexing will be over. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Here is a simple example on creating filtered index:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=""&gt;USE&lt;/span&gt;&lt;span style=""&gt; AdventureWorks&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;CREATE&lt;/span&gt;&lt;span style=""&gt; &lt;span style="color:blue;"&gt;NONCLUSTERED&lt;/span&gt; &lt;span style="color:blue;"&gt;INDEX&lt;/span&gt; &lt;st1:place st="on"&gt;&lt;st1:city style="color: rgb(0, 0, 0);" st="on"&gt;MyFilteredIndex&lt;/st1:city&gt; &lt;st1:state st="on"&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;ON&lt;/span&gt;&lt;/st1:state&gt;&lt;/st1:place&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;Sales&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SalesOrderDetail &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SalesOrderID &lt;/span&gt;&lt;span style="color:blue;"&gt;ASC&lt;/span&gt;&lt;span style=""&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ProductID &lt;/span&gt;&lt;span style="color:blue;"&gt;ASC&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;WHERE &lt;/span&gt;&lt;span style=""&gt;(&lt;/span&gt;&lt;span style=""&gt;&lt;span style="font-size:78%;"&gt;ModifiedDate &lt;/span&gt;&lt;span style=";font-size:78%;color:gray;"  &gt;&lt; &lt;/span&gt;&lt;span style=";font-size:78%;color:red;"  &gt;'03/01/2004'&lt;/span&gt;&lt;span style="color:gray;"&gt;&lt;span style="font-size:78%;"&gt;)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-2476676648321550884?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/2476676648321550884/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=2476676648321550884&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/2476676648321550884?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/2476676648321550884?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2008/06/whats-new-in-sql-server-2008-string-of_05.html" title="What's new in Sql Server 2008? (A string of articles by Irfan AQ)" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUAERng6fCp7ImA9WxRWEU4.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-4817558443408823596</id><published>2008-06-03T12:02:00.000-07:00</published><updated>2008-10-27T13:01:47.614-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-27T13:01:47.614-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Sql server 2008 intro" /><category scheme="http://www.blogger.com/atom/ns#" term="how to sql server 2008" /><category scheme="http://www.blogger.com/atom/ns#" term="sql server 2008" /><title>What's new in Sql Server 2008? (A string of articles by Irfan AQ)</title><content type="html">Trusted, Productive, and Intelligent; this is what Microsoft claims about SQL Server 2008. The latest release of SQL Server 2008 was in February 2008, which is still a CTP (Community Technology Preview) and it has most certainly caught the attention of database developers. There are a lot of promising features in 2008 release of SQL Server and in this string of articles, I would discuss them briefly to introduce you to this fascinating upgrade!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Inserting Multiple Rows in Single Insert Statement!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;With SQL Server 2005, you could not insert multiple rows in a table in a single insert statement (very annoying!). If there are 5 rows to be inserted, for example, you had to write 5 insert statements. This is not a restriction with 2008. We can insert multiple rows in a single statement. The multiple rows are enclosed in parenthesis and separated by commas. This is the same syntax which is available in MySQL. Below is the example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;INSERT INTO&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;AdventureWorks.HumanResources.Department&lt;br /&gt;          (Name&lt;br /&gt;          ,GroupName&lt;br /&gt;          ,ModifiedDate)&lt;br /&gt;    &lt;span style="color:#3333ff;"&gt;VALUES&lt;/span&gt;&lt;br /&gt;          (&lt;span style="color:#ff0000;"&gt;'Software Developmen&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;t'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'Research and Development'&lt;/span&gt;, &lt;span style="color:#cc33cc;"&gt;GETDATE&lt;/span&gt;()),&lt;br /&gt;          (&lt;span style="color:#ff0000;"&gt;'trg tech'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'Research and Developmen&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;t'&lt;/span&gt;, &lt;span style="color:#cc33cc;"&gt;GETDATE&lt;/span&gt;()),&lt;br /&gt;          (&lt;span style="color:#ff0000;"&gt;'Software Marketing'&lt;/span&gt;, '&lt;span style="color:#ff0000;"&gt;Sales and Marketing&lt;/span&gt;', &lt;span style="color:#cc33cc;"&gt;GETDATE&lt;/span&gt;())&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-4817558443408823596?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/4817558443408823596/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=4817558443408823596&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/4817558443408823596?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/4817558443408823596?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2008/06/whats-new-in-sql-server-2008-string-of.html" title="What's new in Sql Server 2008? (A string of articles by Irfan AQ)" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0YBSXY8cSp7ImA9WxdRFUw.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-4896812431557119804</id><published>2008-06-03T11:47:00.000-07:00</published><updated>2008-06-03T11:52:38.879-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-03T11:52:38.879-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="code jam" /><category scheme="http://www.blogger.com/atom/ns#" term="crack the code" /><category scheme="http://www.blogger.com/atom/ns#" term="C jam" /><title>Re: What are we aiming to accomplish with this code?</title><content type="html">Hey Technotrons!&lt;br /&gt;&lt;br /&gt;You &lt;span style="color:#ff0000;"&gt;still&lt;/span&gt; haven't been able to figure this one out yet :-)&lt;br /&gt;&lt;br /&gt;int remove_duplicates(int * p, int size)&lt;br /&gt;{&lt;br /&gt;int current, insert = 1;&lt;br /&gt;for (current=1; current &lt; size; current++)&lt;br /&gt;if (p[current] != p[insert-1])&lt;br /&gt;{&lt;br /&gt;p[insert] = p[current];&lt;br /&gt;current++; insert++;&lt;br /&gt;}&lt;br /&gt;else current++;&lt;br /&gt;return insert;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-4896812431557119804?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/4896812431557119804/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=4896812431557119804&amp;isPopup=true" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/4896812431557119804?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/4896812431557119804?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2008/06/re-what-are-we-aiming-to-accomplish.html" title="Re: What are we aiming to accomplish with this code?" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;Ak8GSHYyeSp7ImA9WxdRFUw.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-871717011388428102</id><published>2008-06-03T11:36:00.000-07:00</published><updated>2008-06-03T11:47:09.891-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-03T11:47:09.891-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SQL Query" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL Problem" /><title>Re: You might need to scratch your head</title><content type="html">Whoa Imran!&lt;br /&gt;&lt;br /&gt;Atif is right. It seems like your query did skip out one year! But an interesting attempt, really.&lt;br /&gt;&lt;br /&gt;Atif,&lt;br /&gt;&lt;br /&gt;It seems like techies weren't able to crack it. Here is your solution;&lt;br /&gt;&lt;br /&gt;SELECT A.*&lt;br /&gt;FROM(SELECT ((SELECT MAX(Hire_t) FROM ABC) + 1) - ROW_NUMBER() OVER&lt;br /&gt;(ORDER BY GETDATE() DESC) AS DT &lt;br /&gt;FROM sysobjects WITH (NOLOCK)) A  &lt;br /&gt;WHERE A.DT BETWEEN&lt;br /&gt;(SELECT MIN(Hire_t) FROM ABC)&lt;br /&gt;AND (SELECT MAX(Hire_t) FROM ABC)&lt;br /&gt;AND A.DT NOT IN (SELECT HIRE_T FROM ABC)&lt;br /&gt;&lt;br /&gt;It ain't as simple as it sound!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-871717011388428102?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/871717011388428102/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=871717011388428102&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/871717011388428102?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/871717011388428102?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2008/06/re-you-might-need-to-scratch-your-head.html" title="Re: You might need to scratch your head" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0EARHw-fyp7ImA9WxdSFE0.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-5520068801707567567</id><published>2008-05-21T13:48:00.000-07:00</published><updated>2008-05-21T14:34:05.257-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-21T14:34:05.257-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="code jam" /><category scheme="http://www.blogger.com/atom/ns#" term="crack the code" /><category scheme="http://www.blogger.com/atom/ns#" term="C jam" /><title>What are we aiming to accomplish with this code?</title><content type="html">int remove_duplicates(int * p, int size)&lt;br /&gt;{&lt;br /&gt; int current, insert = 1;&lt;br /&gt;for (current=1; current &lt; size; current++)&lt;br /&gt;if (p[current] != p[insert-1])&lt;br /&gt;{&lt;br /&gt; p[insert] = p[current];&lt;br /&gt;current++; insert++;&lt;br /&gt;}&lt;br /&gt;else current++;&lt;br /&gt;return insert;&lt;br /&gt; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-5520068801707567567?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/5520068801707567567/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=5520068801707567567&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/5520068801707567567?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/5520068801707567567?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2008/05/what-are-we-aiming-to-accomplish-with.html" title="What are we aiming to accomplish with this code?" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CE4FSHk-fip7ImA9WxdSFE0.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-3672103233061066151</id><published>2008-05-21T13:37:00.000-07:00</published><updated>2008-05-21T13:48:39.756-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-21T13:48:39.756-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SQL Query" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL Problem" /><title>Re: You might need to scratch your head</title><content type="html">Atif, it's seems like &lt;span style="color:#ff0000;"&gt;Imran&lt;/span&gt; has cracked this one!&lt;br /&gt;&lt;br /&gt;Here we are with the solution;&lt;br /&gt;&lt;br /&gt;SELECT Hire_T + 1&lt;br /&gt;FROM ABC AS AC&lt;br /&gt;WHERE NOT EXISTS&lt;br /&gt;(&lt;br /&gt;SELECT *&lt;br /&gt;FROM ABC AS H&lt;br /&gt;WHERE H.Hire_T = (AC.Hire_T + 1)&lt;br /&gt;AND H.Number_Of_Employees_Hired &gt; 0&lt;br /&gt;)&lt;br /&gt;AND Hire_T + 1 &lt; (SELECT MAX(Hire_T) from ABC)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Can anyone else achieve the desired output in an alternate way?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-3672103233061066151?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/3672103233061066151/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=3672103233061066151&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/3672103233061066151?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/3672103233061066151?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2008/05/re-you-might-need-to-scratch-your-head.html" title="Re: You might need to scratch your head" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;CEIGQHw6fCp7ImA9WxdTEkg.&quot;"><id>tag:blogger.com,1999:blog-7628574020328710959.post-7906375590336858603</id><published>2008-05-08T05:43:00.000-07:00</published><updated>2008-05-08T06:15:21.214-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-08T06:15:21.214-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SQL Query" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL Problem" /><title>You might need to scratch your head!</title><content type="html">We have Table ABC;&lt;br /&gt;&lt;br /&gt;Year_T &amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbspNumber_Of_Employees_Hired&lt;br /&gt;1995 &amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp7&lt;br /&gt;1997 &amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp9&lt;br /&gt;1999 &amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp2&lt;br /&gt;2000 &amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp14&lt;br /&gt;2003 &amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp5&lt;br /&gt;2005 &amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp6&lt;br /&gt;&lt;br /&gt;This table contains data of years and the number of employees hired in a company in the respective year.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Problem is to find out in which years the company did not hire any one.&lt;br /&gt;(Means; we need years, 1996, 1998,2001,2002 and 2004).&lt;br /&gt;&lt;br /&gt;Conditions;&lt;br /&gt;&lt;br /&gt;We have to use a in-line SQL query only. No stored procedures are allowed. Also, we cannot alter this table or view. FYI, both column types are integers&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Submitted by &lt;span style="color:#ff0000;"&gt;Atif&lt;/span&gt; Fasihi&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7628574020328710959-7906375590336858603?l=trgtech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://trgtech.blogspot.com/feeds/7906375590336858603/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7628574020328710959&amp;postID=7906375590336858603&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/7906375590336858603?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7628574020328710959/posts/default/7906375590336858603?v=2" /><link rel="alternate" type="text/html" href="http://trgtech.blogspot.com/2008/05/you-might-need-to-scratch-your-head_08.html" title="You might need to scratch your head!" /><author><name>trg tech</name><uri>http://www.blogger.com/profile/03580700479450738320</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="19" src="http://1.bp.blogspot.com/_KrWGd4q-K8w/SQIkpPikZWI/AAAAAAAAACM/IQ--VZF-5jw/S220/TRG-Tech-Logo.gif" /></author><thr:total>0</thr:total></entry></feed>

