I have been working in the MacCoss Lab since October 2013. I work with a team of 6 developers on an open-source software called Skyline. Skyline is a freely-available Windows applicatiopn for building methods and analyzing resulting mass spectrometer data. Working in a mass spectrometer lab allows us to work with researchers to create the best possible application that is constantly updated to support the quickly growing and evolving field.
My job in the lab is broad. I work on everything from graphic design projects, full stack web development, to desktop C# software development.
- Designing a nice start page with quick access to commonly used features and recent files.
- Implementing an on build code inspection using Resharper's code inspection api.
- Adding a better error reporting features.
- Unit testing and updating our internal testing and reporting framework.
- Creating charts and visualizations.
- Creating a tool to run live quality control on data from a mass spectrometer using MSstats.
You can learn more about skyline at skyline.ms.
My first big project working for the Skyline team was to create a web database for our external tools. External tools are tools that anyone can create that "add" to Skyline's functionality. These tools use Skyline's api to fetch data from the user's project and do anything they want with it. The tool store give tool creators a nice web interface to modify, version, or add to their tool. It tracks downloads, keeps a version history, and most importantly connects seamlessly with Skyline on the desktop. Users can install tools straight from the store in Skyline, see when their tools have updates, and discuss with the tool owners issues or questions that they may have.
Along with building a user interface for users to add external tools I have also helped create external tools for many companies and labs that use Skyline. People often want an seamless way to integrate their own softwares with Skyline, and Skyline's tool framework makes it easy to do that.
Web development & graphic design
I wear many hats in the lab. I'm a software developer, but I also spend a lot of time doing full stack web development as that was my main skill going into this job. Our website and our web suit of tools, run on a framework called LabKey which I had to learn when starting here. It runs on a tomcat server and is geared towards academic research and data analysis in a web environment. Within LabKey I've created many modules that we use such as TestResults , the ToolStore, and a user registration email varification system. I also created Passport while in the lab, and a website from the Crux toolkit by the Noble Lab. I've designed a cover a PNAS issue. I've created logos for coworkers, figures for papers, and many icons for Skyline.
I was tasked with creating a web application that allows users to browse protein standards
that have been analyzed by selected reaction monitoring (SRM). Not all peptides are stable when
sitting in an autosampler waiting to be puth through a mass spectrometer. Because of this
I have created an application that enables researchers to see which peptides are the most stable to measure.
Peptide stability is displayed by plotting the intensity of each peptie before and after 3 days in the autosampler.
Users can browse over 150 proteins, thousands of peptides, and view/download data that can be opened and used in Skyline.
Passport uses PanoramaWeb's api to fetch the data, UniProt for additional protein information, d3.js for graphing, and node.js as the backend.
Lots of updates are in queue, just waiting for funding to continue working on this project.
To learn more, see Passport.
TestResults is part of my work on the Skyline project. We have a tool which runs ~8k-12k unit tests per machine every night. I designed this web GUI to aggregate all of the test result data from all the machines, allowing us to see how our codebase is doing. At this time the tool has been in regular use for almost two years with our database contains over 100 million rows of test data. Every night roughly 200,000 tests are run and the results are sent to this application I've created.
The home page displays a summary of the previous nights test runs, failures, and detected leaks. Based statistics gathered over time for each machine my tool compares each run with previous datasets of what each run is supposed to look like. If anything seems off it gets flagged so a developer known to take a further look.
An interactive d3.js chart showing the results for each machine's test runs the previous night. In this current night, 15 machines ran a total of roughly 150,000 total tests. The page loads this much data in under half a second including server side and front end rendering.
The trends feature allows us to select runs that we consider normal for each user. Using the trained metrics TestResults is able to warn us if a certain users machine is performing abnormally.
This page allows us to view trends from any date range including "The Beginning of Time," which in this case was around 2014(when we started archiving test data). As this application's database grew and things got slower, I did a massive overhaul, brining the page load time of this page down to half a second from 20 seconds.
Every morning the team receives an email with results from the previous nights test runs.
Fishing in Alaska
For five seasons, a month each, I've worked as a set-net fisherman in Egegik, Alaska. It is very physical work and during the main Salmon run, the shifts are long. Here or some photos, curtesy of Stephen, that hopefully explain what it means to work as a set-net fisherman in the bay.