UBC Launch Pad Year in Review (2018-2019)

šŸ’ the story of two semesters of student hackery

Robert Lin
UBC Launch Pad Software Engineering
11 min readMay 10, 2019

--

Launch Pad is a student-run software engineering club where students form team to develop a project from ideation to (hopefully) completion over the course of several semesters. šŸ¤–

When working on projects like this, itā€™s easy to forget how far youā€™ve come. Unlike a hackathon, where you spend 24 to 48 hours to hack a small app together, Launch Pad projects are the product of months and months of continued iteration by teams of 4 to 8 developers and designers (and sometimes more!), and during this process, itā€™s easy to feel like you arenā€™t making much progress, especially if after a semester your project still feels like a barely functioning, buggy application. šŸ˜¢

However, juggling full university course-loads, friends, procrastination, job searches, and development of a Launch Pad project is no mean feat, especially when many of our members join us with very little experience. Now that the school year is wrapping up, I think itā€™s a great time to take a moment and celebrate everyoneā€™s accomplishments! Making things is hard, and doing it with a team is harder ā€” it takes time, you make a lot of mistakes along the way, and there is a lot to learn. Itā€™s awesome to see how far everyone has come in this brief span of time, and Iā€™m grateful to have had the opportunity to meet and work with so many enthusiastic and talented peers, especially those in our graduating class of 2019.

So here is a quick UBC Launch Pad year in review! šŸ¤— Each section will be pretty light on the specifics of what each project aims to do, but if youā€™re interested check out the linked project repositories!

(Unfortunately some of these summaries are a bit brief if I didnā€™t get to work very closely with the team, and also because I got a bit lazy šŸ˜“)

Almost 500 pull requests merged across all Launch Pad repos in the past 6 months! šŸ’ŖGraph generated by Pull Reminders, which unfortunately doesnā€™t provide data spanning the full 8 months of the past 2 semesters. šŸ˜¢

Pinpoint

šŸ“Š Versatile applicant management for any organization

Pinpoint is a tricky project. We opted for a stack none of the team were familiar with, and our choice of database ā€” DynamoDB ā€” was something we all struggled to get a grasp on. We also unfortunately faced issues with members disappearing as the semester went on. As a tech lead I also failed a little here I think, by setting up the project in a way that encouraged people to work on small components of the codebase (we didnā€™t end up working fast enough to justify this), and being a little too loose with our project specifications, which lead to more confusion than the productive brainstorming I had imagined šŸ˜…

That said, the team at Pinpoint put together 44 pull requests without me, spanning 9 contributors and an average of 31 commits each. We didnā€™t get a fully functioning project in the end, but we got pretty close ā€” most of the pieces are there thanks to the hard work on the projectā€™s most active members, and Iā€™m confident we can get it to a usable state. Everyone also got the chance participate in designing the user experience with our designers.

A member of Pinpoint (Srijon!) also produced a fantastic piece of artwork the night before our last demo that reflected a problem we had quite nicely:

Thanks guys šŸ˜¢

Inertia

āœˆļø Effortless, self-hosted continuous deployment for small teams and projects

Inertia is UBC Launch Padā€™s largest codebase by far, spanning over a year of work by over 15 contributors before this semesterā€™s team even got their hands on the project. A lot of it was written by me, and by that I mean a good chunk of the codebase was less than stellar.

A git diff burndown of Inertia over its 15+ months of development. Each coloured band represents code added in each time interval ā€” you can see that lots of code ends up getting replaced, signs that we were continuously iterating and improving on existing code as we learned. This semesterā€™s teamā€™s work is denoted by the blue bands, and indicates a significant amount of work on the existing codebase, so woo! This graph was generated using src-d/hercules.

Getting a pull request in for Inertia can be a bit of a daunting task ā€” with over 13,000 lines of code across 36 ā€œpackagesā€, the projectā€™s scope is very difficult for inexperienced members to manage. Inertia also depends on pretty intimate knowledge of Golang and Docker, and the problems it aims to solve donā€™t have particularly straight-forward solutions. The project is also surrounded by a lot of intimidating tooling, leveraging custom test environments, some code generation tools, and more.

