After a long hiatus from Rails, I found myself working in a Rails codebase this week. Here at Atomic, our recent focus has been on the wins provided by our starter kit. I still love Ruby and Rails, but after digging through a well-intentioned codebase, I was reminded how much I dislike Rails magic callbacks.
As Atomic continues to grow via our Accelerator program, our core value of Teach and Learn is putting some heavy emphasis on Teach. One of our first graduates from the program was feeling nervous about being a mentor to someone new. They asked me for advice and, thinking back on 10 years of working in […]
Here at Atomic, we’re always striving to get better at our craft. From our guiding principles to the nitty-gritty details of implementation, we strive to reduce the repetitive and mundane at every chance. It makes our lives easier and improves our efficiency and quality for our customers. This concept isn’t new, but I wanted to […]
When writing a function, I often want to return either the successful value or an error. Given that my current project is in TypeScript, we came up with a nice little Either pattern for returning successes or errors.
With over 50 college juniors and seniors taking part, Atomic Games 2017 was a great success. This year’s participants built AIs to play a custom RTS written in-house here at AO. Since we had so much fun building and playing the game, we decided to open-source it: Space Battle 2: Resource Collectors.
The number-one, easiest way to make Ruby threads communicate and synchronize is to use the built-in Queue class. You can even see this in the Ruby docs: This class provides a way to synchronize communication between threads. Unfortunately, a Queue isn’t always what we want. So, how can we build our own primitives that are […]
Genetic algorithms are a class of algorithms designed to explore a large search space and find optimal solutions by mimicking evolution and natural selection. Potential solutions are randomly found, evaluated, and bred with one another in hopes of producing better solutions.
When I joined Atomic many years ago, it was a small group of tight-knit developers. With fewer than 10 developers working in an open office environment, it was easy to build and maintain a sense of camaraderie. Now that the number of Atoms is around 60, it’s not so easy to get to know one […]
Rails and Active Record make many things easy: connecting to the database, building complex queries based on your object model, and easily migrating your schema up, down, and sideways. They also let you very easily introduce N+1 queries.
Ember.js has a great way of managing state on objects: computed properties. A computed property is basically a cached function call. If Ember idioms are properly followed, computed properties are pure functions.