Issue No. 02 - March/April (2007 vol. 11)
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/MIC.2007.35
6 Feb. 2007
"The Million-Dollar Recommendation," by Angela Chang
Netflix, an online movie rental service in the US, has created a contest to help improve its Cinematch movie recommendation engine — and will pay US$1 million to the person or team that improves its results by at least 10 percent.
In its current form, Cinematch offers recommendations based on customers' rental history and the ratings they give on returned DVDs. But customers complain that the suggestions are either for movies they don't like or have already seen.
The contest calls for a 30-day countdown once a team or person reaches the 10-percent-improvement requirement. Other teams can try to beat that score, but after 30 days, the best code gets the prize. To help the ecommerce industry at large, Netflix will grant the winner nonexclusive rights to the software — Netflix can use it, but the winner can still profit from it independently.
To date, the contest has attracted submissions from university researchers and programmers hoping to win the money or simply use it as a research or teaching tool. At press time, the top team was from the University of Toronto, which was using the contest to test their research in machine learning, an area of artificial intelligence that develops algorithms and other strategies to allow computers to "learn." You can track the contest leaders at www.netflixprize.com/leaderboard.
Dr. Dobb's Journal
"Java ME and the Command Pattern," by Darius Katz
Adding command actions in Java Platform Micro Edition (J2ME), the ubiquitous application platform for mobile devices, can be challenging. That's because they're controlled by the commandAction() method in the MIDlet class, a Java program for embedded devices — and the more commands you add, the longer the if-else chain gets. Also, if developers want to use the same command on another screen, they have to copy and paste the code, which is a difficult maneuver.
Katz outlines an economical work-around that uses the essence of the command pattern — which divides the part where the command is located from the part where it's invoked. His method puts the code in a separate object and then calls it up only when needed. A key part of his methodology is the Abstract-Command class, an abstract class that defines the interface and extends the command pattern.
Programming and Development
Dr. Dobb's Journal
"Shelling the Pod," by David Summer
As podcasting's popularity continues to grow, it's becoming more difficult for listeners to find content that truly interests them and more challenging for podcasters to get their podcasts noticed.
Summer outlines one possible solution to both problems: a method he developed for creating dynamic podcast Web pages. His process involves using PHP, a server-side, cross-platform scripting language that lets developers create dynamic Web pages describing their podcasts and a separate page describing individual podcast episodes. The pages update automatically when their RSS feeds update.
An example of Summer's podcast display methodology is available at www.dicksummer.net/podcast.
"Ajax Debugging with Firebug," by Joe Hewitt
Accordingly, Firebug ( www.joehewitt.com/software/firebug), a free Firefox browser add-on, combines with any text editor to create an integrated development environment for the entire array of AJAX technologies.
To improve service, Ask.com has created integrated toolsets for its Ask City service that lets consumers use recommendations and reviews to plan whole nights out or trips to places they've never been.
Unlike other toolsets that give users separate maps and reviews of restaurants, movies, and businesses, Ask City integrates the queries into associated panes, weaving together content. It also gives tools for annotating plans and maps, saving them, and sharing them with others.
According to senior product manager Ryan Massie, Ask.com decided to create the integrated new toolsets after seeing that most local products put information like reviews and directions in separate silos.
Software Development Times
1 Feb. 2007
"Ruby In Steel Forges Ahead," by Alex Handy
A new Visual Studio add-on — Ruby In Steel — released in January lets Ruby developers use their code in the Microsoft integrated development environment for the first time.
Huw Collingbourne and Dermot Hogan, founders of SapphireSteel Software, created Ruby In Steel after they began programming in Ruby but discovered they still wanted to use Visual Studio.
Making Ruby In Steel wasn't a simple process — Ruby is a dynamic language and IntelliSense, Visual Studio's form of autocompletion, is designed for more static languages such as C++. "In order to get good, meaningful IntelliSense, we effectively had to build our own Ruby interpreter to analyze the code as it was being entered," Collingbourne said.
One of Ruby In Steel's most useful features is its fast debugger, nicknamed Cylon, which addresses one of developers' biggest complaints about the default Ruby debugger — namely, that it's dreadfully slow.
"Phishing Doubles Up"
A new Gartner Group survey reports that phishing attacks nearly doubled in the US from 2004 to 2006, despite the myriad security measures in place to prevent them.
An estimated 109 million US adults reported receiving phishing emails in 2006, up from 57 million in 2004, and losses associated with those attacks rose to more than US$2.8 billion last year. The average loss per victim rose from US$257 in 2004 to US$1,244 in 2006. And high-income adults earning more than US$100,000 annually received the most attacks, an average of 112 phishing emails in 2006, compared with 74 for consumers across all incomes.
6 Feb. 2007
"Dangerous Downloaders," by Larry Seltzer
The SANS Institute's Internet Storm Center ( http://isc.sans.org) has identified a new downloader that's making its way around the Internet. Although downloaders don't directly harm computers, the programs they download can be problematic. This new downloader collects a variety of malware, including browser helper objects that can affect Internet Explorer's behavior and add menus and buttons, keyloggers, and multiple versions of the same Trojan horse that are all slightly different.
But the most disturbing part of this downloader is that it executes a Perl script on a Web site that the Internet Storm Center believes is set up specifically to return the physical location coordinates for compromised servers' IP addresses, which can be passed to Google Maps. It's unclear what the hackers might do with the location data, but more targeted spam or phishing emails are two possibilities.
22 Jan. 2007
"XQuery Sets Stage," by David Stodder and Ben Dupont
W3C's XQuery 1.0, which brings an SQL-like method to XML data querying, is getting closer to earning the rank of official standard.
Last year, W3C moved XQuery 1.0 to Proposed Recommendation status. And, as often occurs with evolving standards, XQuery support is making its way into mainstream products: IBM's DB2 version 9 includes XQuery as part of its hybrid server, and Oracle is giving database developers the ability to embed XML inside SQL queries or use the XQuery standard. Also, businesses are starting to use XQuery to create XML dynamically for SOAP messages, reports, and database publishing.
Although XQuery is still immature, all these developments point to a potential increase in XML's data value. They also mean that relational vendors can bring XML processing deeper into the database engines. Those database management systems can then create XML indices for optimizers to use, allowing systems to process queries on XML data as efficiently as they do with SQL.