Archive for the ‘code’ Category
Tuesday, April 7th, 2009
Google AppEngine now runs Python AND Java
It is still in beta but select developers are being added and developers allowed in will be expanded, I got in as I made the request so it looks like it is still filling up.
Both Java and C# were top requests on AppEngine desired languages/platforms. They have low level support for specific Google features and infrastructure and wrappers around these features to mimic common java libraries like JPA, JCache and java.net around google urlfetch. So it is still a bit locked to the platform or changes will need to be made to run on Google AppEngine and other environments.
Many of the changes made to apps really are due to the scalable nature of the cloud architecture without such things as joins and limits on bulk processing, but in the end these points are really better for scalability from the start. As for being locked to a platform we are already seeing copies such as AppScale that is an open source implementation of Google AppEngine. So software architecture, data architecture and how we prepare for the terabytes upon terabytes of shared data in the future might be changing.
Some unsupported features of major Java libraries…
java.net Features Not Supported
- The URL Fetch service does not support persistent HTTP connections. When the app accesses response data using the URLConnection object, App Engine calls the URL Fetch service to complete the request. After the response data has been accessed, the request data cannot be modified.
- The app cannot set explicit connection timeouts for the request.
Unsupported Features of JPA
The following features of the JPA interface are not supported by the App Engine implementation:
- Owned many-to-many relationships, and unowned relationships. You can implement unowned relationships using explicit Key values, though type checking is not enforced in the API.
- “Join” queries. You cannot use a field of a child entity in a filter when performing a query on the parent kind. Note that you can test the parent’s relationship field directly in query using a key.
- Aggregation queries (group by, having, sum, avg, max, min)
- Polymorphic queries. You cannot perform a query of a class to get instances of a subclass. Each class is represented by a separate entity kind in the datastore.
JCache Features Not Supported
- The JCache listener API is partially supported for listeners that can execute during the processing of a app’s API call, such as for onPut and onRemove listeners. Listeners that require background processing, like onEvict, are not supported.
- An app can test whether the cache contains a given key, but it cannot test whether the cache contains a given value (
containsValue() is not supported).
- An app cannot dump the contents of the cache’s keys or values.
- An app cannot manually reset cache statistics.
- Asynchronous cache loading is not supported.
- The
put() method does not return the previous known value for a key. It always returns null.
High Level Cloud Provider or Low Level Cloud Provider?
With other cloud providers like Amazon EC2, Mosso, SliceHost and others you can choose your platform. But Google has an amaxing infrasturcture and taking advantage of BigTable and automatic scaling is nice expecially with a 300MB transfer free quota per app. There are probably times when each type of provider might be beneficial, lower level like Amazon or higher level like Google AppEngine.
View the announcement here at Google AppEngine Blog which has other great news with the launch:
- Access to firewalled data: grant policy-controlled access to your data behind the firewall.
- Cron support: schedule tasks like report generation or DB clean-up at an interval of your choosing.
- Database import: move GBs of data easily into your App Engine app. Matching export capabilities are coming soon, hopefully within a month.
Tags: appengine, appscale, cloud, google, java, news, python
Posted in architecture, cloud, code, tools | 3 Comments »
Friday, February 13th, 2009
Google AppEngine continues to progress and it couldn’t come at a better time for me working on 4 instances/apps on google appengine.
They have remove limits on high CPU calls, raised the request timeout to 30 seconds, and raised the per file limit to 10MB!
Now we just need it to get out of beta in some format for getting clients loaded up on it.
We’re very excited today to announce that we’ve raised limits on several App Engine operations:
- No more “High CPU Requests”! App Engine Apps were once allowed no more than 2 CPU-intensive requests per minute. We’ve made some adjustments to the way we handle requests, and have eliminated this limitation altogether. To learn more about how this works and the implications for your app, see our documentation.
- Response deadline raised to 30 seconds. The amount of time an App Engine app can take to respond to an incoming request has been raised from 10 to 30 seconds! There are limits on the number of simultaneous active requests an application can process at any given moment–see our docs to learn more.
- Size limits on code files, static files, and requests/responses raised to 10MB! App Engine apps can now receive requests and send responses of up to 10MB in size, and users can upload 10MB code and static files as well. Note that API requests (e.g. memcache.set(), db.put()) are still limited to 1MB in size.
Tags: appengine, cloud, google, updates
Posted in cloud, code, distributed, service, tools | No Comments »
Monday, February 9th, 2009
Google AppEngine SDK has been updated to 1.1.9 and a feature bug has been closed out by Guido that now has support for urllib and urllib2 libraries which nearly every library made with python uses as some point. This is great that they are working to support (safely with scalability) the common libraries that Pythonistas expect.
I really hope Google AppEngine can go 1.0 soon. After the official launch of Amazon EC2 and other services out of beta, mosso, joyent etc it is getting hard to convince people to build on it until it goes out of beta.
Hoping for two things, 1.0 of Google AppEngine and support of Django 1.0 on that release officially. It is possible to run Django 1.0.x on the engine but it is painful using all that disk space (django has lots of files and google has a 1,000 file limit).
http://code.google.com/p/googleappengine/issues/detail?id=61
Tags: appengine, gae, google, python, urllib, urllib2
Posted in cloud, code, distributed, service | No Comments »
Saturday, February 7th, 2009
Google AppEngine blog recently announced the 6 month roadmap. I was hoping an out of beta state was to come soon but looks like it will be a gmail type beta length. But it is still usable and more stable with high availability than anything that s small company can provide. I hope they plan to go live to 1.0 this year, I was hoping the EC2 announcements and official launch of other cloud based offerings would drive them to do that. It makes it much easier to justify using it for production code. I was also hoping for an update to the included django to 1.0.
With that said I digress, the roadmap looks very nice. Jabber/XMPP support, background processesses, sending and receiving and processing inbound and outbound email.
The App Engine team has been plugging away and we’re excited about some pretty big announcements in the near future. In the meantime, we decided to refresh our App Engine roadmap for the next six months with some of the great new APIs in our pipeline:
- Support for running scheduled tasks
- Task queues for performing background processing
- Ability to receive and process incoming email
- Support for sending and receiving XMPP (Jabber) messages
As always, keep in mind that development schedules are notoriously difficult to predict, and release dates may change as work progresses. We’ll do our best to update this roadmap as our engineers continue development and keep you abreast of any changes!
Tags: appengine, gae, jabber, roadmap, xmpp
Posted in cloud, code, information, service, systems, tools | No Comments »
Friday, January 9th, 2009
Amazon released a web based tool, in addition to their ElasticFox Firefox plugin, that allows AWS EC2 Management. Other consoles will be added soon.
I have been saying for some time that cloud based offerings with great tools will win out. Making it simple to setup and manage cloud tools, with tools and hopefully APIs to the tools so that these can be aggreated, will win over hosting clients and be a value add for the cloud providers of today Google App Engine, Amazon AWS, Mosso, Joyent, SliceHost etc.
Today we’re announcing the availability of the Web-based AWS Management Console, which in this first release provides management of your Amazon EC2 environment via a point-and-click interface. A number of management tools already exist: for example a popular Firefox extension known as Elasticfox; however as you read more of this post I believe you’ll agree that the new console is compelling–especially when it’s time to log in as a new AWS developer.
Tags: amazon, ams, cloud, compute, ec2, elastic, elasticfox, manage
Posted in Uncategorized, cloud, code, distributed, elastic, information, service, storage, systems, tools | 1 Comment »
Monday, October 27th, 2008
Microsoft launched the Azure cloud based platform at the PDC today. Microsoft has launched many file storage services that were their cloud offerings to date in Mesh, Foldershare, Groove and more. Azure is what appears to be a real cloud platform to compete with Amazon and Google rather than just storage hosting.
Build new applications in the cloud – or use interoperable services that run on Microsoft infrastructure to extend and enhance your existing applications. You choose what’s right for you.
It appears so far that it is pretty Microsoft centric for tool support. Of course the software and servers will be Windows. This week and last, Microsoft platforms have made their way into the cloud platforms at Amazon and now Microsoft. Google also recently announced the support of Java. Another set of aquisitions at Rackspace in the buying of Slicehost and JungleDisk also seem to show the space heating up and the companies all believing in the cloud platform emergence and evolution that seems to be happening.
Tags: amazon, azure, cloud, google, microsoft, mosso, platform, rackspace
Posted in cloud, code, distributed, elastic, information, service, storage, systems, tools | No Comments »
Thursday, October 23rd, 2008
Amazon EC2 is officially out of beta, it is about time some of these services actually launched. It is hard to convince people to use the cloud layer without being out of beta (AppEngine when’s it gonna happen huh?).
Amazon also launches with windows support, SQL Server support and much more. This is great news in times where budgets are tight and people want to start scalable businesses but want to only pay for what is used. The cloud layer will be a very attractive option to many.
Learn more about the Elastic Computing Cloud (EC2) at Amazon. There are already lots of great simple toos like ElasticFox (Firefox EC2 Extension) to help manage your AMIs from a browser. You can start and stop armies of configured servers from a little extension in your browser.
Developers are getting many tools to build great things. We hope more products are out of beta soon like AppEngine.
Tags: amazon, appengine, aws, cloud, compute, computer, ec2, elastic, google, news, scalable
Posted in cloud, code, distributed, elastic, information, service, storage, systems, tools | No Comments »
Monday, October 20th, 2008
AppEngine is getting an update to it’s next available language besides Python (my particular favorite) in Java. Apparently the top candidates were C++, Java and C# support for AppEngine but Java has been added due to the overwhelming library and developer support.
Microsoft also has been playing with entering the cloud with Mesh and now with “Strata”. This would be a cloud for .NET developers.
There are already cloud providers for .NET mainly in Mosso’s offerings of any language being cloud enabled. But one from Microsoft will probably draw all the .NET developers to it like most Microsoft offerings.
Also, Amazon EC2 recently announced support for MS SQL Server and Windows servers. So really any platform can also be used in Amazon EC2 in Amazon Machine Images. This took longer to happen due to the licensing per processor and server that most Microsoft software has.
This won’t be changing things much for me in the near term but having more platforms available in the cloud and on cloud systems is the natural progression. At some point a platform might have advantages in cheaper processing but for now Python with AppEngine is still the best bet.
Tags: .net, amazon, appengine, c#, ec2, google, java, mosso, python
Posted in cloud, code, distributed, elastic, information, service, storage, systems, tools | No Comments »
Sunday, May 4th, 2008
ElasticFox is a pretty nice tool for managing EC2 (Amazon Elastic Compute Cloud) AMI instances AMIs (Amazon Machine Instances) from preconfigured AKIs (Amazon Kernel Image) or ARIs (Amazon Ramdisk Instances). For instance they have a AMI for fedora core 4 that is loaded with mysql and apache form amazon to get started quickly. Ultimately you end up making your own AMIs with the stuff you run on but these can get you started quickly.
It looks like this, it is built in XUL but could easily be built in AJAX or Flash or even Silverlight using APIs.
Figure 1: Shows the AMIs and your installed AMI instances.

