With the increased globalization of the economy, there is an obvious need to create mobile apps that handle multiple languages in a clean and extensible manner. This is known as localization (L10n) in the software development community, and various platforms deal with it in their own unique ways. We will look at how iOS manages L10n here, and the decisions that have to be made in order to stay on top of a dynamic situation.

There are several resources on iOS L10n available, both in official publications by Apple, and some articles and blog posts written by members of the development community:

  • Apple provides a home page for Internationalization (I18n), with links to several additional detailed sources, including WWDC videos.
  • There is an excellent tutorial on the MacRumors iPhone/iPad Programming Forum that goes into great detail on both how to convert your app to handle L10n and managing the app on an ongoing basis.
  • For apps being developed to target iOS 5, using pre-Xcode 4.5, Ray Wenderlich’s blog provides a good starting point with this blog post.

This article will take a high-level look at what needs to be done to fully localize an app.  Three follow-up articles will look at the nuts-and-bolts details of how to accomplish this through building an Xcode iOS app from scratch.  We’ll look at creating an app with storyboards, and the process of configuring the project to localize these storyboards.  Next, we’ll cover how to handle localization programmatically, if you find you have to manipulate text before displaying it. Finally, we’ll wrap the series up with a look at how to communicate with a web service and identify the language of the data you are expecting to download.

Read More…

Let’s face it: Technology is migrating toward the cloud. Unless you have sensitive or secret data you can’t share with third parties, then you have no reason not to embrace it. In short, the cloud is affordable, effective, 99.9% available anywhere, has almost unlimited storage, and allows you to focus on matters other than keeping your network up-to-date — and all you need is an internet connection. Industry experts say that cloud computing will only continue to grow and expand over the next few years, which means companies will need to keep up, or get left behind.

The “Mobile Worker” (like you, maybe), is growing more dependent on answering emails and working on the go with a smartphone, tablet and laptop both outside and inside the office. With so many efficient devices and capabilities allowing coworkers to touch base at once, it would only make sense to have all of your data stored in one centralized location. Additionally, most cloud services, such as Windows Azure, provide a web interface. This means you can access your data on any device or platform that has internet capabilities. Read More…

Model-View-ViewModel (MVVM) is a client-side design pattern. It guides the structure and design of your code to help you achieve “Separation of Concerns.”  Implementing MVVM requires a bit of a mind-shift in the way you think about the functionality of your application. It has a significant learning curve and requires some additional upfront effort to get started on the right path. But the benefits are significant:

  • Your code is easier to understand, maintain and troubleshoot.
  • You are much more productive when you leverage the frameworks’ (WPF, Silverlight, XAML, WinRT) built-in features like Data Binding, Resource Dictionaries, Dependency Properties, Routed Events, Commands, etc.
  • You can test your app’s behavior “under-the-skin,” avoiding the pitfalls and cost of testing at the UI level.
  • Your ViewModels afford testability. You can have unit test coverage allowing “Test-Driven-Development” and “Automated Regressions.”
  • Decoupling the View from the ViewModel in the way enabled by MVVM allows designers and developers to work productively in harmony.

If you want your Windows Phone App and Windows Store App to be also available on Android, iPhone and iPad, you will be able to reuse a significant portion of your effort when developing on those other platforms if your app is structured as an MVVM app.

I sense, from my conversations and interactions with developers in code-camps and user-groups over many years, that these potentially significant advantages are not enough of a motivation for many developers to make the switch to MVVM. There is also a perception that implementing MVVM is overkill for a “small” app. MVVM is perceived to be too heavyweight and not worth the effort for many Windows Phone Apps, Windows Store Apps and development prototypes. This is a view shared by many and I understand and sympathize with this perception. However, I am proposing that we use MVVM for all applications, however small and seemingly insignificant. My proposal is based on two realizations:

  1. Inserting the learning curve of MVVM in the critical path of a large project is counterproductive, in my opinion. Using MVVM in small apps and prototypes is the best way to understand and experience the MVVM development style and thinking.
  2. There is a brand-new reason for C# developers to start “thinking in MVVM.” Structuring your C# and XAML code as MVVM and separating your classes as Models, ViewModels, Views, Services, DataAccess and such will give you a head start in reusing a lot of your code on other platforms like Android and iOS. Think about this for a moment – if you want your small Windows Phone App and Windows Store App to be available on Android, iPhone and iPad, you will be able to reuse a significant portion of your effort when developing on those other platforms if your app is structured as an MVVM app. The potential increase in the reach, customer base and revenue is enough for a lot of developers to reconsider the effort to achieve the separation of concerns enabled by MVVM.

Reusing C# code to create apps for Android and iOS is made possible by Xamarin. The level of code reuse depends on the level of separation-of-concerns that you achieve in your application. The Models, Services and Data Access code is reusable with little effort through Xamarin’s absolutely fantastic ability to create native Android and iOS apps using C# code. It is possible, by using MVVMCross, to take code reuse to another level by reusing your ViewModels also. Stay tuned for more about these techniques and technologies on this blog. In the meantime, whet your appetite by reviewing these resources:

