Hello! My name is Boshen. I'm a fifth year Computer Science and Business Administration student at the University of Waterloo and Wilfred Laurier University.
I'm an avid programmer, and I've developed apps for various platforms, including the Amazon Echo, Android, and on the web.
Previously, I've worked as a software engineering intern at Datadog, a web developer intern at Formlabs, a software developer intern at Polar, and a support and marketing intern at QuickTapSurvey. I've also done 2 Undergraduate Research Assistantships at the University of Waterloo, and worked as a part time software developer intern for Polar after my internship.
When I'm not being brutally beaten down by schoolwork (that was a joke), I like to cycle, paddle, read, and work on interesting projects (i.e. fiddle around with random APIs) that I have in mind. I've done bike trips from Toronto to Detroit and Montreal, and paddled for Waterloo at the 2019 Canadian National Dragon Boat Championships in Regina.
I'm currently looking for a software development internship for the Winter 2020 (January - April) season, and a full time job post graduation (September 2020 and onwards).
University of Waterloo
I did a second undergraduate research assistantship during my 3B term under Prof. Mei Nagappan, doing work on defect prediction and analysis in software codebases. Under Prof. Nagappan's tutelage, I explored using Bayesian networks (BNs) to analyze and predict where bugs are likely to appear in a codebase based on various other metrics collected on the codebase (e.g. code churn, lines of code, number of changes made, number of people involved with a specific file or class).
Working with the Eclipse IDE codebase changelog dataset, I used Python, pandas, Graphviz, and GOBNILP (Globally Optimal Bayesian Network learning using Integer Linear Programming), to transform and format the dataset to fit my needs, run experiments and generate candidate BNs, aggregate the results, visualize, and analyze them.
I used pandas to first modify the dataset to be compatible with GOBNILP - aggregating multiple files into a single dataset based on certain metrics, removing any unneeded columns, and discretizing columns into buckets based on how they were distributed in the dataset.
I then used GOBNILP "learn" and generate the optimal BNs based on these datasets, running various experiments based on how the data was aggregated. Then, using Python and Graphviz, I aggregated these results, visualized them, and compared the results between experiments and with results from other studies with Prof. Nagappan to draw conclusions.
As a web developer intern, I worked with the web team on Formlabs' portfolio of online offerings - from their printer dashboard web app to their storefront and other online tools - to improve the online experience of current printer owners, potential customers, and other teams in the company. I also created several process improvement tools for the web team to assist with deployments and testing, as well as worked on exploratory projects assigned to me by my team lead.
During my time at Formlabs, I was assigned several projects. Under the Django CMS main site, I created a CMS app for the PR team to create, edit, and publish press releases freely, which previously had to be done manually by the web team, and migrated existing press releases over to the new app, improving productivity and workflow for both teams. I also worked on our web storefront redesign, written in Django CMS, React, and Redux, and added additional data validation between the storefront and the actual php/magento web store.
I also worked on several UI tweaks, improvements, and bug fixes, in React, Redux, d3, and Django, for our online printer dashboard, which connected to a user's Form 2 Printers, allowing them to organize and track their prints. I also helped with feature requests & tweaks for the Form Cell dashboard, which at the time as being prepared for launch.
I was responsible for a complete rehaul of Formlabs' ROI calculator - a tool to help calculate potential time and money savings by switching to 3D printing. I completely redesigned the workflow, calculations, and UI, using React, Redux, and d3, as well as added new functionality to capture user emails and generate PDF reports using Python/Django. The tool is now being used by the marketing and sales teams to help assist with sales and lead capture.
I was also assigned several exploratory projects. I investigated a potential site migration from Django CMS to wagtailCMS, in which I set up a demo wagtailCMS site in Docker/Kubernetes, and presenting the differences, advantages, and disadvantages between the two systems, and what a proposed migration would entail, to my team lead.
I also worked on prototyping a Kafka data pipeline in Docker/Kubernetes to stream events from connected printers to the dashboard database, and wrote producer/consumer clients in Golang. This pipeline was expected to greatly reduce costs, and was in the process of being prepped to replace the current pipeline for the 10,000+ existing printers as I was nearing the end of my internship.
Finally, I developed several process improvement tools for the web team to use, in hopes of improving workflow and increasing productivity. I refactored our deployment process in Jenkins, Docker, and Kubernetes to be blue-green, reducing downtime and risks during code updates to the Formlabs site. I also scheduled regular site media backups to s3, using Jenkins. I created configuration scripts and a Jenkins job to quickly spin up dev VMs in Kubernetes, based on github branches, to allow the team to easily test new features/bug fixes, and set up an e2e testing framework in Kubernetes for the team to use.
University of Waterloo
As an undergraduate research assistant (URA), I worked with Dr. Xiaofei Zhang, under Prof. Tamer Ozsu, to improve the runtime of various graph analysis and profiling algorithms by using parallelization and multithreading techniques. I also designed and implemented a web app interface for the C++ program, which had previously only been accessible via command line, written in Django.
Dr. Xiaofei Zhang's project focused on analyzing the accuracy of various graph reduction algorithms (taking a large, complex graph, and creating a smaller, simpler graph by removing some edges & vertices, while still accurately reflecting the original graph), by comparing the values of various metrics (e.g graph diameter, distance between vertices, clustering) and their approximations between the reduced graph and the original. The previous URA had initially wrote a C++ program that implemented these reduction and profiling algorithms, however it tended to run too slowly to use on larger, denser graphs. Using Intel TBB, a C++ parallel programming library, I refactored the code to fully utilize a computer's cores, improving runtime on large graphs by 20x on a machine with 4 cores.
Under Dr. Xiaofei's suggestion, I also developed a web app to interface with the C++ program, to make it easier to setup, use, and run experiments. Using Django as a web framework, and Celery as a task runner, I created a web app in which users could upload graphs (in the form of adjacency lists), create "jobs" and select which algorithms/metrics they want to run, and run or rerun experiments on graphs. This proved to be significantly easier to use than the previous command line interface, increasing productivity, and decreasing the runtime per experiment.
As a part time software developer for Polar, I continued to work on UI improvement and backlog feature tickets for our client facing web app, written in Django and React, remotely, while continuing to attend university. I also worked on exploratory projects that the Product team assigned to me, as well as continued to assist with projects I had worked on during my internship.
As a front end software developer at Polar, I worked closely with the Technical Solutions, Product, and Engineering teams to deliver branded content solutions to our partners, using Django, React, native HTML/CSS/JS, and our Polar API. I also went above and beyond my original duties, and managed communications with three major partners after a full time member left. I received an Outstanding grade on my co-op evaluation, and was rehired as a part time Software Developer on the Engineering team.
I also worked on UI improvement and backlog feature tickets for our client facing web app, written in Django and React. Most notably, I implemented a new feature that showed the code diff between versions of ad serving scripts, so that users could review their changes before updating their scripts.
I also took over the Technical Account Manager role for three major partners after a full time member left. I managed all communication with these partners, handled implementation and maintenance requests, and drove weekly check in meetings with their Ad Ops teams.
I also worked on integrating Polar with the Apple iAds system. As part of this project, I integrated Polar’s image serving endpoint with Imgix, an image processing API, to create a smart cropping API to auto crop thumbnails to focus on faces.
As the support and marketing analyst intern, I had a broad spectrum of responsibilities - troubleshooting customer issues, finding and logging bugs, creating and updating content for various teams, and providing insight on marketing strategies.
I answered customer support tickets via Freshdesk. I had a 6 minute average response time, nearly 3 times faster than the expected 15 minutes. During my time there, I answered over 1400 tickets, receiving only one “Not Good” rating. I was also responsible for managing the helpdesk article content. I proofread and edited articles based on customer feedback, as well as updated articles between product releases.
I also researched our competitive landscape to present to the co-CEOs. I found, analyzed, and presented the strengths, weaknesses of our main competitors, as well as potential areas of opportunity for the company to expand on.
I designed graphics such as custom survey backgrounds, blog post, help center, eBook, and email newsletter visuals using Adobe Photoshop, InDesign, and Illustrator. I also created content such as demo surveys and templates for use within our app, as well as monthly demo videos and help center videos in Adobe Premiere for our Youtube channel. In addition, I updated our marketing website using HTML, CSS, PHP, and git.
I also helped the QA team with regression testing between releases, and documented bugs in production in Axosoft. I created a new system to document crash reports sent in by customers, analyze them and create visuals based off them so that the dev team can pinpoint and fix flaws in the product.
At my time at QuickTapSurvey, I also created a translation web app for our support and sales team to use. Using Google’s translate API, I created a web app that streamlined the process of translating and responding to emails from non-English customers. My app ended up cutting down the response times by approximately half, and was adopted for use by the entire team.
The Reckoner of Marc Garneau
I was part of the web development team for our high school newspaper, The Reckoner. As a web developer I was responsible for managing the website files, content, and user accounts within WordPress. I optimized our website by resizing existing images, improving our loading time. I also helped redesign the website layout using CSS, and assisted with the subsequent relaunch.