Tips for Developing a Custom Application for Academic Research

Tips for Developing a Custom Application for Academic Research


This post is about developing a custom application, V-Coach. This custom mobile app encompasses the development of meaningful digital feedback mechanisms, field testing among college music majors and their mentors, and progress assessment. V-Coach is a unique collaboration between Shockoe and a VCU Music Department researcher that advances technology-assisted arts training and injury prevention for musicians.

Let’s Dive In

I recently took on the development of a custom mobile application for Virginia Commonwealth University (VCU). VCU Music department was interested in building the V-Coach App, an iPad app that puts specific tools of deliberate practice and reflection into the hands of practicing violinists and violists. V-Coach is a pioneering digital arts technology designed to bring a healthier, more mindful, and more deliberate approach to musicians’ personal practice by allowing the musicians to self-regulate their practice habits.

VCU came to us with an idea to use mobile to assist in the training and improvement of student musicians. The app would encompass most of the latest tools and technology that mobile has to offer: AR, Video, Annotation, Motion Tracking, Data collection, and Audio. The goal of the application was to find a way to allow student musicians to track their violin learning goals, use interactive tools to improve practice and get statistical insight into practice behaviors. Many ideas were passed around, that in theory would work to meet these requirements. We put together the best strategy in place that would help VCU students and professors reach musical goals and now it was time to dive into the development.

As a mobile developer, more often than not you are developing applications that you have had the experience on a subject about and that the average person would understand how to use. Many of the features and UI elements may be decided prior by a project manager or a UX/UI designer, but the success of the application comes down to how well it is developed. Developing application well means understanding the subject and user needs so the app provides utility in moments of need and empowers the user. In the case of this app, I was in uncharted territory as a developer since practices and behaviors that musicians follow and expect were not second nature to me. As a developer, when you find yourself in this position remember to always go back to the basics of development.

Approaching the development of an application of any kind can be broken down with a few simple steps: research the subject, get to know your audience and test with expertise.
1. Research the subject:

Research, research, research, and more research. This step goes a long way in helping you more easily implement a solution that meets requirements. First, take a step back from your subject and narrow it down to the areas that present the most questions. For example, for the V-Coach app, we started with developing a tuner for our users. Instead of researching various tools musicians utilize to practice, we wanted to focus specifically on how a tuner works. How does it operate? What makes it useful? What separates one tuner from another? Compile questions during your research and set out to answer them. Use all the tools at your disposal (books, articles, interviews) to collect sources. Document your source to use as a reference during development. Research done upfront will help tremendously in these next few steps.

2. Get to know your audience:

Try to put yourself in their shoes. Using the research you compiled, start to form assumptions about how a typical user will interact with the application. Distinguish behaviors that beginners use, and compare those to how a professional would behave in the same scenario. Determine which group your app will tailor to by default, and allow room for tools you develop to be easily expanded and configured for future releases. For example, when developing the tuner, we noticed there was a distinct connection between the user and the visual representation of sharp and flat audio responses. The behavior of the in-tune descriptor or needle was very important. It needs to move consistently across the screen and remain steady as the user got more in-tune. Due to the quality of audio intake on some devices through the microphone, it became difficult to filter out background and instrument noise and provide an accurate experience. In this case, we developed our tuner to allow each and every value to be configurable. Therefore, during implementation testing, we could adjust and tweak these value to get it just right. Within these configurations, we applied a smoothing function to normalize our audio input and make the experience more consistent for the end user.

3. Test with expertise:

Now that we have researched our subject, and know our audience, we can develop this app with a better understanding of our users and product. We can use what we learned to start testing with expertise. As a developer, you will often be left to your own devices during the implementation phase. It is impossible to develop a great feature without testing at the same time. Thorough testing by the developer before passing a feature to QA will benefit you by having fewer tickets passed back due to a fail. For example, when testing our tuner, I had to learn how to tune and play a guitar. Not to the level of an expert exactly, but enough to produce results for testing. I needed to know each note, as well as how to audibly tell if I was in tune or out of tune. This way, I could translate expected behavior into actual results produced by the application. Working directly with the client can be beneficial to meet their requirements as well. Use them as a testing resource because they typically have the most background on the subject and audience you are developing the application for.

Following these simple steps can lead you down an easier path to tackling your next big mobile application project. These steps will help make the unknowns, known. For now, and true to the generative spirit of research, our team and I look forward to experimenting, breaking ground in a new field, and sharing lessons learned among colleagues and audiences in the tech sector. So go on, use what you have learned from this blog to make your next big idea a reality.

Notes from the editor

Our UX/UI team who closely worked with the development team on the V-Coach app has recently given a talk on designing this custom application. If you’re interested in how we approached the digital app design portion for this app, you can find the detailed event recap here.

Developing a tailored app that is better suited for musicians, draws attention to and provides solutions for remedying injury prevalence in the music industry, and has the potential to advance the hybridization of arts and technology. We at Shockoe, the mobile technology company engaged in this research, are equally excited about the potential, especially as it pertains to developing more applications to help the academic industry. Ready to have our team help you develop your custom app? Don’t be shy, reach out to us to find out what it takes to make your app happen.

