.net programming, computers and assorted technology rants

Posts tagged “programming

Watson Going Mobile with Developer Challenge


IBM chief Ginni Rometty addresses attendees at Mobile World Congress 2014 in Barcelona.

(Credit: IBM)

IBM wants to bring its Jeopardy-winning cognitive computing system Watson to the mobile industry.

During a keynote address at Mobile World Congress 2014, IBM CEO Ginni Rometty announced the IBM Watson Mobile Developer Challenge, a global competition to promote the development of mobile consumer and business apps powered by Watson.

During the next three months, IBM is calling on software developers who are willing to develop and bring to market a commercial application that leverages Watson capabilities, such as the ability to answer complex questions posed in natural language with speed, accuracy, and confidence. Three winners will receive IBM support to further develop their apps and bring them to market.

Rometty explained that Watson, first developed by IBM researchers to show what was possible in combining cognitive computing and natural language processing, has become far more than the novelty and headline-grabbing artificially intelligent computer system that competed against Jeopardy champions on TV a few years ago.

Since then, the company has created a Watson division, and IBM has been pouring more money into the developments to commercialize the technology. But in addition to continuing its own research and commercializing elements of Watson, IBM is also reaching out to a broader ecosystem of customers, partners, and developers to come up with their own creative applications for Watson.

IBM’s Watson during its 2011 appearance on Jeopardy.

(Credit: Screenshot by Marguerite Reardon/CNET)

The technology is already being used in several industries, including banking, health care, and retail. For instance, at Memorial Sloan-Kettering Cancer Center in New York City, oncologists are using the technology to help diagnose and treat cancer patients. Using the Watson “cloud” service, the doctors feed Watson data on clinical trials; information regarding treatments; and personal statistics on patients, which the cognitive computing engine uses to provide feedback on treatments. IBM showed a video in which a doctor at Sloan-Kettering asked Watson for a revised course of action for treatment of a patient, speaking in natural language to make the request. And then Watson answered with options for an individualized treatment plan.

Watson isn’t replacing the need for a doctor, the oncologist in the video pointed out. Instead it presents more options to help the real doctors make more-informed decisions.

In an onstage interview with tech journalist David Kirkpatrick, Rometty talked about how Watson is being used in retail. She described how the outdoor clothing company The North Face is using it to help customers buy equipment and apparel.

She demonstrated the service by telling Watson about a trip she planned to Patagonia. Watson answered with recommendations for the type of clothing she needed and the backpack she should use. It also told her to get an ABS. She said she wasn’t sure what that was and looked on a typical search engine for an explanation. She said the Web search request brought back dozens of explanations about antilock braking systems on cars.

CNET’s full coverage of Mobile World Congress

Clearly this was not the ABS that the North Face Watson application was recommending. She asked Watson what ABS was. And she was told in plain spoken language that it is a special emergency airbag system used by hikers and skiers during an avalanche.

“Watson knew I wasn’t asking about antilock brakes,” she said. She explained that the service was intelligent enough to put her request in the context of her discussion regarding what to bring on a trip to Patagonia.

“It had to know where Patagonia was, what the climate is like, and that I might encounter an avalanche,” she said.

With the new developer challenge, Rometty said, IBM wants to bring Watson to the mobile industry to see what types of applications mobile developers will come up with to leverage the intelligence service.

While other technology companies, such as Apple, have tried to offer a similar voice-activated intelligent system for mobile phones, those systems haven’t even come close to the cognitive ability Watson has achieved. Initially, Watson’s technology was too big to cram into a mobile device. When it first appeared in 2011 on the Jeopardy TV show, the system of servers took up an entire room. But IBM has worked aggressively to shrink the technology, and now it can be delivered as a cloud-based service, Rometty said.

Of course, IBM and Apple aren’t the only companies working on artificial intelligence technology that uses natural language as an input. Google recently bought London-based artificial intelligence company DeepMind for $500 million. And other tech giants, such as Facebook and Yahoo, are making forays into the world of artificial intelligence.

Still, Rometty thinks IBM has a leg up compared with the rest of the industry.

“Every major invention in data and analytics has come from IBM,” she said.


What to Learn in 2014?


Cpurtesy david Ramel, Visual Studio Magazine.com

I’ve noted before how data-driven developers in general and SQL gurus in particular are pretty well set in terms of salary and job security. So I was curious how database skills fared in responses to a recent Slashdot.org question: “It’s 2014–Which New Technologies Should I Learn?”

An anonymous reader’s “Ask Slashdot” posting on Wednesday read thusly:

