May 06, 2008 | Comments: (0)
Rails, and now Java, in the cloud
I had a conversation today with David Abramowski, CEO of Morph Labs. We were supposed to talk about how Morph Application Platform, which uses Amazon EC2 and S3 for on-demand cloud computing and storage along with its own routing and provisioning infrastructure, compares with Google App Engine, which uses Google's own cloud infrastructure. That part of the conversation was short, though, because beyond the fact that they're both on-demand cloud computing platforms, the two have nothing in common. I was put in mind of Shakespeare sonnet 130, My mistress' eyes are nothing like the sun.
Google App Engine, as I've discussed previously, currently supports only Python for an implementation language and BigTable for a (join-less) database, with Django and a simpler Python Web framework developed at Google both on offer to structure a Web application. I can't yet speak to what deployment is like on Google App Engine, as I signed up too late to get into the beta.
Morph currently uses Ruby on Rails as its framework, and PostgreSQL as its database. Today's announcement at JavaOne was for a beta release of Morph Application Platform for Java, developed in collaboration with Webtide. Abramowski expects the beta to fill up in a couple of days.
I was actually more interested in the Ruby version of the Morph Application Platform than the Java beta for my own projects. I've signed up for a free developer account. I've run into a snag subscribing to the DevCenter service that will let me access an "AppSpace," but I imagine that will be fixed before long, and I'll be able to say something about the service first-hand. It almost has to be better than the Rails hosting experience I had at TextDrive, now called Joyent.
Meanwhile, two user quotes from the Morph Web site:
"Morph is a great service. Deployment is simple. I give them lots of points for ease of deployment. They can help you scale as they are using Amazon's services on the back end."
- Justin Ball from www.justinball.com
"Morph AppSpace is the best experience we've ever had for Rails deployment. We can scale to as many app servers as we want in minutes, and then scale back as demand changes. We are also happy about the effortless deployment and the amazing client support. The Morph guys were helpful before, during, and after. From now on, we'll be using Morph AppSpace in releasing all our new applications."
-Jim James, www.mytripscrapbook.com
Posted by Martin Heller on May 6, 2008 01:03 PM
April 09, 2008 | Comments: (0)
Wait-listed for Google App Engine
I made a teensy-weensy mistake when I started to look at Google App Engine: I downloaded and installed the SDK and read through the Getting Started Guide fairly thoroughly before signing up for an account. As a result, I've been wait-listed. I think that means that more than 10,000 others have already signed up for the free App Engine beta. Oh well, I can still develop locally until my invitation comes through.
As about a million other bloggers have already discussed, Google App Engine feels like a direct competitor to Amazon's three Web services (EC2, SimpleDB and S3) all rolled into one Python framework.
I think it would be really nice to be able to target the Google infrastructure "cloud" for a Web application at need, just as it's really nice to be able to target the Amazon infrastructure and the SalesForce.com infrastructure at need. I can see different uses for the various platforms as currently constituted; I can also see why the choice might confuse people.
I like the choice of Python as the first implementation language, unlike many other bloggers who seem to be whining about the lack of Ruby and PHP support. I also like the way Google has given us a local server for development, and given us access to most of Django (a Web-development framework), WebOb (which provides objects for HTTP requests and responses), and PyYAML (a parser) as well as most of the standard Python runtime libraries. I think I can learn GQL without a problem: it's basically a subset of SQL.
I'll pass over the way the HuddleChat demo ripped off the 37Signals Campfire real-time chat application, for two reasons. First, about half a million other bloggers have already complained about it; second, Google has already bowed to the pressure and pulled the app.
I wonder what the 10,000 others who have already signed up for the free App Engine beta are going to do with it. In fact, I wonder what I'll do with it when I eventually get access.
What's a potentially profitable Web server application that needs great scalability, doesn't need table joins, and hasn't already been done to death?
Posted by Martin Heller on April 9, 2008 12:02 PM
September 05, 2007 | Comments: (0)
Programming Collective Intelligence
I receive dozens of computer books to review every month. Many of them are pretty good, but they tend to blend together. That's understandable, since so many of them cover the same products and languages.
In one of my favorite Newhart episodes (that's the 1982-1990 series in which Bob plays Dick, an innkeeper and author of how-to books) Dick is sued for plagiarism by a rival author of how-to books. One of the points of similarity cited in the trial is the sentence "Remove the two screws." How many ways are there of saying that? How many ways are there of explaining the precedence of operators in C++?
Once in a while a book comes in that breaks the mold. Programming Collective Intelligence: Building Smart Web 2.0 Applications, by Toby Segaran (O'Reilly, 2007, 358 pp., ISBN 9780596529321, $39.99) is one of them.
Basically, Programming Collective Intelligence is a book about analyzing Web data using statistical and AI methods in Python. It's more interesting than that sounds, however, at least partly because it's very practical and pragmatic.
What does it cover? An interactive TOC is online here; the summary (from the back cover copy) follows:
Want to tap the power behind search rankings, product recommendations, social bookmarking, and online matchmaking? This fascinating book demonstrates how you can build Web 2.0 applications to mine the enormous amount of data created by people on the Internet. With the sophisticated algorithms in this book, you can write smart programs to access interesting datasets from other web sites, collect data from users of your own applications, and analyze and understand the data once you've found it.
Programming Collective Intelligence takes you into the world of machine learning and statistics, and explains how to draw conclusions about user experience, marketing, personal tastes, and human behavior in general -- all from information that you and others collect every day. Each algorithm is described clearly and concisely with code that can immediately be used on your web site, blog, Wiki, or specialized application. This book explains:
Each chapter includes exercises for extending the algorithms to make them more powerful. Go beyond simple database-backed applications and put the wealth of Internet data to work for you.
- Collaborative filtering techniques that enable online retailers to recommend products or media
- Methods of clustering to detect groups of similar items in a large dataset
- Search engine features -- crawlers, indexers, query engines, and the PageRank algorithm
- Optimization algorithms that search millions of possible solutions to a problem and choose the best one
- Bayesian filtering, used in spam filters for classifying documents based on word types and other features
- Using decision trees not only to make predictions, but to model the way decisions are made
- Predicting numerical values rather than classifications to build price models
- Support vector machines to match people in online dating sites
- Non-negative matrix factorization to find the independent features in a dataset
- Evolving intelligence for problem solving -- how a computer develops its skill by improving its own code the more it plays a game
Posted by Martin Heller on September 5, 2007 08:10 AM
April 25, 2007 | Comments: (0)
Not quite 20 years ago, I was consulting for Symbolics, working on a Windows front end for PC Macsyma. I was writing Windows code in C, and working closely with a Symbolics LISP programmer named Frank.
One day the two of us were in my office trying to debug my callback interface between Windows help and the Macsyma engine, which enabled running live demos from help files. After watching me sweat out the semicolons and curly-brace-matching and the pairing of LocalAlloc calls with LocalFree calls and the obsessive care about resource leaks that writing Windows C code required, Frank said "Y'know, Martin, you should switch to LISP. It would be like a little vacation for you."
Of course, it was true: compared to LISP on a Symbolics workstation, I was working with flint knives and bear claws. I think I had an 80386-based PC, and was developing for Windows 3.1 using Microsoft C and the Brief editor.
Fast forward to 2007. I'm still tackling the hard stuff, but it's C++ with ATL, in ActiveX controls. I have much better editing and debugging tools, but I still have to be obsessive about resource leaks. I do get to go on a "little vacation" once in a while, but it's not to write LISP: it's to write C#, or sometimes Python.
I'm just finishing up a little sample site in C# and ASP.NET: my vacation is almost over. Pretty soon, it'll be back to the C++ salt mines for me.
Actually, I'm kind of looking forward to it.
Posted by Martin Heller on April 25, 2007 06:25 AM
February 09, 2007 | Comments: (0)
I mentioned my affinity for Python on my first Weblog entry, at the end of last year. I had intended to tell you about the Iron Python for ASP.NET CTP in my second entry, but it mysteriously stopped working for me before I could write about it. It turns out that disabling Iron Python for ASP.NET was an unintended side effect of the Visual Studio SP1 installation, which also caused other mayhem on my Visual Studio 2005 instance. By the time I had fixed all that and reinstalled Iron Python for ASP.NET I was distracted by the AJAX subversion exploit.
I recently went back and looked at the Iron Python for ASP.NET CTP, and was impressed with what has actually been accomplished with that project. It's not just that you can code server-side ASP.NET Web logic very simply in Python, as in this Global.py from the Iron Python Personal Web site starter site:
from System import * from System.Web import * from System.Web.Security import * def Application_Start(): SiteMap.SiteMapResolve += AppendQueryString if not Roles.RoleExists('Administrators'): Roles.CreateRole('Administrators') if not Roles.RoleExists('Friends'): Roles.CreateRole('Friends') def AppendQueryString(sender, e): node = SiteMap.CurrentNode if node is not None: node = node.Clone(True) qs = e.Context.Request.QUERY_STRING if len(qs) > 0: node.Url += '?' + qs if node.ParentNode is not None: node.ParentNode.Url += '?' + qs return node
It's also not just that you can write code behind standard-looking ASP.NET pages in Python, and that much of what you already know about Python and ASP.NET just carries over.
No, it's even more impressive than that. What this team has done is to extend the ASP.NET model from static compiled languages to dynamic languages, as explained in David Ebbo's white paper on the subject. They basically scrapped the CodeDOM model used for static compiled languages, and extended the idea of no-compile pages. It sounds like a paradox, but they've created no-compile pages that support scripting languages with a change to the PageParserFilter API, which gives external code a hook into the parser. They have also added a custom HTTP module, and a custom base class for scripting pages.
One thing they haven't done is to support Web services. That turned out to be hard, and it's not clear when or even whether they'll come up with a solution. Another thing that they haven't done in the CTP, but which I hope to see in a future drop, is to write full Visual Studio IntelliSense support for Python. Stay tuned.
Posted by Martin Heller on February 9, 2007 06:00 AM
TOP STORIES
ADDITIONAL RESOURCES

- Remote Access: Maintain Security and Decrease the Burden on IT
- Beyond AntiVirus: Symantec Endpoint Protection
- What Every Enterprise Needs to Know About VDI

- Monitor the core and troubleshoot the access layer
- Disaster Recovery in Minutes
- Protecting Microsoft(R) Applications


