Monday, October 20, 2008

Told You So?

Thanks to Lakshman Prasad for pointing out that my prediction from May of Java being the next language to be supported by Google App Engine seems to be coming true.

According to this story on controlenter.in, Google made that announcement as well as the upcoming release of a new Android SDK on October 22 at their Developer Day in Bangalore October 18.

I haven't been able to find any additional information on this yet so holding my tongue in declaring my superior prognostication abilities. Certainly anxious to see if A) This is true and B) What the details are.

Still would be psyched to see a cloud JVM offering from GOOG. Especially if it had other goodies integrated like server-side JavaScript and Guice.

If anybody out there has more info on this don't be shy...

Thursday, June 5, 2008

JavaScript is dead, long live JavaScript!

Y'know, a long time ago I decided that I hated JavaScript, then I realized that I didn't hate JavaScript the language, what I hated was the lack of standardization in implementation across all the various browsers.

The more I got into it the more I realized that as a language, JavaScript is really really cool. OK, I admit that the prototype nature of it still confuses me, and its general wackiness takes a lot of getting used to if you are coming from a class-based object-oriented language like Java. But whatever. I welcome the recent renaissance in JavaScript programming thanks to AJAX.

So its funny to me that JavaScript is at once enjoying more success than ever before and at the same time receding into the background. What I think is actually happening is that JavaScript is turning into the bytecode of the new virtual machine. As applications inevitably continue their move to the browser as an execution environment, JavaScript, (and Flash, sure, but it's interesting that ActionScript is derived from JavaScript), is what they are running in simply due to its ubiquity.

That probably sounds like an obvious statement, but consider this, Google was the first to really successfully implement the concept I'm talking about with GWT. The whole notion of writing an application in a Java subset and then compiling it to JavaScript just seemed completely and totally insane when it was released, but it worked really really well.

Since then others have taken up the torch and come along with their own twists on the same concept:
  • The Lively Kernel from Sun borrows heavily from concepts in Smalltalk and Self, and implements an entire graphics system in JavaScript and SVG.
  • I just heard from a someone about this company 280Slides. They are ex-Apple employees that started a Y Combinator company that has created a Keynote clone in the browser. Why is this interesting when there are already a ton of browser-based office apps? You've gotta check out the implementation. It's in Objective J. Yeah, Objective C in JavaScript. Crazy.
I think we're going to see a lot more of this kind of thing. Taking existing languages and creating compilers that translate source code to JavaScript+SVG+Flash+whatever. Sure, the JavaScript libraries will continue to proliferate, but so will this higher-order programming stack. you even see it with things like Rails and RJS, or Wicket, or name-your-other-component-based-web-framework.

Maybe after putting up with so much grief from everyone for not being a "real" programming language JavaScript will have the last laugh. This little language that could will probably be running all our applications someday soon...

Tuesday, May 27, 2008

Google I/O Wishful Speculation

Unfortunately, I am not attending Google I/O this year, but that won't stop me from speculating on possible announcements that could come out of it. Google is second only to Apple in intensity of hype-generation, so it stands to reason that they would follow their example and use their developer conference as an excuse to drop some kind of bomb on all of us. Here's what I'd love to see, in no particular order:
  • Android hardware. I for one am getting very impatient to see some actual hardware running Android. With an all-but-certain 3G iPhone announcement coming out of Apple's WWDC in two weeks, Google could take this opportunity to zing 'em with one or several actual handsets or devices on display. I've been telling myself that I would hold out on getting a new phone until I see some units shipping with Android. I like the idea of Android better than the iPhone, the API is more open and arguably more capable all around. The reality, however, is that I'm so sick of my phone that I'll probably jump on the new iPhone when it arrives, unless Google wows me this week.
  • One or more new App Engine languages. A week ago I blogged about the possibility of Java being the next App Engine language. They could take this opportunity to prove me right ;) I'd also like to see a server-side JavaScript API like Aptana seems to be doing with Jaxer, (anybody using this? drop your thoughts on it below...), or something like Rhino on Rails. Ideally I'd like to see a Java and JavaScript rollout with GWT integration. Dare to dream...
  • Full App Engine rollout. They could use the developer's conference to end the limited beta that App Engine is currently in and open it up to all comers. I'd also like to see a fully flushed out pricing model instead of this free stuff with quotas. That will happen eventually I'm sure. Not sure if they're ready yet though.
Anybody else got some predictions? Anyone out there going? Looking forward to some good tweets coming out of Moscone tomorrow...

Tuesday, May 20, 2008

Java The Next App Engine Language?

