How to write good requirements

Requirements are pretty ubiquitous in the embedded world. They are used to define tasks, help coordinate large development efforts, and to communicate the behavior of the desired end product between the developers and the customer. When done right, requirements can be very useful. Unfortunately, if you spend much time working in the embedded world you quickly discover that there are a lot of bad requirements. And then when you try to go fix them, you quickly discover that writing good requirements is hard. Here are some tips that will hopefully make the process more clear: Read More »

Posted in Embedded Software | Tagged , , | 12 Comments

You Should Read: The Visual Language of Dashed Lines

How heavy should this line be? Should I use weight, value, or dashes to de-emphasize it?
Read More »

Posted in Visual Design | Tagged | Leave a comment

Writing a good blog post—An 11-step process

At Atomic Object, we all participate in writing for the company blog. It can be hard to come up with new ideas that feel worthy of being published. However, once the rhythm of writing is established, I find the ideas and writing come easily. In addition, it’s so easy to publish on the web that it can be hard to avoid sloppiness and mistakes.

Over the years, having done some writing for the web, I’ve discovered a few steps that seem to help. This process has improved my ability to write my blog posts and general web content. While I don’t claim to be an expert on writing, I have a few insights to share about what I’ve learned along the way. Read More »

Posted in Web | Tagged , | Leave a comment

Be Memorable. Everyday.

This month I lost my dad. He was a wonderful, imperfect man who was lucky to have lived a long, full life. In my sadness, I’ve been pondering somber topics like my own mortality. I’ve been asking myself what I might want people to remember about me after I shuffle off this mortal coil. My sad, dark thoughts brightened when I read Christina DesMarais’s article: How to Be the Most Memorable Person in the Room

Here’s the author’s summary of how two people in her life operated and as a result, how they had big, positive impact on those in their personal and business lives. I’m inspired by what my dad taught me in life and how his lessons parallel this article’s deceptively simple counsel:
Read More »

Posted in Company, Reviews | Tagged | 2 Comments

Objection is over 1 year old

Objection, the dependency injection library initially written for the iOS application SideReel, is over a year old. Shawn Anderson and I created it when he candidly pointed out how awkward my previous attempts at Dependency Injection were in Objective-C (NIB, manual construction, factory methods).

Shawn’s honesty (something we all appreciate here at AO) motivated me to do it the right way.

So, I sketched something like this out in XCode:

Read More »

Posted in Culture, Languages, Mobile, Pairing, Uncategorized | Tagged , , , , , | 2 Comments

Advanced REST/API Resources

I recently wrote a small wrapper for the Flickr API in backbone.js. I found the Flickr API to be a little strange but very consistent in its strangeness. When developing a web-based application, thinking about your API can help demystify design and responsibility of controllers, models, routes etc. Here are a few resources I’ve found helpful for HTTP APIs, REST, and versioning APIs.

  • Rest Worst Practices – From 2008 but still a great resource Jacob Kaplan-Moss writes about his experience with REST and what not to do
  • Creating an API – John Nunemaker of Ordered List and now GitHub writes about creating an API for Guages. His use of presenters to present models as JSON is a great pattern.
  • Separating API logic with decorators – Simon Coffey uses decorators to easily advance the version of an API. This pairs nicely with Nunemaker’s use of the presenter pattern.
Posted in Design & Development, Web | Tagged , , | Leave a comment

Higher-order Contextual Functions in Clojure

A lot of functions in Clojure take the form (f args1* f2 args2*), where (f args1) represents a context and (f2 args2) represents a computation to perform in that context. I’m going to call this Clojure’s “contextual function” pattern (since I’ve never seen it named before). This pattern is easy to overlook, but it’s powerful, usually easy to apply, and following it in your own code has a number of benefits.

Read More »

Posted in Languages | Tagged | 3 Comments

Prepping for the Pitch

IMG_3275.jpg
About a week ago I had a wonderful opportunity – I gave one of the five pitches at the January 2012 5×5 Night. Mike Marsiglia, myself, and three others have been working on a side product for about a year now1 and I pitched it at 5×5. We were planning to use the money to hold several small marketing events to meet new customers, but we were not selected to receive any money. Despite not winning the juried award, we still took home $135 as part of Mercantile Bank’s sponsorship and met about a half dozen sales leads. Not bad!

Here are some of the steps I took to prepare for the most intense talk I’ve ever delivered.
Read More »

Posted in Events | Tagged , , | 1 Comment

The Ethics of Our Gadgets

Candy applesThere’s been a lot of news lately regarding Apple and its relationship with manufacturers and suppliers, particularly Foxconn. A lot of Atoms are big Apple junkies, but as a group we are very into sustainability, so of course it was quite troubling to hear that my iPhone might be the result of someone’s back-breaking shift in a poorly ventilated factory. This isn’t the first time I’ve heard of troubles at Foxconn, so I decided to dig a little deeper.
Read More »

Posted in Community, Company, Culture, News | Tagged , , , | 1 Comment

CSS3 Transitions – Spicing Up DOM Changes

In one of the web projects I have been working on we have a handful of elements on the page change size when they were “toggled”. This was a simple add and remove of an active class (via jQuery’s addClass() and removeClass()) that caused our elements to snap open and closed. The user experience was good, nothing jarring. Just when we were about to move to another area of the app, we decided to smooth out the snapping of the UI to increase the user experience. We had two apparent options: a JavaScript animation library, or CSS3.
Read More »

Posted in Visual Design, Web | Tagged , , , | Leave a comment