Figure 2: Shows Available Preconfigured instances from Amazon and Others

Pretty nice little GUI to the EC2 service to help people ease into setting up and playing with cloud computing. For people running on the cloud already this is nice to have a quick web developer tool for testing, and quickly changing the dynamics of your resources with in your browser.
I think the cloud will be victorious sooner rather than later if there are great tools to beat out traditional hosting. Finally making tools that aren’t locked to a hosting company with bad applications. At least it makes this area more competitive.
This is what makes Amazon’s model so attractive. Even though it is pieces and components, services will be built on it with great interfaces, probably much better ones than can be designed by the cloud provider themselves via great apis and componentization of cloud infrastructure.
Tags: amazon, aws, cloud, ec2, elastic cloud, elasticfox, firefox, interface, tools, xul
Posted in cloud, code, elastic, information, service, systems, tools | 8 Comments »
Sunday, April 13th, 2008
The models and entities framework for Google Apps is pretty fun. It is very similar to django models and ruby on rails but it is even more simplified. I have been playing with Google App Engine since it came out (was in first 10,000 yay!) and it is really fun. Prototypes have never been so rapid. I wish we got more than three apps to create, I have had to repurpose a few. I have lots of ideas I will be posting here and howtos.
To create a model:
class Person(db.Model):
first_name = db.StringProperty()
last_name = db.StringProperty()
hobbies = db.StringListProperty()
p = Person(first_name="Albert", last_name="Johnson")
p.hobbies = ["chess", "travel"]
p.put() # creates/updates model and inserts data
To create an Expando model
Expando models are fun because they are dynamic. You can add properties to the classes on the fly and it expands automatically.
class Person(db.Expando):
first_name = db.StringProperty()
last_name = db.StringProperty()
hobbies = db.StringListProperty()
p = Person(first_name="Albert", last_name="Johnson")
p.hobbies = ["chess", "travel"]
p.chess_elo_rating = 1350
p.travel_countries_visited = ["Spain", "Italy", "USA", "Brazil"]
p.travel_trip_count = 13
p.put() # creates/updates model and inserts data
Prototyping is extremely fast with Google App Engine. Python of course is always extremely fun to do. The winds are a changin’.
[ google app engine entities docs for the DatastoreAPI ]
Tags: app engine, db.expando, entities, entity, expando, gae, google app engine, model, python
Posted in cloud, code, distributed, information, service, systems | No Comments »