Project Development

UX and Design, Project Development

Five Questions to Consider When Onboarding New Users

Onboarding is the process of introducing new users to a product. At its most basic level, onboarding should explain how your product works. But truly effective onboarding sends an even deeper message. It should let users know how your product will enhance their lives. Most users call it quits after only a few times trying a problematic app—onboarding may be your only chance to convince users that your product is worth their time and energy.

Coding, Project Development

Debug Your Code the Easy Way

Debugging is very much a way of programming life. Unfortunately for novice programmers, most people won’t tell you that. I learned later than I would have liked that much of programming is not writing new code, but figuring out what’s wrong with your existing code. To help you figure out what is broken and how to fix it, I am sharing my seven best tips on how to debug your code.

Project Development, Coding

Three Ways to Optimize $scope.$apply() and Improve Your AngularJS App

Like many novice AngularJS programmers before me, I thought I struck gold with the $scope.$apply() method. That method seemed like the perfect way to ensure that all of my bindings updated properly. Though I came across cautionary tales, I did not heed the warnings—the method seemed to work so well. My code was soon littered with $scope.$apply(). Then my app’s performance began to take a hit.

Coding, Project Development

Improving Text Input Fields in Ionic and AngularJS

Today I’m going to go over how to customize and improve the text input field that comes with the Ionic framework. I am writing this tutorial because Ionic does not have form documentation beyond HTML markup (probably because forms are fairly standard in AngularJS, which is the framework Ionic is built on). While the methods I describe are not overly complicated or tricky, it did take me a few hours to get all of these features to play nicely together.

Project Development

You Have an MVP. Now What?

About a week ago, I reached a breakthrough in Leder. I finally finished the basic functionality in my app. I was thrilled! Leder was working! First-class honors was in my future. (See Irish grading system.)  About two minutes later, reality sunk in. There was—and is—much left to do on my project in addition to the basic functionality. Some of the outstanding issues are crucial to Leder’s functionality (for instance, what if the user imports the same note twice?), some crucial to its user experience (what if the user wants to clear the highlighting from a given section?), and of course, many issues fall under nice-to-haves (search, filler notes, etc). 

Project Development, Coding

How I Settled on PouchDB

Once I decided my journalism app needed a database, I considered first and foremost what data would be stored and what I wanted to do with it. 

Determining the requirements surrounding your data and application is, in my mind, the most important consideration in choosing a database. There is no one superior database—all have different pros and cons. It’s important to know what you absolutely need, and what you can do without.

Project Development

Project Reflection: How I Organized My AngularJS/Ionic Application

In an effort to better present and document my code, I decided to go through what I’ve written thus far with a fine-tooth comb. Fortunately, AngularJS (and consequently Ionic) is an MVC-based framework, meaning that code is logically divided between the model (the data and inner workings of the program), the view (what the user sees), and the controller (which controls the view based on the model).

For example, let's say the model is an array of 10 numbers, which exists somewhere in the code. The user may only see numbers one and two. The controller controls what the user sees, setting the array to only display numbers one and two. 

Project Development

Project Reflection: Mobile Touch Events

Last weekend, I spent more than 10 hours trying to figure out why my custom highlighting functionality was not working in iOS Simulator, yet worked perfectly in the browser. I did not find too many resources online, so I am writing this post in the hope that it may shed some light for others.

To bring you up to speed, I am building a mobile app for journalists—tentatively called Leder—that will allow them to import notes from various sources, extract quotes, rearrange those quotes, and export a finished outline to their computer to use as a base for articles. I am writing it in HTML, CSS, and JavaScript, using the AngularJS and Ionic frameworks.

Until this point, I had written a series of functions that split one long string (a paragraph) into an array of strings (individual words), separated by whitespace. I recorded the first and last strings touched by a user, and applied a yellow background—a "highlight"—to the first string, last string, and all of the strings in between. The touch event fired continuously, and so as a user dragged his finger across the screen, the last string he touched updated continuously.