When Google released App Engine, Pythonistas were thrilled to receive such high-profile publicity for their favorite language. They should be, since a lot of people are jumping into Python for the first time, (or the first serious time), because they want to work with App Engine. I think that's cool since Python is a great language, but even in this recent dynamic language renaissance for some reason has not received the same hype-factor as Ruby and RoR.

While a somewhat exotic choice on the surface, it was actually perfectly natural and understandable for Google to go with Python out of the gate. It has long been known that Google uses Python behind the scenes for a great many things, from managing the bazillions of servers and other in-house systems to the implementation of Google Code. I mean Guido works there... on App Engine. I'm sure having the language's creator on staff helped when architecting this thing.

It's not all about Python though. Google has said that they are going to be offering the service in other languages in the future, and those who have played with it know about the 'runtime' property in the app.yaml config file. The documentation states plainly that "Additional runtime environments and languages may be supported in the future."

So what's the next supported runtime gonna be? I have no idea, but if I'm going to speculate I think a good case could be made for Java.

At first blush, that seems pretty divergent from the way that the platform is setup right now. Another dynamic, scripty language with a *nix heritage like PHP, Ruby or Perl would be a much closer match as far as management characteristics in a hosted offering like this go. But Google has no history of using any of these languages, and are reported to be pretty averse to language proliferation in their systems.

Steve Yegge blogged recently about how you are only allowed to write C++, Java, Python and JavaScript code at Google. He went into even more detail here. So if Google is going to go with something other than these it would have to be the result of an explicit change in policy.

So minus said policy change, where does that leave us? I'm going to rule C++ out completely out of hand. I welcome comments that can convince me this is a plausible option. JavaScript? If they were going to do a server-side JavaScript thing the implementation would most likely be Rhino anyway, (for all we know the current App Engine is using Jython), so that brings us to Java.

So how reasonable would it be to offer a hosted Java environment? While almost any hosting provider currently gives you the option of running PHP, lots of 'em give you Perl, etc. virtually nobody except boutique hosting providers let you run Java. There's a good reason for this. First of all, Java is an enterprisey language and the apps that use Java on the server side are not especially well suited to run in a shared environment. Secondly, even if the market existed, there are technical limitations that make running Java in a shared resource pool problematic. While you can chroot PHP to prevent people from accessing the shared, underlying filesystem, with Java you can spawn threads and do lots of other things that make implementing resource consumption quotas problematic. The fact that you can't just run a Java program using an Apache module or through CGI, and the fact that there tends to be a mismatch in the skill sets that *nix ops people usually have and the skill set required to effectively manage a Java app just further muddies the waters.

What you would really need is a customizable JVM that let a hosting provider limit what hosted apps are allowed to do. You may be able to do this with a locked down SecurityManager, but doing the kinds of things that Google is doing with the App Engine Python implementation would be even better. Not very many people have the chops to write their own VM. Google is one of them, and oh yeah, they've already sorta done it. Twice.

GWT is interesting in that you write your applications in Java with certain elements of the API stripped out and the compiler translates your code to JavaScript. Android apps are written in Java with certain elements of the API stripped out and the compiler translate your code to run in Dalvik. Why not do something like this for App Engine and make it a trifecta?

Google is pouring a lot of resources into Java lately and in a public way. Guice is getting lots of attention lately as a Spring competitor.

So here's the prediction: The next App Engine language is going to be Java, but with a limited API, utilizing some kind of translation in the compiler and potentially running on something like Dalvik. They will offer a framework like they do with webapp in Python, but based on Guice.

You heard it here first...

Monday, May 12, 2008

A Few Things...

First off, I've been using Firefox 3 Beta 5 full time for the past several days and holy crap, they fixed everything. It's super fast and memory footprint appears stable, even with Gmail, Google Calendar and Reader running the whole time. I take back all the mean things I said before. It's true, the rest are but followers...

I finally got my Live Mesh invitation on Friday but had not had a chance to play with it until yesterday. It seems to work pretty well, and actually solves a problem for me keeping multiple copies of my photos directory on multiple computers, (which are both imported to from different cameras+phones), in sync without hairy rsync scripts and order-of-operations nightmares. According to the site you get 5GB of online storage. There is an option to not sync to the "Live Desktop" though, so I wonder if that just uses the central servers as a pass-through? Anyway, am interested to see how this platform evolves, when non-MS OSes and devices become supported, etc. I haven't tried Dropbox, but so far this service seems better since you can have multiple directories synced up in arbitrary locations, and even have the directories in different locations on the filesystems of the participating hosts. Neat.

