Here are a few reasons to explore LiveScript. Read More
Surgeon Simulator 2013
Let’s look at a hypothetical situation. You have a medical issue requiring surgery. While there are many surgeons that could get the job done, each one has their own level of ability and skill. Through their choices, the surgeon will affect overall “quality” of the operation — which procedure is used, cosmetic results, general odds of success, and how any unforeseen complications will be dealt with. The surgeon won’t have a complete picture of the situation until the operation is underway, and even then surprises are possible, so overall skill is essential.
If faced with this choice, how do you determine which surgeon to hire? It’s not easy when risks are (potentially) high and your technical understanding of the field is low. Your choice could have a potentially dramatic effect on the outcome, and there’s no going back.
I imagine that this is very similar to how it feels to be tasked with selecting a firm to develop custom software for your business.
At retrospective meetings, we reflect on how our team has been operating, sharing both the good and the bad. We try to identify problems and take actions that solve those problems.
But just as important as fixing procedural problems is giving individual team members the chance to speak, be heard, and “air-out” anything that’s been bothering us. Ideally, we will honestly share our feedback and perspectives, and humbly acknowledge our mistakes. In reality, though, most of our retros fall short of that standard. Here are some common problems and ideas to help work through them. Read More
One of my responsibilities as the managing partner of Atomic’s Detroit office is business development. At first it sounds like a new-age word for “sales,” but while there is a sales component to this responsibility, at Atomic it encompasses more than being focused on a single sales transaction.
Don’t misunderstand me — we’re working hard on bringing work to our growing Detroit office. Our ability to remain in the Detroit market depends on it. But “business development” means taking a longer approach, becoming an active, contributing member of the business community and building relationships with other people in it.
Here are four ways we’re developing business and growing in Detroit. Read More
When I joined Atomic Object back in July 2012, learning the names and faces of my fellow Atoms was a challenge. I was working from our recently-opened office in Detroit, but most of the people in our company were based in our original Grand Rapids office. Aside from the three people I was working remotely with on my first project, I wouldn’t have much opportunity to see or interact face-to-face with Atoms in the other office.
I decided to use Anki to create a set of digital flashcards to help. On the front of each card, I put a person’s photograph from their bio page on our website, and on the back I put their name and some trivia, such as the year they joined Atomic.
Creating the cards in Anki was a piece of cake. I started with Anki’s built-in “Basic” card type, which simply has “Front” and “Back” fields, representing the two sides of a flash card. To make each card, I downloaded the person’s photo from our website, dragged the image file into the “Front” field in Anki’s “Add Card” window, then typed the person’s name in the “Back” field. Over time, I refined the cards and incorporated more of Anki’s features, such as tags, custom fields, and custom card layouts and styles. Read More
The annual Great Lakes Software Excellence Conference (GLSEC) will be held at The Prince Center at Calvin College on May 5, 2014.
GLSEC is the premier software conference in West Michigan. This year’s keynote speaker is Rich Sheridan, the CEO of Ann Arbor-based Menlo Innovations. He will be kicking the conference off by discussing the business value of joy. Rich is an amazing storyteller, and I am looking forward to his presentation. Read More
Recently, I’ve been learning the ins and outs of Functional Reactive Programming with Reactive Cocoa. The library comes with a number of operators that can be used to modify incoming signals. In this post, I am going to compare two of those operators:
+zip: can be used to combine two (or more) signals into one new signal that sends a single RACTuple containing both values. This can be very useful when two separate events occur, or when two pieces of changing data need to be processed together.
Carl Erickson wrote back in 2009 about his practice of distributing “nice words” from clients to the company at large. It is a practice that continues, and something that I personally love about working at Atomic. It lifts my spirits and makes me proud to be a part of such a highly-praised group. I know I’m not alone in my appreciation for this practice.
Nice words mean so much to all of us in part because they result from hard work. To us, these words are like a flag flying triumphantly atop a newly-constructed castle. Weeks or months of time has often gone into erecting the solid, stone walls. Thoughtful, sometimes difficult, decisions have shaped it for its intended purpose. Throughout the process we’ve sweated the details, pursued knowledge and empathy, and as a team brought a vision to life.
These are words worth working for. Read More
One of the traditional problems in software development is the delivery of a finished project. Atomic Object writes custom software, but we ultimately need to deliver it to our customers, which usually implies deploying it to an existing infrastructure environment, or handing it off to an operations team.
Unfortunately, this hand-off process often introduces a variety of glitches and bugs due to differences between the environment that the software was developed in (the development environment), and the environment it will actually run in (the production environment).
Vagrant is a tool for creating and configuring virtual machines. It provides an interface to easily bootstrap and manage virtual machines using a variety of different virtualization platforms and configuration management tools, both open source and commercial. By using Vagrant, developers can easily write and test applications in environments similar to which they will actually be deployed. This reduces the likelihood of glitches and bugs when handing off a finished project to customers. Read More