Should We Comment Our Code?

Working together on code reviews doesnt have to be difficult

Commenting code is one topic, that until recently, I hadn’t known was such a widely debated issue in the programming world. It was something taught to me from day one in Computer Science at the University of Northern Iowa. Recently, my workplace posted a simple question on an open-discussion white board. “Should we comment our code?” The plethora of anonymous comments was certainly enough to pique my interest. According to the discussion, hardly anyone could agree on this question.

Software bugs don’t have to be scary

Software bugs aren't as scary as this one.

It certainly can be scary looking at a long bug list with a short deadline, but identifying and fixing software bugs can be manageable with a few strategies.

A second set of eyes.

Sometimes a very simple software error can be staring at us, but we miss it because we have been staring back so long. An example I faced was a section of code appeared to be setting a value used elsewhere in the code, but that value was never changing. When I finally had someone look at that code for me, the first question was “Isn’t that a pointer?”

Arduino (or chipKIT) + LabVIEW = Low-cost Home DAQ or Control System

photo: arduino.cc   photo: ni.com

The Arduino and chipKIT microcontrollers are popular for students and hobbyists alike. They provide various interfaces that can be used to interface with a myriad of devices and sensors. These interfaces include, but are not limited to, digital I/O, analog input, I2C and SPI communication, and PWM. Microcontrollers have been used for many varying projects from basic data logging to home/environment automation and robotics.

Model Based (MBSD) vs. C Software Development

Model Based Software Design can speed complex system development

Recently my team was given the opportunity to completely redo a particularly messy and troublesome piece of legacy C code, and as a team we decided to give MBSD a try. We had tried a few simple models before, all of which turned out to be more complicated than had we written the C code ourselves. But this time we were determined to do it right: we allocated plenty of time, received one-on-one training from the local MBSD guru, and reviewed the original requirements to ensure they met the needs of the system. Finally after exhausting all of the time, continually pestering the guru with questions and modifying the requirements several times, we succeeded in having a model based software design that actually worked the first time we tested it on the vehicle. It was a valuable experience overall and helped illustrate the drawbacks and benefits of MBSD over the typical C development.

SAE 2014 Commercial Vehicle Engineering Congress

SAE Commercial Vehicle Engineering Conference

This year’s theme focused on “Engineering Leadership – Changing, Guiding, Influencing”. I had the opportunity to sit in on several technical sessions that included some of the top panelists from across the country. The list included Deere & Company, Case New Holland, Caterpillar, Inc., Eaton and a variety of university professors.

One of the common topics I came across was how to address the increasingly complex and volatile landscape of vehicle products and control systems. How today’s engineers, across all organizations, need to develop strong adaptive thinking abilities and problem solving skills for their customers.

Big Data Conference

Big Data is collected during harvest

On August 25, 2014, Precision Ag put on a Big Data conference at Iowa State University in Ames. While the conference appeared to originally target producers more than the industry providing to the producers, the audience ended up being about 50/50 between those two groups. Attendance for the conference was approximately 300 people from all over the country.

Life of an Intern

DISTek Intern Michaela Leinen

I became sick of clerical work and odd jobs that would never help me in my career, so last summer I went on the hunt for something with embedded systems around Cedar Falls. I found DISTek and sent a message on their “Contact Us” link. Never would I have imagined that it was going to be such a great experience in my life. When I was a freshman in college, my first semester I told one of my professors that I was interested in the computers inside of the Ag machinery. A year later, I was offered a job at DISTek and my dream had been fulfilled.

The Life of an Intern

DISTek Intern Trevor McCormack

As a student you feel fortunate to have an opportunity to get an internship, but to get an amazing internship, such as DISTek, is a true blessing. DISTek is the ultimate playground for embedded systems programming nerds that love manipulating hardware through software and who relish at the thought that their work will eventually end up on a microcontroller of an agricultural or off-road vehicle. To my delight, within an hour on my first day, I was assigned to a CAN bus project, based around ISO 11783, working side by side with full time employees on a real product intended for real customers. After receiving a binder full of ISO standards and a quick, but quite necessary, pep talk from my new coworkers I was set to start programming… or so I thought.

Dirty Jobs: Code Reviews for Embedded Software

“I enjoy doing code reviews!” said no embedded software development engineer, ever.

Working together on code reviews doesnt have to be difficult

Nobody in their right mind takes pleasure in combing through hundreds of lines of Consolas 9.5 gibberish they didn’t even add, modify, or remove. There are no rewards. No incentives. Only an engineer at the other end of the diff-viewer who thinks you’re just trying to get under his skin, thinks you’re a know-it-all, or assumes your stylistic preferences are a personal criticism.

Okay, that may be a bit aggressive, but nonetheless, can be very true.

Introduction to Task Controller

Does anyone walk beans anymore? Early in my life, my dad’s three favorite herbicides for beans were my sister, my brother, and me. We spent many hours walking miles in the hot summer sun and learned many interesting plant names in the process: hemp dogbane, pigweed, velvetleaf, lambsquarter. Over the years it apparently became more economical to plant the beans closer together which made walking them nigh impossible, and my job morphed from walking the beans to driving the truck with the water and herbicides for filling the sprayer. Since I am less involved with the farm these days, I no longer know the costs of various chemicals, but I know even in the mid-90s that a small canister might go for $400. With inflation and the increased costs of raw materials, I am sure some of the chemicals are even higher cost now.

ISOBUS Schematic

Every dollar saved in spray (or seed or fuel or …) is a dollar toward the bottom line profit, so naturally as these input costs go up the motivation to reduce waste of those inputs goes up. Technology has existed for quite some time to give farmers the ability to reduce waste with variable-rate-application and section control. But what has only more recently become available is the ability to integrate various manufacturers’ equipment together to achieve these technologies using ISOBUS. ISOBUS terminals have become increasingly common in tractor cabs to offer a nice GUI to the operator to manually control implements. With ISOBUS Task Controller, a single device in the cab can control the variable-rate or section control capabilities of an implement. Task Controller has the additional capability of recording data … either total data such as for a baler, or Geo-logged data as the implement is pulled through a field.

Getting Over the HIL of Embedded Systems Software Testing

In recent years Hardware-In-The-Loop (HIL) testing has become a standard part of the embedded software development process. Two trends in the embedded software development world, reduced time to market and an increase in complexity has created the need for better, more dynamic test platforms. HIL platforms provide a way to test the embedded software of a microcontroller in a real time, accurate way prior to integration on the final system.