Quickstart: TensorFlow-Examples on PythonAnywhere

Aymeric Damien’s “TensorFlow Examples” repository popped up on Hacker News today, and I decided to take a look. TensorFlow is an Open Source library Machine Intelligence, built by Google, and Aymeric’s examples are not only pretty neat, but they also have IPython notebook versions.

Here’s how I got it all running on a PythonAnywhere account, from a bash console.

Read more…

Security update applied for CVE-2016-0728

Yesterday, Yevgeny Pats of Perception Point security announced publicly a local privilege escalation vulnerability in the Linux kernel, which has been given the code CVE-2016-0728. Most Linux systems had this vulnerability.

Read more…

New stuff: UI changes, new packages, and limited Java

A big infrastructure update this morning, but we managed to fit in some nice new features too!

  • A popular request, especially from people using PythonAnywhere in education: when you run a Python file from inside our in-browser code editor, it now shows the output of the file in a pane underneath the editor, instead of trying to pop up a new browser tab.
  • Plotly is a popular package for generating interactive charts, especially in IPython notebooks. We now have it installed by default.
  • For anyone who’s keen on using external databases that need ODBC to connect, we now have all of the operating system packages installed to support it on our site. Just run pip2.7 install --user pyodbc (adjusting the Python version as required) to get the Python package.
  • We have no plans to become JavaAnywhere, but Java can be useful for some purposes, even in a Python program. We’ve started the process towards making it available; if you have Docker consoles enabled for your account, the Java command-line program will work. It doesn’t currently work in scheduled tasks or web applications. We’ll be extending support for Java in the future, but if all you want to do is run it from the command line, get in touch and we’ll enable it for your account. Feedback will definitely be appreciated!

Seasonal notebooks!

We’ve got a present for all of our paying customers – if you celebrate Christmas, you can call it a Christmas present, and if you don’t you can just call it a present :-)

IPython notebooks are now available on all paid accounts on PythonAnywhere. Give them a go! You can start a new one, or run one that you’ve saved or uploaded, from the “Files” tab. It’s a new feature, so we’re particularly keen on hearing any feedback you’d like to send us.

If you’re not a paying customer yet, you don’t need to feel left out – we’ll be supporting them (perhaps with a couple of limitations) on free accounts in the New Year.

Happy holidays to everyone, and we look forward to seeing you in the New Year.

Security advisory: please change your PythonAnywhere MySQL password

tl;dr: On 19 November we were notified of a security vulnerability on PythonAnywhere. It could not have been used to access files on your PythonAnywhere storage, including your code, nor was any personally identifiable data in our databases exposed. We also have no indication that it was ever exploited. It was fixed within two hours of notification. However, as a precautionary measure, we are recommending that if you use MySQL on PythonAnywhere, you should change your MySQL password.

Read more…

A beginner's guide to building a simple database-backed Flask website on PythonAnywhere

It’s really easy to get started with Flask on PythonAnywhere, but if it’s the first database-backed website you’ve ever built, it can feel a little daunting. Here are some step-by-step instructions. We’ll build a really simple website – just a page where anyone can leave a comment, with the comments stored in a database so that they last forever. We’ll also password-protect it so that it doesn’t fill up with spam. Here’s what it will look like:

We assume that you’ve got a little bit of basic Python and HTML knowledge – for example, that you’ve done an online course in both of them. Everything else we’ll explain as we go along. Let’s get started!

Read more…

Share your code using gist consoles

Have you ever wanted to share some code with someone, and make it really easy for them to run it and see what it does? Perhaps an answer to a Stack Overflow question, or just something you want to link from an IRC chat where you’re explaining something? GitHub has gists, an excellent feature for sharing version-tracked code snippets, but sometimes just sharing the code isn’t enough – you want people to see what happens when they run it.

With PythonAnywhere, you can create a link that will run a gist from GitHub in a browser-based console. It’s really easy to set up!

Read more…

Docker Consoles (beta)

Here at PythonAnywhere industries, there’s nothing we love better than a bandwagon. Plus the logos are so cool! So it’s docker-fever in the office.

In all seriousness, we’ve been rolling our own sandboxing/virtualisation/isolation solution and evolving it since the very first days of PythonAnywhere (4 years ago, if you can believe that), based on chroot and cgroups and all that wonderful containerey stuff. But we wanted to investigate Docker as an alternative shrinkwrapped solution, and the first step of that is ready now.

Read more…

Outage report: 5 September 2015

From 20:30 to 23:50 UTC on 5 September, there were a number of problems on PythonAnywhere. Our own site, and those of our customers, were generally up and running, but were experiencing intermittent failures and frequent slowdowns. We’re still investigating the underlying cause of this issue; this blog post is an interim report.

Read more…

New release - Web app charts, MySQL upgrade and bug fixes

Hit charts for web apps

Screenshot of hit charts

The main change for this release is that we now report hits and errors to your web apps on the web app page. If you’re a paying user, you get pretty charts over a range of time periods. If you’re not, you’ll get a text report.

Web app error reporting

We’ve greatly improved the errors that are reported when you reload a web app.

Batteries included

As much as is possible, we have tried to bring the packages that we install for Python 3 to parity with Python 2. That means that the number of packages that come preinstalled for Python 3 has increased dramatically.

Database upgrade

All of your databases have been upgraded to MySQL 5.5.

Other stuff

We’ve also applied a number of small bug fixes, user interface improvements and stability fixes.