- Q1: What will I be working on during this internship?
- Q2: What kind of software will we be using for this internship?
- Q3: Where can I find more information about this internship?
- Q4: What are the hours of the internship?
- Q5: Is this a paid internship?
- Q6: What happens after the initial steps?
- Q7: If I'm an international student, how soon can I get my paperwork required by my visa?
- Q8: How many pull requests and issues in total do I need to make to finish the steps?
- Q9: How long do I have to complete these steps?
- Q10: How can I keep track of 10 steps vetting progress?
- Q11: What is the purpose of Nations and Communities, and how do they work together?
- Q12: How can I enable virtualization on my computer in order to run Docker?
- Q13: Why is the "Submit" button not showing up when I try to submit my survey?
- Q14: Why does my browser say “Unable to connect” when I try to load my Community?
- Q15: When I first run Planet with the "docker compose up -d" command, why does the download fail?
- Q16: I named my repo incorrectly by not naming it <YourUsername>.github.io, can I rename it or do I need to delete it?
- Q17: What do I do if I already have a github.io with my username?
- Q18: What if I accidentally resign my manager account, or delete my planet folder, how do I recreate my manager profile?
- Q19: How can I run two communities on the same machine?
- Q20: How do I destroy planet docker services and start over?
- Q21: What do I do if I cannot create a dummy account?
- OLE virtual interns will be helping develop OLE’s Planet Learning system (Planet) and its related software, systems, and services. Planet is a virtual library that is deployed internationally to children in countries that typically do not have access to educational resources.
- During this internship, you will have the opportunity to work with various software, tools, and technologies, including Git, GitHub, Markdown, Command Line, CouchDB, Docker, HTML5, JavaScript, Node.js, Angular, TypeScript, SCSS, and Visual Studio Code.
- More information about the internship can be found at the OLE's Virtual Software Engineer Intern listing on your university's Handshake site.
- This is an intensive internship requiring 24 hours of work per week. Please collaborate with fellow interns and keep us updated via the Discord server.
- The 24-hour minimum commitment is necessary due to the fast-paced nature of our work, which can make it difficult for virtual interns to stay up to date. We host a Google Meet virtual office from Monday to Friday, approximately 5 AM to 5 PM EDT. During this time, you can hear about ongoing projects, share your screen, ask questions, discuss challenges, and collaborate on issues. You can join the Google Meet virtual office whenever you’re working, but you don’t have to be on for all your work hours. Use the remaining time to catch up on changes and complete assigned tasks.
- This is an unpaid position but offers a diverse range of workplace experiences. Upon request, we can provide a certificate of completion. Academic credit may be available through your institution (if applicable), and we can assist with paperwork for CPT or first-year OPT.
- The initial steps are meant to introduce potential interns to the OLE Planet, planet software and the process that we use to develop features and improve upon the Planet. To be more clear: the initial 10 steps are a vetting process to determine whether or not people are fit for the internship, so consider it an interview for the internship. Once you have completed the 10 steps and are approved, you have officially joined the OLE interns team! We’ll add you to the interns Discord channel and assign you to a team. You and your team will be working on an assignment, and we’ll switch up the assignments each week.
- Since the first 10 steps are a vetting process, your internship technically doesn't start until you finish them. Think of the first 10 steps as a continued application process; you are not working on or adding to our organizational software, but rather showing that you have enough technical background to work with us. After you finish the first 10 steps, let us know if you need us to sign some paperwork, give you organizational information, or provide you with an offer letter for your visa compliance and we'd be more than happy to help.
- To finish the initial steps, you need to make a minimum of 4 issues and 5 merged pull requests so you can get familiar with GitHub and to show us that you can write proper issues/PRs.
- There is no official deadline, so work on your own time. However, please note that most people who continued into the internship program completed the steps within 7-8 days.
- You can keep track of your progress using the tracker here link.
- We use the nation/community infrastructure because we often deploy our software in places without internet. Nations are the services sitting in the cloud (which are connected to the internet). Communities, which run locally on Raspberry Pis and/or laptops, are run on an intranet but are most of the time not connected to the internet. Because nations are connected to the internet, they allow a connection process between us (with internet) and users on communities (without internet). To sync with a nation, however, a community needs to be connected to the internet so that information can be sent in both directions.
- First of all, you have to access the BIOS. To do that, you need to reboot your computer and press the appropriate key while it’s booting. It is usually the "F2", "Esc" or "Delete" key. Once you have entered the BIOS setup menu, you have to search for an option called "Intel VT-x", "Intel Virtualization Technology" or something similar. Enable this option, save and reset.
- If Docker complains about virtualization, refer to this help article on Docker Docs.
- Please make sure you’re using Firefox or Chrome. To get the “Submit” button to show up, try logging out of the Planet and logging back in, then go back to the survey. If that doesn’t work, log out of the Planet, restart the planet services in docker (
docker compose -f planet.yml -p planet restart
in the directory where the docker compose file is located), log in, and check the survey again. If you’ve tried these steps and it still doesn’t work, let us know in the Discord server.
- Because a Community is run locally on your machine, you need to run
docker compose -f planet.yml -p planet start
in the directory where the docker compose is located. You can then see if your Community is running by going tohttp://localhost:3300/
in Firefox. Go to127.0.0.1:2300/_utils
to see the CouchDB behind the Planet, and127.0.0.1:3300
to navigate the actual Planet user interface.
- Check if Docker Hub Registry is operational by looking at Docker Systems Status Page.
Q16: I named my repo incorrectly by not naming it <YourUsername>.github.io, can I rename it or do I need to delete it?
- Yes it is possible to rename it but we highly recommend you to delete and start over so that you have a clean forked repository. Navigate to the misnamed repo and click the settings tab or enter
https://github.com/<YourUsername>/<Your-Misnamed-Repository>/settings
in your browsers URL bar. Next, scroll down to the Danger Zone section of the settings and click 'Delete this repository'. Read the warnings and then type in the name of the repo to confirm.
- You have a few options:
-
If you are still using it and you don't want to overwrite it, you can go to the forked repository settings rename the repository to
<YourUsername>-ole.github.io
and then deploy it to GitHub Pages by selecting "master branch" in the repository settings under GitHub Pages. By doing that, you can access the forked OLE repository with this link<YourUsername>.github.io/<YourUsername>-ole.github.io/
. -
If you are not using the repo anymore you can delete it and then follow the First Steps.
-
If you are still using it and you don't want to remember another login, you can create an organization and name the forked repo <orgname>.github.io.
-
Q18: What if I accidentally resign my manager account, or delete my planet folder, how do I recreate my manager profile?
- Please follow the guide at Q20 to destroy the original planet docker services and start over.
-
Running two communities on the same machine is possible as long as their configurations (planet configuration folder, Docker Compose project name, port mappings, etc.) do not conflict with each other.
- If you will not run both communities simultaneously:
- Follow Step 3.1:
- In the section "Your OS - Run Planet Community with Docker," select a new directory when you reach
#create a dedicated directory
, e.g.,~/srv/planet1
for macOS/Windows or/srv/planet1
for Linux. - In the section
# download production docker compose yml file and rename it
, edit the.yml
file you downloaded. Replace the host path mapping under thecouchdb
andplanet
services'volumes
, e.g., change"~/srv/planet/conf:/opt/couchdb/etc/local.d"
to"~/srv/planet1/conf:/opt/couchdb/etc/local.d"
.
- In the section "Your OS - Run Planet Community with Docker," select a new directory when you reach
- If you want to run multiple communities simultaneously:
- In addition to the changes above, you'll also need to modify the Docker Compose
.yml
file's port mappings to avoid conflicts.
-
Warning: This will perform a full uninstall, removing the entire community you configured, including the database.
-
In your Linux/macOS terminal or Windows WSL Debian app / Git Bash:
# 1. Stop and remove containers, networks, volumes, and images # created with the `planet.yml` configuration file docker compose -f planet.yml -p planet down -v # 2. Remove the planet folder you created in Step 3.1 # Linux rm -rf /srv/planet # macOS or Windows rm -rf ~/srv/planet # 3. Follow "YourOS - Run Planet Community with Docker" in Step 3.1 again
-
After planet is up and running, follow Configure Your PlanetCommunity again, since your old community registration still exist on the nation side, please use a slightly different name for your configuration, e.g.
<YourGitHubUserName>-1
.
- Please follow "Restarting the Containers" under "Troubleshooting" in Configure Your PlanetCommunity.
- If it still does not work. Please follow the guide at Q20 to destroy the original planet docker services and start over.
The aim of the ‘First Steps’ is to introduce prospective interns to the software that they will be using, and make sure they are familiar with each. While each step goes into detail on the specific program(s) at hand, it can be easy at times to lose sight of the bigger picture. To that end, below is a brief synopsis of the primary tools you will be using/learning about in the first steps, and how they work together to empower our collaborative development environment.
We start off by learning about Planet, which is the learning tool that OLE uses to provide the educational materials and resources to its students. It is a lightweight digital Library that can be accessed through Local networks (’Communities’) and synced through the Internet (‘Nations’). To do so, we need to install a few software packages, Docker primary among them. We use Docker to initialize a Planet production environment on the local system. Then we access the Planet interface locally and create our own communities/nations.
The other two tools we focus on are GitHub and Markdown. Similar to how we use Docker to standardize the development environment for each developer, we use Git/GitHub in order to centralize the development process and enable greater collaboration and teamwork. Git is a revision control system that allows many users to simultaneously edit and develop the same projects, and GitHub is a website/hosting service that utilizes the git system and hosts the git repositories we work on. Markdown, on the other hand, is a style of formatting text native to GitHub and thus used in the Virtual Intern program. Markdown simplifies formatting and emphasizes readability, helping coders focus on content, and not get bogged down in syntax.
To sum up, the primary software/tools we cover in the 'First Steps' are Planet, Docker, Git/GitHub and Markdown. Though not immediately apparent, the tools we use are all unified by a common purpose. Each bit of software we use is chosen in an effort to promote collaboration. The use of Docker mandates that each instance of Planet is the same, making sure that all developers utilize the same system. Markdown simplifies the development process, as each piece of code must comply with its syntax, increasing clarity for all users. Finally, GitHub serves as the last piece in the puzzle, as it takes advantage of the standardized development environment that Docker provides, as well as the streamlined syntax of Markdown to allow for easy collaboration.
It can often be challenging to see the 'Big Picture', and it’s easy to lose sight of it when focused on individual tasks. With that said, hopefully this synopsis has shed light on the importance of the process, and shown that each step is not an isolated assignment, but rather part of a greater task.
Category | Link |
---|---|
Command line | List of command line commands |
Docker | What is Docker? |
Docker Concepts | |
Docker Overview | |
Docker Compose | |
Docker CLI Command | |
Docker Installation | |
GitHub and Markdown | GitHub and Markdown Short Tutorials |
GitHub Help | |
Git Cheat Sheet (PDF) | |
Understanding Git and Github (Video) | |
GitHub First Steps | GitHub's Git Tutorial |
Git-it Workshop | |
Codecademy's Learn Git Course | |
GitHub Intermediate | Git Immersion |
GitHub Advanced | Git Pro (Book) |
GitHub Tips | |
Oh, Shit, Git | |
Git Workflow | Git Workflow - High Level |
Git Workflow - High Level, Short | |
Feature Branch Workflow | |
Markdown | Markdown Syntax |
Markdown Cheat Sheet (PDF) | |
Markdown Editor | |
Planet | Configurations |
General | |
Vi/Vim | Vi Cheat Sheet (PDF) |
VIM Adventures Game for beginners | |
Interactive Vim Tutorial | |
HTML | HTML5 Tutorial |
HTML MDN DOCS | |
CSS | CSS Tutorial |
CSS MDN DOCS | |
JavaScript | JavaScript Tutorial |
JavaScript MDN DOCS | |
ES6 | ES6 Tutorial |
Angular | Angular Tutorial |
RxJS Doc | |
TypeScript | TypeScript Tutorial |
CouchDB | CouchDB Tutorial |
- Git & GitHub Tutorial for Beginners (Playlist)
- Shorter Git/GitHub Tutorial (Playlist)
- Mastering Markdown (Playlist)
- How to Manually Fix Git Merge Conflicts - Please note that this video will explain how to fix a merge conflict from the point of view of the repo owner who is trying to merge a pull request. However, it is helpful also when you have to fix a merge conflict on your own local and forked repos.