Felix has an interesting take on recent PaaS developments. I commented there about the possibility of merging the AWS and App Engine approaches into a killer-PaaS-app. You could have an offering built on top of AWS, but offering a higher level of abstraction. This thing would still be lower-level than App Engine, in that you could do whatever you wanted to with your images, but would provide hooks into the "container" or whatever for persistence, messaging, etc. I think if you merged this idea of a super AWS-powered virtualization web framework with something like RightScale then you would really have something. Imagine a web app that was instrumented in such a way so that it could autonomously scale itself up and down in terms of number of instances it was running on, etc. The administration utilities would allow you to configure arbitrary rules for how large you would want to let the app grow, what metrics would be used, etc. I think building the hooks for this kind of instrumentation is key though since I don't think load average or something like it is enough in all cases. It would be sweet if there was an API allowing arbitrary exposure of app-specific measurements to factor into this scaling algorithm.

Don't know if RightScale has anything in there like this already. If it doesn't let's start a company and make millions...

Saturday, April 26, 2008

Sun, Yahoo play on increasingly crowded PaaS field

Yahoo! CTO Ari Balogh presented a new strategy that they are terming Y! OS. Aside from the unification of user profiles across all Yahoo! properties, (more on that later), and the social-networkification that they want to achieve by that, I was struck by what they were terming the Yahoo! Application Platform.

TechCrunch is painting this as a direct competitor to Google App Engine, but I see it more like Facebook. Yahoo! is on board with OpenSocial now, and the apps that Balogh seemed to be talking about were more of that Facebooky, Yahoo-API-mashup kind of thing. Who knows though. He did talk about the ability to host apps, and that TechCrunch article talked about the platform being PHP based, but I didn't hear Balogh say that in the presentation. Maybe I just missed it...

I just started checking out Sun's Project Caroline. Unlike the vaporous Yahoo! offering, this one has actual API documentation, in Javadoc of course. This does look like it is pointed squarely at Amazon, as this article suggests. Will be interesting to see how far along this is, when they will start selling it, etc. What's weird is that apparently there was a presentation at JavaOne last year about this? Must have been all the JavaFX excitement affecting my memory, (cough... cough...), but I recall no coverage of that. There was a presentation though, go figure. Maybe it will get more prominent treatment this year now that PaaS hype is in full affect.

Oh, two more things on the Yahoo! announcement:
  1. Unification of all the profiles. That is going to be an insane PITA. I've worked before, and am currently working on, a single-sign-on, namespace-flattening, centralized authentication/authorization/profile management type of thing and can speak from experience that it is a huge problem, and one that most people do not appreciate the full complexities of when first considering it. Yahoo! has immense resources and talented people, however, so by no means impossible that they can pull this off -- technically.
  2. What are the chances of a big strategy like this actually getting executed though in the current environment?

Wednesday, April 23, 2008

Dropbox DOA

The nascent Dropbox service isn't even out of their limited beta when Microsoft drops, (haha, pun intended), details of their new Live Mesh service.

This can't be good news for the Dropbox guys' funding potential...

Will be interesting to see how the API for Live Mesh shakes out. Some more details here.

We have serious problems

The fact that this story is on Reuters and not the Onion says something. How is this possible in 2008?

http://www.reuters.com/article/idUSL2290323220080422

Thursday, April 17, 2008

AWS Announces Executive Assurance Program, Prints $$$

Amazon just announced new premium support options.

My first reaction is sticker-shock. Monthly plans are calculated thus:

SilverPlan = (totalUsageCost * 0.1 > $100) ? totalUsageCost * 0.1 : $100

GoldPlan = (totalUsageCost * 0.2 > $400) ? totalUsageCost * 0.2 : $400

The 20% goes down to 15% and then 10% as your monthly costs increase on the gold plan.

I can see this being useful as FUD-defense, (and a warm cuddly blanket for nervous executives), but not sure if I can see anyone paying this tax if they are actually spending real money on AWS.

I welcome criticism if you think I'm reading this wrong...

Monday, April 14, 2008

PaaS evolution accelerating

As Tim O'Brien puts it, "transition is happening faster than I had expected."

To summarize, I said the following last post:

"The particulars of Amazon's platform, such as the lack of truly persistent storage outside of S3 make the task of running a database even more challenging."

Yeah, scratch that.

And now Google and Salesforce are getting together. Very interesting...

Friday, April 11, 2008

The PaaS Spectrum

There is not going to be one form that this Platform-as-a-Service wave is going to take. If you look at the current trio of offerings from Amazon, Google and Salesforce they seem to fall along a spectrum of "full-serviceness" or restrictiveness, depending on your perspective.

On the one end is Amazon, who provides a very loosely coupled collection of services and the API to access them. Use what you want, leave the rest. They provide documentation, but it is up to the developer how to wire things together, what languages and tools to develop in, etc. EC2 makes no assumptions about what you are doing, other than that your VMs can be packaged as an AMI.

