When you’re looking for a home for your career, one really important consideration is who you’ll be working with. What’s the culture like? What kind of people will you spend your time with?
I’ve worked at Atomic Object for a few years now — long enough to have observed and identified some characteristics that most, if not all, of the other Atoms have in common. In no particular order: Read more on Profile of an Atom…
I’m currently working on an Ember.js app that requires the color scheme to be customizable to match the branding of our client’s clients. Since our application’s CSS is being compiled by the Rails Asset Pipeline, and the colors would be fetched over an API call, this posed an interesting challenge.
Originally, there were many unknowns around how we would accomplish this. How would we recompile our SCSS? Would we wrap the Ember app under a Rails route that would insert customized CSS on the page? If we loaded the CSS via Ember, how would we insert it on the DOM?
Happily, the details all fell into place quite nicely. Here’s how we pulled it off:
1. Use the Application Route to Load the Custom Theme
Or use any other resource’s route. When loading the model for the route, we first make an API call to determine which colors to use, and then pull out the theme information and make a request to the Rails app that processes and returns the themed CSS as text. Then we create a model out of the two.
Read more on Dynamically Generating CSS with Ember.js and Rails…
Until recently, my current project had maintained two distinct git repositories, one for each of the major components of the project. For a few reasons, we decided that it would be best to merge them into a single git repository.
Ideally, we wanted to do so in such a way that would preserve the full commit history of each of the two repositories. Fortunately it’s quite easy to accomplish this using a regular
Step 1: Preparing the Repositories
You probably don’t want to have the two repositories end up clobbering each other. For our project, we had separate repositories for the backend API and the frontend application. I simply made one commit for each repository that moved all the files into a subdirectory. I.e., all the files in the API repository were moved into the
api/ subfolder, and all files in the frontend repository were moved into
frontend/ Read more on Merging git Repositories Together…
Since getting our 3D printer, I’ve made a few attempts to learn how to properly use CAD software to design my own objects. Unfortunately, I haven’t had enough time to truly familiarize myself with any CAD program, which tend to be considerably complex and have steep learning curves.
Fortunately, for those of us with a programmer’s mindset, there is OpenSCAD. Essentially, it provides you a programming language for defining objects. This lets me use vim as my editor, something I’m quite comfortable with, while letting me see a live preview of my object as I save.
One of the things I’ve been meaning to design and 3D print has been a tamper for my espresso machine. Besides being useful, it’s also something very simple to design: a flat, circular base with a handle for pushing down on. Read more on Designing an Espresso Tamper for 3D Printing using OpenSCAD…
Have you ever felt certain of something, despite not having any evidence to back up your hypothesis? That was probably your intuition guiding you. For good reason (i.e., intuition is often quite wrong about things that you aren’t fully educated on or internalized), people spend a lot of time learning how to set their intuition aside. I know there’s no way I would have passed Calculus or Chemistry without ignoring mine.
Read more on Leveraging Your Intuition…
While developing a Mac app as part of a broader project, we realized that we did not ever want our app to be hidden from the user. There are some pretty good reasons why we don’t want the user to ever forget that they have our app running. Ensuring that the app’s always visible and always on top, while a little annoying, ends up protecting our users’ privacy.
While you should probably never, ever need to do this in your own project, I’ve decided to share how I went about making this work seamlessly.
Scenario 1: Reacting to External Control
When a user is interacting with another app and selects “Hide Others” from the application’s menu, your app will automatically be hidden by the system. There are a number of events that you can listen to from the system that will give you an opportunity to force your application back on the screen, but the primary concerns are:
- You don’t want to be rude and steal focus from the currently active application when you unhide yourself.
- You don’t want your app to flicker off and back on the screen.
Read more on Disable Hiding on your Mac OS App…
Posted in iOS / OS X Tagged Mac OS X
A fellow Atom recently introduced me to the Minecraft mod ComputerCraft. ComputerCraft extends the game to include virtual computers that are programmable in Lua and capable of interacting with the game world. Needless to say, I found myself rather preoccupied with Lua that weekend.
Read more on Exploring Lua Coroutines in ComputerCraft…
I’ve had an interest in 3D printing for a while, but couldn’t bring myself to drop a couple thousand dollars (or even several hundred) on a 3D printer without fully understanding their limitations or how they work. Eventually I realized other Atoms probably felt similarly, and I started gauging interest at our December SpinDown party. Read more on Atomic Object Gets a 3D Printer…
Due to a project’s integration tests spuriously reporting failures with capybara-webkit on our CI servers, we switched to the capybara-selenium driver. In the process of switching, we discovered that a number of tests needed to be tweaked or partially rewritten.
Why? It turned out that capybara-webkit was allowing us to interact with invisible or hidden DOM elements, but capybara-selenium prohibited this. We realized our tests had been suffering due to being allowed this leniency.
Read more on Beware of Capybara Interacting with Hidden DOM Elements…
Posted in Ruby Tagged capybara, testing
I’ve often seen the ability to work from home regarded as a luxury, and the nature of software development (and the internet) makes it possible to be quite effective from home. In fact, it’s not hard for me to think of a handful of friends who live far enough away from their employers’ offices that they have no choice but to work from home.
While there are tradeoffs on either side, and I’m not going to argue that one side is definitively better, here are 4 reasons why I prefer working from the office:
1. A Dedicated Place for Working
Simply being in the office helps me get in the mood to focus and work hard. While most of this comes from having a physical space dedicated to work, separated from the tempting distractions of home, it also helps just being surrounded by other productive people.
Read more on Four Reasons It’s Better to Work from the Office…