Justin Boswell

Justin Boswell

Mobile Software Engineer

Justin is a Mobile Software Engineer with a specialization in iOS native development, but he enjoys creating frontend and backend solutions across a wide variety of platforms. When he is not spending his days getting Swifty, he enjoys hanging out with friends, playing soccer, and getting wins in online competitive games. He is a Computer Science graduate from Virginia Commonwealth University and was born and raised in the Richmond area.

App Microtransactions: The Good, the Bad, and the Ugly

App Microtransactions: The Good, the Bad, and the Ugly

microtransactions-in-app-purchaseThe concept of app microtransactions is not foreign to consumers of mobile technology in the modern app market. Apps that include or require consumers to submit payment for additional features or add-ons have become the norm. This business model has grown organically as a result of users having a hard time deciding whether or not they should spend their hard-earned money on an app. By making an app free and offering the user the choice to pay for additional features as needed, the barrier to entry for new users to download and use an app has been greatly reduced. This model has its benefits, its downfalls, and its unsightly impact on consumers’ wallets.


The Good  

Developers have immensely benefitted from microtransactions. Developers can more easily test the waters of the market with their apps. Instead of overcoming the hurdle of figuring out whether or not their app is a good idea in the first place, they can create a slimmed-down version of it and release it as a free product. After it has been on the market as a free app for some time, developers can access the potential for the app to have continued success. If the app proves to be working, then they can take the time to implement the rest of the features and release those features at a cost to the current user base in a new update through a microtransaction.

Microtransactions have been most successful in the game app market. Games have an advantage over value product apps in that games are inherently more addictive and entice the user to want to win. Developers have a big opportunity here to add “pay to win” add-ons to help their users win by giving them in-game boosts. These boosts usually come at a small cost for small boosts, and can cost upwards of $100 for larger boost packs. This gives developers the opportunity to make more money than they would with the typical $1.99 to $9.99 price tag of most paid apps on the market.


The Bad

While this model benefits developers, it negatively impacts the quality of apps on the market by requiring a microtransaction to unlock more features. Apps are being released to the market that are not full featured and polished, leaving users with half-made apps and wanting more. While it may benefit developers to release apps on this model, it is unsatisfactory for consumers who look for apps to fit their needs but find that the apps lack the features they want.

It may be that you find a free app on the market that you really enjoy, but unless many others find the same enjoyment in the app as you, the developer might not release an update for it. You wouldn’t want to go out and buy a brand-new vacuum just to come home and find that the one you bought will require you to purchase two or three other attachments in order to vacuum in tight or high places when the packaging claimed it was compatible, right? Apps should not operate this way either, or they will continue to deter consumers from exploring and discovering new apps on the market outside of the mainstream apps that their friends and family use.


The Ugly

microtransactions-the-uglyAdditionally, apps that have success with this model are leaving users with the ugly truth that they will need to sink more and more money into an app to get the most out of it. This practice is particularly prevalent in game apps. As I mentioned earlier about developers having a good opportunity to make money, requiring microtransactions in order for the consumer to be successful in an app exploits the addictive nature of the game, and promises the user that by paying money, they will be able to win. Oftentimes these games involve high scores, and consumers will do anything to beat their peers in order to show that they are superior, whether they pay for the app or not.

Over the past few years, there have been many articles about children who are spending thousands of dollars on in-app microtransactions from games such as Clash of Clans, Candy Crush, Game of War, and others. A child in Belgium who was given a credit card by their mother to buy e-books racked up a total $50,000 worth of microtransaction charges in the game Clash of Clans. Another child in England spent $5,900 on the iPad game, Jurassic World, after memorizing their parent’s password for the App Store. While it can be argued that it is not the microtransactions’ fault for these incidents, it is obvious that microtransactions are enabling this behavior.

Microtransactions have their place in the app market when implemented with consumers in mind. Developers can use them as a tool to allow more freedom in the app-creation process. This way, developers will not be deterred from taking the time to make an app that will not be profitable. Making apps is not a simple process, and the reward of economic benefit helps developers feel better about putting forth the effort to make great apps. Microtransactions just need to be done right, and not with the intent to exploit the consumer. Consumers want to feel good about giving an app a chance and not feel like they are just going to be wasting their time by downloading a free app they can’t use. The amount that consumers can invest in apps should be throttled or deferred into donations for the developers to continue making worthwhile apps.

Improve Productivity with Atom and Oh My Zsh

Improve Productivity with Atom and Oh My Zsh

With every new technology, comes new challenges along with it. These challenges can entail learning a whole new language, a completely different environment, or an entirely different way of thinking. New development platforms are emerging every day. With the latest introduction of Virtual Reality, Augmented Reality, and Voice Recognition into the mainstream product line, the ability to learn and utilize these technologies to stay relevant has become key to creating innovate applications. All new technologies may seem like a monster to tame. It takes the right tools for the job to create an enjoyable workflow. Leaving you time to focus on what is new, and not what you already know.

