We're hiring!

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

Accessing a .NET Virtual Machine Application from a Host Machine

I’ve recently been working on a .NET web application. We are mainly a Mac-based development shop at Atomic, so I’m working on this application in a virtual machine. My weapons of choice are VMWare Fusion and Visual Studio 2012 (not much of a choice), but that is neither here nor there.

Our application uses the Helvetica Neue font family. This font comes pre-packaged with Mac, but isn’t included in Windows. So, in order to effectively design and preview our application, I needed to make it available from my host machine. Here is how I did that.

Read More »

Posted in .NET / WPF | Tagged , , , | Leave a comment

“Progressive F# Tutorials” |> Reflections

I recently attended the Progressive F# Tutorials event in DUMBO, New York. It was a really great experience, and I think much of that is due to the way it was both a conference and more than a conference. Specifically, many of the talks featured hands-on tutorials, which provided a great opportunity to learn and digest new things.

For example, after opening remarks by Don Syme — F#’s original designer — I went to a session where he taught us about F# Compiler Services by providing a sample project with exercises to complete. He then went around from table to table helping anyone who was struggling. Quite naturally, this also encouraged us to work together with the others at our table, and we enjoyed getting to know each other and working together to solve the exercises. All in all, I found it a much more satisfying learning experience than just slides and a demo.

I also really enjoyed that afternoon, where Jack Pappas talked about writing compilers in F#, and his sample project with exercises even went so far as to include NUnit tests. That really struck a chord with this test-driven developer, to the extent that I got so excited about going from red to green I initially missed one of the exercises that didn’t include a failing test. Read More »

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

Get Creative with Rubygems and Cocoapods

A lot of people use dependency management tools such as Rubygems or Cocoapods in their applications. These tools make it very convenient to pull in open source libraries and use them in your project without all the hassle of manually downloading projects, copying files, and keeping track of versions. While using these tools to pull in widely used open source libraries is very nice, don’t forget that you can also use them to manage pieces of shared code between your own private applications.

The last few projects that I have worked on included multiple applications that pass data between them in some non-standard way. In order for each application to correctly interpret data from the other, they each had to have a common definition of what structure of that data was — a protocol.

There are many ways of defining a protocol, and I won’t go into those details here, but once you’ve defined a protocol, how do you share it amongst the various parties that use it? Read More »

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

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 | 1 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