In previous blog posts, I’ve spent a lot of time sharing info about precision agriculture. This month and in the months to come, I’ll be focusing on design patterns relevant to IoT. When it comes to solving problems in new domains or with new technologies, one often benefits by framing the problem in the context of problems already solved. Mathematicians are notorious for taking a seemingly new and challenging problem and applying a well-known technique to solve it. For example, going through integral calculus will lead a student to be exposed to both u-substitution and trig substitution. In both cases, we are taking what appears to be a hard problem and turning it into an easier problem we’ve previously solved. We are also using a type of design pattern - substitution in this case - to tackle hard problems. This exact same approach happens in software engineering as we apply well established design patterns when we work with new technologies, languages, and domains.