Thoughts about Ruby, Rails, RubyMotion, iOS, and business growth.

Managing Dotfiles

Dotfiles, the configuration files used by Unix-like machines, can become disorganized over time. Entropy rules! This article describes my recent attempt to bring order to dotfile chaos. The steps can be summarized as follows:

  • Move the non-private dotfiles (dotfiles that will be viewed by others on Github) into a directory called ~/.dotfiles.
  • From the home directory, create a symbolic link to each dotfile in the ~/.dotfiles directory.
  • Use Git to manage the ~/.dotfiles directory, and share it on GitHub.

Dotfiles are normally hidden when you try to view them in the Mac OS X Finder. To view them from the command prompt, use $ ls -al.

Recursion and Memoization

To iterate is human, to recurse divine.  
~ L. Peter Deutsch

Recursion is available in many high-level languages, including Ruby. Recursive solutions can be joyfully elegant. At the same time, the pursuit of elegance can lead to unexpected performance pitfalls.

Fortunately, we can use optimization techniques to address performance problems before they occur. Memoization is one technique in our arsenal.

When in Doubt, Rake Clean

Earlier today, I upgraded from RubyMotion v 2.24 to v 2.26. Immediately after the upgrade, I attempted to run a RubyMotion app that I’m working on. The result?

$ rake

     Build ./build/iPhoneSimulator-7.1-Development
   Compile ./app/app_delegate.rb
   Compile ./app/views/score_label.rb
   Compile ./app/views/paddle_view.rb
      Link ./build/iPhoneSimulator-7.1-Development/pong-rm4.app/pong-rm4
Undefined symbols for architecture i386:


clang: error: linker command failed with exit code 1 (use -v to see invocation)
rake aborted!


What happened? It just ran a few minutes ago, right before the upgrade! Was RubyMotion broken? Was it time to reach out to the Twitterverse or Stack Overflow for assistance?

Not yet.

Why Open Source?

As members of the open source community, we have internalized the benefits of open source. Sometimes, knowing a topic so well can hinder us from explaining it to people who need to understand our work: Clients, customers, and employers. They need to understand us because they pay us. Understanding helps to build trust.

The topic What is Open Source is covered in earlier post by that title. This presentation covers some of the “whys” of open source in terms that matter to the people we serve: Clients, customers, and employers.

How .gitignore Works

Earlier today I ran into a Git issue within a RubyMotion project. I added a directory to the project’s .gitignore file, but Git seemed to ignore my ignore. Expressed more clearly, Git continued to track a directory that I explicitly told it to ignore.


Either there was a bug in Git, or my understanding of .gitignore was incomplete. It was time for me to dig in and learn more about .gitignore.

CocoaConf Chicago Recap

Cool stuff from CocoaConf.Cool stuff from CocoaConf.

One purpose of a conference is to help you to spot trends while there’s still time to reap the benefits of being an early adopter.  
~Brian Marick at SCNA 2013

Early adopters on Apple’s Mac OS X and iOS platforms flock to CocoaConf, a multi-city conference for developers. Tickets are slightly easier to get than WWDC; CocoaConf consistently sells out.

CocoaConf’s presenters are practicing developers, actively building real software every day. They come to CocoaConf to share their experiences in a wonderful upward-spiral of technical learning. Here are a few highlights from the latest CocoaConf, held March 7-8 near Chicago.

Fixing MacVim on OS X Mavericks

Experience told me to delay upgrading to OS X Mavericks for as long as possible because the upgrade would likely break my dev environment. Sure enough, the upgrade broke MacVim.

~$ which mvim


The ‘nix which command returned a null response when asked about MacVim. Not cool, Mavericks!

What Is Open Source?

The Linux penguin.The Linux penguin. Entrepreneurs, especially those outside of software development, may find this article useful.

When Performance Matters

Over seventy percent of the web servers on the planet run Linux, the open source operating system. Google, Facebook, and Amazon all run Linux. They bet their companies on this decision every day.

Given that thousands of successful companies have bet their livelihood on open source, an observer might ask these questions:

  • What is open source?
  • Why should one care about open source?
  • How can a company profit from software that is given away for free?

SGI & Big Data

SGISGI’s logo from the 1990s. Silicon Graphics International Corporation (SGI) computers rendered the special effects for the original Jurassic Park movie. Computer enthusiasts coveted SGI machines throughout the 1990s.

But success in the computer industry is fleeting. A few years after Jurassic Park, a convergence of tech advances (Moore’s Law, x86 architecture, and Linux) made it possible for commodity PCs to perform as well as SGI’s premium workstations. Wall Street traders and other power users abandoned workstations in favor of Linux-based PCs. High-end makers like SGI fell on hard times.

Today, SGI is fighting back. The company is blending x86, Linux, and (buzzword alert) big data to attack the high performance computing market. The vision was presented at this month’s Chicago ACM meeting by Brian Freed, VP of Strategy for SGI.