Development Setup
The Cryptoeconomics.study coding challenges follow the course lectures. This includes implementing a centralized payment processor, a distributed proof of authority blockchain, and a proof of work blockchain. To make sure that you can complete all the challenges we recommend the following development setup.
Prerequisites
Command Line Basics
In order to install the packages you need for development you're going to have to know how to navigate around the terminal.
Javascript
This course assumes a familiarity with the basics of Javascript. If you're new to programming, or just want a refresher, we recommend the following resources:
- Understanding Classes In Javascript - An intro to Javascript classes.
- The Complete Javascript Handbook - Updated in 2019. Takes about an hour or two to read (skim) and covers all the basics of Javascript.
- FreeCodeCamp Javascript Course - Free community driven course to help people learn programming basics so that they can contribute to non-profits and open-source.
- /r/javascript - The Reddit javascript community.
NodeJS and NPM
You're going to need Node.js and npm to complete these assignments.
We recommend using a node version manager like NVM to install and manage node/npm.
To install both on any platform go here.
If you're on Ubuntu, you can just run sudo apt install nodejs npm
.
Git and GitHub
You'll also need a Github account and git
installed on your computer.
Create a Github account here.
Setting up Git:
Mocha
We're going to be using Mocha in order to run tests, so install the Mocha package globally by running:
npm install -g mocha
IDE / Text Editor
Feel free to use any IDE (integrated development environment) or text editor of your choosing to complete the course. Here are a couple options we recommend:
Atom
Atom is free, open source, and works on every major operating system. Furthermore, it's easy to configure and set up. We recommend this setup by Elad Ossadon.
TL;DR:
- download Atom
- run this script to install some awesome atom plugins via apm (the Atom Package Manager)
apm install atom-beautify prettier-atom atom-transpose case-keep-replace change-case copy-path duplicate-line-or-selection editorconfig file-icons git-plus highlight-selected local-history project-manager related set-syntax sort-lines sublime-style-column-selection tab-foldername-index sync-settings toggle-quotes atom-wrap-in-tag atom-ternjs autoclose-html autocomplete-modules color-picker docblockr emmet emmet-jsx-css-modules es6-javascript js-hyperclick hyperclick pigments linter-eslint tree-view-copy-relative-path lodash-snippets language-babel react-es7-snippets atom-jest-snippets one-dark-ui dracula-theme
VIM
Another free and open source text editor is VIM. VIM stands for VI Improved. It is one of the oldest and simplest text editors available. It's extremely light weight and works on every operating system. Tutorials on the use of VIM are beyond the scope of this course, however we recommend the following resources:
- VIM Cheatsheet - a quick reference to the most common VIM commands/features.
- /r/vim - a friendly Reddit community that loves VIM (great place to learn and ask questions).
- burrrata's VIM setup (ubuntu) - designed to be quick to install, lightweight, and work on any Ubuntu VM even without a graphical user interface (just follow the apt, vim, and javascript sections).
Debugging
Many users like to just debug Javascript programs by using console.log
to print out different variables. When console.log
isn't cutting it, we recommend using Google Chrome DevTools to debug (guide). It's an awesome tool that allows complete breakpoint debugging.
Downloading the coding challenges
Once you have the prerequisites installed without error, fork this repository (guide).
Once you have your own fork at github.com/YOUR_USERNAME/code
, create a local clone of your fork (guide).
cd
into your local clone and run npm install
to install all of the required dependencies.
Staying up to date
To make sure your version of the coding project is up to date, you're going to need to add the original repository as a remote repository (guide). You will have to run
git remote add upstream https://github.com/cryptoeconomics-study/code.git
. You can then merge the latest updates to the coding project into your fork by following this guide.
Technical Difficulties?
Reach out to the community :)
Often the first steps are the hardest and we want to make sure you have a great experience learning about cryptoeconomics. If you get stuck or encounter difficulty setting up your development environment please reach out to the community. Chances are you're not the only one experiencing difficulties. Reaching out allows us to
- solve your problem directly
- document what the problem was and how we solved it so that in the future people can find those answers quickly
- understand the problem and improve the course material so that it's more intuitive for everyone It's a win for everyone! So if you get stuck, don't worry about it. Just post your problem on the community forum technical difficulties thread and we'll do our best to help :)
Chromebook Support
Chromebooks are great because they're cheap and secure. Lots of people have them. In order to make the course accessible to as many people as possible, we've created a chromebook guide.
Taking the Course
Now that you're good to go, let's start the course!
The course will alternate between lecture videos and coding challenges, which will have you implementing the concepts from the preceding lecture. but you can also jump straight to the coding challenges Be aware that each coding challenge build upon the previous one, so it's important that you start at the beginning of each chapter and go all the way through. Good luck! 🍀
Don't forget to commit your progress to Github as you go. This will create checkpoints that allow you to go back if you made a mistake. It will also help us track your progress and review your work at the end of the course in order to award you a certificate of completion.
Contributing
We welcome community contributions! There's lots of ways to get involved. Please see our contributing pages for more information :)