A collection of useful resources for the Hackers of BioHack.
Author: Rajbir Johar
- Submitting your project
- Github
- Environment
- Sponsors
- Healthcare
- Programming Languages
- Web Development
- Hardware
- Virtual/Augmented Reality
- Mobile Development
You must submit on devpost HERE and add a video to your Devpost submission. (tutorial here).
- Git
- Version control and file version management system.
- Allows you to maintain consistent versions of code and backtrack when you need to.
- Useful for collaboration on potentially large code bases with several people.
- Git Commands
- Used to save, branch, checkout, track, upload, download, share, collaborate, control versions of, revert, delete, nuke your code.
- Cheat Sheet
- Markdown
- Used to write README.mds (like the one you're reading right now) to provide documentation for your code.
- Cheat Sheet
- Github
- The most popular web-based hosting service for version control using Git.
- Offers all of the distributed version control and source code management functionality of Git along with some of its own features.
The terminal on your computer, when the right resources are installed, is a powerful tool for running your code and building applications. Changes are, the factory settings on your hacking machine aren't going to cut it to streamline building your application/idea.
The following is a list of tools/technologies to help you turn your ordinary computer into a certified hacking machine!
- Common Terminal Commands that will help you familiarize yourself with navigating and using the terminal.
- Xcode
- A MacOS specific IDE used to build Apple only software such as iOS, iPadOS, and MacOS apps.
- Includes numerous general purpose languages and tools for many kinds of projects.
- Install the Xcode Command Line Tools as well to make using the terminal easier.
- Homebrew
- The best package manager available for MacOS
- Allows your install anything else you might need that was not included in Xcode.
- Once installed, try out
brew install neofetchthen afterwards, runneofetchfor a cool little display of your computer's stats.
- Zsh
- Windows Terminal
- The recently released Windows Terminal allowing you to do everything you can on a Linux/Unix machine.
- Ubuntu Subsystem
- Linux subsystem that allows you to run an emulated instance of Linux Ubuntu right within your powershell.
- Because of the sheer amount of different Linux distros that exist, please refer to your OS documentation on how to install packages for your specific system. You likely will not need a third party package manager since it is usually built into the terminal functionality.
- Use the command
vim <file name>(without the angle brackets) to open the file up in vim/vi without leaving the terminal. This allows your edit your files on the fly without opening up an entire application. - Cheat Sheet
IDEs allow you to take code editing to another level. IDEs provide thousands of plugins to make coding easier and more enjoyable along with the countless themes to really personalize your coding environment.
- Visual Studio Code is probably the most popular IDE out there for code editing.
- Atom is another popular IDE.
- Sublime
- C++ - object-oriented, allows for low level data manipulation
- C# - intended to modernize paradigms set up by C++ and C, object-oriented
- Python - high level, emphasizes code readability
- Java - heavily class-based and object-oriented
- JavaScript - high level, the dominant programming language of the web
- Pip
- the recommended package manager/installer for the Python language
- lets you quickly install and import libraries and packages to run in Python
- Yarn
- a package manager specifically for the Javscript Language
- the go to tool for getting packages for Node.JS
- npm
- a package manager specifically for the JavaScript Language
- the go to tool for getting packages for Node.JS
- HTML - the "content" of a web page
- CSS - dictates the style and character of a web page
- JavaScript - high level, the dominant programming language of the web, makes webpages dynamic
Back-End Development: code that connects the web-page to a database, manages user connections, and powers the web application itself
Common Back-End Frameworks/Tools
- JavaScript
- Python
Front-End Development: the practice of converting data to graphical interface for user to view and interact with data through digital interaction using HTML, CSS and JavaScript
Common Front-End Frameworks/Tools (used in conjunction with vanilla HTML/CSS/JavaScript)
- HTML/CSS/JS
- Bootstrap - CSS/JS library that makes responsiveness between mobile and desktop web pages easy
- Semantic UI - quickly build web pages with sleek, modern, and dynamically designed elements
- Font Awesome - font and icon toolkit for simple yet effective icons and typography
- jQuery - JavaScript library designed to simplify HTML DOM tree traversal and manipulation
- pure JavaScript (all of which are extremely powerful and robust)
- AngularJS - structural framework for dynamic web apps, good for single-page applications, maintained by Google
- ReactJS - JavaScript library for building user interfaces, 'reacts' to user and dynamically changes the content of a web page, maintained by FaceBook
- VueJS - open-source JavaScript library for building dynamic user interfaces, easy to pick up
- Arduino IDE
- the official integrated development environment for Arduino programming
- optimized for uploading code to Arduino microcontrollers
-
Unity
- a real-time 3D development platform
- drag and drop static assets into your 3D scene
- code dynamic elements events and elements using the C# language
-
- the official software development kit for Oculus Rift hardware within Unity
-
VRTK - The All In One Virtual Reality Tool Kit for Unity
- comes with integrated GearVR and OculusVR SDKs
- prebuilt libraries for locomotion, object-interaction, clipping, and more
-
- build mobile apps in a React JS integrated environment
- good for both Android and iOS applications
- maintained by FaceBook
-
- for iOS app development
- Xcode is the proprietary development environment
-
- for Android app development
- Android Studio is the recommended development environment
-
- an open-source mobile application development framework
- good for both Android and iOS applications
- maintained by Google