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.
Read more on Beyond Domain Experience – 3 Qualities of Great Software Teams…
Recently, while working on an Ember.js app, I found that I wanted to create a reusable component that manages the editable state of content within it. That is, it would start out by displaying information (initializing its isEditing binding to false), and provide an “Edit” button that would set isEditing to true, so the content wrapped in the component could display its editing interface.
Naturally, I then wanted a way to “subclass” my EditableComponent so that I could create (for example) an AddressComponent that would display a mailing address read-only but allow you to edit it. What I struggled with was finding the best way to pull this off.
I had a few different ideas, two of which didn’t work. Read more on “Subclassing” Ember Components…
Posted in Web Apps Tagged emberjs
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…