10 October 2011

Python Anywhere (featuring Emacs Anywhere!)


Python Anywhere is a fascinating new web service (currently in beta) from the good folks at Resolver Systems. I’m using it to host the Django port of my AboutTag web application, used, among other things, for searching Fluidinfo, but I’ll blog separately about that.

I first came across Resolver Systems a few years ago when their main focus was on Resolver One a spreadsheet that you program in Python. This is so obviously a good idea I was strongly rooting for Resolver, but competing successfully against Excel, whatever the merits of the alternative, was always going to be a tall order, and last time I heard Microsoft still had the edge in the spreadsheet market.

Python Anywhere grew out of a project Resolver ran to produce a web service—Dirigible—based around the same fundamental concept of a python-programmable spreadsheet. Digirible is also notable for its support for grid computing, so it offers potential to perform really large calculations while exploiting a spreadsheet structure and all the goodness of Python, Numpy and parallelism.

Python Anywhere retains Dirigible’s concept of writing python in a browser, but dispenses with the spreadsheet. So in a nutshell, Python Anywhere is marketed as a Python console you can access through a browser. But it’s actually more than that.

When you log into the Python Anywhere site, your primary choice is to launch any of half a dozen different kinds of interactive Python consoles (Python 2.7, Python 2.6, Python 3.2, IPython 2.7, IPython 2.6 or IPython 3.2). These are all well configured in terms of libraries, and seem to work well, and they absolutely allow you just to use Python interactively. But so far, I’ve made very little use of any of those, for the same reason that most of the time when I write Python on my own computers I spend comparatively little time in the interactive Python consoles, and I when I do, I prefer to launch them from a terminal (or Emacs).

With Python Anywhere, I almost always use the seventh option, which is to launch a Bash console. From there, I have access to all the same Pythons, and most of the Unix (Linux?) tools you’d expect.

Including Emacs.

Including Emacs.

I am one of those people who spends more time in Emacs than in all the rest of my applications put together. And while Emacs in a console in a browser isn’t perfect, the achievement in making it work at all (and quite well) is remarkable, and the result is pretty good. Even if Python Anywhere did not actually offer Python, for me the availability of Emacs, from (almost) any device, through a browser would be very interesting.

But while I prefer to do it from bash than in a Python console, the availability of well-configured Pythons through a browser is also fascinating.

One clear use case is access from iPads, iPhones and other devices that don’t allow you to run Python on them. Although this isn’t working particularly well yet, this is clearly in Resolver’s sights, and I think will be most useful. (Even I have to admit, however, that Emacs and the iPad/iPhone don’t seem like a match made in heaven; I can see I might have to dust off my vi skills, though maybe the lack of an escape key on an iPad is a problem even for vi? Presumably it can be rebound?)

The Python Anywhere Platform also offers other services. There’s Dropbox integration for transferring files, and good access to things like Github. There’s the ability to schedule jobs (cron, essentially) and they are trialling hosted web applications through Django and other WSGI-compatible frameworks. My port of AboutTag (the new version is available at ArtOfTagging.com, which redirects to Python Anywhere) is running on this, and looks great. Now obviously there are lots of web hosting platforms around, with various pros and cons, but I’m not aware of any others that you console access through a browser, which I can see being handy for all those critical fixes when your only available device is a friend’s machine, or a phone or an internet café.

I don’t know what the future holds for Python Anywhere, but it’s a fascinating project from some very smart and friendly people, so if you like Python (or Emacs, (or vi) or Bash, or any of that command-liney goodness), head on over and request an invitation to the beta.

No comments:

Post a Comment