Skip to content

Latest commit

 

History

History
214 lines (147 loc) · 22.7 KB

vi-faq.md

File metadata and controls

214 lines (147 loc) · 22.7 KB

FAQ

General Internship Questions

  • 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?

Technical Questions

  • 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?

General Internship Questions

Q1: What will I be working on during this internship?

  • 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.

Q2: What kind of software will we be using for this internship?

Q3: Where can I find more information about this internship?

  • More information about the internship can be found at the OLE's Virtual Software Engineer Intern listing on your university's Handshake site.

Q4: What are the hours of the internship?

  • 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.

Q5: Is this a paid internship?

  • 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.

Q6: What happens after the initial steps?

  • 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.

Q7: If I'm an international student, how soon can I get my paperwork required by my visa?

  • 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.

Q8: How many pull requests and issues in total do I need to make to finish the steps?

  • 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.

Q9: How long do I have to complete these steps?

  • 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.

Q10: How can I keep track of 10 steps vetting progress?

  • You can keep track of your progress using the tracker here link.

Technical Questions

Q11: What is the purpose of Nations and Communities, and how do they work together?

  • 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.

Q12: How can I enable virtualization on my computer in order to run Docker?

  • 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.

Q13: Why is the "Submit" button not showing up when I try to submit my survey?

  • 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.

Q14: Why does my browser say “Unable to connect” when I try to load my Community?

  • 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 to http://localhost:3300/ in Firefox. Go to 127.0.0.1:2300/_utils to see the CouchDB behind the Planet, and 127.0.0.1:3300 to navigate the actual Planet user interface.

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?

  • 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.

Q17: What do I do if I already have a github.io with my username?

  • You have a few options:
    1. 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/.

    2. If you are not using the repo anymore you can delete it and then follow the First Steps.

    3. 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.

Q19: How can I run two communities on the same machine?

  • 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.

    1. 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 the couchdb and planet services' volumes, e.g., change "~/srv/planet/conf:/opt/couchdb/etc/local.d" to "~/srv/planet1/conf:/opt/couchdb/etc/local.d".
    1. 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.

Q20: How do I destroy planet docker services and start over?

  • 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.

Q21: What do I do if I cannot create a dummy account?

  • 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.

'First Steps' Software Summary

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.

Helpful Links

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

Helpful Videos