Inspiration

I met with a UC Berkeley graduate student named Raunak at the Laboratory of Manufacturing and Sustainability, and we talked about past projects I have built. He was very interested in my projects and asked me what I knew and I want to work on. He told me there were a lot of projects to work on. I told I knew Python and Java and not much else, so I didn't mind what project I wanted to work on. He then showed me an ancient-looking software that seemed to be designed for Windows 95. It lacked design so it lacked heart, but more importantly, it lacked functionality, so it lacked soul. I knew I have a long way to go to make this product modern and functional.

What it does

The software has three main buttons when we first open it. These buttons are "Start", "Plot", and "Analyze". "Start" basically starts collecting audio and acceleration data from the InfiniteUptime Data collector. "Plot" plots these collected data points. "Analyze" runs analysis on these data. Users have options to filter out noisy data, and then proceed to calculate features such as the resultant of the acceleration data or the variance of the acceleration and audio data. There are also time domain and frequency domain features the users can calculate after specifying the desired parameters for those features.

How I built it

Product Perspective: Raunak and I worked out the features we wanted to add to the software, starting with the analysis functionality. We agreed it would be best to slowly add features to the product, and start simple and expanding to more complicated things, and we would worry about user interface last.

After I implemented all the features, Raunak and I decided to speak to a designer, and I made a PowerPoint to demonstrate to the designer what the application was about, and where the visual needs are at. I communicated with the designer via email and he came up with a mock design that ended up being the final design of the InfiniteUptime Data Collector.

Engineering Perspective:

My first encounter with Microsoft Visual Studio was a nasty one. It took two hours to download and install, and when I opened it, I was shocked. This was a quite complicated IDE. I opened the initial state of the InfiniteUptime Data Collector project. It took me a while to navigate around, read code, then mess around with the code. It took an hour before I figured out how to make a button.

Then I implemented the application feature by feature. I started off simple, building features like resultant and variance, but as time went on, the math became more complex, and Raunak showed me the Matlab code used for the Fast Fourier Transform and the spectral features. I learned how to read Matlab and translated the code. While building the analysis features, I also had days where I worked on some non-analysis features, such as saving data as text files or images and making the graph zoom-able.

Finally, I worked on the front-end, with help from one of Raunak's colleagues. It took a few months but the product was ready to be exported and used.

Challenges I ran into

I had a lot of problems with the math. I did not understand FFT and the math behind the spectral features, so while some of the features I had Matlab code, some other features I didn't have any code at all and simply had to rely on Wikipedia. Testing could be difficult also, as I needed the InfiniteUptime Data Collection Device to generate real data, and sometimes when I didn't have access to the device, I generated some fake data that tries to mimic the real data.

Accomplishments that I'm proud of

I am happy that I built this application as a sophomore in college, and finishing this software was one of the defining moments of sophomore year for me. Raunak told me this software was used by many companies as well as research universities, which made me feel good about my months of hard work.

What I learned

I learned the C# language as well as how to use Microsoft Visual Studio. I also learned a bit of Matlab

What's next for InfiniteUptime Data Collector

I don't currently work on the data collector anymore, so the next step isn't up to me, but I would have added more analysis features.

Built With

Share this project:

Updates