AgBiz Climate Alpha

As Winter term draws to a close, I wanted to take a few moments to look back on my team’s progress working on our capstone project, AgBiz Climate, over the course of the term. Here’s a few things I learned along the way, and some things I wish I could’ve done differently:

The new and improved geolocation tool for AgBiz Climate

Who will use your project? Will it benefit them?
AgBiz Logic is an online suite of economic, financial, climate, and environmental tools created for use by agricultural producers. The AgBiz Climate tool is a farm-level assessment tool that allows researchers, farmers, and government agencies to realistically determine how climate change may impact regional agricultural sectors

What is the most interesting thing about your project and why?
Climate change will have a huge impact on agricultural production in the U.S., which will in turn have a massive impact on food security for millions of Americans. Our project seeks to use technology to mitigate these issues and provide potential solutions through research.

Why did you choose your project, and has it met your expectations thus far?
I chose my project because I am passionate about climate change, and I wanted to find a real-world application of my passion for problem solving through the use of technology. So far I have learned a lot about climate research and the methods for mitigation that are currently being pursued from an agricultural perspective.

What was the most difficult challenge, and how did you solve it?
The most difficult challenge was certainly adapting to a codebase that was created by multiple different capstone teams over the course of the last few years. The current AgBiz Logic repository contains many pieces of code that are in the process of being refactored by the full-time AgBiz team. Our team inherited a tech stack with which we were previously unfamiliar with, so it was only with extensive guidance from our project sponsor that we were able to overcome that initial hurdle and produce the results we set out to achieve.

Did you initially have doubts about your ability to complete the project? How do you feel now?
I definitely had doubts that I would be able to balance a full schedule of classes with a full work schedule, as well as make time for weekly meetings with both my team and our sponsor. In retrospect, it was the unknown factor of how long it would take to develop our functions that was the truly “scary” part of the process, but once development was underway the process was a lot simpler than I imagined.

What are some your own life hacks for handling school work, group work, and/or project work?

  1. Prioritize tasks: Make a to-do list or use a planner to prioritize tasks based on their urgency and importance to help you stay organized and on top of your workload.
  2. Break down large tasks: If you have a large project or assignment, it’s important to break it down into smaller, manageable tasks to make the work feel less overwhelming and help you make progress towards your goal.
  3. Use technology to your advantage: There are many digital tools and apps that can help you stay organized and manage your time more effectively. Our team used Discord and Trello project management software to keep track of deadlines, assignments, and important information.
  4. Communicate with your group members: Make sure to communicate with your group members regularly. It is crucial to establish clear goals and deadlines, and make sure everyone is on the same page.
  5. Take breaks and practice self-care: I do my best to make sure I’m taking breaks regularly, getting enough sleep, eating healthy foods, and staying active. I have found these are the most important components to stay focused and productive in the long run.

AgBiz Climate Technology

As we move into our second term developing the new version of our climate change research tool, AgBiz Climate, our team has settled on the technology stacks we will be using to complete our project moving forward.

The current AgBiz Climate dashboard is written primarily in AngularJS, with the larger AgBiz modules and tests being written in a Python with a Django framework. The backend contains a PostgreSQL database, and our local environments are set up in Docker containers on GitHub Codespaces.

The current AgBiz Climate Dashboard

I have worked with Django and Python before, although I have primarily used Flask. I believe Django is better suited towards developing large and complex applications, so I am excited to get some experience working with it as I gain familiarity with the existing AgBiz codebase. I don’t believe my team will be writing very much Python, with the exception of the unit tests we will create to test out our new features.

I have never worked with Angular before, although I am very familiar with JavaScript. In order to prepare for this project I will be brushing up on TypeScript, as well as viewing some tutorials and reading documentation in regards to building Angular applications. I have also worked with relation database management systems before, but never with Postgres specifically, so I will be brushing up on documentation as needed for the purposes of our project.

freeCodeCamp’s Angular for Beginners Tutorial

My biggest challenge for our technology stack so far has been getting the hang of Docker, since I had never worked on a containerized application before. Our team ultimately decided to work in GitHub Codespaces, which ensures we are all running the same environment, as well as able to work as synchronously, even while being in different regions and time zones.

Google Charts API Geocoder feature

