Design Thinking Toolkit, Activity 2 – Story Mapping

Welcome to our series on Design Thinking methods and activities. You’ll find a full list of posts in this series at the end of the page.

Story Mapping

Primary Goal To get a detailed understanding of the user’s experience.

Read more on Design Thinking Toolkit, Activity 2 – Story Mapping…

Centralize Callback Handling by Creating a Reactive Signal

When I first started using ReactiveCocoa (now ReactiveObjC), I mainly stuck to the basic operators: map, flatten, merge, etc. I saw a few examples of createSignal, but all I saw was a lot of manual work with disposables, subscribers, and other tedious sorts of things that I didn’t really want to mess with. Read more on Centralize Callback Handling by Creating a Reactive Signal…

How to Estimate an Agile/Scrum Story Backlog with Points

When you’re trying to get started on your first agile/scrum project, it’s easy to find arguments about why it’s a good approach. But it’s a lot harder to find clear, step-by-step explanations of the tools and processes you need to succeed. I’m trying to fill that gap by answering the question: How do you estimate story points on an agile/scrum project?
Read more on How to Estimate an Agile/Scrum Story Backlog with Points…

Building a Siri/iOS HomeKit-Enabled Garage Door Control with Raspberry Pi – Part 1: Hardware

This summer, I decided to explore home automation using a Raspberry Pi. I thought that it would be fun to control my garage door with Siri/iOS HomeKit and spent some time building a basic controller using JavaScript and some nice Node.js packages.
Read more on Building a Siri/iOS HomeKit-Enabled Garage Door Control with Raspberry Pi – Part 1: Hardware…

Atomic Welcomes Kelly & Mary to Operations Team

In addition to the 50-or-so designers, developers, and delivery leads who make software products for our clients, Atomic has another 10 employees who keep things running behind the scenes.

Two new Atoms joined the operations team this spring: Kelly Daniels in Ann Arbor and Mary DeYoung in Grand Rapids. I asked them to tell me a little about themselves and to share their favorite things about Atomic Object so far. Read more on Atomic Welcomes Kelly & Mary to Operations Team…

Collecting Form Data with a Google Chrome Extension

Recently, I was interested in creating a Google Chrome extension that would work similarly to a password manager, such as LastPass, to monitor the data in form submissions. Working on this task is actually what led to my last blog post, a lighthearted take on my mental stages of programming. Read more on Collecting Form Data with a Google Chrome Extension…

Understanding UIAppearance Container Hierarchies

I recently had my first run-in with the UIAppearance infrastructure that has been built into iOS for, admittedly, a long time. Given my experience with CSS, I brought along some assumptions of how appearance(whenContainedInInstancesOf:) would probably work. Naturally, these assumptions were very wrong. Read more on Understanding UIAppearance Container Hierarchies…

TODO Comments Don’t Work

I recently came across a Harvard Business Review (HBR) article by Daniel Markovitz called To-Do Lists Don’t Work and found it very insightful. I use to-do lists all the time, but I’ve never felt like they help as much as I expect them to—that is, until I started following the suggestion that Daniel mentions in this article.
Read more on TODO Comments Don’t Work…

Understanding and Embracing TypeScript’s “readonly”

If you’ve tried to use JavaScript in a functional style, you’ve no doubt chafed at the fact that all those little objects flying around at any given time are about as far as they can possibly get from immutable. You can, of course, be careful to write code that never mutates an object, but while good practices improve your code, they’re weak defenses against bugs.

TypeScript can help you with its readonly property modifier. With readonly, you can rely on TypeScript’s static analysis to enforce and flag mutations in your codebase.
Read more on Understanding and Embracing TypeScript’s “readonly”…

loading…