A POSIX-based Computing Environment

POSIX is an operating system standard. Our primary work and development environment is going to be POSIX based, and you will find life much easier by adopting one. Linux and macOS systems are POSIX, so if you have access to and plan to use machines with these operating systems natively, then you are in good shape.

If you only have access to Windows-based machine, then you should setup a Linux virtual machine:

  1. Download and install VMWare.
  2. Either:
    • Download a pre-built Linux virtual machine
    • Create your own.

Note: even if you do have a native POSIX-running machine, you might be interested in starting off using a virtual machine. This is to give you a “sandbox” environment, where you can experiment and fuss around with the system isolated from your main operating system.

You should invest some time in understanding the basics of working in the bash shell. You can find some resources that can help here. Please go through some of the tutorials and lessons so you have a grasp of the basics.


You will need to install the following in your development environment:

  • A Good Text Editor

    For description of what you are looking for when deciding on a good text editor, see here. In short, if you are not already committed to any particular editor that fulfills this criteria, I would recommend you take a look at Sublime Text.

  • Git

    Git is fundamental to life in this lab. If you are running a Linux operationg system can install Git using your system’s package manager, for e.g.:

    $ sudo apt install git

    For macOS operating systems, Git should already be installed. You can check if this is the case by typing:

    $ git --help

    in the shell.

    You should invest some time in understanding the fundamentals of Git. You can find resources to help you do this here.

  • Anaconda

    While you almost certainly have Python 3 already installed in your operating system, you need to set up a special Python environment just for development, isolated from the one your operating system uses. Anaconda provides for this and much more — it actually allows you to easily set up and manage multiple self-contained Python environments.

    Additionally, you may find the following useful for understanding the state of your repositories/directories. Installation or setup of the include the editing of operating system configuration files on your machine. You should use your text editor to open these files and make the changes.

  • promptitude

    promptitude enhances your shell prompt to provide information about the current Git repository.

  • Add the following lines to your Git configuration file, ~/.gitconfig, to gain some useful Git sub-commands

    # colorful 1-line log summary
    slog = log --pretty=format:'%Creset%C(cyan)[%ai] %C(yellow)%h %Creset%C(magenta)%d %Creset%s %C(green)(%an)%Creset' --abbrev-commit
    # uncolorful 1-line log summary
    slog-nc = log --pretty=format:'[%ai] %h %d %s (%an)' --abbrev-commit
    # graphical log summary
    glog = log --graph --pretty=format:'%Creset%C(cyan)[%ai] %C(yellow)%h%C(magenta)%d %Creset%s %C(green)(%an)%Creset' --abbrev-commit
    whatsnewlog = !"sh -c \"git log  --graph --pretty=format:'%Creset%C(cyan)[%ad] %C(yellow)%h%C(magenta)%d %Creset%s %C(green)(%an)%Creset'  --abbrev-commit --date=short $(git symbolic-ref HEAD 2> /dev/null | cut -b 12-)@{1}..$(git symbolic-ref HEAD 2> /dev/null | cut -b 12-)\""
    whatsnew = !"sh -c \"git diff  $(git symbolic-ref HEAD 2> /dev/null | cut -b 12-)@{1}..$(git symbolic-ref HEAD 2> /dev/null | cut -b 12-)\""

Organizational Accounts

Please use the same email address for all the following. It need not actually be your SDSU email address, but it is probably a better idea to use that.

Slack Lab Workspace

We try to keep most communication in this lab on Slack. You will need to join the lab Slack workspace. You should have received an invitation to join the lab Slack workspace. If not, please contact me and ask for one. You should install the Slack client (for Linux, macOS, or Windows, as appropriate) to keep track of Slack workspace activity without the need to clutter your email with notifications.


The lab has a GitLab organization to facilitate collaborative projects and work. Please create a GitLab account, and join the lab organization. You will also need to:

Copyright (C) 2018-2020 Jeet Sukumaran. All rights reserved.