Some helpful guides and tutorials to point hackers in the right direction at Citrus Hack 2019!
If you are still unsure where to start, want expert guidance, or just need a second opinion on what software to use, send a message to us on the #need-mentors channel on our Slack and we'll try our very best to help you get the ball rolling.
- Sublime Text 3 - light-weight, highly customizable, now has a companion app for git integration
- Visual Studio - integrated development environment, used to develop computer programs, as well as websites, web apps, web services and mobile apps, developed by Microsoft
- Visual Studio Code - light-weight, highly customizable source-code editor developed by Microsoft
- IntelliJ - optimized integrated environment for developing in Java, developed by JetBrains
- Android Studio - the official integrated development environment for Google's Android operating system
- XCode - optimized for building iOS apps, includes 10+ gigabytes of other useful general purpose languages/libraries/tools
- Atom - has plug-ins written in Node.js, embedded Git Control, developed by GitHub
- Vim - highly customizable, edit code without having to leave your terminal
- Emacs - extensible, customizable, self-documenting real-time display editor
- Arduino IDE - optimized for uploading code to Arduino microcontrollers
The terminal on your computer, when the right resources are installed, is a powerful tool for running your code and building applications. Chances are, factory settings on your hacking machine aren't gonna cut it to streamline building your application/idea.
The following is a list of tools/technologies help you turn your ordinary computer into a certified hacking machine!
- XCode
- includes numerous general purpose languages and tools for many kinds of projects
- even if you don't use the integrated environment, XCode is still very useful for getting an all-in-one starting package of languages installed
- Homebrew
- a package manager for MacOS and Linux
- lets you install everything you might need that wasn't already included in XCode
- Ubuntu
- a Linux subsystem for your Windows machine
- allows you to run an emulated instance of Linux Ubuntu in a Windows environment
- Pip
- the recommended package manager/installer for the Python language
- lets you quickly install and import libraries and packages to run in Python
- npm
- a package manager specifically for the JavaScript Language
- the go to tool for getting packages for Node.JS
- Git
- version control and file version management system
- lets you maintain consistent versions of code
- useful for collaborating on a potentially large code base with several people
- GitHub
- a web-based hosting service for version control using Git
- offers all of the distributed version control and source code management functionality of Git as well as adding its own features
- 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
- Git Commands - save, branch, checkout, track, upload, download, share, collaborate on, control versions of, revert, delete, nuke, etc. your code!
- Markdown - the language of ReadMe documents
- 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
Hardware Lab
- Check out the official map on the Citrus Hack Live page for the location of our Hardware/Tech Lab
- See available hardware provided by Major League Hacking
Arduino IDE
- the official integrated development environment for Arduino programming
- optimized for uploading code to Arduino microcontrollers
Note: Soldering is not allowed at Citrus Hack.
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