Preventing Bloated View Controllers with Coordinators in iOS


A cartoon image depicting a coordinator pattern.

Overstuffed View Controllers: a problem that is universally despised by iOS developers the world over. Who hasn’t had their eyes glaze over while staring down debugging a 3000 line VC? View Controllers can control so much information, and Apple seems to have very few opinions on where specific logic should go. They give us the decision making power. How can we prevent against this annoying problem and modularize our apps better? Model–View–View Model (MVVM) can certainly help with this, but ultimately leaves routing to View Controllers, which doesn’t make the most sense. This is where a Coordinator comes in.

Learning from Project Retrospectives



Grio has adapted the Agile methodology to our consulting business; and one of our most valued “ceremonies” is the retrospective. We keep these meetings open to all, and the notes from these meetings are in a shared folder for everyone at Grio to read.

Despite having access, I found them “gathering dust” so to speak, and decided to dig through the entire folder to track Grio’s ability to implement the changes proposed and avoid the pitfalls of previous projects. We’re genuinely asking ourselves, “Are we serious about learning from mistakes?”

I’ve explored the overall process of my research here, and have presented the findings in depth to our entire team. There’s some good news, and some work to do; but we’re happy to see that our efforts have created tangible benefits to our team, our clients, and our bottom line.

We’re asking ourselves:

“Are we serious about learning from mistakes?”


What Is a Design System and When to Create One


Throughout my continuing journey as a designer I have started to notice several companies are creating what they call design systems. Some people also like to refer to them as design languages, visual languages, or human interface guidelines. Google has Material Design, Apple has created their Human Interface Guidelines, last year Salesforce put together their Lightning Design System, and Airbnb has recently put together a visual design language for their design team. I became curious as what a design system is and why these companies have started to create and document them. Below I’ve broken down my research into a few sections: what is a design system, what are the benefits, and when it is and isn’t beneficial to create one.

The Elements of Style


A spate of applications have popped/cropped up in recent years with slogans like “Make Anything Art.”  They purport to transfer the style of one image and render the content of another image in that style.  In the sets of images below, the small inset image is the source of the “style” which is transferred to the larger image.  It’s an impressive trick, although I don’t know that it accurately represents what we mean by ‘style’.

Prototyping with Principle: A Quick Review


Principle Icon

I’ve partnered with my client, Texture, for more than two years, and I am still continually learning in all aspects of design. I’ve been lucky enough to pick up two software programs in the last year; Sketch and Principle. I’d like to give a quick review of Principle and share my pros and cons as a new user

Introduction to 3D Printing


3D printing is the process of creating a three-dimensional object by adding many layers of material together. This process is performed by a computer controlled machine commonly called a 3D printer. This article will primarily be discussing the Fused Deposition Modeling(FDM) method of 3D printing. Most FDM printers will heat up plastic and push it out from a nozzle. This process is called extruding.

Centaurs Versus the Total Perspective Vortex: Data Visualization and Complexity


Data visualization projects are probably what first drew me to software. I loved the idea of creating tools with beautiful interfaces that allowed people to see, interact, and play with big systems and concepts that are ordinarily hidden from view. Our lives are shaped and shaken by complex forces; making them tangible is a potent challenge, and one that really speaks to me.

In this post, I’d like to talk about some of the ways data visualization holds utility as a means of democratizing systems thinking, some considerations for how this can be effectively achieved, and how we might think of data visualization as a tool in our kit when approaching Big Serious Complex Problems.

The Magic of Agile and the Design Process


Over the past year, I’ve been working as the solo designer embedded in a team of mostly developers and one project manager designing web experiences and publishing software for one of our clients, We follow an agile methodology and work hard to effectively and efficiently integrate design. This blog post breaks down the major phases of our process and illustrates, at a high level, the role of design throughout.

Developing for Web Accessibility


HTML 5 represented in American Sign Language

When developing websites it is important to consider your audience and how they interact with your application. This can be even more significant for a person with disabilities. Even the most stunning visual presentation can lose its value when the content cannot be interpreted by an individual due to, for example, a learning disability or difficulty seeing. Therefore, it is important, when doing any development or design, we do not dismiss the 1 in 5 people that would benefit on an accessible web.

Design Synthesis: What it is and How to Apply it to a Design Process


The Magical Part of Design

There has been a few occasions over the course of my design career when I’m asked how I come up with a design solution and know it’s the right one. I’ve never had a satisfactory answer for this because it’s too complex to explain succinctly, so I usually answer with something as simple as “creativity and validation,” which is not far off the mark, but rather vague. A better answer, at least in the context of product, software, and website design is synthesis, which is the magical part of design that uses insights from data to generate epiphanies and inform design decisions.