Skip to content

Latest commit

 

History

History
225 lines (155 loc) · 23.9 KB

vi-faq.md

File metadata and controls

225 lines (155 loc) · 23.9 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?
  • Q11: When does the internship start?

Technical Questions

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

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.
    • Planet: A learning management system designed as a Progressive Web App using Angular and CouchDB.

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

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 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!

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

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

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

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

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

Q11: When does the internship start?

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

Technical Questions

Q1: 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.

Q2: 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.

Q3: 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.

Q4: 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.

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?

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

Q7: 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.

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.

Q9: 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.

Q10: 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.

Q11: 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 Q10 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