Interview PythonAnywhere

As part of my research for “Python for R Users- A Data Science Approach” (Wiley 2016) I am interviewing startups as well as package creators in the Python Data Science Space. Accordingly here is an interview with Giles Thomas, who leads PythonAnywhere, a UK based company that helps makes Python available anywhere thanks to cloud computing.
Ajay- Describe your journey to set up and create Python Anywhere. What were the reasons you chose Python. How has this choice helped you? Describe some usage stats and your core team.

PythonAnyWhere – Well, that’s a long story :-)   There have been a couple of turns along the way…

In 2005 a couple of friends and I decided to start a company to create a new kind of spreadsheet.  We felt that Excel spreadsheets became unmanageable at scale, and a better solution for many use cases would be to create something that integrated a programming language more closely.  There definitely seemed to be a market for it, especially in the financial world.  We looked at the programming languages available, and Python stood out because it was very powerful, but also easy to learn.  The existence of numerical libraries like NumPy/SciPy was also a huge plus point.

So we built our spreadsheet, a desktop application called Resolver One with Python deeply integrated, and released it in 2008.  Unfortunately that coincided with a downturn in our target market of finance, and additionally we discovered that although many people were very keen on the product, there just weren’t enough of them to run a viable business based on it, especially under the desktop “buy a license and use it forever” kind of business model.  Over the following years we tried moving into alternative markets, and tried different approaches to selling it, but eventually we decided we needed to pivot to a different business, based on the knowledge we’d built up while creating Resolver One.

Our first pivot was simply to take the idea of Resolver One, and turn it into a cloud-based application.  This was codenamed “Project Dirigible”, and went live in 2010.  It was a highly-programmable spreadsheet, displayed in a web browser.  One of the most interesting things about it was that you could code the whole recalculation loop in Python — a default empty spreadsheet would contain code that looked something like this:


…so if you wanted to add your own functions, you could just def them above the code, and if you wanted to do something like goal-seeking, you could just put a while loop around the call to therecalculate_formulae function.   You can see (a slightly cut-down version of) Dirigible’s source code here:<>

Dirigible was an excellent product; you could run complex analysis with a spreadsheet-like interface, but you could also (for example) spread calculations over a cluster of servers by calling one spreadsheet from another, kind of like a function call, running multiple spreadsheets in parallel.   And it started getting users, but again, not enough to keep the business going.

So we sat down and looked at how people were using it.  We discovered that for many users, the spreadsheet itself was an irrelevance.  What they wanted was an easy way to run a pre-configured Python distribution from their browser, without setting stuff up, configuring and maintaining machines, and so on.

We pivoted again, rapidly adjusted the code we had, and created PythonAnywhere.  We took a very user-centric attitude for development, keeping up conversations with as many users as possible, implementing the features they asked for (weighted by votes) — a hosted database, websites, cron-style scheduled tasks, and so on.  And that’s what has taken us to where we are today.

Right now, there are four people in the company including myself.  We’re based in Clerkenwell, in London (just up the road from the “Silicon Roundabout” area around Old Street which is London’s tech hub).  We have about 130,000 users, ranging from hobbyists playing around with ideas to data analysts, commercial websites, and startups.  Between them they’ve created about 50,000 websites, and started over 2 million in-browser consoles.  We provide the “Try Python now” in-browser console on, and also a popular “Try IPython” page for people who want to try it out as an alternative Python command-line.


Ajay- What are some of the ways your platform is used especially in data science? How does using Python Anywhere help with setting up data science

PythonAnywhere- That’s hard for us to say.  We provide a platform, and our users decide how to use it.  Data scientists tend to know more about what they’re doing than website creators, so they tend to talk to us less…


3) How does Python Anywhere facilitate teaching coding. Name some eamples or user feedback on using your platform for education

It’s hard for teachers to get all of their students set up with a working Python environment.  One person who does training for a living told us that in a five-day Python course, he can spend the first day simply getting Python and all of the appropriate packages installed on people’s laptops.  Django Girls have a special multi-hour “install session” the evening before each of their one-day courses just to get enough basic stuff installed to do their web development tutorial.

So having a site where teachers and trainers can just tell their students to sign up, and then know that everyone has a working development environment in a known state is a huge plus.

We also support console sharing; if you’re working in an in-browser Python console and have a question about something you’re seeing, and your teacher can’t easily come and look over your shoulder, it’s useful to be able to share the console with them so that they can see it in their own browser, and help you out.

Recently, we’ve started specifically adding extra features for teachers and students — for example, a student can designate another user as their teacher, which gives the teacher access to all of their consoles and their files, so that they can — for example — help out with problems, collect homework assignments, and that kind of thing.  More features along those lines are coming.