On the other end of the spectrum is Google and Salesforce. Both restrict applications to a particular language and development stack that are more or less proprietary. Google is saying that their sandboxed Python implementation is only the first of presumably many language options but we'll have to wait and see. Salesforce has their own Java-like Apex language and SQL subset.

It's actually a more complicated comparison that that. Google doesn't provide a relational database but their own persistence abstraction. Amazon's SimpleDB is a similar approach, but you don't have to use SimpleDB, of course. There is nothing stopping you from installing and running your own RDBMS on EC2 instances, but that freedom comes at a cost. Not drinking the Amazon kool-aid means that you are taking on the ops responsibility of setting up and managing that database; responsibility that you were trying to get rid of by going with a PaaS in the first place, right?

The particulars of Amazon's platform, such as the lack of truly persistent storage outside of S3 make the task of running a database even more challenging. There are third parties attempting to pick up the slack, like these guys. That's another differentiator among PaaS offerings, the degree to which the provider obstructs or encourages an economy surrounding their technology but outside their direct control. Amazon has shown this to be their desired direction I think. They could have created JungleDisk but instead consciously limited themselves to infrastructure over customer-facing applications. It is yet to be determined where Google and Salesforce fall on that.

As the PaaS offerings of the current crop of competitors develop and gain wider acceptance we'll see the direction that ends up being the most successful. I'm of the opinion that there is no "correct" approach. I like the flexibility of Amazon's offerings but see the value in a more limited stack for applications that fit the requirements that the given platform is trying to service.

As more competitors enter this space the field will surely get more nuanced. Hopefully the variability of options will just drive everyone to producing better platforms all around.

The Future Is Coming... Be Ready

There is a never-ending debate among web programmers, Java developers are particularly susceptible but by no means unique. It's a debate not-dissimilar to religious or political arguments, or even to the nowadays quaint emacs/vi battles of yore, (a battle I'm feeling somewhat nostalgic for after fighting with Eclipse for the last couple of days, but I digress...). The debate I'm speaking of is about web frameworks. Which is best? What should we use on the new project? Have you checked out XYZ? You can do in N lines of code what took N-squared in ABC... and on and on it goes.

For some reason the web framework "problem" seems never to be solved adequately. It's not alone in this. The same can be said for object/relational mapping frameworks or even email clients, as this one's slogan freely admits. I'm not saying that this debate is really going to go away, but the parameters of it are in a big, game-changing way.

We're entering into a new generational shift in computing. I'm not speaking of generations of people but rather an uplift of paradigmatic abstraction as has occurred so many times before. This is not a shift from static to dynamic languages, although that trend will surely continue. It's not that Java developers are all going to start using Rails or everyone is going to switch from template to component-based ways of developing webapps. The new debate is not going to be between X and Y framework but between X and Y platform, and if platform used to mean Mac-Windows-Linux, the shift I'm talking about is: 's/Mac-Windows-Linux/Google-Amazon-Salesforce/'

There has been an undeniable series of developments in the hosted-platform, managed-environment, I-don't-even-know-what-you-call-it, SaaS? that have until now resisted full-blown, critical mass, hype-factor. I think that that all changed on Tuesday with Google's App Engine announcement.

Like Apple, no matter what Google does it gets attention, and App Engine is undoubtedly going to get lots of it. People will love or hate the choice of Python, love or hate the persistence API, or lament the lack of filesystem access, or OS access, or inability to link to C libraries. All of that is irrelevant though, because the real story is that they will have done for this new hosted-app space what IBM did for the PC-space years ago, which is push it over the top into general acceptance. It validates the concept.

It is widely assumed that Google is taking aim at Amazon and their suite of web services. I think that that's true, but Amazon should be thanking them for it since it will probably bring more attention to their offerings than for some reason they have been getting thus far.

It's weird actually. If you've been paying attention to what Amazon has been doing it's really quite impressive. The model they are pursuing is that of a utility. Everything is metered for pennies, pay for what you use, do anything you want with it. It's like the webtone concept. Don't worry about machines, disk space, bandwidth, power, (or an ops team). We'll take care of it, and we're Amazon, so you know we're not going down.

Google has been doing a similar thing with their Google Apps with some success. I for one have long since abandoned the concept of running a mail server. Google does it for me, better, for free. The App Engine though is the next progression and the acknowledgment that people need more software than they can possibly produce, but don't want the headaches of running all the infrastructure.