Most recently here at Shockoe, I have been working in web development to tackle a project based around Angular 2 and a RESTful API service with Hapi for Node.js. Working mainly with iOS development during the majority of my time here, transitioning to these platforms held its own set of challenges. XCode Integrated Development Environment (IDE) for iOS development greatly helps to guide and assist the developer to correct syntax errors, track source control changes, assists in library/framework references, and warn you of potential issues before compilation. With Angular 2 and Hapi, the tools that are needed to be used to assist in development are left up entirely to the developer.

After working for some time with a closed source text editor Sublime, I was introduced to an open source text editor Atom. Atom advertises being modern, approachable, and hackable to its core. It is a text editor for developers, by developers. Being open source, anyone can collaborate and assist in improving Atom for everyone. This allows Atom to be much more expansive and reach a wider audience of needs for the text editor. Atom has over 5000 packages that can help with completion, linting, source controller, formatting, and much more. Atom’s support for packages and customization allows you to tailor the text editor to your specific needs. The auto-completion features of Atom provide built in suggestions for syntax completion by looking through the open solution and buffers to match strings. Atom also has configuration settings to standardize the format of the code you write; keeping it organized and easy to read. Also, users can install and set different Themes to alter the UI of Atom.

As I began development in Angular 2, it was faced with a problem. It’s written in a new language, Typescript. While the concepts were not new, the syntax for implementing them were. The Atom-typescript package gave me everything I needed to ensure that I was writing in Typescript properly and without having to reply on catching small issues at the time of compilation. This greatly boosted my productivity and confidence when working with this new framework. Some source control packages that have posed the most use to me are Git Blame and Merge Conflicts. Git Blame will show you the last person to make edits to a file line by line. Merge Conflicts will allow you to detect potential merge conflicts before they happen so they can be resolved before you put up that next pull request. Atom has some great extensibility into Git source control, but what it lacks can be compensated by the terminal. More specifically, with a bash shell alternative, Z-shell (Zsh).

Z-shell (Zsh) is a Unix shell that is designed for interactive use. It contains many of the features of bash, but incorporates many of its own to improve upon bash. Zsh improves upon bash in a few different ways that make it much more interactive and user friendly. Zsh “cd completion” will list all sub directories using the command “cd <tab>” or “cd d<tab>” in a case sensitive and well formatted manner to allow the users to traverse the directories with the <tab> key. Allowing the User to quickly and easily chose the preferred destination without knowing the exact path by memory. These commands can then be chained to complete full directory paths. “Git completion” assists the user in finding the necessary git commands more quickly. For example, when changing a branch in bash, the user will need to know the full case sensitive name of the branch. With Zsh, a user could write “git checkout <tab>” and be presented with a well formatted and easy to traverse the list of branches for the given repository. I have only touched on a couple of the useful features of Zsh but there are many more ways Zsh can be used to make life using the terminal easier.

Zsh really shows it colors when combining it with iTerm 2 and Oh my Zsh. iTerm 2 is a terminal emulator that extends terminal features into allowing for Split panels for multiple terminals in a single window, paste history from your clipboard, and configurability to change the appearance. Oh my Zsh can be used in conjunction with iTerm 2, or the MAC terminal, to manage Zsh configurations. The framework provides plugins and themes to further extend the features of your terminal. The themes provided by Zsh are great and let the user add a touch of personality to a historically boring prompt.

As our team began working on this new Web Development project, we needed to be able to manage our tasks, record time taken for each, and be able to jump between other projects we are working on.  Oh my Zsh and the ‘Avit’ theme have helped me to manage my time and tasks. With the theme, I can see what my current branch is in any given directory. The branch will be listed alongside the current directory path to indicate where my source is pointing to. Along with the branch name, an indication is given by a checkmark or “X” symbol to notify me of a clean directory or if I have outstanding changes that need to be committed. These two indicators alone save time from listing branches and checking statuses often, thus increasing productivity. A big feature of this theme that is not seen in many others, is a time stamp from your last commit. Along with branch and commit status information, a timestamp in seconds, hours, minutes, days is shown to indicate how long you have been working. Many times during the development process a developer can lose track of time while focused on the task at hand. Leaving the developer scratching there head and giving a rough estimation of the time it took them. With this handy tool, time estimations can be much more accurate.

With these tools combined, productivity can be greatly increased to improve workflow. A decluttered workflow allows for a decluttered mind. Whether it’s a new technology or an existing one, either of the tools can be used to boost your productivity and confidence to taken on a monster problem. Atom and Oh my Zsh have many more features and I only scratched the surface of what is possible. Check out the Atom website and Oh my Zsh repository for more information on features and how to get started. I highly recommend implementing these tools into your current setup to see how you can make them work for you. 

Want to stay connected on all things mobile?

Sign up for the Shockoe newsletter and we'll keep you updated with the latest blogs, podcasts, and events focused on emerging mobile trends.