So Iā€™m super proud that most of this semesterā€™s team managed to learn a bit about the technologies that Inertia leverages, stay engaged throughout the development process, and contribute pull requests of their own that will allow us to build more features for Inertia in the future! As a lead Iā€™ve always struggled with onboarding members for this project, but I hope that everyone in the team got something out of their work.

Rocket 2

šŸš€ Slack bot, team management, and onboarding system for UBC Launch Pad

Internally at UBC Launch Pad, team creation, management, and onboarding is managed by a bot we call Rocket. The initial iteration of the bot has proved a bit difficult to build on, and quite buggy, so this semester a team set out to rebuild it from scratch using a new tech stack, best practices, well-defined documentation, and a better architecture.

The Rocket 2 team has proven to be one of this yearā€™s most active teams, accumulating almost a thousand commits and making significant progress laying the foundation for the future of Launch Padā€™s beloved Slack bot.

Bounce

šŸ€ Bringing people with common interests together

Over the course of the year the ā€œBounceā€ team has certainly come a long way. Most of the team started with limited knowledge of web development and the languages, tools, and frameworks we were using to develop our application (Python, React, Postgres, and Docker).

As is often the case, the idea was simple, so we figured the implementation shouldnā€™t be that difficult. Of course, we were mostly wrong about that.

ā€” Bruno, Co-President and ā€œBounceā€ Tech Lead

In an attempt to flatten the learning curve, Bruno (the teamā€™s lead) tried an to get each member to start working exclusively on one part of our project ā€” either the frontend or the backend. However, as time went on he realized that developers would often design their features without a true understanding of how they would be used by other components of the project simply because theyā€™d never worked on other components of the project.

The ā€œBounceā€ web app looking crisp, despite the teamā€™s hurdles! šŸ’‡ā€ā™‚

Although they didnā€™t achieve all of their end goals, they still wrapped up the semester with an application that was at least partially complete, and made two impressive demos during the semester that demonstrated their progress. And at the end of the day, what matters is most is what you learn, as Bruno puts quite aptly:

Most importantly, however, I am confident that each member of the team acquired valuable high-level web development knowledge and gained familiarity with industry standard tools and languages that theyā€™ll likely use in the future.

Room8

šŸ  A roommate organization mobile app

Room8 is a roommate organization platform on Android. The app will allow roommates to organize themselves into a group and assign tasks to each other. The app itself will assist them in creating a schedule and rotating tasks for each roommate.

Being a team thats mostly made up of first years, itā€™s pretty good that people came and taught themselves a new platform and also helped each other grow.

ā€” Sam, ā€œRoom8ā€ Tech Lead

Check out the project and some screenshots in more detail on their GitHub repository!

Soil TopARgraphy

šŸŒ± Android app that teaches soil science students in APBI 200 through augmented reality (AR)

Soil TopARgraphy is an app that allows users to view topographical distribution of different soil types through an Augmented Reality (AR) terrain. It was developed to help students in the UBCā€™s APBI 200 ā€” Introduction to Soil Science course and other soil-related courses, learn about the effects of topography on the formation of different soil types in an immersive and visual manner.

Using augmented reality, different soil orders are shown within one real-life terrain across different parts of topography. We chose an area just north of Kamloops, British Columbia as an example of the terrain model since the region is characterized by a great diversity of soil types.

More details about the app is available on the project website. Soil TopARgraphy is also available on the iOS App Store and the Google Play Store ā€” links below!

Members of the Soil TopARgraphy Team showing off their work at the Multidisciplinary Undergraduate Research Conference (MURC) šŸ“š

Internado

šŸŒŖ Find Internship Opportunities

Internado (arguably) had a bit of a head start on the other teams, with 10 relatively experienced student web developers. They were one of the first teams to deploy a website you could actually visit, so getting started clearly wasnā€™t an issue: https://internado.ubclaunchpad.com/

That being said, several parts of our tech stack were new to the team. Everyone had very little experience with PostgreSQL, Semantic UI, and Docker, so related development took some time. They also faced issues with some of their decisions:

