- 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: When does the internship start?
- Q1: What is the purpose of Nations and Communities, and how do they work together?
- Q2: How can I enable virtualization on my computer in order to run Docker?
- Q3: Why is the "Submit" button not showing up when I try to submit my survey?
- Q4: Why does my browser say “Unable to connect” when I try to load my Community?
- Q5: When I first run Planet with the "docker compose up -d" command, why does the download fail?
- Q6: I named my repo incorrectly by not naming it <YourUsername>.github.io, can I rename it or do I need to delete it?
- Q7: What do I do if I already have a github.io with my username?
- Q8: What if I accidentally resign my manager account, or delete my planet folder, how do I recreate my manager profile?
- Q9: How can I run two communities on the same machine?
- Q10: How do I destroy planet docker services and start over?
- Q11: 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.
- Planet: A learning management system designed as a Progressive Web App using Angular and CouchDB.
- 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 for at least 3 months.
- The 3-month commitment is necessary because the onboarding process typically takes 2–4 weeks, leaving about 2 months for productive work. During the final month, you should think about passing along your knowledge to newer interns.
- The 24-hour minimum commitment per week is necessary due to the fast-paced nature of our work, which can make it challenging 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 US Eastern Time. During this time, you can hear about ongoing projects, share your screen, ask questions, discuss challenges, and collaborate on issues. While some tasks can be done offline and outside of the virtual office—especially during unstaffed hours—we generally expect you to be present there for most of your work time. If you find the virtual office too distracting, please discuss this with us.
- 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 designed to introduce potential interns to the OLE Planet, its software, and the process we use to develop features and improve the Planet. To clarify: the first 10 steps serve as a vetting process to assess whether candidates are a good fit for the internship, so consider it part of the interview. Once you complete the 10 steps, are approved, and have had a meeting with us, you will have officially joined the OLE interns team!
- Since the First Steps serve as a vetting process, your internship technically doesn't begin until you complete them and have the initial meeting with us. Think of the first 10 steps as part of the application process; you're not working on or contributing to our organizational software, but rather demonstrating that you have the technical background needed to work with us. After completing the first 10 steps and during our initial meeting, let us know if you need us to sign any paperwork, provide organizational information, or issue an offer letter for visa compliance, and we'd be happy to assist.
- 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 you can work on your own time. However, please note that most people who continued into the internship program completed the steps within 1-2 weeks.
- You can keep track of your progress using the tracker here link.
- When we have an active job posting and invite you to the First Steps, we primarily seek interns who can start immediately after completing the steps and having a meeting with us.
- If you're interested in an internship for a future semester or summer, please let us know in the Discord channel so we can stay in touch. We recommend checking back in the channel about a month before your intended start date to confirm if the internship program is active. If it is, you can then begin the First Steps process. This ensures you are following the most up-to-date version of the First Steps.
- If we have more qualified virtual interns completing the first steps than we can accommodate at one time, we may request during the initial meeting that you start the internship in 1-2 months, if that works for you.
- 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.
Q6: 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.
-
Q8: 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 Q10 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 Q10 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.