Setting up the Ultimate iPad Data Science Environment

Tadd Bindas
Apr 14 · 7 min read
iPad on table
iPad on table
Photo by Francois Hoang on Unsplash


The iPad is a functional and sufficient workstation in 2021. The following applications can create a slick, modern, deep learning workflow, allowing you to work from anywhere (as long as there is a WiFi connection).

  • Juno Connect
  • Blink shell
  • Raspberry Pi
  • Open VPN Connect or Global Protect VPN

By connecting your iPad to your local network through a VPN, you can use Blink to set up a Jupyter Notebook (via tmux) on your remote server (Raspberry Pi, Desktop, etc.), then use Juno Connect to access that environment. Juno Connect will handle port forwarding, making life a lot easier.

As pandemic work from home orders fade and people start congregating in offices, universities, and coffee shops again, it is essential you have your workflow figured out. I don’t enjoy lugging my 2015 Macbook Pro around. It gets the job done, but it’s heavy, the battery is fading, and the fan is constantly cranking because of seemingly random spikes in CPU usage. I’d much instead use my 12.9" iPad Pro. If most of your data science work is done in Jupyter, using your iPad is a slick and modern workflow. It’s easy to implement, works from anywhere with the internet, and will replace the need for your laptop altogether. This article details how to implement my iPad deep learning workflow and some common problems.

Setting Up Your VPN

There are a few possible routes when setting up this server. Read whichever bullet corresponds to your situation.

  • I’m looking to access a work/university machine from my iPad

If you’re using resources from work or university, your server may already be configured and running on a VPN. If it’s an enterprise VPN, there is a high chance an app store app exists for it. If that’s the case, download the corresponding app, and you can skip this section. Ex: Penn State uses a Global Protect VPN. Thus, I downloaded the Global Protect App from the App Store.

  • I’m looking to connect to my AWS instance.

If you want to connect to an AWS instance, you don’t need a VPN as it’s hosted on a cloud server. See Blink’s guide below on how to create an AWS instance and ssh into it.

  • I want to connect to my personal machine at home and don’t have a VPN

This is the case I found myself in last Fall. As coffee shops in Pennslyvania were opening, I wanted to work remotely, support local businesses, and get some time away from home. I dug my Raspberry Pi out of its box and followed the following steps to set up a free Open VPN to secure my local network.

Once I completed the VPN setup, I emailed two individual .ovpn files to myself. One was for my Desktop and another for my iPad. From the Open VPN Connect app, you click the “file” tab, then load the newly generated .ovpn file into the app. Once you do this on your desktop, too, both devices become secured under VPN and can ping each other.

Creating a Jupyter environment using Blink

Photo by Joshua Aragon on Unsplash

Now that your server is set up, you need to open Blink and ssh into the machine to set up the Jupyter environment. Run the following commands to launch your local server. Note: This assumes you are not using a virtual environment (virtualenv, conda,pipenv ) for your packages. If you use one, activate it before installing Jupyter.

ssh <your username>@<your server’s local IP address>

If you need to determine your machine’s IP address, run ifconfigfrom the cmd line on your machine. The IP address should look like so: 192.168.86.xx

pip install jupyter tmux new -s jupyter notebook

This creates a tmux shell for your code to run forever in. For more documentation on tmux, see the link below:

jupyter notebook — generate-config

Useful if you want to set a password for your notebook. Run vim ~/.jupyter/ to edit this file when needed

jupyter notebook — no-browser

This will start a Jupyter Notebook server on your remote machine. To exit the session, type Ctrl + b, d to detach your tmux session. Now, it will be running in the background until manually stopped.

Accessing the Jupyter Notebook through Juno Connect

The ‘Add Jupyter Server’ Panel inside Juno Connect

This is the easy part. All you need to do now is give Juno Connect the credentials needed to access the Jupyter server you created. Run the following steps:

  • Click Add Jupyter Server
  • Change the type to Local Port Forwarding
  • Enter in the IP address or Hostname of your server
  • Enter your username and password for authentication

You can leave the Port as 22 as that’s the default port used by SSH. Additionally, the port forwarding settings correspond to the default name and ports used by Jupyter. If you run into any issues, check the FAQs section at the bottom of the article.

Photo by Johnson Wang on Unsplash

You did it!

Congratulations! Now that you have your iPad workflow set up complete, you can access your Jupyter Notebooks from anywhere with a WiFi connection from your iPad. The days of lugging around heavy and loud laptops have passed, and your modern workflow is here!


An updated list of common problems

Photo by Eunice Lituañas on Unsplash
  • Why can’t I escape from vim in Blink?

There is no dedicated Esc key on most (if not all) iPad keyboards. In Blink, you can remap the Esc key to work around this issue.

  • There is a password protecting my Jupyter Notebooks; how do I get rid of it?

To get around this, you will need to edit the following fields in your .jupyter/ file.

#  Hashed password to use for web authentication
# The string should be of the form type:salt:hashed-password.
c.NotebookApp.password = 'sha256:salt:hashed_password
# In such a case, serving the notebook server on localhost is not secure since
# any user can connect to the notebook server via ssh.
c.NotebookApp.password_required = True
## Token used for authenticating first-time connections to the server.
# The token can be read from the file referenced by JUPYTER_TOKEN_FILE or set
# directly with the JUPYTER_TOKEN environment variable.
# When no password is enabled, the default is to generate a new, random token.
# Setting to an empty string disables authentication altogether, which is NOT
c.NotebookApp.token = ''

Normally, most Jupyter Notebooks are authenticated through tokens in the URL. Since Juno Connect uses local port forwarding to connect you to your notebook, I suggest setting c.NotebookApp.token = '' and creating a hashed c.NotebookApp.password using Sha256. The code to create that password is below. Once it’s created, paste the entirety of it into your.jupyter/ file:

from notebook.auth import passwdpasswd(passphrase=<your password>, algorithm="sha256")
  • What is your favorite keyboard for your iPad?

Logitech Slim Folio Pro. It’s incredible (not a sponsor).

  • How do I save my host information on Blink

See the page below.

Analytics Vidhya

Analytics Vidhya is a community of Analytics and Data…

Sign up for Analytics Vidhya News Bytes

By Analytics Vidhya

Latest news from Analytics Vidhya on our Hackathons and some of our best articles! Take a look.

By signing up, you will create a Medium account if you don’t already have one. Review our Privacy Policy for more information about our privacy practices.

Check your inbox
Medium sent you an email at to complete your subscription.

Tadd Bindas

Written by

Penn State CEE PhD Student researching physics-informed machine learning

Analytics Vidhya

Analytics Vidhya is a community of Analytics and Data Science professionals. We are building the next-gen data science ecosystem

Tadd Bindas

Written by

Penn State CEE PhD Student researching physics-informed machine learning

Analytics Vidhya

Analytics Vidhya is a community of Analytics and Data Science professionals. We are building the next-gen data science ecosystem

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store