Thoughts on Engineering, Photography, and Design.

Hey, I'm Ryan Heath. I design & develop things for a living and play with cameras for fun. This is where I share my thoughts on all of that — and probably more — along the way.

Fast Software, the Best Software

The subtitle says it all… Excellent article, and very timely, as our team is currently focusing purely on performance right now.

Jam Icons

Having a consistent icon set is a big deal in product design. I stumbled upon this one, which offers close to 900 free vector icons.

Designing for the Big Picture

A very challenging aspect of designing something is keeping the holistic view in the forefront. It’s difficult because all of the individual parts of a design nag and pull for attention. We’re taught to care about the details, after all (and we should!). But that’s wherein the challenge lies: caring about the details with the big picture in mind.

Ryan Singer has talked about this a lot in the past. Specifically, in relation to designing with forces. The idea is to not let the design interfere with what the design is trying to accomplish, the problems at hand. Once you define the forces involved, that becomes your checklist for how well those individual parts are solving the problems. That separation is important.

As often the case with good solutions, it seems like a very obvious and simple approach, but we don’t always go about it this way.

I don’t think this is something that is easily conquered, it’ll be a challenge with design for as long as things are being designed. This is just one way—a pretty effective way—to mitigate the issues that can arise when the big picture hides in the background.

People are time bound entities transitioning from cradle to grave. Any “solved problem” that involves human beings solves a problem whose parameters must change through time.

A quote by Bruce Sterling
Unified Design

Yet another good talk from Cameron Moll.

Something to think about every time you design a UI.

I spotted this graphic while reading an article about Awkward UI, and found it to be a wonderfully simple reminder (and checklist?) when designing new screens.

Noizio — Ambient Sound Equalizer

I’ve only been using this app briefly, but if you like noise while working that’s not always music, this might be exactly the app. It stays out of the way, great little UI, and does what it says very well (although, keyboard shortcuts would be a welcome addition).

Humanizing Software

User-friendly software is a goal for anyone who builds or designs it. It’s a very tough challenge. Code, best practices, and browser-restrictions all get in the way, clouding up the human-factor.

For example, let’s look at user-restrictions. It’s easy, in code, to make a decision firm. Let’s say Plan A offers 5 users and Plan B offers 10 users. The logic to add a new user might go through a path like this:

1if (plan == A && users.count == 5) {
2  # too bad, you're maxed out!

That’s what the software says. Clear as day, hard and firm. There are no considerations beyond that. But what if someone needs only 6 users? Just ONE more? Is the best solution forcing them to upgrade to Plan B? Maybe it is, but I’m not so sure.

What if that same conditional could be more like:

1if (plan == A && users.count == "close enough") {
2  # go for it, we want to make you happy!

Is it better to have a happy customer with 6 users on a 5 user plan than a frustrated customer with 5 users on a 5 user plan? Forcing that customer to make a decision bumps up the chances they will leave. And if they don’t leave, odds are they’re hovering around the 5 user limit “making it work” to avoid the upgrade. So now they’re inconvenienced by the product, and that might leave a bad taste.

I’m aware that a line has to be drawn somewhere. Allowing 20 users on Plan A is surely too much, but paying extra attention to the edges is an interesting thought. If this were done manually, human-to-human, a real person might say “it’s no big deal, you can have one more user” in an effort to keep the person happy. Why shouldn’t software do the same thing?

Generally, rules are rules, and so it’s expected (even by customers) that they live within their plan restrictions. But wow, what an opportunity to go the extra mile and make a customer that much happier!

User-restrictions are just one of many areas where we can consider being less robotic. So, yeah, humanizing software. That’s what I’ve been thinking about lately. We’ll see where it takes me.

Early On, Let Ideas Be Cheap

A couple in their very first relationship often don’t get married; your first job out of school is likely not where you will retire; when car shopping, buying the very first car you look at probably isn’t the best approach. There are a lot of “firsts” in life that you shouldn’t get overly attached to, and ideas are no different. Let them be very simple, cheap thoughts early on.

This may seem counter-intuitive because, in design, we’re taught to really focus and hone in on a solution. Pay attention to every detail. It’s hard to hear things like that while also working fast and somewhat carefree. It doesn’t feel like they match up.

But, effort is directly related to how attached to an idea you become, and time is directly related to effort. The more effort and time you put into an idea, the harder it will be to let it go if it doesn’t work. Visualizing alternatives can unintentionally be skewed by the idea you went all-in on. So avoid all-in up front. Often enough, a simple sketch can give you the insight into whether or not it’s worth pursuing. You can scratch stuff out, make notes, and literally try anything you want.

So, a reminder: don’t run the risk of designing yourself into a box by over-dedicating to an early-stage idea. Keep the jobs-to-be-done in mind, but at first, try keeping the effort low. It free’s the mind to explore. Once you feel like the direction you want to go in has been realized, dig in a little deeper and put in the time and effort to see it through.

Design Machines

Maybe one of the best articles I’ve read in 2015.