LinkedIn recently agreed to pay $13 million in a class action lawsuit that ultimately resulted from bad design. The short explanation is that LinkedIn sent emails on behalf of users who did not agree to send them. Unfortunately, misleading design like this is seen all too frequently. It even has a name — dark pattern UX, carefully and intentionally designed to trick users into doing things they don’t really want to do.
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.
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.
Last March, I received and accepted an offer to work at Viget, a highly regarded digital agency, as their first full-time UX Apprentice. Now that the summer is drawing to a close, I can confidently say that I’m a much better UX designer now than I was 10 weeks ago. I worked on client and personal projects, expanded my skillset through professional development, and received direct mentorship from Viget’s UX Director. So, to wrap up my apprenticeship, I want to reflect on my experience here at Viget and highlight some of the various aspects that made it so wonderful.
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.
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).
A design studio is a group brainstorming session where participants sketch, share, and iterate in order to explore various design directions and come up with new ideas.
Usually, design studios are held at the start of a project. In my case, however, my mentor suggested that I hold one during a transitional phase in my summer project. I was shifting mediums from a somewhat static text document to an interactive web app, and wanted to get some fresh perspectives and energy.
My Viget colleagues were eager to help out, and I managed to put together a diverse team spanning design, development, business development, and user experience across our different offices. This added a challenge—running a design studio remotely—but the result was well worth it. I couldn't have asked for a better group.
Today I want to share five things that helped our remote design studio run as well as it would have in-person.
Six months ago, Kelly Kirkpatrick of SOSventures reached out to me about redesigning the website of MATHletes, Ireland's premier maths competition in conjunction with Khan Academy. Over the following weeks and months, I worked with Kelly to define requirements, understand the needs and wants of those using the site, and design the site in an intentional, user-centered way. I'm pleased to say that mathletes.ie is finally up and running.
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.
Like many before me, I populated my app with filler data during my nascent development days. Since I was preoccupied with writing the business logic, it made sense to use fake stories and interviews. Plus, using hard-coded data allowed me to avoid a painful truth—databases terrified me.
Although I have accessed databases before, I had no idea how to set one up from scratch. Filler data was my buffer.
About six weeks into development, though—after I successfully connected my app to Evernote—I knew I needed to consider more critically how and where to store my app’s data. I finally accepted that I needed a database.