The third leg in this emerging trio, (and there will no doubt be others to follow), is Salesforce. They have been doing some very interesting things lately that I for one haven't been paying enough attention to. Unlikely as it sounds, they may even have the advantage, since they speak the language that the suit-types understand. It's all about reducing IT costs. Faster time to market, ROI, yadda yadda yadda...

The technology is there though. A friend of mine was at the Salesforce conference in Chicago yesterday and had this to say afterwards:

"Unless you're the most close minded developer in the world, there's no way that you are going to go to a Salesforce conference feeling good about the stability of your own job."

Now maybe that's hyperbole, but it brings up a good point, the web development world is not stable, and if you are a web developer your job is not stable. That's not to say that you're getting fired and everything is going to India, or that non-technical personnel are suddenly going to be able to write applications. What it does mean is that staying relevant requires effort. Knowing what's going on in the industry, knowing what the trends are; these are important concepts to keep at the front of your mind lest you be left behind.

The Future Is Coming! Rejoice in the Good News of Hosted App Platforms!

Seriously.

Still doubting Salesforce? You know they are integrating with the iPhone, right?

Monday, March 17, 2008

Firefox 3 memory/speed improvements lookin' good

So Ars did a roundup of all the improvements coming down the pike in FF3, now using less memory than IE and Opera.

I tried FF3 beta the other day and was impressed by the speed but I didn't have any extensions installed so difficult to judge.

Hoping for the best as dealing with FF2 on daily basis is now painful as hell...

Sunday, March 16, 2008

Komodo Edit 4.3

No sooner do I disrespect the Mozilla platform for desktop application development in my previous post, (citing Komodo as pretty much the only other known product using it), then I learn about the fact that ActiveState released it as open source.

Ars just reviewed it, touting it as a potential Eclipse for dynamic languages.

I downloaded the free trial of the commercial version years ago. Looked pretty cool but not nearly enough to justify the hefty price tag.

Will have to check it out again now that it's open...

Saturday, March 15, 2008

WebKit succeeds where Mozilla has failed

I was annoyed when Apple announced that their new Safari browser would be based on KHTML from Konqueror. I mean, it was great that they were using and supporting open source software, I just thought that KHTML was an odd choice. It just seemed like a huge snub to the Mozilla community. Why not throw your weight behind the project leading in mindshare and clearly with the best future ahead of it? I mean, who the hell was using Konqueror anyway?

When they announced that they were porting Safari to Windows last year I thought that they really must have it in for Firefox. Here we had a browser that seemed to be very consistently gaining in market share against IE and Apple had to go and undermine it. Not that choice is a bad thing, but it seemed to me like it had the potential to further balkanize the market just as the carnage from the "browser wars" had seemingly gotten under control.

Lately I feel like I have to eat my words after seeing the successes of WebKit in the embedded space. It's freakin' everywhere now. It seems to have taken Opera's one hope away from it by pretty much owning the future mobile browser with incorporation into S60, Android and of course the iPhone. It's now in AIR, which is huge. At this point if you need browser functionality in your app it seems crazy not to use WebKit.

What happened? Was Apple right from the start about Mozilla/Gecko being too bloated and unwieldy? Well, all I know is that Firefox is painful to live with these days. It's slow. It's a memory pig. It crashes. FF3 is supposed to fix all that, and the latest beta is fast, but it's gotten to the point where if I need to quickly check something and FF isn't running already, (even if it is), I've been going for Safari or even, gasp, IE.

This is bad for Mozilla in multiple ways. If FF3 fails to deliver on promised memory and speed improvements people are going to be looking for alternatives and Safari is the next logical choice. Seems like all the cool kids are using Macs these days anyway so that just makes it even easier. Your phone's browser will probably be running it. If AIR takes off, (and I think it will), it will just be further represented there.

I do have high hopes for Prism, but will running potentially dozens of instances of FF really solve any resource consumption problems? I used to think that the whole Mozilla stack, (Gecko, XPCOM, XUL, etc.), had huge potential on the desktop. Where has that gone? Have you seen any popular/widespread/successful apps written in that besides Firefox and Thunderbird? Yes, I know about Komodo, and even Crocodile Clips, but you know what I mean. Anyway, if you were going to start writing a desktop app now which platform would you consider more, Mozilla or AIR?

Of course the huge thing that FF has that nothing else can compare to currently are the extensions. I can't live without Better Gmail. That alone will keep me running FF for the foreseeable future. If Apple opened up a Safari plugin API though? Hmm...

It does seem like the blossoming of non-IE browsers is having a positive impact on standards. Microsoft just announced that IE8 will default to standards-mode. Perhaps the future is not a victory for one side or another in browser wars 2 but the rendering, (sorry, pun intended), of all of them commodities.