FullStack Developer & Hardware Engineer

FullStack Developer & Hardware Engineer

in

Intro

Sproutlabs was plant care and agriculture startup focused on smart water usage.
This job started off as a senior project capstone and later turned into a job offer which was cool. Ucsc, at the time, offered a 2 quarter software engineering class where you learn the whole agile development process, on a project of your choosing. Additionally there were companies local to Santa Cruz and San Jose that sponsored different projects. I chose sproutlabs because two years before I took the course (~ 2019), California had a severe water drought.
Creating tech that results in improved usage of resources is a pretty cool to me. Also at the time C++ was my strongest programming language and wanted to put that knowledge to use.
Sproutlabs was my first experience programming on a RTOS, and I learned alot about memory management. I actually corrupted a few motherboard using containers from the STL (most of them aside from std::array use dynamic memory). This was also the first my time writing javascript in a production environment.

Imagine the joy of debugging code in a language where:

null !== undefined

but

null == undefined

Here’s an even better one.

// If you think this prints 1 2 3 you're wrong
function scopeTest() {
  var funcs = [];
    for (var i = 0; i < 3; i++) {
      funcs[i] = function() {
          console.log(i);
        };
  }
  for (var j = 0; j < 3; j++) {
  funcs[j]();
  }
}
scopeTest()

Long story short function scope is one the the main source of bugs in javascript. If you’re having fun check this out.
Aside from the nuances of Javascript, I’ve heard more than a few people criticize agile development and the whole scrum process but honestly,when you’re on a team it really does help focus the teams goals into a concrete timeframe. All things Considered I got alot from my time at sproutlabs

What I Did

  • Rewrote entire codebase for the firmware from Lua to C++ in order to support new motherboard. Designed Web Application metrics panel for sensor data for each customer’s account in Vue.js to allow users to graphically track plant health and make informed decisions about how to care for their plants.
  • Implemented a power efficient device wakeup and sleep cycle to optimize device battery life
  • Integrated 4 sensors for temperature, humidity, soil moisture and light exposure into the firmware of the central device microcontroller in C++ using the Arduino DHT library.
  • Implemented asynchronous mesh network using IEEE 802 Wi-Fi and Bluetooth Low Energy protocols on Particle Xenon and Photon devices in C++ to extend the range of device coverage and aggregate sensor data along with device health metrics for end users to see in Web Application
  • Managed SDLC with Agile principles and reported progress in weekly sprint reports Technologies used: Typescript, Vue.js, Node.js, JSON, CSS3 & SASS, Selenium, Particle IoT devices, C++, Lua