Technical Requirements
This course assumes a baseline of technical knowledge. It is important to make sure you are comfortable with the following tech. If you are not, we are providing links to excellent resources you can use to get up to speed! Please note that you can learn all these things in our free Basic Training course.
Unix or Linux Environments
To be successful in this course you must have access to a Unix or Linux based operating system. MacOS is based on Unix and if you’re running Ubuntu, that’s a Linux distribution.
If you are on a Windows 10 machine, follow this guide to installing a Linux environment before starting the course.
If you’d like to get more familiar with a Linux environment, you can check out this Ubuntu for beginners, targeting Ethereum Developers specifically:
(Those interested in learning more about the history of Unix can read this excerpt from Advanced Programming in Unix Environment by Stevens and Rago)
Command Line
The command line is the basic non-graphic interface for your computer. It is most commonly called the terminal or the shell.
To be successful in this course, you should be comfortable using the command line. Among other things, you should be very comfortable changing directories using cd
, deleting files with rm
, installing files with curl
, and running programs from the command line.
We would also recommend becoming familiar with command line shortcuts, such as:
- CTRL + C Interrupts and quits the process currently running. Crucial in stopping terminal line programs
- CTRL + A Moves your cursor to the beginning of the line
- CTRL + E Moves your cursor to the end of the line
Sometimes it’s helpful to remap your caps lock key to become CTRL. Find out how to do that here.
To brush up on command line skills, check out:
- MIT: Your Missing CS Semester: The Shell and Shell Tools
- The Odin Project: Command Line Basics
- Ubuntu for Beginners
Git
Git is a version-control system (VCS) used to track changes made to projects. While git seems simple, it’s actually a bit challenging to get comfortable with. (Note that git is a piece of software, on which version control sites like GitHub or GitLab are based.)
Here are some resources to get you started:
- Git: Docs
- The Odin Project: Setting Up Git
- The Odin Project: Git Basics
- MIT Missing CS Semester: Version Control (git)
- Git and GitHub for Poets (video)
Not only is git a part of a good coding repertoire, it’s also used by many open-source projects. An essential part of the bootcamp is contributing to open-source projects. It’s really important to know how to do proper Pull Requests and other guidelines for contributing to open-source. Here are a few resources to help you with this:
For those who would like to get a headstart, check out the “Good First Issues” for these open-source Ethereum projects:
- MetaMask
- Truffle
- Go Ethereum (geth)
- Web3.js
- Prysmatic Labs or Teku (Ethereum 2.0 client)
Be sure to read Community Guidelines before contributing to a project. For example, here is Geth’s Contributor Guidelines and their Code Review Guidelines
JavaScript
Even if JavaScript is not your first software language, it’s really important you be familiar with its basic syntax. Solidity, the smart contract language you’ll learn, is based on ECMAScript. We recommend Code Academy’s free Intro to JavaScript course, The Odin Project or The Modern JavaScript Tutorial to get the basics. Beyond basic JavaScript, students should be familiar with Node and npm. Some advanced students will also be using React in this course. Here are some resources to help familiarize yourself with these:
Code Editor
VSCode is a very popular editor with developers due to the plug-ins and extensions it makes available. We would recommend getting started with it and the following plug-ins / features:
- Live Server which allows you to easily start a server in the directory
- Live Share an easy way to share your code with someone for pair programming
- Gitlens “supercharges the Git capabilities built into Visual Studio Code.”
- Solidity Visual Developer Built by ConsenSys!
- Solidity linter Checks valid Solidity syntax. Fair warning, can be over-opinionated for folks!
- Solidity Solhint
- Partial Diff Compare (diff) text selections within a file, across files, or to the clipboard
- Markdown All in One All you need to write Markdown
- GitHub Linker Create links to fragments of code in GitHub
We strongly recommend using VSCode in this course, particularly if you’re new to coding, due to its extensive plugins. Other popular editors include Atom, Sublime Text, and IDEA (written originally for Java but now supports many languages).
There is also the option of text-only editors. Many developers find them extremely productive and, while challenging to learn, make their job much easier. We’ll address one here, vim, by providing this series of tutorials:
- History and Effective Use of Vim
- Vim for Beginners
- Vim for Intermediate Users
- Vim for Advanced Users
If you’ll be using text-only editors, or simply using the command line for your development environment, you’ll want to get familiar with tmux
: Getting Started with Tmux