---
# System prepended metadata

title: 5.Developer Workflow
tags: [Lesson 1]

---

###### tags: `Lesson 1`

# 5.Developer Workflow
Exercises and projects can be completed in Jupyter notebooks. You can either work on a virtual machine inside a Udacity Workspace or use your local machine.

## Udacity Workspaces
Workspaces will open up in your browser as you navigate through the course. They will already be running with the required dependencies and will have access to the datasets and files you will need to accomplish your tasks. For most users, it will be easiest to operate inside a Udacity Workspace.

## Local Workflow
Working locally allows you more flexibility and permanence. You can save your exercises and projects for further reference, and you can install and use libraries to add to them to advance your learning. Additionally, some plotting tools will not work inside a virtual environment as they pop open a new GUI window. As you encounter exercises and projects in this course, you can download the relevant starter notebooks and datasets from a git repository that will be linked for each exercise.

To simplify python dependencies and avoid confusion caused by mismatched library versions, you can use this [Pipfile](https://github.com/udacity/nd320-c4-wearable-data-starter/blob/master/Pipfile).

I use [pipenv](https://pipenv-fork.readthedocs.io/en/latest/index.html) to isolate my python dependencies from the rest of the system. Detailed instructions follow:

1. [Install Python 3, pip, and pipenv](https://pipenv-fork.readthedocs.io/en/latest/install.html)
1. `mkdir $HOME/ds_for_wearables`
1. Download the above Pipfile to `$HOME/ds_for_wearables`
1. `cd $HOME/ds_for_wearables`
1. `pipenv install`

This will install all the required dependencies to complete the exercises and projects.

To start a Jupyter notebook in this environment:

1. `cd $HOME/ds_for_wearables`
1. `pipenv run jupyter notebook`

## Spyder IDE
My favorite editor is Spyder IDE, which mimics a MATLAB environment where you have both an editor and an IPython console side by side. You can run sections of code in your editor using similar syntax to MATLAB and view plots, code, and the console side by side. It also has features to examine variables and maintain a history of commands.

[Read the docs](https://docs.spyder-ide.org/)

**Note**: On newer versions of macOS (macosx 10.14.6), I’ve encountered a bug where plotting causes the IPython kernel to significantly slow down. See [bug thread](https://github.com/matplotlib/matplotlib/issues/15314#issuecomment-533776844). If you encounter this, the workaround is to disable [AppNap](https://developer.apple.com/library/archive/documentation/Performance/Conceptual/power_efficiency_guidelines_osx/AppNap.html) using [appnope](https://developer.apple.com/library/archive/documentation/Performance/Conceptual/power_efficiency_guidelines_osx/AppNap.html).

```
import appnope
appnope.nope()
```