{"id":32156,"date":"2017-06-20T10:52:33","date_gmt":"2017-06-20T17:52:33","guid":{"rendered":"https:\/\/blog.xamarin.com\/?p=32156"},"modified":"2017-06-20T10:52:33","modified_gmt":"2017-06-20T17:52:33","slug":"minnesota-twins-hits-home-run-cloud-powered-scouting-apps","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/xamarin\/minnesota-twins-hits-home-run-cloud-powered-scouting-apps\/","title":{"rendered":"Minnesota Twins Hits a Home Run with Cloud-Powered Scouting Apps"},"content":{"rendered":"<p>\t\t\t\tRapid development cycles and outstanding mobile experiences are a competitive advantage, and we\u2019re always happy to learn how our customers use .NET to deliver five-star apps. With high stakes requirements and an aggressive timeline, the Minnesota Twins recently released its first ever mobile app to field scouts and internal teams&mdash;and end users love it. Now, scouts who travel around the world to evaluate players are free to work offline, capture game notes in real time, and automatically sync information with the convenience of mobile devices.<\/p>\n<p>Jeremy Raadt, Senior Developer of Baseball Systems for the Minnesota Twins, joins us to share how his team uses Xamarin for Visual Studio and Visual Studio for Mac, Azure, and Team Foundation Server to streamline development and construct apps that deliver new experiences for any device or internet connectivity.<\/p>\n<h3>Tell us a little bit about your company and role.<\/h3>\n<p>The Minnesota Twins has a reputation for innovation, on and off the field. I joined a few years ago to collaborate with the Baseball R&amp;D team, which acts as a service group for our entire baseball department. We create technology that helps our business partners make better decisions: delivering and maintaining data driven solutions to evaluate players, improve player performance, and provide a range of statistical analytics. There\u2019s so much data and information from a variety of sources, and we bring it all together in a cohesive platform to produce intelligence, not just facts and figures.<\/p>\n<p>I\u2019ve been a software developer for 20 years, mostly for the web, and I\u2019ve been lucky to learn many languages and platforms, from Cold Fusion to Java to NodeJS to ASP.NET. Fifteen years ago, I got my start in \u201cmobile\u201d building custom applications for Palm Pilots and other devices.\u00a0At that time, mobile development was incredibly difficult and time consuming.<\/p>\n<h3>Tell us about your app and what prompted you to build it. What does it allow users to accomplish?<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/twinshomescreen.png\" alt=\"Minnesota Twins app homescreen\" width=\"200\" class=\"alignright size-full wp-image-32161\" \/>We\u2019ve put a huge amount of effort into building a great web platform that allows the baseball department to store data and to perform research and advanced analytics. However, many of our users, such as scouts and coaches, are often are not in an office; they\u2019re traveling to high schools, colleges, minor league, major league, and international baseball games. Being on the road, they&#8217;re also plagued with spotty internet connections.\u00a0We needed the ability to coordinate schedules, deliver information, and analyze data between scouts, coaches, and front office staff, whenever and wherever they are. Mobile allows us to extend our powerful web-based system, using the same APIs that connect our data store to our web app, to deliver features and functionality tailored specifically for mobile use, such as offline access, real time updates, notifications, and data sync.<\/p>\n<p>We started with a project to give amateur scouts (scouting high school and college players) the ability to view game schedules based on area, importance, and various other factors.\u00a0Historically, coordinating coverage at key events consisted of a massive email barrage across dozens of scouts. Now, scouts filter the most important games with a simple click and always have the most up-to-date game details so they can ensure they\u2019re watching the best players.<\/p>\n<p>This app is a game changer for our organization, and we plan to continue releasing more game changing features.<\/p>\n<h3>Why did you choose Xamarin?\u00a0What alternatives did you consider?\u00a0<\/h3>\n<p>Since scouts use a variety of mobile devices, we have to support a wide range of platforms, operating systems, and hardware manufacturers.\u00a0We wanted a framework that was highly performant today and would allow us to grow for years to come. I was in a similar situation in a prior role, and we initially tried HTML5, but quickly ran into performance issues. Our small bootstrapped team was forced to rewrite in Java and Obj-C, and we were never able to deliver all the features we wanted with the quality we demanded.<\/p>\n<p>Fast forward to the Minnesota Twins: I knew trying to manage separate codebases wouldn\u2019t work for our small team, who also supports our web application (which has an increasing number of features on the roadmap). So, I searched for a better way.<\/p>\n<p>We needed a long term solution, that provided us:\n<img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/twinsscheduleandroid.png\" alt=\"Schedule on the Minnesota Twins app\" width=\"200\" class=\"alignleft size-full wp-image-32164\" \/>&nbsp;<\/p>\n<ul>\n<li>Native performance: A smooth, performant user experience. Lagging and slow load times would make us look less professional and we\u2019d lose credibility.\u00a0With hundreds of thousands of datasets, including players, stats, reports, game details, and more, we demanded high performance. To increase adoption from our scout and front office personnel, our mobile experience needed to feel extremely professional <i>and<\/i> load information quickly.<\/li>\n<li>Reliability and security: Users needed to feel safe and confident adding their (highly confidential) scouting information, proprietary algorithms, and all the other data that\u2019s an invaluable part of our competitive advantage. Like any company with highly sensitive data, we needed to ensure the highest levels of security. Xamarin and Microsoft provide not only the framework, but monitoring tools as well.<\/li>\n<li>Consistent user experience: We needed high fidelity access to the camera, GPS, notifications, and other device-specific capabilities that felt, looked, and behaved as users expected.<\/li>\n<\/ul>\n<p>&nbsp;\n&nbsp;\nXamarin intrigued me right away, due to its ability to provide native support across device platforms while using our C# skills (our web app is built on ASP.NET Core). After exploring and really testing its performance, I was impressed. With our first version, we not only have native performance, we\u2019re also sharing 99% code across Android and iOS thanks to Xamarin.Forms.<\/p>\n<h3>How did you get up to speed with cross-platform mobile development?<\/h3>\n<p>Xamarin University was invaluable; even though I knew C#, there are nuances and patterns that help you build better apps.\u00a0I spent three weeks completing the Xamarin Certification courses, and we also had the Xamarin team onsite, working side-by-side to help us build a rock solid foundation. This acted like a jet pack, accelerating us ahead by months.<\/p>\n<p>We (developers, along with our stakeholders, and upper management) were shocked when we had a working prototype in just five days.\u00a0We knew immediately that we\u2019d made the right decision, and one that would pay dividends in the future.<\/p>\n<h3>Describe your development process.\u00a0<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/twinsschedule.png\" alt=\"Minnesota Twins app schedule on iOS\" width=\"200\" class=\"alignright size-full wp-image-32165\" \/>We started prototyping on Monday.\u00a0By Friday, we showed our stakeholders and management a working prototype. Without Xamarin, we\u2019d still be working on an early prototype. Honestly, I\u2019m not sure we\u2019d have started creating a mobile experience, since we don\u2019t have the resources to learn Obj-C and Java <em>and<\/em> support two mobile codebases along with a 3rd code base for our web application.<\/p>\n<p>I credit our speed to two things: (1) we share almost 99% code across Android and iOS. This is huge for us, since we\u2019re a small team, and we need to support the app and continuously deliver new features and (2), since we integrate with Azure AD for authentication, the libraries, documentation, and simple set up made it easy to get up and running quickly without worrying about building authentication ourselves.<\/p>\n<p>Currently, our team codes our web and mobile apps <em>and<\/em> manages our DevOps pipeline. It\u2019s key to automate as much of the process as we can, so we can concentrate on business-specific items and delivering features to users. We can\u2019t afford downtime since our users are all over the world, in various time zones, working 24\/7.<\/p>\n<p>To achieve this, our team uses both Visual Studio for Mac (Preview) and Xamarin tools for Visual Studio, which is another nice thing about the platform.\u00a0Our team has developers on Mac and Windows platforms so we can bring up our favorite environments and it just works. In addition to Xamarin, we store our data in SQL Server, and an ASP.NET Core API connects to both our web and mobile apps. Team Foundation Server (TFS) acts as our source control, build, and deployment platform (currently we build and deploy our web and API from TFS, but when time permits, we\u2019re planning to move mobile). We use Visual Studio Mobile Center (Preview) to distribute our apps to beta testers and internal stakeholders.<\/p>\n<h3>Tell us more about how you\u2019re using Microsoft Azure.<\/h3>\n<p>Most notably, we use Azure AD, which allows our scouts to use the same credentials, whether they\u2019re accessible via web or mobile. For our upcoming video capture functionality, we\u2019re using Azure Media Services, and we\u2019re looking into Microsoft Cognitive Services for voice recognition, speech-to-text, and more.<\/p>\n<h3>What\u2019s the most compelling or exciting aspect of your app?\u00a0<\/h3>\n<p>For me, it\u2019s creating something that is invaluable to our scouts; making sure they\u2019re at the right games, with the right information. If a top prospect is announced to pitch in a game tomorrow, we need the right scouts to know about it right away.<\/p>\n<p>We\u2019re delivering a high quality, impactful experience, and enabling never-before-possible scenarios, now and with our future releases.<\/p>\n<h3>What have your users said about your app? Your boss?\u00a0<\/h3>\n<p>They absolutely love it! Scouts have the information they need immediately searchable at their fingertips, instead of lost in email, and they\u2019re excited for what\u2019s next.<\/p>\n<p>We\u2019re bombarded with requests and ideas for new features, which tells us that they\u2019re enthusiastic and that our work has been a success. Our leadership team sees the potential and how fast we can build and deploy new features, and they\u2019ve placed a high priority on its continued development.<\/p>\n<p>In fact, the project has gotten so much attention that we\u2019re growing our team to help us continue expanding on our mobile vision. One of the requirements: Xamarin mobile development skills.<\/p>\n<p>We\u2019ve accomplished our initial goal, proving a small team can provide a world class mobile experience, and now we have many new goals that we\u2019re aiming to tackle.<\/p>\n<h3>What\u2019s your team planning to build next?<\/h3>\n<p>We have many features planned, with our immediate development focused on video capture (allowing scouts to capture and share from anywhere and at any time) and making advanced player stats and game locations available offline. Video capture is extremely powerful for scouting; watching and sharing video clips gives us a feel for players that just isn\u2019t possible with text.<\/p>\n<p>The entire Scouting Department and I are excited for what\u2019s possible and where we can take mobile unique capabilities.<\/p>\n<h3>What advice do you have for developers who are just starting out or investigating mobile development?\u00a0<\/h3>\n<p>Start small. Download and try some Xamarin apps to get a feel for how performant they are, and prepare to be amazed!\n&nbsp;\n&nbsp;\n<em>Visit <a href=\"http:\/\/xamarin.com\/customers\" target=\"_blank\"><em>xamarin.com\/customers<\/em><\/a> to learn how our customers across industries and geographies deliver amazing mobile apps, and visit <a href=\"http:\/\/xamarin.com\/download\" target=\"_blank\"><em>xamarin.com\/download<\/em><\/a> to start building your own.<\/em>\t\t<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Rapid development cycles and outstanding mobile experiences are a competitive advantage, and we\u2019re always happy to learn how our customers use .NET to deliver five-star apps. With high stakes requirements and an aggressive timeline, the Minnesota Twins recently released its first ever mobile app to field scouts and internal teams&mdash;and end users love it. Now, [&hellip;]<\/p>\n","protected":false},"author":564,"featured_media":32159,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2],"tags":[5,9,6],"class_list":["post-32156","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developers","tag-android","tag-case-studies","tag-ios"],"acf":[],"blog_post_summary":"<p>Rapid development cycles and outstanding mobile experiences are a competitive advantage, and we\u2019re always happy to learn how our customers use .NET to deliver five-star apps. With high stakes requirements and an aggressive timeline, the Minnesota Twins recently released its first ever mobile app to field scouts and internal teams&mdash;and end users love it. Now, [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/posts\/32156","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/users\/564"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/comments?post=32156"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/posts\/32156\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/media?parent=32156"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/categories?post=32156"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/tags?post=32156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}