About this Project


Google Summer of Code Program is a program that pairs undergraduate students with opensource organizations to write open-sourced code. I was accepted in the summer of 2019 to work for LabLua to build a Lua Package called "Apolo." Apolo is a lua extension with bash shell utilities. It uses Lua's backend of C with Operating System APIs to implement advanced bash functions into Lua. At the beginning of the summer, it only included commands for file traversal and copying. Over the summer, I built commands for piping, file I/O redirection, and background process management.

Improvements to the package:

  • Eval command that redirects a bash command’s output stream to the return value (see !8)
  • I/O direction to set the input and output of a command to local files
  • Building pipes between multiple processes
  • The ability to start background processes
  • Basic functions for background processes, including suspend(), wait(), terminate(), kill(), status() and exit_code().
  • Full suite of tests for all of the above

Every organization pairs accepted Google Summer of Code students with a mentor, who manages the code-base and supports the student in any way they can. I met with my mentor once a week. He helped me understand what was expected, what needed to be done first, and whether my current solution was good. He reviewed my PRs (pull requests) and taught me to be consistent with my coding conventions. The Google Summer of Code program taught me the value of having a mentor, and how important it is to be learning from someone better than you, because there will always be someone better than you. This program focused my goals in an entry-level job and gave me a vision for my own skills as a programmer to take with me to my campus. It taught me how much I have to learn, and how much I am doing now that I can improve.

Technical Sheet

Code technologies I handled while working on this project


  • Lua
  • C (MinGW)
  • Makefiles
  • OS-specific features (Windows and POSIX API)
  • WSL (Windows Subsystem for Linux)

Resources