Our biggest goal this term is to update the AgBiz Climate module’s data visualization and geolocation features, which we are planning to do by transitioning from using the ChartsJS graphing library into new functions that utilize Google’s Charts and Maps APIs. We have already created the functions for these new features, and are working on integrating these functions into our larger codebase. The Google APIs we selected are the easiest technology stack we selected for our project, as both APIs are very intuitive to work with, and contain a lot of the functionality we were looking for. The Maps API allows us to find a user’s street address and convert it into coordinates, while the Charts API allows us to convert climate data into far more highly detailed graphs that are up to research standards, as per our project sponsor’s request.

The AgBiz Logic codebase is the largest repository I have ever worked on, and that has come with multiple unforeseen challenges. The biggest of these challenges is merging code in a way that does not break the functionality of other features, as well as the lack of control over the rest of application. As an example, there are existing UI/UX decisions that I, or my team, would not have made on the module as a whole, but it is our job to meet the specifications of our client without necessarily changing the entire codebase. Our main goal is the meet the same stylistic standards in regards to the code we are merging into the repository, as well as maintain most of the same technology stacks to ensure the current AgBiz team is able to maintain our team’s code once our project is concluded. Overall, our team has a solid plan for developing our new features, as well as plenty of support from our project sponsors to navigate the existing codebase and technology stack we have inherited.

Clean Code

As a novice programmer I would often build a function while simultaneously thinking to myself, “This can’t be the right way of doing this…it works, but it doesn’t feel right”. I later learned this feeling was basically my own inner yearning for learning how to write clean code. I wish I had known about code smells and clean code earlier into my own coding journey, as I have learned the hard way how essential it is to have organized code from the very beginning of a project.

Code is clean if it can be understood easily – by everyone on the team. With understandability comes readability, changeability, extensibility and maintainability.

Robert Martin

My introduction to code smells was a very helpful video a past instructor shared with my class, which detailed the most common code smells and how to avoid them. Anyone who codes with any regularity could benefit from Sandi Metz’s concise and at times hilarious presentation.

Get a Whiff of This by Sandi Metz

Martin Fowler, author of Refactoring: Improving the Design of Existing Code explains why evaluating code smells is such a crucial part of the learning and team building process amongst developers: “I’ve heard of lead developers who will pick a “smell of the week” and ask people to look for the smell and bring it up with the senior members of the team. Doing it one smell at a time is a good way of gradually teaching people on the team to be better programmers”.

On his popular Coding Horror blog, Jeff Atwood authored an article that provides an excellent summary of common code smells categorized by types. In reading through the list, I am reminded of current projects and am motivated to look through my functions for missed opportunities to re-evaluate my work.

A code smell is a surface indication that usually corresponds to a deeper problem in the system

Martin Fowler

Evaluating code smells serves the dual purpose of educating the person who is receiving feedback, as well as establishing accountability amongst teammates to both teach and learn from each other. Instead of saddling teammates with technical debt from building poor code, each person on the team must evaluate, and in turn have their own work evaluated.

The practice of finding code smells and refactoring each other’s code are processes that my team is working on incorporating more often into our capstone project for AgBiz Climate. Primarily, since we are working with a pre-existing codebase, we would like to sort through the code left for us by previous teams and refactor it to suit our current needs and meet clean code standards. As a refresher, freeCodeCamp’s Clean Code Explained article is “A Practical Introduction to Clean Coding for Beginners”, which provides ample code examples and easy to follow explanations of common mistakes and how to avoid them. This article contains examples and resources that I will keep in mind next week as our capstone course moves further into developing new features and incorporating regular code reviews for teammates.

The Final Countdown

As the semester draws to a close, I am inundated with deadlines. Mercifully, I have no final exams to cram for this year. Unfortunately, in their place I have a series of final projects to turn in for four different classes. My most interesting project I think will be for CS 450: Introduction to Computer Graphics. I don’t think I’ll be working with computer graphics again in my career, but Professor Mike Bailey has been excellent, and I’m glad to have taken his interesting and thoughtful course. I have actually surprised myself with the amount I have learned about the dark magic that is producing computer graphics.

CS 450 Project 4: Lighting. My teapot, globe, and giant donut illuminated by floating orbs.

My most challenging project will probably be for CS 493: Cloud Applications. For our final project in the course, I am to produce an application hosted on Google’s Cloud Computing Engine that has a functional REST API with multiple entities, complete with authentication for users. Cloud Applications has probably been my most challenging course this term, but my favorite as well. I hope to use the skills I have learned in class this term in my future career as well.

CS 493 Project 4: Authorization. My Google Authorization Cloud Application.

