PythonAnywhereAnywhere
We recently added something cool to PythonAnywhere, our Python online IDE and web hosting environment -- if you're writing a tutorial, or anything else where you'd find a Python console useful in a web page, you can use one of ours! Check it out:
What's particularly cool about these consoles (apart from the fact that they advertise the world's best Python IDE-in-a-browser) is that they keep the session data on a per-client basis -- so, if you put one on multiple pages of your tutorial, the user's previous state is kept as they navigate from page to page! The downside (or is it an upside?) is that this state is also kept from site to site, so if they go from your page to someone else's, they'll have the state they had when they were trying out yours.
Bug or feature? Let me know what you think in the comments...
Resolver is hiring
We’re looking for a Software Developer to work on PythonAnywhere, Resolver One, and our other products, based in our offices in Clerkenwell, London, UK. More information on the Resolver jobs page.
Busy, busy, busy
A couple of weeks back we were brainstorming about other ways we could make use of the code infrastructure we'd put together for Dirigible. We had loads of stuff for running functional tests, determining dependencies between spreadsheet cells, executing untrusted user code safely on our servers, and so on. Any of those could potentially make an interesting product, so we put together some basic landing pages, one for each idea, and put a bit of money into Google AdWords to see if any of them got any interest.
One of them took off immediately, and even started getting traction on Twitter: PythonAnywhere, an online Python IDE and web application environment -- basically, Dirigible without the spreadsheet grid. This fits in with what we suspected -- lots of people were interested in Dirigible, but it wasn't the spreadsheet side of it that excited them, it was the easy Python grid computing.
What's been particularly cool with this idea is not only that most of it is done and "just" needs breaking out of Dirigible and putting into a new product, but that people are keen to engage with us about it. When people signed up on our landing page, we sent them an email with a few questions -- "What would you use it for? Which features excite you? What would you pay for it? Any suggestions for other features?" About 25% of people have replied, with lots of great feedback, and we've changed our plans (and altered the relative priorities of features) based on their input. All very Lean Startup...
Anyway, all good clean fun. If you'd like a look at it when it goes into beta, you can sign up on the site, or just leave a comment below.
A Dirigible screencast
I'd forgotten how much fun -- but how much work! -- it is to put together a short introductory screencast for a product. Three days of my own work plus countless suggestions and improvements from Glenn, Harry and Jonathan, and here we have the result (click to view):
A big announcement from Resolver
So, I've let various hints drop over the last few months, but we did the official annoucement today: a new product from Resolver, called Dirigible (thanks to Wikipedia's "Random page" link :-). It's been in private beta for a few weeks, and we decided it was time to get the news out there about it. As to what it is... our tagline is that it is "a spreadsheet-like tool for Python grid computing". That's kind of fuzzy (and probably needs a bit of work), but what I do want to make clear is what it's not: it is not just a web-based version of Resolver One, our desktop Python spreadsheet.
Instead, it's something much more developer-focused, built from the ground up -- sharing code with Resolver One, of course, but not trying to duplicate it. To quote the official annoucement:
We took the things from Resolver One that made software developers say "wow" -- like Python-based formulae, objects in the grid, and the ability to treat a spreadsheet as a function and call it from another sheet. Then we worked out what we could make better by coding just those things as a web application backed by traditional Python -- not IronPython -- on a grid of Linux servers.
You can read more about Dirigible and how it relates to Resolver One on the company blog, or there's a more concise version on the product's own web page. If you'd like to try it out, there's a signup form on the main Dirigible page; we're keeping beta user numbers small for now, but building up as we gain confidence that we've not done anything totally stupid with regard to security or scalabity...
I think everyone at Resolver's done a great job in putting it all together -- of course, being able to share code with Resolver One helped a lot :-) And I'm sure that Dirigible's going to be a great addition to the company's product line.
Generating political news using NLTK
It's election week here in the UK; on Thursday, we'll be going to the polls to choose our next government. At Resolver Systems, thanks to energy and inventiveness of our PR guys over at Chameleon, we've been doing a bunch of things related to this, including some analysis for the New Statesman that required us to index vast quantities of tweets and newspaper articles.
Last week I was looking at the results of this indexing, and was reminded of the fun I had playing with NLTK back in February. NLTK is the Python Natural Language Toolkit; as you'd expect, it has a lot of clever stuff for parsing and interpreting text. More unexpectedly (at least for me), it has the ability to take some input text, analyse it, and then generate more text in the same style. Here's something based on the Book of Genesis:
In the selfsame day entered Noah , and asses , flocks , and Maachah . And Joseph said unto him , Abrah and he asses , and told all these things are against me . And Jacob told Rachel that he hearkened not unto you . And Sarah said , I had seen the face of the air ; for he hath broken my covenant between God and every thing that creepeth upon the man : And Eber lived after he begat Salah four hundred and thirty years , and took of every sort shalt thou be come thither .
It was the work of a moment to knock together some code that would read in all of the newspaper articles that we'd tagged as being about a particular subject, run them through a Beautiful Soup-based parser to pull out the article text, and feed that into NLTK, then to dump the results into a Wordpress blog (after a little manual polishing for readability).
Clicking the tabs from left to right
It looks like visitors to the Resolver Systems website are predisposed to clicking through the tabs at the top of the page, from left to right. Does anyone else see this kind of thing?
The figures I'm using are from Google Analytics, which is based on JavaScript embedded in the page and run in the browser, so I don't think it's caused by bots/crawlers just clicking each of the tabs in turn because they appear in the page source code in that order -- and in addition, if it were a result of automated systems, you'd expect a consistent bias, whereas it's actually quite variable.
Here's the full dataset. Each line below shows a Google Analytics overlay, which tells you for each selected tab what percentage of people clicked on each of the other tabs during July 2009:
It looks like we managed to break tracking of access to our "About us" page for that month, so I put the results for that tab aside and did a bit of simple statistical analysis (in Resolver One, naturally) on the remaining data. The results:
The "from" tab is top to bottom, the "to" tab is left to right -- so, the chance of someone who is currently on the "Buy" tab clicking "Download" is 29%. The average chance of someone clicking on a given tab across all sources, and the standard deviation of those figures, are summarised at the bottom. Each cell is coloured based on how many standard deviations from the average it lies -- if it's more popular than it normally is, it appears red, if it's less popular it's green. The intensity of the red/green is based on how much more/less popular it is.
I think there's a very clear pattern -- the line of red starting at the "Home tab to Buy tab" cell, and going down and to the right to the "Screencasts tab to Get help tab" cell. That indicates that people are significantly more likely to click on a tab when it's the one to the right of the one they're currently looking at.
You can download the analysis spreadsheet from here, and if you don't already
have a copy of Resolver One to run it on (shame on you ;-), you can get an eval
version here.
This is interesting -- is it just our visitors, or have other people seen similar results?
Talk at London Geek Night
Last Thursday I did a talk at the London Geek Night about the business side of founding Resolver Systems; 10 minutes or so of prepared talk and then 20 minutes of Q&A, which was the structure suggested by the night's organiser, Robert Rees. Skills Matter recorded the whole thing, and the video's online now (albeit inexplicably categorised under Erlang). Be warned that I was talking particularly quickly that evening, even by my normal standards of gabble, so you'll have to listen carefully :-)
Other talks that evening were from my colleague Jonathan Hartley, who talked about the tech side of Resolver Systems, and Martin Dittus of Last.fm, who talked about some of the heavy-duty tech infrastructure they use.
One-day discount
We're running a one-day discount at Resolver Systems today -- you can get an unrestricted copy of Resolver One for $75! There's more about Resolver One here.
Usability testers needed
A repost here from the Resolver Systems news blog:
We're looking for experienced spreadsheet developers to spend a day with us in our London office, building Resolver One spreadsheets, as a way of usability-testing our software. We're paying GBP200/day for this, so it's perhaps something of most interest to current business school students.
Does this sound like something for you, or for someone you know? Drop us a line!