Tech in 2: Akka Reactive Streams
Senior Consultant Josh Mayfield discusses the benefits of Akka Reactive Streams, a customizable set of protocols that can be utilized to increase the performance of your applications. Usable on both Java and Scala applications, these streams can speed up your flow, allow you to process more records at the same time, and provide security for your flow all at once.
Tech in 2: AWS Tools to Optimize Your Move to the Cloud
Moving to the Cloud doesn't have to be difficult. AWS tools, including ECS Auto Scaling, CloudWatch, and CloudFront can help you quickly set up your server, while also ensuring it’s scalable and optimized. Principal Consultant David Sullivan shares some of the AWS tools he’s utilized with clients in their move to the Cloud.
Four Ways to Include Your Users to More Successfully Update Your Legacy System
The thought of updating a legacy system can be intimidating, especially when you have a user base to maintain. I, however, see this as an advantage. Besides select members of your organization, who else knows your product and its functionality better than those who use it? You can save yourself time, money, and a lot of headaches by actually including your users in in your legacy system update. Read on for four ways to make it happen. Segment your users In order to include your users in the process, first you need to figure out exactly which groups of users you’re going to utilize. The most important thing to remember is that you’ll want a representative slice across your user base. You’ll want to include some big and small users, and also make sure you get a range of users that utilize all of aspects of product functionality. You may need to do some data analysis and define your “casual users” and “power users” so you can work with some from each group. Get them the product sooner rather than later The quicker you can get the product in front of your users, the sooner you can get feedback. Even if it’s just a small issue like screen resolution size or element tab orders that slow down data entry, the quicker you can identify these bugs the quicker you can pivot. You don’t want to find yourself months into the process before you identify something that’ll cause your project to have to start from scratch, meaning both time and money lost. I specifically promote Agile sprints with my team for this reason. Determine your marketing research methods Whether it’s focus groups, surveys or hands-on demonstrations, decide the ways and means you’ll be soliciting feedback from your users. Taking a phased approach to product deployment can be a helpful way to do this. Even if you’re still at the stage where you can’t get the product in their hands just yet, you can communicate the types of changes that are coming and ask for feedback or questions. Once you’re farther along, hands-on demonstrations can be a great way to identify any last-minute glitches. Decide how you’ll handle user feedback People in your organization will have varying reasons for which changes they’d like to see. Once you’ve decided which changes you’re going to make and why they’re important, your users might have other opinions. What are you going to do if you experience negative feedback? Are you going to stand firm or change course? You need to plan in advance how you’re going to handle these oppositions, or you’ll be putting your project at risk for derailment. Speed to market requirements keep accelerating. Most organizations no longer have the luxury of taking 6-12 months to design and develop a solution before their users have a chance to see it. By involving your users early and often, and treating them as partners in the development process, you’re more likely to end up with a better product and happy, loyal customers. About the Author:Gary Gealy is a Senior Consultant with 30+ years of experience in programming, supervision and technical support. He feels strongly that software development is as much a craft as it is a science and as such mentoring and training are critical to growing an organization. He has developed software across a number of markets including the Insurance Adjusting, Manufacturing, Food Services and GIS industries. WATCH GARY'S TECH IN 2 VIDEO
Tech in 2: Tips for Updating Legacy Systems
Updating a legacy system can be a big undertaking, especially when you have a user base to maintain. Senior Consultant Gary Gealy shares how to use an evolutionary approach rather than a revolutionary approach, so you can handle your updates one piece at a time.
Software Development Trends for 2021
As we welcome the start of a new year, we also welcome the excitement that comes with new technology on the horizon. This is especially true in the world of software development. We talked to some of our developers to learn the latest updates and trends that they’re excited about for 2021, and what those improvements will bring to our clients. “I’m excited to see the .NET framework and machine learning coming together. ML.NET (machine learning in .NET) is a ‘neural net in a box’ we can apply to many potential applications to bring the strength of neural net processing to our client applications. It’ll empower our clients to make better business decisions.” - Kenn, Fort Wayne Development Center “I’ve been helping a client transition to using Elixir/Phoenix for their codebase for the past two years. There are changes coming up in 2021 that should improve the speed of code running with the Elixir Virtual Machine. There are also more developments on the horizon within the Elixir community that will make it easier to troubleshoot errors in the codebase. I’m excited about the possibility of us gaining additional expertise in Elixir, and Rural Sourcing utilizing it as a solution for more clients.” - Matt, Albuquerque Development Center “Snowflake has really taken off lately! I’m excited about how it could help our database colleagues offer a more Agile or extreme datawarehousing approach to our clients.” – Margret, Albuquerque Development Center “Deno as the next generation of Node. It’s doing a great job of addressing the security concerns associated with Node applications, and will help prove to any Node naysayers that the technology is mature enough to adopt, even for enterprise level applications.” - Devin, Albuquerque Development Center “A big trend right now is API-first development. I think this is exciting for Rural Sourcing, because it gives us the opportunity to call attention to the contribution that QA can provide for our clients. QA can ensure that the foundation of a complicated system is a solid one and protect a client's brand by providing a reliably positive experience for those who are consumers of these APIs across a variety of platforms.” – Andrés, Fort Wayne Development Center “The new .NET Core means we won’t be working with two divergent stacks any more. The improvements they've made to how their platform works are really exciting.” – Eric, Oklahoma City Development Center “Kibana is a new open source dashboard that provides search and data visualization capabilities within Elasticsearch. The project we’re utilizing this technology on helps our client better understand how their data is being used, what problems are occurring, and how often. I look forward to getting to use this tech stack with more clients in the future.” – Brandon, Jonesboro Development Center DISCOVER MORE
Five Ways For an Easier Transition to AWS
While living in the Cloud has become the new normal for many companies, there are still plenty out there that have yet to make the move. It’s a huge effort for your development team, with a lot of room for error. That’s why I’ve assembled these five crucial steps to help you work through a successful AWS implementation. Even if you’re not involved in setting up the architecture, this guide will help you gain a much deeper understanding of AWS functions. Create a plan, but be willing to pivot Fail to plan and you plan to fail, right? No successful AWS implementation happens without a solid plan in place, but remember that things do (and will) come up: third party dependency problems, requirements changes, even service outages. When you’re getting started, some important questions to ask include “what are the application’s goals?”, “what kind of traffic will it have?”, “how is the app going to be built?”, and “where will your team be located?”. Perform Infrastructure as Code to avoid the human error element that comes with doing things manually. And anticipate failure and have a procedure in place to respond, be it disaster recovery or remediation documentation. Make security a top priority These days, large corporate security breaches are pretty much guaranteed to make the news. So, keep your company happy (and off of CNN) by making sure your AWS implementation is secure. To start, use AWS Identity and Access Management (IAM) to create a security identity. If you don’t have one in place, it’s hard to get everyone on your team to do their part. And when everybody isn’t doing their part, gaps can get overlooked. You’ll also want to prepare for security events ahead of time. For example, if an unknown user or strange traffic pattern arises, do you want an automated or human response? Or both? The sooner you get your eyes on a security problem, the sooner you can get it solved and potentially lessen severity. Manage costs... ahead of time Keeping your costs in check is an important part of the implementation process. Over provisioning of resources is all too common, as well as the unexpected costs in transferring data in and out of the Cloud. If your need for resources fluctuates throughout the year, a consumption model can help. By adopting this type of operating model, you utilize auto-scaling and only pay for the resources that are required. Just be careful, though. With the benefits of auto-scaling come a few drawbacks: if only the application scales up, the infrastructure that supports it could potentially become a bottleneck, and cause delays or timeouts; or if the database isn’t scaling at the same rate as the web application, this could cause connection issues while the read/write operations struggle to keep up. Ensure reliability Sure, the AWS SLA is reliable, but what can happen in the procedures that take place between you and AWS? Network problems, power loss… you’ll want to test your recovery procedures in advance so you can automatically recover from any failures in the future. Another way to ensure reliability is to stop guessing capacity. I’ve heard time and time again from clients that “it’ll never be more than x amount,” and then sure enough, it ends up over the estimate. Now you’ve been impacted, whether that’s the extra amount of time spent, or a dollar amount lost. If you’re on a consumption model with auto-scaling, it just gets done. Optimize overall performance Rather than having your team learn how to host and run a new technology, that technology can be consumed as a service. For example, NoSQL databases, media transcoding, and machine learning require expertise that isn’t always available on every team. AWS has services that can be consumed while the team continues to focus on product development and business value, instead of trying to master something new. Another way to optimize site performance is by using serverless architectures: they’re easy to deploy, low cost, scalable, and allow for continuous improvement. Finally, be sure to use some “mechanical sympathy.” That means understand and deploy technology that best aligns with what you’re trying to achieve. For example, consider data access patterns when selecting database or storage approaches. You don’t want to choose completely opposing technologies for your stack. AWS implementation can be a big undertaking, but with the right team in place and a well-thought-out strategy, transitioning to the Cloud is easier than you think. Learn more about how Rural Sourcing has helped clients implement AWS for their organizations by visiting our Results page. LEARN MORE ABOUT OUR AWS CAPABILITIES
Node.js is for Everyone
The Pros & Cons of CMS APP Builders
So you’ve decided you want to build your mobile application with a cross-platform solution. Now what? There is yet another decision to be made: Should you build your app with a CMS? Let’s first go over a quick definition of CMS, or content management system. What makes a CMS a CMS? First, there is usually more of a drag-and-drop feel than actual coding. An example may be dragging and dropping a text box component rather than coding ‘<input type="text"></input>’. Next, there will be some type of dashboard. And usually you will be able to create different permissions for various users of the dashboard. For example, you may want to allow someone to be able to sign on and change some text, but you may not want them to be able to edit the styling of the application so you would edit their permissions accordingly. Now, let’s take a look at the pros and cons of CMS app builders to help us answer the question we originally asked: Should you build your app with a CMS? Pros Code faster - CMS app builders allow you to build apps at lightning speed. I can build a complete app (ready to be submitted to the app stores) with a CMS builder within hours. The ease of drag-and-drop can save huge amounts of time and effort. Client customization - This pro comes along with the dashboard aspect of CMS builders. This comes in handy when you are offering customizable apps for clients. With a dashboard, you can create a login for the client and let them sign on to their application’s backend for simple text updates or adding a blog to a blog section, for example. Automatic updates - Getting an app through the App Store can be a frustrating process because of the length of time it takes to be approved. That’s not so bad for the initial submission, but waiting days for each update can be an issue if you have a client that is constantly wanting changes. Usually with CMS builders, you can automatically push 99% of updates (excluding splash screen or icon changes). Cons Costs money - One major con to using a CMS builder is that it is not free. Usually for a single app, it will cost about $50/month and will only stay live while you are paying the subscription. For reference, check out the pricing sheet for one of the top CMS builders here. You can easily see how this could get very expensive very fast with multiple apps. One thing to keep in mind is that if you know you will be creating multiple apps, most CMS solutions offer some type of affiliate program. This means you will be able to pay a higher monthly fee, but you will be able to create as many apps as you like. Less control - Sometimes with CMS builders, you lose 100% control of what you can do with your app. For example, they may only offer a set amount of templates you can use for a page. Most will offer a blank HTML template you can code yourself to help with this, but if you are trying to avoid hours spent coding then that doesn’t really solve your problem. So, what’s the answer? Of course, it depends. If money isn’t an issue and you want to be able to quickly create customizable apps, a CMS builder is most likely the way to go.
Coding Mobile Applications: To Go Native or Not
Scaffolding – The Future of Software Development
As science and technology evolve, new features are compounded upon old features like building blocks. Most people agree that in this linear fashion you can’t get to point ‘C’ without starting at point ‘A’. But should you really have to start from point ‘A’ every single time? Let’s talk math for a bit. Don’t worry, you don’t actually have to solve anything. Take this equation: ∫6x = 3×2 + c. Since we’re taking the integral of 6x, this is labelled as Integral Calculus. According to Kahn Academy, one of the leading sites for learning mathematics, before learning Integral Calculus, you should know Algebra, Geometry, Trigonometry, Probability and Statistics, Pre-calculus and Differential Calculus (in roughly that order). It would be insane to do an exercise in all of those every single time you had to do an integration problem. But in software development, that’s exactly what we do. If you’re a software developer, you’re probably thinking I’m crazy, but hear me out. One more hypothetical scenario: let’s look at what it would take to make an Android app. First, we need to design the login page. Well, that’s got to be easy, since all login pages look pretty much the same, except some mild theme rolling. So we put up fields for username and password, then buttons for submission, registration, and password retrieval. We’ll take care of login itself first, so we write a method to encrypt the password to SHA-256 before submitting it to our server. That’s when you find out that newer versions of Android can’t do network calls on the UI thread, and you scream out in frustration, “Why am I making something as mundane as a login screen? People have done this a thousand times, this is ridiculous!” Think about how many applications haven’t been made because the tasks leading up to it were too complicated, took too long, or were just too boring. As software grows and requires more boilerplate code, the effort of a developer grows greatly – and this is just to ensure a sturdy foundation. Thankfully, there’s an answer – scaffolding. Scaffolding, in the software development sense, is the technique of generating a generic application with features common to most modern applications already built-in. A decent scaffold would include, for instance: login and registration pages, server connections, routing, model templates, controllers, security mechanisms. By using a scaffold, you can cut days, if not weeks, off of your development time – and we’re just getting started. So, how can you start scaffolding your next application? Well, luckily, Yeoman makes that part super easy. The downside – Yeoman is geared primarily toward web development with NodeJS. Why aren’t there really scaffolds for mobile or desktop applications? The only real answer is because nobody’s created it yet. Keep an eye out, though; the market is prime for a major scaffolding company any day now. - Christopher Johnson