Geisel Software https://geisel.software/ en How to Make Code Reviews Suck Less https://geisel.software/blog/how-make-code-reviews-suck-less <span>How to Make Code Reviews Suck Less</span> <div class="field field--name-field-header-image field--type-image field--label-hidden field--item"> <img src="/sites/default/files/2020-01/MakeCodeReviewSuckLess.jpg" width="800" height="534" alt="Software code review" typeof="foaf:Image" class="img-responsive" /> </div> <span><a title="View user profile." href="/users/geisel" lang="" about="/users/geisel" typeof="schema:Person" property="schema:name" datatype="">geisel</a></span> <span>Wed, 01/29/2020 - 15:19</span> <div class="field field--name-field-blog-category field--type-entity-reference field--label-hidden field--item">127</div> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p><span style="font-size:11pt"><span style="line-height:115%"><span style="font-family:Arial,sans-serif">The first thing to know about code reviews is if you think they’re easy, you’re probably terrible at them. But don’t feel bad. Code reviews are incredibly hard to do correctly, but I have met a few people in my career who are exceptional at them. I’ll share what makes them rock stars a bit later. </span></span></span></p> <p><span style="font-size:11pt"><span style="line-height:115%"><span style="font-family:Arial,sans-serif">Before we get to any of that, let’s quickly cover what a code review is and its true purpose. A code review is when one or more developers review the code written by another software developer. Ideally, these reviewers will be familiar with the code base in general and maybe even with the specific modules that are being worked on. It’s a chance to get another set of eyes on the problem. It’s the whole idea that two heads (or a room full of them) are better than one.</span></span></span></p> <p><span style="font-size:11pt"><span style="line-height:115%"><span style="font-family:Arial,sans-serif">Code reviews are often done in a formal meeting environment. The developers responsible for a certain section of the code or a particular product are invited. Reviews can last anywhere from a few minutes to several days, depending on what’s being reviewed. However, you generally want to keep the amount of code short enough that everyone can mentally survive the meeting. That means it’s better to review code more often, rather than trying to review vast amounts of code in one sitting.</span></span></span></p> <p><span style="font-size:11pt"><span style="line-height:115%"><span style="font-family:Arial,sans-serif">There are also “over the shoulder” reviews. This is where another developer will stop by your office to review code that you’ve written. This is most often done before you check the code in and is less formal than a meeting style review. Developers use over the shoulder reviews to do a quick pass with another set of eyeballs when shorter code is being submitted. They’re also often used as a quick sanity check when an urgent fix must go in quickly. You don’t have time for the more formal review, but it’s still better to make sure you’re not crazy before you push that new code into the wild.</span></span></span></p> <p><span style="font-size:11pt"><span style="line-height:115%"><span style="font-family:Arial,sans-serif">The purpose of a code review is to make the overall software code base better. Now “better” can be a pretty subjective word, so we need a little more definition around that. What makes good software? First, software that works. It’s also important that other people can read the software, so more than just one developer can work on it, fix bugs, etc. You don’t want to create a lot of technical debt when you’re building your product, so it needs to be well architected. These are all things that a software developer learns in Software 101. Correction: software developers are taught that in Software 101. It turns out, sometimes it takes a lifetime to truly learn some of those lessons.</span></span></span></p> <p><span style="font-size:11pt"><span style="line-height:115%"><span style="font-family:Arial,sans-serif">How do we make sure that we accomplish this in a code review? And why are they so hard? Well, like many things in life, it all starts with priorities. In many code reviews the priorities are never defined and, by default, they’re never met. Here are some good guidelines you can use for prioritizing your code reviews.</span></span></span></p> <ol><li><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif"><b>Architectural Issues with Integration</b></span></span></span></span></li> </ol><p><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif">Most software isn’t monolithic anymore. Whatever you’re writing will need to integrate with other parts of a system in a way that allows you to accomplish your task while still allowing everyone else to accomplish theirs. Often when you’re writing a module, you are integrating it with other modules that someone else wrote. This means there is an especially high chance that you’ll break something in someone else’s code. A code review is the right time to catch those breaks, which means you should make sure the owners of the other modules are at the code review so they can help evaluate if there are any integration issues.</span></span></span></span></p> <ol start="2"><li><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif"><b>Bugs</b></span></span></span></span></li> </ol><p><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif">No one would bet QA that they couldn’t find any bugs in a large section of code that you wrote. Why? Because bugs are just a fact of life. If you’re writing software, then you’re writing bugs. Denying it won’t solve the problem. QA will. And so will a good code review! It’s hard enough to look at a piece of code and grok it. (Don’t believe me? How often have you heard developers say, “I’ll just rewrite this from scratch. It’ll be easier that way.”? That’s because it’s hard to understand someone else’s code.) This is the number one reason good code reviews are so hard to do.</span></span></span></span></p> <p><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif">In a good code review, you need to look at someone else’s code, understand it, and then find bugs. And not stupid bugs. You need to find the important bugs, the ones that are hard to find because really smart developers were already looking for them. My recommendation: examine the code beforehand so when you walk into the code review you have a good understanding of what’s being written and can ask good questions.</span></span></span></span></p> <ol start="3"><li><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif"><b>Modularity, Code Reuse, and Good Coding Practice</b></span></span></span></span></li> </ol><p><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif">Now this is the part of a code review that draws on Software 101. It is very important. However, we must consider it in context; if the code doesn’t work (i.e. has bugs) or breaks other code, then nothing else matters. I know, I know, some will say if the modularity or good coding practice isn’t present then we’ll never be able to fix the bugs, but that aspect remains academic if the code doesn’t work. It’s definitely very important, it’s just we must remember our priorities.</span></span></span></span></p> <p><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif">Making sure code is readable, abstracted correctly, takes advantage of code reuse techniques and the like is important to the sustainability of your code base. Remember, this isn’t just to look good in front of your peers, or to come up with sarcastic things to say. The purpose is to make our product better, to save ongoing maintenance costs and to improve our ability to add new features in the future. </span></span></span></span></p> <p><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif">We don’t have the space in this post to describe all the features of good code. We’ll save that for another post, another time (or another 50 posts, perhaps!). Suffice it to say, it’s important not to create technical debt ­­– debt from hacking things together that will eventually need to be paid back with interest!</span></span></span></span></p> <ol start="4"><li><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif"><b>Style Conformance</b></span></span></span></span></li> </ol><p><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif">This goes hand in hand with point #3. Style conformance is an important part of good coding practice. However, setting everything to “high priority” is the same as setting no priorities at all. Some companies have great coding standards, while others have pedantic standards that can impede good coding practice. Additionally, this tends to be syntactic. We make sure to review for style conformance at Geisel Software, but this is much easier to spot and fix than priorities #1-3, which deal more with the nature of the code.</span></span></span></span></p> <ol start="5"><li><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif"><b>Anything Else of Importance</b></span></span></span></span></li> </ol><p><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif">This is a bit of a catch-all. Maybe there are things that aren’t necessarily in the style guide that we should conform to because they contribute to a code philosophy. Or perhaps our client has asked for something to be done in a specific manner. This is a good check and balance for things that don’t fall neatly into a defined category.</span></span></span></span></p> <p><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif">Let’s review our code review priorities:</span></span></span></span></p> <ol><li><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif"><span lang="EN" style="background:white" xml:lang="EN"><span style="color:#222222">Architectural issues with other modules. Will the way this is developed be an issue for anyone else's features/modules/implementation?</span></span></span></span></span></span></li> <li><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif"><span lang="EN" style="background:white" xml:lang="EN"><span style="color:#222222">Bugs.</span></span></span></span></span></span></li> <li><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif"><span lang="EN" style="background:white" xml:lang="EN"><span style="color:#222222">Modularity, code reusability, good coding practice.</span></span></span></span></span></span></li> <li><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif"><span lang="EN" style="background:white" xml:lang="EN"><span style="color:#222222">Style conformance</span></span></span></span></span></span></li> <li><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif"><span lang="EN" style="background:white" xml:lang="EN">Anything else of importance that pops out at you.</span></span></span></span></span></li> <li><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif"><span lang="EN" style="background:white" xml:lang="EN"><span style="color:#222222">Grammar and punctuation.</span></span></span></span></span></span></li> </ol><p><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif"><span lang="EN" style="background:white" xml:lang="EN"><span style="color:#222222">Oh, we seem to have skipped “Grammar and punctuation.” What a gross oversight! Um, not so much. The least important thing in a code review is grammar and punctuation. BUT, it is the easiest to spot, so it’s usually the first thing to be criticized. At Geisel Software we have a rule for code reviews: If your first two comments in a code review relate to grammar or punctuation, you are not permitted to speak for the rest of the code review. Let that sink in for a minute.</span></span></span></span></span></span></p> <p><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif"><span lang="EN" style="background:white" xml:lang="EN"><span style="color:#222222">It is so easy to make comments about grammar and punctuation – even if they’re already right! These are the easiest errors to spot, but the least important to writing good software. This is one of the keys to why code reviews can be so tedious and useless. It takes a lot of time to really understand the code, its purpose, and why certain design decisions were made. If we’re all forced to listen to you recite your favorite passage </span></span><span lang="EN" style="color:#222222" xml:lang="EN">from The Chicago Style Manual<span style="background:white">, we’re going to lose our minds before we get the chance to make a great bug find.</span></span></span></span></span></span></p> <p><span style="font-size:11pt"><span style="tab-stops:center .25in"><span style="line-height:115%"><span style="font-family:Arial,sans-serif"><span lang="EN" style="background:white" xml:lang="EN"><span style="color:#222222">So, what about those rock star reviewers? I’ve worked with a few people who could regularly spot really nasty bugs in code reviews. A huge part of what made them so successful was their ability to focus on the areas of the code that are the most complex. It takes brain power and energy to read complex code and really comprehend it. Hence, most people tend to avoid it. But, if you take the time to focus, avoid distractions (like should there be a comma before “and”?), and strive to understand the code you’re reading, you can be a rock star reviewer too!</span></span></span></span></span></span></p> <p> </p> </div> <div id="field-language-display"><div class="form-item js-form-item form-type-item js-form-type-item form-item- js-form-item- form-group"> <label class="control-label">Language</label> English </div> </div> Wed, 29 Jan 2020 15:19:15 +0000 geisel 230 at https://geisel.software Why IoT Security Must Be Built-in From the Start https://geisel.software/blog/why-iot-security-must-be-built-start <span>Why IoT Security Must Be Built-in From the Start</span> <div class="field field--name-field-header-image field--type-image field--label-hidden field--item"> <img src="/sites/default/files/2018-03/bigstock%20Colorful%20Painted%20Door%20Padlock-800x431-108956531.jpg" width="800" height="431" alt="Colorfully painted wooden door with padlock" typeof="foaf:Image" class="img-responsive" /> </div> <span><a title="View user profile." href="/users/geisel" lang="" about="/users/geisel" typeof="schema:Person" property="schema:name" datatype="">geisel</a></span> <span>Wed, 09/18/2019 - 15:49</span> <div class="field field--name-field-blog-category field--type-entity-reference field--label-hidden field--item">128</div> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p dir="ltr">Developments within the Internet of Things (IoT) space are happening at tremendous speed, but the pace of this change creates challenges from a security standpoint.</p> <p>Recent research from Capgemini Consulting found most organizations are not providing adequate security and privacy safeguards within their IoT products.</p> <p>Much of this is a result of a lack of specialized security skills, but also glaring inefficiencies within the IoT product development process. Capgemini’s survey found only 48 percent of companies focus on securing their IoT products from the very beginning of product development.</p> <p>This is potentially disastrous. Given the expanding potential attack base being created by the huge growth in connected devices, security needs to be just as much at the heart of any IoT development as the product’s basic functionalities.</p> <p>Stopping hackers, and preventing holes from being left in any IoT system, is something that must be thought out from the very beginning. This goes beyond even the system itself, and how it connects devices together and to the cloud. Developers need to think even further ahead. For example, they need to plan how they are going to carry out necessary firmware upgrades down the line in a secure manner.</p> <p>Ensuring security is woven into the product development should not be too difficult. Security is a customer’s major concern when it comes to IoT, and ensuring they are adequately protected can be key to future sales and revenues. The security solutions are out there, manufacturers just have to make sure they use them.</p> <p>This is slightly complicated by the fact that, because the industry is still in its early stages, people are still figuring security out. There are so many companies coming up with IoT solutions, that we are yet to have any one-stop security solutions because of the diversity of devices.</p> <p>This means that what secures one device will not necessarily be sufficient for the next device because it might be completely different. Plus, each device has so many different aspects to it - say Bluetooth, or Wi-Fi, or radio - that they cannot all fold into a solution.</p> <p>Nonetheless, the solutions are out there, and they must be built into IoT products at the earliest stage. Nordic, for example, has software on its devices that conducts encrypted firmware uploads. Those are starting to emerge for a variety of aspects of IoT devices. So when commencing your top-level design, you need to look at the particular things that should be secured on each device, and make sure they are tackled from the start.</p> <p>This will obviously depend on what components are involved in each case, on a client-by-client basis. There is no one solution to IoT security, it is different to every device. But ensuring you have in-built the security solutions from the very beginning will ensure it is not an ongoing burden for your company, and will save time and aggravation in the long run.</p> <p>Don’t get caught unaware. When you start mapping out your product functionality, map out how you propose to deal with security every step of the way, identifying the solutions that work for each particular issue. Your client, and your business, will thank you in the long term.</p> </div> <div id="field-language-display"><div class="form-item js-form-item form-type-item js-form-type-item form-item- js-form-item- form-group"> <label class="control-label">Language</label> English </div> </div> Wed, 18 Sep 2019 14:49:23 +0000 geisel 204 at https://geisel.software The Art of Good UI Design https://geisel.software/blog/art-good-ui-design <span>The Art of Good UI Design</span> <div class="field field--name-field-header-image field--type-image field--label-hidden field--item"> <img src="/sites/default/files/2019-09/ArtofGoodUIDesignpic%20%281%29.jpg" width="800" height="534" alt="The Art of Good UI Design" typeof="foaf:Image" class="img-responsive" /> </div> <span><a title="View user profile." href="/user/105052" lang="" about="/user/105052" typeof="schema:Person" property="schema:name" datatype="">adamfog61</a></span> <span>Mon, 09/09/2019 - 14:24</span> <div class="field field--name-field-blog-category field--type-entity-reference field--label-hidden field--item">136</div> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>A good user interface is an essential part of great software development. A user interface is the “front-end” that allows the user to easily interact with your software. But trying to balance visual attractiveness, usability and performance to create a good user interface for a device, app or website can be challenging. </p> <p><b>So, how do you begin a new UI design project?</b><br /> The first step when starting a new project is to <b>talk to the client.</b> Get to know their products and their industry and then find out what their goals and priorities are for the project. </p> <ul><li>Do they want to increase daily use of a product or are they trying to solve an entirely new problem? </li> <li>Are they replacing or improving an existing product? If so, what did they like/not like about it? </li> <li>Do they have design guidelines for you to follow or will you need to create them? </li> </ul><p>These are all key pieces of information to have before beginning your design.</p> <p><b>Most important components to consider when designing an interface</b><br /> One of the most important components of your design is <b>function</b>. Functionality always takes precedence over style. The interface should look nice, but not at the expense of its usability. For example, if it’s a Voice User Interface (VUI) shorter commands that give users quick access what they need are better than long, verbose explanations that delay access to information.</p> <p>Your design should also be <b>intuitive</b>. Don’t make your users think! There are always certain basic assumptions made such as presuming the user knows how to use a mouse or keyboard, or how basic touch gestures work. Beyond that, try to make using the product as straight-forward as possible. Make sure the product features are easily discoverable, use visual clues such as familiar icons to show users what a button will do, and give users feedback regarding the success of their actions.</p> <p> </p> <p><b>Key factors that should influence your design plan</b></p> <p> </p> <p><b>HOW.</b><br /> When you begin your design it’s important to know <b>how the user will be interacting with the product</b>. Will they have a full desktop with mouse and keyboard? A touch screen interface? A smart phone? A voice-activated interface? Custom hardware with physical buttons? </p> <p>Knowing how the user will be interacting with the device will help dictate the inputs and outputs of an interface. For instance, a well-designed automobile interface should be easy-to-use and provide feedback with minimal distraction of the driver. If the driver needs look down at a touch screen to see if he’s pressing the correct command, the interaction points should either be very large. Or perhaps a touch interface isn’t the ideal interface for this functionality, and a physical button that is easier to interact with is a better choice? </p> <p> </p> <p><b>WHO.</b></p> <p>Next, you need to consider <b>who will be using the product</b>. Is it a consumer-level product that should provide a great deal of guidance to the user, or is it a professional grade product that assumes the user already has a lot of technical knowledge? An expert user has different requirements than a beginner user.</p> <p>For instance, if you are creating an interface to remotely control a robot for the military, the users are most likely going to be expert-level and the interface shouldn’t have to provide a great deal of guidance. Instead, the user is looking for speedy performance, feedback data, and a great deal of control.</p> <p>If we are creating an interface for a drone for casual users, it needs to guide the user more with familiar icons and an easy-to-navigate menu. You may also choose to selectively remove controls that aren’t needed to avoid confusing the user. </p> <p> </p> <p><b>WHAT.</b><br /> You should then determine <b>what the product will do.</b> Is it a relatively passive product that needs minimal user interaction such as a notification alert for a news source that a user just needs to receive and dismiss? Or is it something that requires precision control and quick responsiveness like a portable life support system where an expert user is monitoring critical physiological responses? What the product will do will determine how much data/control you give the user and impacts the complexity of your design.</p> <p> </p> <p><b>Why you need a dedicated UI designer</b><br /> A UI designer’s job is about more than creating a visually appealing product; it’s about understanding the user’s mindset, predicting what they will expect, and then creating a design that is easy to use. Having a dedicated UI designer allows developers to focus on what they do best – code. It also streamlines the process and can reduce development time when you have someone prototyping and designing the interface before the product gets developed rather than during the development process. In the end, not only will your product look better, it will function better too.</p> </div> <div id="field-language-display"><div class="form-item js-form-item form-type-item js-form-type-item form-item- js-form-item- form-group"> <label class="control-label">Language</label> English </div> </div> Mon, 09 Sep 2019 13:24:41 +0000 adamfog61 229 at https://geisel.software IoT Architecture: Build it Right the First Time https://geisel.software/blog/build-it-right-first-time <span>IoT Architecture: Build it Right the First Time</span> <div class="field field--name-field-header-image field--type-image field--label-hidden field--item"> <img src="/sites/default/files/2019-06/Optimized-image_2019_06_12T17_14_53_468Z.png" width="800" height="535" alt="Build it Right the First Time" typeof="foaf:Image" class="img-responsive" /> </div> <span><a title="View user profile." href="/users/geisel" lang="" about="/users/geisel" typeof="schema:Person" property="schema:name" datatype="">geisel</a></span> <span>Wed, 06/12/2019 - 06:47</span> <div class="field field--name-field-blog-category field--type-entity-reference field--label-hidden field--item">135</div> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>IoT can be an amazing enabler for your product, but it’s important to make sure you get the architecture right. Because IoT solutions involve so many complex, integrated components, a sound IoT architecture is a make-or-break part of product development.  A successful IoT architecture addresses a mix of technical requirements, business implications and delivery considerations. Your IoT architecture should provide a roadmap for reliable, secure data transport, as well as methods to manage and deploy your devices.  </p> <p> </p> <p><b>Begin at The Beginning</b><br /> So, where do you begin? At the beginning, of course! The very first thing you should consider when creating your IoT architecture is the use case of your device. How your product will be used should guide how you define your architecture and whether your networking should be local or cloud-based. Is your application local, where your data can be processed at the edge of your network, close to the source? Maybe you want to walk around a factory floor and check all the smart sensors. You could accomplish this using Bluetooth and a mobile application on a smart phone.</p> <p> </p> <p>But, if you had a light switch that is installed in someone’s home so they can turn lights on and off while they are away, then a local architecture doesn’t make sense. You’d need to design it for the Cloud, where data is gathered and processed in a centralized location, and all devices that need to access this data or use applications associated with it must first connect to the Cloud. The question of whether your device architecture should be local or cloud-based – or a combination of the two – can only be answered by considering its application. You should also take analytics into account when answering that question. If you want to gather analytics from your device without sending out a field engineer, then you need to be thinking about architecting to the Cloud. </p> <p> </p> <p><b>Hardware Matters</b><br /> Evaluating your device hardware and protocol is another important part of planning your IoT architecture. In a typical IT environment, we send as much data as we want with few restrictions. But, the amount of data we can send in an IoT environment is often limited because of battery size, distance, or accessibility. You need to consider several different factors: What is your power source? How much data are you sending? How far are you sending the data? For example, if you are using a sensor to test pH levels in a remote bog, you may only need to send small amounts of data – the pH level results – once a day or once a week.  Because sensors are equipped with very small batteries, you would want to choose a low power networking protocol like MQTT so you reduce your bandwidth and maximize the battery life. Or if you are connecting millions of devices, you may need to reduce bandwidth just because of the sheer volume of data you are collecting. Before choosing your hardware architecture you should analyze the type of sensors/actuators, the communication interface, the amount of data to be captured and the frequency of the data transportation.</p> <p> </p> <p><b>Phone Home</b><br /> Communication between your server and your device is also a vital part of your IoT architecture. Technically, your server does not have the ability to reach out to your IoT device. If you drop a robot in the Pacific Ocean, how does your server know how to communicate with it? Or maybe you have a home intrusion detection system set up behind your firewall? How does your server know how to get through the firewall? Like Steve Speilberg’s infamous E.T., your device must “phone home” to your server to to check for operations and events that need to be carried out on the device. The server can then respond with data back to the device. </p> <p>Part of your architecture should include how often your device will “phone home”. If you are collecting pH levels from a remote bog, it might be fine if your sensor checks in once a day or once a week. But if you are trying to turn on a light in your home, you wouldn’t want to wait a day or an hour for the device to check in with the server to turn on your light. How many devices you have and how often they are “phoning home” all impact the time it takes to push out a message as well as server and resource allocation. The cost of your device-server communication becomes part of your architecture.</p> <p> </p> <p><b>Plays Well With Others</b></p> <p>Your IoT architecture will also be impacted by whether you will be integrating with other devices, components or services.  Do you need to integrate with Google Home, Apple Home Kit, Alexa or some industrial software?  What types of integrations you are supporting will impact whether you need to be in the Cloud. Beyond the question of integration, you need to decide whether you will expose a public API. By making your API public, users can build their own applications to your device. This is where the early adopters live and it represents an opportunity to get feedback on how customers are really interested in using your device and may provide ideas for additional business opportunities.</p> <p> </p> <p><b>Safe And Sound</b><br /> We hear about it every day: security. You must address security when creating your IoT plan. Adding security to your device adds cost. You need to decide if your data needs to be encrypted across the network, at rest, or not at all.  If you are collecting pH levels in a bog, you probably don’t want to chew up battery life encrypting your data. But if you are designing a wearable insulin pump for diabetes, encryption is going to be critical. </p> <p>In addition to security on the device, you also need to think about protecting your data in the Cloud. For instance, many manufacturers put their MySQL database right on the public Internet, collecting data from all their devices which are secured with the same password. If someone cracks the password, they have access to all the data from all your devices. This is a solved problem: simply put your database behind a Web API that will provide user authentication. Many other security issues also have addressed and resolved. Don’t reinvent the wheel – approach these issues with existing systems, methodologies and technologies or find an experienced IoT solutions provider to do it for you.  </p> <p> </p> <p>Planning out your IoT architecture at the beginning of your project is essential for success. Take the time to do it right the first time. Changing an architecture that doesn’t work is like changing the foundation of house; sometimes it can be done, but it’s not easy. Other times you may find that your hardware is all wrong for the features you want to deliver, and you must start all over again. It’s important to design a scalable, flexible architecture that meets not only today’s requirements, but will allow you to add features in the future without starting again from ground zero. </p> </div> <div id="field-language-display"><div class="form-item js-form-item form-type-item js-form-type-item form-item- js-form-item- form-group"> <label class="control-label">Language</label> English </div> </div> Wed, 12 Jun 2019 05:47:38 +0000 geisel 227 at https://geisel.software CEO Brian Geisel to Discuss a Safer IoT at LiveWorx ‘19 https://geisel.software/content/ceo-brian-geisel-discuss-safer-iot-liveworx-19 <span>CEO Brian Geisel to Discuss a Safer IoT at LiveWorx ‘19</span> <span><a title="View user profile." href="/user/102429" lang="" about="/user/102429" typeof="schema:Person" property="schema:name" datatype="">shikha</a></span> <span>Fri, 05/17/2019 - 06:19</span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>Geisel Software CEO Brian Geisel will present at LiveWorx ’19, the definitive event for digital transformation. In his session “End-To-End IoT Security: A Safer Internet of Things”, Geisel will discuss common security pitfalls in the Internet of Things and how to protect your entire IoT environment from end-to-end. This practical roadmap to IoT security will address all the vulnerable points in an IoT environment, including:</p> <p>* Security Myths: Understanding the Risks</p> <p>* How to protect your IoT network against infiltration</p> <p>* Defending your web services in the cloud</p> <p><a name="_GoBack" id="_GoBack"></a> * Architecting “Security from the start”</p> <p>* Keeping the fleet safe, now and forever</p> <p><br />  </p> <p><u>About LiveWorx ‘19</u></p> <p>LiveWorx® 19 digital transformation conference is hosted by PTC in the heart of Boston from June 10-13, 2019. More than 7,000 technologists, leaders, experts, industry evangelists, and influencers from over 70 countries are expected to attend the premier digital transformation conference. The award-winning LiveWorx event provides a dynamic framework to meet, share, explore, and learn about how cutting-edge technologies are transforming the physical and digital worlds.</p> </div> <section> </section> Fri, 17 May 2019 05:19:03 +0000 shikha 226 at https://geisel.software https://geisel.software/content/ceo-brian-geisel-discuss-safer-iot-liveworx-19#comments sub page https://geisel.software/content/sub-page <span>sub page</span> <span><a title="View user profile." href="/user/102429" lang="" about="/user/102429" typeof="schema:Person" property="schema:name" datatype="">shikha</a></span> <span>Tue, 01/08/2019 - 12:16</span> Tue, 08 Jan 2019 12:16:16 +0000 shikha 218 at https://geisel.software Html mail page https://geisel.software/content/html-mail-page <span>Html mail page</span> <span><a title="View user profile." href="/user/102429" lang="" about="/user/102429" typeof="schema:Person" property="schema:name" datatype="">shikha</a></span> <span>Tue, 01/08/2019 - 06:13</span> Tue, 08 Jan 2019 06:13:58 +0000 shikha 214 at https://geisel.software Endeavor Robotics https://geisel.software/clients/endeavor-robotics <span>Endeavor Robotics</span> <div class="field field--name-field-client-logo field--type-image field--label-hidden field--item"> <img src="/sites/default/files/2018-09/Endeavor%20Robotics%20Logo_228x129.jpg" width="228" height="129" alt="Endeavor Robotics Logo" typeof="foaf:Image" class="img-responsive" /> </div> <span><a title="View user profile." href="/users/tgeisel" lang="" about="/users/tgeisel" typeof="schema:Person" property="schema:name" datatype="">tgeisel</a></span> <span>Mon, 09/17/2018 - 23:37</span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p> </p> <p>Endeavor Robotics is the world’s leading provider of battle-tested Unmanned Ground Vehicles (UGVs). We have delivered more than 7,000 robots to customers in over 55 countries. We partner with U.S. and international defense forces, law enforcement, energy and industrial users to design and build innovative robotic solutions that support a wide range of missions.</p> <p>Largest robot supplier to the U.S. Department of Defense; managing multiple Programs-of-Record; Combat-proven products deployed in Afghanistan, Iraq, and other areas of conflict.</p> <p>Developing innovative robotic solutions and customer-driven next generation capabilities; Applying latest in technology, including AI, deep learning, and IOP to new mission needs; Partnering with leading tech firms for advanced radio, sensor and payload integration.</p> <p>Design, Manufacturing and Integration Experts; Robots built under ISO 9001 processes; American design/manufacturing; American-owned.<br />  </p> </div> <section> </section> Mon, 17 Sep 2018 22:37:07 +0000 tgeisel 211 at https://geisel.software https://geisel.software/clients/endeavor-robotics#comments U.S. Dept of Veterans Affairs https://geisel.software/clients/us-dept-veterans-affairs <span>U.S. Dept of Veterans Affairs</span> <div class="field field--name-field-client-logo field--type-image field--label-hidden field--item"> <img src="/sites/default/files/2018-09/Veteran%20Affairs%20Logo%20210x129.jpg" width="210" height="129" alt="Veterans Affairs Logo" typeof="foaf:Image" class="img-responsive" /> </div> <span><a title="View user profile." href="/users/tgeisel" lang="" about="/users/tgeisel" typeof="schema:Person" property="schema:name" datatype="">tgeisel</a></span> <span>Mon, 09/17/2018 - 23:21</span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p> </p> <p>The US Department of Veterans Affairs provides patient care and federal benefits to veterans and their dependents.</p> <p><strong>Mission Statement</strong><br /> To fulfill President Lincoln's promise "To care for him who shall have borne the battle, and for his widow, and his orphan" by serving and honoring the men and women who are America's veterans.</p> <p><strong>VA Core Values and Characteristics</strong><br /> Core values describe an organization's culture and character and serve as the foundation for the way individuals in an organization interact with each other and with people outside of the organization. The Department of Veterans Affairs Core Values and Characteristics apply across the entire VA enterprise.</p> </div> <section> </section> Mon, 17 Sep 2018 22:21:35 +0000 tgeisel 210 at https://geisel.software https://geisel.software/clients/us-dept-veterans-affairs#comments Medica Corporation https://geisel.software/clients/medica-corporation <span>Medica Corporation</span> <div class="field field--name-field-client-logo field--type-image field--label-hidden field--item"> <img src="/sites/default/files/2018-09/Medica_Corp_Logo_204x129.jpg" width="204" height="129" alt="Medica Corporation Logo" typeof="foaf:Image" class="img-responsive" /> </div> <span><a title="View user profile." href="/users/tgeisel" lang="" about="/users/tgeisel" typeof="schema:Person" property="schema:name" datatype="">tgeisel</a></span> <span>Mon, 09/17/2018 - 22:39</span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>Medica Corporation manufactures simple-to-use, highly reliable diagnostic blood testing analyzers. Actively engaged in developing new technology, Medica specifically designs products to enhance productivity and the quality of care in small to medium-size in vitro diagnostic laboratories. Medica’s clinical chemistry, blood gas, electrolyte, and hematology analyzers are focused on the global need to lower health care costs.</p> </div> <section> </section> Mon, 17 Sep 2018 21:39:50 +0000 tgeisel 209 at https://geisel.software https://geisel.software/clients/medica-corporation#comments