There are a few parts of our process we couldā€™ve improved. First, the eternal problem of feature creep. There are still a few features we havenā€™t managed to implement. We also chose to go with a microservices architecture, dividing search and auth into separate services because we thought weā€™d add even more additional services later. It turned out to be unnecessary ā€” we didnā€™t need any more services ā€” and made deployment harder.

ā€” Sherry, Co-President and ā€œInternadoā€ Tech Lead

However, the team was great about sharing learning resources and working together and they were able to build the project relatively quickly while still allowing everyone to learn new skills, which was very impressive! Great job everyone! šŸ‘

(though as Sherry pointed out to me, yā€™all could use a few more tests šŸ˜‰)

Mimic

šŸ’¬ Mimicking text for great fun and delight

Mimic was this yearā€™s only machine learning project. The team aimed to build a project that was a mix of experimenting with machine learning techniques, data wrangling, and developing a service. Mimic mimics the style of a given corpus to generate text.

They ended the semester with a neat demo that demonstrated how Mimic could generate text based on a corpus of Shakespeare plays or Trump tweets, which was pretty neat! Check out their repository for more details.

Mikado

šŸ§³ Organize your next adventure

Mikado is this yearā€™s only iOS team. Unfortunately, delays in our interview process, bad timing with various holidays, and Appleā€™s WWDC sponsorship applications meant that the team did not get very far with the project. Thereā€™s a bit of code and concepts in the repository, however, and hopefully the team will be back next semester to tackle the idea again!

They have a nifty website showing off the appā€™s concept: https://ubclaunchpad.github.io/mikado/

Design

Updated Launch Pad branding and colour scheme for 2018ā€“2019

This year, we decided to recruit a larger team of designers who could work together and help each other out (since in the past, designers have simply been embedded in the developer teams and left on their own šŸ˜¢). Many members of the team joined us without a strong background in UI/UX, and most have never worked in design as a team before.

some of the designers came up with this new UBC Launch Pad gang sign, which youā€™ll see in many of our group photos šŸ”ŗšŸ¤‘

Despite the hurdles, the new design team did some awesome work this year, ranging from learning to use the design tool Figma, branding updates (see above), marketing material and banners for events like Project Hub, designs and assets for projects with a user-facing interface, an amazing new sponsorship package (our previous one was a simple Word documentā€¦), a new gang sign, and more! šŸŽ‰

A huge part of this is thanks to Jenny, the super-talented design lead and incoming co-president of UBC Launch Pad! šŸ’Ŗ

Many, many iterations of the upcoming new ubclaunchpad.com šŸ˜…

Strategy

Strategy at UBC Launch Pad has always been a tricky role ā€” as a club, we are a bit of a tough sell for potential sponsors, since we focus on providing a long-term and supportive learning environment that doesnā€™t draw the same sorts of numbers and audiences that (for example) a hackathon does. Given what they had to work with, this yearā€™s strategy team did a stellar job, streamlining their workflow, documenting their progress, and reaching out to potential partners. They also did a lot of great work in gathering statistics and potential selling points for the design team when creating the new sponsorship package.

An impressive spreadsheet strategy member Max put together from a script I wrote in preparation for this yearā€™s sponsorship package šŸ˜²šŸ“ˆ

Thanks to their work, we were able to push for a number of new initiatives this semester, such as sponsored team lunches and events like Project Hub!

Other Shenanigans

We do lots of other stuff too! Check out our Instagram, where we post some of the other fun activities we do together, such as competing in Storm the Wall and the Vancouver Sun Run, going to the CSSS cruise, board game nights, and more!

the Launch Pad team out and about! šŸ‘‹
ā¤ļøšŸš€

We do a round of recruiting at the start of most semesters ā€” keep an eye out on our social media if you are interested in joining us! Also feel free to get in touch by coming to our events or shooting a message on our Instagram and Facebook profiles. šŸ“¬

ubclaunchpad.com ā€” UBCā€™s leading software engineering club.
Stay in touch: Facebook | Instagram | LinkedIn

--

--