“Welcome to Sandbox!”

On My First Semester As Part of Northeastern’s Student-led Software Consultancy

Krish Sharma
sandboxnu
5 min readMar 24, 2020

--

sandboxnu.com

“Welcome to Sandbox, Krish!” and a flurry of friendly, vibrant, and excited emoji reactions right below is what I was met with when I joined the Slack and the warm, welcoming Sandbox community. I can confidently say that the level of energy and sense of unity among the members of the organization has only grown during my first semester as a part of Sandbox. In my experience, that’s an important distinction from being “in” Sandbox. When you join Sandbox, you become a member of a community of software developers that each have their technical expertise, non-technical interests, and unique passion for leveraging software to make an impact. As such, this article will focus on the first of two key parts of Sandbox: the project development experience and the Sandbox community.

📈 The Signaligner Project

This semester, I was fortunate enough to be a developer on the Signaligner Project (a.k.a. “Project Visualizer”) that Sandbox is working on in conjunction with the mHealth Group at Northeastern led by Professor Intille and Professor Cooper. The goal of the project is to provide researchers with an interface for visualizing raw accelerometer data, utilities to sync images from the corresponding video, as well as annotate patches of data with activity labels. This semester, our work focused on integrating labeling with video syncing in order to display video frames of relevant footage to streamline the data labeling process. For example, our platform would display a stove from the video footage so a researcher can easily label the corresponding frequent but low magnitude signal in the accelerometer activity data as “Cooking”.

A typical week as part of Sandbox began with each team member sending a quick rundown of that week’s progress in our project’s Slack channel so that the rest of the team is aware of the status of active deliverables. In addition to sending updates, the groups project management board (e.g. Trello or Notion Page) will be filled in and updated with the deliverables for this week with teammate(s) assigned to each task. Organization among all teammates was critical for us internally but also in the context of working with our client. In contrast to Fundies assignments where you only have to be on the same page as your single partner, making sure your three to four teammates are on the same page requires centralization and a commitment to keeping one another updated which we accomplished through our project management board and scheduled update messages.

🤔 Discussion, Deliberation, and Development

During the week, our team would meet a few evenings for one to two hours to pair program together and have each other available for design and technical questions as we progressed through our goals for the week. At each stage of the project, we would discuss design choices, optimizations, and learn new techniques together as we worked through our tasks.

The paragon example of this was when it came to deciding how we wanted to structure video frame queries in order to properly sync them with the accelerometer data and display them at the correct position — we spent a total of three meetings simply discussing the best approach. After numerous discussions of potential usages, required information, and feasible formats, we combined all of our criteria that the data structure had to satisfy to reverse engineer a representation that would be compact, logical, and sufficient for our implementation. While this process allowed us to come up with a solution for our problem, it also enabled each of us to learn from one another with one team member pointing out an issue with JavaScript being incapable of reading the filesystem, another suggesting an abstracted representation of references to the correct frame, while our team lead organized our requirements into categories. In my experience, it is this very collaboration that makes Sandbox so special: you get to work together and think aloud about solutions to solve a problem but in the process, you come away with a deeper understanding of the concepts you knew before as well as exposure to brand new programming topics and techniques.

In addition to meeting as a team, we would work on our weekly goals on our own time while still collaborating through Slack messages and video calls. On Sundays, during the Sandbox-wide organization meetings, each team would break off to finish that week’s deliverables and begin to map out the objectives for the coming week. The amount of planning and progress tracking elucidates the holistic software engineering project management in which every team member has a role and the benefit of learning the process to develop transferable skills and knowledge to future projects, internships, and classes.

📝 Takeaways

From a technical standpoint, working as part of a team on code that will be used in production provides insight into the importance of design principles that serve as the foundation of our CS education at Northeastern. Each choice from a method/function to data structure design has huge implications on how the code built on top of that implementation is carved out as part of the larger codebase. Simultaneously, when developing such a large project for a client with multiple teammates, the collaboration encourages proper readability across tens of thousands of lines of meticulously integrated code through pull requests and peer reviews.

While both clients and our self-imposed deadlines push us to develop large amounts of high-quality code, being part of a Sandbox project is an incredibly rewarding experience for one’s technical toolkit. As someone with a background that is strictly backend development, by working on the Signaligner project and having to develop a locally served web-client, I was able to learn the fundamentals of web development, graphics frameworks, and server integration, domains of computer science I otherwise would have explored on my own smaller-scale projects or in class. Often, I would reach out to my project lead and more senior members of my team for design help and issues with correctly fulfilling requests to the server for certain data. Yet, even as a junior member, I was able to contribute to the team’s technical abilities with my background in and understanding of Python’s quirks and features.

🌼 Founded on Our Values

Each of these interwoven aspects of the Sandbox project development experience form the foundational values of the organization: Be Kind, Learn Together, and Make an Impact.

Regardless of seniority, every teammate is open to learning from one another, contributing to the design choice discussions, and, of course, writing code. Even in disagreements, the conversations are civil, productive, and constructive to encourage effective decision making without bringing down other teammates. Our highly collaborative approach allows us to both learn from one another and learn topics brand new to the whole team together, enabling us to fill in gaps in each other’s understanding and use our unique technical backgrounds to augment each other’s understanding. The culmination of the meetings, discussions, and coding is the impact we are able to make by developing software that will positively impact the daily activities of researchers, students, and academic programs.

Yet, all of this is just one part of the Sandbox organization, the community that produces the software is what makes everything we do possible — more on this next time. :)

--

--

Krish Sharma
sandboxnu

Data Scientist and Applied Machine Learning Research Student at Northeastern University