Finally (and perhaps less relevantly for your readers) people who are teaching website development love the way that it’s easy to deploy a website on PythonAnywhere.   A webdev tutorial that ends with a website running on someone’s laptop is inherently unsatisfactory.   If it’s a website, it should be online!   But teaching a beginner web developer how to configure Apache/nginx, mod_wsgi/uWSGI, and how to secure a machine in the cloud, and so on, is a huge deal and better avoided if possible.

In terms of numbers, it’s hard to say how many people are using us for education, because we offer cut-down free accounts and some courses just use them (we can sometimes spot those when a bunch of people sign up for free accounts with email addresses on the same .edu domain, but often we just can’t tell).  But we do know that there are about 2,000 students using our new education features, and it’s growing about 25% month-on-month.


Ajay- You give ipython and python consoles. Any plans to feature Jupyter or Beaker Notebook.

PythonAnywhere- Absolutely — Jupyter is in private beta at the moment.  If you’d like me to add you, just let me know the name of a PythonAnywhere account.


Ajay- How is using Python Anywhere a superior user experience than just taking a VM on Amazon AWS and doing the installs themself

PythonAnywhere- Well, firstly you don’t have to do the installs yourself :-)   Installing Python and its dependencies is a bit of a pain.  Perhaps more importantly, maintaining everything is a huge pain.  Security fixes are constantly being made, and you have to keep up-to-date with them to avoid getting hacked.

Additionally, there’s server size.  We run on extra-large Amazon instances, and you can pay for as much or as little CPU seconds a day as you want, which makes it easier to scale up and down.


Ajay- What are your views on using Docker for Python.  Do you see Docker usage increasing faster? What are some of the disadvantages of using it.

PythonAnywhere- We’re using Docker internally for a subset of our in-browser consoles, and are gradually rolling it out to more of them as we discover bottlenecks and errors in our own code that uses it.

It’s an excellent way of sandboxing executable code; we’re using it to replace the sandboxing code we’d written ourselves, and it seems to be superior.  We think that in the future we may well move to a model where every console, every Jupyterhub kernel, every scheduled task, and every website worker process on PythonAnywhere runs in its own Docker container.

We are, however, also tracking alternatives with great interest.  Docker is getting quite large, and adding features that we don’t need (possibly at the expense of performance or even security).   rkt from CoreOS looks like it might be worth considering as an alternative at some point.

For more on PythonAnywhere see and try out their free plan to test Python in the cloud. You can also email them at

Smart people Stupid things

Smart people do stupid things. Do stupid people come up with smart ideas too. Ideas that can make a billion unicorns out of me-too ideas.

Smart people doing stupid things is a thread on Quora with 600,000 views and 100+ answers. Clearly there is a lot of public examination on smart and stupid stuff. Of course smart people say stupid things sometimes. There is an Internet of Things and there is an Internet of Stupid Things.

Intelligence is a fascinating concept. All humans are supposed to be equal, but clearly some people are intelligent in some things. A few are intelligent in many things compared to the average. How do societies, governments and venture capitalists fund smart people to do smart things.

Business Insider, the Jeff Bezos funded web startup was kind enough to scrape, aggregate, curate, collect a few answers. I am returning the kindness to put the bullet points here. Artists steal. Great artists get inspired.

Stupid Things done by Smart People

  1. Overthinking, overplanning and underdoing
  2. Follow the herd mentality
  3. Risk Averseness
  4. Giving up too soon
  5. Undervaluing social skills, networking and social bonhomie
  6. Not recognizing their own cognitive biases. I scraped some stuff on that shit here. Cognitive bias deals with bad decision making due to biases.Cognitive biases are tendencies to think in certain ways that can lead to systematic deviations from a standard of rationality or good judgment, and are often studied in psychology and behavioral economics.Among the “cold” biases,
    • some involve a decision or judgement being affected by irrelevant information (for example the framing effect where the same problem receives different responses depending on how it is described; or the distinction bias where choices presented together have different outcomes than those presented separately)
    • others give excessive weight to an unimportant but salient feature of the problem (e.g.,anchoring)
  7. Ego. Life is a bitch. Karma is a bitch. Ego is the dumbest bitch. There I said it.
  8. Equating education with intelligence ( a cognitive bias I think) . But the school you went to (Stanford) or dropped out affects people more than it should. Just saying.
  9. Underestimating the competition
  10. Getting wrapped in their own theoretical world and failing to see reality. Sometimes the basic data on the assumptions on the product, produce, process, people or profitability has moved. Reality is a dose that is usually externally administered. Smart people should see reality on their own faster.

What is the stupidest thing I did? Losing my temper. Thats never smart. Did you ever lose yours?

 Intelligence as a demand- supply problem.