AIS has invested heavily in early adoption and technical readiness for designing and building browser-based and native applications for mobile, touch-enabled devices. See examples of our work here, and read more about our full range of mobile-related offerings here

Technology is advancing rapidly, and with its advance comes new and useful ways to complete everyday tasks. In this post I’d like to talk about some of the benefits of replacing the paper- or desktop-based ways of an employee whose job is performed primarily in the field. (Home health workers or field service technicians, for example.)

Quality custom software that’s designed to meet the specific needs of a business is easy to adapt and should have minimal adoption time and training costs. Workflows that are built according to an employee’s ideal task flow should encourage thorough service calls and better communication flow in all directions.

As an employee who may have to make several service trips per day, mobility is essential. Paper can be completely eliminated, pictures no longer lost or need to be transferred by media card, forms can be filled out by simply speaking into a microphone and tapping on some check boxes. Signatures can be captured easily just by swiping a finger on a screen, bar codes can be read and captured. The possibilities for becoming more productive are expanding each day. Read More…

Every software development company tests their product before releasing it to their clients. Test engineers strive to deliver the product without any defects, but quite often a defect appears (and reappears) even with the best testing processes in place.  Automation testing utilization increases effectiveness, reliability, repeatability and test coverage.

The Agile methodology is implemented in many organizations, which requires more frequent regression testing as the sprints are short. The automation capabilities can help accomplish the Agile sprint-based regression testing and integration testing needs. Read More…

Being an IT professional, and an Army Lieutenant Colonel, I have a somewhat unique perspective regarding mobile application functionality related to military leaders. As a Battalion Commander (my current military position), I frequently need access to various pieces of information and forms while out of the office/on the road. If I have my military-issued laptop with me, and can find a Wi-Fi hotspot (or use tethering), I have access to the appropriate forms and information needed. However this isn’t always the most convenient…not to mention that I normally don’t even have my military-issued laptop with me. The same is true when I’m at home, sitting on the couch, watching TV with my family and don’t necessarily want to pull out the laptop.

An Alternative

A better solution would allow me to use my tablet or phone. As a leader, a small fraction of the electronic forms that I need to complete on a recurring basis are: quarterly performance counselings and annual evaluation reports on subordinates; approving and signing of various personnel and supply actions; and submitting award requests. Read More…

At AIS, we work with clients to help define the overall vision, scope and detailed requirements for the applications they want to build. I recently had the opportunity to work on a project where a client wanted to reach a new set of users through a Windows Store app that was based on an existing iPad app.

We had a very short timeline and limited budget to work with. That was the bad news… The good news was that we were able to use Microsoft Team Foundation Server (TFS) — in this case the TFS 2010 version — in conjunction with Visual Studio 2012.  This gave us the opportunity to leverage new PowerPoint 2013 storyboarding stencils for defining the app’s User Experience (UX), and TFS for efficiently creating and managing our product backlog.  We also used Visio 2013 for visually defining the overall functional scope and high-level release plan for the app.

In this post, I’ll share how we used these tools to rapidly define the requirements for the app, and talk about some topics related to converting the iPad app information architecture to a Windows Store app information architecture. Read More…

For the last couple months, I’ve been working on a new mobile application for an AIS client. It is an iPad app, targeted for iOS 6. Although I am quite well-versed in many of the iOS standard libraries, there is always “further east” to go, and I’ve really stretched my wings with this project and explored some interesting UI features. One thing in particular that I dug really deeply into is Interface Builder and its new integration into Xcode 4.x. I’ll discuss more of that in a later post, as I explored some interesting features (and limitations).

What I’d like to discuss now is the use of static libraries in Xcode for a couple different reasons. First, I have several classes that I think will be helpful to the developer community (both here at AIS and beyond), and I will be building static libraries to share with any of my colleagues who want to use them in their iOS projects. Second, being able to import static libraries into an existing Xcode project can be a little involved, and I want to outline the process in a way that proves to be repeatable. And of course, the best way of learning is to teach, so I’m looking to solidify my understanding of the process by putting it out there for any of you to try it and punch holes in my logic. Read More…

We’re honored to announce that AIS’ own Media Center app won an Appy award for “Coolest App” at the SharePoint MVP Summit 2013. Media Center is a SharePoint app that allows you to integrate your Windows Azure Media Services (WAMS) assets in SharePoint. And we agree that it’s pretty darn cool.

You can download the award-winning Media Center app for free from the Office store.

And here’s a brief video demo of the app’s capabilities:

Congratulations and special thanks to AIS team members Jason McNutt, Harin Sandhoo, and Sam Larko for their contributions to Media Center!

So you want to design an app for Windows 8, huh? Moving from designing traditional web pages to apps can be a tough transition, but as designers we need to constantly push and recreate ourselves so that we can stay in touch with the latest technology and trends. So to help, I have some “getting started” tips I want to share.

First, read through Microsoft’s lengthy guidelines for Windows 8 Apps. Make sure you familiarize yourself with the terminology Microsoft uses for the Windows 8 system like hub pages, live tiles and badges. Don’t worry about memorizing everything in the document, just keep it handy and refer to it when you come to that section.

Read More…