Ribeye steaks are one of my favorite things. Not sirloins, not New York strips, but ribeyes. I love a good fatty steak cooked with salt, pepper, and compound butter. Very tasty. So, of course, I was happy when we got to work with the Nebraska Cattlemen Association.
The application we built with Cattlemen provides a way for cattle producers to stay on top of changes in the current market by delivering up-to-date information on cattle prices, weather, and general “inside baseball” data that they care about.
Needless to say, this project wasn’t just all about steaks; we had to write some software too, and with that came with three big challenges. First, we had a legacy system to take over (they already had an ASP.NET website that has quite a few features). Second, we had to create a mobile application that ran on iOS and Android. Third, we had to develop push notifications with badges for both platforms.
Keeping the Legacy Going
Legacy systems are in some ways the most challenging software projects, but often the most rewarding. Older systems that have been around a while require balancing a lot of difficult cost/reward decisions. Sure, we’d like to change X but is it worth it at the cost of Y? We have to focus on the biggest bang for the buck. We also have to consider how best to use multiple developers on the project and what we can do to make supporting the project more manageable.
With this particular project, we moved the hosting to Azure and set up app services; one for the existing .NET Framework side and one for new backend services used to extend the application. By breaking the system in two, we could continue using.NET Framework for the existing legacy site, but use .NET Core for the new services we were building. We make web service calls from the legacy site to the .NET Core application as necessary. Certain functions, such as authentication, were moved to the .NET Core application.
The mobile application wasn’t overly complex, but it did have a lot of things happening. One of the requirements for the mobile app was that the UI needed to match that of the existing legacy application but feel better on a smaller display. Our UX team created a simple-yet-usable UI style that worked and looked great.
We built the mobile UI using Ionic. We have completed multiple projects with this framework, and it has been a reliable tool for cross-platform mobile development. Ionic isn’t perfect, but it allows us to deliver two apps (iOS and Android) while only building one.
The last big feature was push notifications. The application sends valuable messages to its users, so we had to get this just right. In this case, we used AWS’s SNS service. SNS does a good job abstracting away the underlying messaging platforms for android (GCM) and iOS (APN). The particulars of push notifications are not difficult, but badges are another story.
Badges can be tricky for a few reasons. First off, they behave somewhat differently between iOS and Android. iOS badges are pretty manageable once you figure them out. Android isn’t quite as easy. With Android, individual launchers impact how badges behave, and unfortunately, the Samsung launcher seems to have the most problems.
Challenges are Fun
This was a very enjoyable project. Shipping new features for a legacy system is always a challenge. Pairing that with a new mobile application and push notifications makes it even more challenging. But at Don’t Panic Labs, these kinds of projects provide the challenges we thrive on.