Years of using the testing framework RSpec has spoiled me. Because you can pass a filename and line number to the RSpec command and it will run only that test, it’s trivial to set up a Vim key binding that runs the test under the cursor. For example,
In recent years I’ve come to deeply appreciate the phrase “don’t make me think.” I will forget how to perform a setup step approximately 7 seconds after I do it, let alone 3 years after I’ve done it (and I know I’m not alone!).
Thus starting to work on an existing project will often give me anxiety—not because I’m worried about learning a new domain or existing system, but because getting the dang thing running can sometimes be the hardest part! Read more on Script Away Your Annoyances – Removing Manual Project Setup Tasks…
If you are new to iOS programming, you may not know of a very useful feature in iOS called container views. A container view allows you to create a reusable component that all of your view controllers can share. The containers are easily edited with the storyboard editor of Xcode. Plus the reusable component is also backed by the power of a separate child view controller.
As a general rule, I try to minimize the number of programs installed and configured on the host OS of my laptop. I use the host mostly for email, office, and web browsing. It’s much faster to create isolated development environments inside of virtual machines. If a project requires some third-party applications or modifying system-wide settings, I don’t need to worry about it corrupting my host OS or affecting other projects.
Speaking a language fluently is impressive, and speaking many languages is impressive, but ultimately, it’s not about the words. Talking is about communication. This applies as much to programming as to speaking. Switching to Spanish or Cantonese won’t help if you don’t know how to form and organize meaningful thoughts about a subject, and knowing all the syntax and semantics of C++ won’t help if you don’t know how to write organized, meaningful code. Learn the principles that apply in many languages, and the rest will follow. Don’t just learn a programming language. Learn to program.
Small screen recordings can be an extremely effective way to demonstrate motion or interactivity, and they’re easy to produce on recent versions of OS X. Below is the workflow I use when the need arises.
The foundational building blocks of your software determine what’s easy and what’s not. It’s important to know how the choices you make at the lowest level will affect your ability to build features down the road. When your software architecture doesn’t match the problem domain, it feels like walking uphill. When you get it right, features seem to come together on their own.
While certainly not the most elegant of debugging techniques, logging to a console is sometimes the most effective technique, and in many cases it’s your only lifeline. During development, sometimes a simple
“I am here” print statement can be a life saver.
Working as a maker at Atomic Object means being a generalist. Generalists must be able to quickly move between projects, languages, and tech stacks. We are expected to quickly pick up new languages and technologies–drawing from our expertise in the technologies that we already know well.
One tool I’ve found useful in picking up new technologies (or just trying things out) is CodeRunner. CodeRunner bills itself as a “code editor for Mac.” It’s an editor that’s preconfigured to build/run code in a variety of languages. In this blog post I will describe some of its features and cover how I’ve used it in my work. Read more on CodeRunner: A Generalist’s Swiss Army Knife…
I’ve recently started work on a project that will be translated and localized. While translation is rarely prioritized early in the development cycle, leaving translation work until late can cause great sadness if you find you’re weeks away from an intended release date but you’ve built an application with systematic translation flaws.