“I’ve been a software engineer for about 15 years, most of which I spent working on embedded systems (small custom systems running Linux), developing in C. However, Web and mobile technologies seem to be taking over the world, and while I acknowledge that C isn’t going away anytime soon, many job offers (at least those that seem interesting and in small companies) are asking for knowledge on these new technologies (Web/mobile). Plus, I’m interested in them anyway. Unfortunately, there are so many of those new technologies that it’s difficult to figure out what would be the best use of my time. Which ones would you recommend? What would be the smallest set of ‘new technologies’ one should know to be employable in Web/mobile these days?”
I was so curious I combed through more than 370 comments to total up and compare the “technologies.” Obviously, that’s a broad term and could (and apparently did) mean just about anything, so I just focused on programming languages (as opposed to, say, “Learn to lie and [BS] with a straight face”). And I wasn’t alone in wondering what constituted a “new technology.”

Of course, this being Slashdot, the readers branched off on all kinds of bizarre tangents. It’s amazing how these people can take the most insignificant, meaningless aspect of such a question and absolutely beat it to death. It’s often pretty darn funny, though.

Anyway, a lot of Slashdot readers know their stuff, so I was interested in what they had to say, regardless of the wide range of possible interpretations of the question. My sampling is in no way scientific, or a real survey or even reliant upon any kind of reproducible methodology. I simply tried to total up the language suggestions I found in each of the comments. I didn’t subtract votes when a suggestion was hammered by other readers with the inevitable vicious insults and snarkiness (some things will never change).

I guess the results were fairly predictable, but I was kind of disappointed in how database technologies in general ranked.

What was completely clear is that the overwhelming favorite is … you guessed it: JavaScript. A rough grouping (not counting a lot of people who said just stick with C) looks something like this:

First: JavaScript
Second: Java
Third: PHP, HTML(5)
Fourth: Objective-C, Python
Fifth: Ruby, SQL, C++, C#
Several dozen more languages were suggested in smaller numbers.

Being the resident Data Driver bloggist at Visual Studio Magazine, I was disappointed to see SQL so far down the list. Even totaling up all the other database-related languages, such as MySQL, SQLite, MongoDB and so on, wouldn’t result in that impressive of a number (I stopped counting these when I realized none would total more than a few votes).

A couple of comments might shed some light on the prevailing attitudes out there. One commenter wrote: “RDBMSes are going to die, so learn how to interact with one of the major NoSQL databases. Most bleeding-edge: Titan and Neo4J, both graph databases.”

Another wrote: “Some SQL is very useful but you don’t need to be an expert–any serious Web development team will have a database expert who will do the DB stuff, you just need enough to code up test setups, prototypes and to talk to the DB guy.”

I don’t know exactly why “the DB guy” is separate from the rest of the Web dev team, or why the original poster couldn’t be “the DB guy,” but whatever.

The question was limited to the Web/mobile arena, remember, so it’s not totally disheartening. I mean, there is this little thing called Big Data happening, and vendors are jumping all over themselves trying to come out with applications and packages and such to let the SQL guys and other “DB guys” join in the fun along with the Hadoop specialists and data scientists. But I guess nobody will be doing any Big Data stuff over the Web or with a mobile device.

And SQL didn’t fare too badly in more broad examinations of this topic, earning a spot in “Top 10 Programming Languages to Know in 2014” and “10 Programming Languages You Should Learn in 2014.” Also, of course, Transact-SQL was named “programming language of the year” for 2013 by TIOBE Software.
What do you think? What would be your top suggestions for staying current in this new world? Comment here or drop me a line.

Using the Microsoft C++ REST SDK

Courtesy Gaston Hillar, DrDobbs.com

The new SDK enables you to stay in C++ when consuming REST services

Visual Studio 2013 includes the C++ REST SDK version 1.0, also known as Casablanca. This Microsoft open source project is evolving in CodePlex, and takes advantage of the new set of capabilities introduced in C++ 11 to simplify  cloud-based coding with a modern, asynchronous, and multi-platform API design. In this first article in a two-part series on this C++ REST SDK, I  explain how you can use this SDK to consume REST services. In the next article, I’ll show how to use the SDK to retrieve and send JSON documents.

Understanding C++ REST SDK Architecture

When you need the best performance, you usually evaluate going native, and C++ is one of the best options for doing so. Microsoft believes C++ is valuable in the cloud; and  the company’s new C++ REST SDK enables developers to work with C++ to consume REST services and achieve both great performance and scalability. It allows you to stay in C++ when consuming REST services or developing other code closely related to the cloud.

