We're hiring!

We're actively seeking designers and developers for all three of our locations.

6 Helpful Sketch Shortcuts

Tablet Portrait 5

The Atomic Designers recently got together to work on an internal project. One of my favorite things was seeing how my fellow atoms used their design tools. In particular, I learned a few new Sketch shortcuts and techniques to use. We have been using Sketch at Atomic for sometime now, and we’ve all come to enjoy using it.

In the spirit of sharing, I have compiled my newly updated list of most useful Sketch keyboard shortcuts.

  • Presentation Mode – cmd + .
  • View all artboards – cmd + 1
  • Group Layers – cmd + g
  • View/hide Layout – ctrl + l
  • Move layers back/front – opt + cmd + arrow
  • Color picker – ctrl + c

Read More »

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

What You Should Already Know about JavaScript Scope

If you are a novice JavaScript programmer, or if you’ve been messing around with JQuery to pull off a few animations on your website, chances are you’re missing a few vital chunks of knowledge about JavaScript.

One of the most important concepts is how scope binds to “this”.

For this post, I’m going to assume you have a decent understanding of JavaScript’s basic syntax/objects and general terminology when discussing scope (block vs. function scope, this keyword, lexical vs. dynamic scoping). Read More »

Posted in Web Apps | Tagged , | Leave a comment

7 Nuggets of Inspiration from BoSC 2014

I just got back from the Business of Software Conference in Boston. It was my third time attending, but my first time since 2010. Overall, this year’s conference was once again a positive experience.

When I attend conferences, I always strive to take good notes during the presentations. Recently, I’ve also made an effort to keep a separate page of notes that’s reserved for the top nuggets of inspiration that I learn or ideas that come to me during the presentations and networking. These nuggets and ideas are not necessarily the key topics or points of the presentations. They are simply my subtle takeaways.

These are my nuggets of inspiration from BoSC 2014: Read More »

Posted in Growing as Makers | Leave a comment

Tips for Blasting Old Drives with DBAN

I recently found myself needing to blast the data off of some old hard drives, and DBAN is a wonderful tool for this task. That said, I still bumped into some trouble getting it setup and running; in this post, I’ll share what I learned so that you can get it running more quickly than I did.

DBAN is great for wiping old drives.

DBAN is great for wiping old drives. Image credit dban.org.

In summary, the steps are :

  1. Download DBAN and UNetbootin.
  2. Use UNetbootin to flash the DBAN image onto a USB drive.
  3. Follow Alex Pounds’s steps for fixing the configuration files on the USB drive. Thanks, Alex.
  4. Boot up with the DBAN drive and start wiping that old data!

Read More »

Posted in Extracurricular Activities | Tagged , , | Leave a comment

3 Atoms Join Ann Arbor & Detroit Teams

In the past few months, three new Atoms have joined our molecule – one in Ann Arbor and two in Detroit. I asked each of them to tell me a little about themselves and to share their favorite thing about Atomic Object so far.

Matt Behrens

“I’ve been a software developer for many years, but almost always working on a team of one. Joining AO has been an opportunity for me to learn how to work together with other makers with a passion for quality like mine. I feel like I’ve only just got started, but I’ve learned so much already, and am looking forward to continuing to learn and grow on that front, thanks to my awesome co-makers.”

Matt is the newest developer in the Ann Arbor office, where he’s been working on a project for RouteOne. Read More »

Posted in News & Events | Leave a comment

Shellshock – CVEs, Patches, Updates, & Other Resources

First announced almost a month ago, Shellshock continues to endanger un-patched web servers and Linux devices. So what is it? How can you tell if you’re vulnerable? And how can it be addressed?

What Is Shellshock?

Shellshock is a vulnerability in the bash software program. Bash is a shell, installed to Linux and other operating systems in the Unix family. A shell is a software component that is deeply integrated into the operating system, which is what makes this vulnerability so insidious.

The Shellshock vulnerability is a bug in the parser. It was first introduced more than 20 years ago when a feature to allow exporting functions was added. The danger is that an attacker who could control the content of an environment variable could potentially execute arbitrary code on a vulnerable system. Remote code execution (RCE) vulnerabilities (also called “arbitrary code execution” vulnerabilities) are among the most dangerous. Paired with privilege escalation vulnerabilities or poor security practices (e.g. allowing web servers to run as privileged users), unaddressed arbitrary code execution vulnerabilities can lead to the complete takeover of vulnerable systems. Read More »

Posted in DevOps & System Admin. | Tagged , | Leave a comment

Google Protocol Buffers Libraries for C

Google Protocol Buffers have become a very popular serialization mechanism for simple to complex/variant data structures. Due to the variation of message formats in a given protocol, the presence and/or lack of fields on an ad-hoc basis makes implementation in the C language somewhat of a challenge.

Three Protocol Buffers Libraries for C

Thanks to the open-source world, a couple of valid options exist, but choosing the right one depends on the complexity of the protocol and memory/performance requirements.

Google Protocol Buffers for C++

The obvious first choice may seem to go right to the source. Google’s Protocol Buffer Compiler supports the generation of a C++ protocol implementation from a .proto specification. Though you are developing in C, and your complier supports C++, you could use the C++ API directly from C, or at least create a C wrapper for the target protocol.

  • Pros: Formally supported by Google, bleeding edge
  • Cons: Well, it’s C++ and does lots of dynamic memory allocation

Read More »

Posted in C & C++ | Tagged , | 2 Comments

9 Lessons Learned from a Year of Usability Tests


When I started at Atomic, I had never participated in or conducted a usability test. In true AO teach-and-learn fashion, I’ve since then been a part of user testing on all of the major projects that I’ve been on since I started almost a year ago.

I have a few concrete take aways that I would want to hear if I were going back and learning about usability testing all over again.

1. Sit in on a test first.

This is probably obvious. But be sure to sit in on a test first, and not as the lead facilitator. See how your teammates run tests, and be there to ask supporting questions and take notes. I recommend pen and paper notes so that you don’t intimidate the tester with the clicking of a keyboard after every comment. Read More »

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

Keeping a Development Journal

journalingLife gets crazy, and things slip our minds. A great discovery, a bug, or a general direction we were taking our code can get lost between development sessions.

In my personal projects, where time between development sessions can be days or weeks, I have been keeping a development journal. As much as it takes an additional couple minutes, it allows me to express intent and task my future self with necessary work.

Read More »

Posted in Development Practices | Leave a comment

Using the Raspberry Pi as a Simple Current and Power Meter

On a recent project I needed to fairly accurately measure current and power consumption of a handful of parts in real time. We needed to measure current in the range of micro amps, so this was actually somewhat tricky.

I could have just used a bunch of super expensive current meters, but I managed to find a much more convenient and cheap solution using a Raspberry Pi. We were already using a Pi to allow for remote debugging, so I went looking for something I could hook up to that.

I found these ADCs:

They plug right into the GPIO headers on the Pi and even come with some python libraries for reading them.

Read More »

Posted in Embedded Systems | Tagged | Leave a comment