We're hiring!

We're actively seeking developers for our new Detroit location. Learn more

2 Tools for Better Remote Design Collaboration


There are numerous software options for design teams to communicate. Finding a solution that works for your team can be crucial and daunting. Here are just a few of the commonly used communication channels at Atomic Object: Basecamp, Confluence, Dropbox, Gmail, Google Drive, Google Talk, Google+, HipChat, Pivotal Tracker, Screenhero, Trello, and Yammer.

The AO Designers work closely together and are constantly collaborating. We need tools that are fast, direct, and share content quickly. We are constantly trying new programs which aid us in our work. This post highlights two of my new favorite collaboration tools — Hipchat and Screenhero. Read More »

Posted in UX/Design Tools | Tagged | Leave a comment

Functional(ish) C# & MVVM: Single-Responsibility and Code-as-Data


I’ve spent the last year working in C# and WPF. Over a few blog posts, I have alluded to a particular pattern of structuring code, referring to it as “stateless single responsibility” objects or “stateless SRP” objects. For the purposes of this post I will call the pattern “stateless single responsibility principle” (SSRP) objects. I’d like to go into a bit more detail about what the pattern is and why I use it.

I think it will be simplest to begin with an example problem we might use my pattern to solve, then show how I would do it and explain all the parts. Read More »

Posted in Development Techniques | Tagged , , , | Leave a comment

Avoid Big-Bang Integration at All Costs!!


Though we all (hopefully) know the dangers of last-minute big-bang integration, large multi-team, globally-dispersed projects still fall into this trap all too often when crucial deadlines are looming.

Wanting/needing things to be done, despite the reality that multiple pieces have run past their expected/planned completion dates, does not warrant cutting corners. In fact, these times are where our scientific/engineering ethics tend to clash with our business ethics and create a very toxic environment for all. Read More »

Posted in Project & Team Management | Comments closed

Software Practitioners Shouldn’t Overlook the Design Mgmt. Institute

Are you professionally involved with software at some level — business, programming, high-level design, tangible design, marketing, workplace planning, testing, or something else? Are you aware of the Design Management Intitute (DMI)? No? Go check it out immediately!

Design Management Institute logoIn late 2012 I started reading papers in DMI’s annual Academic Design Management Journal and have truly enjoyed what I’ve read so far. The papers are fairly dense — they read much like the academic journal papers I was reading as a graduate student — but are also rich in depth.

Notable Recent Papers

Here is an overview of some of the papers I’ve read in the last two journals. Read More »

Posted in Growing as Makers | Tagged , | Leave a comment

Finding Reliable Information with Quora, AMA, & Verified Accounts

The Internet has forever changed the way we learn, share, and gather information. From Wikipedia to Google, our ability to consume a topic of knowledge is easier now than it ever has been. However, some topics have few reliable sources, while others lead you down worm holes of opinion blogs with little to no consensus.

Quora, Reddit’s Ask Me Anything, and Twitter’s Verified Accounts try to address the problem of finding reliable information and answers to difficult questions. By connecting you directly with the content authorities, these new services take the guessing out of credibility. Questions like, “What is it like to work at X?” or “How does this very specific model of physics work?” now have places which house the answers. Read More »

Posted in Personal Optimization | Leave a comment

Monitoring Your iOS Traffic

There are a number of free ‘sniffer’ tools around, for your PC or Mac, for looking at and changing the network traffic. The venerable Wireshark, Fiddler, and Burpsuite are some of the ones that I have used in the past, and still fire up today.

What about your iOS devices though? What programs are available for these, so you can see what your phone and iPad are sending out and receiving? I wouldn’t want to try and use an iOS version of Wireshark on my phone, not just because it hasn’t been ported to work on iOS, but because viewing all the data and changing it on a small phone screen is just not physically feasible. So what can you do if you want to see what your device is sending out, and how can you change what is going into it? Read More »

Posted in Developer Tools | Tagged , | Leave a comment

Charting Data with jqPlot

Some of the most interesting and challenging projects involve data visualization. It can be very difficult to express data in a clear way and also make the product aesthetically pleasing. There are many different ways of presenting data to users, and choosing the “correct” visualization is not always a simple decision. Having numerous tools at your disposal, or at least greater awareness of what is out there, can help you make a better decision.

I was recently experimenting with a library called jqPlot, jqPlot is a jQuery plugin that supports drawing line, bar and pie charts with many customizable features. The project I was working on involved a device that monitors the temperature of the contents of a kettle during the process of brewing beer. My goal was to show the temperature as it changes over time and also to indicate a prediction of when the temperature would reach a desired target value. Here is what I ended up with:


To produce the chart above, very little html code was required. Read More »

Posted in Web Apps | Tagged , | Leave a comment

I Hate #regions

As software consultants, we work in many environments. Most of the time we are working in our own environment on a brand new project, but sometimes we work with a team of client developers on existing software. In the later case, we have to be mindful of their coding standards. One practice that drives me nuts is code organized into #regions.

What’s Wrong with Regions?

Microsoft introduced #regions to help organize big files into understandable chunks. In my opinion, if your code can be broken up into regions, then it can be refactored into smaller files. I try to write my classes with single responsibility in mind, where a class has a single responsibility. Therefore regions are not required to organize the code into responsibilities.

Regions are also used to separate private, public, and protected variables, properties, and functions. This is where I see them used most often. If your class is small enough, there is no need to organize them into regions. Read More »

Posted in Developer Tools | Tagged , | 5 Comments

Strengthen your Software Investment with Research, Design, and Planning


If you or your organization is ready to invest thousands of dollars on building a piece of software, you hopefully already have a good idea of who your users are and how they will interact with your product. You could be a subject matter expert, or your company may be a leader in the field that your project is targeted towards, putting you in a great position to provide background on what the software ought to do and how it should be used. What you’re looking for is a top-notch team ready to hit the ground running and build your software.

In a previous post, I discussed how Atomic Object engages with our clients in a phase of Research, Design, and Planning (RDP) at the beginning of each project to help define and refine a software product. If you’re well-prepared and grounded in your field, it could be difficult to see how this work could be worthwhile for your project, and skipping RDP may seem like a great way to save some money towards feature development. However, just a bit of time up front can pay off in a big way during the build phase of your product. Here are several ways an RDP phase can benefit a project. Read More »

Posted in Planning Your Project | Leave a comment

Cross-Train to Become a Better Programmer

last-minute-code-review-smallProgramming attracts people from a huge number of backgrounds. I’ve seen great programmers who started as mathematicians, journalists, musicians, physicists, and mechanical engineers. Even formally-trained programmers come from a wide range of liberal arts, engineering, and business schools. It’s one of few professions where you can be rewarded just for being smart and working hard.

To be honest, I’ve always been embarrassed by how personal our methods are — it’s difficult to separate effective methods from natural talent. Maybe our diversity is the reason I’ve heard us criticized as navel gazers pretending to be engineers. “Herding cats” was coined for us after all!

We are taught data structures, formal methods, computer architecture and technology. We self organize into communities and movements like literate, agile, and craftsman. We write tests, review code, follow best practices, decouple our classes, encapsulate our designs. It’s a little half-baked — even cargo-cultish on a bad day.

Fundamental software design is almost completely missing from programming. Is design valuable? Can we learn how to design? I think so, but not yet from the software community. Cross-train into mechanical design! Read More »

Posted in Evolving the Industry | 2 Comments