Can we measure intelligence as a statistical quantity. IF the world had a few geniuses (Einstein, Fermi) when the population was 1 billion, does it mean the number of geniuses has increased by six times. We could do it for bacteria so why not humans?

How would IQ scores be distributed for different countries and races. Ooh, now we are asking scary uncomfortable questions.


How do we increase the supply of educated geniuses in a country or location or race? Don’t say MOOC or Coursera, please. Intelligence is not that easy. Is it easy comrade?




Review: Spectre

Ten Reasons the new Bond Movie will be as flat as a low alcohol american beer.

  1. Bond Girls hmm- An overage Monica Belluci ( no Botox) and overcold Lea Seydoux (looking more Scandanavian than French)
  2. No good song-What a letdown after Skyfall Adele song
  3. Bad Torture Scene- I mean really computer aided torture is not so cool as waterboarding in Die Another Day. Maybe they should get Quentin to direct the torture scenes
  4. Q – Gadgets were on a budget
  5. Two Bond Villians- One has won two Oscars and was too charming in the chilling scenes. The other has played Moriarty and did not come across so cerebral here
  6. M- The new Male M actually kills with hands not brain. No no  again -a great actor frowning his eyebrows away with no depth or conviction
  7. Trying to mix politics (post Snowden) with entertainment
  8. Bad Timing – Just not relevant or tasteful post Paris (terror attacks to stage manage cooperation between allies)
  9. fourth innings for Craig- I wish he just shut up and shot. When did Bond turn from one liners to dramatic conversations
  10. weak metaphors- from the childhood connection to the Oddjob reference(?) , too many weak connections keep story tepid

Do us a favor. Fire Craig and Hire Cumberbatch for the next round.

Why France should invoke NATO against Daesh

As per and

France remains a founder-member of NATO. It hosts several NATO agencies such as the NATO Helicopter Management Agency, the NATO Hawk Management Office, the Research and Technology Agency, and the Central Europe Pipelines Management Agency which is responsible for the movement, storage and delivery of fuel in Belgium, France, Germany, Luxembourg and the Netherlands. In 2009 France ended its 40 year break in participating within the NATO command structure, but France has been a faithful ally by committing its troops to NATO operations.

As per this France is invoking the rest of EU and Russia but not NATO

Article 42.7 of the Lisbon treaty, has never before been invoked. It is modeled on the Nato Article Five commitment, and says that if a country is “the victim of armed aggression on its territory, the other Member States shall have towards it an obligation of aid and assistance by all the means in their power.”

With 129 dead, now is the not to time for France to drag feet. With 230 dead in airplane bomb, Russia is already hitting targets in Daesh held territory. NATO and Russia together hitting targets invokes memories of the Allies in World War 2.

The UN Security Council remains relevant, and indeed the Iraq war proved how much better multilateral action is to unilateralism.

If NATO was relevant for Afghanistan , it is much more relevant to Daesh. By using the name Daesh, they intend to play down the imagery of Islamic State (ISIS) to reduce the propaganda recruitment that it is the West against Islam (clash of civilizations).


  • Collective defence means that an attack against one Ally is considered as an attack against all Allies.
  • The principle of collective defence is enshrined in Article 5 of the Washington Treaty.
  • NATO invoked Article 5 for the first time in its history after the 9/11 terrorist attacks against the United States.
  • NATO has taken collective defence measures on several occasions, for instance in response to the situation in Syria and in the wake of the Ukraine crisis.
  • NATO has standing forces on active duty that contribute to the Alliance’s collective defence efforts on a permanent basis.


It is NATO that should commit ground troops in sectors away from Russia. It is Russia that should be okay to fight alongside NATO ( or be exposed)

The enemy of a friend is an enemy. The enemy of an enemy is a friend.

France needs to do the French thing and help bring back the Allies together ( which it did in both World Wars) .

Else we will have much more attacks on Western Soil.



How to write a better email that makes you friends

  1. Don’t write when you are angry
  2. If you wrote something when angry, don’t hit send
  3. Keep angry email in drafts folder and see it every two hours. Edit a few lines
  4. Delete each and every word that you can delete and retain coherency in email. Delete each and every recipient in cc- till you come to bare minimum of people that should be informed
  5. A smiley usually lessons tensions
  6. Never give surprises in email. Call before.
  7. Don’t use copy all . Don’t use BCC. Dont use slang.
  8. Keep it professional. Everyone is doing their job. Everyone has issues that they are fighting.
  9. Revise and Edit. Revise and Edit
  10. People who write good emails have better career progress than people who write so so emails.

Communication makes the world go round more than job performance does.  Life in unfair but thats the way it is.