Welcome to the first steps for becoming a Systems Engineering Virtual Intern at OLE! After completing these steps, you will be working on OLE’s project, treehouses. These first steps are a process to prove that you have learned the foundational skills before you can progress to working on harder projects with larger teams. Consider this to be the interview for the internship.
If you are selected for the internship after completing the steps, you will be officially invited to join the OLE interns team! We’ll add you to the Virtual Interns Gitter chatroom and assign you to a specific team to work on developing and improving OLE’s software.
Once accepted, you and your team will work on an assignment, and we’ll switch up the assignments each week. As part of this internship, you will have the opportunity to work with software and languages including Git, GitHub, Markdown, Command Line/Terminal Scripts, Vim, and Docker. Furthermore, you will be able to learn and practice your skills in using Raspberry Pi Hardware.
The goal of OLE is to provide educational infrastructure to learners and educators in remote areas of the globe. The Raspberry Pi is used in pursuit of this goal to provide a cost-effective means by which devices can access educational resources. We aim to provide a stable system that is widely accessible by numerous devices and operating systems. This equipment will be deployed in the field with little or no access to the internet, so its reliability is of paramount importance.
NOTE: This is an unpaid but intensive internship that requires 16 hours of work each week. More information about the internship can be found in our FAQ. If you have further questions, don’t hesitate to ask other members in the Gitter chat!
The following are the required hardware components that will be needed as part of the Virtual Intern placement. Software solutions such as containers are used by the Treehouses team to ensure that the solutions we develop work across computers and locations. However, as part of the Systems team, you will need some basic hardware of your own to make sure you can run, test and contribute to the software that the team is developing.
- Raspberry Pi 4 (Pi 4 information)
- Any amount of RAM will work, but more is better
- Raspberry Pi 3B/3B+ also work, but Pi 4 is recommended
- Power supply for the Pi
- Pi 4: minimum 3.0A, Standard USB-C port
- Pi 3B/3B+: minimum 2.5A, Micro USB port
- 3 microSD cards
- Minimum 16GB
- U1 or Class 10 required
- MicroSD card reader
- You will need a USB reader if your computer doesn't have an SD card slot
- Laptop or computer with minimum 8GB of RAM
- You will need a Wi-Fi adapter if you are using a desktop without Wi-Fi capabilities.
- Android device (phone or tablet)
- Memory (RAM): Minimum 2GB
- Operating System:
- Minimum: Android 6 "Marshmallow"
- Recommended: Android 8 "Oreo"
- Specializations (Choose at least 1, but you can choose after Step 9)
- Sensor**s**
- RAK2245 Pi Hat Edition
- Camera
- Microphone
- Machine Learning
- Coral USB Accelerator
- Camera
- Microphone
- Cryptocurrency
- 1TB external hard drive
NOTE: You can purchase all of these components together for your convenience (or if there are discounts) on places such as Amazon, eBay, etc...
There are also "optional" pieces of hardware that you can choose to purchase should you choose to, these are not compulsory for participation in the internship but may greatly assist you in developing your skills and contributing to the project.
- Ethernet cable - For Direct connection and troubleshooting of the Pi
- Real Time Clock (rtc)
- Raspberry Pi 0W
- Raspberry pi Camera(s):
- USB keyboard, mouse, monitor, and HDMI cable
Useful link for Rapberry Pi set up
Social coding is a huge part of any open source and collaborative project, and treehouses is no different. In the following series of steps, you will learn about Markdown, Docker, Bash, Vim, Git, GitHub, GitHub issues, and GitHub pull requests.
Because these steps are simple, we expect high-quality work, which may take a longer time. We want to see that you are capable of using or learning how to use these tools (writing good GitHub issues, creating pull requests, using Markdown and Docker, etc.). These steps may seem easy, but we want you to impress us with good GitHub etiquette and quality Markdown. The bare minimum would be to just passively follow the steps; you should do further reading about the tools/languages we use so you can further your understanding and relieve confusion if you're unclear about how something works. Treat these steps as learning opportunities! The GitHub and Markdown skills you practice here are very important for both this internship and a future software development career.
The MDwiki has plenty of resources to help you complete the steps. There is a list of useful links at the end of each step. We also created a FAQ page where you can find the answers to some commonly asked questions. This page has even more useful links and video tutorials that will help you become familiar with the tools/languages we use. For anything that is not on the FAQ page, Google and Stack Exchange are your friends :)
We also want you to keep us updated on a relatively good amount in the Gitter chat as you complete these steps. We will ask you to send us messages, links, and screenshots along the First Steps, and we will use this to track your progress, so please do not forget to do so.
A very large part of these steps is finding problems with these steps and this MDwiki, so take note of any issues that you run into or suggestions for improvement while doing these steps.
There is no official deadline to complete these steps, but most candidates who are approved for the internship program finished the steps within 7-8 days. Good luck!
-
Complete the New Virtual Intern Application form. If you have already done this after being invited to join the team then good job, you're all set!
-
Log into your GitHub account then watch treehouses.github.io repo and Follow Dogi, Ryan, Vassilis, Roshan, Sam, Samuel and Arran on GitHub.
In GitHub, we "Watch" organization repositories and "Follow" individuals. Look for the "Watch" button at the top right of the page when you are in a repository. Also, follow each other to see what others in the group are doing. (Click on the image to enlarge.)
We interact with the Raspberry Pi via a command terminal, which is natively available for both Mac and Linux based systems. However, if you are on a Windows device, Git Bash is highly recommended.
One of the most simple but most powerful text editors out there is Vim. If you want to see what Vim can do and how powerful it can be, you can learn more about Vim here. Vim is not necessary for this internship but it is truly helpful when working on the Raspberry Pi not to have to download and install other text editors.
NOTE: You can skip ahead to Step 3 while you are waiting for your Raspberry Pi to come in the mail.
There are 3 sections in this step:
The Systems team uses SSH (Secure Shell) to securely and remotely control the Raspberry Pis we work with. SSH works by providing an admin protocol that allows users to control and modify their remote servers over the Internet. Follow the Raspberry Pi SSH & Tor Tutorial to learn how.
Follow the instructions on GitHub and Markdown
Make sure that you've linked to your github.io and pull request in the Gitter chat. Also, include the raw.githack
link in your pull request https://raw.githack.com/YourUserName/YourUserName.github.io/YourBranchName/#!pages/vi/profiles/YourUserName.md
NOTE: The raw.githack
link is case sensitive to your username.
Once you complete Step 3 you will have:
- 1 Pull request made
Check your progress here
Vagrant is an open-source software product for building and maintaining portable virtual software development environments. In this step, you will learn about how to interact with Vagrant through the command-line interface. Follow the directions in the Vagrant Tutorial
Docker is a computer program that performs operating-system-level virtualization also known as containerization. In this step, you will learn the basics of interacting with Docker and Docker Compose through the command-line interface and basic commands for maintaining your Planet installation. Follow the directions in the Docker Tutorial
Follow the directions at Git Repositories to keep your username.github.io and your local repository up to date.
Follow the GitHub Issues tutorial to create at least one issue. Post a link in Gitter whenever you create an issue or when you comment on someone else's issue. You are encouraged to post as many issues as you can for improving the page as well as for personal practice. No issue is too big or too small to be filed and it is OK if you are not sure how to fix it yourself. If you know how to solve an issue, be sure to provide a detailed account of your research and show how to fix it. It is ok to file an issue about minor typos and very small changes, but do not make this the case for all of the issues that you file. You can also work on issues that you didn't create.
Make sure you have created at least one issue, resolved it, commented on an issue you didn't create and have a pull request with the fix merged. You may continue making Issues, Pull requests and Comments, or move on to the next step, while you are waiting for your pull request to be merged. The approval process for your Step 6 fix may take time, but it is OK to continue working.
NOTE: When posting a link in the Gitter, it may be helpful to tag the newest interns since they are likely the most active.
Once you complete Step 6 you will have:
- 2 pull requests made (one at step 3 and one at step 6)
- 1 comment added (on an issue you didn't create)
- 1 issue created
Check your progress here
Please note that creating and working on Issues are not exactly bound by the "Step" you are in. Feel free to move on to other steps, and make more Issues and Pull Requests while you wait on OLE approval for your merge(s).
Follow the Nextcloud and Tor Tutorial to set up the Nextcloud service on your Pi, and access it via Tor.
In this step, we will adopt the motto of "Practice makes Perfect". You will follow the same steps as in Step 6, continuing to improve this Markdown Wiki so that it is educational, yet easy to understand for future interns.
You should:
- Add comments to three issues other than your own (somebody else's issue)
- Create three new issues (in addition to those you have already created in previous steps)
- Get approval to work on the issues you have created. Make sure someone from the System's team confirms that you should work on the issue BEFORE you start to work on it.
- Resolve the three issues by making the necessary changes in your repo with three separate pull requests.
Just as your learning with this Wiki was made possible by the efforts of previous interns, now we turn to you to continue that tradition and help future interns take their First Steps. Through this step, you should try to further improve our Markdown Wiki, with better explanations, formatting fixes, and more! You must have made your pull requests and have them each approved by at least two other OLE team members/interns in order for it to be merged to the upstream repository. Just as before, announce your Pull Request on the Gitter chat so other members can review it. You may need to make some additional corrections. Learn by teaching - or editing our teaching tool, in this case!
NOTE: When you are fixing an issue, mention the issue number you are fixing in the title of your pull request and make a new branch for every new issue from the master branch.
Once you complete Step 8, you should have:
- 5 merged pull requests (one at step 3, one at step 6 and three at step 8)
- 4 comments made on issues you didn't create (one at step 6 and three at step 8)
- 4 issues created (one at step 6 and three at step 8)
NOTE: You can track your progress with the number of pull requests and issues here.
Next thing is to post a screenshot of your completed progress to the Gitter chat room. Click here to find your completed progress. Message us ("@/all" and "@dogi") and ask about adding yourself to the virtual intern list found in team.md and setting up a meeting so you can become a part of the team as soon as possible.
Make sure to read through the intern orientation document before the meeting.