Greg Williams

With us since: March 2006

I first delved into the world of computing when my Dad purchased an IBM Personal Computer , including the luxury of one of the first RGB monitors that had a whopping 16 colors! I started delving in deeper by getting books of BASIC programs, hand-copying them, tweaking them, and just playing around with how I could make this box do all sorts of cool things. This led to a deep love of robotics and using a computer to control various types of hardware.

I graduated from Michigan State University in 1998, with a BS in EE and CPE. I started my career in Tucson, AZ as a test tooling engineer at IBM, designing systems for validating the performance and robustness of networked storage libraries. From there, I went on to work at X-Rite, Inc., developing automated-test equipment for production testing of color measurement instrumentation and then moved on to embedded product development. While at X-Rite, I worked closely with Atomic Object, a local software contract and consulting outfit that built their business and sparkling reputation by using TDD and Agile methodologies to add continuous feedback and, more importantly, sanity back into the software development process.

I accepted the opportunity to join Atomic Object, in 2006, in order to help Atomic Object expand TDD and continuous integration into the embedded realm, where we were told it was impossible. My fellow Atoms and I embarked on a journey to make TDD in the C language a reality. This adventure led to the creation of three awesome open-source tools geared towards the C language: Unity (test framework), CMock (mock generator) and Ceedling (build system). These projects are toolsmith creations that utilize the Ruby scripting language to make TDD in C an easily achievable reality. Greg has presented at the Embedded Systems Conferences in both Silicon Valley and Boston.

Currently, I am helping lead an effort to grow a new group of AO that focuses on growing the embedded initiative at AO into its own group, Atomic Object Embedded (AE), along with Mike Karlesky and Scott Miller. AE is focused on creating our own unique embedded culture and distributed team, that embraces the unique constraints of developing embedded systems.

In my free time, I love to spend time with my wife Kelli and daughters Natalie and Sedona. I have a deep interest in music and performance, having played lead roles in stage shows and I also play guitar and sing. I share my musical interests with Kelli, who also sings and plays bass. Another related hobby is music recording and post-production.

Customer Projects

  • Savant Automation: I Developed firmware for modular control and monitoring modules for AGVs (Automated Guided Vehicles).
  • Chrysler: I helped develop a Rails/Ruby test architecture for testing handheld diagnostic devices and software for automotive ECUs.
  • X-Rite: I developed hardware and firmware for color measurement devices and helped fit effective TDD and CI into the development process.
  • Gentex: I helped the Embedded Group obtain Automotive Spice Level 3 compliance by using our open source tools for firmware development and created analysis and collection utilities using Ruby as the catalyst. I am still working at Gentex writing safety-critical firmware, and continuing to introduce positive change in the software process.
Open Source Contributions
  • Unity: A lightweight, C-based unit test framework well-suited for embedded systems.
  • CMock: A mock object framework for interaction-based testing in C.
  • CException: A handy exception framework for C.
  • Ceedling: A build tool that ties the preceding three together.


Feature Driven Design Using TDD and Mocks Embedded Systems Conference, Boston, MA, October 2008

Mocking the Embedded World: practical TDD, continuous integration, and design patterns Embedded Systems Conference, San Jose, California, April 2007

Growing Embedded Applications Organically with Ceedling and Friends : Agile2011 Conference, Salt Lake City, UT, August 2011


Fall ESC08 Boston Preview: Software design doesn’t have to be either/or (Interview of Greg Williams and Mark VanderVoord by Bernard Cole),, October 2008

Mocking the Embedded World: Test-Driven Development, Continuous Integration, and Design Patterns: Embedded Systems Conference, San Jose, CA, April 2007

Blog posts

Read my blog posts on Atomic Spin

Blogs of Interest

Agile Embedded at Yahoo! Tech Groups

Copyright © Atomic Object LLC. — +1 616 776 6020 — Contact Us