- 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 turn Vagrant on?
- Q13: Why is the "Submit" button not showing up when I try to submit my survey?
- Q14: Why does Firefox say “Unable to connect” when I try to load my Community?
- Q15: When I first run Planet with the "vagrant up" command, why does the download fail?
- Q16: I named my repo incorrectly by not naming it <username>.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 do I do if I am on Unix/Mac/Linux and accidentally give root permissions, corrupting the installation of the Vagrant VM?
- Q19: What if I accidentally resign my manager account, or delete my ole--vagrant-vi folder, how do I recreate my manager profile?
- Q20: What do I do if I get the error message "A Virtual Box machine with the name 'vi' already exists"?
- Q21: How can I run two communities on the same machine?
- Q22: How do I destroy the Virtual Machine and start over?
- Q23: 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.
- As a part of this internship, you will be working with software and languages including Git, GitHub, Gitter, Markdown, Vagrant, VirtualBox, Command Line/Terminal, Command Line/Terminal Scripts, Vim, CouchDB, Docker, HTML5, JavaScript, Node.js, and Angular.
- More information about the internship can be found at the Virtual Software Engineer Intern listing here.
- This is an intensive internship that requires 16 hours of work each week. Work with your fellow interns and keep us updated in the Gitter chat.
- The reason we have a 16 hour minimal commitment per week is that things are moving forward quickly and it might be hard for virtual interns to catch up with changes. Basically, we would have a few hours of Google Hangout sessions per week where everyone shares their screen, discusses problems, and works on issues together. Then the rest of the time is for catching up with the changes and working on issues assigned.
- This position is unpaid, but it will provide a diverse range of experiences in the workplace. We can provide a certificate of completion, upon request. Also, academic credit can be provided through your institution (if applicable).
- 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 Gitter chatroom 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 Tracking Progress 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. Now the "vagrant up" command should work.
- Please make sure you’re using Firefox, as our Planet software is only guaranteed to work in Firefox. 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, shut down the vagrant machine (
vagrant halt
in the directory where the Vagrantfile is located),vagrant up
again, log in, and check the survey again. If you’ve tried these steps and it still doesn’t work, let us know in the Gitter chat.
- Because a Community is run locally on your machine, you need to
vagrant up
in the directory where the Vagrantfile is located. You can then see if your Community is running by going tohttp://localhost:3100/
in Firefox. Go to127.0.0.1:2200/_utils
to see the CouchDB behind the Planet, and127.0.0.1:3100
to navigate the actual Planet user interface.
-
You should first check if Vagrant Cloud is up and running by looking at HashiCorp's status page:
If Vagrant Cloud is operational, then maybe your download is being interrupted, you can try to download and set up the big Vagrant box file manually:
-
Go to this Vagrant Cloud Box page.
-
Click on the last version's (the uppermost) version number.
-
Add
/providers/virtualbox.box
to the page link you have been redirected to and click 'Enter' to start the download via your browser, or copy the link and paste it in your preferred downloader, preferably one that has pause/resume functionality. -
After you download the box, run the following commands while in your
ole--vagrant-vi
directory. Also, include the correct path to the box you just downloaded:vagrant box add ole/jessie64 /path/to/vagrant-box.box vagrant init ole/jessie64 vagrant up
You now have a working community Planet on your OS.
-
Q16: I named my repo incorrectly by not naming it <username>.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/YOUR-USERNAME/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 do I do if I am on Unix/Mac/Linux and accidentally give root permissions, corrupting the installation of the Vagrant VM?
- Please follow the guide at Q22 to destroy the original virtual machine and start over.
Q19: What if I accidentally resign my manager account, or delete my ole--vagrant-vi folder, how do I recreate my manager profile?
- Please follow the guide at Q22 to destroy the original virtual machine and start over.
Q20: What do I do if I get the error message "A Virtual Box machine with the name 'vi' already exists"?
-
There are 2 potential solutions:
-
Use
VBoxManage list vms
to find out the name and ID of the virtual machines. Copy the ID of the desired VM into the contents ofole--vagrant-vi/.vagrant/machines/default/virtualbox/id
. Save the change and runvagrant up
again. For more information, check out Vagrant Issues #6623. -
Delete the "vi" VM in VirtualBox or command line, then run
vagrant up
to start over again.
-
-
Running two communities on the same machine is possible as long as their configurations (VirtualBox name, port forwarding, etc.) does not collide with each other.
-
If you want to run multiple VMs together, you need to change the vagrant file as instructed in multi-machine.
-
If you will not run those two communities at the same time:
-
clone
ole--vagrant-vi
again and name the folderole--vagrant-vi-1
:git clone https://github.com/dogi/ole--vagrant-vi.git ole--vagrant-vi-1 cd ole--vagrant-vi-1
-
change line 24 of the
vagrant
file
``` vb.name = "a_different_name" ```
-
-
In
git bash
:# remove existing VM and Vagrantfile vagrant global-status vagrant destroy [virtual_machine_name] rm -rf ole--vagrant-vi # clone again to start over git clone https://github.com/dogi/ole--vagrant-vi.git cd ole--vagrant-vi vagrant up
-
Note: Before trying the steps below, make sure your planet is up to date.
Open your
Terminal
and make sure youcd
to the designated OLE directory you created earlier.cd planet git pull
Then,
vagrant halt prod vagrant up prod.
If it still does not work please follow the steps below. Assuming you are already in the planet directory,
vagrant ssh prod cd /vagrant sudo rm -rf node_modules/* sudo npm install --unsafe-perm
If this too does not work.
cd planet vagrant destroy prod
Please follow the instructions here to reinstall planet. (Note: After planet reinstallation, you will need to register as admin a second time as you did in step Planet Configurations. However, you cannot use the same "Name" in Set up Configuration step because that "Name" already exists. You may instead use YourName01 or add any other number you like at the end of your original "Name". This should allow you to register as the admin and log in your community planet. Also, the 3 resources you uploaded to Library, the Virtual Intern course you added to myCourses, and all your progress in the Virtual Intern course will be gone.)
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, Vagrant and VirtualBox primary among them. We use Vagrant (a development environment builder), in conjunction with VirtualBox (virtual machine software) to initialize a Planet environment on the local system. Using this virtual environment 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 Vagrant and VirtualBox 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, Vagrant, VirtualBox, 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 Vagrant and VirtualBox 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 Vagrant/VirtualBox 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.
- What is Docker?
- Docker Concepts
- Docker Overview
- Docker Compose
- Docker CLI Command
- Docker Installation
-
General
-
First Steps
-
Intermediate
-
Reference/Advanced
-
Git Workflow
-
Markdown
- GitHub & Git Foundations (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.
- How to Use VirtualBox
- Vagrant Tutorial