Smart Farm Systems

I've enjoyed working on this software partially because the whole team is good to collaborate with but also because I've really had a lot of opportunities to exercise diverse skills.


By nature, Internet of Things software must deal with moving data between different types of devices, and that tends to mean having code in several different languages working together. Because of this I have found myself coding in seven languages on five platforms as my role expanded from maintaining a peripheral component to maintaining the core.


Along the way I've picked up some skill with Swift, the Java Native Interface, and even took an emergency deep dive into the Angular JavaScript framework when the primary front end developer became unavailable. I also became a Apache Software Foundation contributor when I submitted a pull request for cordova-android which made a significant iOS Cordova feature available on Android.


Besides all of this programming I have also had occassion to use skills I previously picked up doing system administration and server support as well as others.


I needed to switch quickly between working on software that runs on iPads and software that runs on devices out in the field so I used crosstool-NG to make a cross-compiler. This compiler now allows Rasperry Pi software to be compiled directly from macOS.


The operating software running on those devices out in the field needed to be documented and standardized so I produced an unattended install recipe with PiBakery.


These devices in the field need to be monitored and kept in service, so I wrote a custom Nagios plugin and deployed a monitoring system that reports failures conveniently into a Slack channel.


  • Languages :

    C, C++, C#, Java, JavaScript, Python, Swift

  • Components :

    Cordova, JNI / Android NDK, Angular, Ionic, Flask, SQLAlchemy, Raspbian, CuTest

  • Tools :

    PiBakery, crosstool-NG, Nagios, Vim, XCode, CMake, Arduino IDE, Android Studio

Base Station
Pump Controller
Mobile App