For my senior capstone project, the planning and documentation phase of our AgBiz Climate project has drawn to a close. We have luckily received approval from our sponsor to proceed with our planned features, and we are excited to begin coding the majority of our project next term. It has at times been challenging working asynchronously as a group this term, but I look forward to developing a more efficient working relationship with my team over the course of the next year as we progress in our capstone project. I think that learning to compromise and manage the ups and downs of teamwork will be equally as essential a skill as the more technical aspects of the projects that I will be learning from in my capstone course.

This year I’m also excited to try out a new mulled wine recipe.

At the end of this frantic term I look forward to spending a couple of weeks in Dallas with my family for Christmas. I have already put up my Christmas tree, and have been shamelessly humming holiday tunes since November.

AgBiz Climate

As we head into the holiday season, I find myself more in need than ever for some holiday cheer and well-deserved time off. This Fall term marks the beginning of my last academic year, and true to form, I’m enrolled in a grueling 18 hour schedule comprised entirely of upper level Computer Science courses. In addition, I’m still working part-time 4 days a week, so this may just be the busiest I’ve ever been. My senior year is set to be one last hurdle on the way to a prospective Spring graduation date, which I’m quite looking forward to.

NYT Cooking Recipes are the best gift of the holiday season.

This term my capstone team and I have been busy developing Design and Requirements Documentation for our work on the AgBiz Climate module. This tool is designed to provide agricultural producers, climate researchers, and government agencies with the data they need to make long-term assessments about the impact of climate change on agricultural yields in the United States.

National Farmers Union Climate Column – AgBiz Logic

I chose to work on this project because I am truly passionate about bringing more awareness to environmental issues, of which climate change is the most urgent. I believe that by creating a tool that underlines the practical, immediate effects of climate change on our most critical resource, food, we can convince government agencies and those in positions of leadership to effect positive change in climate legislation.

The AgBiz Climate tool works by enabling users, primarily farmers, to view a multitude of charts and graphs that represent long and short term climate forecasts (such as heat waves, drought predictions, or precipitation) for their specific location. Users are then asked by what percentage they believe the forecasted climate changes will impact their crop yields, and that data is in turn analyzed by climate scientists and government agencies.

Projected impact of climate change on yields of corn, wheat, soybeans and cotton by 2080-2099.

Our goal this term is to simply evaluate the ways in which we can improve the UI/UX of the AgBiz Climate module from a user perspective in terms of usability. Currently, the tool is difficult and confusing to use, because the data visualization is too simplistic to be meaningfully interpreted. We would like to streamline the process of creating “Climate Scenarios”, so that users are more incentivized to use the climate tool, and in turn researchers are more able to gain meaningful data from users.

I am optimistic of our ability to transform the AgBiz Climate tool into something that will provide value to our users, and will meet the expectations of our client, the AgBiz Logic team. I am proud to be working alongside the Applied Economics Department at Oregon State, who developed this project with funding from the U.S. Department of Agriculture. I believe there is so much for me to learn regarding agricultural practices and climate science, and I am excited to embark on that journey over the coming year.

About me

I am a senior year Computer Science student at Oregon State University, although as an Ecampus student I am actually based in Houston, Texas.

Houston, Texas skyline shot from Eleanor Tinsley Park located adjacent to downtown.

I’ve lived in Houston for close to a decade with my husband and our two dogs. I am fluent in Spanish, and am originally from Mexico City, where I spent my early childhood. I have also lived in Los Angeles, CA as well as Austin, TX, so I have strong taco opinions (the taco rankings are Mexico City > Los Angeles >Houston > Austin).

I have strong food opinions in general, partly because I have worked in restaurants for years in various roles. When restaurants shut down during the early months of the COVID pandemic, I had ample time to pursue my burgeoning passion for web development, which up until that point had been a hobby focused on the needs of friends and small businesses.

As a self-taught developer I felt comfortable taking on smaller projects, but I wanted to eventually expand my foundation of knowledge to pursue larger projects and wider applications of computer science, such as Machine Learning and Natural Language Processing. I enrolled in OSU’s Computer Science program in order to transition towards a career in software development, where I hope to be able to pursue the kind of larger projects I envisioned a few years ago.

As part of my senior capstone project, I will be part of a small team working with AgBizLogic to develop a tool for tracking the impact of climate change on agriculture. This blog will serve as a weekly reflection of the journey and challenges of accomplishing this task.