Friday, September 17, 2010
About Windows Communication Foundation (WCF)
* A secure service to process business transactions.
* A service that supplies current data to others, such as a traffic report or other monitoring service.
* A chat service that allows two people to communicate or exchange data in real time.
* A dashboard application that polls one or more services for data and presents it in a logical presentation.
* Exposing a workflow implemented using Windows Workflow Foundation as a WCF service.
* A Silverlight application to poll a service for the latest data feeds.
While creating such applications was possible prior to the existence of WCF, WCF makes the development of endpoints easier than ever. In summary, WCF is designed to offer a manageable approach to creating Web services and Web service clients.
Features of WCF
WCF includes the following set of features. For more information, see WCF Feature Details.
* Service Orientation
One consequence of using WS standards is that WCF enables you to create service oriented applications. Service-oriented architecture (SOA) is the reliance on Web services to send and receive data. The services have the general advantage of being loosely-coupled instead of hard-coded from one application to another. A loosely-coupled relationship implies that any client created on any platform can connect to any service as long as the essential contracts are met.
* Interoperability
WCF implements modern industry standards for Web service interoperability. For more information about the supported standards, see Interoperability and Integration.
* Multiple Message Patterns
Messages are exchanged in one of several patterns. The most common pattern is the request/reply pattern, where one endpoint requests data from a second endpoint. The second endpoint replies. There are other patterns such as a one-way message in which a single endpoint sends a message without any expectation of a reply. A more complex pattern is the duplex exchange pattern where two endpoints establish a connection and send data back and forth, similar to an instant messaging program. For more information about how to implement different message exchange patterns using WCF see Contracts.
* Service Metadata
WCF supports publishing service metadata using formats specified in industry standards such as WSDL, XML Schema and WS-Policy. This metadata can be used to automatically generate and configure clients for accessing WCF services. Metadata can be published over HTTP and HTTPS or using the Web Service Metadata Exchange standard. For more information, see Metadata.
* Data Contracts
Because WCF is built using the .NET Framework, it also includes code-friendly methods of supplying the contracts you want to enforce. One of the universal types of contracts is the data contract. In essence, as you code your service using Visual C# or Visual Basic, the easiest way to handle data is by creating classes that represent a data entity with properties that belong to the data entity. WCF includes a comprehensive system for working with data in this easy manner. Once you have created the classes that represent data, your service automatically generates the metadata that allows clients to comply with the data types you have designed. For more information, see Using Data Contracts
* Security
Messages can be encrypted to protect privacy and you can require users to authenticate themselves before being allowed to receive messages. Security can be implemented using well-known standards such as SSL or WS-SecureConversation. For more information, see Windows Communication Foundation Security.
* Multiple Transports and Encodings
Messages can be sent on any of several built-in transport protocols and encodings. The most common protocol and encoding is to send text encoded SOAP messages using is the HyperText Transfer Protocol (HTTP) for use on the World Wide Web. Alternatively, WCF allows you to send messages over TCP, named pipes, or MSMQ. These messages can be encoded as text or using an optimized binary format. Binary data can be sent efficiently using the MTOM standard. If none of the provided transports or encodings suit your needs you can create your own custom transport or encoding. For more information about transports and encodings supported by WCF see Transports in Windows Communication Foundation.
* Reliable and Queued Messages
WCF supports reliable message exchange using reliable sessions implemented over WS-Reliable Messaging and using MSMQ. For more information about reliable and queued messaging support in WCF see Queues and Reliable Sessions.
* Durable Messages
A durable message is one that is never lost due to a disruption in the communication. The messages in a durable message pattern are always saved to a database. If a disruption occurs, the database allows you to resume the message exchange when the connection is restored. You can also create a durable message using the Windows Workflow Foundation (WF). For more information, see Workflow Services.
* Transactions
WCF also supports transactions using one of three transaction models: WS-AtomicTtransactions, the APIs in the System.Transactions namespace, and Microsoft Distributed Transaction Coordinator. For more information about transaction support in WCF see Transactions.
* AJAX and REST Support
REST is an example of an evolving Web 2.0 technology. WCF can be configured to process "plain" XML data that is not wrapped in a SOAP envelope. WCF can also be extended to support specific XML formats, such as ATOM (a popular RSS standard), and even non-XML formats, such as JavaScript Object Notation (JSON).
* Extensibility
The WCF architecture has a number of extensibility points. If extra capability is required, there are a number of entry points that allow you to customize the behavior of a service. For more information about available extensibility points see Extending WCF.
WCF Integration with Other Microsoft Technologies
WCF is a flexible platform. Because of this extreme flexibility, WCF is also used in several other Microsoft products. By understanding the basics of WCF, you have an immediate advantage if you also use any of these products.
The first technology to pair with WCF was the Windows Workflow Foundation (WF). Workflows simplify application development by encapsulating steps in the workflow as “activities.” In the first version of Windows Workflow Foundation, a developer had to create a host for the workflow. The next version of Windows Workflow Foundation was integrated with WCF. That allowed any workflow to be easily hosted in a WCF service; you can do this by automatically choosing the WF/WCF a project type in Visual Studio 2010 and Visual Studio 2010.
Microsoft BizTalk Server R2 also utilizes WCF as a communication technology. BizTalk is designed to receive and transform data from one standardized format to another. Messages must be delivered to its central message box where the message can be transformed using either a strict mapping or by using one of the BizTalk features such as its workflow engine. BizTalk can now use the WCF Line of Business (LOB) adapter to deliver messages to the message box.
Microsoft Silverlight is a platform for creating interoperable, rich Web applications that allow developers to create media-intensive Web sites (such as streaming video). Beginning with version 2, Silverlight has incorporated WCF as a communication technology to connect Silverlight applications to WCF endpoints.
Microsoft .NET Services is a cloud computing initiative that uses WCF for building Internet-enabled applications. Use .NET Services to create WCF services that operate across trust boundaries.
The hosting features of Windows Server AppFabric application server is specifically built for deploying and managing applications that use WCF for communication. The hosting features includes rich tooling and configuration options specifically designed for WCF-enabled applications.
Monday, February 2, 2009
Web 3.0
Google, with the cooperation of prestigious libraries, has been digitizing books to make them findable. The practice excites futurists but angers some publishers. Of necessity, digitization creates virtual copies. The publishers claim that such duplication violates copyright, even if the book’s content is hidden from the public. The New York Public Library, one of Google’s partners in the project, recently hosted a public debate on the subject.
It was while attending that debate that my discomfort with the hype surrounding an emerging genre of web development turned into a full-blown hate-on.
The big room was packed. There were more ticket holders than chairs. Yet the seat in front of me remained empty. Each time a hopeful standee approached the empty chair—and this happened every few nanoseconds—the poor schmoe seated next to it had to apologetically explain, “Sorry, the seat is occupied.”
It soon became clear that the kindly schmoe was reserving the seat, not for a friend or colleague, but for a stranger who had imposed that duty on him. While the kindly fellow defended the other man’s throne against a steady stream of resentful ticket holders, the stranger was off somewhere knocking back the library’s free champagne. I wondered what kind of jackass would ask someone he didn’t know to save his seat for thirty minutes at an oversold event. When he finally arrived, I found out.
A taste of ass
“Were you at the Web 2.0 conference?” the arriving man asked, by way of thanking the other for saving his place. The kindly schmoe signified in the negative. This was all the encouragement our man needed to launch into an adjective-rich and fact-poor monologue that was loud enough for half the room to hear.
It soon appeared that “Web 2.0” was not only bigger than the Apocalypse but also more profitable. Profitable, that is, for investors like the speaker. Yet the new gold rush must not be confused with the dot-com bubble of the 1990s:
“Web 1.0 was not disruptive. You understand? Web 2.0 is totally disruptive. You know what XML is? You’ve heard about well-formedness? Okay. So anyway—”
And on it ran, like a dentist’s drill in the Gulag.
At first I tolerated the pain by mentally modifying the famous scene from Annie Hall:
HIM: “I teach a venture capitalist workshop, so I think my insights into XML have a great deal of validity.”
ME: “Oh, really? Because I happen to have Mr. Bray right here.”
Later I gnawed my knuckles. At some point, in a kind of fever, I may have moaned. Blessedly, at last the lights dimmed and the night’s real speakers redeemed the evening.
But the ass whose braying I’d endured left a bad taste.
Less noise, more signal
Let us now define and disclaim.
The jerk at the library event was in love with his own noise, and the problem with noise is that it interferes with signals. What is the signal? What, if anything, does “Web 2.0” mean? What is the good thing that the hype risks obscuring?
Well, there are several good things, it seems to me.
Some small teams of sharp people—people who once, perhaps, worked for those with dimmer visions—are now following their own muses and designing smart web applications. Products like Flickr and Basecamp are fun and well-made and easy to use.
That may not sound like much. But ours is a medium in which, more often than not, big teams have slowly and expensively labored to produce overly complex web applications whose usability was near nil on behalf of clients with at best vague goals. The realization that small, self-directed teams powered by Pareto’s Principle can quickly create sleeker stuff that works better is not merely bracing but dynamic. As 100 garage bands sprang from every Velvet Underground record sold, so the realization that one small team can make good prompts 100 others to try.
The best and most famous of these new web products (i.e. the two I just mentioned) foster community and collaboration, offering new or improved modes of personal and business interaction. By virtue of their virtues, they own their categories, which is good for the creators, because they get paid.
It is also good for our industry, because the prospect of wealth inspires smart developers who once passively took orders to start thinking about usability and design, and to try to solve problems in a niche they can own. In so doing, some of them may create jobs and wealth. And even where the payday is smaller, these developers can raise the design and usability bar. This is good for everyone. If consumers can choose better applications that cost less or are free, then the web works better, and clients are more likely to request good (usable, well-designed) work instead of the usual schlock.
Of this they spin
In addition to favoring simpler solutions built by leaner teams, the stuff labeled “Web 2.0” tends to have technological commonalities.
On the back end, it is most often powered by open source technologies like PHP or (especially) Ruby on Rails.
On the front end, it is mainly built with web standards—CSS for layout, XML for data, XHTML for markup, JavaScript and the DOM for behavior—with a little Microsoft stuff thrown in.When web standards with a little Microsoft stuff thrown in are used to create pages that can interact with the server without refreshing, the result is web apps that feel peppy and, dare we say it, Flash-like. In a white paper that actually got read, writer/consultant Jesse James Garrett named what I’ve just described. He called it AJAX, and the acronym not only took, it helped interactivity powered by these technologies gain traction in the marketplace.
Here is where the spinners bedazzle the easily confused. Consider this scenario:
Steven, a young web wiz, has just celebrated his bar mitzvah. He received a dozen gifts and must write a dozen thank-you notes. Being webbish, he creates an on-line “Thank-You Note Generator.” Steven shows the site to his friends, who show it to their friends, and soon the site is getting traffic from recipients of all sorts of gifts, not just bar mitzvah stuff.
If Steven created the site with CGI and Perl and used tables for layout, this is the story of a boy who made a website for his own amusement, perhaps gaining social points in the process. He might even contribute to a SXSW Interactive panel.
But if Steven used AJAX and Ruby on Rails, Yahoo will pay millions and Tim O’Reilly will beg him to keynote.Who weeps for AJAX?
We pause but a moment to consider two AJAX-related headaches.
The first afflicts people who make websites. Wireframing AJAX is a bitch. The best our agency has come up with is the Chuck Jones approach: draw the key frames. Chuck Jones had an advantage: he knew what Bugs Bunny was going to do. We have to determine all the things a user might do, and wireframe the blessed moments of each possibility.
The second problem affects all who use an AJAX-powered site. If web signifiers and conventions are still in their infancy, then AJAX-related signifiers and conventions are in utero. I am still discovering features of Flickr. Not new features—old ones. You find some by clicking in empty white space. This is like reading the news by pouring ACME Invisible Ink Detector on all pieces of paper that cross your path until you find one that has words on it.
I am not knocking Flickr. I love Flickr. I wish I were as gifted as the people who created it. I’m merely pointing out complex design problems that will not be solved overnight or by a single group. In Ma.gnolia, which is now in beta, we used small icons to indicate that additional actions could be taken and to hint at what those actions might be. We succeeded to the extent that 16px by 16px drawings can communicate such concepts as “you may edit these words by clicking on them.”
These problems and others will be solved, most likely by someone reading this page. One points to these issues mainly to dent a swelling of unthinking euphoria. We have been down this road before.
Bubble, bubble
When I started designing websites, if the guy on the plane next to me asked what I did, I had to say something like “digital marketing” if I wanted to avoid the uncomprehending stare.
A few years later, if I told the passenger beside me I was a web designer, he or she would regard me with a reverence typically reserved for Stanley-Cup-winning Nobel Laureate rock stars.
Then the bubble burst, and the same answer to the same question provoked looks of pity and barely concealed disgust. I remember meeting a high-rolling entrepreneur in the early 2000s who asked what I did. I should have told him I hung around playgrounds, stealing children’s lunch money. He would have had more respect for that answer.
I hated the bubble. I hated it when Vanity Fair or New York Magazine treated web agency founders like celebrities. I hated that mainstream media and the society it informs either ignored the web or mistook it for a high-stakes electronic version of the fashion industry.When the bubble burst, these same geniuses decided the web was of no interest at all. Funny, to me it was more interesting than ever. To me it was people and organizations publishing content that might not otherwise have seen light. It was small businesses with realistic goals delivering value and growing. It was traditional publishers finding their way into a new digital medium, helped by folks like you and me. It was new ways of talking and sharing and loving and selling and healing and being. Hardly dull.
Eventually the uninformed stopped seeing a wasteland and started seeing bloggers, by which they meant only those bloggers who wrote about politics, most often from the extreme left or right. The web was “back” even though it had never left. (Of course, the fifth time you hear Wolf Blitzer say “blogger” or ask, “what do the bloggers have to tell us about these still-unfolding events?” the joke is stale and you wish those who don’t get the web would go back to ignoring it.)
But nothing, not even the rants of political bloggers, was as exciting as the scent of money. As the first properly valued “Web 2.0” properties began to find buyers, a frenzy like the old one popped hideously back to life. Yahoo spent how much? Google bought what? Here was real blood in the water.But how to persuade the other sharks in the tank that this blood feast was different from the previous boom-and-bust? Easy: Dismiss everything that came before as “Web 1.0.”
It’s only castles burning
To you who are toiling over an AJAX- and Ruby-powered social software product, good luck, God bless, and have fun. Remember that 20 other people are working on the same idea. So keep it simple, and ship it before they do, and maintain your sense of humor whether you get rich or go broke. Especially if you get rich. Nothing is more unsightly than a solemn multi-millionaire.
To you who feel like failures because you spent last year honing your web skills and serving clients, or running a business, or perhaps publishing content, you are special and lovely, so hold that pretty head high, and never let them see the tears.
Tuesday, October 28, 2008
New Blackfin BF51x Processor Launches
The new Blackfin processors are the BF512, BF514, BF516 and BF518. According to Analog Devices, "All are single-core convergent processors that surpass outdated, heterogenous MCU+DSP approaches in reducing part-count, system cost, board space, and power consumption. Like traditional DSPs, the BF51x processors feature high clock rates and low power dissipation per unit of processing (MMACs/mW), and like traditional MCUs, these convergent processors are OS and compiler-friendly."
All four of the new 16-/32-bit BF51x processors are available at clock speeds up to 400 MHz (800 MMACS) and include 116 kBytes of RAM plus an optional 4 Mbits of serial (SPI) flash memory. Each also integrates Lockbox security for code and content protection.
The Blackfin processors on-chip integration assures easy connection to a variety of audio, video, imaging and communications peripherals and memory types. Integrated features include support for sixteen stereo I2S digital-audio channels, twelve peripheral DMA channels, and an advanced memory controller for glueless connection to multiple banks of external SDRAM, SRAM, Flash, or ROM. Each processor includes two dual-channel synchronous serial communication ports (SPORTs), a high-speed parallel peripheral interface (PPI), an I2C compatible two-wire interface (TWI), dual PC-compatible UARTs, and 2 SPI-compatible serial peripheral interface ports.
"System solutions ultimately determine how much power any particular application will consume," said Jerry McGuire, vice president, General Purpose DSP, Analog Devices, Inc. "It's quite intuitive that a single convergent processor with the right mix of integrated peripherals is always going to lead to lower BOM costs and power consumption than an inelegant combination of disparate processors and parts can possibly achieve. Many companies today talk about the lowest power or the highest performance. But what is important for today's applications is the highest levels of performance at low power."
All of the new Blackfin processors, delivering 8.5 MMACs/mW (100 MHz), include dynamic power management (DPM) functionality that lets developers match the processor's power consumption to processing requirements during program execution. AI pioneered the application of DPM more than seven years ago with the release of the first Blackfin processors.
The BF512 is the new low-cost entry point in the Blackfin processor family. The device balances performance, peripheral integration, and price, and is well suited for the most cost-sensitive applications including portable test equipment, embedded modems, biometrics, and consumer audio. All members of the BF51x family also include a new 3-phase PWM generation unit for inductive motor control applications and a quadrature interface for rotary encoders.
The BF514, BF516, and BF518 all extend the convergent processor family further into the portable application space with on-chip removable-storage interfaces. All three devices include Secure Digital Input Output (SDIO) for connectivity to standard flash memory and Wi-Fi cards; a power-optimized CE-ATA storage interface for small form-factor handheld and consumer electronics applications; and an embedded multimedia card (eMMC) interface for integrating mass-storage flash memory in a wide range of consumer electronics, wireless, navigation, and industrial applications.
For developers of network-connected industrial and instrumentation applications, the BF516 adds an Ethernet 10/100 MAC with Media Independent Interface (MII) and Reduced Media Independent Interface (RMII). Highly integrated for industrial, portable and VoIP applications, the BF518 Ethernet MAC supports theIEEE-1588 clock synchronization protocol for networked measurement and control systems.
An increasingly wide variety of applications are viewing the contemporary convergent-processor approach as the soundest choice for cost- and power-sensitive designs. For example, some voice-over-IP (VoIP) telephony system developers have designed in separate DSP and microcontroller chips to implement the required media and control functionality. With BF51x Blackfin processors, however, a single architecture enables full VoIP telephony functionality in a unified software development environment with faster system debugging and deployment, lower overall system cost, and the lowest possible system power demand.
"GIPS VoiceEngine media processing capabilities meet the highest requirements of VoIP equipment manufacturers and paired with Analog Devices' Blackfin processors we can assure customers a consistently high quality VoIP experience. The performance, power and functionality profile of Blackfin is a superb fit for VoIP technology," said Larry Golob, Senior Director Business Development,Global IP Solutions.
With the Global IP Solutions (GIPS) VoiceEngine package of VoIP software components available for Blackfin processors, and a VoIP reference platform available on uClinux, the feature-rich Blackfin family has driven down the price required to easily design and deploy a fully scalable range of VoIP telephony designs across multiple market spaces.
Pricing and Availability
The BF51x family includes the BF512 at $4.95, the BF514 at $7.75, the BF516 at $8.75 and the BF518 at $11.85. Processors are sampling immediately. All prices are based on 25,000-unit quantities.
Tuesday, October 7, 2008
New C# 3.0 Language Features
Automatic Properties, Object Initializers, and Collection Initializers
C# 3 introduces a whole host of new time-saving features to help developers in every day scenarios - once you're using them, you really won't want to go back! We've republished a series of blog posts by Scott Guthrie here (with permission) to give you the low-down. Scott's blog is an awesome resource and well worth checking out for the latest stuff coming out of the Microsoft camp [--Ed]
New C# Language Feature: Automatic Properties
If you are a C# developer today, you are probably quite used to writing classes with basic properties like the code-snippet below:
public class Person
{
private string _firstName;
private string _lastName;
private int _age;
public string FirstName
{
get
{
return _firstName;
}
set
{
_firstName = value;
}
}
public string LastName
{
get
{
return _lastName;
}
set
{
_lastName = value;
}
}
public int Age
{
get
{
return _age;
}
set
{
_age = value;
}
}
}
Note about that we aren't actually adding any logic in the getters/setters of our properties - instead we just get/set the value directly to a field. This begs the question - then why not just use fields instead of properties? Well - there are a lot of downsides to exposing public fields. Two of the big problems are: 1) you can't easily databind against fields, and 2) if you expose public fields from your classes you can't later change them to properties (for example: to add validation logic to the setters) without recompiling any assemblies compiled against the old class.
The new C# compiler that ships in "Orcas" provides an elegant way to make your code more concise while still retaining the flexibility of properties using a new language feature called "automatic properties". Automatic properties allow you to avoid having to manually declare a private field and write the get/set logic -- instead the compiler can automate creating the private field and the default get/set operations for you.
For example, using automatic properties I can now re-write the code above to just be:
public class Person {
public string FirstName {
get; set;
}
public string LastName {
get; set;
}
public int Age {
get; set;
}
} Or If I want to be really terse, I can collapse the whitespace even further like so:
public class Person {
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
} When the C# "Orcas" compiler encounters an empty get/set property implementation like above, it will now automatically generate a private field for you within your class, and implement a public getter and setter property implementation to it. The benefit of this is that from a type-contract perspective, the class looks exactly like it did with our first (more verbose) implementation above. This means that -- unlike public fields -- I can in the future add validation logic within my property setter implementation without having to change any external component that references my class.
Bart De Smet has a great write-up on what happens under the covers when using automatic properties with the March CTP release of "Orcas". You can read his excellent blog post on it here.
New C# and VB Language Feature: Object Initializers
Types within the .NET Framework rely heavily on the use of properties. When instantiating and using new classes, it is very common to write code like below:
Person person = new Person();
person.FirstName = "Scott";
person.LastName = "Guthrie";
person.Age = 32; Have you ever wanted to make this more concise (and maybe fit on one line)? With the C# and VB "Orcas" compilers you can now take advantage of a great "syntactic sugar" language feature called "object Initializers" that allows you to-do this and re-write the above code like so:
Person person = new Person { FirstName="Scott", LastName="Guthrie", Age=32 }; The compiler will then automatically generate the appropriate property setter code that preserves the same semantic meaning as the previous (more verbose) code sample above.
In addition to setting simple property values when initializing a type, the object initializer feature allows us to optionally set more complex nested property types. For example, assume each Person type we defined above also has a property called "Address" of type "Address". We could then write the below code to create a new "Person" object and set its properties like so:
Person person = new Person {
FirstName = "Scott",
LastName = "Guthrie"
Age = 32,
Address = new Address {
Street = "One Microsoft Way",
City = "Redmond",
State = "WA",
Zip = 98052
}
}; Bart De Smet again has a great write-up on what happens under the covers when using object initializers with the March CTP release of "Orcas". You can read his excellent post on it here.
New C# and VB Language Feature: Collection Initializers
Object Initializers are great, and make it much easier to concisely add objects to collections. For example, if I wanted to add three people to a generics-based List collection of type "Person", I could write the below code:
List people = new List ();
people.Add( new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 } );
people.Add( new Person { FirstName = "Bill", LastName = "Gates", Age = 50 } );
people.Add( new Person { FirstName = "Susanne", LastName = "Guthrie", Age = 32 } ); Using the new Object Initializer feature alone saved 12 extra lines of code with this sample versus what I'd need to type with the C# 2.0 compiler.
The C# and VB "Orcas" compilers allow us to go even further, though, and also now support "collection initializers" that allow us to avoid having multiple Add statements, and save even further keystrokes:
List people = new List {
new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 },
new Person { FirstName = "Bill", LastName = "Gates", Age = 50 },
new Person { FirstName = "Susanne", LastName = "Guthrie", Age = 32 }
}; When the compiler encounters the above syntax, it will automatically generate the collection insert code like the previous sample for us.
Summary:
As developers we now have a much more concise way to define objects, initialize them, and add them to collections. At runtime, the semantics will be exactly the same as with today's longer syntax (so you don't need to worry about behavior changes). But now you don't need to type as much, and your code can be more crisp and concise.
You can find the original blog post here, or read on for the rest of the features.
resource from http://www.developerfusion.com/Monday, October 6, 2008
Introducing Visual Studio .NET 2008 - Top 10 Features
After a long beta period Microsoft pushed Visual Studio .NET 2008 (code named “Orcas”) out to MSDN in November - keeping their promise to deliver it by the end of the year. DevelopMentor has been using Orcas in many of our .NET classes for a while now and I for one, am pretty excited that it’s finally here. There are a ton of new features and enhancements in this release that make it almost a no-brainer to upgrade - I thought I’d take a moment and list my top ten favorites in no particular order:
#10: WPF designer (“Cider”)
I spend a lot of time on a rich-client island and compared to the embarrassing support for WPF provided for VS2005 (through an add-on) VS2008 just plain rocks. Not only does the designer just work, the XAML intellisense is full featured and driven through a real XAML parser and not an XSD file. That means custom types and namespace completion actually function as you would expect them to! The visual designer and XAML views stay synchronized and “mini” thumbnails and scaling bars are used to help you see what you are building. You can also see how the new Cider environment has borrowed from Blend - a Search box is present to filter properties down and the selection in the XAML pane is synchronized with the visual designer so if you highlight a tag, it selects the appropriate object in the visual pane.
#9: WPF and Windows Forms integration (“Crossbow”)
Hand in hand with the designer view, VS2008 improves the designer experience for Windows Forms to WPF integration. Specifically, ElementHost is now present in the toolbox and you can drag and drop WPF user controls right onto your Form! You get a live preview of the control and can edit the content right in the designer.
#8: ClickOnce improvements
Microsoft introduced a simplified way to deploy Windows Forms clients from the web with Visual Studio 2005 called ClickOnce. With 2008, they’ve improved the experience by allowing deployment through FireFox (previously only IE was supported), better file associations so your application can be launched by activating a data file, better support for certificate expiration and changing the deployment location without resigning the application and support for Office add-ins and WPF XAML Browser application deployment.
#7: Multi-framework targeting
This release of Visual Studio has a much-needed feature that I wish had been there before - the ability to target multiple versions of .NET. Specifically, you can select your target framework (2.0 SP1, 3.0 or 3.5) and the project types, toolbox, references, intellisense and features will be appropriately set to that version. This selection can occur during project creation - in the project templates dialog or on the project properties dialog. Be aware that selecting .NET Framework 2.0 actually means 2.0 SP1 and not the original .NET 2.0 framework released with Visual Studio 2005.
#6: Better Intellisense support
Web developers benefit from this release too - Visual Studio now has intellisense and code completion support for JavaScript! It’s smart enough to look at the underlying type currently assigned and correctly infer the methods which are available. So, for example if you assign a numeric type, the dropdown will be populated with the proper methods available for the type.
Visual Studio will also look at the comments applied to your methods - just like in C# and VB.NET, it will pull descriptions out of XML based comments on your JavaScript methods and display descriptions as tooltips when you are navigating the intellisen se dropdown.
Another cool feature added to intellisense is the filtering applied - now if you press a letter and start typing, it will begin to restrict your choices displayed, not just scroll to that section. This filters the output and makes it easier to find what you are looking for.
#5: Organize your "using" statements
Visual Studio now has the ability to organize your using statements. As a project evolves, you often end up with a ton of using statements at the top of each file which are not really being used - either because the project template added it, or because you originally did use something from that namespace which was then removed later. Now you can right click on your using statements and sort and/or remove unused namespaces.
#4: Refactoring enhancements
The refactoring support was a welcome addition to VS 2005 - and Microsoft has enhanced the support in 2008 to support C# 3.0 features and allow you to refactor anonymous types, extension methods and lambda expressions.
#3: C# 3.0 support
Speaking of C# 3.0, that has got to be one of the coolest features - functional programming seems to be all the rage these days and introducing these features into C# 3.0 will allow you to be the coolest programmer on your floor. Things like automatic properties, lambda expressions (which reduce your typing for anonymous delegates), partial methods, anonymous types and extension methods will radically change how you can build applications. They can seem weird at first for some people, but don’t be afraid of them! They will cut down your typing and provide for some really cool ways to enhance and evolve your projects.
#2: Visual Studio Split View
It is becoming increasingly more common to have multiple monitors on developers desks. Building on the “split” window feature of VS 2005, Visual Studio 2008 now allows you to tile the window horizontally or vertically so you can split your design and code view across monitors! This works in any of the designers (ASP.NET, WinForms, WPF, etc.)
#1: Debugging the .NET source code
There are actually several debugging enhancements (try debugging JavaScript on the client-side for example - it works great!) but I think the coolest feature by far has got to be the debugging enhancements which will allow you to actually debug into the source code of the .NET framework. Scott Guthrie announced a few weeks ago on his blog that they intend to release the source code under the Microsoft Reference License. As part of that release, VS2008 will have integrated debugging support so that you can step into the framework libraries (ever want to know why your DataBind isn’t working??). Visual Studio will automatically download the source file from Microsoft’s server and you will get full watch and breakpoint support. This isn’t quite ready yet, but it’s coming soon and promises to be one of the biggest timesavers added to Visual Studio!
There are a ton of other features that make VS 2008 a worthwhile upgrade - you can experience it yourself by downloading a copy at no cost today Scott Guthrie's Blog (Express editions have been released) or upgrading from MSDN. VS 2008 co-exists just fine with 2005 and 2003 but be aware that the project format has changed and it’s not backwards compatible, so sharing projects with your coworkers may be slightly painful for you until everyone moves to the new release as you will have to maintain two project and solution files.
resource from http://www.developerfusion.com/
Friday, September 19, 2008
Google Co-Founder Has Genetic Code Linked to Parkinson’s
Mr. Brin, who made the announcement on a blog, says he does not have the disease and that the exact implications of the discovery are not clear. Studies show that his likelihood of contracting Parkinson’s disease in his lifetime may be 20 percent to 80 percent, Mr. Brin said.
Mr. Brin, whose personal fortune was recently pegged at $15.9 billion by Forbes, ranking him as the 13th richest American, said that he may help provide more money for research into the disease.
Through a Google spokesman, Mr. Brin declined to be interviewed for this article.
Mr. Brin said he learned that he carries a mutation of the LRRK2 gene, known as G2019S. His mother, Eugenia Brin, also carries the gene mutation and has Parkinson’s.
Medical experts said that those who carry that gene mutation are more likely than not to live disease-free.
“Many people with this mutation never develop the disease,” said Dr. Susan B. Bressman, chairwoman of the neurology department at Beth Israel Medical Center in New York. “He is more likely to have a normal life than a Parkinson’s disease life.”
Dr. Bressman, who specializes in movement disorders and genetics, said that about 30 percent of people with the gene mutation develop the disease.
Mr. Brin said he discovered that he carried the gene mutation using a service from 23andMe, a biotechnology start-up co-founded by his wife, Anne Wojcicki. The company can map customers’ DNA and help them find information about their ancestry and their risk of getting certain diseases. Google, where Mr. Brin is president of technology, invested $3.9 million in 23andMe in May 2007.
Parkinson’s disease is typically a late-onset disorder, in which people often first exhibit symptoms in their 50s or 60s. Mr. Brin is 35. Symptoms, which can include tremors, stiffness, slowness of movement and speech impairment, can sometimes be managed through medication and surgery. While many people with the disease continue to function at a high level for many years, the disease is not curable and highly variable. Symptoms tend to become progressively worse over time.
“This leaves me in a rather unique position,” Mr. Brin wrote in his blog post. “I know early in my life something I am substantially predisposed to. I now have the opportunity to adjust my life to reduce those odds (e.g. there is evidence that exercise may be protective against Parkinson’s). I also have the opportunity to perform and support research into this disease long before it may affect me.”
Mr. Brin and his family have already endowed the Eugenia Brin Professorship in Parkinson’s Disease and Movement Disorders at the University of Maryland School of Medicine, where his mother is being treated.
Analysts said they did not believe that the news about Mr. Brin would have a negative impact on Google’s shares.
Software spots the spin in political speeches
"Given that he probably feels jilted that his wife Hillary didn't get the nomination, I would have to say that the entire speech was actually given very gracefully," says Ekman, who has studied people's facial expressions and how they relate to what they are thinking for over 40 years.
It seems that Clinton's micro-expression gave away more about his true feelings than he intended. Politicians do not usually give themselves away so tellingly, and many of us would like to know whether they mean what they are saying. So how are we to know when they are lying?
Technology is here to help. Software programs that analyse a person's speech, voice or facial expressions are building upon the work of researchers like Ekman to help us discover when the truth is being stretched, and even by how much. "The important thing to recognise is that politicians aren't typically good at out-and-out lies, but they are very adept at dancing around the truth," says David Skillicorn, a mathematics and computer science researcher at Queen's University in Kingston, Ontario, Canada. "The 2008 election has so far given us plenty of chances to see them in action."
Skillicorn has been watching out for verbal "spin". He has developed an algorithm that evaluates word usage within the text of a conversation or speech to determine when a person "presents themselves or their content in a way that does not necessarily reflect what they know to be true".
The algorithm counts usage of first person nouns - "I" tends to indicate less spin than "we", for example. It also searches out phrases that offer qualifications or clarifications of more general statements, since speeches that contain few such amendments tend to be high on spin. Finally, increased rates of action verbs such as "go" and "going", and negatively charged words, such as "hate" and "enemy", also indicate greater levels of spin. Skillicorn had his software tackle a database of 150 speeches from politicians involved in the 2008 US election race (see diagram).
When he analysed the speeches of John McCain, Barack Obama and Hillary Clinton, he found that even though the speeches were rehearsed, written by professionals and delivered by trained speakers, there were discernable differences between them. "It's clear that the speeches are still highly individualised," says Skillicorn. "This makes sense as the speeches have to, in some manner, reflect the speaker's own voice and opinions. Otherwise, they wouldn't be able to deliver them convincingly."
Additionally, he says, little details count: pronouns such as "we" and "I" are often substituted subconsciously, no matter what is written in the script.
Each of the candidates had made speeches containing very high and very low levels of spin, according to Skillicorn's program, depending on the occasion. In general though, Obama's speeches contain considerably higher spin than either McCain or Clinton. For example, for their speeches accepting their party's nomination for president, Obama's speech scored a spin value of 6.7 - where 0 is the average level of spin within all the political speeches analysed, and positive values represent higher spin. In contrast, McCain's speech scored -7.58, while Hillary Clinton's speech at the Democratic National Convention scored 0.15. Skillicorn also found that Sarah Palin's speeches contain slightly more spin than average.
So the analysis appears to back up McCain's claim that he is a "straight talker". However, for the purposes of political speech-making this may not be an entirely good thing for him. "Obama uses spin in his speeches very well," says Skillicorn. For example, Obama's spin level skyrockets when facing problems in the press, such as when Jeremiah Wright, the reverend of his former church, made controversial comments to the press.
"When you see these crises come along, the spin goes up," Skillicorn says. "Obama is very good at using stirring rhetoric to deal with the issues. And it seems to work if you look at what happens in the polls afterwards."
McCain does not seem as adept at using spin to his advantage, and his "straight talk" can make his speeches fall flat from a motivational point of view, according to Branka Zei Pollermann, founder of the Vox Institute in Geneva, Switzerland, who has analysed the candidates' voices for communication consultants Clearwater Advisors, based in London.
"The voice analysis profile for McCain looks very much like someone who is clinically depressed," says Pollermann, a psychologist who uses voice analysis software in her work with patients. Previous research on mirror neurons has shown that listening to depressed voices can make others feel depressed themselves, she says.
"John McCain's voice analysis profile looks like that of someone who is clinically depressed"
Pollermann uses auditory analysis software to map seven parameters of a person's speech, including pitch modulation, volume and fluency, to create a voice profile. She then compares that profile with the speaker's facial expressions, using as a guide a set of facial expressions mapped out by Ekman, called the Facial Action Coding System, to develop an overall picture of how they express themselves.
Her analysis shows that McCain's voice changes little in pitch as he speaks, and so conveys very little emotion or impact. Whether he is addressing positive prospects or discussing sad facts, his voice always sounds the same.
Additionally, McCain's voice and facial movements often do not match up, says Pollermann, and he often smiles in a manner that commonly conveys sarcasm when addressing controversial statements. "That might lead to what I would call a lack of credibility."
People are unlikely to trust statements made in a flat tone, particularly when they do not match the person's facial expressions. According to Pollermann's analysis, it may not make any difference that McCain does not pepper his speeches with spin, if the way he talks does not strike people as believable.
Obama, by comparison, speaks with greater pitch modulation, and his facial expressions correlate very well with what he is saying. His one facial foible may be a tendency to furrow his brow, she says, conveying constant concern. This is similar to the UK prime minister Gordon Brown, whose expressions tend to be limited to sadness, anger and disgust, according to the Vox Institute's analysis. But Obama's fluency, high speech rate and good use of pitch make him a dynamic speaker.
So what does all of this actually say about the honesty of politicians? "Our society treats political candidates like used-car salesmen," Ekman says. "The fact is that the candidates almost certainly believe what they are saying, even if they are giving some facts a much lighter treatment than others. In that way, actually catching someone in a blatant lie is relatively rare."
Indeed, Bill Clinton's fleeting facial slip was the only clear example that Ekman could recount of a politician saying something that they did not mean during both the Republican and Democratic national conventions.
However, facial recognition technology may one day be able to pick up on telltale signs that humans would have trouble spotting. For example, Yoshimasa Ohmoto and colleagues at the University of Tokyo in Japan are developing a facial recognition system for robots and artificial intelligence agents that analyses basic eye, nose and mouth movements, such as a slightly averted gaze when talking to someone, to detect if a person is telling a lie. In trials in which people played the bluffing game Indian poker, the system has already proved to be as reliable as humans trained to detect lies (AI & Society, vol 23, p 187).
"Technology is quickly catching up with psychology," says Pawan Sinha, who leads a team at the Massachusetts Institute of Technology that specialises in computerised facial-recognition technology. "It's not quite there yet, because the visualisation systems just can't work fast enough to replace the human eye and mind. But computer processing is getting faster and our recognition systems are getting better," he says. "Someday soon, computers may be able read us better than any psychologist. I imagine that will be a pretty scary day for politicians."
Outsourcing
Outsourcing involves the transfer of the management and/or day-to-day execution of an entire business function to an external service provider. The client organization and the supplier enter into a contractual agreement that defines the transferred services. Under the agreement the supplier acquires the means of production in the form of a transfer of people, assets and other resources from the client. The client agrees to procure the services from the supplier for the term of the contract. Business segments typically outsourced include information technology, human resources, facilities, real estate management, and accounting. Many companies also outsource customer support and call center functions like telemarketing, cad drafting, customer service, market research, manufacturing, designing, web development, content writing, ghostwriting and engineering.
Outsourcing and offshoring are used interchangeably in public discourse despite important technical differences. Outsourcing involves contracting with a supplier, which may or may not involve some degree of offshoring. Offshoring is the transfer of an organizational function to another country, regardless of whether the work is outsourced or stays within the same corporation/company.
With increasing globalization of outsourcing companies, the distinction between outsourcing and offshoring will become less clear over time. This is evident in the increasing presence of Indian outsourcing companies in the US and UK. The globalization of outsourcing operating models has resulted in new terms such as nearshoring, noshoring, and rightshoring that reflect the changing mix of locations. This is seen in the opening of offices and operations centers by Indian companies in the U.S. and UK
Multisourcing refers to large (predominantly IT) outsourcing agreements. Multisourcing is a framework to enable different parts of the client business to be sourced from different suppliers. This requires a governance model that communicates strategy, clearly defines responsibility and has end-to-end integration.
Strategic outsourcing is the organizing arrangement that emerges when firms rely on intermediate markets to provide specialized capabilities that supplement existing capabilities deployed along a firm’s value chain (see Holcomb & Hitt, 2007). Such an arrangement produces value within firms’ supply chains beyond those benefits achieved through cost economies. Intermediate markets that provide specialized capabilities emerge as different industry conditions intensify the partitioning of production. As a result of greater information standardization and simplified coordination, clear administrative demarcations emerge along a value chain. Partitioning of intermediate markets occurs as the coordination of production across a value chain is simplified and as information becomes standardized, making it easier to transfer activities across boundaries.
Process of outsourcing
Deciding to outsource
The decision to outsource is taken at a strategic level and normally requires board approval. Outsourcing is the divestiture of a business function involving the transfer of people and the sale of assets to the supplier. The process begins with the client identifying what is to be outsourced and building a business case to justify the decision. Only once a high level business case has been established for the scope of services will a search begin to choose an outsourcing partner.
Supplier proposals
A Request for Proposal (RFP) is issued to the shortlist suppliers requesting a proposal and a price. The suppliers are usually chosen based on location and at the lowest possible cost to the company.
Supplier competition
A competition is held where the client marks and scores the supplier proposals. This may involve a number of face-to-face meetings to clarify the client requirements and the supplier response. The suppliers will be qualified out until only a few remain. This is known as down select in the industry. It is normal to go into the due diligence stage with two suppliers to maintain the competition. Following due diligence the suppliers submit a "best and final offer" (BAFO) for the client to make the final down select decision to one supplier. It is not unusual for two suppliers to go into competitive negotiations.
Negotiations
The negotiations take the original RFP, the supplier proposals, BAFO submissions and convert these into the contractual agreement between the client and the supplier. This stage finalizes the documentation and the final pricing structure.
Contract finalization
At the heart of every outsourcing deal is a contractual agreement that defines how the client and the supplier will work together. This is a legally binding document and is core to the governance of the relationship. There are three significant dates that each party signs up to the contract signature date, the effective date when the contract terms become active and a service commencement date when the supplier will take over the services.
Transition
The transition will begin from the effective date and normally run until four months after service commencement date. This is the process for the staff transfer and the take-on of services.
Transformation
The transformation is the execution of a set of projects to implement the service level agreement (SLA), to reduce the total cost of ownership (TCO) or to implement new services. Emphasis is on 'standardisation' and 'centralisation'.
Ongoing service delivery
This is the execution of the agreement and lasts for the term of the contract.
Termination or renewal
Near the end of the contract term a decision will be made to terminate or renew the contract. Termination may involve taking back services (insourcing) or the transfer of services to another supplier.
Reasons for outsourcing
Organizations that outsource are seeking to realize benefits or address the following issues:
* Cost savings. The lowering of the overall cost of the service to the business. This will involve reducing the scope, defining quality levels, re-pricing, re-negotiation, cost re-structuring. Access to lower cost economies through offshoring called "labor arbitrage" generated by the wage gap between industrialized and developing nations.
* Cost restructuring. Operating leverage is a measure that compares fixed costs to variable costs. Outsourcing changes the balance of this ratio by offering a move from variable to fixed cost and also by making variable costs more predictable.
* Improve quality. Achieve a step change in quality through contracting out the service with a new service level agreement.
* Knowledge. Access to intellectual property and wider experience and knowledge.
* Contract. Services will be provided to a legally binding contract with financial penalties and legal redress. This is not the case with internal services.
* Operational expertise. Access to operational best practice that would be too difficult or time consuming to develop in-house.
* Staffing issues. Access to a larger talent pool and a sustainable source of skills.
* Capacity management. An improved method of capacity management of services and technology where the risk in providing the excess capacity is borne by the supplier.
* Catalyst for change. An organization can use an outsourcing agreement as a catalyst for major step change that can not be achieved alone. The outsourcer becomes a Change agent in the process.
* Reduce time to market. The acceleration of the development or production of a product through the additional capability brought by the supplier.
* Commodification. The trend of standardizing business processes, IT Services and application services enabling businesses to intelligently buy at the right price. Allows a wide range of businesses access to services previously only available to large corporations.
* Risk management. An approach to risk management for some types of risks is to partner with an outsourcer who is better able to provide the mitigation.
Criticisms of outsourcing
Public opinion
There is a strong public opinion regarding outsourcing (especially when combined with offshoring) that outsourcing damages a local labor market. Outsourcing is the transfer of the delivery of services which affects both jobs and individuals. It is difficult to dispute that outsourcing has a detrimental effect on individuals who face job disruption and employment insecurity; however, its supporters believe that outsourcing should bring down prices, providing greater economic benefit to all. There are legal protections in the European Union regulations called the Transfer of Undertakings (Protection of Employment). Labor laws in the United States are not as protective as those in the European Union. A study has attempted to show that public controversies about outsourcing in the U.S. have much more to do with class and ethnic tensions within the U.S. itself, than with actual impacts of outsourcing.
Failure to realize business value
The main business criticism of outsourcing is that it fails to realize the business value that the outsourcer promised the client.
Language skills
In the area of call centers end-user-experience is deemed to be of lower quality when a service is outsourced. This is exacerbated when outsourcing is combined with off-shoring to regions where the first language and culture are different. The questionable quality is particularly evident when call centers that service the public are outsourced and offshored.
There are a number of the public who find the linguistic features such as accents, word use and phraseology different which may make call center agents difficult to understand. The visual clues that are present in face-to-face encounters are missing from the call center interactions and this also may lead to misunderstandings and difficulties.
Social responsibility
Outsourcing sends jobs to the lower-income areas where work is being outsourced to, which provides jobs in these areas and has a net equalizing effect on the overall distribution of wealth. Some argue that the outsourcing of jobs (particularly off-shore) exploits the lower paid workers. A contrary view is that more people are employed and benefit from paid work.
On the issue of high-skilled labor, such as computer programming, some argue that it is unfair to both the local and off-shore programmers to outsource the work simply because the foreign pay rate is lower. On the other hand, one can argue that paying the higher-rate for local programmers is wasteful, or charity, or simply overpayment. If the end goal of buyers is to pay less for what they buy, and for sellers it is to get a higher price for what they sell, there is nothing automatically unethical about choosing the cheaper of two products, services, or employees.
Quality of service
Quality of service is measured through a service level agreement (SLA) in the outsourcing contract. In poorly defined contracts there is no measure of quality or SLA defined. Even when an SLA exists it may not be to the same level as previously enjoyed. This may be due to the process of implementing proper objective measurement and reporting which is being done for the first time. It may also be lower quality through design to match the lower price.
There are a number of stakeholders who are affected and there is no single view of quality. The CEO may view the lower quality acceptable to meet the business needs at the right price. The retained management team may view quality as slipping compared to what they previously achieved. The end consumer of the service may also receive a change in service that is within agreed SLAs but is still perceived as inadequate. The supplier may view quality in purely meeting the defined SLAs regardless of perception or ability to do better.
Quality in terms of end-user-experience is best measured through customer satisfaction questionnaires which are professionally designed to capture an unbiased view of quality. Surveys can be one of research. This allows quality to be tracked over time and also for corrective action to be identified and taken.
Staff turnover
The staff turnover of employee who originally transferred to the outsourcer is a concern for many companies. Turnover is higher under an outsourcer and key company skills may be lost with retention outside of the control of the company.
In outsourcing offshore there is an issue of staff turnover in the outsourcer companies call centers. It is quite normal for such companies to replace its entire workforce each year in a call center. This inhibits the build-up of employee knowledge and keeps quality at a low level.
Company knowledge
Outsourcing could lead to communication problems with transferred employees. For example, before transfer staff have access to broadcast company e-mail informing them of new products, procedures etc. Once in the outsourcing organization the same access may not be available. Also to reduce costs, some outsource employees may not have access to e-mail, but any information which is new is delivered in team meetings.
Qualifications of outsourcers
The outsourcer may replace staff with less qualified people or with people with different non-equivalent qualifications.
In the engineering discipline there has been a debate about the number of engineers being produced by the major economies of the United States, India and China. The argument centers around the definition of an engineering graduate and also disputed numbers. The closest comparable numbers of annual gradates of four-year degrees are United States (137,437) India (112,000) and China (351,537).
Work, labour, and economy
Net labour movements
Productivity
Offshore outsourcing for the purpose of saving cost can often have a negative influence on the real productivity of a company. Rather than investing in technology to improve productivity, companies gain non-real productivity by hiring fewer people locally and outsourcing work to less productive facilities offshore that appear to be more productive simply because the workers are paid less. Sometimes, this can lead to strange contradictions where workers in a third world country using hand tools can appear to be more productive than a U.S. worker using advanced computer controlled machine tools, simply because their salary appears to be less in terms of U.S. dollars.
In contrast, increases in real productivity are the result of more productive tools or methods of operating that make it possible for a worker to do more work. Non-real productivity gains are the result of shifting work to lower paid workers, often without regards to real productivity. The net result of choosing non-real over real productivity gain is that the company falls behind and obsoletes itself overtime rather than making real investments in productivity.
Standpoint of labor
From the standpoint of labor within countries on the negative end of outsourcing this may represent a new threat, contributing to rampant worker insecurity, and reflective of the general process of globalization (see Krugman, Paul (2006). "Feeling No Pain." New York Times, March 6, 2006). While the "outsourcing" process may provide benefits to less developed countries or global society as a whole, in some form and to some degree - include rising wages or increasing standards of living - these benefits are not secure. Further, the term outsourcing is also used to describe a process by which an internal department, equipment as well as personnel, is sold to a service provider, who may retain the workforce on worse conditions or discharge them in the short term. The affected workers thus often feel they are being "sold down the river."
The U.S.
'Outsourcing' became a popular political issue in the United States during the 2004 U.S. presidential election. The political debate centered on outsourcing's consequences for the domestic U.S. workforce. Democratic U.S. presidential candidate John Kerry criticized U.S. firms that outsource jobs abroad or that incorporate overseas in tax havens to avoid paying their fair share of U.S. taxes during his 2004 campaign, calling such firms "Benedict Arnold corporations". Criticism of outsourcing, from the perspective of U.S. citizens, by-and-large, revolves around the costs associated with transferring control of the labor process to an external entity in another country. A Zogby International poll conducted in August 2004 found that 71% of American voters believed that “outsourcing jobs overseas” hurt the economy while another 62% believed that the U.S. government should impose some legislative action against companies that transfer domestic jobs overseas, possibly in the form of increased taxes on companies that outsource. One given rationale is the extremely high corporate income tax rate in the U.S. relative to other OECD nations, and the peculiar practice of taxing revenues earned outside of U.S. jurisdiction, a very uncommon practice. It is argued that lowering the corporate income tax and ending the double-taxation of foreign-derived revenue (taxed once in the nation where the revenue was raised, and once from the U.S.) will alleviate corporate outsourcing and make the U.S. more attractive to foreign companies. Sarbanes-Oxley has also been cited as a factor for corporate flight from U.S. jurisdiction.
Policy solutions to outsourcing are also criticized.
Security
Before outsourcing an organization is responsible for the actions of all their staff and liable for their actions. When these same people are transferred to an outsourcer they may not change desk but their legal status has changed. They no-longer are directly employed or responsible to the organization. This causes legal, security and compliance issues that need to be addressed through the contract between the client and the suppliers. This is one of the most complex areas of outsourcing and requires a specialist third party adviser.
Fraud
Fraud is a specific security issue that is criminal activity whether it is by employees or the supplier staff. However, it can be disputed that the fraud is more likely when outsourcers are involved, for example about the credit card theft when there is scope for fraud by credit card cloning. In April 2005, a high-profile case involving the theft of $350,000 from four Citibank customers occurred when call center workers acquired the passwords to customer accounts and transferred the money to their own accounts opened under fictitious names. Citibank did not find out about the problem until the American customers noticed discrepancies with their accounts and notified the bank.
Sunday, May 18, 2008
The History Of Programming Language
The first programming languages predate the modern computer. From the first, the languages were codes.
During a nine-month period in 1842-1843, Ada Lovelace translated Italian mathematician Luigi Menabrea's memoir on Charles Babbage's newest proposed machine, the Analytical Engine. With the article, she appended a set of notes which specified in complete detail a method for calculating Bernoulli numbers with the Engine, recognized by some historians as the world's first computer program. But some biographers debate the extent of her original contributions versus those of her husband.
The Jacquard loom used holes in punched cards to represent sewing loom arm movements in order to generate decorative patterns automatically.
Herman Hollerith realized that he could encode information on punch cards when he observed that railroad train conductors would encode the appearance of the ticket holders on the train tickets using the position of punched holes on the tickets. Hollerith then proceeded to encode the 1890 census data on punch cards.
The first computer codes were specialized for the applications. In the first decades of the twentieth century, numerical calculations were based on decimal numbers. Eventually it was realized that logic could be represented with numbers, as well as with words. For example, Alonzo Church was able to express the lambda calculus in a formulaic way. The Turing machine was an abstraction of the operation of a tape-marking machine, for example, in use at the telephone companies. However, unlike the lambda calculus, Turing's code does not serve well as a basis for higher-level languages — its principal use is in rigorous analyses of algorithmic complexity.
Like many "firsts" in history, the first modern programming language is hard to identify. From the start, the restrictions of the hardware defined the language. Punch cards allowed 80 columns, but some of the columns had to be used for a sorting number on each card. Fortran included some keywords which were the same as English words, such as "IF", "GOTO" (go to) and "CONTINUE". The use of a magnetic drum for memory meant that computer programs also had to be interleaved with the rotations of the drum. Thus the programs were more hardware dependent than today.
To some people the answer depends on how much power and human-readability is required before the status of "programming language" is granted. Jacquard looms and Charles Babbage's Difference Engine both had simple, extremely limited languages for describing the actions that these machines should perform. One can even regard the punch holes on a player piano scroll as a limited domain-specific programming language, albeit not designed for human consumption.
The 1940s
In the 1940s the first recognizably modern, electrically powered computers were created. The limited speed and memory capacity forced programmers to write hand tuned assembly language programs. It was soon discovered that programming in assembly language required a great deal of intellectual effort and was error-prone.
In 1948, Konrad Zuse published a paper about his programming language Plankalkьl. However, it was not implemented in his time and his original contributions were isolated from other developments.
Some important languages that were developed in this period include:
1943 - Plankalkьl (Konrad Zuse)
1943 - ENIAC coding system
1949 - C-10
The 1950s and 1960s
In the 1950s the first three modern programming languages whose descendants are still in widespread use today were designed:
FORTRAN, the "FORmula TRANslator, invented by John W. Backus et al.;
LISP, the "LISt Processor", invented by John McCarthy et al.;
COBOL, the COmmon Business Oriented Language, created by the Short Range Committee, heavily influenced by Grace Hopper.
Another milestone in the late 1950s was the publication, by a committee of American and European computer scientists, of "a new language for algorithms"; the Algol 60 Report (the "ALGOrithmic Language"). This report consolidated many ideas circulating at the time and featured two key innovations:
The use of Backus-Naur Form (BNF) for describing the language's syntax. Nearly all subsequent programming languages have used a variant of BNF to describe the context-free portion of their syntax.
The introduction of lexical scoping for names in arbitrarily nested scopes.
Algol 60 was particularly influential in the design of later languages, some of which soon became more popular. The Burroughs large systems were designed to be programmed in an extended subset of Algol.
Some important languages that were developed in this period include:
1951 - Regional Assembly Language
1952 - Autocode
1954 - FORTRAN
1955 - FLOW-MATIC (forerunner to COBOL)
1957 - COMTRAN (forerunner to COBOL)
1958 - LISP
1958 - ALGOL 58
1959 - COBOL
1962 - APL
1962 - Simula
1964 - BASIC
1964 - PL/I
1967-1978: establishing fundamental paradigms
The period from the late 1960s to the late 1970s brought a major flowering of programming languages. Most of the major language paradigms now in use were invented in this period:
Simula, invented in the late 1960s by Nygaard and Dahl as a superset of Algol 60, was the first language designed to support object-oriented programming.
Smalltalk (mid 1970s) provided a complete ground-up design of an object-oriented language.
C, an early systems programming language, was developed by Dennis Ritchie and Ken Thompson at Bell Labs between 1969 and 1973.
Prolog, designed in 1972 by Colmerauer, Roussel, and Kowalski, was the first logic programming language.
ML built a polymorphic type system (invented by Robin Milner in 1973) on top of Lisp, pioneering statically typed functional programming languages.
Each of these languages spawned an entire family of descendants, and most modern languages count at least one of them in their ancestry.
The 1960s and 1970s also saw considerable debate over the merits of "structured programming", which essentially meant programming without the use of GOTO. This debate was closely related to language design: some languages did not include GOTO, which forced structured programming on the programmer. Although the debate raged hotly at the time, nearly all programmers now agree that, even in languages that provide GOTO, it is bad style to use it except in rare circumstances. As a result, later generations of language designers have found the structured programming debate tedious and even bewildering.
Some important languages that were developed in this period include:
1970 - Pascal
1970 - Forth
1972 - C
1972 - Smalltalk
1972 - Prolog
1973 - ML
1978 - SQL
The 1980s: consolidation, modules, performance
The 1980s were years of relative consolidation. C++ combined object-oriented and systems programming. The United States government standardized Ada, a systems programming language intended for use by defense contractors. In Japan and elsewhere, vast sums were spent investigating so-called "fifth generation" languages that incorporated logic programming constructs. The functional languages community moved to standardize ML and Lisp. Rather than inventing new paradigms, all of these movements elaborated upon the ideas invented in the previous decade.
However, one important new trend in language design was an increased focus on programming for large-scale systems through the use of modules, or large-scale organizational units of code. Modula, Ada, and ML all developed notable module systems in the 1980s. Module systems were often wedded to generic programming constructs---generics being, in essence, parameterized modules (see also parametric polymorphism).
Although major new paradigms for programming languages did not appear, many researchers expanded on the ideas of prior languages and adapted them to new contexts. For example, the languages of the Argus and Emerald systems adapted object-oriented programming to distributed systems.
The 1980s also brought advances in programming language implementation. The RISC movement in computer architecture postulated that hardware should be designed for compilers rather than for human assembly programmers. Aided by processor speed improvements that enabled increasingly aggressive compilation techniques, the RISC movement sparked greater interest in compilation technology for high-level languages.
Language technology continued along these lines well into the 1990s.
Some important languages that were developed in this period include:
1983 - Ada
1983 - C++
1985 - Eiffel
1987 - Perl
1989 - FL (Backus)
The 1990s: the Internet age
The rapid growth of the Internet in the mid-1990s was the next major historic event in programming languages. By opening up a radically new platform for computer systems, the Internet created an opportunity for new languages to be adopted. In particular, the Java programming language rose to popularity because of its early integration with the Netscape Navigator web browser, and various scripting languages achieved widespread use in developing customized applications for web servers. Neither of these developments represented much fundamental novelty in language design; for example, the design of Java was a more conservative version of ideas explored many years earlier in the Smalltalk community, but the widespread adoption of languages that supported features like garbage collection and strong static typing was a major change in programming practice.
Some important languages that were developed in this period include:
1990 - Haskell
1990 - Python
1991 - Java
1993 - Ruby
1995 - PHP
2000 - C#
Current trends
Programming language evolution continues, in both industry and research. Some current directions:
Mechanisms for adding security and reliability verification to the language: extended static checking, information flow control, static thread safety.
Alternative mechanisms for modularity: mixins, delegates, aspects.
Component-oriented software development.
Metaprogramming, reflection or access to the abstract syntax tree
Increased emphasis on distribution and mobility.
Integration with databases, including XML and relational databases.
Open Source as a developmental philosophy for languages, including the GNU compiler collection and recent languages such as Python, Ruby, and Squeak.
Support for Unicode so that source code (program text) is not restricted to those characters contained in the ASCII character set; allowing, for example, use of non-Latin-based scripts or extended punctuation.