If you use C++ to consume cloud services but you use a C-based and synchronous API with callbacks, you aren’t taking full advantage of the improvements included in the latest C++ versions. In addition, your code will be difficult to read and debug, and the synchronous API will make it difficult for you to create a responsive UI. Most modern Web APIs try to reduce unnecessary boilerplate and so offer asynchronous methods without the complexity of C-style callbacks.

For example, if you work with C++ 11 but you use it to make calls to a synchronous C-based API to make an HTTP GET call, your productivity levels cannot  even be compared to other programming languages such as C# or Python. Microsoft developed the C++ REST SDK on top of the Parallel Patterns Library (PPL), and leverages PPL’s task-based programming model. Whenever you perform an asynchronous operation with the C++ REST SDK, you are creating a new PPL task. To make the C++ REST SDK portable to Linux, Microsoft made the necessary portions of PPL run on Linux (and compile cleanly with GCC). Thus, the C++ REST SDK uses a concurrency runtime for C++ that relies heavily on C++ 11 features. Instead of working with callbacks, you can write elegant C++ 11 code that creates tasks and schedules other tasks to be executed when certain other tasks finish  execution. If you have previous experience with PPL, you will find it easier to work with the C++ REST SDK.

The C++ REST SDK relies on the following four low-level stacks or APIs that ride on top of the services provided by the different operating system (see Figure 1):

  • WinHTTP: also known as Microsoft Windows HTTP Services. It is a C-based HTTP client API.
  • PPL (short for Parallel Patterns Library): the programming model for composing asynchronous operations. The C++ REST SDK uses WinHTTP on different Windows versions.
  • Boost.Asio: a cross-platform C++ library for network and low-level I/O programming that provides a consistent asynchronous model. The library uses a modern C++ approach. The C++ REST SDK uses Boost.Asio to manage communications on Linux.
  • HTTP.sys: the Windows server-side API for HTTP. The C++ REST SDK uses HTTP.sys on different Windows versions.

REST SDK Figure 1: The four low-level stacks used by the C++ REST SDK uses.

Read More:




Phatwares Windows 8 Handwriting SDK

courtesy Adrian Bridgwater, DrDobbs.com

PhatWare’s WritePad handwriting recognition SDK for Microsoft Windows 8/RT and Windows Phone 8 has been updated with support for 11 languages in a single static library.

This tool recognizes natural handwritten text in a variety of handwriting styles: cursive (script), PRINT, and MIXed.

Suitable for implementation in both embedded devices and "external" applications, this is handwriting-based text input to automatically convert text in third-party applications on Windows-based devices.

Support for seven new languages brings the total count of supported languages to 11, including English (US, UK, US Medical), Danish, Dutch, Finnish, French, German, Italian, Norwegian, Portuguese (Brazil, Portugal), Spanish, and Swedish.

PhatWare has worked on improved recognition quality of individual letters and words in print and cursive modes. The company has also updated sample code that demonstrates how to call native WritePad API from .NET and Windows Store applications. It recognizes dictionary words from its main or user-defined dictionary, as well as non-dictionary words, such as names, numbers, and mixed alphanumeric combinations.

It also provides automatic segmentation of handwritten text into words and automatically differentiates between vocabulary and non-vocabulary words, and between words and arbitrary alphanumeric strings.

According to PhatWare, "WritePad SDK includes handwriting recognition engine static libraries and dictionaries for all supported languages, API header files, documentation, and sample code in C++ and C# allowing easy integration with new or existing Windows applications or devices. WritePad SDK evaluation is free, while commercial redistribution is royalty-based."

Silicon Valley Goes Hollywood: Top Coders Can Now Get Agents

Courtesy Ashlee Vance, Bloomberg BusinessWeek

Cuba Gooding Jr. and Tom Cruise in "Jerry Maguire," 1996

Photograph by TriStar Pictures/Everett Collection

To be a good coder in Silicon Valley is to be among the pampered elite. You get fat paychecks, people bring you free gourmet food, drivers shuttle you around town. Coders here are really treated much like talented entertainers would be down south in Hollywood. It’s a thought not lost on Altay Guvench, a coder himself who has become one of the first agents for software developers. Don’t groan. It was only a matter of time.

About a year ago, Guvench and two friends started 10X Management. The company represents freelance software programmers. It finds them jobs, negotiates their salaries, and keeps track of billing and invoices. “We deal with the necessary evils of being a freelance coder, so they don’t have to,” says Guvench.

Guvench has an eyebrow ring and rolls to our interview in a funky hat. He’s a Harvard graduate who did a thesis on his study of monkey vocalizations and the hunt for precursors to human language. Later he got into coding and playing in bands. Through his music efforts, Guvench ran into Rishon Blumberg and Michael Solomon, who’d worked as managers for such music acts as John Mayer and The Clarks. “Their job is to do the business bulls—for these artists,” says Guvench. “So, in this weird experiment, I hired them to act as my agent for freelance programming.”

The experiment worked, according to Guvench. He got paid well to work a reasonable number of hours. Instead of slaving away at a startup deep into the night, he had some free time to work on his music and bands. “Friends of mine started seeing I was happier,” says Guvench. “They started asking how they could get in on it.”

Today, 10X Management represents about 30 people, including former Google (GOOG) and Apple (AAPL) coders. It takes the standard agent cut—15 percent—for the gigs it finds. The company says it strives to lessen the feast-or-famine nature of freelancing by spreading work among its clients, most of which are startups. “Working with 10x has been the perfect blend of the freedom of freelance and the dependability of regular employment,” crows Ryan Waggoner, an iOS developer, on the company’s website.

People who want to work with 10X Management must have their code reviewed by Guvench for quality, then submit to an interview by Guvench or another 10X partner. If they pass muster, the company tries to find gigs that match coder skill to client need. “One guy we represent is really into education, so we found a position at a site that teaches kids math,” says Guvench.

10X Management wants to build a reputation for having the best coders around on speed dial, so that startups in a pinch know they can depend on the company for really talented people. “We want to be the Rolls Royce or Apple,” says Guvench. As traditional agents do—and temp agencies typically don’t—10X also tries to guide the careers of its developers. “There is a lifestyle design aspect to this,” Guvench says. “A lot of these guys eventually want to start their own companies, so we help them take a long-term view.”

Do the companies find it weird or obnoxious when an agent hops on the phone to close a deal for a programmer? “Yeah, the employers can be taken aback a bit, but the ones we work with regularly have come to appreciate it,” Guvench says. “We handle all the awkward conversations about salary and the scope of the projects and make them less awkward.”

Netflix kicks off $100K Cloud Prize competition

Developers, Netflix wants you to come up with new ways to improve the video service’s features, usability, quality, reliability, and security.

Courtesy CNET

Netflix (Credit: Netflix)

Netflix wants to make the cloud a sunnier place for its members.

The video distribution powerhouse today unveiled the Netflix Cloud Prize, a competition with a total of $100,000 to award to developers who come up with better ways to deliver computing resources over the Internet. Those "resources," of course, would include streaming video from the likes of Netflix itself.

As the company points out, "every piece of the Netflix experience" for its 33 million worldwide members is delivered over the cloud, from browsing TV shows to watching movies on a variety of devices to the service’s personalization and bookmark features. The new Cloud Prize aims to elicit ways to improve the service’s features, usability, quality, reliability, and security.

Broadly speaking, cloud computing encompasses any digital product and service that doesn’t reside solely on a person’s desktop PC, laptop, or tablet but rather relies heavily — or entirely, really — on a server elsewhere. That can include shared Google documents, Dropbox storage, Hulu or YouTube videos, and gabbing on Facebook.

Just yesterday, Netflix announced a long-delayed social networking tie-up with Facebook through which its U.S. members can share details on what they’re watching and how much they like it. Members outside the U.S. got access to that capability some months back.

"Cloud computing has become a hot topic recently, but the technology is still just emerging," Neil Hunt , chief product officer at Netflix, said in a statement. "No doubt many of the key ideas that will take it to the next level have yet to be conceived, explored, and developed. The Netflix Cloud Prize is designed to attract and focus the attention of the most innovative minds to create the advances that will take cloud to the next level."

There are 10 categories in the Netflix Cloud Prize stakes, each of which carries a $10,000 award. Contestants have until September 15 to submit their entries, and the winners will be announced in October.

This isn’t Netflix’s first foray into this sort of contest. In 2009, the $1 million Netflix Prize went to a team called Pragmatic Chaos that improved the accuracy of Netflix’s recommendation engine by 10 percent.

eBook – Better Unit Testing with Microsoft Fakes

Shawn Cicoria

11 Mar 2013 7:23 AM

I was fortunate enough to work on a team for the past year on producing an eBook that covers the Microsoft Fakes Framework that shipped as part of Visual Studio 2012.  Note that Fakes is or will be available in the Premium edition of VS2012 with Update 2.

Download the guide: http://vsartesttoolingguide.codeplex.com/releases/view/102290


Mike Fourie was the lead on this, and w/ out Mike, this wouldn’t be where it is today…


The team was made up of ALM Rangers from Microsoft and partners, providing a broad based set of experiences that helped shape the guide towards real world scenarios.